mirror of
https://github.com/python/cpython.git
synced 2025-09-27 18:59:43 +00:00
Issue #14937: Perform auto-completion of filenames in strings even for non-ASCII filenames.
This commit is contained in:
parent
e606e238ab
commit
862d13a30f
3 changed files with 24 additions and 2 deletions
|
@ -124,13 +124,20 @@ class AutoComplete:
|
||||||
curline = self.text.get("insert linestart", "insert")
|
curline = self.text.get("insert linestart", "insert")
|
||||||
i = j = len(curline)
|
i = j = len(curline)
|
||||||
if hp.is_in_string() and (not mode or mode==COMPLETE_FILES):
|
if hp.is_in_string() and (not mode or mode==COMPLETE_FILES):
|
||||||
|
# Find the beginning of the string
|
||||||
|
# fetch_completions will look at the file system to determine whether the
|
||||||
|
# string value constitutes an actual file name
|
||||||
|
# XXX could consider raw strings here and unescape the string value if it's
|
||||||
|
# not raw.
|
||||||
self._remove_autocomplete_window()
|
self._remove_autocomplete_window()
|
||||||
mode = COMPLETE_FILES
|
mode = COMPLETE_FILES
|
||||||
while i and curline[i-1] in FILENAME_CHARS:
|
# Find last separator or string start
|
||||||
|
while i and curline[i-1] not in "'\"" + SEPS:
|
||||||
i -= 1
|
i -= 1
|
||||||
comp_start = curline[i:j]
|
comp_start = curline[i:j]
|
||||||
j = i
|
j = i
|
||||||
while i and curline[i-1] in FILENAME_CHARS + SEPS:
|
# Find string start
|
||||||
|
while i and curline[i-1] not in "'\"":
|
||||||
i -= 1
|
i -= 1
|
||||||
comp_what = curline[i:j]
|
comp_what = curline[i:j]
|
||||||
elif hp.is_in_code() and (not mode or mode==COMPLETE_ATTRIBUTES):
|
elif hp.is_in_code() and (not mode or mode==COMPLETE_ATTRIBUTES):
|
||||||
|
|
|
@ -354,6 +354,15 @@ class AutoCompleteWindow:
|
||||||
# A modifier key, so ignore
|
# A modifier key, so ignore
|
||||||
return
|
return
|
||||||
|
|
||||||
|
elif event.char:
|
||||||
|
# Regular character with a non-length-1 keycode
|
||||||
|
self._change_start(self.start + event.char)
|
||||||
|
self.lasttypedstart = self.start
|
||||||
|
self.listbox.select_clear(0, int(self.listbox.curselection()[0]))
|
||||||
|
self.listbox.select_set(self._binary_search(self.start))
|
||||||
|
self._selection_changed()
|
||||||
|
return "break"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Unknown event, close the window and let it through.
|
# Unknown event, close the window and let it through.
|
||||||
self.hide_window()
|
self.hide_window()
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
What's New in IDLE 3.2.4?
|
||||||
|
=========================
|
||||||
|
|
||||||
|
- Issue #14937: Perform auto-completion of filenames in strings even for
|
||||||
|
non-ASCII filenames.
|
||||||
|
|
||||||
What's New in IDLE 3.2.3?
|
What's New in IDLE 3.2.3?
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue