[tor-commits] [arm/master] Common prefix tab completion for interpretor panel
atagar at torproject.org
atagar at torproject.org
Mon Aug 29 01:40:21 UTC 2011
commit d6dca592931b529435d769fbf993659523cb08d6
Author: Damian Johnson <atagar at torproject.org>
Date: Sun Aug 28 18:38:17 2011 -0700
Common prefix tab completion for interpretor panel
Implementing common prefix autocompletion for the interpretor panel. Only thing
left is displaying the matches...
---
src/util/textInput.py | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/util/textInput.py b/src/util/textInput.py
index 31a5305..c0f01ce 100644
--- a/src/util/textInput.py
+++ b/src/util/textInput.py
@@ -4,6 +4,7 @@ These can be chained together with the first matching validator taking
precidence.
"""
+import os
import curses
PASS = -1
@@ -165,18 +166,28 @@ class TabCompleter(TextInputValidator):
# Matches against the tab key. The ord('\t') is nine, though strangely none
# of the curses.KEY_*TAB constants match this...
if key == 9:
- matches = self.completer(textbox.gather().strip())
+ currentContents = textbox.gather().strip()
+ matches = self.completer(currentContents)
+ newInput = None
if len(matches) == 1:
# only a single match, fill it in
newInput = matches[0]
+ elif len(matches) > 1:
+ # looks for a common prefix we can complete
+ commonPrefix = os.path.commonprefix(matches) # weird that this comes from path...
+
+ if commonPrefix != currentContents:
+ newInput = commonPrefix
+
+ # TODO: somehow display matches... this is not gonna be fun
+
+ if newInput:
y, _ = textbox.win.getyx()
_, maxX = textbox.win.getmaxyx()
textbox.win.clear()
textbox.win.addstr(y, 0, newInput[:maxX - 1])
textbox.win.move(y, min(len(newInput), maxX - 1))
- elif len(matches) > 1:
- pass # TODO: somehow display matches... this is not gonna be fun
return None
More information about the tor-commits
mailing list