1
0
forked from VimPlug/jedi

Fix refactoring of leaves just before leaves

This commit is contained in:
Dave Halter
2020-02-20 00:43:02 +01:00
parent bfa15c61f1
commit 26bf2ceb15

View File

@@ -251,12 +251,13 @@ def extract_variable(grammar, path, module_node, new_name, pos, until_pos):
dct = {} dct = {}
for i, node in enumerate(nodes): for i, node in enumerate(nodes):
dct[node] = node.get_first_leaf().prefix + new_name if i == 0 else '' dct[node] = node.get_first_leaf().prefix, new_name if i == 0 else ''
dct[first_definition_leaf] = _insert_line_before( dct[first_definition_leaf] = _insert_line_before(
first_definition_leaf, *dct.get(first_definition_leaf,
(first_definition_leaf.prefix, first_definition_leaf.value)),
new_name + ' = ' + extracted, new_name + ' = ' + extracted,
) )
file_to_node_changes = {path: dct} file_to_node_changes = {path: _flatten_changes(dct)}
return Refactoring(grammar, file_to_node_changes) return Refactoring(grammar, file_to_node_changes)
@@ -267,10 +268,14 @@ 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(leaf, code): def _insert_line_before(prefix, value, code):
lines = split_lines(leaf.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) + leaf.value return ''.join(lines), value
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):