diff options
| author | Tom Feist <shabble@metavore.org> | 2011-04-08 22:49:31 +0000 | 
|---|---|---|
| committer | Tom Feist <shabble@metavore.org> | 2011-04-08 22:49:31 +0000 | 
| commit | 9ae4aa07f5b14a7add1b58684513218f46f80767 (patch) | |
| tree | 268dca625fb3ffeb0c569e989bc380f323989f17 | |
| parent | add sig_unbind as a demonstration of the signal_remove coderef bug, and a patch (diff) | |
| download | irssi-scripts-9ae4aa07f5b14a7add1b58684513218f46f80767.tar.gz irssi-scripts-9ae4aa07f5b14a7add1b58684513218f46f80767.zip | |
vim-mode: minimal ex-mode tab-completion. Completes provided only the current
prefix allows only 1 unique completion.
| -rw-r--r-- | vim-mode/vim_mode.pl | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/vim-mode/vim_mode.pl b/vim-mode/vim_mode.pl index e247e35..6ce4d22 100644 --- a/vim-mode/vim_mode.pl +++ b/vim-mode/vim_mode.pl @@ -2074,6 +2074,10 @@ sub _parse_mapping_bracket {  sub _parse_mapping_reverse {      my ($string) = @_; +    if (not defined $string) { +        _warn("Unable to reverse-map command: " . join('', @ex_buf)); +        return; +    }      # Convert char to <char-name>.      $string =~ s/ /<Space>/g;      $string =~ s/\n/<CR>/g; @@ -2789,7 +2793,11 @@ sub handle_command_ex {          print "Tab pressed" if DEBUG;          print "Ex buf contains: " . join('', @ex_buf) if DEBUG;          @tab_candidates = _tab_complete(join('', @ex_buf), [keys %$commands_ex]); - +        _debug("Candidates: " . join(", ", @tab_candidates)); +        if (@tab_candidates == 1) { +            @ex_buf = ( split('', $tab_candidates[0]), ' '); +            _set_prompt(':' . join '', @ex_buf); +        }      # Ignore control characters for now.      } elsif ($key > 0 && $key < 32) {          # TODO: use them later, e.g. completion | 
