commit 3714ef4ed8b84029f2da11c639fdd9a64e8ddf1e Author: Damian Johnson atagar@torproject.org Date: Mon Sep 19 07:52:27 2011 -0700
Caching tab completion match results
Thanks to the wonderfully weak pydoc explanations I'm kinda fuzzy on how the complete function is called, but this should reduce the number of extra prefix lookups that we do. --- src/util/torInterpretor.py | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/util/torInterpretor.py b/src/util/torInterpretor.py index 658b65e..d5abb88 100644 --- a/src/util/torInterpretor.py +++ b/src/util/torInterpretor.py @@ -236,6 +236,9 @@ class TorControlCompleter: """
def __init__(self): + self._prefix = None + self._prefixMatches = [] + self.commands = [] conn = torTools.getConn()
@@ -342,9 +345,13 @@ class TorControlCompleter: the readlines set_completer function. """
- for cmd in self.getMatches(text): - if not state: return cmd - else: state -= 1 + if text != self._prefix: + self._prefix = text + self._prefixMatches = self.getMatches(text) + + if state < len(self._prefixMatches): + return self._prefixMatches[state] + else: return None
class ControlInterpretor: """
tor-commits@lists.torproject.org