forked from VimPlug/jedi
Start using names_dicts for completion as well.
This commit is contained in:
@@ -242,23 +242,10 @@ class Script(object):
|
|||||||
for s in scopes:
|
for s in scopes:
|
||||||
if s.isinstance(er.Function):
|
if s.isinstance(er.Function):
|
||||||
names = s.get_magic_function_names()
|
names = s.get_magic_function_names()
|
||||||
elif isinstance(s, imports.ImportWrapper):
|
|
||||||
under = like + self._user_context.get_path_after_cursor()
|
|
||||||
if under == 'import':
|
|
||||||
current_line = self._user_context.get_position_line()
|
|
||||||
if not current_line.endswith('import import'):
|
|
||||||
continue
|
|
||||||
"""
|
|
||||||
a = s.import_stmt.alias
|
|
||||||
if a and a.start_pos <= self._pos <= a.end_pos:
|
|
||||||
continue
|
|
||||||
"""
|
|
||||||
# TODO what to do with this?
|
|
||||||
names = s.get_defined_names(on_import_stmt=True)
|
|
||||||
else:
|
else:
|
||||||
names = []
|
names = []
|
||||||
for _, new_names in s.scope_names_generator():
|
for names_dict in s.names_dicts(search_global=False):
|
||||||
names += new_names
|
names += chain.from_iterable(names_dict.values())
|
||||||
|
|
||||||
for c in names:
|
for c in names:
|
||||||
completions.append((c, s))
|
completions.append((c, s))
|
||||||
|
|||||||
@@ -256,6 +256,9 @@ class LazyNamesDict(object):
|
|||||||
def __init__(self, compiled_obj):
|
def __init__(self, compiled_obj):
|
||||||
self._compiled_obj = compiled_obj
|
self._compiled_obj = compiled_obj
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return (v[0].value for v in self.values())
|
||||||
|
|
||||||
@memoize_method
|
@memoize_method
|
||||||
def __getitem__(self, name):
|
def __getitem__(self, name):
|
||||||
try:
|
try:
|
||||||
@@ -266,10 +269,9 @@ class LazyNamesDict(object):
|
|||||||
|
|
||||||
def values(self):
|
def values(self):
|
||||||
obj = self._compiled_obj.obj
|
obj = self._compiled_obj.obj
|
||||||
names = dir(obj)
|
|
||||||
|
|
||||||
values = []
|
values = []
|
||||||
for name in names:
|
for name in dir(obj):
|
||||||
try:
|
try:
|
||||||
values.append(self[name])
|
values.append(self[name])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -487,7 +489,7 @@ def _create_from_name(module, parent, name):
|
|||||||
builtin = Builtin(_builtins)
|
builtin = Builtin(_builtins)
|
||||||
magic_function_class = CompiledObject(type(load_module), parent=builtin)
|
magic_function_class = CompiledObject(type(load_module), parent=builtin)
|
||||||
generator_obj = CompiledObject(_a_generator(1.0))
|
generator_obj = CompiledObject(_a_generator(1.0))
|
||||||
type_names = [] # Need this, because it's return in get_defined_names.
|
type_names = [] # Need this, because its part of the result of get_defined_names.
|
||||||
type_names = builtin.get_by_name('type').get_defined_names()
|
type_names = builtin.get_by_name('type').get_defined_names()
|
||||||
none_obj = builtin.get_by_name('None')
|
none_obj = builtin.get_by_name('None')
|
||||||
false_obj = builtin.get_by_name('False')
|
false_obj = builtin.get_by_name('False')
|
||||||
|
|||||||
@@ -309,6 +309,9 @@ class LazyInstanceDict(object):
|
|||||||
return [get_instance_el(self._evaluator, self._instance, var, True)
|
return [get_instance_el(self._evaluator, self._instance, var, True)
|
||||||
for var in self._dct[name]]
|
for var in self._dct[name]]
|
||||||
|
|
||||||
|
def values(self):
|
||||||
|
return [self[key] for key in self._dct]
|
||||||
|
|
||||||
|
|
||||||
class InstanceName(pr.Name):
|
class InstanceName(pr.Name):
|
||||||
def __init__(self, origin_name, parent):
|
def __init__(self, origin_name, parent):
|
||||||
@@ -466,8 +469,12 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
|
|||||||
|
|
||||||
@memoize_default(default=())
|
@memoize_default(default=())
|
||||||
def py__bases__(self, evaluator):
|
def py__bases__(self, evaluator):
|
||||||
args = param.Arguments(self._evaluator, self.base.get_super_arglist() or ())
|
arglist = self.base.get_super_arglist()
|
||||||
|
if arglist:
|
||||||
|
args = param.Arguments(self._evaluator, arglist)
|
||||||
return list(chain.from_iterable(args.eval_args()))
|
return list(chain.from_iterable(args.eval_args()))
|
||||||
|
else:
|
||||||
|
return [compiled.object_obj]
|
||||||
|
|
||||||
def py__call__(self, evaluator, params):
|
def py__call__(self, evaluator, params):
|
||||||
return [Instance(evaluator, self, params)]
|
return [Instance(evaluator, self, params)]
|
||||||
@@ -508,6 +515,7 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
|
|||||||
yield self.names_dict
|
yield self.names_dict
|
||||||
else:
|
else:
|
||||||
for scope in self.py__mro__(self._evaluator):
|
for scope in self.py__mro__(self._evaluator):
|
||||||
|
print(scope)
|
||||||
yield scope.names_dict
|
yield scope.names_dict
|
||||||
|
|
||||||
def is_class(self):
|
def is_class(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user