diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-02-01 02:16:29 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-02-01 02:16:29 -0500 |
commit | 99067b7e56e0a873bcf333048ed0ba17280957be (patch) | |
tree | f0f7439aa98d0b71b262931c0fc4bc71a18667e7 /src/nvim/ex_docmd.c | |
parent | fe1ba0487aab98a131e6789b6916b1aec369e8fc (diff) | |
parent | a31f9161b09f3500385e99b076b3d8328de47dd7 (diff) | |
download | rneovim-99067b7e56e0a873bcf333048ed0ba17280957be.tar.gz rneovim-99067b7e56e0a873bcf333048ed0ba17280957be.tar.bz2 rneovim-99067b7e56e0a873bcf333048ed0ba17280957be.zip |
Merge pull request #4113 from jbradaric/vim-7.4.709
vim-patch:7.4.709
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r-- | src/nvim/ex_docmd.c | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index cbe7c1a231..1ae440c757 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -6345,7 +6345,7 @@ static void ex_tabnext(exarg_T *eap) */ static void ex_tabmove(exarg_T *eap) { - int tab_number = 9999; + int tab_number; if (eap->arg && *eap->arg != NUL) { char_u *p = eap->arg; @@ -6361,17 +6361,35 @@ static void ex_tabmove(exarg_T *eap) } else p = eap->arg; - if (p == skipdigits(p)) { - /* No numbers as argument. */ - eap->errmsg = e_invarg; - return; + if (relative == 0) { + if (STRCMP(p, "$") == 0) { + tab_number = LAST_TAB_NR; + } else if (p == skipdigits(p)) { + // No numbers as argument. + eap->errmsg = e_invarg; + return; + } else { + tab_number = getdigits(&p); + } + } else { + if (*p != NUL) { + tab_number = getdigits(&p); + } else { + tab_number = 1; + } + tab_number = tab_number * relative + tabpage_index(curtab); + if (relative == -1) { + --tab_number; + } } - - tab_number = getdigits_int(&p); - if (relative != 0) - tab_number = tab_number * relative + tabpage_index(curtab) - 1; ; - } else if (eap->addr_count != 0) + } else if (eap->addr_count != 0) { tab_number = eap->line2; + if (**eap->cmdlinep == '-') { + --tab_number; + } + } else { + tab_number = LAST_TAB_NR; + } tabpage_move(tab_number); } |