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:
commit
1b0b6ae36b
|
@ -799,12 +799,17 @@ class EditorWindow(object):
|
||||||
rf_list = [path for path in rf_list if path not in bad_paths]
|
rf_list = [path for path in rf_list if path not in bad_paths]
|
||||||
ulchars = "1234567890ABCDEFGHIJK"
|
ulchars = "1234567890ABCDEFGHIJK"
|
||||||
rf_list = rf_list[0:len(ulchars)]
|
rf_list = rf_list[0:len(ulchars)]
|
||||||
rf_file = open(self.recent_files_path, 'w',
|
|
||||||
encoding='utf_8', errors='replace')
|
|
||||||
try:
|
try:
|
||||||
rf_file.writelines(rf_list)
|
with open(self.recent_files_path, 'w',
|
||||||
finally:
|
encoding='utf_8', errors='replace') as rf_file:
|
||||||
rf_file.close()
|
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 each edit window instance, construct the recent files menu
|
||||||
for instance in self.top.instance_dict:
|
for instance in self.top.instance_dict:
|
||||||
menu = instance.recent_files_menu
|
menu = instance.recent_files_menu
|
||||||
|
|
|
@ -206,14 +206,22 @@ class PyShellEditorWindow(EditorWindow):
|
||||||
lines = fp.readlines()
|
lines = fp.readlines()
|
||||||
except IOError:
|
except IOError:
|
||||||
lines = []
|
lines = []
|
||||||
with open(self.breakpointPath, "w") as new_file:
|
try:
|
||||||
for line in lines:
|
with open(self.breakpointPath, "w") as new_file:
|
||||||
if not line.startswith(filename + '='):
|
for line in lines:
|
||||||
new_file.write(line)
|
if not line.startswith(filename + '='):
|
||||||
self.update_breakpoints()
|
new_file.write(line)
|
||||||
breaks = self.breakpoints
|
self.update_breakpoints()
|
||||||
if breaks:
|
breaks = self.breakpoints
|
||||||
new_file.write(filename + '=' + str(breaks) + '\n')
|
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):
|
def restore_file_breaks(self):
|
||||||
self.text.update() # this enables setting "BREAK" tags to be visible
|
self.text.update() # this enables setting "BREAK" tags to be visible
|
||||||
|
|
Loading…
Reference in New Issue