mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
6fbd1f85d9
commit
9de988315a
|
@ -15,6 +15,7 @@ import tkMessageBox
|
||||||
from EditorWindow import EditorWindow, fixwordbreaks
|
from EditorWindow import EditorWindow, fixwordbreaks
|
||||||
from FileList import FileList
|
from FileList import FileList
|
||||||
from ColorDelegator import ColorDelegator
|
from ColorDelegator import ColorDelegator
|
||||||
|
from UndoDelegator import UndoDelegator
|
||||||
from OutputWindow import OutputWindow
|
from OutputWindow import OutputWindow
|
||||||
from IdleConf import idleconf
|
from IdleConf import idleconf
|
||||||
import idlever
|
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):
|
class ModifiedInterpreter(InteractiveInterpreter):
|
||||||
|
|
||||||
def __init__(self, tkconsole):
|
def __init__(self, tkconsole):
|
||||||
|
@ -264,6 +287,7 @@ class PyShell(OutputWindow):
|
||||||
|
|
||||||
# Override classes
|
# Override classes
|
||||||
ColorDelegator = ModifiedColorDelegator
|
ColorDelegator = ModifiedColorDelegator
|
||||||
|
UndoDelegator = ModifiedUndoDelegator
|
||||||
|
|
||||||
# Override menu bar specs
|
# Override menu bar specs
|
||||||
menu_specs = PyShellEditorWindow.menu_specs[:]
|
menu_specs = PyShellEditorWindow.menu_specs[:]
|
||||||
|
|
Loading…
Reference in New Issue