完成函数如何在readline中工作

时间:2013-04-18 19:41:14

标签: python autocomplete readline

我查了几个例子,包括

http://pymotw.com/2/readline/

class SimpleCompleter(object):

    def __init__(self, options):
        self.options = sorted(options)
        return

    def complete(self, text, state):
        response = None
        if state == 0:
            # This is the first time for this text, so build a match list.
            if text:
                self.matches = [s 
                                for s in self.options
                                if s and s.startswith(text)]
                logging.debug('%s matches: %s', repr(text), self.matches)
            else:
                self.matches = self.options[:]
                logging.debug('(empty input) matches: %s', self.matches)

        # Return the state'th item from the match list,
        # if we have that many.
        try:
            response = self.matches[state]
        except IndexError:
            response = None
        logging.debug('complete(%s, %s) => %s', 
                      repr(text), state, repr(response))
        return response

我无法弄清楚为什么国家正在增加以及它的目的是什么。 它适用于state = 0和匹配单词列表中的一个元素,但是当状态增加时我会引发错误(IndexError)

由于

1 个答案:

答案 0 :(得分:0)

state 是可能的匹配数,您可以使用它返回多个结果。 即当state == 1返回“cmd1”时,state == 2返回“command2”时,state == 3返回时无传递2匹配结果。