1
0
forked from VimPlug/jedi

start to remove user_stmt parsing

This commit is contained in:
Dave Halter
2014-01-17 00:25:30 +01:00
parent 6ef75256e0
commit 588fbea4f9
2 changed files with 8 additions and 4 deletions

View File

@@ -16,7 +16,6 @@ from itertools import chain
from jedi._compatibility import next, unicode, builtins from jedi._compatibility import next, unicode, builtins
from jedi.parser import Parser from jedi.parser import Parser
from jedi.parser import representation as pr from jedi.parser import representation as pr
from jedi.parser import fast
from jedi.parser.user_context import UserContext, UserContextParser from jedi.parser.user_context import UserContext, UserContextParser
from jedi import debug from jedi import debug
from jedi import settings from jedi import settings

View File

@@ -195,16 +195,21 @@ class UserContextParser(object):
cache.save_parser(self._path, None, parser, pickling=False) cache.save_parser(self._path, None, parser, pickling=False)
return parser return parser
@cache.underscore_memoization
def _get_user_stmt(self):
return self.module().get_statement_for_position(self._position,
include_imports=True)
def user_stmt(self, is_completion=False): def user_stmt(self, is_completion=False):
user_stmt = self._parser().user_stmt user_stmt = self._get_user_stmt()
debug.speed('parsed') debug.speed('parsed')
if is_completion and not user_stmt: if is_completion and not user_stmt:
# for statements like `from x import ` (cursor not in statement) # for statements like `from x import ` (cursor not in statement)
pos = next(self._user_context.get_context(yield_positions=True)) pos = next(self._user_context.get_context(yield_positions=True))
last_stmt = pos and self._parser().module.get_statement_for_position( last_stmt = pos and \
pos, include_imports=True) self.module().get_statement_for_position(pos, include_imports=True)
if isinstance(last_stmt, representation.Import): if isinstance(last_stmt, representation.Import):
user_stmt = last_stmt user_stmt = last_stmt
return user_stmt return user_stmt