aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2018-01-22 16:49:35 +0100
committerMarco Hinz <mh.codebro@gmail.com>2018-01-22 17:05:52 +0100
commitdbcdd29139a88d038834f85d74027dcf01fa1afb (patch)
treee8e0153f31868697ffe35a4a260e8db93b4487e4
parentb69fa866db5bf97dadcd7132c350056ca0e046e8 (diff)
downloadrneovim-dbcdd29139a88d038834f85d74027dcf01fa1afb.tar.gz
rneovim-dbcdd29139a88d038834f85d74027dcf01fa1afb.tar.bz2
rneovim-dbcdd29139a88d038834f85d74027dcf01fa1afb.zip
man.vim: use correct offset in presence of modifier commands
The argument expansion for :Man depends on the number of arguments given to it starting at the command itself. But user completion functions always provide the entire command-line which can include modifier commands like :tab, :vert, etc. leading to a wrong number of arguments. Prune all arguments up to :Man. Fixes #7872.
-rw-r--r--runtime/autoload/man.vim6
1 files changed, 6 insertions, 0 deletions
diff --git a/runtime/autoload/man.vim b/runtime/autoload/man.vim
index 00ce1c77d7..4d43a4582b 100644
--- a/runtime/autoload/man.vim
+++ b/runtime/autoload/man.vim
@@ -299,6 +299,12 @@ endfunction
" see man#extract_sect_and_name_ref on why tolower(sect)
function! man#complete(arg_lead, cmd_line, cursor_pos) abort
let args = split(a:cmd_line)
+ let cmd_offset = index(args, 'Man')
+ if cmd_offset > 0
+ " Prune all arguments up to :Man itself. Otherwise modifier commands like
+ " :tab, :vertical, etc. would lead to a wrong length.
+ let args = args[cmd_offset:]
+ endif
let l = len(args)
if l > 3
return