diff options
author | hut <hut@lavabit.com> | 2010-01-23 06:09:05 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-01-23 06:09:05 +0100 |
commit | 316ff5a92b1bc0fee1a1ddf946880f1697a35190 (patch) | |
tree | 395a7832785d81d53be5c785b6b532fa36f2837c | |
parent | f601af14dff59355f678a51a2e257d1e376b74f5 (diff) | |
download | ranger-316ff5a92b1bc0fee1a1ddf946880f1697a35190.tar.gz |
console: better tab completion for OpenConsole
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | ranger/gui/widgets/console.py | 17 |
2 files changed, 11 insertions, 8 deletions
diff --git a/TODO b/TODO index 8549caba..0c89142b 100644 --- a/TODO +++ b/TODO @@ -28,7 +28,7 @@ General (X) #34 10/01/09 display free disk space (X) #35 10/01/09 display disk usage of files in current directory ( ) #36 10/01/11 help coloring is terribly inefficient - ( ) #37 10/01/13 better tab completion for OpenConsole + (X) #37 10/01/13 better tab completion for OpenConsole ( ) #38 10/01/16 searching in pager (X) #39 10/01/17 flushinput not always good (X) #42 10/01/17 memorize directory for `` when using :cd diff --git a/ranger/gui/widgets/console.py b/ranger/gui/widgets/console.py index b3e49c47..b30b30b0 100644 --- a/ranger/gui/widgets/console.py +++ b/ranger/gui/widgets/console.py @@ -388,15 +388,18 @@ class OpenConsole(ConsoleWithTab): self.close() def _get_tab(self): - # for now, just add " %s" - if ' ' in self.line: - result = self.line - if result and result[-1] != ' ': - result += ' ' - return result + '%s ' - else: + try: + position_of_last_space = self.line.rindex(" ") + except ValueError: return (program + ' ' for program in self.fm.executables \ if program.startswith(self.line)) + if position_of_last_space == len(self.line) - 1: + return self.line + '%s ' + else: + before_word, start_of_word = self.line.rsplit(' ', 1) + return (before_word + ' ' + file.basename \ + for file in self.fm.env.pwd.files \ + if file.basename.startswith(start_of_word)) def _substitute_metachars(self, command): dct = {} |