Readline support would be nice.
This commit is contained in:
parent
ec5036bf63
commit
109cddae12
|
|
@ -0,0 +1,35 @@
|
||||||
|
from pathlib import Path
|
||||||
|
import atexit
|
||||||
|
import os
|
||||||
|
import readline
|
||||||
|
|
||||||
|
NAMES = set(dir(__builtins__))
|
||||||
|
|
||||||
|
# Note that we WANT names here to be part of the closure of the
|
||||||
|
# function so it retains its value from call to call.
|
||||||
|
def completer(text, state, names=[]):
|
||||||
|
if 0 == state:
|
||||||
|
names[:] = filter(lambda name: name.startswith(text), NAMES)
|
||||||
|
try:
|
||||||
|
return names[state]
|
||||||
|
except IndexError:
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
readline.set_completer(completer)
|
||||||
|
readline.parse_and_bind('TAB: complete')
|
||||||
|
|
||||||
|
hfname = str(Path.home() / '.joy_history')
|
||||||
|
try:
|
||||||
|
readline.read_history_file(hfname)
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
atexit.register(readline.write_history_file, hfname)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
i = input('> ')
|
||||||
|
except (EOFError, KeyboardInterrupt):
|
||||||
|
i = ''
|
||||||
|
break
|
||||||
|
print(i)
|
||||||
Loading…
Reference in New Issue