mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-10 07:41:51 +08:00
Fix string completions with quote prefixes, fixes #1503
This commit is contained in:
@@ -131,7 +131,7 @@ class Completion:
|
|||||||
|
|
||||||
if string is not None and not prefixed_completions:
|
if string is not None and not prefixed_completions:
|
||||||
prefixed_completions = list(complete_file_name(
|
prefixed_completions = list(complete_file_name(
|
||||||
self._inference_state, self._module_context, start_leaf, string,
|
self._inference_state, self._module_context, start_leaf, quote, string,
|
||||||
self._like_name, self._signatures_callback,
|
self._like_name, self._signatures_callback,
|
||||||
self._code_lines, self._original_position,
|
self._code_lines, self._original_position,
|
||||||
self._fuzzy
|
self._fuzzy
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class PathName(StringName):
|
|||||||
api_type = u'path'
|
api_type = u'path'
|
||||||
|
|
||||||
|
|
||||||
def complete_file_name(inference_state, module_context, start_leaf, string,
|
def complete_file_name(inference_state, module_context, start_leaf, quote, string,
|
||||||
like_name, signatures_callback, code_lines, position, fuzzy):
|
like_name, signatures_callback, code_lines, position, fuzzy):
|
||||||
# First we want to find out what can actually be changed as a name.
|
# First we want to find out what can actually be changed as a name.
|
||||||
like_name_length = len(os.path.basename(string))
|
like_name_length = len(os.path.basename(string))
|
||||||
@@ -40,11 +40,12 @@ def complete_file_name(inference_state, module_context, start_leaf, string,
|
|||||||
# OSError: [Errno 36] File name too long: '...'
|
# OSError: [Errno 36] File name too long: '...'
|
||||||
except (FileNotFoundError, OSError):
|
except (FileNotFoundError, OSError):
|
||||||
return
|
return
|
||||||
|
quote_ending = get_quote_ending(quote, code_lines, position)
|
||||||
for entry in listed:
|
for entry in listed:
|
||||||
name = entry.name
|
name = entry.name
|
||||||
if match(name, must_start_with, fuzzy=fuzzy):
|
if match(name, must_start_with, fuzzy=fuzzy):
|
||||||
if is_in_os_path_join or not entry.is_dir():
|
if is_in_os_path_join or not entry.is_dir():
|
||||||
name += get_quote_ending(start_leaf.value, code_lines, position)
|
name += quote_ending
|
||||||
else:
|
else:
|
||||||
name += os.path.sep
|
name += os.path.sep
|
||||||
|
|
||||||
|
|||||||
@@ -299,6 +299,10 @@ def test_file_path_completions(Script, file, code, column, expected):
|
|||||||
assert [c.complete for c in comps] == expected
|
assert [c.complete for c in comps] == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_file_path_should_have_completions(Script):
|
||||||
|
assert Script('r"').complete() # See GH #1503
|
||||||
|
|
||||||
|
|
||||||
_dict_keys_completion_tests = [
|
_dict_keys_completion_tests = [
|
||||||
('ints[', 5, ['1', '50', Ellipsis]),
|
('ints[', 5, ['1', '50', Ellipsis]),
|
||||||
('ints[]', 5, ['1', '50', Ellipsis]),
|
('ints[]', 5, ['1', '50', Ellipsis]),
|
||||||
|
|||||||
Reference in New Issue
Block a user