mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 22:44:27 +08:00
fixed problems with import statements in refactorings
This commit is contained in:
16
functions.py
16
functions.py
@@ -268,6 +268,12 @@ def goto(source, line, column, source_path):
|
|||||||
|
|
||||||
|
|
||||||
def related_names(source, line, column, source_path):
|
def related_names(source, line, column, source_path):
|
||||||
|
"""
|
||||||
|
Returns `dynamic.RelatedName` objects, which contain all names, that are
|
||||||
|
defined by the same variable, function, class or import.
|
||||||
|
This function can be used either to show all the usages of a variable or
|
||||||
|
for renaming purposes.
|
||||||
|
"""
|
||||||
pos = (line, column)
|
pos = (line, column)
|
||||||
f = modules.ModuleWithCursor(source_path, source=source, position=pos)
|
f = modules.ModuleWithCursor(source_path, source=source, position=pos)
|
||||||
|
|
||||||
@@ -311,12 +317,14 @@ def related_names(source, line, column, source_path):
|
|||||||
if not d.assignment_details:
|
if not d.assignment_details:
|
||||||
add_array(d.get_assignment_calls())
|
add_array(d.get_assignment_calls())
|
||||||
elif isinstance(d, parsing.Import):
|
elif isinstance(d, parsing.Import):
|
||||||
for name in [d.namespace, d.alias, d.from_ns]:
|
is_user = d == f.parser.user_stmt
|
||||||
|
check_names = [d.namespace, d.alias, d.from_ns] if is_user \
|
||||||
|
else d.get_defined_names()
|
||||||
|
for name in check_names:
|
||||||
if name:
|
if name:
|
||||||
for n in name.names:
|
for n in name.names:
|
||||||
print n.start_pos, pos, n.end_pos
|
if n.start_pos <= pos <= n.end_pos or not is_user:
|
||||||
if n.start_pos <= pos <= n.end_pos:
|
names.append(dynamic.RelatedName(n, d))
|
||||||
names.append(n, d)
|
|
||||||
else:
|
else:
|
||||||
names.append(dynamic.RelatedName(d.name.names[0], d))
|
names.append(dynamic.RelatedName(d.name.names[0], d))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user