[tor-commits] [arm/release] Caching tab completion match results

atagar at torproject.org atagar at torproject.org
Sun Sep 25 21:38:30 UTC 2011


commit 3714ef4ed8b84029f2da11c639fdd9a64e8ddf1e
Author: Damian Johnson <atagar at 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:
   """





More information about the tor-commits mailing list