mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
32 lines
934 B
Python
32 lines
934 B
Python
import readline
|
|
|
|
|
|
def completer(text, state):
|
|
matches = sorted(cmd for cmd in get_history_items() if cmd.startswith(text))
|
|
if len(matches) > 1:
|
|
common_prefix = matches[0]
|
|
for match in matches[1:]:
|
|
i = 0
|
|
while i < len(common_prefix) and i < len(match) and common_prefix[i] == match[i]:
|
|
i += 1
|
|
common_prefix = common_prefix[:i]
|
|
if state == 0:
|
|
readline.insert_text(common_prefix[len(text):])
|
|
readline.redisplay()
|
|
return None
|
|
elif len(matches) == 1:
|
|
return matches[0] if state == 0 else None
|
|
else:
|
|
return None
|
|
|
|
readline.set_completer(completer)
|
|
readline.parse_and_bind("tab: complete")
|
|
|
|
def get_history_items():
|
|
return [readline.get_history_item(i) for i in range(1, readline.get_current_history_length() + 1)]
|
|
|
|
while True:
|
|
try:
|
|
line = input('> ')
|
|
except EOFError:
|
|
break |