Kaydet (Commit) 81885593 authored tarafından Kurt B. Kaiser's avatar Kurt B. Kaiser

Correct an error introduced at Rev 1.30. The keyword arg is necessary

to freeze the value of orig_checkcache.  Otherwise infinite recursion.
üst 24884f76
......@@ -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 <pyshell#...> 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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment