Correct an error introduced at Rev 1.30. The keyword arg is necessary
to freeze the value of orig_checkcache. Otherwise infinite recursion.
This commit is contained in:
parent
24884f76c6
commit
818855939a
|
@ -45,15 +45,16 @@ else:
|
||||||
file.write(warnings.formatwarning(message, category, filename, lineno))
|
file.write(warnings.formatwarning(message, category, filename, lineno))
|
||||||
warnings.showwarning = idle_showwarning
|
warnings.showwarning = idle_showwarning
|
||||||
|
|
||||||
def linecache_checkcache():
|
def extended_linecache_checkcache(orig_checkcache=linecache.checkcache):
|
||||||
"""Extend linecache.checkcache to preserve the <pyshell#...> entries
|
"""Extend linecache.checkcache to preserve the <pyshell#...> entries
|
||||||
|
|
||||||
Rather than repeating the linecache code, patch it by saving the pyshell#
|
Rather than repeating the linecache code, patch it to save the pyshell#
|
||||||
entries, call linecache.checkcache(), and then restore the saved
|
entries, call the original linecache.checkcache(), and then restore the
|
||||||
entries.
|
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
|
cache = linecache.cache
|
||||||
save = {}
|
save = {}
|
||||||
for filename in cache.keys():
|
for filename in cache.keys():
|
||||||
|
@ -62,7 +63,8 @@ def linecache_checkcache():
|
||||||
orig_checkcache()
|
orig_checkcache()
|
||||||
cache.update(save)
|
cache.update(save)
|
||||||
|
|
||||||
linecache.checkcache = linecache_checkcache
|
# Patch linecache.checkcache():
|
||||||
|
linecache.checkcache = extended_linecache_checkcache
|
||||||
|
|
||||||
|
|
||||||
class PyShellEditorWindow(EditorWindow):
|
class PyShellEditorWindow(EditorWindow):
|
||||||
|
|
Loading…
Reference in New Issue