From b6562973c0320323fccd37b743c862c4ef6b40b0 Mon Sep 17 00:00:00 2001 From: David Halter Date: Mon, 17 Sep 2012 09:34:52 +0200 Subject: [PATCH] added param names to completion items (see also #7) --- api.py | 16 ++++++++++++++++ test/completion/named_param.py | 10 ++++++++++ 2 files changed, 26 insertions(+) create mode 100644 test/completion/named_param.py diff --git a/api.py b/api.py index ed5e7185..196916c5 100644 --- a/api.py +++ b/api.py @@ -40,6 +40,8 @@ class Completion(object): if settings.add_dot_after_module: if isinstance(self.base, parsing.Module): append += '.' + if isinstance(self.base, parsing.Param): + append += '=' return dot + self.name.names[-1][self.like_name_length:] + append @property @@ -141,6 +143,11 @@ class CallDef(object): def call_name(self): return str(self.executable.name) + @property + def module(self): + return self.executable.get_parent_until() + + def __repr__(self): return '<%s: %s index %s>' % (self.__class__.__name__, self.executable, self.index) @@ -204,8 +211,17 @@ class Script(object): and c.names[-1].lower().startswith(like.lower()) or c.names[-1].startswith(like)] + if not dot: # named_params have no dots + call_def = self.get_in_function_call() + if call_def: + if not call_def.module.is_builtin(): + for p in call_def.params: + completions.append((p.get_name(), p)) + completions += [] + needs_dot = not dot and path completions = set(completions) + c = [Completion(c, needs_dot, len(like), s) for c, s in completions] return c diff --git a/test/completion/named_param.py b/test/completion/named_param.py new file mode 100644 index 00000000..949fe53a --- /dev/null +++ b/test/completion/named_param.py @@ -0,0 +1,10 @@ +""" named params: +>>> def a(abc): pass +>>> a(abc=3) # <- this stuff +""" + +def a(abc): + pass + +#? 5 ['abc'] +a(abc)