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:
|
||||
if s.isinstance(er.Function):
|
||||
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:
|
||||
names = []
|
||||
for _, new_names in s.scope_names_generator():
|
||||
names += new_names
|
||||
for names_dict in s.names_dicts(search_global=False):
|
||||
names += chain.from_iterable(names_dict.values())
|
||||
|
||||
for c in names:
|
||||
completions.append((c, s))
|
||||
|
||||
@@ -256,6 +256,9 @@ class LazyNamesDict(object):
|
||||
def __init__(self, compiled_obj):
|
||||
self._compiled_obj = compiled_obj
|
||||
|
||||
def __iter__(self):
|
||||
return (v[0].value for v in self.values())
|
||||
|
||||
@memoize_method
|
||||
def __getitem__(self, name):
|
||||
try:
|
||||
@@ -266,10 +269,9 @@ class LazyNamesDict(object):
|
||||
|
||||
def values(self):
|
||||
obj = self._compiled_obj.obj
|
||||
names = dir(obj)
|
||||
|
||||
values = []
|
||||
for name in names:
|
||||
for name in dir(obj):
|
||||
try:
|
||||
values.append(self[name])
|
||||
except KeyError:
|
||||
@@ -487,7 +489,7 @@ def _create_from_name(module, parent, name):
|
||||
builtin = Builtin(_builtins)
|
||||
magic_function_class = CompiledObject(type(load_module), parent=builtin)
|
||||
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()
|
||||
none_obj = builtin.get_by_name('None')
|
||||
false_obj = builtin.get_by_name('False')
|
||||
|
||||
@@ -309,6 +309,9 @@ class LazyInstanceDict(object):
|
||||
return [get_instance_el(self._evaluator, self._instance, var, True)
|
||||
for var in self._dct[name]]
|
||||
|
||||
def values(self):
|
||||
return [self[key] for key in self._dct]
|
||||
|
||||
|
||||
class InstanceName(pr.Name):
|
||||
def __init__(self, origin_name, parent):
|
||||
@@ -466,8 +469,12 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
|
||||
|
||||
@memoize_default(default=())
|
||||
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()))
|
||||
else:
|
||||
return [compiled.object_obj]
|
||||
|
||||
def py__call__(self, evaluator, params):
|
||||
return [Instance(evaluator, self, params)]
|
||||
@@ -508,6 +515,7 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
|
||||
yield self.names_dict
|
||||
else:
|
||||
for scope in self.py__mro__(self._evaluator):
|
||||
print(scope)
|
||||
yield scope.names_dict
|
||||
|
||||
def is_class(self):
|
||||
|
||||
Reference in New Issue
Block a user