diff options
author | Florent Le Coz <louiz@louiz.org> | 2011-10-01 20:46:20 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2011-10-01 20:46:20 +0200 |
commit | 347733804f8d61a01bc0a286f6f872f8dd14527d (patch) | |
tree | 055af65e51e4f2524a231d89c6a3cd83093f3a87 | |
parent | d02c764c477d900487a97f648260612046257a17 (diff) | |
download | poezio-347733804f8d61a01bc0a286f6f872f8dd14527d.tar.gz poezio-347733804f8d61a01bc0a286f6f872f8dd14527d.tar.bz2 poezio-347733804f8d61a01bc0a286f6f872f8dd14527d.tar.xz poezio-347733804f8d61a01bc0a286f6f872f8dd14527d.zip |
Do not try to cycle completion on commands if there was only one possibily.
You can now see by the space appended at the end if it was the only one.
It lets you complete arguments without having to add a stupid space after the command name
-rw-r--r-- | src/tabs.py | 10 | ||||
-rw-r--r-- | src/windows.py | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/tabs.py b/src/tabs.py index 1b6aeb7c..fbcfc597 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -125,7 +125,13 @@ class Tab(object): # complete the command's name words = ['/%s'% (name) for name in self.core.commands] +\ ['/%s' % (name) for name in self.commands] - the_input.auto_completion(words, ' ') + the_input.auto_completion(words, '') + # Do not try to cycle command completion if there was only + # one possibily. The next tab will complete the argument. + # Otherwise we would need to add a useless space before being + # able to complete the arguments. + if len(the_input.hit_list) == 1: + the_input.do_command(' ') return True return False @@ -600,7 +606,7 @@ class MucTab(ChatTab): def completion_topic(self, the_input): current_topic = self.get_room().topic - return the_input.auto_completion([current_topic], ' ') + return the_input.auto_completion([current_topic], '') def command_kick(self, arg): """ diff --git a/src/windows.py b/src/windows.py index 03066857..fb99416c 100644 --- a/src/windows.py +++ b/src/windows.py @@ -122,7 +122,6 @@ class Win(object): self.move(y, x) next_attr_char = text.find('\x19') while next_attr_char != -1 and text: - log.debug('Addstr_Colored: [%s]' % text.replace('\x19', '\\x19')) if next_attr_char + 1 < len(text): attr_char = text[next_attr_char+1].lower() else: @@ -961,7 +960,7 @@ class Input(Win): if pos < len(self.text) and after.endswith(' ') and self.text[pos] == ' ': after = after[:-1] # remove the last space if we are already on a space if not self.last_completion: - space_before_cursor = self.text.rfind(' ', 0, pos-1) + space_before_cursor = self.text.rfind(' ', 0, pos) if space_before_cursor != -1: begin = self.text[space_before_cursor+1:pos] else: @@ -1043,7 +1042,8 @@ class Input(Win): return res if not key or len(key) > 1: return False # ignore non-handled keyboard shortcuts - self.reset_completion() + if reset: + self.reset_completion() self.text = self.text[:self.pos+self.line_pos]+key+self.text[self.pos+self.line_pos:] (y, x) = self._win.getyx() if x == self.width-1: |