1. Prevent Undo before IOmark in PyShell.PyShell
2. Consolidate Undo code in EditorWindow.EditorWindow
3. Remove Formatting and Run menus from PyShell
diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py
index a7aa185..c8b0d41 100644
--- a/Lib/idlelib/EditorWindow.py
+++ b/Lib/idlelib/EditorWindow.py
@@ -151,10 +151,8 @@
text.bind("<<open-path-browser>>", self.open_path_browser)
self.set_status_bar()
-
vbar['command'] = text.yview
vbar.pack(side=RIGHT, fill=Y)
-
text['yscrollcommand'] = vbar.set
fontWeight='normal'
if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
@@ -168,30 +166,34 @@
self.per = per = self.Percolator(text)
if self.ispythonsource(filename):
- self.color = color = self.ColorDelegator(); per.insertfilter(color)
+ self.color = color = self.ColorDelegator()
+ per.insertfilter(color)
##print "Initial colorizer"
else:
##print "No initial colorizer"
self.color = None
- self.undo = undo = self.UndoDelegator(); per.insertfilter(undo)
+
+ self.undo = undo = self.UndoDelegator()
+ per.insertfilter(undo)
+ text.undo_block_start = undo.undo_block_start
+ text.undo_block_stop = undo.undo_block_stop
+ undo.set_saved_change_hook(self.saved_change_hook)
+
+ # IOBinding implements file I/O and printing functionality
self.io = io = self.IOBinding(self)
+ io.set_filename_change_hook(self.filename_change_hook)
+
#create the Recent Files submenu
self.menuRecentFiles=Menu(self.menubar)
self.menudict['file'].insert_cascade(3,label='Recent Files',
underline=0,menu=self.menuRecentFiles)
self.UpdateRecentFilesList()
- text.undo_block_start = undo.undo_block_start
- text.undo_block_stop = undo.undo_block_stop
- undo.set_saved_change_hook(self.saved_change_hook)
- io.set_filename_change_hook(self.filename_change_hook)
-
if filename:
if os.path.exists(filename):
io.loadfile(filename)
else:
io.set_filename(filename)
-
self.saved_change_hook()
self.load_extensions()
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 4771d2e..f2ac36d 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -450,9 +450,15 @@
ColorDelegator = ModifiedColorDelegator
UndoDelegator = ModifiedUndoDelegator
- # Override menu bar specs
- menu_specs = PyShellEditorWindow.menu_specs[:]
- menu_specs.insert(len(menu_specs)-3, ("debug", "_Debug"))
+ # Override menus: Run and Format not desired in shell; add Debug
+ menu_specs = [
+ ("file", "_File"),
+ ("edit", "_Edit"),
+ ("debug", "_Debug"),
+ ("settings", "_Settings"),
+ ("windows", "_Windows"),
+ ("help", "_Help"),
+ ]
# New classes
from IdleHistory import History
@@ -825,6 +831,7 @@
self.console.write(s)
self.text.mark_set("insert", "end-1c")
self.set_line_and_column()
+ self.io.reset_undo()
def resetoutput(self):
source = self.text.get("iomark", "end-1c")