mirror of
https://github.com/davidhalter/jedi.git
synced 2026-02-25 03:57:13 +08:00
Finally able to remove the user_context. This is awesome!
Now we only use the syntax tree to understand where the user is doing something.
This commit is contained in:
@@ -16,7 +16,7 @@ import sys
|
||||
from jedi._compatibility import unicode
|
||||
from jedi.parser import load_grammar
|
||||
from jedi.parser import tree
|
||||
from jedi.parser.user_context import UserContext, UserContextParser
|
||||
from jedi.parser.user_context import UserContextParser
|
||||
from jedi import debug
|
||||
from jedi import settings
|
||||
from jedi import common
|
||||
@@ -120,9 +120,8 @@ class Script(object):
|
||||
cache.clear_time_caches()
|
||||
debug.reset_time()
|
||||
self._grammar = load_grammar(version='%s.%s' % sys.version_info[:2])
|
||||
self._user_context = UserContext(self._source, self._pos)
|
||||
self._parser = UserContextParser(self._grammar, self._source, path,
|
||||
self._pos, self._user_context,
|
||||
self._pos,
|
||||
self._parsed_callback)
|
||||
if sys_path is None:
|
||||
venv = os.getenv('VIRTUAL_ENV')
|
||||
@@ -373,7 +372,7 @@ class Interpreter(Script):
|
||||
# changing).
|
||||
self._parser = UserContextParser(self._grammar, self._source,
|
||||
self._orig_path, self._pos,
|
||||
self._user_context, self._parsed_callback,
|
||||
self._parsed_callback,
|
||||
use_fast_parser=False)
|
||||
#interpreter.add_namespaces_to_parser(self._evaluator, namespaces,
|
||||
#self._get_module())
|
||||
|
||||
@@ -60,11 +60,8 @@ class Completion:
|
||||
self._module = evaluator.wrap(parser.module())
|
||||
self._code_lines = code_lines
|
||||
|
||||
line = self._code_lines[position[0] - 1]
|
||||
# The first step of completions is to get the name
|
||||
self._like_name = re.search(
|
||||
r'(?!\d)\w+$|$', line[:position[1]]
|
||||
).group(0)
|
||||
self._like_name = helpers.get_on_completion_name(code_lines, position)
|
||||
# The actual cursor position is not what we need to calculate
|
||||
# everything. We want the start of the name we're on.
|
||||
self._position = position[0], position[1] - len(self._like_name)
|
||||
|
||||
@@ -27,6 +27,14 @@ def sorted_definitions(defs):
|
||||
return sorted(defs, key=lambda x: (x.module_path or '', x.line or 0, x.column or 0))
|
||||
|
||||
|
||||
def get_on_completion_name(lines, position):
|
||||
line = lines[position[0] - 1]
|
||||
# The first step of completions is to get the name
|
||||
return re.search(
|
||||
r'(?!\d)\w+$|$', line[:position[1]]
|
||||
).group(0)
|
||||
|
||||
|
||||
def _get_code(code_lines, start_pos, end_pos):
|
||||
"""
|
||||
:param code_start_pos: is where the code starts.
|
||||
|
||||
Reference in New Issue
Block a user