forked from VimPlug/jedi
Fix another special extract case
This commit is contained in:
@@ -250,14 +250,20 @@ def extract_variable(grammar, path, module_node, new_name, pos, until_pos):
|
|||||||
first_definition_leaf = definition.get_first_leaf()
|
first_definition_leaf = definition.get_first_leaf()
|
||||||
|
|
||||||
dct = {}
|
dct = {}
|
||||||
for i, node in enumerate(nodes):
|
extracted_prefix = _insert_line_before(
|
||||||
dct[node] = node.get_first_leaf().prefix, new_name if i == 0 else ''
|
first_definition_leaf.prefix,
|
||||||
dct[first_definition_leaf] = _insert_line_before(
|
|
||||||
*dct.get(first_definition_leaf,
|
|
||||||
(first_definition_leaf.prefix, first_definition_leaf.value)),
|
|
||||||
new_name + ' = ' + extracted,
|
new_name + ' = ' + extracted,
|
||||||
)
|
)
|
||||||
file_to_node_changes = {path: _flatten_changes(dct)}
|
first_node_leaf = nodes[0].get_first_leaf()
|
||||||
|
if first_node_leaf is first_definition_leaf:
|
||||||
|
dct[nodes[0]] = extracted_prefix + new_name
|
||||||
|
else:
|
||||||
|
dct[nodes[0]] = first_node_leaf.prefix + new_name
|
||||||
|
dct[first_definition_leaf] = extracted_prefix + first_definition_leaf.value
|
||||||
|
|
||||||
|
for node in nodes[1:]:
|
||||||
|
dct[node] = ''
|
||||||
|
file_to_node_changes = {path: dct}
|
||||||
return Refactoring(grammar, file_to_node_changes)
|
return Refactoring(grammar, file_to_node_changes)
|
||||||
|
|
||||||
|
|
||||||
@@ -268,14 +274,10 @@ def _remove_indent_of_prefix(prefix):
|
|||||||
return ''.join(split_lines(prefix, keepends=True)[:-1])
|
return ''.join(split_lines(prefix, keepends=True)[:-1])
|
||||||
|
|
||||||
|
|
||||||
def _insert_line_before(prefix, value, code):
|
def _insert_line_before(prefix, code):
|
||||||
lines = split_lines(prefix, keepends=True)
|
lines = split_lines(prefix, keepends=True)
|
||||||
lines[-1:-1] = [indent_block(code, lines[-1]) + '\n']
|
lines[-1:-1] = [indent_block(code, lines[-1]) + '\n']
|
||||||
return ''.join(lines), value
|
return ''.join(lines)
|
||||||
|
|
||||||
|
|
||||||
def _flatten_changes(changes):
|
|
||||||
return {node: prefix + string for node, (prefix, string) in changes.items()}
|
|
||||||
|
|
||||||
|
|
||||||
def _get_parent_definition(node):
|
def _get_parent_definition(node):
|
||||||
|
|||||||
@@ -112,3 +112,10 @@ if 1:
|
|||||||
#? 4 text {'new_name': 'x'}
|
#? 4 text {'new_name': 'x'}
|
||||||
x = None
|
x = None
|
||||||
x
|
x
|
||||||
|
# -------------------------------------------------- with-tuple
|
||||||
|
#? 4 text {'new_name': 'x'}
|
||||||
|
x + 1, 3
|
||||||
|
# ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
#? 4 text {'new_name': 'x'}
|
||||||
|
x = x + 1
|
||||||
|
x, 3
|
||||||
|
|||||||
Reference in New Issue
Block a user