Commit 9de98831 authored by Guido van Rossum's avatar Guido van Rossum

Override the Undo delegator to forbid any changes before the I/O mark.

It beeps if you try to insert or delete before the "iomark" mark.
This makes the shell less confusing for newbies.
parent 6fbd1f85
......@@ -15,6 +15,7 @@ import tkMessageBox
from EditorWindow import EditorWindow, fixwordbreaks
from FileList import FileList
from ColorDelegator import ColorDelegator
from UndoDelegator import UndoDelegator
from OutputWindow import OutputWindow
from IdleConf import idleconf
import idlever
......@@ -127,6 +128,28 @@ class ModifiedColorDelegator(ColorDelegator):
})
class ModifiedUndoDelegator(UndoDelegator):
# Forbid insert/delete before the I/O mark
def insert(self, index, chars, tags=None):
try:
if self.delegate.compare(index, "<", "iomark"):
self.delegate.bell()
return
except TclError:
pass
UndoDelegator.insert(self, index, chars, tags)
def delete(self, index1, index2=None):
try:
if self.delegate.compare(index1, "<", "iomark"):
self.delegate.bell()
return
except TclError:
pass
UndoDelegator.delete(self, index1, index2)
class ModifiedInterpreter(InteractiveInterpreter):
def __init__(self, tkconsole):
......@@ -264,6 +287,7 @@ class PyShell(OutputWindow):
# Override classes
ColorDelegator = ModifiedColorDelegator
UndoDelegator = ModifiedUndoDelegator
# Override menu bar specs
menu_specs = PyShellEditorWindow.menu_specs[:]
......
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