diff --git a/jedi/api/completion.py b/jedi/api/completion.py index 15daf738..465dd4f7 100644 --- a/jedi/api/completion.py +++ b/jedi/api/completion.py @@ -183,7 +183,8 @@ class Completion: completion_names = [] current_line = self._code_lines[self._position[0] - 1][:self._position[1]] - if not current_line or current_line[-1] in ' \t.;': + if not current_line or current_line[-1] in ' \t.;' \ + and current_line[-3:] != '...': completion_names += self._complete_keywords(allowed_transitions) if any(t in allowed_transitions for t in (PythonTokenTypes.NAME, diff --git a/test/test_api/test_completion.py b/test/test_api/test_completion.py index 039b28cd..8cec3734 100644 --- a/test/test_api/test_completion.py +++ b/test/test_api/test_completion.py @@ -283,3 +283,7 @@ def test_fuzzy_match(): assert fuzzy_match('Condition', 'ii') assert not fuzzy_match('Condition', 'Ciito') assert fuzzy_match('Condition', 'Cdiio') + + +def test_ellipsis_completion(Script): + assert Script('...').completions() == [] diff --git a/test/test_inference/test_imports.py b/test/test_inference/test_imports.py index f7ec0ebc..15b511cd 100644 --- a/test/test_inference/test_imports.py +++ b/test/test_inference/test_imports.py @@ -374,7 +374,7 @@ def test_relative_imports_with_outside_paths(Script): path=os.path.join(dir, 'api/whatever/test_this.py'), _project=project, ) - assert [c.name for c in script.complete()] == ['api', 'import', 'whatever'] + assert [c.name for c in script.complete()] == ['api', 'whatever'] script = Script( "from " + '.' * 100, @@ -398,7 +398,9 @@ def test_relative_imports_without_path(Script): def test_relative_import_out_of_file_system(Script): - script = Script("from " + '.' * 100) + code = "from " + '.' * 100 + assert not Script(code).complete() + script = Script(code + ' ') import_, = script.complete() assert import_.name == 'import'