1
0
forked from VimPlug/jedi

Add utils.JediRLCompleter

This commit is contained in:
Takafumi Arakaki
2013-05-18 23:49:48 +02:00
parent 27f8b342e1
commit 0c85642e6b

View File

@@ -2,27 +2,20 @@
Utilities for end-users. Utilities for end-users.
""" """
import sys from rlcompleter import Completer
from jedi import Interpreter from jedi import Interpreter
def readline_complete(text, state): class JediRLCompleter(Completer):
"""
Function to be passed to :func:`readline.set_completer`.
Usage:: def attr_matches(self, text):
if '(' in text or ')' in text:
import readline completions = Interpreter(text, [self.namespace]).completions()
readline.set_completer(readline_complete) return [text + c.complete for c in completions]
else:
""" # NOTE: Completer is old type class
ns = vars(sys.modules['__main__']) return Completer.attr_matches(self, text)
completions = Interpreter(text, [ns]).completions()
try:
return text + completions[state].complete
except IndexError:
return None
def setup_readline(): def setup_readline():
@@ -42,7 +35,7 @@ def setup_readline():
except ImportError: except ImportError:
print("Module readline not available.") print("Module readline not available.")
else: else:
readline.set_completer(readline_complete) readline.set_completer(JediRLCompleter().complete)
readline.parse_and_bind("tab: complete") readline.parse_and_bind("tab: complete")
# Default delimiters minus "()": # Default delimiters minus "()":