Kaydet (Commit) cd3d8bee authored tarafından Kurt B. Kaiser's avatar Kurt B. Kaiser

Retrieval of previous shell command was not always preserving indentation

since 1.2a1) Patch 1528468 Tal Einat.
üst b2dd1a39
......@@ -3,6 +3,9 @@ What's New in IDLE 1.2c1?
*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)
- ToggleTab dialog was setting indent to 8 even if cancelled (since 1.2a1).
......
......@@ -593,7 +593,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
source = source.encode(IOBinding.encoding)
except UnicodeError:
self.tkconsole.resetoutput()
self.write("Unsupported characters in input")
self.write("Unsupported characters in input\n")
return
try:
# InteractiveInterpreter.runsource() calls its runcode() method,
......@@ -1138,21 +1138,27 @@ class PyShell(OutputWindow):
return "break"
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()
try:
self.text.tag_remove("sel", "1.0", "end")
self.text.mark_set("insert", "end-1c")
s = s.strip()
lines = s.split('\n')
prefix = self.text.get("insert linestart","insert").rstrip()
if prefix and prefix[-1]==':':
prefix = self.text.get("insert linestart", "insert")
if prefix.rstrip().endswith(':'):
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:
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:]:
self.text.insert("insert", line.strip())
self.newline_and_indent_event(event)
if line.startswith(orig_base_indent):
# replace orig base indentation with new indentation
line = new_base_indent + line[len(orig_base_indent):]
self.text.insert('insert', '\n'+line.rstrip())
finally:
self.text.see("insert")
self.text.undo_block_stop()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment