diff options
-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 = {} |