From 2006ac2b87d8af1c9df93cacdd1cb8c7b9307779 Mon Sep 17 00:00:00 2001 From: mryouse Date: Mon, 11 Jul 2022 01:55:21 +0000 Subject: implement tab completion --- neb.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'neb.py') diff --git a/neb.py b/neb.py index 7e3380f..86c96b1 100644 --- a/neb.py +++ b/neb.py @@ -4,6 +4,16 @@ import sys import readline +class NebCompleter: + + def __init__(self, syntax): + self.syntax = syntax + + def complete(self, text, state): + results = [x for x in self.syntax if x.startswith(text)] + [None] + return results[state] + + def build_std(repl=False): GLOBALS = Environment() global_dict = { **BOOLEAN.environment, @@ -34,6 +44,11 @@ def debug(prev_lexed, prev_parsed): def repl(): env = build_std(True) + + readline.parse_and_bind("tab: complete") + cmp = NebCompleter(env.environment.keys()) + readline.set_completer(cmp.complete) + print("### neb :)(:") print("version: < 0") idx = 1 @@ -65,6 +80,11 @@ def repl(): def run_file(filename): env = build_std(True) + + readline.parse_and_bind("tab: complete") + cmp = NebCompleter(env.environment.keys()) + readline.set_completer(cmp.complete) + with open(filename, "r") as fil: data = fil.read() -- cgit v1.2.3