From 818855939ac016492cb59d1fc2fea94cc0764855 Mon Sep 17 00:00:00 2001 From: "Kurt B. Kaiser" Date: Fri, 29 Nov 2002 22:10:53 +0000 Subject: Correct an error introduced at Rev 1.30. The keyword arg is necessary to freeze the value of orig_checkcache. Otherwise infinite recursion. --- Lib/idlelib/PyShell.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index ffd8767..ad8263d 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -45,15 +45,16 @@ else: file.write(warnings.formatwarning(message, category, filename, lineno)) warnings.showwarning = idle_showwarning -def linecache_checkcache(): +def extended_linecache_checkcache(orig_checkcache=linecache.checkcache): """Extend linecache.checkcache to preserve the entries - Rather than repeating the linecache code, patch it by saving the pyshell# - entries, call linecache.checkcache(), and then restore the saved - entries. + Rather than repeating the linecache code, patch it to save the pyshell# + entries, call the original linecache.checkcache(), and then restore the + saved entries. Assigning the orig_checkcache keyword arg freezes its value + at definition time to the (original) method linecache.checkcache(), i.e. + makes orig_checkcache lexical. """ - orig_checkcache=linecache.checkcache cache = linecache.cache save = {} for filename in cache.keys(): @@ -62,7 +63,8 @@ def linecache_checkcache(): orig_checkcache() cache.update(save) -linecache.checkcache = linecache_checkcache +# Patch linecache.checkcache(): +linecache.checkcache = extended_linecache_checkcache class PyShellEditorWindow(EditorWindow): -- cgit v0.12