summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches/7.4.313
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/vim/patches/7.4.313')
-rw-r--r--patches/source/vim/patches/7.4.313320
1 files changed, 320 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.313 b/patches/source/vim/patches/7.4.313
new file mode 100644
index 000000000..39468e0ad
--- /dev/null
+++ b/patches/source/vim/patches/7.4.313
@@ -0,0 +1,320 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.313
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.313 (after 7.4.310)
+Problem: Changing the return value of getpos() causes an error. (Jie Zhu)
+Solution: Revert getpos() and add getcurpos().
+Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok,
+ runtime/doc/eval.txt
+
+
+*** ../vim-7.4.312/src/eval.c 2014-05-28 18:22:37.876225054 +0200
+--- src/eval.c 2014-05-28 20:11:55.364282457 +0200
+***************
+*** 560,565 ****
+--- 560,566 ----
+ static void f_getline __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_getmatches __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_getpid __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_getcurpos __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_getpos __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_getqflist __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_getreg __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 7967,7972 ****
+--- 7968,7974 ----
+ {"getcmdline", 0, 0, f_getcmdline},
+ {"getcmdpos", 0, 0, f_getcmdpos},
+ {"getcmdtype", 0, 0, f_getcmdtype},
++ {"getcurpos", 0, 0, f_getcurpos},
+ {"getcwd", 0, 0, f_getcwd},
+ {"getfontname", 0, 1, f_getfontname},
+ {"getfperm", 1, 1, f_getfperm},
+***************
+*** 11780,11785 ****
+--- 11782,11800 ----
+ rettv->vval.v_number = mch_get_pid();
+ }
+
++ static void getpos_both __ARGS((typval_T *argvars, typval_T *rettv, int getcurpos));
++
++ /*
++ * "getcurpos()" function
++ */
++ static void
++ f_getcurpos(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ getpos_both(argvars, rettv, TRUE);
++ }
++
+ /*
+ * "getpos(string)" function
+ */
+***************
+*** 11788,11793 ****
+--- 11803,11817 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
++ getpos_both(argvars, rettv, FALSE);
++ }
++
++ static void
++ getpos_both(argvars, rettv, getcurpos)
++ typval_T *argvars;
++ typval_T *rettv;
++ int getcurpos;
++ {
+ pos_T *fp;
+ list_T *l;
+ int fnum = -1;
+***************
+*** 11795,11801 ****
+ if (rettv_list_alloc(rettv) == OK)
+ {
+ l = rettv->vval.v_list;
+! fp = var2fpos(&argvars[0], TRUE, &fnum);
+ if (fnum != -1)
+ list_append_number(l, (varnumber_T)fnum);
+ else
+--- 11819,11828 ----
+ if (rettv_list_alloc(rettv) == OK)
+ {
+ l = rettv->vval.v_list;
+! if (getcurpos)
+! fp = &curwin->w_cursor;
+! else
+! fp = var2fpos(&argvars[0], TRUE, &fnum);
+ if (fnum != -1)
+ list_append_number(l, (varnumber_T)fnum);
+ else
+***************
+*** 11810,11816 ****
+ (fp != NULL) ? (varnumber_T)fp->coladd :
+ #endif
+ (varnumber_T)0);
+! if (fp == &curwin->w_cursor)
+ list_append_number(l, (varnumber_T)curwin->w_curswant + 1);
+ }
+ else
+--- 11837,11843 ----
+ (fp != NULL) ? (varnumber_T)fp->coladd :
+ #endif
+ (varnumber_T)0);
+! if (getcurpos)
+ list_append_number(l, (varnumber_T)curwin->w_curswant + 1);
+ }
+ else
+*** ../vim-7.4.312/src/testdir/test_eval.in 2014-05-28 14:32:47.160104334 +0200
+--- src/testdir/test_eval.in 2014-05-28 20:14:27.048283785 +0200
+***************
+*** 190,198 ****
+ :$put =v:exception
+ :endtry
+ :"
+! :$put ='{{{1 setpos/getpos'
+ /^012345678
+! 6l:let sp = getpos('.')
+ 0:call setpos('.', sp)
+ jyl:$put
+ :"
+--- 190,198 ----
+ :$put =v:exception
+ :endtry
+ :"
+! :$put ='{{{1 getcurpos/setpos'
+ /^012345678
+! 6l:let sp = getcurpos()
+ 0:call setpos('.', sp)
+ jyl:$put
+ :"
+*** ../vim-7.4.312/src/testdir/test_eval.ok 2014-05-28 14:32:47.160104334 +0200
+--- src/testdir/test_eval.ok 2014-05-28 20:14:43.316283927 +0200
+***************
+*** 346,350 ****
+ Bar exists: 1
+ func Bar exists: 1
+ Vim(call):E116: Invalid arguments for function append
+! {{{1 setpos/getpos
+ 6
+--- 346,350 ----
+ Bar exists: 1
+ func Bar exists: 1
+ Vim(call):E116: Invalid arguments for function append
+! {{{1 getcurpos/setpos
+ 6
+*** ../vim-7.4.312/runtime/doc/eval.txt 2014-05-28 18:22:37.872225054 +0200
+--- runtime/doc/eval.txt 2014-05-28 20:27:57.092290876 +0200
+***************
+*** 1808,1817 ****
+ getcmdline() String return the current command-line
+ getcmdpos() Number return cursor position in command-line
+ getcmdtype() String return the current command-line type
+ getcwd() String the current working directory
+ getfperm( {fname}) String file permissions of file {fname}
+ getfsize( {fname}) Number size in bytes of file {fname}
+- getfontname( [{name}]) String name of font being used
+ getftime( {fname}) Number last modification time of file
+ getftype( {fname}) String description of type of file {fname}
+ getline( {lnum}) String line {lnum} of current buffer
+--- 1808,1818 ----
+ getcmdline() String return the current command-line
+ getcmdpos() Number return cursor position in command-line
+ getcmdtype() String return the current command-line type
++ getcurpos() List position of the cursor
+ getcwd() String the current working directory
++ getfontname( [{name}]) String name of font being used
+ getfperm( {fname}) String file permissions of file {fname}
+ getfsize( {fname}) Number size in bytes of file {fname}
+ getftime( {fname}) Number last modification time of file
+ getftype( {fname}) String description of type of file {fname}
+ getline( {lnum}) String line {lnum} of current buffer
+***************
+*** 2606,2613 ****
+ with two, three or four item:
+ [{lnum}, {col}, {off}]
+ [{lnum}, {col}, {off}, {curswant}]
+! This is like the return value of |getpos()|, but without the
+! first item.
+
+ Does not change the jumplist.
+ If {lnum} is greater than the number of lines in the buffer,
+--- 2607,2614 ----
+ with two, three or four item:
+ [{lnum}, {col}, {off}]
+ [{lnum}, {col}, {off}, {curswant}]
+! This is like the return value of |getpos()| or |getcurpos|,
+! but without the first item.
+
+ Does not change the jumplist.
+ If {lnum} is greater than the number of lines in the buffer,
+***************
+*** 2617,2622 ****
+--- 2618,2625 ----
+ the cursor will be positioned at the last character in the
+ line.
+ If {col} is zero, the cursor will stay in the current column.
++ If {curswant} is given it is used to set the preferred column
++ for vertical movment. Otherwise {col} is used.
+ When 'virtualedit' is used {off} specifies the offset in
+ screen columns from the start of the character. E.g., a
+ position within a <Tab> or after the last character.
+***************
+*** 3339,3344 ****
+--- 3347,3363 ----
+ Returns an empty string otherwise.
+ Also see |getcmdpos()|, |setcmdpos()| and |getcmdline()|.
+
++ *getcurpos()*
++ getcurpos() Get the position of the cursor. This is like getpos('.'), but
++ includes an extra item in the list:
++ [bufnum, lnum, col, off, curswant]
++ The "curswant" number is the preferred column when moving the
++ cursor vertically.
++ This can be used to save and restore the cursor position: >
++ let save_cursor = getcurpos()
++ MoveTheCursorAround
++ call setpos('.', save_cursor)
++
+ *getcwd()*
+ getcwd() The result is a String, which is the name of the current
+ working directory.
+***************
+*** 4493,4502 ****
+
+ *getpos()*
+ getpos({expr}) Get the position for {expr}. For possible values of {expr}
+! see |line()|.
+! The result is a |List| with four or five numbers:
+ [bufnum, lnum, col, off]
+- [bufnum, lnum, col, off, curswant]
+ "bufnum" is zero, unless a mark like '0 or 'A is used, then it
+ is the buffer number of the mark.
+ "lnum" and "col" are the position in the buffer. The first
+--- 4517,4526 ----
+
+ *getpos()*
+ getpos({expr}) Get the position for {expr}. For possible values of {expr}
+! see |line()|. For getting the cursor position see
+! |getcurpos()|.
+! The result is a |List| with four numbers:
+ [bufnum, lnum, col, off]
+ "bufnum" is zero, unless a mark like '0 or 'A is used, then it
+ is the buffer number of the mark.
+ "lnum" and "col" are the position in the buffer. The first
+***************
+*** 4505,4520 ****
+ it is the offset in screen columns from the start of the
+ character. E.g., a position within a <Tab> or after the last
+ character.
+- The "curswant" number is only added for getpos('.'), it is the
+- preferred column when moving the cursor vertically.
+ Note that for '< and '> Visual mode matters: when it is "V"
+ (visual line mode) the column of '< is zero and the column of
+ '> is a large number.
+! This can be used to save and restore the cursor position: >
+! let save_cursor = getpos(".")
+! MoveTheCursorAround
+! call setpos('.', save_cursor)
+! < Also see |setpos()|.
+
+ or({expr}, {expr}) *or()*
+ Bitwise OR on the two arguments. The arguments are converted
+--- 4529,4542 ----
+ it is the offset in screen columns from the start of the
+ character. E.g., a position within a <Tab> or after the last
+ character.
+ Note that for '< and '> Visual mode matters: when it is "V"
+ (visual line mode) the column of '< is zero and the column of
+ '> is a large number.
+! This can be used to save and restore the position of a mark: >
+! let save_a_mark = getpos("'a")
+! ...
+! call setpos(''a', save_a_mark
+! < Also see |getcurpos()| and |setpos()|.
+
+ or({expr}, {expr}) *or()*
+ Bitwise OR on the two arguments. The arguments are converted
+***************
+*** 5347,5353 ****
+ Returns 0 when the position could be set, -1 otherwise.
+ An error message is given if {expr} is invalid.
+
+! Also see |getpos()|
+
+ This does not restore the preferred column for moving
+ vertically; if you set the cursor position with this, |j| and
+--- 5369,5375 ----
+ Returns 0 when the position could be set, -1 otherwise.
+ An error message is given if {expr} is invalid.
+
+! Also see |getpos()| and |getcurpos()|.
+
+ This does not restore the preferred column for moving
+ vertically; if you set the cursor position with this, |j| and
+*** ../vim-7.4.312/src/version.c 2014-05-28 18:22:37.880225054 +0200
+--- src/version.c 2014-05-28 20:15:52.164284530 +0200
+***************
+*** 736,737 ****
+--- 736,739 ----
+ { /* Add new patch number below this line */
++ /**/
++ 313,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+225. You sign up for free subscriptions for all the computer magazines
+
+ /// 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 ///