mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Retrieval of previous shell command was not always preserving indentation
since 1.2a1) Patch 1528468 Tal Einat.
This commit is contained in:
		
							parent
							
								
									b2dd1a3906
								
							
						
					
					
						commit
						cd3d8bee02
					
				
					 2 changed files with 18 additions and 9 deletions
				
			
		|  | @ -3,6 +3,9 @@ What's New in IDLE 1.2c1? | ||||||
| 
 | 
 | ||||||
| *Release date: XX-AUG-2006* | *Release date: XX-AUG-2006* | ||||||
| 
 | 
 | ||||||
|  | - Retrieval of previous shell command was not always preserving indentation | ||||||
|  |   (since 1.2a1) Patch 1528468 Tal Einat. | ||||||
|  | 
 | ||||||
| - Changing tokenize (39046) to detect dedent broke tabnanny check (since 1.2a1) | - Changing tokenize (39046) to detect dedent broke tabnanny check (since 1.2a1) | ||||||
| 
 | 
 | ||||||
| - ToggleTab dialog was setting indent to 8 even if cancelled (since 1.2a1). | - ToggleTab dialog was setting indent to 8 even if cancelled (since 1.2a1). | ||||||
|  |  | ||||||
|  | @ -593,7 +593,7 @@ def runsource(self, source): | ||||||
|                 source = source.encode(IOBinding.encoding) |                 source = source.encode(IOBinding.encoding) | ||||||
|             except UnicodeError: |             except UnicodeError: | ||||||
|                 self.tkconsole.resetoutput() |                 self.tkconsole.resetoutput() | ||||||
|                 self.write("Unsupported characters in input") |                 self.write("Unsupported characters in input\n") | ||||||
|                 return |                 return | ||||||
|         try: |         try: | ||||||
|             # InteractiveInterpreter.runsource() calls its runcode() method, |             # InteractiveInterpreter.runsource() calls its runcode() method, | ||||||
|  | @ -1138,21 +1138,27 @@ def enter_callback(self, event): | ||||||
|         return "break" |         return "break" | ||||||
| 
 | 
 | ||||||
|     def recall(self, s, event): |     def recall(self, s, event): | ||||||
|  |         # remove leading and trailing empty or whitespace lines | ||||||
|  |         s = re.sub(r'^\s*\n', '' , s) | ||||||
|  |         s = re.sub(r'\n\s*$', '', s) | ||||||
|  |         lines = s.split('\n') | ||||||
|         self.text.undo_block_start() |         self.text.undo_block_start() | ||||||
|         try: |         try: | ||||||
|             self.text.tag_remove("sel", "1.0", "end") |             self.text.tag_remove("sel", "1.0", "end") | ||||||
|             self.text.mark_set("insert", "end-1c") |             self.text.mark_set("insert", "end-1c") | ||||||
|             s = s.strip() |             prefix = self.text.get("insert linestart", "insert") | ||||||
|             lines = s.split('\n') |             if prefix.rstrip().endswith(':'): | ||||||
|             prefix = self.text.get("insert linestart","insert").rstrip() |  | ||||||
|             if prefix and prefix[-1]==':': |  | ||||||
|                 self.newline_and_indent_event(event) |                 self.newline_and_indent_event(event) | ||||||
|             self.text.insert("insert",lines[0].strip()) |                 prefix = self.text.get("insert linestart", "insert") | ||||||
|  |             self.text.insert("insert", lines[0].strip()) | ||||||
|             if len(lines) > 1: |             if len(lines) > 1: | ||||||
|                 self.newline_and_indent_event(event) |                 orig_base_indent = re.search(r'^([ \t]*)', lines[0]).group(0) | ||||||
|  |                 new_base_indent  = re.search(r'^([ \t]*)', prefix).group(0) | ||||||
|                 for line in lines[1:]: |                 for line in lines[1:]: | ||||||
|                     self.text.insert("insert", line.strip()) |                     if line.startswith(orig_base_indent): | ||||||
|                     self.newline_and_indent_event(event) |                         # replace orig base indentation with new indentation | ||||||
|  |                         line = new_base_indent + line[len(orig_base_indent):] | ||||||
|  |                     self.text.insert('insert', '\n'+line.rstrip()) | ||||||
|         finally: |         finally: | ||||||
|             self.text.see("insert") |             self.text.see("insert") | ||||||
|             self.text.undo_block_stop() |             self.text.undo_block_stop() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kurt B. Kaiser
						Kurt B. Kaiser