summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.377
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.377')
-rw-r--r--source/ap/vim/patches/7.3.377406
1 files changed, 406 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.377 b/source/ap/vim/patches/7.3.377
new file mode 100644
index 000000000..1a2df1d5c
--- /dev/null
+++ b/source/ap/vim/patches/7.3.377
@@ -0,0 +1,406 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.377
+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.3.377
+Problem: No support for bitwise AND, OR, XOR and invert.
+Solution: Add and(), or(), invert() and xor() functions.
+Files: src/eval.c, src/testdir/test49.in, src/testdir/test65.in,
+ src/testdir/test65.ok, runtime/doc/eval.txt
+
+
+*** ../vim-7.3.376/src/eval.c 2011-11-30 15:19:25.000000000 +0100
+--- src/eval.c 2011-12-11 13:49:31.000000000 +0100
+***************
+*** 474,479 ****
+--- 474,480 ----
+ static void f_acos __ARGS((typval_T *argvars, typval_T *rettv));
+ #endif
+ static void f_add __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_and __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_argc __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 602,607 ****
+--- 603,609 ----
+ static void f_inputsave __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_inputsecret __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_insert __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_invert __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_isdirectory __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_islocked __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_items __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 640,645 ****
+--- 642,648 ----
+ #endif
+ static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_or __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv));
+ #ifdef FEAT_FLOAT
+ static void f_pow __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 751,756 ****
+--- 754,760 ----
+ static void f_winsaveview __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_winwidth __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_xor __ARGS((typval_T *argvars, typval_T *rettv));
+
+ static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump));
+ static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum));
+***************
+*** 7715,7720 ****
+--- 7719,7725 ----
+ {"acos", 1, 1, f_acos}, /* WJMc */
+ #endif
+ {"add", 2, 2, f_add},
++ {"and", 2, 2, f_and},
+ {"append", 2, 2, f_append},
+ {"argc", 0, 0, f_argc},
+ {"argidx", 0, 0, f_argidx},
+***************
+*** 7850,7855 ****
+--- 7855,7861 ----
+ {"inputsave", 0, 0, f_inputsave},
+ {"inputsecret", 1, 2, f_inputsecret},
+ {"insert", 2, 3, f_insert},
++ {"invert", 1, 1, f_invert},
+ {"isdirectory", 1, 1, f_isdirectory},
+ {"islocked", 1, 1, f_islocked},
+ {"items", 1, 1, f_items},
+***************
+*** 7888,7893 ****
+--- 7894,7900 ----
+ #endif
+ {"nextnonblank", 1, 1, f_nextnonblank},
+ {"nr2char", 1, 1, f_nr2char},
++ {"or", 2, 2, f_or},
+ {"pathshorten", 1, 1, f_pathshorten},
+ #ifdef FEAT_FLOAT
+ {"pow", 2, 2, f_pow},
+***************
+*** 7999,8004 ****
+--- 8006,8012 ----
+ {"winsaveview", 0, 0, f_winsaveview},
+ {"winwidth", 1, 1, f_winwidth},
+ {"writefile", 2, 3, f_writefile},
++ {"xor", 2, 2, f_xor},
+ };
+
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+***************
+*** 8572,8577 ****
+--- 8580,8597 ----
+ }
+
+ /*
++ * "and(expr, expr)" function
++ */
++ static void
++ f_and(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++ & get_tv_number_chk(&argvars[1], NULL);
++ }
++
++ /*
+ * "append(lnum, string/list)" function
+ */
+ static void
+***************
+*** 12958,12963 ****
+--- 12978,12994 ----
+ }
+
+ /*
++ * "invert(expr)" function
++ */
++ static void
++ f_invert(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = ~get_tv_number_chk(&argvars[0], NULL);
++ }
++
++ /*
+ * "isdirectory()" function
+ */
+ static void
+***************
+*** 14108,14113 ****
+--- 14139,14156 ----
+ }
+
+ /*
++ * "or(expr, expr)" function
++ */
++ static void
++ f_or(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++ | get_tv_number_chk(&argvars[1], NULL);
++ }
++
++ /*
+ * "pathshorten()" function
+ */
+ static void
+***************
+*** 18394,18399 ****
+--- 18437,18455 ----
+ }
+
+ /*
++ * "xor(expr, expr)" function
++ */
++ static void
++ f_xor(argvars, rettv)
++ typval_T *argvars;
++ typval_T *rettv;
++ {
++ rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++ ^ get_tv_number_chk(&argvars[1], NULL);
++ }
++
++
++ /*
+ * Translate a String variable into a position.
+ * Returns NULL when there is an error.
+ */
+*** ../vim-7.3.376/src/testdir/test65.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test65.in 2011-12-11 13:55:06.000000000 +0100
+***************
+*** 1,4 ****
+! Test for floating point.
+
+ STARTTEST
+ :so small.vim
+--- 1,4 ----
+! Test for floating point and logical operators.
+
+ STARTTEST
+ :so small.vim
+***************
+*** 72,77 ****
+--- 72,94 ----
+ :$put ='float2nr'
+ :$put =float2nr(123.456)
+ :$put =float2nr(-123.456)
++ :$put ='AND'
++ :$put =and(127, 127)
++ :$put =and(127, 16)
++ :$put =and(127, 128)
++ :$put ='OR'
++ :$put =or(16, 7)
++ :$put =or(8, 7)
++ :$put =or(0, 123)
++ :$put ='XOR'
++ :$put =xor(127, 127)
++ :$put =xor(127, 16)
++ :$put =xor(127, 128)
++ :$put ='invert'
++ :$put =and(invert(127), 65535)
++ :$put =and(invert(16), 65535)
++ :$put =and(invert(128), 65535)
++ :$put =invert(1.0)
+ :/^Results/,$wq! test.out
+ ENDTEST
+
+*** ../vim-7.3.376/src/testdir/test65.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test65.ok 2011-12-11 13:55:30.000000000 +0100
+***************
+*** 54,56 ****
+--- 54,73 ----
+ float2nr
+ 123
+ -123
++ AND
++ 127
++ 16
++ 0
++ OR
++ 23
++ 15
++ 123
++ XOR
++ 0
++ 111
++ 255
++ invert
++ 65408
++ 65519
++ 65407
++ 0
+*** ../vim-7.3.376/runtime/doc/eval.txt 2011-06-19 02:55:32.000000000 +0200
+--- runtime/doc/eval.txt 2011-12-14 15:28:23.000000000 +0100
+***************
+*** 798,808 ****
+ For |Lists| only "+" is possible and then both expr6 must be a list. The
+ result is a new list with the two lists Concatenated.
+
+! expr7 * expr7 .. number multiplication *expr-star*
+! expr7 / expr7 .. number division *expr-/*
+! expr7 % expr7 .. number modulo *expr-%*
+
+ For all, except ".", Strings are converted to Numbers.
+
+ Note the difference between "+" and ".":
+ "123" + "456" = 579
+--- 800,811 ----
+ For |Lists| only "+" is possible and then both expr6 must be a list. The
+ result is a new list with the two lists Concatenated.
+
+! expr7 * expr7 .. Number multiplication *expr-star*
+! expr7 / expr7 .. Number division *expr-/*
+! expr7 % expr7 .. Number modulo *expr-%*
+
+ For all, except ".", Strings are converted to Numbers.
++ For bitwise operators see |and()|, |or()| and |xor()|.
+
+ Note the difference between "+" and ".":
+ "123" + "456" = 579
+***************
+*** 1679,1684 ****
+--- 1688,1694 ----
+ abs( {expr}) Float or Number absolute value of {expr}
+ acos( {expr}) Float arc cosine of {expr}
+ add( {list}, {item}) List append {item} to |List| {list}
++ and( {expr}, {expr}) Number bitwise AND
+ append( {lnum}, {string}) Number append {string} below line {lnum}
+ append( {lnum}, {list}) Number append lines {list} below line {lnum}
+ argc() Number number of files in the argument list
+***************
+*** 1817,1822 ****
+--- 1827,1833 ----
+ inputsave() Number save and clear typeahead
+ inputsecret( {prompt} [, {text}]) String like input() but hiding the text
+ insert( {list}, {item} [, {idx}]) List insert {item} in {list} [before {idx}]
++ invert( {expr}) Number bitwise invert
+ isdirectory( {directory}) Number TRUE if {directory} is a directory
+ islocked( {expr}) Number TRUE if {expr} is locked
+ items( {dict}) List key-value pairs in {dict}
+***************
+*** 1856,1861 ****
+--- 1868,1874 ----
+ mzeval( {expr}) any evaluate |MzScheme| expression
+ nextnonblank( {lnum}) Number line nr of non-blank line >= {lnum}
+ nr2char( {expr}) String single char with ASCII value {expr}
++ or( {expr}, {expr}) Number bitwise OR
+ pathshorten( {expr}) String shorten directory names in a path
+ pow( {x}, {y}) Float {x} to the power of {y}
+ prevnonblank( {lnum}) Number line nr of non-blank line <= {lnum}
+***************
+*** 1978,1983 ****
+--- 1992,1998 ----
+ winwidth( {nr}) Number width of window {nr}
+ writefile( {list}, {fname} [, {binary}])
+ Number write list of lines to file {fname}
++ xor( {expr}, {expr}) Number bitwise XOR
+
+ abs({expr}) *abs()*
+ Return the absolute value of {expr}. When {expr} evaluates to
+***************
+*** 2017,2022 ****
+--- 2032,2044 ----
+ Use |insert()| to add an item at another position.
+
+
++ and({expr}, {expr}) *and()*
++ Bitwise AND on the two arguments. The arguments are converted
++ to a number. A List, Dict or Float argument causes an error.
++ Example: >
++ :let flag = and(bits, 0x80)
++
++
+ append({lnum}, {expr}) *append()*
+ When {expr} is a |List|: Append each item of the |List| as a
+ text line below line {lnum} in the current buffer.
+***************
+*** 3770,3775 ****
+--- 3798,3808 ----
+ Note that when {item} is a |List| it is inserted as a single
+ item. Use |extend()| to concatenate |Lists|.
+
++ invert({expr}) *invert()*
++ Bitwise invert. The argument is converted to a number. A
++ List, Dict or Float argument causes an error. Example: >
++ :let bits = invert(bits)
++
+ isdirectory({directory}) *isdirectory()*
+ The result is a Number, which is non-zero when a directory
+ with the name {directory} exists. If {directory} doesn't
+***************
+*** 4334,4339 ****
+--- 4368,4380 ----
+ call setpos('.', save_cursor)
+ < Also see |setpos()|.
+
++ or({expr}, {expr}) *or()*
++ Bitwise OR on the two arguments. The arguments are converted
++ to a number. A List, Dict or Float argument causes an error.
++ Example: >
++ :let bits = or(bits, 0x80)
++
++
+ pathshorten({expr}) *pathshorten()*
+ Shorten directory names in the path {expr} and return the
+ result. The tail, the file name, is kept as-is. The other
+***************
+*** 6097,6103 ****
+ To copy a file byte for byte: >
+ :let fl = readfile("foo", "b")
+ :call writefile(fl, "foocopy", "b")
+! <
+
+ *feature-list*
+ There are three types of features:
+--- 6149,6163 ----
+ To copy a file byte for byte: >
+ :let fl = readfile("foo", "b")
+ :call writefile(fl, "foocopy", "b")
+!
+!
+! xor({expr}, {expr}) *xor()*
+! Bitwise XOR on the two arguments. The arguments are converted
+! to a number. A List, Dict or Float argument causes an error.
+! Example: >
+! :let bits = xor(bits, 0x80)
+!
+!
+
+ *feature-list*
+ There are three types of features:
+*** ../vim-7.3.376/src/version.c 2011-12-14 15:23:53.000000000 +0100
+--- src/version.c 2011-12-14 15:28:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 377,
+ /**/
+
+--
+DINGO: Wicked wicked Zoot ... she is a bad person and she must pay the
+ penalty. And here in Castle Anthrax, we have but one punishment
+ ... you must tie her down on a bed ... and spank her. Come!
+GIRLS: A spanking! A spanking!
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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 ///