mirror of https://github.com/python/cpython
Issue #4625: If IDLE cannot write to its recent file or breakpoint
files, display a message popup and continue rather than crash. (original patch by Roger Serwy)
This commit is contained in:
parent
27b154ea57
commit
40ad04171d
|
@ -796,11 +796,16 @@ class EditorWindow(object):
|
|||
rf_list = [path for path in rf_list if path not in bad_paths]
|
||||
ulchars = "1234567890ABCDEFGHIJK"
|
||||
rf_list = rf_list[0:len(ulchars)]
|
||||
rf_file = open(self.recent_files_path, 'w')
|
||||
try:
|
||||
rf_file.writelines(rf_list)
|
||||
finally:
|
||||
rf_file.close()
|
||||
with open(self.recent_files_path, 'w') as rf_file:
|
||||
rf_file.writelines(rf_list)
|
||||
except IOError as err:
|
||||
if not getattr(self.root, "recentfilelist_error_displayed", False):
|
||||
self.root.recentfilelist_error_displayed = True
|
||||
tkMessageBox.showerror(title='IDLE Error',
|
||||
message='Unable to update Recent Files list:\n%s'
|
||||
% str(err),
|
||||
parent=self.text)
|
||||
# for each edit window instance, construct the recent files menu
|
||||
for instance in self.top.instance_dict.keys():
|
||||
menu = instance.recent_files_menu
|
||||
|
|
|
@ -207,18 +207,26 @@ class PyShellEditorWindow(EditorWindow):
|
|||
breaks = self.breakpoints
|
||||
filename = self.io.filename
|
||||
try:
|
||||
lines = open(self.breakpointPath,"r").readlines()
|
||||
with open(self.breakpointPath,"r") as old_file:
|
||||
lines = old_file.readlines()
|
||||
except IOError:
|
||||
lines = []
|
||||
new_file = open(self.breakpointPath,"w")
|
||||
for line in lines:
|
||||
if not line.startswith(filename + '='):
|
||||
new_file.write(line)
|
||||
self.update_breakpoints()
|
||||
breaks = self.breakpoints
|
||||
if breaks:
|
||||
new_file.write(filename + '=' + str(breaks) + '\n')
|
||||
new_file.close()
|
||||
try:
|
||||
with open(self.breakpointPath,"w") as new_file:
|
||||
for line in lines:
|
||||
if not line.startswith(filename + '='):
|
||||
new_file.write(line)
|
||||
self.update_breakpoints()
|
||||
breaks = self.breakpoints
|
||||
if breaks:
|
||||
new_file.write(filename + '=' + str(breaks) + '\n')
|
||||
except IOError as err:
|
||||
if not getattr(self.root, "breakpoint_error_displayed", False):
|
||||
self.root.breakpoint_error_displayed = True
|
||||
tkMessageBox.showerror(title='IDLE Error',
|
||||
message='Unable to update breakpoint list:\n%s'
|
||||
% str(err),
|
||||
parent=self.text)
|
||||
|
||||
def restore_file_breaks(self):
|
||||
self.text.update() # this enables setting "BREAK" tags to be visible
|
||||
|
|
Loading…
Reference in New Issue