diff --git a/jedi/api.py b/jedi/api.py index 0e9aa7ab..b9a18988 100644 --- a/jedi/api.py +++ b/jedi/api.py @@ -12,6 +12,7 @@ import debug import settings import keywords import helpers +import builtin from _compatibility import next @@ -206,18 +207,21 @@ class Script(object): for c in names: completions.append((c, s)) - completions = [(c, s) for c, s in completions - if settings.case_insensitive_completion - 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 += [] + + # add keywords + s = builtin.builtin_scope + completions += ((k, s) for k in keywords.get_keywords(all=True)) + + completions = [(c, s) for c, s in completions + if settings.case_insensitive_completion + and c.names[-1].lower().startswith(like.lower()) + or c.names[-1].startswith(like)] needs_dot = not dot and path completions = set(completions) diff --git a/jedi/dynamic.py b/jedi/dynamic.py index e7663275..17a46958 100644 --- a/jedi/dynamic.py +++ b/jedi/dynamic.py @@ -243,7 +243,7 @@ def _check_array_additions(compare_array, module, is_list): continue backtrack_path = iter(call_path[:separate_index]) - position = c.parent_stmt().start_pos + position = c.start_pos scope = c.parent_stmt().parent() found = evaluate.follow_call_path(backtrack_path, scope, position) diff --git a/jedi/keywords.py b/jedi/keywords.py index eeee7bf9..66952f09 100644 --- a/jedi/keywords.py +++ b/jedi/keywords.py @@ -41,6 +41,11 @@ class Keyword(object): def get_parent_until(self): return builtin.builtin_scope + @property + def names(self): + """ For a `parsing.Name` like comparision """ + return [self.name] + @property def docstr(self): return imitate_pydoc(self.name)