From 302cf260700e2820f911c99677138175a6968f53 Mon Sep 17 00:00:00 2001 From: Shixian Li Date: Sat, 7 Mar 2026 20:45:50 +0800 Subject: [PATCH 1/2] Feat: Detect file if modified at local disk and prompt to ask refresh --- Lib/idlelib/editor.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py index 3128934763a1c08..932b6bf70ac9fc8 100644 --- a/Lib/idlelib/editor.py +++ b/Lib/idlelib/editor.py @@ -312,6 +312,9 @@ def __init__(self, flist=None, filename=None, key=None, root=None): else: self.update_menu_state('options', '*ine*umbers', 'disabled') + self.mtime = self.last_mtime() + text_frame.bind('', self.focus_in_event) + def handle_winconfig(self, event=None): self.set_width() @@ -1027,6 +1030,8 @@ def get_saved(self): def set_saved(self, flag): self.undo.set_saved(flag) + if flag: + self.mtime = self.last_mtime() def reset_undo(self): self.undo.reset_undo() @@ -1112,6 +1117,21 @@ def _close(self): # unless override: unregister from flist, terminate if last window self.close_hook() + def last_mtime(self): + file = self.io.filename + return os.path.getmtime(file) if file else 0 + + def focus_in_event(self, event): + mtime = self.last_mtime() + if self.mtime != mtime: + self.mtime = mtime + if self. askyesno( + 'Reload', '"%s"\n\nThis script has been modified by another program.' + '\nDo you want to reload it?' % self.io.filename, parent=self.text): + self.io.loadfile(self.io.filename) + else: + self.set_saved(False) + def load_extensions(self): self.extensions = {} self.load_standard_extensions() From c37c1626ce314a4a8793647133ff9ade06281411 Mon Sep 17 00:00:00 2001 From: Shixian Li Date: Sat, 7 Mar 2026 20:48:47 +0800 Subject: [PATCH 2/2] Add NEWS --- .../next/IDLE/2026-03-07-20-47-40.gh-issue-94523.dq7m2k.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/IDLE/2026-03-07-20-47-40.gh-issue-94523.dq7m2k.rst diff --git a/Misc/NEWS.d/next/IDLE/2026-03-07-20-47-40.gh-issue-94523.dq7m2k.rst b/Misc/NEWS.d/next/IDLE/2026-03-07-20-47-40.gh-issue-94523.dq7m2k.rst new file mode 100644 index 000000000000000..831f6ac628768c7 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2026-03-07-20-47-40.gh-issue-94523.dq7m2k.rst @@ -0,0 +1,2 @@ +Detect file if modified at local disk and prompt to ask refresh. Patch by +Shixian Li.