--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.373
+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.373 (after 7.3.366)
+Problem: A tags file with an extremely long name may cause an infinite loop.
+Solution: When encountering a long name switch to linear search.
+Files: src/tag.c
+
+
+*** ../vim-7.3.372/src/tag.c 2011-12-08 15:12:08.000000000 +0100
+--- src/tag.c 2011-12-14 14:13:28.000000000 +0100
+***************
+*** 1854,1860 ****
+
+ if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+ {
+! /* binary search won't work for ignoring case, use linear
+ * search. */
+ linear = TRUE;
+ state = TS_LINEAR;
+--- 1854,1860 ----
+
+ if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+ {
+! /* Binary search won't work for ignoring case, use linear
+ * search. */
+ linear = TRUE;
+ state = TS_LINEAR;
+***************
+*** 1922,1927 ****
+--- 1922,1940 ----
+ MSG(_("Ignoring long line in tags file"));
+ verbose_leave();
+ }
++ #ifdef FEAT_TAG_BINS
++ if (state != TS_LINEAR)
++ {
++ /* Avoid getting stuck. */
++ linear = TRUE;
++ state = TS_LINEAR;
++ # ifdef HAVE_FSEEKO
++ fseeko(fp, search_info.low_offset, SEEK_SET);
++ # else
++ fseek(fp, (long)search_info.low_offset, SEEK_SET);
++ # endif
++ }
++ #endif
+ continue;
+ }
+
+*** ../vim-7.3.372/src/version.c 2011-12-08 18:44:47.000000000 +0100
+--- src/version.c 2011-12-14 14:12:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 373,
+ /**/
+
+--
+ZOOT: I'm afraid our life must seem very dull and quiet compared to yours.
+ We are but eightscore young blondes, all between sixteen and
+ nineteen-and-a-half, cut off in this castle, with no one to protect us.
+ Oooh. It is a lonely life ... bathing ... dressing ... undressing ...
+ making exciting underwear....
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.374
+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.374
+Problem: ++encoding does not work properly.
+Solution: Recognize ++encoding before ++enc. (Charles Cooper)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.3.373/src/ex_docmd.c 2011-10-20 21:58:20.000000000 +0200
+--- src/ex_docmd.c 2011-12-14 14:46:05.000000000 +0100
+***************
+*** 4840,4851 ****
+ #ifdef FEAT_MBYTE
+ else if (STRNCMP(arg, "enc", 3) == 0)
+ {
+! arg += 3;
+! pp = &eap->force_enc;
+! }
+! else if (STRNCMP(arg, "encoding", 8) == 0)
+! {
+! arg += 8;
+ pp = &eap->force_enc;
+ }
+ else if (STRNCMP(arg, "bad", 3) == 0)
+--- 4840,4849 ----
+ #ifdef FEAT_MBYTE
+ else if (STRNCMP(arg, "enc", 3) == 0)
+ {
+! if (STRNCMP(arg, "encoding", 8) == 0)
+! arg += 8;
+! else
+! arg += 3;
+ pp = &eap->force_enc;
+ }
+ else if (STRNCMP(arg, "bad", 3) == 0)
+*** ../vim-7.3.373/src/version.c 2011-12-14 14:15:12.000000000 +0100
+--- src/version.c 2011-12-14 14:44:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 374,
+ /**/
+
+--
+Linux is just like a wigwam: no Windows, no Gates and an Apache inside.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.375
+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.375
+Problem: Duplicate return statement.
+Solution: Remove the superfluous one. (Dominique Pelle)
+Files: src/gui_mac.c
+
+
+*** ../vim-7.3.374/src/gui_mac.c 2011-06-19 01:14:22.000000000 +0200
+--- src/gui_mac.c 2011-12-10 17:20:59.000000000 +0100
+***************
+*** 3216,3222 ****
+ {
+ /* TODO:
+ * This proc is called when Normal is set to a value
+! * so what msut be done? I don't know
+ */
+ }
+
+--- 3216,3222 ----
+ {
+ /* TODO:
+ * This proc is called when Normal is set to a value
+! * so what must be done? I don't know
+ */
+ }
+
+***************
+*** 3303,3309 ****
+ *x = bounds.left;
+ *y = bounds.top;
+ return OK;
+- return FAIL;
+ }
+
+ /*
+--- 3303,3308 ----
+*** ../vim-7.3.374/src/version.c 2011-12-14 14:49:41.000000000 +0100
+--- src/version.c 2011-12-14 15:06:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 375,
+ /**/
+
+--
+GALAHAD: No look, really, this isn't nescess ...
+PIGLET: We must examine you.
+GALAHAD: There's nothing wrong with ... that.
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.376
+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.376
+Problem: Win32: Toolbar repainting does not work when the mouse pointer
+ hovers over a button.
+Solution: Call DefWindowProc() when not handling an event. (Sergiu Dotenco)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.375/src/gui_w32.c 2011-08-10 17:07:56.000000000 +0200
+--- src/gui_w32.c 2011-12-14 15:14:48.000000000 +0100
+***************
+*** 1101,1107 ****
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+
+! return 1;
+ }
+
+ /*
+--- 1101,1107 ----
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+
+! return DefWindowProc(hwnd, uMsg, wParam, lParam);
+ }
+
+ /*
+*** ../vim-7.3.375/src/version.c 2011-12-14 15:07:11.000000000 +0100
+--- src/version.c 2011-12-14 15:23:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 376,
+ /**/
+
+--
+ GALAHAD hurries to the door and pushes through it. As he leaves the room
+ we CUT TO the reverse to show that he is now in a room full of bathing
+ and romping GIRLIES, all innocent, wide-eyed and beautiful. They smile
+ enchantingly at him as he tries to keep walking without being diverted by
+ the lovely sights assaulting his eyeballs.
+ "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 ///
--- /dev/null
+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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.378
+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.378
+Problem: When cross-compiling the check for uint32_t fails.
+Solution: Only give a warning message. (Maksim Melnikau)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.377/src/configure.in 2011-12-08 15:17:28.000000000 +0100
+--- src/configure.in 2011-12-14 19:18:36.000000000 +0100
+***************
+*** 3283,3289 ****
+ }],
+ AC_MSG_RESULT(ok),
+ AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
+! AC_MSG_ERROR([could not compile program using uint32_t.]))
+
+ dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+ dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+--- 3283,3289 ----
+ }],
+ AC_MSG_RESULT(ok),
+ AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
+! AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
+
+ dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+ dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+*** ../vim-7.3.377/src/auto/configure 2011-12-08 15:17:28.000000000 +0100
+--- src/auto/configure 2011-12-14 19:20:55.000000000 +0100
+***************
+*** 11777,11783 ****
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+ $as_echo_n "checking uint32_t is 32 bits... " >&6; }
+ if test "$cross_compiling" = yes; then :
+! as_fn_error "could not compile program using uint32_t." "$LINENO" 5
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+--- 11777,11784 ----
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+ $as_echo_n "checking uint32_t is 32 bits... " >&6; }
+ if test "$cross_compiling" = yes; then :
+! { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5
+! $as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;}
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+*** ../vim-7.3.377/src/version.c 2011-12-14 15:32:44.000000000 +0100
+--- src/version.c 2011-12-14 19:21:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 378,
+ /**/
+
+--
+ ### Hiroshima 45, Chernobyl 86, Windows 95 ###
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.379
+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.379
+Problem: C-indenting wrong for static enum.
+Solution: Skip over "static". (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.378/src/misc1.c 2011-11-30 17:20:18.000000000 +0100
+--- src/misc1.c 2011-12-14 19:37:48.000000000 +0100
+***************
+*** 5138,5143 ****
+--- 5138,5146 ----
+ if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7]))
+ s = cin_skipcomment(s + 7);
+
++ if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6]))
++ s = cin_skipcomment(s + 6);
++
+ if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4]))
+ return TRUE;
+
+*** ../vim-7.3.378/src/testdir/test3.in 2011-11-30 17:20:18.000000000 +0100
+--- src/testdir/test3.in 2011-12-14 20:03:11.000000000 +0100
+***************
+*** 299,316 ****
+
+ enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
+ typedef enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
+ {
+ int a,
+ b;
+--- 299,323 ----
+
+ enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
+ typedef enum soppie
+ {
+! yes = 0,
+! no,
+! maybe
+ };
+
++ static enum
++ {
++ yes = 0,
++ no,
++ maybe
++ } soppie;
++
+ {
+ int a,
+ b;
+*** ../vim-7.3.378/src/testdir/test3.ok 2011-11-30 17:20:18.000000000 +0100
+--- src/testdir/test3.ok 2011-12-14 19:37:48.000000000 +0100
+***************
+*** 299,304 ****
+--- 299,311 ----
+ maybe
+ };
+
++ static enum
++ {
++ yes = 0,
++ no,
++ maybe
++ } soppie;
++
+ {
+ int a,
+ b;
+*** ../vim-7.3.378/src/version.c 2011-12-14 19:22:29.000000000 +0100
+--- src/version.c 2011-12-14 20:02:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 379,
+ /**/
+
+--
+You cannot propel yourself forward by patting yourself on the back.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.380
+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.380
+Problem: C-indenting wrong for a function header.
+Solution: Skip to the start paren. (Lech Lorens)
+Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.379/src/misc1.c 2011-12-14 20:05:17.000000000 +0100
+--- src/misc1.c 2011-12-14 20:16:43.000000000 +0100
+***************
+*** 4943,4949 ****
+ static int cin_islinecomment __ARGS((char_u *));
+ static int cin_isterminated __ARGS((char_u *, int, int));
+ static int cin_isinit __ARGS((void));
+! static int cin_isfuncdecl __ARGS((char_u **, linenr_T));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+--- 4943,4949 ----
+ static int cin_islinecomment __ARGS((char_u *));
+ static int cin_isterminated __ARGS((char_u *, int, int));
+ static int cin_isinit __ARGS((void));
+! static int cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int));
+ static int cin_isif __ARGS((char_u *));
+ static int cin_iselse __ARGS((char_u *));
+ static int cin_isdo __ARGS((char_u *));
+***************
+*** 5585,5605 ****
+ * "sp" points to a string with the line. When looking at other lines it must
+ * be restored to the line. When it's NULL fetch lines here.
+ * "lnum" is where we start looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum)
+ char_u **sp;
+ linenr_T first_lnum;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+ int retval = FALSE;
+
+ if (sp == NULL)
+ s = ml_get(lnum);
+ else
+ s = *sp;
+
+ /* Ignore line starting with #. */
+ if (cin_ispreproc(s))
+ return FALSE;
+--- 5585,5621 ----
+ * "sp" points to a string with the line. When looking at other lines it must
+ * be restored to the line. When it's NULL fetch lines here.
+ * "lnum" is where we start looking.
++ * "min_lnum" is the line before which we will not be looking.
+ */
+ static int
+! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment)
+ char_u **sp;
+ linenr_T first_lnum;
++ linenr_T min_lnum;
++ int ind_maxparen;
++ int ind_maxcomment;
+ {
+ char_u *s;
+ linenr_T lnum = first_lnum;
+ int retval = FALSE;
++ pos_T *trypos;
++ int just_started = TRUE;
+
+ if (sp == NULL)
+ s = ml_get(lnum);
+ else
+ s = *sp;
+
++ if (find_last_paren(s, '(', ')')
++ && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL)
++ {
++ lnum = trypos->lnum;
++ if (lnum < min_lnum)
++ return FALSE;
++
++ s = ml_get(lnum);
++ }
++
+ /* Ignore line starting with #. */
+ if (cin_ispreproc(s))
+ return FALSE;
+***************
+*** 5650,5662 ****
+ /* Require a comma at end of the line or a comma or ')' at the
+ * start of next line. */
+ s = skipwhite(s);
+! if (!comma && *s != ',' && *s != ')')
+ break;
+ }
+ else if (cin_iscomment(s)) /* ignore comments */
+ s = cin_skipcomment(s);
+ else
+ ++s;
+ }
+
+ done:
+--- 5666,5682 ----
+ /* Require a comma at end of the line or a comma or ')' at the
+ * start of next line. */
+ s = skipwhite(s);
+! if (!just_started && (!comma && *s != ',' && *s != ')'))
+ break;
++ just_started = FALSE;
+ }
+ else if (cin_iscomment(s)) /* ignore comments */
+ s = cin_skipcomment(s);
+ else
++ {
+ ++s;
++ just_started = FALSE;
++ }
+ }
+
+ done:
+***************
+*** 7158,7164 ****
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+--- 7178,7185 ----
+ * (it's a variable declaration).
+ */
+ if (start_brace != BRACE_IN_COL0
+! || !cin_isfuncdecl(&l, curwin->w_cursor.lnum,
+! 0, ind_maxparen, ind_maxcomment))
+ {
+ /* if the line is terminated with another ','
+ * it is a continued variable initialization.
+***************
+*** 8019,8025 ****
+ && vim_strchr(theline, '}') == NULL
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = ind_func_type;
+--- 8040,8048 ----
+ && vim_strchr(theline, '}') == NULL
+ && !cin_ends_in(theline, (char_u *)":", NULL)
+ && !cin_ends_in(theline, (char_u *)",", NULL)
+! && cin_isfuncdecl(NULL, cur_curpos.lnum + 1,
+! cur_curpos.lnum + 1,
+! ind_maxparen, ind_maxcomment)
+ && !cin_isterminated(theline, FALSE, TRUE))
+ {
+ amount = ind_func_type;
+***************
+*** 8125,8131 ****
+ * If the line looks like a function declaration, and we're
+ * not in a comment, put it the left margin.
+ */
+! if (cin_isfuncdecl(NULL, cur_curpos.lnum)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+--- 8148,8155 ----
+ * If the line looks like a function declaration, and we're
+ * not in a comment, put it the left margin.
+ */
+! if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0,
+! ind_maxparen, ind_maxcomment)) /* XXX */
+ break;
+ l = ml_get_curline();
+
+***************
+*** 8173,8179 ****
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum))
+ {
+ amount = ind_param;
+ break;
+--- 8197,8204 ----
+ * line (and the ones that follow) needs to be indented as
+ * parameters.
+ */
+! if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+! ind_maxparen, ind_maxcomment))
+ {
+ amount = ind_param;
+ break;
+*** ../vim-7.3.379/src/testdir/test3.in 2011-12-14 20:05:17.000000000 +0100
+--- src/testdir/test3.in 2011-12-14 20:11:24.000000000 +0100
+***************
+*** 1429,1435 ****
+
+ STARTTEST
+ :set cino&
+! 2kdd=4][
+ ENDTEST
+
+ void func(void)
+--- 1429,1435 ----
+
+ STARTTEST
+ :set cino&
+! 2kdd=7][
+ ENDTEST
+
+ void func(void)
+***************
+*** 1478,1484 ****
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n);
+ }
+
+ STARTTEST
+--- 1478,1506 ----
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n");
+! }
+!
+! void
+! func4(a, b,
+! c)
+! int a;
+! int b;
+! int c;
+! {
+! }
+!
+! void
+! func5(
+! int a,
+! int b)
+! {
+! }
+!
+! void
+! func6(
+! int a)
+! {
+ }
+
+ STARTTEST
+*** ../vim-7.3.379/src/testdir/test3.ok 2011-12-14 20:05:17.000000000 +0100
+--- src/testdir/test3.ok 2011-12-14 20:11:24.000000000 +0100
+***************
+*** 1331,1337 ****
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n);
+ }
+
+
+--- 1331,1359 ----
+ 3, 4,
+ 5, 6};
+
+! printf("Don't you dare indent this line incorrectly!\n");
+! }
+!
+! void
+! func4(a, b,
+! c)
+! int a;
+! int b;
+! int c;
+! {
+! }
+!
+! void
+! func5(
+! int a,
+! int b)
+! {
+! }
+!
+! void
+! func6(
+! int a)
+! {
+ }
+
+
+*** ../vim-7.3.379/src/version.c 2011-12-14 20:05:17.000000000 +0100
+--- src/version.c 2011-12-14 20:20:50.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 380,
+ /**/
+
+--
+"Intelligence has much less practical application than you'd think."
+ -- Scott Adams, Dilbert.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.381
+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.381
+Problem: Configure silently skips interfaces that won't work.
+Solution: Add the --enable-fail_if_missing argument. (Shlomi Fish)
+Files: src/Makefile, src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.380/src/Makefile 2011-12-08 15:17:28.000000000 +0100
+--- src/Makefile 2011-12-14 20:49:26.000000000 +0100
+***************
+*** 389,394 ****
+--- 389,399 ----
+ #CONF_OPT_PLTHOME = --with-plthome=/usr/local/drscheme
+ #CONF_OPT_PLTHOME = --with-plthome=/home/me/mz
+
++ # Uncomment the next line to fail if one of the requested language interfaces
++ # cannot be configured. Without this Vim will be build anyway, without
++ # the failing interfaces.
++ #CONF_OPT_FAIL = --enable-fail-if-missing
++
+ # PERL
+ # Uncomment one of these when you want to include the Perl interface.
+ # First one is for static linking, second one for dynamic loading.
+***************
+*** 1648,1654 ****
+ CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \
+ ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \
+! $(CONF_OPT_DARWIN) $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \
+ $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \
+ $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \
+ $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
+--- 1653,1660 ----
+ CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \
+ LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \
+ ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \
+! $(CONF_OPT_DARWIN) $(CONF_OPT_FAIL) \
+! $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \
+ $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \
+ $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \
+ $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
+*** ../vim-7.3.380/src/configure.in 2011-12-14 19:22:29.000000000 +0100
+--- src/configure.in 2011-12-14 20:46:36.000000000 +0100
+***************
+*** 28,33 ****
+--- 28,43 ----
+ AC_HEADER_STDC
+ AC_HEADER_SYS_WAIT
+
++ dnl Check for the flag that fails if stuff are missing.
++
++ AC_MSG_CHECKING(--enable-fail-if-missing argument)
++ AC_ARG_ENABLE(fail_if_missing,
++ [ --enable-fail-if-missing Fail if dependencies on additional features
++ specified on the command line are missing.],
++ [fail_if_missing="yes"],
++ [fail_if_missing="no"])
++ AC_MSG_RESULT($fail_if_missing)
++
+ dnl Set default value for CFLAGS if none is defined or it's empty
+ if test -z "$CFLAGS"; then
+ CFLAGS="-O"
+***************
+*** 491,496 ****
+--- 501,509 ----
+ LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
++ AC_MSG_ERROR([could not configure lua])
++ fi
+ AC_SUBST(LUA_SRC)
+ AC_SUBST(LUA_OBJ)
+ AC_SUBST(LUA_PRO)
+***************
+*** 781,786 ****
+--- 794,803 ----
+ PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
++ AC_MSG_ERROR([could not configure perl])
++ fi
+ fi
+ AC_SUBST(shrpenv)
+ AC_SUBST(PERL_SRC)
+***************
+*** 966,971 ****
+--- 983,992 ----
+ AC_MSG_RESULT(too old)
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
++ AC_MSG_ERROR([could not configure python])
++ fi
+ fi
+
+ AC_SUBST(PYTHON_CONFDIR)
+***************
+*** 1389,1394 ****
+--- 1410,1418 ----
+ AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
++ AC_MSG_ERROR([could not configure Tcl])
++ fi
+ fi
+ AC_SUBST(TCL_SRC)
+ AC_SUBST(TCL_OBJ)
+***************
+*** 1469,1474 ****
+--- 1493,1502 ----
+ AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
++ AC_MSG_ERROR([could not configure Ruby])
++ fi
+ fi
+ AC_SUBST(RUBY_SRC)
+ AC_SUBST(RUBY_OBJ)
+*** ../vim-7.3.380/src/auto/configure 2011-12-14 19:22:29.000000000 +0100
+--- src/auto/configure 2011-12-14 20:49:51.000000000 +0100
+***************
+*** 741,746 ****
+--- 741,747 ----
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
++ enable_fail_if_missing
+ enable_darwin
+ with_mac_arch
+ with_developer_dir
+***************
+*** 1418,1423 ****
+--- 1419,1426 ----
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --enable-fail-if-missing Fail if dependencies on additional features
++ specified on the command line are missing.
+ --disable-darwin Disable Darwin (Mac OS X) support.
+ --disable-selinux Don't check for SELinux support.
+ --disable-xsmp Disable XSMP session management
+***************
+*** 3949,3954 ****
+--- 3952,3970 ----
+ fi
+
+
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5
++ $as_echo_n "checking --enable-fail-if-missing argument... " >&6; }
++ # Check whether --enable-fail_if_missing was given.
++ if test "${enable_fail_if_missing+set}" = set; then :
++ enableval=$enable_fail_if_missing; fail_if_missing="yes"
++ else
++ fail_if_missing="no"
++ fi
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5
++ $as_echo "$fail_if_missing" >&6; }
++
+ if test -z "$CFLAGS"; then
+ CFLAGS="-O"
+ test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
+***************
+*** 4727,4732 ****
+--- 4743,4751 ----
+ LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
++ as_fn_error "could not configure lua" "$LINENO" 5
++ fi
+
+
+
+***************
+*** 5140,5145 ****
+--- 5159,5168 ----
+ PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
++ as_fn_error "could not configure perl" "$LINENO" 5
++ fi
+ fi
+
+
+***************
+*** 5429,5434 ****
+--- 5452,5461 ----
+ $as_echo "too old" >&6; }
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
++ as_fn_error "could not configure python" "$LINENO" 5
++ fi
+ fi
+
+
+***************
+*** 6216,6221 ****
+--- 6243,6251 ----
+ $as_echo "too old; need Tcl version 8.0 or later" >&6; }
+ fi
+ fi
++ if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
++ as_fn_error "could not configure Tcl" "$LINENO" 5
++ fi
+ fi
+
+
+***************
+*** 6353,6358 ****
+--- 6383,6392 ----
+ $as_echo "too old; need Ruby version 1.6.0 or later" >&6; }
+ fi
+ fi
++
++ if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
++ as_fn_error "could not configure Ruby" "$LINENO" 5
++ fi
+ fi
+
+
+*** ../vim-7.3.380/src/version.c 2011-12-14 20:21:29.000000000 +0100
+--- src/version.c 2011-12-14 20:50:42.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 381,
+ /**/
+
+--
+The psychic said, "God bless you." I said, "I didn't sneeze." She
+looked deep into my eyes and said, "You will, eventually." And, damn
+if she wasn't right. Two days later, I sneezed. --Ellen Degeneres
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.382
+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.382 (after 7.3.376)
+Problem: IME characters are inserted twice.
+Solution: Do not call DefWindowProc() if the event was handled. (Yasuhiro
+ Matsumoto)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.381/src/gui_w32.c 2011-12-14 15:23:53.000000000 +0100
+--- src/gui_w32.c 2011-12-15 21:50:51.000000000 +0100
+***************
+*** 798,804 ****
+ if (pt.y < rect.top)
+ {
+ show_tabline_popup_menu();
+! return 0;
+ }
+ }
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+--- 798,804 ----
+ if (pt.y < rect.top)
+ {
+ show_tabline_popup_menu();
+! return 0L;
+ }
+ }
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+***************
+*** 828,834 ****
+--- 828,837 ----
+
+ case WM_ENDSESSION:
+ if (wParam) /* system only really goes down when wParam is TRUE */
++ {
+ _OnEndSession();
++ return 0L;
++ }
+ break;
+
+ case WM_CHAR:
+***************
+*** 866,872 ****
+ * are received, mouse pointer remains hidden. */
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ #else
+! return 0;
+ #endif
+
+ case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */
+--- 869,875 ----
+ * are received, mouse pointer remains hidden. */
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+ #else
+! return 0L;
+ #endif
+
+ case WM_SIZING: /* HANDLE_MSG doesn't seem to handle this one */
+***************
+*** 874,880 ****
+
+ case WM_MOUSEWHEEL:
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! break;
+
+ /* Notification for change in SystemParametersInfo() */
+ case WM_SETTINGCHANGE:
+--- 877,883 ----
+
+ case WM_MOUSEWHEEL:
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! return 0L;
+
+ /* Notification for change in SystemParametersInfo() */
+ case WM_SETTINGCHANGE:
+***************
+*** 987,999 ****
+--- 990,1008 ----
+ case TCN_SELCHANGE:
+ if (gui_mch_showing_tabline()
+ && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd)
++ {
+ send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1);
++ return 0L;
++ }
+ break;
+
+ case NM_RCLICK:
+ if (gui_mch_showing_tabline()
+ && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd)
++ {
+ show_tabline_popup_menu();
++ return 0L;
++ }
+ break;
+ # endif
+ default:
+***************
+*** 1037,1042 ****
+--- 1046,1052 ----
+ out_flush();
+ did_menu_tip = TRUE;
+ }
++ return 0L;
+ }
+ break;
+ #endif
+***************
+*** 1079,1096 ****
+ case WM_IME_NOTIFY:
+ if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! break;
+ case WM_IME_COMPOSITION:
+ if (!_OnImeComposition(hwnd, wParam, lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! break;
+ #endif
+
+ default:
+ if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0)
+ { /* handle MSH_MOUSEWHEEL messages for Intellimouse */
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! break;
+ }
+ #ifdef MSWIN_FIND_REPLACE
+ else if (uMsg == s_findrep_msg && s_findrep_msg != 0)
+--- 1089,1107 ----
+ case WM_IME_NOTIFY:
+ if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! return 1L;
+!
+ case WM_IME_COMPOSITION:
+ if (!_OnImeComposition(hwnd, wParam, lParam))
+ return MyWindowProc(hwnd, uMsg, wParam, lParam);
+! return 1L;
+ #endif
+
+ default:
+ if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0)
+ { /* handle MSH_MOUSEWHEEL messages for Intellimouse */
+ _OnMouseWheel(hwnd, HIWORD(wParam));
+! return 0L;
+ }
+ #ifdef MSWIN_FIND_REPLACE
+ else if (uMsg == s_findrep_msg && s_findrep_msg != 0)
+*** ../vim-7.3.381/src/version.c 2011-12-14 20:51:19.000000000 +0100
+--- src/version.c 2011-12-15 21:48:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 382,
+ /**/
+
+--
+Even got a Datapoint 3600(?) with a DD50 connector instead of the
+usual DB25... what a nightmare trying to figure out the pinout
+for *that* with no spex...
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.383
+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.383
+Problem: For EBCDIC pound sign is defined as 't'.
+Solution: Correctly define POUND.
+Files: src/ascii.h
+
+
+*** ../vim-7.3.382/src/ascii.h 2011-09-02 14:18:14.000000000 +0200
+--- src/ascii.h 2011-12-17 21:38:36.000000000 +0100
+***************
+*** 123,129 ****
+ #define DCS 0x90 /* Device Control String */
+ #define STERM 0x9c /* String Terminator */
+
+! #define POUND '\xA3'
+
+ #define CTRL_F_STR "\056"
+ #define CTRL_H_STR "\026"
+--- 123,129 ----
+ #define DCS 0x90 /* Device Control String */
+ #define STERM 0x9c /* String Terminator */
+
+! #define POUND 0xB1
+
+ #define CTRL_F_STR "\056"
+ #define CTRL_H_STR "\026"
+*** ../vim-7.3.382/src/version.c 2011-12-15 21:51:32.000000000 +0100
+--- src/version.c 2011-12-23 12:46:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 383,
+ /**/
+
+--
+Vim is like Emacs without all the typing. (John "Johann" Spetz)
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.384
+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.384
+Problem: Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary
+ completion.
+Solution: Add CTRL-K to the list of recognized keys. (James McCoy)
+Files: src/edit.c
+
+
+*** ../vim-7.3.383/src/edit.c 2011-10-26 17:04:23.000000000 +0200
+--- src/edit.c 2011-12-23 12:36:22.000000000 +0100
+***************
+*** 2183,2189 ****
+ || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P
+ || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V
+ || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O
+! || c == Ctrl_S || c == 's');
+ case CTRL_X_SCROLL:
+ return (c == Ctrl_Y || c == Ctrl_E);
+ case CTRL_X_WHOLE_LINE:
+--- 2183,2189 ----
+ || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P
+ || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V
+ || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O
+! || c == Ctrl_S || c == Ctrl_K || c == 's');
+ case CTRL_X_SCROLL:
+ return (c == Ctrl_Y || c == Ctrl_E);
+ case CTRL_X_WHOLE_LINE:
+*** ../vim-7.3.383/src/version.c 2011-12-23 12:46:56.000000000 +0100
+--- src/version.c 2011-12-23 12:53:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 384,
+ /**/
+
+--
+Q: Is selling software the same as selling hardware?
+A: No, good hardware is sold new, good software has already been used by many.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.385
+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.385
+Problem: When using an expression mapping on the command line the cursor
+ ends up in the wrong place. (Yasuhiro Matsumoto)
+Solution: Save and restore msg_col and msg_row when evaluating the
+ expression.
+Files: src/getchar.
+
+
+*** ../vim-7.3.384/src/getchar.c 2011-10-12 22:02:07.000000000 +0200
+--- src/getchar.c 2011-12-14 18:37:52.000000000 +0100
+***************
+*** 4510,4515 ****
+--- 4510,4517 ----
+ char_u *expr;
+ char_u *save_cmd;
+ pos_T save_cursor;
++ int save_msg_col;
++ int save_msg_row;
+
+ /* Remove escaping of CSI, because "str" is in a format to be used as
+ * typeahead. */
+***************
+*** 4533,4544 ****
+--- 4535,4550 ----
+ #endif
+ set_vim_var_char(c); /* set v:char to the typed character */
+ save_cursor = curwin->w_cursor;
++ save_msg_col = msg_col;
++ save_msg_row = msg_row;
+ p = eval_to_string(expr, NULL, FALSE);
+ --textlock;
+ #ifdef FEAT_EX_EXTRA
+ --ex_normal_lock;
+ #endif
+ curwin->w_cursor = save_cursor;
++ msg_col = save_msg_col;
++ msg_row = save_msg_row;
+
+ restore_cmdline_alloc(save_cmd);
+ vim_free(expr);
+*** ../vim-7.3.384/src/version.c 2011-12-23 13:14:58.000000000 +0100
+--- src/version.c 2011-12-23 14:53:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 385,
+ /**/
+
+--
+`When any government, or any church for that matter, undertakes to say to
+ its subjects, "This you may not read, this you must not see, this you are
+ forbidden to know," the end result is tyranny and oppression no matter how
+ holy the motives' -- Robert A Heinlein, "If this goes on --"
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.386
+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.386
+Problem: Test 83 fails when iconv does not support cp932. (raf)
+Solution: Test if conversion works. (Yukihiro Nakadaira)
+Files: src/testdir/test83.in
+
+
+*** ../vim-7.3.385/src/testdir/test83.in 2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/test83.in 2011-12-21 21:01:44.000000000 +0100
+***************
+*** 2,8 ****
+
+ STARTTEST
+ :so mbyte.vim
+! :if !has('iconv')
+ : e! test.ok
+ : w! test.out
+ : qa!
+--- 2,8 ----
+
+ STARTTEST
+ :so mbyte.vim
+! :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+ : e! test.ok
+ : w! test.out
+ : qa!
+*** ../vim-7.3.385/src/version.c 2011-12-23 14:54:01.000000000 +0100
+--- src/version.c 2011-12-23 14:55:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 386,
+ /**/
+
+--
+WOMAN: King of the who?
+ARTHUR: The Britons.
+WOMAN: Who are the Britons?
+ARTHUR: Well, we all are. we're all Britons and I am your king.
+ The Quest for the Holy Grail (Monty Python)
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.387
+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.387 (after 7.3.386)
+Problem: Test 83 may fail for some encodings.
+Solution: Set 'encoding' to utf-8 earlier.
+Files: src/testdir/test83.in
+
+
+*** ../vim-7.3.386/src/testdir/test83.in 2011-12-23 14:56:24.000000000 +0100
+--- src/testdir/test83.in 2011-12-30 13:05:05.000000000 +0100
+***************
+*** 2,13 ****
+
+ STARTTEST
+ :so mbyte.vim
+ :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+ : e! test.ok
+ : w! test.out
+ : qa!
+ :endif
+- :set enc=utf8
+
+ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
+ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
+--- 2,13 ----
+
+ STARTTEST
+ :so mbyte.vim
++ :set enc=utf8
+ :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+ : e! test.ok
+ : w! test.out
+ : qa!
+ :endif
+
+ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
+ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
+*** ../vim-7.3.386/src/version.c 2011-12-23 14:56:24.000000000 +0100
+--- src/version.c 2011-12-30 13:06:17.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 387,
+ /**/
+
+--
+Mental Floss prevents moral decay!
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.388
+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.388
+Problem: Crash on exit when EXITFREE is defined and using tiny features.
+Solution: Check for NULL window pointer. (Dominique Pelle)
+Files: src/buffer.c
+
+
+*** ../vim-7.3.387/src/buffer.c 2011-11-30 15:40:51.000000000 +0100
+--- src/buffer.c 2011-12-30 13:35:26.000000000 +0100
+***************
+*** 419,424 ****
+--- 419,426 ----
+ if (
+ #ifdef FEAT_WINDOWS
+ win_valid(win) &&
++ #else
++ win != NULL &&
+ #endif
+ win->w_buffer == buf)
+ win->w_buffer = NULL; /* make sure we don't use the buffer now */
+*** ../vim-7.3.387/src/version.c 2011-12-30 13:09:15.000000000 +0100
+--- src/version.c 2011-12-30 13:37:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 388,
+ /**/
+
+--
+Be nice to your kids... they'll be the ones choosing your nursing home.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.389
+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.389
+Problem: After typing at a prompt the "MORE" message appears too soon.
+Solution: reset lines_left in msg_end_prompt(). (Eswald)
+Files: src/message.c
+
+
+*** ../vim-7.3.388/src/message.c 2011-09-14 15:39:26.000000000 +0200
+--- src/message.c 2011-12-30 14:08:05.000000000 +0100
+***************
+*** 85,91 ****
+ * need_wait_return to be set. This is a hack to make ":ts"
+ * work without an extra prompt.
+ * lines_left Number of lines available for messages before the
+! * more-prompt is to be given.
+ * need_wait_return TRUE when the hit-return prompt is needed.
+ * Reset: After giving the hit-return prompt, when the user
+ * has answered some other prompt.
+--- 85,91 ----
+ * need_wait_return to be set. This is a hack to make ":ts"
+ * work without an extra prompt.
+ * lines_left Number of lines available for messages before the
+! * more-prompt is to be given. -1 when not set.
+ * need_wait_return TRUE when the hit-return prompt is needed.
+ * Reset: After giving the hit-return prompt, when the user
+ * has answered some other prompt.
+***************
+*** 855,860 ****
+--- 855,861 ----
+ cmdline_row = msg_row;
+ msg_col = 0;
+ msg_clr_eos();
++ lines_left = -1;
+ }
+ #endif
+
+*** ../vim-7.3.388/src/version.c 2011-12-30 13:39:04.000000000 +0100
+--- src/version.c 2011-12-30 14:11:00.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 389,
+ /**/
+
+--
+Proofread carefully to see if you any words out.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.390
+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.390
+Problem: Using NULL buffer pointer in a window.
+Solution: Check for w_buffer being NULL in more places. (Bjorn Winckler)
+Files: src/ex_cmds.c, src/quickfix.c, src/window.c
+
+
+*** ../vim-7.3.389/src/ex_cmds.c 2011-11-30 17:01:55.000000000 +0100
+--- src/ex_cmds.c 2011-12-30 14:59:57.000000000 +0100
+***************
+*** 3390,3395 ****
+--- 3390,3402 ----
+ (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
++ /* Autocommands may open a new window and leave oldwin open
++ * which leads to crashes since the above call sets
++ * oldwin->w_buffer to NULL. */
++ if (curwin != oldwin && oldwin != aucmd_win
++ && win_valid(oldwin) && oldwin->w_buffer == NULL)
++ win_close(oldwin, FALSE);
++
+ # ifdef FEAT_EVAL
+ if (aborting()) /* autocmds may abort script processing */
+ {
+*** ../vim-7.3.389/src/quickfix.c 2011-08-10 18:36:49.000000000 +0200
+--- src/quickfix.c 2011-12-30 14:45:19.000000000 +0100
+***************
+*** 2675,2681 ****
+ bt_quickfix(buf)
+ buf_T *buf;
+ {
+! return (buf->b_p_bt[0] == 'q');
+ }
+
+ /*
+--- 2675,2681 ----
+ bt_quickfix(buf)
+ buf_T *buf;
+ {
+! return buf != NULL && buf->b_p_bt[0] == 'q';
+ }
+
+ /*
+***************
+*** 2686,2693 ****
+ bt_nofile(buf)
+ buf_T *buf;
+ {
+! return (buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
+! || buf->b_p_bt[0] == 'a';
+ }
+
+ /*
+--- 2686,2693 ----
+ bt_nofile(buf)
+ buf_T *buf;
+ {
+! return buf != NULL && ((buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
+! || buf->b_p_bt[0] == 'a');
+ }
+
+ /*
+***************
+*** 2697,2703 ****
+ bt_dontwrite(buf)
+ buf_T *buf;
+ {
+! return (buf->b_p_bt[0] == 'n');
+ }
+
+ int
+--- 2697,2703 ----
+ bt_dontwrite(buf)
+ buf_T *buf;
+ {
+! return buf != NULL && buf->b_p_bt[0] == 'n';
+ }
+
+ int
+*** ../vim-7.3.389/src/window.c 2011-09-14 14:43:21.000000000 +0200
+--- src/window.c 2011-12-30 14:44:18.000000000 +0100
+***************
+*** 2170,2176 ****
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+! if (win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+ clear_snapshot(curtab, SNAP_HELP_IDX);
+--- 2170,2176 ----
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+! if (win->w_buffer != NULL && win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+ clear_snapshot(curtab, SNAP_HELP_IDX);
+***************
+*** 2214,2226 ****
+
+ #ifdef FEAT_SYN_HL
+ /* Free independent synblock before the buffer is freed. */
+! reset_synblock(win);
+ #endif
+
+ /*
+ * Close the link to the buffer.
+ */
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+--- 2214,2228 ----
+
+ #ifdef FEAT_SYN_HL
+ /* Free independent synblock before the buffer is freed. */
+! if (win->w_buffer != NULL)
+! reset_synblock(win);
+ #endif
+
+ /*
+ * Close the link to the buffer.
+ */
+! if (win->w_buffer != NULL)
+! close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+
+ /* Autocommands may have closed the window already, or closed the only
+ * other window or moved to another tab page. */
+*** ../vim-7.3.389/src/version.c 2011-12-30 14:14:16.000000000 +0100
+--- src/version.c 2011-12-30 14:38:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 390,
+ /**/
+
+--
+There can't be a crisis today, my schedule is already full.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.391
+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.391
+Problem: Can't check if the XPM_W32 feature is enabled.
+Solution: Add xpm_w32 to the list of features. (kat)
+Files: src/eval.c
+
+
+*** ../vim-7.3.390/src/eval.c 2011-12-14 15:32:44.000000000 +0100
+--- src/eval.c 2012-01-04 14:33:22.000000000 +0100
+***************
+*** 12260,12265 ****
+--- 12260,12268 ----
+ #ifdef FEAT_XFONTSET
+ "xfontset",
+ #endif
++ #ifdef FEAT_XPM_W32
++ "xpm_w32",
++ #endif
+ #ifdef USE_XSMP
+ "xsmp",
+ #endif
+*** ../vim-7.3.390/src/version.c 2011-12-30 15:01:55.000000000 +0100
+--- src/version.c 2012-01-04 14:34:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 391,
+ /**/
+
+--
+ROBIN: The what?
+ARTHUR: The Holy Hand Grenade of Antioch. 'Tis one of the sacred relics
+ Brother Maynard always carries with him.
+ALL: Yes. Of course.
+ARTHUR: (shouting) Bring up the Holy Hand Grenade!
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.392
+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.392
+Problem: When setting 'undofile' while the file is already loaded but
+ unchanged, try reading the undo file. (Andy Wokula)
+Solution: Compute a checksum of the text when 'undofile' is set. (Christian
+ Brabandt)
+Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok
+
+
+*** ../vim-7.3.391/src/option.c 2011-11-30 11:31:25.000000000 +0100
+--- src/option.c 2012-01-04 19:34:11.000000000 +0100
+***************
+*** 7516,7521 ****
+--- 7516,7545 ----
+ compatible_set();
+ }
+
++ #ifdef FEAT_PERSISTENT_UNDO
++ /* 'undofile' */
++ else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf)
++ {
++ char_u hash[UNDO_HASH_SIZE];
++ buf_T *save_curbuf = curbuf;
++
++ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
++ {
++ /* When 'undofile' is set globally: for every buffer, otherwise
++ * only for the current buffer: Try to read in the undofile, if
++ * one exists and the buffer wasn't changed. */
++ if ((curbuf == save_curbuf
++ || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
++ && !curbufIsChanged())
++ {
++ u_compute_hash(hash);
++ u_read_undo(NULL, hash, curbuf->b_fname);
++ }
++ }
++ curbuf = save_curbuf;
++ }
++ #endif
++
+ /* 'list', 'number' */
+ else if ((int *)varp == &curwin->w_p_list
+ || (int *)varp == &curwin->w_p_nu
+*** ../vim-7.3.391/src/testdir/test72.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100
+***************
+*** 51,56 ****
+--- 51,62 ----
+ :e Xtestfile
+ uuu:w >>test.out
+ :"
++ :" Test that reading the undofiles when setting undofile works
++ :set noundofile ul=0
++ i
++ \eu:e! Xtestfile
++ :set undofile ul=100
++ uuuuuu:w >>test.out
+ :" And now with encryption, cryptmethod=zip
+ :e! Xtestfile
+ :set undofile cm=zip
+*** ../vim-7.3.391/src/testdir/test72.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test72.ok 2012-01-04 19:04:17.000000000 +0100
+***************
+*** 7,12 ****
+--- 7,22 ----
+ eight
+ nine
+ ten
++ one
++ two
++ three
++ four
++ five
++ six
++ seven
++ eight
++ nine
++ ten
+ monday
+ wednesday
+ thursday
+*** ../vim-7.3.391/src/version.c 2012-01-04 14:35:31.000000000 +0100
+--- src/version.c 2012-01-04 19:33:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 392,
+ /**/
+
+--
+BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One.
+ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O
+ Lord bless this thy hand grenade that with it thou mayest
+ blow thine enemies to tiny bits, in thy mercy. "and the Lord
+ did grin and people did feast upon the lambs and sloths and
+ carp and anchovies and orang-utans and breakfast cereals and
+ fruit bats and...
+BROTHER MAYNARD: Skip a bit brother ...
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.393
+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.393
+Problem: Win32: When resizing Vim it is always moved to the primary monitor
+ if the secondary monitor is on the left.
+Solution: Use the nearest monitor. (Yukihiro Nakadaira)
+Files: src/gui_w32.c
+
+
+*** ../vim-7.3.392/src/gui_w32.c 2011-12-15 21:51:32.000000000 +0100
+--- src/gui_w32.c 2012-01-04 20:25:58.000000000 +0100
+***************
+*** 1661,1669 ****
+ {
+ RECT workarea_rect;
+ int win_width, win_height;
+- int win_xpos, win_ypos;
+ WINDOWPLACEMENT wndpl;
+- int workarea_left;
+
+ /* Try to keep window completely on screen. */
+ /* Get position of the screen work area. This is the part that is not
+--- 1661,1667 ----
+***************
+*** 1685,1693 ****
+ GetWindowPlacement(s_hwnd, &wndpl);
+ }
+
+- win_xpos = wndpl.rcNormalPosition.left;
+- win_ypos = wndpl.rcNormalPosition.top;
+-
+ /* compute the size of the outside of the window */
+ win_width = width + GetSystemMetrics(SM_CXFRAME) * 2;
+ win_height = height + GetSystemMetrics(SM_CYFRAME) * 2
+--- 1683,1688 ----
+***************
+*** 1697,1732 ****
+ #endif
+ ;
+
+! /* There is an inconsistency when using two monitors and Vim is on the
+! * second (right) one: win_xpos will be the offset from the workarea of
+! * the left monitor. While with one monitor it's the offset from the
+! * workarea (including a possible taskbar on the left). Detect the second
+! * monitor by checking for the left offset to be quite big. */
+! if (workarea_rect.left > 300)
+! workarea_left = 0;
+! else
+! workarea_left = workarea_rect.left;
+
+! /* If the window is going off the screen, move it on to the screen.
+! * win_xpos and win_ypos are relative to the workarea. */
+ if ((direction & RESIZE_HOR)
+! && workarea_left + win_xpos + win_width > workarea_rect.right)
+! win_xpos = workarea_rect.right - win_width - workarea_left;
+
+! if ((direction & RESIZE_HOR) && win_xpos < 0)
+! win_xpos = 0;
+
+ if ((direction & RESIZE_VERT)
+! && workarea_rect.top + win_ypos + win_height > workarea_rect.bottom)
+! win_ypos = workarea_rect.bottom - win_height - workarea_rect.top;
+
+! if ((direction & RESIZE_VERT) && win_ypos < 0)
+! win_ypos = 0;
+!
+! wndpl.rcNormalPosition.left = win_xpos;
+! wndpl.rcNormalPosition.right = win_xpos + win_width;
+! wndpl.rcNormalPosition.top = win_ypos;
+! wndpl.rcNormalPosition.bottom = win_ypos + win_height;
+
+ /* set window position - we should use SetWindowPlacement rather than
+ * SetWindowPos as the MSDN docs say the coord systems returned by
+--- 1692,1723 ----
+ #endif
+ ;
+
+! /* The following should take care of keeping Vim on the same monitor, no
+! * matter if the secondary monitor is left or right of the primary
+! * monitor. */
+! wndpl.rcNormalPosition.right = wndpl.rcNormalPosition.left + win_width;
+! wndpl.rcNormalPosition.bottom = wndpl.rcNormalPosition.top + win_height;
+
+! /* If the window is going off the screen, move it on to the screen. */
+ if ((direction & RESIZE_HOR)
+! && wndpl.rcNormalPosition.right > workarea_rect.right)
+! OffsetRect(&wndpl.rcNormalPosition,
+! workarea_rect.right - wndpl.rcNormalPosition.right, 0);
+
+! if ((direction & RESIZE_HOR)
+! && wndpl.rcNormalPosition.left < workarea_rect.left)
+! OffsetRect(&wndpl.rcNormalPosition,
+! workarea_rect.left - wndpl.rcNormalPosition.left, 0);
+
+ if ((direction & RESIZE_VERT)
+! && wndpl.rcNormalPosition.bottom > workarea_rect.bottom)
+! OffsetRect(&wndpl.rcNormalPosition,
+! 0, workarea_rect.bottom - wndpl.rcNormalPosition.bottom);
+
+! if ((direction & RESIZE_VERT)
+! && wndpl.rcNormalPosition.top < workarea_rect.top)
+! OffsetRect(&wndpl.rcNormalPosition,
+! 0, workarea_rect.top - wndpl.rcNormalPosition.top);
+
+ /* set window position - we should use SetWindowPlacement rather than
+ * SetWindowPos as the MSDN docs say the coord systems returned by
+*** ../vim-7.3.392/src/version.c 2012-01-04 19:34:32.000000000 +0100
+--- src/version.c 2012-01-04 20:28:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 393,
+ /**/
+
+--
+I wonder, do vegetarians eat fruit bats?
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.394
+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.394
+Problem: When placing a mark while starting up a screen redraw messes up
+ the screen. (lith)
+Solution: Don't redraw while still starting up. (Christian Brabandt)
+Files: src/screen.c
+
+
+*** ../vim-7.3.393/src/screen.c 2011-09-02 14:07:31.000000000 +0200
+--- src/screen.c 2012-01-10 12:36:52.000000000 +0100
+***************
+*** 764,772 ****
+ doit = TRUE;
+ }
+
+! /* Return when there is nothing to do or screen updating already
+! * happening. */
+! if (!doit || updating_screen)
+ return;
+
+ /* update all windows that need updating */
+--- 764,776 ----
+ doit = TRUE;
+ }
+
+! /* Return when there is nothing to do, screen updating is already
+! * happening (recursive call) or still starting up. */
+! if (!doit || updating_screen
+! #ifdef FEAT_GUI
+! || gui.starting
+! #endif
+! || starting)
+ return;
+
+ /* update all windows that need updating */
+*** ../vim-7.3.393/src/version.c 2012-01-04 20:29:18.000000000 +0100
+--- src/version.c 2012-01-10 12:41:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 394,
+ /**/
+
+--
+It is illegal for anyone to try and stop a child from playfully jumping over
+puddles of water.
+ [real standing law in California, United States of America]
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.395
+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.395 (after 7.3.251)
+Problem: "dv?bar" in the last line deletes too much and breaks undo.
+Solution: Only adjust the cursor position when it's after the last line of
+ the buffer. Add a test. (Christian Brabandt)
+Files: src/ops.c, src/testdir/test43.in, src/testdir/test43.ok
+
+
+*** ../vim-7.3.394/src/ops.c 2011-09-21 17:33:49.000000000 +0200
+--- src/ops.c 2012-01-10 13:28:05.000000000 +0100
+***************
+*** 1961,1968 ****
+ /* Special case: gH<Del> deletes the last line. */
+ del_lines(1L, FALSE);
+ curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+! if (curwin->w_cursor.lnum > 1)
+! --curwin->w_cursor.lnum;
+ }
+ else
+ {
+--- 1962,1969 ----
+ /* Special case: gH<Del> deletes the last line. */
+ del_lines(1L, FALSE);
+ curwin->w_cursor = curpos; /* restore curwin->w_cursor */
+! if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+! curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+ }
+ else
+ {
+***************
+*** 4434,4440 ****
+ #endif
+
+ /*
+! * implementation of the format operator 'gq'
+ */
+ void
+ op_format(oap, keep_cursor)
+--- 4435,4441 ----
+ #endif
+
+ /*
+! * Implementation of the format operator 'gq'.
+ */
+ void
+ op_format(oap, keep_cursor)
+*** ../vim-7.3.394/src/testdir/test43.in 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test43.in 2012-01-10 13:41:13.000000000 +0100
+***************
+*** 13,19 ****
+ x:set magic
+ /\v(a)(b)\2\1\1/e
+ x/\V[ab]\(\[xy]\)\1
+! x:?^1?,$w! test.out
+ :qa!
+ ENDTEST
+
+--- 13,23 ----
+ x:set magic
+ /\v(a)(b)\2\1\1/e
+ x/\V[ab]\(\[xy]\)\1
+! x:$
+! :set undolevels=100
+! dv?bar?
+! Yup:"
+! :?^1?,$w! test.out
+ :qa!
+ ENDTEST
+
+***************
+*** 25,27 ****
+--- 29,33 ----
+ 6 x ^aa$ x
+ 7 (a)(b) abbaa
+ 8 axx [ab]xx
++ 9 foobar
++
+*** ../vim-7.3.394/src/testdir/test43.ok 2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test43.ok 2012-01-10 13:42:39.000000000 +0100
+***************
+*** 6,8 ****
+--- 6,11 ----
+ 6 x aa$ x
+ 7 (a)(b) abba
+ 8 axx ab]xx
++ 9 foobar
++ 9 foo
++
+*** ../vim-7.3.394/src/version.c 2012-01-10 12:42:05.000000000 +0100
+--- src/version.c 2012-01-10 13:30:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 395,
+ /**/
+
+--
+The Law, in its majestic equality, forbids the rich, as well as the
+poor, to sleep under the bridges, to beg in the streets, and to steal
+bread. -- Anatole France
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.396
+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.396
+Problem: After forcing an operator to be characterwise it can still become
+ linewise when spanning whole lines.
+Solution: Don't make the operator linewise when motion_force was set.
+ (Christian Brabandt)
+Files: src/ops.c
+
+
+*** ../vim-7.3.395/src/ops.c 2012-01-10 13:44:23.000000000 +0100
+--- src/ops.c 2012-01-10 13:28:05.000000000 +0100
+***************
+*** 1648,1653 ****
+--- 1648,1654 ----
+ && !oap->block_mode
+ #endif
+ && oap->line_count > 1
++ && oap->motion_force == NUL
+ && oap->op_type == OP_DELETE)
+ {
+ ptr = ml_get(oap->end.lnum) + oap->end.col;
+*** ../vim-7.3.395/src/version.c 2012-01-10 13:44:23.000000000 +0100
+--- src/version.c 2012-01-10 13:45:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 396,
+ /**/
+
+--
+Any sufficiently advanced technology is indistinguishable from magic.
+ Arthur C. Clarke
+Any sufficiently advanced bug is indistinguishable from a feature.
+ Rich Kulawiec
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.397
+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.397
+Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or
+ latin1.
+Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto)
+Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro
+
+
+*** ../vim-7.3.396/src/quickfix.c 2011-12-30 15:01:55.000000000 +0100
+--- src/quickfix.c 2012-01-10 16:18:51.000000000 +0100
+***************
+*** 3914,3919 ****
+--- 3914,3929 ----
+ regmatch.rm_ic = FALSE;
+ if (regmatch.regprog != NULL)
+ {
++ #ifdef FEAT_MBYTE
++ vimconv_T vc;
++
++ /* Help files are in utf-8 or latin1, convert lines when 'encoding'
++ * differs. */
++ vc.vc_type = CONV_NONE;
++ if (!enc_utf8)
++ convert_setup(&vc, (char_u *)"utf-8", p_enc);
++ #endif
++
+ /* create a new quickfix list */
+ qf_new_list(qi, *eap->cmdlinep);
+
+***************
+*** 3948,3968 ****
+ lnum = 1;
+ while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+ {
+! if (vim_regexec(®match, IObuff, (colnr_T)0))
+ {
+! int l = (int)STRLEN(IObuff);
+
+ /* remove trailing CR, LF, spaces, etc. */
+! while (l > 0 && IObuff[l - 1] <= ' ')
+! IObuff[--l] = NUL;
+
+ if (qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ fnames[fi],
+ 0,
+! IObuff,
+ lnum,
+! (int)(regmatch.startp[0] - IObuff)
+ + 1, /* col */
+ FALSE, /* vis_col */
+ NULL, /* search pattern */
+--- 3958,3990 ----
+ lnum = 1;
+ while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+ {
+! char_u *line = IObuff;
+! #ifdef FEAT_MBYTE
+! /* Convert a line if 'encoding' is not utf-8 and
+! * the line contains a non-ASCII character. */
+! if (vc.vc_type != CONV_NONE
+! && has_non_ascii(IObuff)) {
+! line = string_convert(&vc, IObuff, NULL);
+! if (line == NULL)
+! line = IObuff;
+! }
+! #endif
+!
+! if (vim_regexec(®match, line, (colnr_T)0))
+ {
+! int l = (int)STRLEN(line);
+
+ /* remove trailing CR, LF, spaces, etc. */
+! while (l > 0 && line[l - 1] <= ' ')
+! line[--l] = NUL;
+
+ if (qf_add_entry(qi, &prevp,
+ NULL, /* dir */
+ fnames[fi],
+ 0,
+! line,
+ lnum,
+! (int)(regmatch.startp[0] - line)
+ + 1, /* col */
+ FALSE, /* vis_col */
+ NULL, /* search pattern */
+***************
+*** 3972,3980 ****
+--- 3994,4010 ----
+ ) == FAIL)
+ {
+ got_int = TRUE;
++ #ifdef FEAT_MBYTE
++ if (line != IObuff)
++ vim_free(line);
++ #endif
+ break;
+ }
+ }
++ #ifdef FEAT_MBYTE
++ if (line != IObuff)
++ vim_free(line);
++ #endif
+ ++lnum;
+ line_breakcheck();
+ }
+***************
+*** 3984,3990 ****
+--- 4014,4025 ----
+ FreeWild(fcount, fnames);
+ }
+ }
++
+ vim_free(regmatch.regprog);
++ #ifdef FEAT_MBYTE
++ if (vc.vc_type != CONV_NONE)
++ convert_setup(&vc, NULL, NULL);
++ #endif
+
+ qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+ qi->qf_lists[qi->qf_curlist].qf_ptr =
+*** ../vim-7.3.396/src/spell.c 2011-09-02 14:18:14.000000000 +0200
+--- src/spell.c 2012-01-10 16:19:33.000000000 +0100
+***************
+*** 5020,5026 ****
+ static int str_equal __ARGS((char_u *s1, char_u *s2));
+ static void add_fromto __ARGS((spellinfo_T *spin, garray_T *gap, char_u *from, char_u *to));
+ static int sal_to_bool __ARGS((char_u *s));
+- static int has_non_ascii __ARGS((char_u *s));
+ static void spell_free_aff __ARGS((afffile_T *aff));
+ static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile));
+ static int get_affix_flags __ARGS((afffile_T *affile, char_u *afflist));
+--- 5020,5025 ----
+***************
+*** 6485,6507 ****
+ }
+
+ /*
+- * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
+- * When "s" is NULL FALSE is returned.
+- */
+- static int
+- has_non_ascii(s)
+- char_u *s;
+- {
+- char_u *p;
+-
+- if (s != NULL)
+- for (p = s; *p != NUL; ++p)
+- if (*p >= 128)
+- return TRUE;
+- return FALSE;
+- }
+-
+- /*
+ * Free the structure filled by spell_read_aff().
+ */
+ static void
+--- 6484,6489 ----
+*** ../vim-7.3.396/src/misc2.c 2011-12-08 17:49:31.000000000 +0100
+--- src/misc2.c 2012-01-10 16:25:53.000000000 +0100
+***************
+*** 6541,6543 ****
+--- 6541,6563 ----
+ #endif
+
+ #endif
++
++ #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \
++ || defined(FEAT_SPELL) || defined(PROTO)
++ /*
++ * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
++ * When "s" is NULL FALSE is returned.
++ */
++ int
++ has_non_ascii(s)
++ char_u *s;
++ {
++ char_u *p;
++
++ if (s != NULL)
++ for (p = s; *p != NUL; ++p)
++ if (*p >= 128)
++ return TRUE;
++ return FALSE;
++ }
++ #endif
+*** ../vim-7.3.396/src/proto/misc2.pro 2011-07-07 16:20:45.000000000 +0200
+--- src/proto/misc2.pro 2012-01-10 16:20:03.000000000 +0100
+***************
+*** 116,119 ****
+--- 116,120 ----
+ char_u *read_string __ARGS((FILE *fd, int cnt));
+ int put_bytes __ARGS((FILE *fd, long_u nr, int len));
+ void put_time __ARGS((FILE *fd, time_t the_time));
++ int has_non_ascii __ARGS((char_u *s));
+ /* vim: set ft=c : */
+*** ../vim-7.3.396/src/version.c 2012-01-10 13:46:18.000000000 +0100
+--- src/version.c 2012-01-10 16:26:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 397,
+ /**/
+
+--
+Biting someone with your natural teeth is "simple assault," while biting
+someone with your false teeth is "aggravated assault."
+ [real standing law in Louisana, United States of America]
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.398
+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.398
+Problem: When creating more than 10 location lists and adding items one by
+ one a previous location may be used. (Audrius Kažukauskas)
+Solution: Clear the location list completely when adding the tenth one.
+Files: src/quickfix.c
+
+
+*** ../vim-7.3.397/src/quickfix.c 2012-01-10 16:28:41.000000000 +0100
+--- src/quickfix.c 2012-01-10 16:58:52.000000000 +0100
+***************
+*** 899,906 ****
+ }
+ else
+ qi->qf_curlist = qi->qf_listcount++;
+! qi->qf_lists[qi->qf_curlist].qf_index = 0;
+! qi->qf_lists[qi->qf_curlist].qf_count = 0;
+ if (qf_title != NULL)
+ {
+ char_u *p = alloc((int)STRLEN(qf_title) + 2);
+--- 899,905 ----
+ }
+ else
+ qi->qf_curlist = qi->qf_listcount++;
+! vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T)));
+ if (qf_title != NULL)
+ {
+ char_u *p = alloc((int)STRLEN(qf_title) + 2);
+***************
+*** 909,916 ****
+ if (p != NULL)
+ sprintf((char *)p, ":%s", (char *)qf_title);
+ }
+- else
+- qi->qf_lists[qi->qf_curlist].qf_title = NULL;
+ }
+
+ /*
+--- 908,913 ----
+*** ../vim-7.3.397/src/version.c 2012-01-10 16:28:41.000000000 +0100
+--- src/version.c 2012-01-10 17:13:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 398,
+ /**/
+
+--
+Why don't cannibals eat clowns?
+Because they taste funny.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.399
+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.399
+Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro
+ Nakadaira)
+Solution: Ignore wildcard errors when the EW_NOTWILD flag is used.
+Files: src/misc1.c
+
+
+*** ../vim-7.3.398/src/misc1.c 2011-12-14 20:21:29.000000000 +0100
+--- src/misc1.c 2012-01-10 17:57:42.000000000 +0100
+***************
+*** 9103,9117 ****
+ }
+
+ /* compile the regexp into a program */
+! if (flags & EW_NOERROR)
+ ++emsg_silent;
+ regmatch.rm_ic = TRUE; /* Always ignore case */
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+! if (flags & EW_NOERROR)
+ --emsg_silent;
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL)
+ {
+ vim_free(buf);
+ return 0;
+--- 9103,9117 ----
+ }
+
+ /* compile the regexp into a program */
+! if (flags & (EW_NOERROR | EW_NOTWILD))
+ ++emsg_silent;
+ regmatch.rm_ic = TRUE; /* Always ignore case */
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+! if (flags & (EW_NOERROR | EW_NOTWILD))
+ --emsg_silent;
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0)
+ {
+ vim_free(buf);
+ return 0;
+***************
+*** 9179,9185 ****
+ * all entries found with "matchname". */
+ if ((p[0] != '.' || starts_with_dot)
+ && (matchname == NULL
+! || vim_regexec(®match, p, (colnr_T)0)
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), p, e - s) == 0)))
+ {
+--- 9179,9186 ----
+ * all entries found with "matchname". */
+ if ((p[0] != '.' || starts_with_dot)
+ && (matchname == NULL
+! || (regmatch.regprog != NULL
+! && vim_regexec(®match, p, (colnr_T)0))
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), p, e - s) == 0)))
+ {
+***************
+*** 9419,9428 ****
+ else
+ regmatch.rm_ic = FALSE; /* Don't ignore case */
+ #endif
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL)
+ {
+ vim_free(buf);
+ return 0;
+--- 9420,9433 ----
+ else
+ regmatch.rm_ic = FALSE; /* Don't ignore case */
+ #endif
++ if (flags & (EW_NOERROR | EW_NOTWILD))
++ ++emsg_silent;
+ regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
++ if (flags & (EW_NOERROR | EW_NOTWILD))
++ --emsg_silent;
+ vim_free(pat);
+
+! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0)
+ {
+ vim_free(buf);
+ return 0;
+***************
+*** 9452,9458 ****
+ if (dp == NULL)
+ break;
+ if ((dp->d_name[0] != '.' || starts_with_dot)
+! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0)
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+ {
+--- 9457,9464 ----
+ if (dp == NULL)
+ break;
+ if ((dp->d_name[0] != '.' || starts_with_dot)
+! && ((regmatch.regprog != NULL && vim_regexec(®match,
+! (char_u *)dp->d_name, (colnr_T)0))
+ || ((flags & EW_NOTWILD)
+ && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+ {
+*** ../vim-7.3.398/src/version.c 2012-01-10 17:13:48.000000000 +0100
+--- src/version.c 2012-01-10 18:21:05.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 399,
+ /**/
+
+--
+Close your shells, or I'll kill -9 you
+Tomorrow I'll quota you
+Remember the disks'll always be full
+And then while I'm away
+I'll write ~ everyday
+And I'll send-pr all my buggings to you.
+ [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.400
+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.400
+Problem: Compiler warnings for shadowed variables.
+Solution: Remove or rename the variables.
+Files: src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c,
+ src/getchar.c, src/message.c, src/misc2.c, src/move.c,
+ src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c,
+ src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c
+
+
+*** ../vim-7.3.399/src/charset.c 2010-08-15 21:57:25.000000000 +0200
+--- src/charset.c 2012-01-10 21:55:50.000000000 +0100
+***************
+*** 463,503 ****
+ if (enc_utf8)
+ {
+ int c = utf_ptr2char(STR_PTR(i));
+! int ol = utf_ptr2len(STR_PTR(i));
+ int lc = utf_tolower(c);
+
+ /* Only replace the character when it is not an invalid
+ * sequence (ASCII character or more than one byte) and
+ * utf_tolower() doesn't return the original character. */
+! if ((c < 0x80 || ol > 1) && c != lc)
+ {
+! int nl = utf_char2len(lc);
+
+ /* If the byte length changes need to shift the following
+ * characters forward or backward. */
+! if (ol != nl)
+ {
+! if (nl > ol)
+ {
+! if (buf == NULL ? ga_grow(&ga, nl - ol + 1) == FAIL
+! : len + nl - ol >= buflen)
+ {
+ /* out of memory, keep old char */
+ lc = c;
+! nl = ol;
+ }
+ }
+! if (ol != nl)
+ {
+ if (buf == NULL)
+ {
+! STRMOVE(GA_PTR(i) + nl, GA_PTR(i) + ol);
+! ga.ga_len += nl - ol;
+ }
+ else
+ {
+! STRMOVE(buf + i + nl, buf + i + ol);
+! len += nl - ol;
+ }
+ }
+ }
+--- 463,504 ----
+ if (enc_utf8)
+ {
+ int c = utf_ptr2char(STR_PTR(i));
+! int olen = utf_ptr2len(STR_PTR(i));
+ int lc = utf_tolower(c);
+
+ /* Only replace the character when it is not an invalid
+ * sequence (ASCII character or more than one byte) and
+ * utf_tolower() doesn't return the original character. */
+! if ((c < 0x80 || olen > 1) && c != lc)
+ {
+! int nlen = utf_char2len(lc);
+
+ /* If the byte length changes need to shift the following
+ * characters forward or backward. */
+! if (olen != nlen)
+ {
+! if (nlen > olen)
+ {
+! if (buf == NULL
+! ? ga_grow(&ga, nlen - olen + 1) == FAIL
+! : len + nlen - olen >= buflen)
+ {
+ /* out of memory, keep old char */
+ lc = c;
+! nlen = olen;
+ }
+ }
+! if (olen != nlen)
+ {
+ if (buf == NULL)
+ {
+! STRMOVE(GA_PTR(i) + nlen, GA_PTR(i) + olen);
+! ga.ga_len += nlen - olen;
+ }
+ else
+ {
+! STRMOVE(buf + i + nlen, buf + i + olen);
+! len += nlen - olen;
+ }
+ }
+ }
+*** ../vim-7.3.399/src/digraph.c 2010-08-15 21:57:28.000000000 +0200
+--- src/digraph.c 2012-01-10 21:57:16.000000000 +0100
+***************
+*** 2080,2092 ****
+ /*
+ * Lookup the pair "char1", "char2" in the digraph tables.
+ * If no match, return "char2".
+! * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80.
+ */
+ static int
+! getexactdigraph(char1, char2, meta)
+ int char1;
+ int char2;
+! int meta;
+ {
+ int i;
+ int retval = 0;
+--- 2080,2092 ----
+ /*
+ * Lookup the pair "char1", "char2" in the digraph tables.
+ * If no match, return "char2".
+! * If "meta_char" is TRUE and "char1" is a space, return "char2" | 0x80.
+ */
+ static int
+! getexactdigraph(char1, char2, meta_char)
+ int char1;
+ int char2;
+! int meta_char;
+ {
+ int i;
+ int retval = 0;
+***************
+*** 2159,2165 ****
+
+ if (retval == 0) /* digraph deleted or not found */
+ {
+! if (char1 == ' ' && meta) /* <space> <char> --> meta-char */
+ return (char2 | 0x80);
+ return char2;
+ }
+--- 2159,2165 ----
+
+ if (retval == 0) /* digraph deleted or not found */
+ {
+! if (char1 == ' ' && meta_char) /* <space> <char> --> meta-char */
+ return (char2 | 0x80);
+ return char2;
+ }
+***************
+*** 2171,2186 ****
+ * Allow for both char1-char2 and char2-char1
+ */
+ int
+! getdigraph(char1, char2, meta)
+ int char1;
+ int char2;
+! int meta;
+ {
+ int retval;
+
+! if (((retval = getexactdigraph(char1, char2, meta)) == char2)
+ && (char1 != char2)
+! && ((retval = getexactdigraph(char2, char1, meta)) == char1))
+ return char2;
+ return retval;
+ }
+--- 2171,2186 ----
+ * Allow for both char1-char2 and char2-char1
+ */
+ int
+! getdigraph(char1, char2, meta_char)
+ int char1;
+ int char2;
+! int meta_char;
+ {
+ int retval;
+
+! if (((retval = getexactdigraph(char1, char2, meta_char)) == char2)
+ && (char1 != char2)
+! && ((retval = getexactdigraph(char2, char1, meta_char)) == char1))
+ return char2;
+ return retval;
+ }
+*** ../vim-7.3.399/src/edit.c 2011-12-23 13:14:58.000000000 +0100
+--- src/edit.c 2012-01-10 21:58:28.000000000 +0100
+***************
+*** 4003,4026 ****
+ ins_compl_add_dict(dict)
+ dict_T *dict;
+ {
+! dictitem_T *refresh;
+! dictitem_T *words;
+
+ /* Check for optional "refresh" item. */
+ compl_opt_refresh_always = FALSE;
+! refresh = dict_find(dict, (char_u *)"refresh", 7);
+! if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
+ {
+! char_u *v = refresh->di_tv.vval.v_string;
+
+ if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
+ compl_opt_refresh_always = TRUE;
+ }
+
+ /* Add completions from a "words" list. */
+! words = dict_find(dict, (char_u *)"words", 5);
+! if (words != NULL && words->di_tv.v_type == VAR_LIST)
+! ins_compl_add_list(words->di_tv.vval.v_list);
+ }
+
+ /*
+--- 4003,4026 ----
+ ins_compl_add_dict(dict)
+ dict_T *dict;
+ {
+! dictitem_T *di_refresh;
+! dictitem_T *di_words;
+
+ /* Check for optional "refresh" item. */
+ compl_opt_refresh_always = FALSE;
+! di_refresh = dict_find(dict, (char_u *)"refresh", 7);
+! if (di_refresh != NULL && di_refresh->di_tv.v_type == VAR_STRING)
+ {
+! char_u *v = di_refresh->di_tv.vval.v_string;
+
+ if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
+ compl_opt_refresh_always = TRUE;
+ }
+
+ /* Add completions from a "words" list. */
+! di_words = dict_find(dict, (char_u *)"words", 5);
+! if (di_words != NULL && di_words->di_tv.v_type == VAR_LIST)
+! ins_compl_add_list(di_words->di_tv.vval.v_list);
+ }
+
+ /*
+*** ../vim-7.3.399/src/eval.c 2012-01-04 14:35:31.000000000 +0100
+--- src/eval.c 2012-01-10 22:00:50.000000000 +0100
+***************
+*** 6573,6587 ****
+
+ /*
+ * Join list "l" into a string in "*gap", using separator "sep".
+! * When "echo" is TRUE use String as echoed, otherwise as inside a List.
+ * Return FAIL or OK.
+ */
+ static int
+! list_join(gap, l, sep, echo, copyID)
+ garray_T *gap;
+ list_T *l;
+ char_u *sep;
+! int echo;
+ int copyID;
+ {
+ int first = TRUE;
+--- 6573,6587 ----
+
+ /*
+ * Join list "l" into a string in "*gap", using separator "sep".
+! * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
+ * Return FAIL or OK.
+ */
+ static int
+! list_join(gap, l, sep, echo_style, copyID)
+ garray_T *gap;
+ list_T *l;
+ char_u *sep;
+! int echo_style;
+ int copyID;
+ {
+ int first = TRUE;
+***************
+*** 6597,6603 ****
+ else
+ ga_concat(gap, sep);
+
+! if (echo)
+ s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+ else
+ s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+--- 6597,6603 ----
+ else
+ ga_concat(gap, sep);
+
+! if (echo_style)
+ s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+ else
+ s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+***************
+*** 17893,17899 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+! char_u *instr;
+ char_u *fromstr;
+ char_u *tostr;
+ char_u *p;
+--- 17893,17899 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+! char_u *in_str;
+ char_u *fromstr;
+ char_u *tostr;
+ char_u *p;
+***************
+*** 17910,17916 ****
+ char_u buf2[NUMBUFLEN];
+ garray_T ga;
+
+! instr = get_tv_string(&argvars[0]);
+ fromstr = get_tv_string_buf_chk(&argvars[1], buf);
+ tostr = get_tv_string_buf_chk(&argvars[2], buf2);
+
+--- 17910,17916 ----
+ char_u buf2[NUMBUFLEN];
+ garray_T ga;
+
+! in_str = get_tv_string(&argvars[0]);
+ fromstr = get_tv_string_buf_chk(&argvars[1], buf);
+ tostr = get_tv_string_buf_chk(&argvars[2], buf2);
+
+***************
+*** 17936,17954 ****
+ }
+
+ /* fromstr and tostr have to contain the same number of chars */
+! while (*instr != NUL)
+ {
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+! inlen = (*mb_ptr2len)(instr);
+! cpstr = instr;
+ cplen = inlen;
+ idx = 0;
+ for (p = fromstr; *p != NUL; p += fromlen)
+ {
+ fromlen = (*mb_ptr2len)(p);
+! if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0)
+ {
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+--- 17936,17954 ----
+ }
+
+ /* fromstr and tostr have to contain the same number of chars */
+! while (*in_str != NUL)
+ {
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+! inlen = (*mb_ptr2len)(in_str);
+! cpstr = in_str;
+ cplen = inlen;
+ idx = 0;
+ for (p = fromstr; *p != NUL; p += fromlen)
+ {
+ fromlen = (*mb_ptr2len)(p);
+! if (fromlen == inlen && STRNCMP(in_str, p, inlen) == 0)
+ {
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+***************
+*** 17967,17977 ****
+ ++idx;
+ }
+
+! if (first && cpstr == instr)
+ {
+ /* Check that fromstr and tostr have the same number of
+ * (multi-byte) characters. Done only once when a character
+! * of instr doesn't appear in fromstr. */
+ first = FALSE;
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+--- 17967,17977 ----
+ ++idx;
+ }
+
+! if (first && cpstr == in_str)
+ {
+ /* Check that fromstr and tostr have the same number of
+ * (multi-byte) characters. Done only once when a character
+! * of in_str doesn't appear in fromstr. */
+ first = FALSE;
+ for (p = tostr; *p != NUL; p += tolen)
+ {
+***************
+*** 17986,18003 ****
+ mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
+ ga.ga_len += cplen;
+
+! instr += inlen;
+ }
+ else
+ #endif
+ {
+ /* When not using multi-byte chars we can do it faster. */
+! p = vim_strchr(fromstr, *instr);
+ if (p != NULL)
+ ga_append(&ga, tostr[p - fromstr]);
+ else
+! ga_append(&ga, *instr);
+! ++instr;
+ }
+ }
+
+--- 17986,18003 ----
+ mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
+ ga.ga_len += cplen;
+
+! in_str += inlen;
+ }
+ else
+ #endif
+ {
+ /* When not using multi-byte chars we can do it faster. */
+! p = vim_strchr(fromstr, *in_str);
+ if (p != NULL)
+ ga_append(&ga, tostr[p - fromstr]);
+ else
+! ga_append(&ga, *in_str);
+! ++in_str;
+ }
+ }
+
+*** ../vim-7.3.399/src/fold.c 2011-08-26 16:12:55.000000000 +0200
+--- src/fold.c 2012-01-10 22:01:26.000000000 +0100
+***************
+*** 1033,1042 ****
+ * Init the fold info in a new window.
+ */
+ void
+! foldInitWin(newwin)
+! win_T *newwin;
+ {
+! ga_init2(&newwin->w_folds, (int)sizeof(fold_T), 10);
+ }
+
+ /* find_wl_entry() {{{2 */
+--- 1033,1042 ----
+ * Init the fold info in a new window.
+ */
+ void
+! foldInitWin(new_win)
+! win_T *new_win;
+ {
+! ga_init2(&new_win->w_folds, (int)sizeof(fold_T), 10);
+ }
+
+ /* find_wl_entry() {{{2 */
+*** ../vim-7.3.399/src/getchar.c 2011-12-23 14:54:01.000000000 +0100
+--- src/getchar.c 2012-01-10 22:02:30.000000000 +0100
+***************
+*** 418,429 ****
+
+ /*
+ * Remove the contents of the stuff buffer and the mapped characters in the
+! * typeahead buffer (used in case of an error). If 'typeahead' is true,
+ * flush all typeahead characters (used when interrupted by a CTRL-C).
+ */
+ void
+! flush_buffers(typeahead)
+! int typeahead;
+ {
+ init_typebuf();
+
+--- 418,429 ----
+
+ /*
+ * Remove the contents of the stuff buffer and the mapped characters in the
+! * typeahead buffer (used in case of an error). If "flush_typeahead" is true,
+ * flush all typeahead characters (used when interrupted by a CTRL-C).
+ */
+ void
+! flush_buffers(flush_typeahead)
+! int flush_typeahead;
+ {
+ init_typebuf();
+
+***************
+*** 431,437 ****
+ while (read_stuff(TRUE) != NUL)
+ ;
+
+! if (typeahead) /* remove all typeahead */
+ {
+ /*
+ * We have to get all characters, because we may delete the first part
+--- 431,437 ----
+ while (read_stuff(TRUE) != NUL)
+ ;
+
+! if (flush_typeahead) /* remove all typeahead */
+ {
+ /*
+ * We have to get all characters, because we may delete the first part
+*** ../vim-7.3.399/src/message.c 2011-12-30 14:14:16.000000000 +0100
+--- src/message.c 2012-01-10 22:03:56.000000000 +0100
+***************
+*** 2487,2493 ****
+ #ifdef FEAT_CON_DIALOG
+ int retval = FALSE;
+ #endif
+! int scroll;
+ msgchunk_T *mp_last = NULL;
+ msgchunk_T *mp;
+ int i;
+--- 2487,2493 ----
+ #ifdef FEAT_CON_DIALOG
+ int retval = FALSE;
+ #endif
+! int toscroll;
+ msgchunk_T *mp_last = NULL;
+ msgchunk_T *mp;
+ int i;
+***************
+*** 2538,2586 ****
+ }
+ #endif
+
+! scroll = 0;
+ switch (c)
+ {
+ case BS: /* scroll one line back */
+ case K_BS:
+ case 'k':
+ case K_UP:
+! scroll = -1;
+ break;
+
+ case CAR: /* one extra line */
+ case NL:
+ case 'j':
+ case K_DOWN:
+! scroll = 1;
+ break;
+
+ case 'u': /* Up half a page */
+! scroll = -(Rows / 2);
+ break;
+
+ case 'd': /* Down half a page */
+! scroll = Rows / 2;
+ break;
+
+ case 'b': /* one page back */
+ case K_PAGEUP:
+! scroll = -(Rows - 1);
+ break;
+
+ case ' ': /* one extra page */
+ case 'f':
+ case K_PAGEDOWN:
+ case K_LEFTMOUSE:
+! scroll = Rows - 1;
+ break;
+
+ case 'g': /* all the way back to the start */
+! scroll = -999999;
+ break;
+
+ case 'G': /* all the way to the end */
+! scroll = 999999;
+ lines_left = 999999;
+ break;
+
+--- 2538,2586 ----
+ }
+ #endif
+
+! toscroll = 0;
+ switch (c)
+ {
+ case BS: /* scroll one line back */
+ case K_BS:
+ case 'k':
+ case K_UP:
+! toscroll = -1;
+ break;
+
+ case CAR: /* one extra line */
+ case NL:
+ case 'j':
+ case K_DOWN:
+! toscroll = 1;
+ break;
+
+ case 'u': /* Up half a page */
+! toscroll = -(Rows / 2);
+ break;
+
+ case 'd': /* Down half a page */
+! toscroll = Rows / 2;
+ break;
+
+ case 'b': /* one page back */
+ case K_PAGEUP:
+! toscroll = -(Rows - 1);
+ break;
+
+ case ' ': /* one extra page */
+ case 'f':
+ case K_PAGEDOWN:
+ case K_LEFTMOUSE:
+! toscroll = Rows - 1;
+ break;
+
+ case 'g': /* all the way back to the start */
+! toscroll = -999999;
+ break;
+
+ case 'G': /* all the way to the end */
+! toscroll = 999999;
+ lines_left = 999999;
+ break;
+
+***************
+*** 2633,2641 ****
+ continue;
+ }
+
+! if (scroll != 0)
+ {
+! if (scroll < 0)
+ {
+ /* go to start of last line */
+ if (mp_last == NULL)
+--- 2633,2641 ----
+ continue;
+ }
+
+! if (toscroll != 0)
+ {
+! if (toscroll < 0)
+ {
+ /* go to start of last line */
+ if (mp_last == NULL)
+***************
+*** 2653,2659 ****
+ if (mp != NULL && mp->sb_prev != NULL)
+ {
+ /* Find line to be displayed at top. */
+! for (i = 0; i > scroll; --i)
+ {
+ if (mp == NULL || mp->sb_prev == NULL)
+ break;
+--- 2653,2659 ----
+ if (mp != NULL && mp->sb_prev != NULL)
+ {
+ /* Find line to be displayed at top. */
+! for (i = 0; i > toscroll; --i)
+ {
+ if (mp == NULL || mp->sb_prev == NULL)
+ break;
+***************
+*** 2664,2670 ****
+ mp_last = msg_sb_start(mp_last->sb_prev);
+ }
+
+! if (scroll == -1 && screen_ins_lines(0, 0, 1,
+ (int)Rows, NULL) == OK)
+ {
+ /* display line at top */
+--- 2664,2670 ----
+ mp_last = msg_sb_start(mp_last->sb_prev);
+ }
+
+! if (toscroll == -1 && screen_ins_lines(0, 0, 1,
+ (int)Rows, NULL) == OK)
+ {
+ /* display line at top */
+***************
+*** 2680,2692 ****
+ ++msg_scrolled;
+ }
+ }
+! scroll = 0;
+ }
+ }
+ else
+ {
+ /* First display any text that we scrolled back. */
+! while (scroll > 0 && mp_last != NULL)
+ {
+ /* scroll up, display line at bottom */
+ msg_scroll_up();
+--- 2680,2692 ----
+ ++msg_scrolled;
+ }
+ }
+! toscroll = 0;
+ }
+ }
+ else
+ {
+ /* First display any text that we scrolled back. */
+! while (toscroll > 0 && mp_last != NULL)
+ {
+ /* scroll up, display line at bottom */
+ msg_scroll_up();
+***************
+*** 2694,2704 ****
+ screen_fill((int)Rows - 2, (int)Rows - 1, 0,
+ (int)Columns, ' ', ' ', 0);
+ mp_last = disp_sb_line((int)Rows - 2, mp_last);
+! --scroll;
+ }
+ }
+
+! if (scroll <= 0)
+ {
+ /* displayed the requested text, more prompt again */
+ screen_fill((int)Rows - 1, (int)Rows, 0,
+--- 2694,2704 ----
+ screen_fill((int)Rows - 2, (int)Rows - 1, 0,
+ (int)Columns, ' ', ' ', 0);
+ mp_last = disp_sb_line((int)Rows - 2, mp_last);
+! --toscroll;
+ }
+ }
+
+! if (toscroll <= 0)
+ {
+ /* displayed the requested text, more prompt again */
+ screen_fill((int)Rows - 1, (int)Rows, 0,
+***************
+*** 2708,2714 ****
+ }
+
+ /* display more text, return to caller */
+! lines_left = scroll;
+ }
+
+ break;
+--- 2708,2714 ----
+ }
+
+ /* display more text, return to caller */
+! lines_left = toscroll;
+ }
+
+ break;
+*** ../vim-7.3.399/src/misc2.c 2012-01-10 16:28:41.000000000 +0100
+--- src/misc2.c 2012-01-10 22:04:25.000000000 +0100
+***************
+*** 1559,1565 ****
+ if (enc_utf8)
+ {
+ int c, uc;
+! int nl;
+ char_u *s;
+
+ c = utf_ptr2char(p);
+--- 1559,1565 ----
+ if (enc_utf8)
+ {
+ int c, uc;
+! int newl;
+ char_u *s;
+
+ c = utf_ptr2char(p);
+***************
+*** 1568,1588 ****
+ /* Reallocate string when byte count changes. This is rare,
+ * thus it's OK to do another malloc()/free(). */
+ l = utf_ptr2len(p);
+! nl = utf_char2len(uc);
+! if (nl != l)
+ {
+! s = alloc((unsigned)STRLEN(res) + 1 + nl - l);
+ if (s == NULL)
+ break;
+ mch_memmove(s, res, p - res);
+! STRCPY(s + (p - res) + nl, p + l);
+ p = s + (p - res);
+ vim_free(res);
+ res = s;
+ }
+
+ utf_char2bytes(uc, p);
+! p += nl;
+ }
+ else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
+ p += l; /* skip multi-byte character */
+--- 1568,1588 ----
+ /* Reallocate string when byte count changes. This is rare,
+ * thus it's OK to do another malloc()/free(). */
+ l = utf_ptr2len(p);
+! newl = utf_char2len(uc);
+! if (newl != l)
+ {
+! s = alloc((unsigned)STRLEN(res) + 1 + newl - l);
+ if (s == NULL)
+ break;
+ mch_memmove(s, res, p - res);
+! STRCPY(s + (p - res) + newl, p + l);
+ p = s + (p - res);
+ vim_free(res);
+ res = s;
+ }
+
+ utf_char2bytes(uc, p);
+! p += newl;
+ }
+ else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
+ p += l; /* skip multi-byte character */
+*** ../vim-7.3.399/src/move.c 2011-02-01 18:01:06.000000000 +0100
+--- src/move.c 2012-01-10 22:05:22.000000000 +0100
+***************
+*** 926,933 ****
+ * Also updates curwin->w_leftcol.
+ */
+ void
+! curs_columns(scroll)
+! int scroll; /* when TRUE, may scroll horizontally */
+ {
+ int diff;
+ int extra; /* offset for first screen line */
+--- 926,933 ----
+ * Also updates curwin->w_leftcol.
+ */
+ void
+! curs_columns(may_scroll)
+! int may_scroll; /* when TRUE, may scroll horizontally */
+ {
+ int diff;
+ int extra; /* offset for first screen line */
+***************
+*** 1014,1020 ****
+ /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
+ * is not folded.
+ * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
+! else if (scroll
+ #ifdef FEAT_FOLDING
+ && !curwin->w_cline_folded
+ #endif
+--- 1014,1020 ----
+ /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
+ * is not folded.
+ * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
+! else if (may_scroll
+ #ifdef FEAT_FOLDING
+ && !curwin->w_cline_folded
+ #endif
+*** ../vim-7.3.399/src/netbeans.c 2011-10-20 21:58:20.000000000 +0200
+--- src/netbeans.c 2012-01-10 22:16:26.000000000 +0100
+***************
+*** 1395,1401 ****
+ int cmdno,
+ char_u *args) /* points to space before arguments or NUL */
+ {
+! int doupdate = 0;
+ long off = 0;
+ nbbuf_T *buf = nb_get_buf(bufno);
+ static int skip = 0;
+--- 1395,1401 ----
+ int cmdno,
+ char_u *args) /* points to space before arguments or NUL */
+ {
+! int do_update = 0;
+ long off = 0;
+ nbbuf_T *buf = nb_get_buf(bufno);
+ static int skip = 0;
+***************
+*** 1600,1606 ****
+ last.lnum, last.col));
+ del_from_lnum = first.lnum;
+ del_to_lnum = last.lnum;
+! doupdate = 1;
+
+ /* Get the position of the first byte after the deleted
+ * section. "next" is NULL when deleting to the end of the
+--- 1600,1606 ----
+ last.lnum, last.col));
+ del_from_lnum = first.lnum;
+ del_to_lnum = last.lnum;
+! do_update = 1;
+
+ /* Get the position of the first byte after the deleted
+ * section. "next" is NULL when deleting to the end of the
+***************
+*** 1777,1783 ****
+ lnum = lnum_start;
+
+ /* Loop over the "\n" separated lines of the argument. */
+! doupdate = 1;
+ while (*args != NUL)
+ {
+ nl = vim_strchr(args, '\n');
+--- 1777,1783 ----
+ lnum = lnum_start;
+
+ /* Loop over the "\n" separated lines of the argument. */
+! do_update = 1;
+ while (*args != NUL)
+ {
+ nl = vim_strchr(args, '\n');
+***************
+*** 1992,1998 ****
+ EMSG("E640: invalid buffer identifier in initDone");
+ return FAIL;
+ }
+! doupdate = 1;
+ buf->initDone = TRUE;
+ nb_set_curbuf(buf->bufp);
+ #if defined(FEAT_AUTOCMD)
+--- 1992,1998 ----
+ EMSG("E640: invalid buffer identifier in initDone");
+ return FAIL;
+ }
+! do_update = 1;
+ buf->initDone = TRUE;
+ nb_set_curbuf(buf->bufp);
+ #if defined(FEAT_AUTOCMD)
+***************
+*** 2081,2087 ****
+ ECMD_HIDE + ECMD_OLDBUF, curwin);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+! doupdate = 1;
+ #if defined(FEAT_TITLE)
+ maketitle();
+ #endif
+--- 2081,2087 ----
+ ECMD_HIDE + ECMD_OLDBUF, curwin);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+! do_update = 1;
+ #if defined(FEAT_TITLE)
+ maketitle();
+ #endif
+***************
+*** 2109,2115 ****
+ exarg.forceit = FALSE;
+ dosetvisible = TRUE;
+ goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
+! doupdate = 1;
+ dosetvisible = FALSE;
+
+ #ifdef FEAT_GUI
+--- 2109,2115 ----
+ exarg.forceit = FALSE;
+ dosetvisible = TRUE;
+ goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
+! do_update = 1;
+ dosetvisible = FALSE;
+
+ #ifdef FEAT_GUI
+***************
+*** 2309,2315 ****
+ buf->bufp->b_fnum, TRUE);
+ buf->bufp = NULL;
+ buf->initDone = FALSE;
+! doupdate = 1;
+ /* =====================================================================*/
+ }
+ else if (streq((char *)cmd, "setStyle")) /* obsolete... */
+--- 2309,2315 ----
+ buf->bufp->b_fnum, TRUE);
+ buf->bufp = NULL;
+ buf->initDone = FALSE;
+! do_update = 1;
+ /* =====================================================================*/
+ }
+ else if (streq((char *)cmd, "setStyle")) /* obsolete... */
+***************
+*** 2400,2406 ****
+ return FAIL;
+ }
+
+! doupdate = 1;
+
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+--- 2400,2406 ----
+ return FAIL;
+ }
+
+! do_update = 1;
+
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+***************
+*** 2448,2454 ****
+ nbdebug((" invalid buffer identifier in removeAnno\n"));
+ return FAIL;
+ }
+! doupdate = 1;
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+ args = (char_u *)cp;
+--- 2448,2454 ----
+ nbdebug((" invalid buffer identifier in removeAnno\n"));
+ return FAIL;
+ }
+! do_update = 1;
+ cp = (char *)args;
+ serNum = strtol(cp, &cp, 10);
+ args = (char_u *)cp;
+***************
+*** 2493,2499 ****
+ len = strtol(cp, NULL, 10);
+ args = (char_u *)cp;
+ pos = off2pos(buf->bufp, off);
+! doupdate = 1;
+ if (!pos)
+ nbdebug((" no such start pos in %s, %ld\n", cmd, off));
+ else
+--- 2493,2499 ----
+ len = strtol(cp, NULL, 10);
+ args = (char_u *)cp;
+ pos = off2pos(buf->bufp, off);
+! do_update = 1;
+ if (!pos)
+ nbdebug((" no such start pos in %s, %ld\n", cmd, off));
+ else
+***************
+*** 2555,2561 ****
+ inAtomic = 0;
+ if (needupdate)
+ {
+! doupdate = 1;
+ needupdate = 0;
+ }
+ /* =====================================================================*/
+--- 2555,2561 ----
+ inAtomic = 0;
+ if (needupdate)
+ {
+! do_update = 1;
+ needupdate = 0;
+ }
+ /* =====================================================================*/
+***************
+*** 2636,2653 ****
+ * Unrecognized command is ignored.
+ */
+ }
+! if (inAtomic && doupdate)
+ {
+ needupdate = 1;
+! doupdate = 0;
+ }
+
+ /*
+ * Is this needed? I moved the netbeans_Xt_connect() later during startup
+ * and it may no longer be necessary. If its not needed then needupdate
+! * and doupdate can also be removed.
+ */
+! if (buf != NULL && buf->initDone && doupdate)
+ {
+ update_screen(NOT_VALID);
+ setcursor();
+--- 2636,2653 ----
+ * Unrecognized command is ignored.
+ */
+ }
+! if (inAtomic && do_update)
+ {
+ needupdate = 1;
+! do_update = 0;
+ }
+
+ /*
+ * Is this needed? I moved the netbeans_Xt_connect() later during startup
+ * and it may no longer be necessary. If its not needed then needupdate
+! * and do_update can also be removed.
+ */
+! if (buf != NULL && buf->initDone && do_update)
+ {
+ update_screen(NOT_VALID);
+ setcursor();
+*** ../vim-7.3.399/src/option.c 2012-01-04 19:34:32.000000000 +0100
+--- src/option.c 2012-01-10 22:06:03.000000000 +0100
+***************
+*** 8584,8591 ****
+ long_u flags;
+ {
+ /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
+! int clear = (flags & P_RCLR) == P_RCLR;
+! int all = ((flags & P_RALL) == P_RALL || clear);
+
+ #ifdef FEAT_WINDOWS
+ if ((flags & P_RSTAT) || all) /* mark all status lines dirty */
+--- 8584,8591 ----
+ long_u flags;
+ {
+ /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
+! int doclear = (flags & P_RCLR) == P_RCLR;
+! int all = ((flags & P_RALL) == P_RALL || doclear);
+
+ #ifdef FEAT_WINDOWS
+ if ((flags & P_RSTAT) || all) /* mark all status lines dirty */
+***************
+*** 8596,8602 ****
+ changed_window_setting();
+ if (flags & P_RBUF)
+ redraw_curbuf_later(NOT_VALID);
+! if (clear)
+ redraw_all_later(CLEAR);
+ else if (all)
+ redraw_all_later(NOT_VALID);
+--- 8596,8602 ----
+ changed_window_setting();
+ if (flags & P_RBUF)
+ redraw_curbuf_later(NOT_VALID);
+! if (doclear)
+ redraw_all_later(CLEAR);
+ else if (all)
+ redraw_all_later(NOT_VALID);
+*** ../vim-7.3.399/src/os_unix.c 2011-10-20 21:09:25.000000000 +0200
+--- src/os_unix.c 2012-01-10 21:48:49.000000000 +0100
+***************
+*** 3884,3890 ****
+ char_u *p_shcf_copy = NULL;
+ int i;
+ char_u *p;
+- char_u *s;
+ int inquote;
+ int pty_master_fd = -1; /* for pty's */
+ # ifdef FEAT_GUI
+--- 3884,3889 ----
+***************
+*** 3963,3968 ****
+--- 3962,3969 ----
+ }
+ if (cmd != NULL)
+ {
++ char_u *s;
++
+ if (extra_shell_arg != NULL)
+ argv[argc++] = (char *)extra_shell_arg;
+
+***************
+*** 4325,4331 ****
+ linenr_T lnum = curbuf->b_op_start.lnum;
+ int written = 0;
+ char_u *lp = ml_get(lnum);
+- char_u *s;
+ size_t l;
+
+ close(fromshell_fd);
+--- 4326,4331 ----
+***************
+*** 4339,4345 ****
+ len = write(toshell_fd, "", (size_t)1);
+ else
+ {
+! s = vim_strchr(lp + written, NL);
+ len = write(toshell_fd, (char *)lp + written,
+ s == NULL ? l
+ : (size_t)(s - (lp + written)));
+--- 4339,4346 ----
+ len = write(toshell_fd, "", (size_t)1);
+ else
+ {
+! char_u *s = vim_strchr(lp + written, NL);
+!
+ len = write(toshell_fd, (char *)lp + written,
+ s == NULL ? l
+ : (size_t)(s - (lp + written)));
+*** ../vim-7.3.399/src/screen.c 2012-01-10 12:42:05.000000000 +0100
+--- src/screen.c 2012-01-10 22:06:51.000000000 +0100
+***************
+*** 7849,7863 ****
+
+ /*
+ * screen_valid - allocate screen buffers if size changed
+! * If "clear" is TRUE: clear screen if it has been resized.
+ * Returns TRUE if there is a valid screen to write to.
+ * Returns FALSE when starting up and screen not initialized yet.
+ */
+ int
+! screen_valid(clear)
+! int clear;
+ {
+! screenalloc(clear); /* allocate screen buffers if size changed */
+ return (ScreenLines != NULL);
+ }
+
+--- 7849,7863 ----
+
+ /*
+ * screen_valid - allocate screen buffers if size changed
+! * If "doclear" is TRUE: clear screen if it has been resized.
+ * Returns TRUE if there is a valid screen to write to.
+ * Returns FALSE when starting up and screen not initialized yet.
+ */
+ int
+! screen_valid(doclear)
+! int doclear;
+ {
+! screenalloc(doclear); /* allocate screen buffers if size changed */
+ return (ScreenLines != NULL);
+ }
+
+***************
+*** 7872,7879 ****
+ * final size of the shell is needed.
+ */
+ void
+! screenalloc(clear)
+! int clear;
+ {
+ int new_row, old_row;
+ #ifdef FEAT_GUI
+--- 7872,7879 ----
+ * final size of the shell is needed.
+ */
+ void
+! screenalloc(doclear)
+! int doclear;
+ {
+ int new_row, old_row;
+ #ifdef FEAT_GUI
+***************
+*** 8069,8075 ****
+ * (used when resizing the window at the "--more--" prompt or when
+ * executing an external command, for the GUI).
+ */
+! if (!clear)
+ {
+ (void)vim_memset(new_ScreenLines + new_row * Columns,
+ ' ', (size_t)Columns * sizeof(schar_T));
+--- 8069,8075 ----
+ * (used when resizing the window at the "--more--" prompt or when
+ * executing an external command, for the GUI).
+ */
+! if (!doclear)
+ {
+ (void)vim_memset(new_ScreenLines + new_row * Columns,
+ ' ', (size_t)Columns * sizeof(schar_T));
+***************
+*** 8159,8165 ****
+ screen_Columns = Columns;
+
+ must_redraw = CLEAR; /* need to clear the screen later */
+! if (clear)
+ screenclear2();
+
+ #ifdef FEAT_GUI
+--- 8159,8165 ----
+ screen_Columns = Columns;
+
+ must_redraw = CLEAR; /* need to clear the screen later */
+! if (doclear)
+ screenclear2();
+
+ #ifdef FEAT_GUI
+*** ../vim-7.3.399/src/search.c 2011-10-04 17:00:13.000000000 +0200
+--- src/search.c 2012-01-10 22:07:16.000000000 +0100
+***************
+*** 2402,2425 ****
+ {
+ if (vim_strchr(p, ';') != NULL) /* there may be comments */
+ {
+! int instr = FALSE; /* inside of string */
+
+ p = line; /* scan from start */
+ while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
+ {
+ if (*p == '"')
+ {
+! if (instr)
+ {
+ if (*(p - 1) != '\\') /* skip escaped quote */
+! instr = FALSE;
+ }
+ else if (p == line || ((p - line) >= 2
+ /* skip #\" form */
+ && *(p - 1) != '\\' && *(p - 2) != '#'))
+! instr = TRUE;
+ }
+! else if (!instr && ((p - line) < 2
+ || (*(p - 1) != '\\' && *(p - 2) != '#')))
+ break; /* found! */
+ ++p;
+--- 2402,2425 ----
+ {
+ if (vim_strchr(p, ';') != NULL) /* there may be comments */
+ {
+! int in_str = FALSE; /* inside of string */
+
+ p = line; /* scan from start */
+ while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
+ {
+ if (*p == '"')
+ {
+! if (in_str)
+ {
+ if (*(p - 1) != '\\') /* skip escaped quote */
+! in_str = FALSE;
+ }
+ else if (p == line || ((p - line) >= 2
+ /* skip #\" form */
+ && *(p - 1) != '\\' && *(p - 2) != '#'))
+! in_str = TRUE;
+ }
+! else if (!in_str && ((p - line) < 2
+ || (*(p - 1) != '\\' && *(p - 2) != '#')))
+ break; /* found! */
+ ++p;
+*** ../vim-7.3.399/src/spell.c 2012-01-10 16:28:41.000000000 +0100
+--- src/spell.c 2012-01-10 22:09:23.000000000 +0100
+***************
+*** 5049,5055 ****
+ static int offset2bytes __ARGS((int nr, char_u *buf));
+ static int bytes2offset __ARGS((char_u **pp));
+ static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
+! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int overwrite, int added_word));
+ static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
+ static void init_spellfile __ARGS((void));
+
+--- 5049,5055 ----
+ static int offset2bytes __ARGS((int nr, char_u *buf));
+ static int bytes2offset __ARGS((char_u **pp));
+ static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
+! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int over_write, int added_word));
+ static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
+ static void init_spellfile __ARGS((void));
+
+***************
+*** 9085,9095 ****
+ * and ".spl" is appended to make the output file name.
+ */
+ static void
+! mkspell(fcount, fnames, ascii, overwrite, added_word)
+ int fcount;
+ char_u **fnames;
+ int ascii; /* -ascii argument given */
+! int overwrite; /* overwrite existing output file */
+ int added_word; /* invoked through "zg" */
+ {
+ char_u *fname = NULL;
+--- 9085,9095 ----
+ * and ".spl" is appended to make the output file name.
+ */
+ static void
+! mkspell(fcount, fnames, ascii, over_write, added_word)
+ int fcount;
+ char_u **fnames;
+ int ascii; /* -ascii argument given */
+! int over_write; /* overwrite existing output file */
+ int added_word; /* invoked through "zg" */
+ {
+ char_u *fname = NULL;
+***************
+*** 9173,9179 ****
+ {
+ /* Check for overwriting before doing things that may take a lot of
+ * time. */
+! if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+ {
+ EMSG(_(e_exists));
+ goto theend;
+--- 9173,9179 ----
+ {
+ /* Check for overwriting before doing things that may take a lot of
+ * time. */
+! if (!over_write && mch_stat((char *)wfname, &st) >= 0)
+ {
+ EMSG(_(e_exists));
+ goto theend;
+*** ../vim-7.3.399/src/syntax.c 2011-06-19 04:54:17.000000000 +0200
+--- src/syntax.c 2012-01-10 22:10:23.000000000 +0100
+***************
+*** 4006,4022 ****
+ }
+
+ static void
+! syn_list_flags(nl, flags, attr)
+! struct name_list *nl;
+ int flags;
+ int attr;
+ {
+ int i;
+
+! for (i = 0; nl[i].flag != 0; ++i)
+! if (flags & nl[i].flag)
+ {
+! msg_puts_attr((char_u *)nl[i].name, attr);
+ msg_putchar(' ');
+ }
+ }
+--- 4006,4022 ----
+ }
+
+ static void
+! syn_list_flags(nlist, flags, attr)
+! struct name_list *nlist;
+ int flags;
+ int attr;
+ {
+ int i;
+
+! for (i = 0; nlist[i].flag != 0; ++i)
+! if (flags & nlist[i].flag)
+ {
+! msg_puts_attr((char_u *)nlist[i].name, attr);
+ msg_putchar(' ');
+ }
+ }
+*** ../vim-7.3.399/src/tag.c 2011-12-14 14:15:12.000000000 +0100
+--- src/tag.c 2012-01-10 21:51:05.000000000 +0100
+***************
+*** 1353,1359 ****
+ int match_count = 0; /* number of matches found */
+ char_u **matches;
+ int mtt;
+- int len;
+ int help_save;
+ #ifdef FEAT_MULTI_LANG
+ int help_pri = 0;
+--- 1353,1358 ----
+***************
+*** 2235,2240 ****
+--- 2234,2241 ----
+ */
+ if (ga_grow(&ga_match[mtt], 1) == OK)
+ {
++ int len;
++
+ if (help_only)
+ {
+ #ifdef FEAT_MULTI_LANG
+*** ../vim-7.3.399/src/window.c 2011-12-30 15:01:55.000000000 +0100
+--- src/window.c 2012-01-10 22:11:41.000000000 +0100
+***************
+*** 683,701 ****
+ }
+
+ /*
+! * When "newwin" is NULL: split the current window in two.
+! * When "newwin" is not NULL: insert this window at the far
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! win_split_ins(size, flags, newwin, dir)
+ int size;
+ int flags;
+! win_T *newwin;
+ int dir;
+ {
+! win_T *wp = newwin;
+ win_T *oldwin;
+ int new_size = size;
+ int i;
+--- 683,701 ----
+ }
+
+ /*
+! * When "new_wp" is NULL: split the current window in two.
+! * When "new_wp" is not NULL: insert this window at the far
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! win_split_ins(size, flags, new_wp, dir)
+ int size;
+ int flags;
+! win_T *new_wp;
+ int dir;
+ {
+! win_T *wp = new_wp;
+ win_T *oldwin;
+ int new_size = size;
+ int i;
+***************
+*** 718,724 ****
+ /* add a status line when p_ls == 1 and splitting the first window */
+ if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
+ {
+! if (oldwin->w_height <= p_wmh && newwin == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+--- 718,724 ----
+ /* add a status line when p_ls == 1 and splitting the first window */
+ if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
+ {
+! if (oldwin->w_height <= p_wmh && new_wp == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+***************
+*** 751,757 ****
+ }
+ else
+ available = oldwin->w_width;
+! if (available < needed && newwin == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+--- 751,757 ----
+ }
+ else
+ available = oldwin->w_width;
+! if (available < needed && new_wp == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+***************
+*** 815,821 ****
+ available = oldwin->w_height;
+ needed += p_wmh;
+ }
+! if (available < needed && newwin == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+--- 815,821 ----
+ available = oldwin->w_height;
+ needed += p_wmh;
+ }
+! if (available < needed && new_wp == NULL)
+ {
+ EMSG(_(e_noroom));
+ return FAIL;
+***************
+*** 888,907 ****
+ p_sb))))
+ {
+ /* new window below/right of current one */
+! if (newwin == NULL)
+ wp = win_alloc(oldwin, FALSE);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+! if (newwin == NULL)
+ wp = win_alloc(oldwin->w_prev, FALSE);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+
+! if (newwin == NULL)
+ {
+ if (wp == NULL)
+ return FAIL;
+--- 888,907 ----
+ p_sb))))
+ {
+ /* new window below/right of current one */
+! if (new_wp == NULL)
+ wp = win_alloc(oldwin, FALSE);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+! if (new_wp == NULL)
+ wp = win_alloc(oldwin->w_prev, FALSE);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+
+! if (new_wp == NULL)
+ {
+ if (wp == NULL)
+ return FAIL;
+***************
+*** 972,981 ****
+ frp->fr_parent = curfrp;
+ }
+
+! if (newwin == NULL)
+ frp = wp->w_frame;
+ else
+! frp = newwin->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+
+ /* Insert the new frame at the right place in the frame list. */
+--- 972,981 ----
+ frp->fr_parent = curfrp;
+ }
+
+! if (new_wp == NULL)
+ frp = wp->w_frame;
+ else
+! frp = new_wp->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+
+ /* Insert the new frame at the right place in the frame list. */
+***************
+*** 4284,4302 ****
+ win_T *after UNUSED;
+ int hidden UNUSED;
+ {
+! win_T *newwin;
+
+ /*
+ * allocate window structure and linesizes arrays
+ */
+! newwin = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+! if (newwin != NULL && win_alloc_lines(newwin) == FAIL)
+ {
+! vim_free(newwin);
+! newwin = NULL;
+ }
+
+! if (newwin != NULL)
+ {
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute autocommands while the window is not properly
+--- 4284,4302 ----
+ win_T *after UNUSED;
+ int hidden UNUSED;
+ {
+! win_T *new_wp;
+
+ /*
+ * allocate window structure and linesizes arrays
+ */
+! new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+! if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL)
+ {
+! vim_free(new_wp);
+! new_wp = NULL;
+ }
+
+! if (new_wp != NULL)
+ {
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute autocommands while the window is not properly
+***************
+*** 4309,4361 ****
+ */
+ #ifdef FEAT_WINDOWS
+ if (!hidden)
+! win_append(after, newwin);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+! newwin->w_wincol = 0;
+! newwin->w_width = Columns;
+ #endif
+
+ /* position the display and the cursor at the top of the file. */
+! newwin->w_topline = 1;
+ #ifdef FEAT_DIFF
+! newwin->w_topfill = 0;
+ #endif
+! newwin->w_botline = 2;
+! newwin->w_cursor.lnum = 1;
+ #ifdef FEAT_SCROLLBIND
+! newwin->w_scbind_pos = 1;
+ #endif
+
+ /* We won't calculate w_fraction until resizing the window */
+! newwin->w_fraction = 0;
+! newwin->w_prev_fraction_row = -1;
+
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+ {
+! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT],
+! SBAR_LEFT, newwin);
+! gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT],
+! SBAR_RIGHT, newwin);
+ }
+ #endif
+ #ifdef FEAT_EVAL
+ /* init w: variables */
+! init_var_dict(&newwin->w_vars, &newwin->w_winvar);
+ #endif
+ #ifdef FEAT_FOLDING
+! foldInitWin(newwin);
+ #endif
+ #ifdef FEAT_AUTOCMD
+ unblock_autocmds();
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+! newwin->w_match_head = NULL;
+! newwin->w_next_match_id = 4;
+ #endif
+ }
+! return newwin;
+ }
+
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+--- 4309,4361 ----
+ */
+ #ifdef FEAT_WINDOWS
+ if (!hidden)
+! win_append(after, new_wp);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+! new_wp->w_wincol = 0;
+! new_wp->w_width = Columns;
+ #endif
+
+ /* position the display and the cursor at the top of the file. */
+! new_wp->w_topline = 1;
+ #ifdef FEAT_DIFF
+! new_wp->w_topfill = 0;
+ #endif
+! new_wp->w_botline = 2;
+! new_wp->w_cursor.lnum = 1;
+ #ifdef FEAT_SCROLLBIND
+! new_wp->w_scbind_pos = 1;
+ #endif
+
+ /* We won't calculate w_fraction until resizing the window */
+! new_wp->w_fraction = 0;
+! new_wp->w_prev_fraction_row = -1;
+
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+ {
+! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT],
+! SBAR_LEFT, new_wp);
+! gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT],
+! SBAR_RIGHT, new_wp);
+ }
+ #endif
+ #ifdef FEAT_EVAL
+ /* init w: variables */
+! init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
+ #endif
+ #ifdef FEAT_FOLDING
+! foldInitWin(new_wp);
+ #endif
+ #ifdef FEAT_AUTOCMD
+ unblock_autocmds();
+ #endif
+ #ifdef FEAT_SEARCH_EXTRA
+! new_wp->w_match_head = NULL;
+! new_wp->w_next_match_id = 4;
+ #endif
+ }
+! return new_wp;
+ }
+
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+*** ../vim-7.3.399/src/version.c 2012-01-10 18:37:53.000000000 +0100
+--- src/version.c 2012-01-10 22:23:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 400,
+ /**/
+
+--
+A parent can be arrested if his child cannot hold back a burp during a church
+service.
+ [real standing law in Nebraska, United States of America]
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.401
+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.401
+Problem: A couple more shadowed variables.
+Solution: Rename the variables.
+Files: src/netbeans.c
+
+
+*** ../vim-7.3.400/src/netbeans.c 2012-01-10 22:26:12.000000000 +0100
+--- src/netbeans.c 2012-01-10 22:30:17.000000000 +0100
+***************
+*** 443,449 ****
+ FILE *fp;
+ char_u buf[BUFSIZ];
+ char_u *lp;
+! char_u *nl;
+ #ifdef UNIX
+ struct stat st;
+
+--- 443,449 ----
+ FILE *fp;
+ char_u buf[BUFSIZ];
+ char_u *lp;
+! char_u *nlp;
+ #ifdef UNIX
+ struct stat st;
+
+***************
+*** 472,479 ****
+ /* Read the file. There should be one of each parameter */
+ while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL)
+ {
+! if ((nl = vim_strchr(lp, '\n')) != NULL)
+! *nl = 0; /* strip off the trailing newline */
+
+ if (STRNCMP(lp, "host=", 5) == 0)
+ {
+--- 472,479 ----
+ /* Read the file. There should be one of each parameter */
+ while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL)
+ {
+! if ((nlp = vim_strchr(lp, '\n')) != NULL)
+! *nlp = 0; /* strip off the trailing newline */
+
+ if (STRNCMP(lp, "host=", 5) == 0)
+ {
+***************
+*** 1740,1746 ****
+ int added = 0;
+ int oldFire = netbeansFireChanges;
+ int old_b_changed;
+! char_u *nl;
+ linenr_T lnum;
+ linenr_T lnum_start;
+ pos_T *pos;
+--- 1740,1746 ----
+ int added = 0;
+ int oldFire = netbeansFireChanges;
+ int old_b_changed;
+! char_u *nlp;
+ linenr_T lnum;
+ linenr_T lnum_start;
+ pos_T *pos;
+***************
+*** 1780,1787 ****
+ do_update = 1;
+ while (*args != NUL)
+ {
+! nl = vim_strchr(args, '\n');
+! if (nl == NULL)
+ {
+ /* Incomplete line, probably truncated. Next "insert"
+ * command should append to this one. */
+--- 1780,1787 ----
+ do_update = 1;
+ while (*args != NUL)
+ {
+! nlp = vim_strchr(args, '\n');
+! if (nlp == NULL)
+ {
+ /* Incomplete line, probably truncated. Next "insert"
+ * command should append to this one. */
+***************
+*** 1789,1801 ****
+ }
+ else
+ {
+! len = nl - args;
+
+ /*
+ * We need to detect EOL style, because the commands
+ * use a character offset.
+ */
+! if (nl > args && nl[-1] == '\r')
+ {
+ ff_detected = EOL_DOS;
+ --len;
+--- 1789,1801 ----
+ }
+ else
+ {
+! len = nlp - args;
+
+ /*
+ * We need to detect EOL style, because the commands
+ * use a character offset.
+ */
+! if (nlp > args && nlp[-1] == '\r')
+ {
+ ff_detected = EOL_DOS;
+ --len;
+***************
+*** 1814,1820 ****
+
+ /* Insert halfway a line. For simplicity we assume we
+ * need to append to the line. */
+! newline = alloc_check((unsigned)(STRLEN(oldline) + len + 1));
+ if (newline != NULL)
+ {
+ STRCPY(newline, oldline);
+--- 1814,1821 ----
+
+ /* Insert halfway a line. For simplicity we assume we
+ * need to append to the line. */
+! newline = alloc_check(
+! (unsigned)(STRLEN(oldline) + len + 1));
+ if (newline != NULL)
+ {
+ STRCPY(newline, oldline);
+***************
+*** 1826,1839 ****
+ {
+ /* Append a new line. Not that we always do this,
+ * also when the text doesn't end in a "\n". */
+! ml_append((linenr_T)(lnum - 1), args, (colnr_T)(len + 1), FALSE);
+ ++added;
+ }
+
+! if (nl == NULL)
+ break;
+ ++lnum;
+! args = nl + 1;
+ }
+
+ /* Adjust the marks below the inserted lines. */
+--- 1827,1841 ----
+ {
+ /* Append a new line. Not that we always do this,
+ * also when the text doesn't end in a "\n". */
+! ml_append((linenr_T)(lnum - 1), args,
+! (colnr_T)(len + 1), FALSE);
+ ++added;
+ }
+
+! if (nlp == NULL)
+ break;
+ ++lnum;
+! args = nlp + 1;
+ }
+
+ /* Adjust the marks below the inserted lines. */
+*** ../vim-7.3.400/src/version.c 2012-01-10 22:26:12.000000000 +0100
+--- src/version.c 2012-01-10 22:30:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 401,
+ /**/
+
+--
+So when I saw the post to comp.editors, I rushed over to the FTP site to
+grab it. So I yank apart the tarball, light x candles, where x= the
+vim version multiplied by the md5sum of the source divided by the MAC of
+my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights,
+wave a dead chicken over the hard drive, and summon the power of GNU GCC
+with the magic words "make config ; make!".
+ [Jason Spence, compiling Vim 5.0]
+
+ /// 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 ///