summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/lib/libreadline.tex33
1 files changed, 33 insertions, 0 deletions
diff --git a/Doc/lib/libreadline.tex b/Doc/lib/libreadline.tex
index cd2a80a..34d3a4c 100644
--- a/Doc/lib/libreadline.tex
+++ b/Doc/lib/libreadline.tex
@@ -159,3 +159,36 @@ atexit.register(readline.write_history_file, histfile)
del os, histfile
\end{verbatim}
+The following example extends the \class{code.InteractiveConsole} class to
+support command line editing and history save/restore.
+
+\begin{verbatim}
+import code
+import readline
+import atexit
+import os
+
+class HistoryConsole(code.InteractiveConsole):
+ def __init__(self, locals=None, filename="<console>",
+ histfile=os.path.expanduser("~/.console-history")):
+ code.InteractiveConsole.__init__(self)
+ self.init_history(histfile)
+
+ def init_history(self, histfile):
+ readline.parse_and_bind("tab: complete")
+ if hasattr(readline, "read_history_file"):
+ try:
+ readline.read_history_file(histfile)
+ except IOError:
+ pass
+ atexit.register(self.save_history, histfile)
+
+ def raw_input(self, prompt=""):
+ line = readline.readline(prompt)
+ if line:
+ readline.add_history(line)
+ return line
+
+ def save_history(self, histfile):
+ readline.write_history_file(histfile)
+\end{verbatim}