mirror of
https://github.com/python/cpython.git
synced 2024-11-28 20:33:54 +08:00
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]
|
||||
ulchars = "1234567890ABCDEFGHIJK"
|
||||
rf_list = rf_list[0:len(ulchars)]
|
||||
rf_file = open(self.recent_files_path, 'w',
|
||||
encoding='utf_8', errors='replace')
|
||||
try:
|
||||
rf_file.writelines(rf_list)
|
||||
finally:
|
||||
rf_file.close()
|
||||
with open(self.recent_files_path, 'w',
|
||||
encoding='utf_8', errors='replace') 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:
|
||||
menu = instance.recent_files_menu
|
||||
|
@ -206,14 +206,22 @@ class PyShellEditorWindow(EditorWindow):
|
||||
lines = fp.readlines()
|
||||
except IOError:
|
||||
lines = []
|
||||
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')
|
||||
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
Block a user