搜尋

首頁  >  問答  >  主體

python - 正确使用 prompt_toolkit 替换原有的 readline 程序的方法是什么?

想用 prompt_toolkit 库替换原有的 readline 程序如何重构?
下面已经有了原有的补全方法,是否可以复用原有的方法?

class Completer(object):
    def complete(self, text, state):
        buffer = readline.get_line_buffer()
        line = readline.get_line_buffer().split()
        COMMANDS = actions.keys()
        # show all commands
        if not line:
            return [c + ' ' for c in COMMANDS][state]
        # account for last argument ending in a space
        if RE_SPACE.match(buffer):
            line.append('')
        # resolve command to the implementation function
        cmd = line[0].strip()
        if cmd in COMMANDS:
            impl = getattr(actions[cmd], 'complete')
            args = line[1:]
            if args:
                return (impl(args) + [None])[state]
            return [cmd + ' '][state]
        results = [c + ' ' for c in COMMANDS if c.startswith(cmd)] + [None]
        return results[state]



com = Completer()

if(sys.platform == 'darwin'):
    readline.parse_and_bind("bind ^I rl_complete")
else:
    readline.parse_and_bind("tab: complete")

readline.set_completer_delims(' /\t\n;')
readline.set_completer(com.complete)
readline.set_history_length(10000)

想做出 Ipython 那样酷炫的效果,然后去查看源码,发现他使用了 prompt_toolkit,但是不知道如何重构代码。

阿神阿神2781 天前883

全部回覆(0)我來回復

無回覆
  • 取消回覆