mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +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 @@ def open_completions(self, evalfuncs, complete, userWantsWin, mode=None):
 | 
				
			||||||
        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 @@ def keypress_event(self, event):
 | 
				
			||||||
            # 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