=== modified file 'Lib/idlelib/PyShell.py' --- Lib/idlelib/PyShell.py 2009-01-27 00:28:36 +0000 +++ Lib/idlelib/PyShell.py 2009-03-11 15:46:53 +0000 @@ -303,13 +303,17 @@ }) class ModifiedUndoDelegator(UndoDelegator): - "Extend base class: forbid insert/delete before the I/O mark" + "Extend base class: redirects inser/delete after the I/O mark" def insert(self, index, chars, tags=None): try: - if self.delegate.compare(index, "<", "iomark"): - self.delegate.bell() - return + if self.delegate.compare(index, "<", "iomark"): + try: # improved behavior + text = self.delegate.delegate.delegate + text.mark_set("insert", "end-1c") + except: # on error, default to old behavior + self.delegate.bell() + return except TclError: pass UndoDelegator.insert(self, index, chars, tags) @@ -814,6 +818,10 @@ text.bind("<>", self.open_stack_viewer) text.bind("<>", self.toggle_debugger) text.bind("<>", self.toggle_jit_stack_viewer) + text.bind("<>", self.cmd_history_prev); + text.bind("<>", self.cmd_history_next); + text.event_add("<>", ""); + text.event_add("<>", ""); self.color = color = self.ColorDelegator() self.per.insertfilter(color) if use_subprocess: @@ -853,6 +861,16 @@ endoffile = False closing = False + def cmd_history_prev(self, event): + if self.text.compare('insert', ">=", "iomark"): + self.history.history_prev(event) + return "break" + + def cmd_history_next(self, event): + if self.text.compare('insert', ">=", "iomark"): + self.history.history_next(event) + return "break" + def set_warning_stream(self, stream): global warning_stream warning_stream = stream