diff --git a/7.3.591 b/7.3.591 new file mode 100644 index 0000000..180fe60 --- /dev/null +++ b/7.3.591 @@ -0,0 +1,208 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.591 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.591 +Problem: Can only move to a tab by absolute number. +Solution: Move a number of tabs to the left or the right. (Lech Lorens) +Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test62.in, src/testdir/test62.ok, src/window.c + + +*** ../vim-7.3.590/runtime/doc/tabpage.txt 2010-08-15 21:57:17.000000000 +0200 +--- runtime/doc/tabpage.txt 2012-07-06 18:10:06.000000000 +0200 +*************** +*** 173,182 **** +--- 173,192 ---- + REORDERING TAB PAGES: + + :tabm[ove] [N] *:tabm* *:tabmove* ++ :[N]tabm[ove] + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. Without N the tab + page is made the last one. + ++ :tabm[ove] +[N] ++ :tabm[ove] -[N] ++ Move the current tab page N places to the right (with +) or to ++ the left (with -). ++ ++ Note that although it is possible to move a tab behind the N-th one by using ++ :Ntabmove, it is impossible to move it by N places by using :+Ntabmove. For ++ clarification what +N means in this context see |[range]|. ++ + + LOOPING OVER TAB PAGES: + +*** ../vim-7.3.590/src/ex_cmds.h 2012-05-18 18:47:11.000000000 +0200 +--- src/ex_cmds.h 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 944,950 **** + EX(CMD_tabfirst, "tabfirst", ex_tabnext, + TRLBAR), + EX(CMD_tabmove, "tabmove", ex_tabmove, +! RANGE|NOTADR|ZEROR|COUNT|TRLBAR|ZEROR), + EX(CMD_tablast, "tablast", ex_tabnext, + TRLBAR), + EX(CMD_tabnext, "tabnext", ex_tabnext, +--- 944,950 ---- + EX(CMD_tabfirst, "tabfirst", ex_tabnext, + TRLBAR), + EX(CMD_tabmove, "tabmove", ex_tabmove, +! RANGE|NOTADR|ZEROR|EXTRA|NOSPC|TRLBAR), + EX(CMD_tablast, "tablast", ex_tabnext, + TRLBAR), + EX(CMD_tabnext, "tabnext", ex_tabnext, +*** ../vim-7.3.590/src/ex_docmd.c 2012-06-06 19:02:40.000000000 +0200 +--- src/ex_docmd.c 2012-07-06 18:16:25.000000000 +0200 +*************** +*** 7478,7484 **** + ex_tabmove(eap) + exarg_T *eap; + { +! tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2); + } + + /* +--- 7478,7519 ---- + ex_tabmove(eap) + exarg_T *eap; + { +! int tab_number = 9999; +! +! if (eap->arg && *eap->arg != NUL) +! { +! char_u *p = eap->arg; +! int relative = 0; /* argument +N/-N means: move N places to the +! * right/left relative to the current position. */ +! +! if (*eap->arg == '-') +! { +! relative = -1; +! p = eap->arg + 1; +! } +! else if (*eap->arg == '+') +! { +! relative = 1; +! p = eap->arg + 1; +! } +! else +! p = eap->arg; +! +! if (p == skipdigits(p)) +! { +! /* No numbers as argument. */ +! eap->errmsg = e_invarg; +! return; +! } +! +! tab_number = getdigits(&p); +! if (relative != 0) +! tab_number = tab_number * relative + tabpage_index(curtab) - 1;; +! } +! else if (eap->addr_count != 0) +! tab_number = eap->line2; +! +! tabpage_move(tab_number); + } + + /* +*** ../vim-7.3.590/src/testdir/test62.in 2012-03-07 22:55:17.000000000 +0100 +--- src/testdir/test62.in 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 93,98 **** +--- 93,126 ---- + :endif + :" + :" ++ :for i in range(9) | tabnew | endfor ++ 1gt ++ Go=tabpagenr()  ++ :tabmove 5 ++ i=tabpagenr()  ++ :tabmove -2 ++ i=tabpagenr()  ++ :tabmove +4 ++ i=tabpagenr()  ++ :tabmove ++ i=tabpagenr()  ++ :tabmove -20 ++ i=tabpagenr()  ++ :tabmove +20 ++ i=tabpagenr()  ++ :3tabmove ++ i=tabpagenr()  ++ :7tabmove 5 ++ i=tabpagenr()  ++ :let a='No error caught.' ++ :try ++ :tabmove foo ++ :catch E474 ++ :let a='E474 caught.' ++ :endtry ++ i=a  ++ :" ++ :" + :/^Results/,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.590/src/testdir/test62.ok 2012-02-22 19:13:00.000000000 +0100 +--- src/testdir/test62.ok 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 8,10 **** +--- 8,20 ---- + tab drop 1: pass + tab drop 2: pass + tab drop 3: pass ++ 1 ++ 6 ++ 4 ++ 8 ++ 10 ++ 1 ++ 10 ++ 4 ++ 6 ++ E474 caught. +*** ../vim-7.3.590/src/window.c 2012-07-06 16:39:43.000000000 +0200 +--- src/window.c 2012-07-06 18:10:13.000000000 +0200 +*************** +*** 3929,3935 **** + } + + /* Re-insert it at the specified position. */ +! if (n == 0) + { + curtab->tp_next = first_tabpage; + first_tabpage = curtab; +--- 3929,3935 ---- + } + + /* Re-insert it at the specified position. */ +! if (n <= 0) + { + curtab->tp_next = first_tabpage; + first_tabpage = curtab; +*** ../vim-7.3.590/src/version.c 2012-07-06 17:51:24.000000000 +0200 +--- src/version.c 2012-07-06 18:11:08.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 591, + /**/ + +-- +Bare feet magnetize sharp metal objects so they point upward from the +floor -- especially in the dark. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///