1
0
forked from VimPlug/jedi

Fix decorator param completion

This commit is contained in:
Dave Halter
2020-06-15 00:34:55 +02:00
parent 364d33119c
commit 1872ad311b
2 changed files with 12 additions and 3 deletions

View File

@@ -402,7 +402,7 @@ def get_signature_details(module, position):
# parents for possible function definitions. # parents for possible function definitions.
node = leaf.parent node = leaf.parent
while node is not None: while node is not None:
if node.type in ('funcdef', 'classdef'): if node.type in ('funcdef', 'classdef', 'decorated', 'async_stmt'):
# Don't show signatures if there's stuff before it that just # Don't show signatures if there's stuff before it that just
# makes it feel strange to have a signature. # makes it feel strange to have a signature.
return None return None
@@ -422,7 +422,8 @@ def get_signature_details(module, position):
additional_children.insert(0, n) additional_children.insert(0, n)
# Find a valid trailer # Find a valid trailer
if node.type == 'trailer' and node.children[0] == '(': if node.type == 'trailer' and node.children[0] == '(' \
or node.type == 'decorator' and node.children[2] == '(':
# Additionally we have to check that an ending parenthesis isn't # Additionally we have to check that an ending parenthesis isn't
# interpreted wrong. There are two cases: # interpreted wrong. There are two cases:
# 1. Cursor before paren -> The current signature is good # 1. Cursor before paren -> The current signature is good
@@ -431,7 +432,11 @@ def get_signature_details(module, position):
leaf = node.get_previous_leaf() leaf = node.get_previous_leaf()
if leaf is None: if leaf is None:
return None return None
return CallDetails(node.children[0], node.children, position) return CallDetails(
node.children[0] if node.type == 'trailer' else node.children[2],
node.children,
position
)
node = node.parent node = node.parent

View File

@@ -65,6 +65,10 @@ any(iterable=)
def foo(xyz): def foo(xyz):
pass pass
#? 7 ['xyz=']
@foo(xy)
def x(): pass
#? 7 ['xyz='] #? 7 ['xyz=']
foo(xyz) foo(xyz)
# No completion should be possible if it's not a simple name # No completion should be possible if it's not a simple name