[oe] [oe-meta 2/2] vim: Add vim/tiny-vim/gvim 7.2 (patchset 446)

Michael Lippautz michael.lippautz at gmail.com
Mon Apr 18 19:32:29 UTC 2011


Changes from org.oe.dev:
* Include latest (stable) patchset
* Change from RCONFLICTS to RREPLACES where possible (gvim->vim->tiny-vim)

Signed-off-by: Michael Lippautz <michael.lippautz at gmail.com>
---
 meta-oe/recipes-support/vim/files/401-446.diff     | 5426 ++++++++++++++++++++
 .../vim/files/configure.in_remove_CC_quotes.patch  |   17 +
 meta-oe/recipes-support/vim/files/vimrc            |   96 +
 meta-oe/recipes-support/vim/gvim_7.2.446.bb        |   10 +
 meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb    |    5 +
 meta-oe/recipes-support/vim/vim.inc                |   77 +
 meta-oe/recipes-support/vim/vim_7.2.446.bb         |   41 +
 7 files changed, 5672 insertions(+), 0 deletions(-)
 create mode 100644 meta-oe/recipes-support/vim/files/401-446.diff
 create mode 100644 meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch
 create mode 100644 meta-oe/recipes-support/vim/files/vimrc
 create mode 100644 meta-oe/recipes-support/vim/gvim_7.2.446.bb
 create mode 100644 meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb
 create mode 100644 meta-oe/recipes-support/vim/vim.inc
 create mode 100644 meta-oe/recipes-support/vim/vim_7.2.446.bb

diff --git a/meta-oe/recipes-support/vim/files/401-446.diff b/meta-oe/recipes-support/vim/files/401-446.diff
new file mode 100644
index 0000000..fa163fc
--- /dev/null
+++ b/meta-oe/recipes-support/vim/files/401-446.diff
@@ -0,0 +1,5426 @@
+To: vim-dev at vim.org
+Subject: Patch 7.2.401
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.401
+Problem:    ":e dir<Tab>" with 'wildmode' set to "list" doesn't highlight
+	    directory names with a space. (Alexandre Provencio)
+Solution:   Remove the backslash before checking if the name is a directory.
+	    (Dominique Pelle)
+Files:	    src/ex_getln.c
+
+
+*** ../vim-7.2.400/src/ex_getln.c	2010-03-02 17:23:10.000000000 +0100
+--- src/ex_getln.c	2010-03-17 19:00:54.000000000 +0100
+***************
+*** 3948,3955 ****
+  					  || xp->xp_context == EXPAND_SHELLCMD
+  					  || xp->xp_context == EXPAND_BUFFERS)
+  		{
+! 			    /* highlight directories */
+! 		    j = (mch_isdir(files_found[k]));
+  		    if (showtail)
+  			p = L_SHOWFILE(k);
+  		    else
+--- 3948,3959 ----
+  					  || xp->xp_context == EXPAND_SHELLCMD
+  					  || xp->xp_context == EXPAND_BUFFERS)
+  		{
+! 		    char_u	*halved_slash;
+! 
+! 		    /* highlight directories */
+! 		    halved_slash = backslash_halve_save(files_found[k]);
+! 		    j = mch_isdir(halved_slash);
+! 		    vim_free(halved_slash);
+  		    if (showtail)
+  			p = L_SHOWFILE(k);
+  		    else
+*** ../vim-7.2.400/src/version.c	2010-03-17 18:15:17.000000000 +0100
+--- src/version.c	2010-03-17 19:12:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     401,
+  /**/
+
+-- 
+Two cows are standing together in a field.  One asks the other:
+"So what do you think about this Mad Cow Disease?"
+The other replies: "That doesn't concern me. I'm a helicopter."
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.402
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.402
+Problem:    This gives a #705 error: let X = function('haslocaldir')
+	    let X = function('getcwd')
+Solution:   Don't give E705 when the name is found in the hashtab. (Sergey
+	    Khorev)
+Files:	    src/eval.c
+
+
+*** ../vim-7.2.401/src/eval.c	2010-03-10 13:43:22.000000000 +0100
+--- src/eval.c	2010-03-17 19:35:01.000000000 +0100
+***************
+*** 19103,19108 ****
+--- 19103,19116 ----
+      hashtab_T	*ht;
+      char_u	*p;
+  
++     ht = find_var_ht(name, &varname);
++     if (ht == NULL || *varname == NUL)
++     {
++ 	EMSG2(_(e_illvar), name);
++ 	return;
++     }
++     v = find_var_in_ht(ht, varname, TRUE);
++ 
+      if (tv->v_type == VAR_FUNC)
+      {
+  	if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':')
+***************
+*** 19112,19118 ****
+  	    EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+  	    return;
+  	}
+! 	if (function_exists(name))
+  	{
+  	    EMSG2(_("E705: Variable name conflicts with existing function: %s"),
+  									name);
+--- 19120,19129 ----
+  	    EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+  	    return;
+  	}
+! 	/* Don't allow hiding a function.  When "v" is not NULL we migth be
+! 	 * assigning another function to the same var, the type is checked
+! 	 * below. */
+! 	if (v == NULL && function_exists(name))
+  	{
+  	    EMSG2(_("E705: Variable name conflicts with existing function: %s"),
+  									name);
+***************
+*** 19120,19133 ****
+  	}
+      }
+  
+-     ht = find_var_ht(name, &varname);
+-     if (ht == NULL || *varname == NUL)
+-     {
+- 	EMSG2(_(e_illvar), name);
+- 	return;
+-     }
+- 
+-     v = find_var_in_ht(ht, varname, TRUE);
+      if (v != NULL)
+      {
+  	/* existing variable, need to clear the value */
+--- 19131,19136 ----
+*** ../vim-7.2.401/src/version.c	2010-03-17 19:13:19.000000000 +0100
+--- src/version.c	2010-03-17 19:36:09.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     402,
+  /**/
+
+-- 
+Michael: There is no such thing as a dump question.
+Bernard: Sure there is.  For example "what is a core dump?"
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.403
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.403 (after 7.2.400)
+Problem:    Compiler warning for pointer type. (Tony Mechelynck)
+Solution:   Move type cast to the right place.
+Files:	    src/if_ruby.c
+
+
+*** ../vim-7.2.402/src/if_ruby.c	2010-03-17 18:15:17.000000000 +0100
+--- src/if_ruby.c	2010-03-19 23:08:06.000000000 +0100
+***************
+*** 722,729 ****
+  
+      if (tv->v_type == VAR_STRING)
+      {
+! 	result = rb_str_new2((char *)(tv->vval.v_string == NULL
+! 						   ? "" : tv->vval.v_string));
+      }
+      else if (tv->v_type == VAR_NUMBER)
+      {
+--- 722,729 ----
+  
+      if (tv->v_type == VAR_STRING)
+      {
+! 	result = rb_str_new2(tv->vval.v_string == NULL
+! 					  ? "" : (char *)(tv->vval.v_string));
+      }
+      else if (tv->v_type == VAR_NUMBER)
+      {
+*** ../vim-7.2.402/src/version.c	2010-03-17 19:53:44.000000000 +0100
+--- src/version.c	2010-03-19 23:07:13.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     403,
+  /**/
+
+-- 
+If "R" is Reverse, how come "D" is FORWARD?
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.404
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.404
+Problem:    Pointers for composing characters are not properly initialized.
+Solution:   Compute the size of the pointer, not what it points to. (Yukihiro
+	    Nakadaira)
+Files:	    src/screen.c
+
+
+*** ../vim-7.2.403/src/screen.c	2010-02-03 15:47:59.000000000 +0100
+--- src/screen.c	2010-03-23 13:48:05.000000000 +0100
+***************
+*** 7536,7542 ****
+      new_ScreenLines = (schar_T *)lalloc((long_u)(
+  			      (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
+  #ifdef FEAT_MBYTE
+!     vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T) * MAX_MCO);
+      if (enc_utf8)
+      {
+  	new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+--- 7536,7542 ----
+      new_ScreenLines = (schar_T *)lalloc((long_u)(
+  			      (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
+  #ifdef FEAT_MBYTE
+!     vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T *) * MAX_MCO);
+      if (enc_utf8)
+      {
+  	new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+*** ../vim-7.2.403/src/version.c	2010-03-19 23:08:22.000000000 +0100
+--- src/version.c	2010-03-23 13:54:47.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     404,
+  /**/
+
+-- 
+LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
+ARTHUR:    No, that's Saint Ives.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.405
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.405
+Problem:    When built with small features the matching text is not
+	    highlighted for ":s/pat/repl/c".
+Solution:   Remove the #ifdef for IncSearch. (James Vega)
+Files:	    src/syntax.c
+
+
+*** ../vim-7.2.404/src/syntax.c	2010-03-10 13:43:22.000000000 +0100
+--- src/syntax.c	2010-03-23 14:36:10.000000000 +0100
+***************
+*** 6205,6214 ****
+      {
+  	CENT("ErrorMsg term=standout ctermbg=DarkRed ctermfg=White",
+  	     "ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White"),
+- #ifdef FEAT_SEARCH_EXTRA
+  	CENT("IncSearch term=reverse cterm=reverse",
+  	     "IncSearch term=reverse cterm=reverse gui=reverse"),
+- #endif
+  	CENT("ModeMsg term=bold cterm=bold",
+  	     "ModeMsg term=bold cterm=bold gui=bold"),
+  	CENT("NonText term=bold ctermfg=Blue",
+--- 6205,6212 ----
+*** ../vim-7.2.404/src/version.c	2010-03-23 13:56:53.000000000 +0100
+--- src/version.c	2010-03-23 14:37:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     405,
+  /**/
+
+-- 
+Dreams are free, but there's a small charge for alterations.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.406
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.406
+Problem:    Patch 7.2.119 introduces uninit mem read. (Dominique Pelle)
+Solution:   Only used ScreeenLinesC when ScreeenLinesUC is not zero. (Yukihiro
+	    Nakadaira)  Also clear ScreeenLinesC when allocating.
+Files:	    src/screen.c
+
+
+*** ../vim-7.2.405/src/screen.c	2010-03-23 13:56:53.000000000 +0100
+--- src/screen.c	2010-03-23 15:26:44.000000000 +0100
+***************
+*** 25,34 ****
+   * one character which occupies two display cells.
+   * For UTF-8 a multi-byte character is converted to Unicode and stored in
+   * ScreenLinesUC[].  ScreenLines[] contains the first byte only.  For an ASCII
+!  * character without composing chars ScreenLinesUC[] will be 0.  When the
+!  * character occupies two display cells the next byte in ScreenLines[] is 0.
+   * ScreenLinesC[][] contain up to 'maxcombine' composing characters
+!  * (drawn on top of the first character).  They are 0 when not used.
+   * ScreenLines2[] is only used for euc-jp to store the second byte if the
+   * first byte is 0x8e (single-width character).
+   *
+--- 25,35 ----
+   * one character which occupies two display cells.
+   * For UTF-8 a multi-byte character is converted to Unicode and stored in
+   * ScreenLinesUC[].  ScreenLines[] contains the first byte only.  For an ASCII
+!  * character without composing chars ScreenLinesUC[] will be 0 and
+!  * ScreenLinesC[][] is not used.  When the character occupies two display
+!  * cells the next byte in ScreenLines[] is 0.
+   * ScreenLinesC[][] contain up to 'maxcombine' composing characters
+!  * (drawn on top of the first character).  There is 0 after the last one used.
+   * ScreenLines2[] is only used for euc-jp to store the second byte if the
+   * first byte is 0x8e (single-width character).
+   *
+***************
+*** 4893,4898 ****
+--- 4894,4900 ----
+  
+  /*
+   * Return if the composing characters at "off_from" and "off_to" differ.
++  * Only to be used when ScreenLinesUC[off_from] != 0.
+   */
+      static int
+  comp_char_differs(off_from, off_to)
+***************
+*** 6281,6286 ****
+--- 6283,6289 ----
+  /*
+   * Return TRUE if composing characters for screen posn "off" differs from
+   * composing characters in "u8cc".
++  * Only to be used when ScreenLinesUC[off] != 0.
+   */
+      static int
+  screen_comp_differs(off, u8cc)
+***************
+*** 6461,6468 ****
+  		    && c == 0x8e
+  		    && ScreenLines2[off] != ptr[1])
+  		|| (enc_utf8
+! 		    && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0)
+! 			|| screen_comp_differs(off, u8cc)))
+  #endif
+  		|| ScreenAttrs[off] != attr
+  		|| exmode_active;
+--- 6464,6473 ----
+  		    && c == 0x8e
+  		    && ScreenLines2[off] != ptr[1])
+  		|| (enc_utf8
+! 		    && (ScreenLinesUC[off] !=
+! 				(u8char_T)(c < 0x80 && u8cc[0] == 0 ? 0 : u8c)
+! 			|| (ScreenLinesUC[off] != 0
+! 					  && screen_comp_differs(off, u8cc))))
+  #endif
+  		|| ScreenAttrs[off] != attr
+  		|| exmode_active;
+***************
+*** 7542,7548 ****
+  	new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+  			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+  	for (i = 0; i < p_mco; ++i)
+! 	    new_ScreenLinesC[i] = (u8char_T *)lalloc((long_u)(
+  			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+      }
+      if (enc_dbcs == DBCS_JPNU)
+--- 7547,7553 ----
+  	new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
+  			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+  	for (i = 0; i < p_mco; ++i)
+! 	    new_ScreenLinesC[i] = (u8char_T *)lalloc_clear((long_u)(
+  			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
+      }
+      if (enc_dbcs == DBCS_JPNU)
+*** ../vim-7.2.405/src/version.c	2010-03-23 14:39:07.000000000 +0100
+--- src/version.c	2010-03-23 15:34:11.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     406,
+  /**/
+
+-- 
+VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur
+            and his knights seemed hopeless,  when, suddenly ... the animator
+            suffered a fatal heart attack.
+ANIMATOR:   Aaaaagh!
+VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could
+            continue.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.407
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.407
+Problem:    When using an expression in ":s" backslashes in the result are
+	    dropped. (Sergey Goldgaber, Christian Brabandt)
+Solution:   Double backslashes.
+Files:	    src/regexp.c
+
+
+*** ../vim-7.2.406/src/regexp.c	2009-11-26 20:41:19.000000000 +0100
+--- src/regexp.c	2010-03-23 16:22:35.000000000 +0100
+***************
+*** 6963,6968 ****
+--- 6963,6970 ----
+  	    eval_result = eval_to_string(source + 2, NULL, TRUE);
+  	    if (eval_result != NULL)
+  	    {
++ 		int had_backslash = FALSE;
++ 
+  		for (s = eval_result; *s != NUL; mb_ptr_adv(s))
+  		{
+  		    /* Change NL to CR, so that it becomes a line break.
+***************
+*** 6970,6976 ****
+--- 6972,6991 ----
+  		    if (*s == NL)
+  			*s = CAR;
+  		    else if (*s == '\\' && s[1] != NUL)
++ 		    {
+  			++s;
++ 			had_backslash = TRUE;
++ 		    }
++ 		}
++ 		if (had_backslash && backslash)
++ 		{
++ 		    /* Backslashes will be consumed, need to double them. */
++ 		    s = vim_strsave_escaped(eval_result, (char_u *)"\\");
++ 		    if (s != NULL)
++ 		    {
++ 			vim_free(eval_result);
++ 			eval_result = s;
++ 		    }
+  		}
+  
+  		dst += STRLEN(eval_result);
+*** ../vim-7.2.406/src/version.c	2010-03-23 15:36:29.000000000 +0100
+--- src/version.c	2010-03-23 16:26:22.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     407,
+  /**/
+
+-- 
+Sorry, no fortune today.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.408
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.408
+Problem:    With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line
+	    that was not changed.
+Solution:   Only set '[ and '] marks when a substitution was done.
+Files:	    src/ex_cmds.c
+
+
+*** ../vim-7.2.407/src/ex_cmds.c	2009-07-09 20:06:30.000000000 +0200
+--- src/ex_cmds.c	2010-03-23 17:31:17.000000000 +0100
+***************
+*** 4238,4243 ****
+--- 4238,4244 ----
+      char_u	*sub_firstline;		/* allocated copy of first sub line */
+      int		endcolumn = FALSE;	/* cursor in last column when done */
+      pos_T	old_cursor = curwin->w_cursor;
++     int		start_nsubs;
+  
+      cmd = eap->arg;
+      if (!global_busy)
+***************
+*** 4245,4250 ****
+--- 4246,4252 ----
+  	sub_nsubs = 0;
+  	sub_nlines = 0;
+      }
++     start_nsubs = sub_nsubs;
+  
+      if (eap->cmdidx == CMD_tilde)
+  	which_pat = RE_LAST;	/* use last used regexp */
+***************
+*** 5106,5112 ****
+      if (do_count)
+  	curwin->w_cursor = old_cursor;
+  
+!     if (sub_nsubs)
+      {
+  	/* Set the '[ and '] marks. */
+  	curbuf->b_op_start.lnum = eap->line1;
+--- 5108,5114 ----
+      if (do_count)
+  	curwin->w_cursor = old_cursor;
+  
+!     if (sub_nsubs > start_nsubs)
+      {
+  	/* Set the '[ and '] marks. */
+  	curbuf->b_op_start.lnum = eap->line1;
+*** ../vim-7.2.407/src/version.c	2010-03-23 16:27:15.000000000 +0100
+--- src/version.c	2010-03-23 17:35:40.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     408,
+  /**/
+
+-- 
+Permission is granted to read this message out aloud on Kings Cross Road,
+London, under the condition that the orator is properly dressed.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.409
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.409
+Problem:    Summary of number of substitutes is incorrect for ":folddo". (Jean
+	    Johner)
+Solution:   Reset sub_nsubs and sub_nlines in global_exe().
+Files:	    src/ex_cmds.c
+
+
+*** ../vim-7.2.408/src/ex_cmds.c	2010-03-23 17:36:24.000000000 +0100
+--- src/ex_cmds.c	2010-03-23 17:42:49.000000000 +0100
+***************
+*** 5238,5245 ****
+  	type = *eap->cmd;
+      cmd = eap->arg;
+      which_pat = RE_LAST;	    /* default: use last used regexp */
+-     sub_nsubs = 0;
+-     sub_nlines = 0;
+  
+      /*
+       * undocumented vi feature:
+--- 5238,5243 ----
+***************
+*** 5343,5348 ****
+--- 5341,5348 ----
+      /* When the command writes a message, don't overwrite the command. */
+      msg_didout = TRUE;
+  
++     sub_nsubs = 0;
++     sub_nlines = 0;
+      global_need_beginline = FALSE;
+      global_busy = 1;
+      old_lcount = curbuf->b_ml.ml_line_count;
+*** ../vim-7.2.408/src/version.c	2010-03-23 17:36:24.000000000 +0100
+--- src/version.c	2010-03-23 17:47:53.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     409,
+  /**/
+
+-- 
+BRIDGEKEEPER: What is your favorite colour?
+LAUNCELOT:    Blue.
+BRIDGEKEEPER: Right.  Off you go.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.410
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.410
+Problem:    Highlighting directories for completion doesn't work properly.
+Solution:   Don't halve backslashes when not needed, expaned "~/".
+	    (Dominique Pelle)
+Files:	    src/ex_getln.c
+
+
+*** ../vim-7.2.409/src/ex_getln.c	2010-03-17 19:13:19.000000000 +0100
+--- src/ex_getln.c	2010-03-23 18:00:56.000000000 +0100
+***************
+*** 3948,3959 ****
+  					  || xp->xp_context == EXPAND_SHELLCMD
+  					  || xp->xp_context == EXPAND_BUFFERS)
+  		{
+- 		    char_u	*halved_slash;
+- 
+  		    /* highlight directories */
+! 		    halved_slash = backslash_halve_save(files_found[k]);
+! 		    j = mch_isdir(halved_slash);
+! 		    vim_free(halved_slash);
+  		    if (showtail)
+  			p = L_SHOWFILE(k);
+  		    else
+--- 3948,3973 ----
+  					  || xp->xp_context == EXPAND_SHELLCMD
+  					  || xp->xp_context == EXPAND_BUFFERS)
+  		{
+  		    /* highlight directories */
+! 		    if (xp->xp_numfiles != -1)
+! 		    {
+! 			char_u	*halved_slash;
+! 			char_u	*exp_path;
+! 
+! 			/* Expansion was done before and special characters
+! 			 * were escaped, need to halve backslashes.  Also
+! 			 * $HOME has been replaced with ~/. */
+! 			exp_path = expand_env_save_opt(files_found[k], TRUE);
+! 			halved_slash = backslash_halve_save(
+! 				exp_path != NULL ? exp_path : files_found[k]);
+! 			j = mch_isdir(halved_slash != NULL ? halved_slash
+! 							    : files_found[k]);
+! 			vim_free(exp_path);
+! 			vim_free(halved_slash);
+! 		    }
+! 		    else
+! 			/* Expansion was done here, file names are literal. */
+! 			j = mch_isdir(files_found[k]);
+  		    if (showtail)
+  			p = L_SHOWFILE(k);
+  		    else
+*** ../vim-7.2.409/src/version.c	2010-03-23 17:49:19.000000000 +0100
+--- src/version.c	2010-03-23 18:04:25.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     410,
+  /**/
+
+-- 
+BRIDGEKEEPER: What is your favorite colour?
+GAWAIN:       Blue ...  No yelloooooww!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.411
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.411
+Problem:    When parsing 'cino' a comma isn't skipped properly.
+Solution:   Skip the comma. (Lech Lorens)
+Files:	    src/misc1.c
+
+
+*** ../vim-7.2.410/src/misc1.c	2010-03-02 12:37:01.000000000 +0100
+--- src/misc1.c	2010-03-23 18:18:15.000000000 +0100
+***************
+*** 6270,6275 ****
+--- 6270,6277 ----
+  	    case 'l': ind_keep_case_label = n; break;
+  	    case '#': ind_hash_comment = n; break;
+  	}
++ 	if (*options == ',')
++ 	    ++options;
+      }
+  
+      /* remember where the cursor was when we started */
+*** ../vim-7.2.410/src/version.c	2010-03-23 18:06:47.000000000 +0100
+--- src/version.c	2010-03-23 18:22:13.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     411,
+  /**/
+
+-- 
+BRIDGEKEEPER: What is your favorite editor?
+GAWAIN:       Emacs ...  No, Viiiiiiiiiiimmmmmmm!
+           "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.412
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.412
+Problem:    [ or ] followed by mouse click doesn't work.
+Solution:   Reverse check for key being a mouse event. (Dominique Pelle)
+Files:	    src/normal.c
+
+
+*** ../vim-7.2.411/src/normal.c	2010-03-17 13:07:01.000000000 +0100
+--- src/normal.c	2010-05-07 15:46:54.000000000 +0200
+***************
+*** 3196,3202 ****
+       * There are a few special cases where we want certain combinations of
+       * characters to be considered as a single word.  These are things like
+       * "->", "/ *", "*=", "+=", "&=", "<=", ">=", "!=" etc.  Otherwise, each
+!      * character is in it's own class.
+       */
+      if (c != NUL && vim_strchr((char_u *)"-+*/%<>&|^!=", c) != NULL)
+  	return 1;
+--- 3196,3202 ----
+       * There are a few special cases where we want certain combinations of
+       * characters to be considered as a single word.  These are things like
+       * "->", "/ *", "*=", "+=", "&=", "<=", ">=", "!=" etc.  Otherwise, each
+!      * character is in its own class.
+       */
+      if (c != NUL && vim_strchr((char_u *)"-+*/%<>&|^!=", c) != NULL)
+  	return 1;
+***************
+*** 4085,4091 ****
+  /*
+   * Command character that's ignored.
+   * Used for CTRL-Q and CTRL-S to avoid problems with terminals that use
+!  * xon/xoff
+   */
+      static void
+  nv_ignore(cap)
+--- 4085,4091 ----
+  /*
+   * Command character that's ignored.
+   * Used for CTRL-Q and CTRL-S to avoid problems with terminals that use
+!  * xon/xoff.
+   */
+      static void
+  nv_ignore(cap)
+***************
+*** 6523,6529 ****
+       * [ or ] followed by a middle mouse click: put selected text with
+       * indent adjustment.  Any other button just does as usual.
+       */
+!     else if (cap->nchar >= K_LEFTMOUSE && cap->nchar <= K_RIGHTRELEASE)
+      {
+  	(void)do_mouse(cap->oap, cap->nchar,
+  		       (cap->cmdchar == ']') ? FORWARD : BACKWARD,
+--- 6523,6529 ----
+       * [ or ] followed by a middle mouse click: put selected text with
+       * indent adjustment.  Any other button just does as usual.
+       */
+!     else if (cap->nchar >= K_RIGHTRELEASE && cap->nchar <= K_LEFTMOUSE)
+      {
+  	(void)do_mouse(cap->oap, cap->nchar,
+  		       (cap->cmdchar == ']') ? FORWARD : BACKWARD,
+*** ../vim-7.2.411/src/version.c	2010-03-23 18:22:40.000000000 +0100
+--- src/version.c	2010-05-07 15:51:35.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     412,
+  /**/
+
+-- 
+I have a drinking problem -- I don't have a drink!
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.413
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.413
+Problem:    Large file support is incorrect.
+Solution:   Add AC_SYS_LARGEFILE to configure. (James Vega)
+Files:      src/configure.in, src/config.h.in, src/auto/configure
+    
+
+*** ../vim-7.2.412/src/configure.in	2010-03-10 16:27:27.000000000 +0100
+--- src/configure.in	2010-04-01 15:06:04.000000000 +0200
+***************
+*** 2669,2674 ****
+--- 2669,2678 ----
+  	usleep utime utimes)
+  AC_FUNC_FSEEKO
+  
++ dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
++ dnl appropriate, so that off_t is 64 bits when needed.
++ AC_SYS_LARGEFILE
++ 
+  dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
+  AC_MSG_CHECKING(for st_blksize)
+  AC_TRY_COMPILE(
+*** ../vim-7.2.412/src/config.h.in	2010-02-24 14:46:58.000000000 +0100
+--- src/config.h.in	2010-04-01 15:10:49.000000000 +0200
+***************
+*** 196,201 ****
+--- 196,206 ----
+  #undef HAVE_UTIME
+  #undef HAVE_BIND_TEXTDOMAIN_CODESET
+  
++ /* Define, if needed, for accessing large files. */
++ #undef _LARGE_FILES
++ #undef _FILE_OFFSET_BITS
++ #undef _LARGEFILE_SOURCE
++ 
+  /* Define if you do not have utime(), but do have the utimes() function. */
+  #undef HAVE_UTIMES
+  
+*** ../vim-7.2.412/src/auto/configure	2010-03-10 16:27:27.000000000 +0100
+--- src/auto/configure	2010-05-07 16:01:08.000000000 +0200
+***************
+*** 821,826 ****
+--- 821,827 ----
+  with_gnome
+  with_motif_lib
+  with_tlib
++ enable_largefile
+  enable_acl
+  enable_gpm
+  enable_sysmouse
+***************
+*** 1485,1490 ****
+--- 1486,1492 ----
+    --enable-nextaw-check   If auto-select GUI, check for neXtaw default=yes
+    --enable-carbon-check   If auto-select GUI, check for Carbon default=yes
+    --disable-gtktest       Do not try to compile and run a test GTK program
++   --disable-largefile     omit support for large files
+    --disable-acl           Don't check for ACL support.
+    --disable-gpm           Don't use gpm (Linux mouse daemon).
+    --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).
+***************
+*** 14345,14350 ****
+--- 14347,14709 ----
+  fi
+  
+  
++ # Check whether --enable-largefile was given.
++ if test "${enable_largefile+set}" = set; then
++   enableval=$enable_largefile;
++ fi
++ 
++ if test "$enable_largefile" != no; then
++ 
++   { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
++ $as_echo_n "checking for special C compiler options needed for large files... " >&6; }
++ if test "${ac_cv_sys_largefile_CC+set}" = set; then
++   $as_echo_n "(cached) " >&6
++ else
++   ac_cv_sys_largefile_CC=no
++      if test "$GCC" != yes; then
++        ac_save_CC=$CC
++        while :; do
++ 	 # IRIX 6.2 and later do not support large files by default,
++ 	 # so use the C compiler's -n32 option if that helps.
++ 	 cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h.  */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h.  */
++ #include <sys/types.h>
++  /* Check that off_t can represent 2**63 - 1 correctly.
++     We can't simply define LARGE_OFF_T to be 9223372036854775807,
++     since some C++ compilers masquerading as C compilers
++     incorrectly reject 9223372036854775807.  */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ 		       && LARGE_OFF_T % 2147483647 == 1)
++ 		      ? 1 : -1];
++ int
++ main ()
++ {
++ 
++   ;
++   return 0;
++ }
++ _ACEOF
++ 	 rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++   *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++   (eval "$ac_compile") 2>conftest.er1
++   ac_status=$?
++   grep -v '^ *+' conftest.er1 >conftest.err
++   rm -f conftest.er1
++   cat conftest.err >&5
++   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); } && {
++ 	 test -z "$ac_c_werror_flag" ||
++ 	 test ! -s conftest.err
++        } && test -s conftest.$ac_objext; then
++   break
++ else
++   $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++ 
++ 
++ fi
++ 
++ rm -f core conftest.err conftest.$ac_objext
++ 	 CC="$CC -n32"
++ 	 rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++   *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++   (eval "$ac_compile") 2>conftest.er1
++   ac_status=$?
++   grep -v '^ *+' conftest.er1 >conftest.err
++   rm -f conftest.er1
++   cat conftest.err >&5
++   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); } && {
++ 	 test -z "$ac_c_werror_flag" ||
++ 	 test ! -s conftest.err
++        } && test -s conftest.$ac_objext; then
++   ac_cv_sys_largefile_CC=' -n32'; break
++ else
++   $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++ 
++ 
++ fi
++ 
++ rm -f core conftest.err conftest.$ac_objext
++ 	 break
++        done
++        CC=$ac_save_CC
++        rm -f conftest.$ac_ext
++     fi
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
++ $as_echo "$ac_cv_sys_largefile_CC" >&6; }
++   if test "$ac_cv_sys_largefile_CC" != no; then
++     CC=$CC$ac_cv_sys_largefile_CC
++   fi
++ 
++   { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
++ $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
++ if test "${ac_cv_sys_file_offset_bits+set}" = set; then
++   $as_echo_n "(cached) " >&6
++ else
++   while :; do
++   cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h.  */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h.  */
++ #include <sys/types.h>
++  /* Check that off_t can represent 2**63 - 1 correctly.
++     We can't simply define LARGE_OFF_T to be 9223372036854775807,
++     since some C++ compilers masquerading as C compilers
++     incorrectly reject 9223372036854775807.  */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ 		       && LARGE_OFF_T % 2147483647 == 1)
++ 		      ? 1 : -1];
++ int
++ main ()
++ {
++ 
++   ;
++   return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++   *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++   (eval "$ac_compile") 2>conftest.er1
++   ac_status=$?
++   grep -v '^ *+' conftest.er1 >conftest.err
++   rm -f conftest.er1
++   cat conftest.err >&5
++   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); } && {
++ 	 test -z "$ac_c_werror_flag" ||
++ 	 test ! -s conftest.err
++        } && test -s conftest.$ac_objext; then
++   ac_cv_sys_file_offset_bits=no; break
++ else
++   $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++ 
++ 
++ fi
++ 
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++   cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h.  */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h.  */
++ #define _FILE_OFFSET_BITS 64
++ #include <sys/types.h>
++  /* Check that off_t can represent 2**63 - 1 correctly.
++     We can't simply define LARGE_OFF_T to be 9223372036854775807,
++     since some C++ compilers masquerading as C compilers
++     incorrectly reject 9223372036854775807.  */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ 		       && LARGE_OFF_T % 2147483647 == 1)
++ 		      ? 1 : -1];
++ int
++ main ()
++ {
++ 
++   ;
++   return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++   *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++   (eval "$ac_compile") 2>conftest.er1
++   ac_status=$?
++   grep -v '^ *+' conftest.er1 >conftest.err
++   rm -f conftest.er1
++   cat conftest.err >&5
++   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); } && {
++ 	 test -z "$ac_c_werror_flag" ||
++ 	 test ! -s conftest.err
++        } && test -s conftest.$ac_objext; then
++   ac_cv_sys_file_offset_bits=64; break
++ else
++   $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++ 
++ 
++ fi
++ 
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++   ac_cv_sys_file_offset_bits=unknown
++   break
++ done
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
++ $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
++ case $ac_cv_sys_file_offset_bits in #(
++   no | unknown) ;;
++   *)
++ cat >>confdefs.h <<_ACEOF
++ #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
++ _ACEOF
++ ;;
++ esac
++ rm -rf conftest*
++   if test $ac_cv_sys_file_offset_bits = unknown; then
++     { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
++ $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
++ if test "${ac_cv_sys_large_files+set}" = set; then
++   $as_echo_n "(cached) " >&6
++ else
++   while :; do
++   cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h.  */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h.  */
++ #include <sys/types.h>
++  /* Check that off_t can represent 2**63 - 1 correctly.
++     We can't simply define LARGE_OFF_T to be 9223372036854775807,
++     since some C++ compilers masquerading as C compilers
++     incorrectly reject 9223372036854775807.  */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ 		       && LARGE_OFF_T % 2147483647 == 1)
++ 		      ? 1 : -1];
++ int
++ main ()
++ {
++ 
++   ;
++   return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++   *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++   (eval "$ac_compile") 2>conftest.er1
++   ac_status=$?
++   grep -v '^ *+' conftest.er1 >conftest.err
++   rm -f conftest.er1
++   cat conftest.err >&5
++   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); } && {
++ 	 test -z "$ac_c_werror_flag" ||
++ 	 test ! -s conftest.err
++        } && test -s conftest.$ac_objext; then
++   ac_cv_sys_large_files=no; break
++ else
++   $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++ 
++ 
++ fi
++ 
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++   cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h.  */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h.  */
++ #define _LARGE_FILES 1
++ #include <sys/types.h>
++  /* Check that off_t can represent 2**63 - 1 correctly.
++     We can't simply define LARGE_OFF_T to be 9223372036854775807,
++     since some C++ compilers masquerading as C compilers
++     incorrectly reject 9223372036854775807.  */
++ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
++   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
++ 		       && LARGE_OFF_T % 2147483647 == 1)
++ 		      ? 1 : -1];
++ int
++ main ()
++ {
++ 
++   ;
++   return 0;
++ }
++ _ACEOF
++ rm -f conftest.$ac_objext
++ if { (ac_try="$ac_compile"
++ case "(($ac_try" in
++   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++   *) ac_try_echo=$ac_try;;
++ esac
++ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++ $as_echo "$ac_try_echo") >&5
++   (eval "$ac_compile") 2>conftest.er1
++   ac_status=$?
++   grep -v '^ *+' conftest.er1 >conftest.err
++   rm -f conftest.er1
++   cat conftest.err >&5
++   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); } && {
++ 	 test -z "$ac_c_werror_flag" ||
++ 	 test ! -s conftest.err
++        } && test -s conftest.$ac_objext; then
++   ac_cv_sys_large_files=1; break
++ else
++   $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++ 
++ 
++ fi
++ 
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++   ac_cv_sys_large_files=unknown
++   break
++ done
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
++ $as_echo "$ac_cv_sys_large_files" >&6; }
++ case $ac_cv_sys_large_files in #(
++   no | unknown) ;;
++   *)
++ cat >>confdefs.h <<_ACEOF
++ #define _LARGE_FILES $ac_cv_sys_large_files
++ _ACEOF
++ ;;
++ esac
++ rm -rf conftest*
++   fi
++ fi
++ 
++ 
+  { $as_echo "$as_me:$LINENO: checking for st_blksize" >&5
+  $as_echo_n "checking for st_blksize... " >&6; }
+  cat >conftest.$ac_ext <<_ACEOF
+*** ../vim-7.2.412/src/version.c	2010-05-07 15:51:59.000000000 +0200
+--- src/version.c	2010-05-07 16:04:29.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     413,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+2. Page yourself over the intercom. Don't disguise your voice.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.414
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.414
+Problem:    CTRK-K <space> <space> does not produce 0xa0 as expected. (Tony
+	    Mechelynck)
+Solution:   Remove the Unicode range 0xe000 - 0xefff from digraphs, these are
+	    not valid characters.
+Files:	    src/digraph.c
+
+
+*** ../vim-7.2.413/src/digraph.c	2009-05-13 14:12:14.000000000 +0200
+--- src/digraph.c	2010-04-11 17:28:22.000000000 +0200
+***************
+*** 1933,1977 ****
+  	{'7', 'c', 0x3226},
+  	{'8', 'c', 0x3227},
+  	{'9', 'c', 0x3228},
+! 	{' ', ' ', 0xe000},
+! 	{'/', 'c', 0xe001},
+! 	{'U', 'A', 0xe002},
+! 	{'U', 'B', 0xe003},
+! 	{'"', '3', 0xe004},
+! 	{'"', '1', 0xe005},
+! 	{'"', '!', 0xe006},
+! 	{'"', '\'', 0xe007},
+! 	{'"', '>', 0xe008},
+! 	{'"', '?', 0xe009},
+! 	{'"', '-', 0xe00a},
+! 	{'"', '(', 0xe00b},
+! 	{'"', '.', 0xe00c},
+! 	{'"', ':', 0xe00d},
+! 	{'"', '0', 0xe00e},
+! 	{'"', '"', 0xe00f},
+! 	{'"', '<', 0xe010},
+! 	{'"', ',', 0xe011},
+! 	{'"', ';', 0xe012},
+! 	{'"', '_', 0xe013},
+! 	{'"', '=', 0xe014},
+! 	{'"', '/', 0xe015},
+! 	{'"', 'i', 0xe016},
+! 	{'"', 'd', 0xe017},
+! 	{'"', 'p', 0xe018},
+! 	{';', ';', 0xe019},
+! 	{',', ',', 0xe01a},
+! 	{'b', '3', 0xe01b},
+! 	{'C', 'i', 0xe01c},
+! 	{'f', '(', 0xe01d},
+! 	{'e', 'd', 0xe01e},
+! 	{'a', 'm', 0xe01f},
+! 	{'p', 'm', 0xe020},
+! 	{'F', 'l', 0xe023},
+! 	{'G', 'F', 0xe024},
+! 	{'>', 'V', 0xe025},
+! 	{'!', '*', 0xe026},
+! 	{'?', '*', 0xe027},
+! 	{'J', '<', 0xe028},
+  	{'f', 'f', 0xfb00},
+  	{'f', 'i', 0xfb01},
+  	{'f', 'l', 0xfb02},
+--- 1933,1940 ----
+  	{'7', 'c', 0x3226},
+  	{'8', 'c', 0x3227},
+  	{'9', 'c', 0x3228},
+! 	/* code points 0xe000 - 0xefff excluded, they have no assigned
+! 	 * characters, only used in proposals. */
+  	{'f', 'f', 0xfb00},
+  	{'f', 'i', 0xfb01},
+  	{'f', 'l', 0xfb02},
+*** ../vim-7.2.413/src/version.c	2010-05-07 16:05:48.000000000 +0200
+--- src/version.c	2010-05-07 16:17:26.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     414,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+4. Put your garbage can on your desk and label it "in".
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.415
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.415
+Problem:    Win32: Can't open a remote file when starting Vim.
+Solution:   Don't invoke cygwin_conv_path() for URLs. (Tomoya Adachi)
+Files:	    src/main.c
+
+
+*** ../vim-7.2.414/src/main.c	2009-12-16 18:27:29.000000000 +0100
+--- src/main.c	2010-04-12 20:57:44.000000000 +0200
+***************
+*** 1477,1483 ****
+  	++initstr;
+      }
+  
+!     /* Avoid using evim mode for "editor". */
+      if (TOLOWER_ASC(initstr[0]) == 'e'
+  	    && (TOLOWER_ASC(initstr[1]) == 'v'
+  		|| TOLOWER_ASC(initstr[1]) == 'g'))
+--- 1477,1483 ----
+  	++initstr;
+      }
+  
+!     /* Use evim mode for "evim" and "egvim", not for "editor". */
+      if (TOLOWER_ASC(initstr[0]) == 'e'
+  	    && (TOLOWER_ASC(initstr[1]) == 'v'
+  		|| TOLOWER_ASC(initstr[1]) == 'g'))
+***************
+*** 2262,2268 ****
+  	     * Look for evidence of non-Cygwin paths before we bother.
+  	     * This is only for when using the Unix files.
+  	     */
+! 	    if (strpbrk(p, "\\:") != NULL)
+  	    {
+  		char posix_path[PATH_MAX];
+  
+--- 2262,2268 ----
+  	     * Look for evidence of non-Cygwin paths before we bother.
+  	     * This is only for when using the Unix files.
+  	     */
+! 	    if (strpbrk(p, "\\:") != NULL && !path_with_url(p))
+  	    {
+  		char posix_path[PATH_MAX];
+  
+*** ../vim-7.2.414/src/version.c	2010-05-07 16:18:08.000000000 +0200
+--- src/version.c	2010-05-07 16:34:22.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     415,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+6. In the memo field of all your checks, write "for sexual favors".
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.416
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.416
+Problem:    Logtalk.dict is not installed.
+Solution:   Add it to the install target. (Markus Heidelberg)
+Files:      src/Makefile
+
+
+*** ../vim-7.2.415/src/Makefile	2010-05-07 16:35:12.000000000 +0200
+--- src/Makefile	2010-04-06 20:19:48.000000000 +0200
+***************
+*** 30,36 ****
+  #	  want to disable using X11 libraries.	This speeds up starting Vim,
+  #	  but the window title will not be set and the X11 selection can not
+  #	  used.
+! #	- Uncomment the line "CONF_OPT_XSMP = --without-xsmp" if you have the
+  #	  X11 Session Management Protocol (XSMP) library (libSM) but do not
+  #	  want to use it.
+  #	  This can speedup Vim startup but Vim loses the ability to catch the
+--- 30,36 ----
+  #	  want to disable using X11 libraries.	This speeds up starting Vim,
+  #	  but the window title will not be set and the X11 selection can not
+  #	  used.
+! #	- Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the
+  #	  X11 Session Management Protocol (XSMP) library (libSM) but do not
+  #	  want to use it.
+  #	  This can speedup Vim startup but Vim loses the ability to catch the
+***************
+*** 1882,1888 ****
+  	cd $(PLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_PLUG)
+  	cd $(DEST_PLUG); chmod $(HELPMOD) *.vim README.txt
+  # install the ftplugin files
+! 	cd $(FTPLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_FTP)
+  	cd $(DEST_FTP); chmod $(HELPMOD) *.vim README.txt
+  # install the compiler files
+  	cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP)
+--- 1882,1888 ----
+  	cd $(PLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_PLUG)
+  	cd $(DEST_PLUG); chmod $(HELPMOD) *.vim README.txt
+  # install the ftplugin files
+! 	cd $(FTPLUGSOURCE); $(INSTALL_DATA) *.vim README.txt logtalk.dict $(DEST_FTP)
+  	cd $(DEST_FTP); chmod $(HELPMOD) *.vim README.txt
+  # install the compiler files
+  	cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP)
+*** ../vim-7.2.415/src/version.c	2010-05-07 16:34:59.000000000 +0200
+--- src/version.c	2010-05-07 16:53:17.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     416,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+8. Don't use any punctuation marks.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.417
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.417
+Problem:    When 'shell' has an argument with a slash then 'shellpipe' is not
+	    set properly. (Britton Kerin)
+Solution:   Assume there are no spaces in the path, arguments follow.
+Files:	    src/option.c
+
+
+*** ../vim-7.2.416/src/option.c	2010-02-24 14:34:10.000000000 +0100
+--- src/option.c	2010-05-13 13:05:28.000000000 +0200
+***************
+*** 3696,3704 ****
+--- 3696,3727 ----
+       * Isolate the name of the shell:
+       * - Skip beyond any path.  E.g., "/usr/bin/csh -f" -> "csh -f".
+       * - Remove any argument.  E.g., "csh -f" -> "csh".
++      * But don't allow a space in the path, so that this works:
++      *   "/usr/bin/csh --rcfile ~/.cshrc"
++      * But don't do that for Windows, it's common to have a space in the path.
+       */
++ #ifdef WIN3264
+      p = gettail(p_sh);
+      p = vim_strnsave(p, (int)(skiptowhite(p) - p));
++ #else
++     p = skiptowhite(p_sh);
++     if (*p == NUL)
++     {
++ 	/* No white space, use the tail. */
++ 	p = vim_strsave(gettail(p_sh));
++     }
++     else
++     {
++ 	char_u  *p1, *p2;
++ 
++ 	/* Find the last path separator before the space. */
++ 	p1 = p_sh;
++ 	for (p2 = p_sh; p2 < p; mb_ptr_adv(p2))
++ 	    if (vim_ispathsep(*p2))
++ 		p1 = p2 + 1;
++ 	p = vim_strnsave(p1, (int)(p - p1));
++     }
++ #endif
+      if (p != NULL)
+      {
+  	/*
+*** ../vim-7.2.416/src/version.c	2010-05-07 16:54:32.000000000 +0200
+--- src/version.c	2010-05-13 13:11:17.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     417,
+  /**/
+
+-- 
+If you put 7 of the most talented OSS developers in a room for a week
+and asked them to fix a bug in a spreadsheet program, in 1 week
+you'd have 2 new mail readers and a text-based web browser.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.418
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.418
+Problem:    Vim tries to set the background or foreground color in a terminal
+	    to -1.  (Graywh)  Happens with ":hi Normal ctermbg=NONE".
+Solution:   When resetting the foreground or background color don't set the
+	    color, let the clear screen code do that.
+Files:	    src/syntax.c
+
+
+*** ../vim-7.2.417/src/syntax.c	2010-03-23 14:39:07.000000000 +0100
+--- src/syntax.c	2010-05-13 15:34:27.000000000 +0200
+***************
+*** 7136,7142 ****
+  		    }
+  		}
+  	    }
+! 	    /* Add one to the argument, to avoid zero */
+  	    if (key[5] == 'F')
+  	    {
+  		HL_TABLE()[idx].sg_cterm_fg = color + 1;
+--- 7136,7143 ----
+  		    }
+  		}
+  	    }
+! 	    /* Add one to the argument, to avoid zero.  Zero is used for
+! 	     * "NONE", then "color" is -1. */
+  	    if (key[5] == 'F')
+  	    {
+  		HL_TABLE()[idx].sg_cterm_fg = color + 1;
+***************
+*** 7150,7156 ****
+  #endif
+  		    {
+  			must_redraw = CLEAR;
+! 			if (termcap_active)
+  			    term_fg_color(color);
+  		    }
+  		}
+--- 7151,7157 ----
+  #endif
+  		    {
+  			must_redraw = CLEAR;
+! 			if (termcap_active && color >= 0)
+  			    term_fg_color(color);
+  		    }
+  		}
+***************
+*** 7167,7182 ****
+  #endif
+  		    {
+  			must_redraw = CLEAR;
+! 			if (termcap_active)
+! 			    term_bg_color(color);
+! 			if (t_colors < 16)
+! 			    i = (color == 0 || color == 4);
+! 			else
+! 			    i = (color < 7 || color == 8);
+! 			/* Set the 'background' option if the value is wrong. */
+! 			if (i != (*p_bg == 'd'))
+! 			    set_option_value((char_u *)"bg", 0L,
+! 				 i ? (char_u *)"dark" : (char_u *)"light", 0);
+  		    }
+  		}
+  	    }
+--- 7168,7188 ----
+  #endif
+  		    {
+  			must_redraw = CLEAR;
+! 			if (color >= 0)
+! 			{
+! 			    if (termcap_active)
+! 				term_bg_color(color);
+! 			    if (t_colors < 16)
+! 				i = (color == 0 || color == 4);
+! 			    else
+! 				i = (color < 7 || color == 8);
+! 			    /* Set the 'background' option if the value is
+! 			     * wrong. */
+! 			    if (i != (*p_bg == 'd'))
+! 				set_option_value((char_u *)"bg", 0L,
+! 					i ?  (char_u *)"dark"
+! 					  : (char_u *)"light", 0);
+! 			}
+  		    }
+  		}
+  	    }
+*** ../vim-7.2.417/src/version.c	2010-05-13 13:12:01.000000000 +0200
+--- src/version.c	2010-05-13 14:29:59.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     418,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+30. Even though you died last week, you've managed to retain OPS on your
+    favorite IRC channel.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.419
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.419
+Problem:    Memory leak in Motif when clicking on "Search Vim Help".
+Solution:   Free string returned by XmTextGetString(). (Dominique Pelle)
+Files:	    src/gui_motif.c
+
+
+*** ../vim-7.2.418/src/gui_motif.c	2009-05-21 23:25:38.000000000 +0200
+--- src/gui_motif.c	2010-05-13 16:08:14.000000000 +0200
+***************
+*** 2917,2922 ****
+--- 2917,2923 ----
+  	    *textfield = NUL;
+  	else
+  	    vim_strncpy(textfield, p, IOSIZE - 1);
++ 	XtFree((char *)p);
+      }
+  
+      suppress_dialog_mnemonics(dialogform);
+*** ../vim-7.2.418/src/version.c	2010-05-13 15:40:23.000000000 +0200
+--- src/version.c	2010-05-13 16:09:28.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     419,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+32. You don't know what sex three of your closest friends are, because they
+    have neutral nicknames and you never bothered to ask.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.420
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.420
+Problem:    ":argedit" does not accept "++enc=utf8" as documented. (Dominique
+	    Pelle)
+Solution:   Add the ARGOPT flag to ":argedit".
+Files:	    src/ex_cmds.h
+
+
+*** ../vim-7.2.419/src/ex_cmds.h	2009-07-09 15:55:34.000000000 +0200
+--- src/ex_cmds.h	2010-05-13 16:18:38.000000000 +0200
+***************
+*** 52,58 ****
+  #define ARGOPT	      0x40000L	/* allow "++opt=val" argument */
+  #define SBOXOK	      0x80000L	/* allowed in the sandbox */
+  #define CMDWIN	     0x100000L	/* allowed in cmdline window */
+! #define MODIFY       0x200000L  /* forbidden in non-'modifiable' buffer */
+  #define EXFLAGS      0x400000L	/* allow flags after count in argument */
+  #define FILES	(XFILE | EXTRA)	/* multiple extra files allowed */
+  #define WORD1	(EXTRA | NOSPC)	/* one extra word allowed */
+--- 52,58 ----
+  #define ARGOPT	      0x40000L	/* allow "++opt=val" argument */
+  #define SBOXOK	      0x80000L	/* allowed in the sandbox */
+  #define CMDWIN	     0x100000L	/* allowed in cmdline window */
+! #define MODIFY       0x200000L	/* forbidden in non-'modifiable' buffer */
+  #define EXFLAGS      0x400000L	/* allow flags after count in argument */
+  #define FILES	(XFILE | EXTRA)	/* multiple extra files allowed */
+  #define WORD1	(EXTRA | NOSPC)	/* one extra word allowed */
+***************
+*** 116,122 ****
+  EX(CMD_argdo,		"argdo",	ex_listdo,
+  			BANG|NEEDARG|EXTRA|NOTRLCOM),
+  EX(CMD_argedit,		"argedit",	ex_argedit,
+! 			BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|TRLBAR),
+  EX(CMD_argglobal,	"argglobal",	ex_args,
+  			BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
+  EX(CMD_arglocal,	"arglocal",	ex_args,
+--- 116,122 ----
+  EX(CMD_argdo,		"argdo",	ex_listdo,
+  			BANG|NEEDARG|EXTRA|NOTRLCOM),
+  EX(CMD_argedit,		"argedit",	ex_argedit,
+! 			BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR),
+  EX(CMD_argglobal,	"argglobal",	ex_args,
+  			BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
+  EX(CMD_arglocal,	"arglocal",	ex_args,
+*** ../vim-7.2.419/src/version.c	2010-05-13 16:31:15.000000000 +0200
+--- src/version.c	2010-05-13 16:43:30.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     420,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+33. You name your children Eudora, Mozilla and Dotcom.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.421
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.421
+Problem:    Folds are sometimes not updated properly and there is no way to
+	    force an update.
+Solution:   Make "zx" and "zX" recompute folds (suggested by Christian
+	    Brabandt)
+Files:	    src/normal.c
+
+
+*** ../vim-7.2.420/src/normal.c	2010-05-07 15:51:59.000000000 +0200
+--- src/normal.c	2010-05-13 16:43:05.000000000 +0200
+***************
+*** 4936,4948 ****
+  
+  		/* "zx": re-apply 'foldlevel' and open folds at the cursor */
+      case 'x':	curwin->w_p_fen = TRUE;
+! 		newFoldLevel();		/* update right now */
+  		foldOpenCursor();
+  		break;
+  
+  		/* "zX": undo manual opens/closes, re-apply 'foldlevel' */
+      case 'X':	curwin->w_p_fen = TRUE;
+! 		old_fdl = -1;		/* force an update */
+  		break;
+  
+  		/* "zm": fold more */
+--- 4936,4950 ----
+  
+  		/* "zx": re-apply 'foldlevel' and open folds at the cursor */
+      case 'x':	curwin->w_p_fen = TRUE;
+! 		curwin->w_foldinvalid = TRUE;	/* recompute folds */
+! 		newFoldLevel();			/* update right now */
+  		foldOpenCursor();
+  		break;
+  
+  		/* "zX": undo manual opens/closes, re-apply 'foldlevel' */
+      case 'X':	curwin->w_p_fen = TRUE;
+! 		curwin->w_foldinvalid = TRUE;	/* recompute folds */
+! 		old_fdl = -1;			/* force an update */
+  		break;
+  
+  		/* "zm": fold more */
+*** ../vim-7.2.420/src/version.c	2010-05-13 16:46:16.000000000 +0200
+--- src/version.c	2010-05-13 17:33:34.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     421,
+  /**/
+
+-- 
+My sister Cecilia opened a computer store in Hawaii.
+She sells C shells by the seashore.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.422
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.422
+Problem:    May get E763 when using spell dictionaries.
+Solution:   Avoid utf-8 case folded character to be truncated to 8 bits and
+	    differ from latin1. (Dominique Pelle)
+Files:	    src/spell.c
+
+
+*** ../vim-7.2.421/src/spell.c	2010-01-19 13:06:42.000000000 +0100
+--- src/spell.c	2010-05-13 17:29:28.000000000 +0200
+***************
+*** 9780,9789 ****
+      {
+  	for (i = 128; i < 256; ++i)
+  	{
+  	    spelltab.st_isu[i] = utf_isupper(i);
+  	    spelltab.st_isw[i] = spelltab.st_isu[i] || utf_islower(i);
+! 	    spelltab.st_fold[i] = utf_fold(i);
+! 	    spelltab.st_upper[i] = utf_toupper(i);
+  	}
+      }
+      else
+--- 9780,9795 ----
+      {
+  	for (i = 128; i < 256; ++i)
+  	{
++ 	    int f = utf_fold(i);
++ 	    int u = utf_toupper(i);
++ 
+  	    spelltab.st_isu[i] = utf_isupper(i);
+  	    spelltab.st_isw[i] = spelltab.st_isu[i] || utf_islower(i);
+! 	    /* The folded/upper-cased value is different between latin1 and
+! 	     * utf8 for 0xb5, causing E763 for no good reason.  Use the latin1
+! 	     * value for utf-8 to avoid this. */
+! 	    spelltab.st_fold[i] = (f < 256) ? f : i;
+! 	    spelltab.st_upper[i] = (u < 256) ? u : i;
+  	}
+      }
+      else
+*** ../vim-7.2.421/src/version.c	2010-05-13 17:35:52.000000000 +0200
+--- src/version.c	2010-05-13 17:46:03.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     422,
+  /**/
+
+-- 
+Q. What happens to programmers when they die?
+A: MS-Windows programmers are reinstalled.  C++ programmers become undefined,
+   anyone who refers to them will die as well.  Java programmers reincarnate
+   after being garbage collected.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.423
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.423
+Problem:    Crash when assigning s: to variable. (Yukihiro Nakadaira)
+Solution:   Make ga_scripts contain pointer to scriptvar_T instead of
+	    scriptvar_T itself. (Dominique Pelle)
+Files:	    src/eval.c
+
+
+*** ../vim-7.2.422/src/eval.c	2010-03-17 19:53:44.000000000 +0100
+--- src/eval.c	2010-05-14 12:02:16.000000000 +0200
+***************
+*** 145,153 ****
+      dict_T	sv_dict;
+  } scriptvar_T;
+  
+! static garray_T	    ga_scripts = {0, 0, sizeof(scriptvar_T), 4, NULL};
+! #define SCRIPT_SV(id) (((scriptvar_T *)ga_scripts.ga_data)[(id) - 1])
+! #define SCRIPT_VARS(id) (SCRIPT_SV(id).sv_dict.dv_hashtab)
+  
+  static int echo_attr = 0;   /* attributes used for ":echo" */
+  
+--- 145,153 ----
+      dict_T	sv_dict;
+  } scriptvar_T;
+  
+! static garray_T	    ga_scripts = {0, 0, sizeof(scriptvar_T *), 4, NULL};
+! #define SCRIPT_SV(id) (((scriptvar_T **)ga_scripts.ga_data)[(id) - 1])
+! #define SCRIPT_VARS(id) (SCRIPT_SV(id)->sv_dict.dv_hashtab)
+  
+  static int echo_attr = 0;   /* attributes used for ":echo" */
+  
+***************
+*** 866,875 ****
+      hash_init(&vimvarht);  /* garbage_collect() will access it */
+      hash_clear(&compat_hashtab);
+  
+-     /* script-local variables */
+-     for (i = 1; i <= ga_scripts.ga_len; ++i)
+- 	vars_clear(&SCRIPT_VARS(i));
+-     ga_clear(&ga_scripts);
+      free_scriptnames();
+  
+      /* global variables */
+--- 866,871 ----
+***************
+*** 878,883 ****
+--- 874,887 ----
+      /* autoloaded script names */
+      ga_clear_strings(&ga_loaded);
+  
++     /* script-local variables */
++     for (i = 1; i <= ga_scripts.ga_len; ++i)
++     {
++ 	vars_clear(&SCRIPT_VARS(i));
++ 	vim_free(SCRIPT_SV(i));
++     }
++     ga_clear(&ga_scripts);
++ 
+      /* unreferenced lists and dicts */
+      (void)garbage_collect();
+  
+***************
+*** 18803,18809 ****
+  	/* Must be something like "s:", otherwise "ht" would be NULL. */
+  	switch (varname[-2])
+  	{
+! 	    case 's': return &SCRIPT_SV(current_SID).sv_var;
+  	    case 'g': return &globvars_var;
+  	    case 'v': return &vimvars_var;
+  	    case 'b': return &curbuf->b_bufvar;
+--- 18807,18813 ----
+  	/* Must be something like "s:", otherwise "ht" would be NULL. */
+  	switch (varname[-2])
+  	{
+! 	    case 's': return &SCRIPT_SV(current_SID)->sv_var;
+  	    case 'g': return &globvars_var;
+  	    case 'v': return &vimvars_var;
+  	    case 'b': return &curbuf->b_bufvar;
+***************
+*** 18928,18940 ****
+  	    ht = &SCRIPT_VARS(i);
+  	    if (ht->ht_mask == HT_INIT_SIZE - 1)
+  		ht->ht_array = ht->ht_smallarray;
+! 	    sv = &SCRIPT_SV(i);
+  	    sv->sv_var.di_tv.vval.v_dict = &sv->sv_dict;
+  	}
+  
+  	while (ga_scripts.ga_len < id)
+  	{
+! 	    sv = &SCRIPT_SV(ga_scripts.ga_len + 1);
+  	    init_var_dict(&sv->sv_dict, &sv->sv_var);
+  	    ++ga_scripts.ga_len;
+  	}
+--- 18932,18945 ----
+  	    ht = &SCRIPT_VARS(i);
+  	    if (ht->ht_mask == HT_INIT_SIZE - 1)
+  		ht->ht_array = ht->ht_smallarray;
+! 	    sv = SCRIPT_SV(i);
+  	    sv->sv_var.di_tv.vval.v_dict = &sv->sv_dict;
+  	}
+  
+  	while (ga_scripts.ga_len < id)
+  	{
+! 	    sv = SCRIPT_SV(ga_scripts.ga_len + 1) = 
+! 		(scriptvar_T *)alloc_clear(sizeof(scriptvar_T));
+  	    init_var_dict(&sv->sv_dict, &sv->sv_var);
+  	    ++ga_scripts.ga_len;
+  	}
+***************
+*** 21931,21937 ****
+      if (find_viminfo_parameter('!') == NULL)
+  	return;
+  
+!     fprintf(fp, _("\n# global variables:\n"));
+  
+      todo = (int)globvarht.ht_used;
+      for (hi = globvarht.ht_array; todo > 0; ++hi)
+--- 21936,21942 ----
+      if (find_viminfo_parameter('!') == NULL)
+  	return;
+  
+!     fputs(_("\n# global variables:\n"), fp);
+  
+      todo = (int)globvarht.ht_used;
+      for (hi = globvarht.ht_array; todo > 0; ++hi)
+*** ../vim-7.2.422/src/version.c	2010-05-13 17:46:53.000000000 +0200
+--- src/version.c	2010-05-14 12:13:19.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     423,
+  /**/
+
+-- 
+He who laughs last, thinks slowest.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.424
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.424
+Problem:    ":colorscheme" without an argument doesn't do anything.
+Solution:   Make it echo the current color scheme name.  (partly by Christian
+	    Brabandt)
+Files:	    runtime/doc/syntax.txt, src/ex_cmds.h, src/ex_docmd.c
+
+
+*** ../vim-7.2.423/runtime/doc/syntax.txt	2008-08-09 19:36:52.000000000 +0200
+--- runtime/doc/syntax.txt	2010-05-14 15:27:47.000000000 +0200
+***************
+*** 113,118 ****
+--- 113,121 ----
+      :syntax off		$VIMRUNTIME/syntax/nosyntax.vim
+  Also see |syntax-loading|.
+  
++ NOTE: If displaying long lines is slow and switching off syntax highlighting
++ makes it fast, consider setting the 'synmaxcol' option to a lower value.
++ 
+  ==============================================================================
+  2. Syntax files						*:syn-files*
+  
+***************
+*** 3829,3841 ****
+  in their own color.
+  
+  						*:colo* *:colorscheme* *E185*
+  :colo[rscheme] {name}	Load color scheme {name}.  This searches 'runtimepath'
+  			for the file "colors/{name}.vim.  The first one that
+  			is found is loaded.
+! 			To see the name of the currently active color scheme
+! 			(if there is one): >
+! 				:echo g:colors_name
+! <			Doesn't work recursively, thus you can't use
+  			":colorscheme" in a color scheme script.
+  			After the color scheme has been loaded the
+  			|ColorScheme| autocommand event is triggered.
+--- 3871,3890 ----
+  in their own color.
+  
+  						*:colo* *:colorscheme* *E185*
++ :colo[rscheme]		Output the name of the currently active color scheme.
++ 			This is basically the same as >
++ 				:echo g:colors_name
++ <			In case g:colors_name has not been defined :colo will
++ 			output "default".  When compiled without the |+eval|
++ 			feature it will output "unknown".
++ 
+  :colo[rscheme] {name}	Load color scheme {name}.  This searches 'runtimepath'
+  			for the file "colors/{name}.vim.  The first one that
+  			is found is loaded.
+! 			To see the name of the currently active color scheme: >
+! 				:colo
+! <			The name is also stored in the g:colors_name variable.
+! 			Doesn't work recursively, thus you can't use
+  			":colorscheme" in a color scheme script.
+  			After the color scheme has been loaded the
+  			|ColorScheme| autocommand event is triggered.
+***************
+*** 4032,4038 ****
+  	colors.
+  	When a colorscheme is being used, changing 'background' causes it to
+  	be reloaded, which may reset all colors (including Normal).  First
+! 	delete the "colors_name" variable when you don't want this.
+  
+  	When you have set "ctermfg" or "ctermbg" for the Normal group, Vim
+  	needs to reset the color when exiting.	This is done with the "op"
+--- 4081,4087 ----
+  	colors.
+  	When a colorscheme is being used, changing 'background' causes it to
+  	be reloaded, which may reset all colors (including Normal).  First
+! 	delete the "g:colors_name" variable when you don't want this.
+  
+  	When you have set "ctermfg" or "ctermbg" for the Normal group, Vim
+  	needs to reset the color when exiting.	This is done with the "op"
+*** ../vim-7.2.423/src/ex_cmds.h	2010-05-13 16:46:16.000000000 +0200
+--- src/ex_cmds.h	2010-05-14 13:08:45.000000000 +0200
+***************
+*** 256,262 ****
+  EX(CMD_colder,		"colder",	qf_age,
+  			RANGE|NOTADR|COUNT|TRLBAR),
+  EX(CMD_colorscheme,	"colorscheme",	ex_colorscheme,
+! 			NEEDARG|WORD1|TRLBAR|CMDWIN),
+  EX(CMD_command,		"command",	ex_command,
+  			EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN),
+  EX(CMD_comclear,	"comclear",	ex_comclear,
+--- 256,262 ----
+  EX(CMD_colder,		"colder",	qf_age,
+  			RANGE|NOTADR|COUNT|TRLBAR),
+  EX(CMD_colorscheme,	"colorscheme",	ex_colorscheme,
+! 			WORD1|TRLBAR|CMDWIN),
+  EX(CMD_command,		"command",	ex_command,
+  			EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN),
+  EX(CMD_comclear,	"comclear",	ex_comclear,
+*** ../vim-7.2.423/src/ex_docmd.c	2010-03-02 15:55:51.000000000 +0100
+--- src/ex_docmd.c	2010-05-14 15:26:14.000000000 +0200
+***************
+*** 6226,6232 ****
+  ex_colorscheme(eap)
+      exarg_T	*eap;
+  {
+!     if (load_colors(eap->arg) == FAIL)
+  	EMSG2(_("E185: Cannot find color scheme %s"), eap->arg);
+  }
+  
+--- 6226,6256 ----
+  ex_colorscheme(eap)
+      exarg_T	*eap;
+  {
+!     if (*eap->arg == NUL)
+!     {
+! #ifdef FEAT_EVAL
+! 	char_u *expr = vim_strsave((char_u *)"g:colors_name");
+! 	char_u *p = NULL;
+! 
+! 	if (expr != NULL)
+! 	{
+! 	    ++emsg_off;
+! 	    p = eval_to_string(expr, NULL, FALSE);
+! 	    --emsg_off;
+! 	    vim_free(expr);
+! 	}
+! 	if (p != NULL)
+! 	{
+! 	    MSG(p);
+! 	    vim_free(p);
+! 	}
+! 	else
+! 	    MSG("default");
+! #else
+! 	MSG(_("unknown"));
+! #endif
+!     }
+!     else if (load_colors(eap->arg) == FAIL)
+  	EMSG2(_("E185: Cannot find color scheme %s"), eap->arg);
+  }
+  
+*** ../vim-7.2.423/src/version.c	2010-05-14 12:16:19.000000000 +0200
+--- src/version.c	2010-05-14 15:23:20.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     424,
+  /**/
+
+-- 
+Everyone has a photographic memory. Some don't have film.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.425
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.425
+Problem:    Some compilers complain about fourth EX() argument.
+Solution:   Add cast to long_u.
+Files:	    src/ex_cmds.h
+
+
+*** ../vim-7.2.424/src/ex_cmds.h	2010-05-14 15:28:37.000000000 +0200
+--- src/ex_cmds.h	2010-05-14 13:08:45.000000000 +0200
+***************
+*** 74,80 ****
+  # undef EX	    /* just in case */
+  #endif
+  #ifdef DO_DECLARE_EXCMD
+! # define EX(a, b, c, d)  {(char_u *)b, c, d}
+  
+  typedef void (*ex_func_T) __ARGS((exarg_T *eap));
+  
+--- 74,80 ----
+  # undef EX	    /* just in case */
+  #endif
+  #ifdef DO_DECLARE_EXCMD
+! # define EX(a, b, c, d)  {(char_u *)b, c, (long_u)(d)}
+  
+  typedef void (*ex_func_T) __ARGS((exarg_T *eap));
+  
+*** ../vim-7.2.424/src/version.c	2010-05-14 15:28:37.000000000 +0200
+--- src/version.c	2010-05-14 15:42:23.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     425,
+  /**/
+
+-- 
+The users that I support would double-click on a landmine to find out
+what happens.				-- A system administrator
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.426
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.426
+Problem:    Commas in 'langmap' are not always handled correctly.
+Solution:   Require commas to be backslash escaped. (James Vega)
+Files:	    src/option.c
+
+
+*** ../vim-7.2.425/src/option.c	2010-05-13 13:12:01.000000000 +0200
+--- src/option.c	2010-05-14 16:04:21.000000000 +0200
+***************
+*** 10432,10437 ****
+--- 10432,10442 ----
+  	    p2 = NULL;	    /* aAbBcCdD form, p2 is NULL */
+  	while (p[0])
+  	{
++ 	    if (p[0] == ',')
++ 	    {
++ 		++p;
++ 		break;
++ 	    }
+  	    if (p[0] == '\\' && p[1] != NUL)
+  		++p;
+  #ifdef FEAT_MBYTE
+***************
+*** 10439,10464 ****
+  #else
+  	    from = p[0];
+  #endif
+  	    if (p2 == NULL)
+  	    {
+  		mb_ptr_adv(p);
+! 		if (p[0] == '\\')
+! 		    ++p;
+  #ifdef FEAT_MBYTE
+! 		to = (*mb_ptr2char)(p);
+  #else
+! 		to = p[0];
+  #endif
+  	    }
+  	    else
+  	    {
+! 		if (p2[0] == '\\')
+! 		    ++p2;
+  #ifdef FEAT_MBYTE
+! 		to = (*mb_ptr2char)(p2);
+  #else
+! 		to = p2[0];
+  #endif
+  	    }
+  	    if (to == NUL)
+  	    {
+--- 10444,10476 ----
+  #else
+  	    from = p[0];
+  #endif
++ 	    to = NUL;
+  	    if (p2 == NULL)
+  	    {
+  		mb_ptr_adv(p);
+! 		if (p[0] != ',')
+! 		{
+! 		    if (p[0] == '\\')
+! 			++p;
+  #ifdef FEAT_MBYTE
+! 		    to = (*mb_ptr2char)(p);
+  #else
+! 		    to = p[0];
+  #endif
++ 		}
+  	    }
+  	    else
+  	    {
+! 		if (p2[0] != ',')
+! 		{
+! 		    if (p2[0] == '\\')
+! 			++p2;
+  #ifdef FEAT_MBYTE
+! 		    to = (*mb_ptr2char)(p2);
+  #else
+! 		    to = p2[0];
+  #endif
++ 		}
+  	    }
+  	    if (to == NUL)
+  	    {
+***************
+*** 10476,10490 ****
+  
+  	    /* Advance to next pair */
+  	    mb_ptr_adv(p);
+! 	    if (p2 == NULL)
+! 	    {
+! 		if (p[0] == ',')
+! 		{
+! 		    ++p;
+! 		    break;
+! 		}
+! 	    }
+! 	    else
+  	    {
+  		mb_ptr_adv(p2);
+  		if (*p == ';')
+--- 10488,10494 ----
+  
+  	    /* Advance to next pair */
+  	    mb_ptr_adv(p);
+! 	    if (p2 != NULL)
+  	    {
+  		mb_ptr_adv(p2);
+  		if (*p == ';')
+*** ../vim-7.2.425/src/version.c	2010-05-14 15:42:49.000000000 +0200
+--- src/version.c	2010-05-14 17:32:11.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     426,
+  /**/
+
+-- 
+On the other hand, you have different fingers.
+                                      -- Steven Wright
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.427
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.427
+Problem:    The swapfile is created using the destination of a symlink, but
+	    recovery doesn't follow symlinks.
+Solution:   When recovering, resolve symlinks. (James Vega)
+Files:	    src/memline.c
+
+
+*** ../vim-7.2.426/src/memline.c	2010-03-10 14:46:21.000000000 +0100
+--- src/memline.c	2010-05-14 17:28:29.000000000 +0200
+***************
+*** 245,250 ****
+--- 245,253 ----
+  #ifdef FEAT_BYTEOFF
+  static void ml_updatechunk __ARGS((buf_T *buf, long line, long len, int updtype));
+  #endif
++ #ifdef HAVE_READLINK
++ static int resolve_symlink __ARGS((char_u *fname, char_u *buf));
++ #endif
+  
+  /*
+   * Open a new memline for "buf".
+***************
+*** 1401,1410 ****
+      int		i;
+      char_u	*dirp;
+      char_u	*dir_name;
+  
+      if (list)
+      {
+! 	    /* use msg() to start the scrolling properly */
+  	msg((char_u *)_("Swap files found:"));
+  	msg_putchar('\n');
+      }
+--- 1404,1422 ----
+      int		i;
+      char_u	*dirp;
+      char_u	*dir_name;
++     char_u	*fname_res = *fname;
++ #ifdef HAVE_READLINK
++     char_u	fname_buf[MAXPATHL];
++ 
++     /* Expand symlink in the file name, because the swap file is created with
++      * the actual file instead of with the symlink. */
++     if (resolve_symlink(*fname, fname_buf) == OK)
++ 	fname_res = fname_buf;
++ #endif
+  
+      if (list)
+      {
+! 	/* use msg() to start the scrolling properly */
+  	msg((char_u *)_("Swap files found:"));
+  	msg_putchar('\n');
+      }
+***************
+*** 1453,1459 ****
+  #endif
+  	    }
+  	    else
+! 		num_names = recov_file_names(names, *fname, TRUE);
+  	}
+  	else			    /* check directory dir_name */
+  	{
+--- 1465,1471 ----
+  #endif
+  	    }
+  	    else
+! 		num_names = recov_file_names(names, fname_res, TRUE);
+  	}
+  	else			    /* check directory dir_name */
+  	{
+***************
+*** 1490,1501 ****
+  		if (after_pathsep(dir_name, p) && p[-1] == p[-2])
+  		{
+  		    /* Ends with '//', Use Full path for swap name */
+! 		    tail = make_percent_swname(dir_name, *fname);
+  		}
+  		else
+  #endif
+  		{
+! 		    tail = gettail(*fname);
+  		    tail = concat_fnames(dir_name, tail, TRUE);
+  		}
+  		if (tail == NULL)
+--- 1502,1513 ----
+  		if (after_pathsep(dir_name, p) && p[-1] == p[-2])
+  		{
+  		    /* Ends with '//', Use Full path for swap name */
+! 		    tail = make_percent_swname(dir_name, fname_res);
+  		}
+  		else
+  #endif
+  		{
+! 		    tail = gettail(fname_res);
+  		    tail = concat_fnames(dir_name, tail, TRUE);
+  		}
+  		if (tail == NULL)
+***************
+*** 1535,1545 ****
+  	    struct stat	    st;
+  	    char_u	    *swapname;
+  
+  #if defined(VMS) || defined(RISCOS)
+! 	    swapname = modname(*fname, (char_u *)"_swp", FALSE);
+  #else
+! 	    swapname = modname(*fname, (char_u *)".swp", TRUE);
+  #endif
+  	    if (swapname != NULL)
+  	    {
+  		if (mch_stat((char *)swapname, &st) != -1)	    /* It exists! */
+--- 1547,1559 ----
+  	    struct stat	    st;
+  	    char_u	    *swapname;
+  
++ 	    swapname = modname(fname_res,
+  #if defined(VMS) || defined(RISCOS)
+! 			       (char_u *)"_swp", FALSE
+  #else
+! 			       (char_u *)".swp", TRUE
+  #endif
++ 			      );
+  	    if (swapname != NULL)
+  	    {
+  		if (mch_stat((char *)swapname, &st) != -1)	    /* It exists! */
+***************
+*** 3508,3515 ****
+  }
+  
+  #ifdef HAVE_READLINK
+- static int resolve_symlink __ARGS((char_u *fname, char_u *buf));
+- 
+  /*
+   * Resolve a symlink in the last component of a file name.
+   * Note that f_resolve() does it for every part of the path, we don't do that
+--- 3522,3527 ----
+***************
+*** 3601,3609 ****
+      char_u	*dir_name;
+  {
+      char_u	*r, *s;
+  #ifdef HAVE_READLINK
+      char_u	fname_buf[MAXPATHL];
+-     char_u	*fname_res;
+  #endif
+  
+  #if defined(UNIX) || defined(WIN3264)  /* Need _very_ long file names */
+--- 3613,3621 ----
+      char_u	*dir_name;
+  {
+      char_u	*r, *s;
++     char_u	*fname_res = fname;
+  #ifdef HAVE_READLINK
+      char_u	fname_buf[MAXPATHL];
+  #endif
+  
+  #if defined(UNIX) || defined(WIN3264)  /* Need _very_ long file names */
+***************
+*** 3625,3632 ****
+       * actual file instead of with the symlink. */
+      if (resolve_symlink(fname, fname_buf) == OK)
+  	fname_res = fname_buf;
+-     else
+- 	fname_res = fname;
+  #endif
+  
+      r = buf_modname(
+--- 3637,3642 ----
+***************
+*** 3639,3649 ****
+  	    /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */
+  	    ffname,
+  #else
+- # ifdef HAVE_READLINK
+  	    fname_res,
+- # else
+- 	    fname,
+- # endif
+  #endif
+  	    (char_u *)
+  #if defined(VMS) || defined(RISCOS)
+--- 3649,3655 ----
+*** ../vim-7.2.426/src/version.c	2010-05-14 17:32:53.000000000 +0200
+--- src/version.c	2010-05-14 17:50:43.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     427,
+  /**/
+
+-- 
+Change is inevitable, except from a vending machine.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.428
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.428
+Problem:    Using setqflist([]) to clear the error list doesn't work properly.
+Solution:   Set qf_nonevalid to TRUE when appropriate. (Christian Brabandt)
+Files:	    src/quickfix.c
+
+
+*** ../vim-7.2.427/src/quickfix.c	2010-01-19 14:59:14.000000000 +0100
+--- src/quickfix.c	2010-05-14 18:06:27.000000000 +0200
+***************
+*** 3654,3660 ****
+  	}
+      }
+  
+!     qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+      qi->qf_lists[qi->qf_curlist].qf_ptr = qi->qf_lists[qi->qf_curlist].qf_start;
+      qi->qf_lists[qi->qf_curlist].qf_index = 1;
+  
+--- 3654,3664 ----
+  	}
+      }
+  
+!     if (qi->qf_lists[qi->qf_curlist].qf_index == 0)
+! 	/* empty list or no valid entry */
+! 	qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE;
+!     else
+! 	qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+      qi->qf_lists[qi->qf_curlist].qf_ptr = qi->qf_lists[qi->qf_curlist].qf_start;
+      qi->qf_lists[qi->qf_curlist].qf_index = 1;
+  
+*** ../vim-7.2.427/src/version.c	2010-05-14 17:52:35.000000000 +0200
+--- src/version.c	2010-05-14 18:09:32.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     428,
+  /**/
+
+-- 
+Seen it all, done it all, can't remember most of it.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.429
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.429
+Problem:    A file that exists but access is denied may result in a "new file"
+	    message.  E.g. when its directory is unreadable.
+Solution:   Specifically check for ENOENT to decide a file doesn't exist.
+	    (partly by James Vega)
+Files:	    src/fileio.c
+
+
+*** ../vim-7.2.428/src/fileio.c	2010-03-02 12:47:58.000000000 +0100
+--- src/fileio.c	2010-05-14 18:30:09.000000000 +0200
+***************
+*** 595,601 ****
+  #endif
+  	    if (newfile)
+  	    {
+! 		if (perm < 0)
+  		{
+  		    /*
+  		     * Set the 'new-file' flag, so that when the file has
+--- 595,605 ----
+  #endif
+  	    if (newfile)
+  	    {
+! 		if (perm < 0
+! #ifdef ENOENT
+! 			&& errno == ENOENT
+! #endif
+! 		   )
+  		{
+  		    /*
+  		     * Set the 'new-file' flag, so that when the file has
+***************
+*** 664,669 ****
+--- 668,676 ----
+  # ifdef EFBIG
+  			    (errno == EFBIG) ? _("[File too big]") :
+  # endif
++ # ifdef EOVERFLOW
++ 			    (errno == EOVERFLOW) ? _("[File too big]") :
++ # endif
+  						_("[Permission Denied]")), 0);
+  		    curbuf->b_p_ro = TRUE;	/* must use "w!" now */
+  		}
+*** ../vim-7.2.428/src/version.c	2010-05-14 18:10:23.000000000 +0200
+--- src/version.c	2010-05-14 18:55:11.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     429,
+  /**/
+
+-- 
+Those who live by the sword get shot by those who don't.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.430
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.430
+Problem:    The ++bad argument is handled wrong, resulting in an invalid
+	    memory access.
+Solution:   Use the bad_char field only for the replacement character, add
+	    bad_char_idx to store the position. (Dominique Pelle)
+Files:	    src/eval.c, src/ex_cmds.h, src/ex_docmd.c
+
+
+*** ../vim-7.2.429/src/eval.c	2010-05-14 12:16:19.000000000 +0200
+--- src/eval.c	2010-05-14 19:04:53.000000000 +0200
+***************
+*** 18309,18316 ****
+  # ifdef FEAT_MBYTE
+      if (eap->force_enc != 0)
+  	len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
+!     if (eap->bad_char != 0)
+! 	len += (unsigned)STRLEN(eap->cmd + eap->bad_char) + 7;
+  # endif
+  
+      newval = alloc(len + 1);
+--- 18309,18316 ----
+  # ifdef FEAT_MBYTE
+      if (eap->force_enc != 0)
+  	len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
+!     if (eap->bad_char_idx != 0)
+! 	len += (unsigned)STRLEN(eap->cmd + eap->bad_char_idx) + 7;
+  # endif
+  
+      newval = alloc(len + 1);
+***************
+*** 18334,18342 ****
+      if (eap->force_enc != 0)
+  	sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
+  					       eap->cmd + eap->force_enc);
+!     if (eap->bad_char != 0)
+  	sprintf((char *)newval + STRLEN(newval), " ++bad=%s",
+! 					       eap->cmd + eap->bad_char);
+  # endif
+      vimvars[VV_CMDARG].vv_str = newval;
+      return oldval;
+--- 18334,18342 ----
+      if (eap->force_enc != 0)
+  	sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
+  					       eap->cmd + eap->force_enc);
+!     if (eap->bad_char_idx != 0)
+  	sprintf((char *)newval + STRLEN(newval), " ++bad=%s",
+! 					       eap->cmd + eap->bad_char_idx);
+  # endif
+      vimvars[VV_CMDARG].vv_str = newval;
+      return oldval;
+*** ../vim-7.2.429/src/ex_cmds.h	2010-05-14 15:42:49.000000000 +0200
+--- src/ex_cmds.h	2010-05-14 20:23:20.000000000 +0200
+***************
+*** 1152,1158 ****
+      int		force_ff;	/* ++ff= argument (index in cmd[]) */
+  #ifdef FEAT_MBYTE
+      int		force_enc;	/* ++enc= argument (index in cmd[]) */
+!     int		bad_char;	/* ++bad= argument (index in cmd[]) */
+  #endif
+  #ifdef FEAT_USR_CMDS
+      int		useridx;	/* user command index */
+--- 1152,1159 ----
+      int		force_ff;	/* ++ff= argument (index in cmd[]) */
+  #ifdef FEAT_MBYTE
+      int		force_enc;	/* ++enc= argument (index in cmd[]) */
+!     int		bad_char_idx;	/* ++bad= argument (index in cmd[]) */
+!     int		bad_char;	/* BAD_KEEP, BAD_DROP or replacement char */
+  #endif
+  #ifdef FEAT_USR_CMDS
+      int		useridx;	/* user command index */
+*** ../vim-7.2.429/src/ex_docmd.c	2010-05-14 15:28:37.000000000 +0200
+--- src/ex_docmd.c	2010-05-14 19:04:53.000000000 +0200
+***************
+*** 4739,4745 ****
+      else if (STRNCMP(arg, "bad", 3) == 0)
+      {
+  	arg += 3;
+! 	pp = &eap->bad_char;
+      }
+  #endif
+  
+--- 4739,4745 ----
+      else if (STRNCMP(arg, "bad", 3) == 0)
+      {
+  	arg += 3;
+! 	pp = &eap->bad_char_idx;
+      }
+  #endif
+  
+***************
+*** 4770,4776 ****
+      {
+  	/* Check ++bad= argument.  Must be a single-byte character, "keep" or
+  	 * "drop". */
+! 	p = eap->cmd + eap->bad_char;
+  	if (STRICMP(p, "keep") == 0)
+  	    eap->bad_char = BAD_KEEP;
+  	else if (STRICMP(p, "drop") == 0)
+--- 4770,4776 ----
+      {
+  	/* Check ++bad= argument.  Must be a single-byte character, "keep" or
+  	 * "drop". */
+! 	p = eap->cmd + eap->bad_char_idx;
+  	if (STRICMP(p, "keep") == 0)
+  	    eap->bad_char = BAD_KEEP;
+  	else if (STRICMP(p, "drop") == 0)
+*** ../vim-7.2.429/src/version.c	2010-05-14 18:56:33.000000000 +0200
+--- src/version.c	2010-05-14 20:39:38.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     430,
+  /**/
+
+-- 
+You have the right to remain silent. Anything you say will be
+misquoted, then used against you.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.431
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.431
+Problem:    ":amenu" moves the cursor when in Insert mode.
+Solution:   Use CTRL-\ CTRL-O instead of CTRL-O. (Christian Brabandt)
+Files:	    src/menu.c
+
+
+*** ../vim-7.2.430/src/menu.c	2009-05-17 13:30:58.000000000 +0200
+--- src/menu.c	2010-05-14 21:18:00.000000000 +0200
+***************
+*** 490,495 ****
+--- 490,496 ----
+      char_u	*next_name;
+      int		i;
+      int		c;
++     int		d;
+  #ifdef FEAT_GUI
+      int		idx;
+      int		new_idx;
+***************
+*** 746,751 ****
+--- 747,753 ----
+  		 * Don't do this if adding a tearbar (addtearoff == FALSE).
+  		 * Don't do this for "<Nop>". */
+  		c = 0;
++ 		d = 0;
+  		if (amenu && call_data != NULL && *call_data != NUL
+  #ifdef FEAT_GUI_W32
+  		       && addtearoff
+***************
+*** 761,778 ****
+  			    c = Ctrl_C;
+  			    break;
+  			case MENU_INSERT_MODE:
+! 			    c = Ctrl_O;
+  			    break;
+  		    }
+  		}
+  
+! 		if (c)
+  		{
+! 		    menu->strings[i] = alloc((unsigned)(STRLEN(call_data) + 4));
+  		    if (menu->strings[i] != NULL)
+  		    {
+  			menu->strings[i][0] = c;
+! 			STRCPY(menu->strings[i] + 1, call_data);
+  			if (c == Ctrl_C)
+  			{
+  			    int	    len = (int)STRLEN(menu->strings[i]);
+--- 763,787 ----
+  			    c = Ctrl_C;
+  			    break;
+  			case MENU_INSERT_MODE:
+! 			    c = Ctrl_BSL;
+! 			    d = Ctrl_O;
+  			    break;
+  		    }
+  		}
+  
+! 		if (c != 0)
+  		{
+! 		    menu->strings[i] = alloc((unsigned)(STRLEN(call_data) + 5 ));
+  		    if (menu->strings[i] != NULL)
+  		    {
+  			menu->strings[i][0] = c;
+! 			if (d == 0)
+! 			    STRCPY(menu->strings[i] + 1, call_data);
+! 			else
+! 			{
+! 			    menu->strings[i][1] = d;
+! 			    STRCPY(menu->strings[i] + 2, call_data);
+! 			}
+  			if (c == Ctrl_C)
+  			{
+  			    int	    len = (int)STRLEN(menu->strings[i]);
+*** ../vim-7.2.430/src/version.c	2010-05-14 20:41:00.000000000 +0200
+--- src/version.c	2010-05-14 21:11:40.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     431,
+  /**/
+
+-- 
+Despite the cost of living, have you noticed how it remains so popular?
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.432
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.432
+Problem:    When menus are translated they can only be found by the translated
+	    name.  That makes ":emenu" difficult to use.
+Solution:   Store the untranslated name and use it for completion and :emenu.
+	    (Edward L. Fox / Liang Peng / Bezetek James)
+Files:	    src/menu.c, src/structs.h
+
+
+*** ../vim-7.2.431/src/menu.c	2010-05-14 21:19:16.000000000 +0200
+--- src/menu.c	2010-05-14 21:52:58.000000000 +0200
+***************
+*** 58,63 ****
+--- 58,66 ----
+  static char_u *menutrans_lookup __ARGS((char_u *name, int len));
+  #endif
+  
++ static char_u *menu_translate_tab_and_shift __ARGS((char_u *arg_start));
++ static void menu_unescape_name  __ARGS((char_u	*p));
++ 
+  /* The character for each menu mode */
+  static char_u	menu_mode_chars[] = {'n', 'v', 's', 'o', 'i', 'c', 't'};
+  
+***************
+*** 106,115 ****
+      int		pri_tab[MENUDEPTH + 1];
+      int		enable = MAYBE;	    /* TRUE for "menu enable", FALSE for "menu
+  				     * disable */
+- #ifdef FEAT_MULTI_LANG
+-     char_u	*tofree = NULL;
+-     char_u	*new_cmd;
+- #endif
+  #ifdef FEAT_TOOLBAR
+      char_u	*icon = NULL;
+  #endif
+--- 109,114 ----
+***************
+*** 251,291 ****
+      }
+  #endif
+  
+- #ifdef FEAT_MULTI_LANG
+-     /*
+-      * Translate menu names as specified with ":menutrans" commands.
+-      */
+-     menu_path = arg;
+-     while (*menu_path)
+-     {
+- 	/* find the end of one part and check if it should be translated */
+- 	p = menu_skip_part(menu_path);
+- 	map_to = menutrans_lookup(menu_path, (int)(p - menu_path));
+- 	if (map_to != NULL)
+- 	{
+- 	    /* found a match: replace with the translated part */
+- 	    i = (int)STRLEN(map_to);
+- 	    new_cmd = alloc((unsigned)STRLEN(arg) + i + 1);
+- 	    if (new_cmd == NULL)
+- 		break;
+- 	    mch_memmove(new_cmd, arg, menu_path - arg);
+- 	    mch_memmove(new_cmd + (menu_path - arg), map_to, (size_t)i);
+- 	    STRCPY(new_cmd + (menu_path - arg) + i, p);
+- 	    p = new_cmd + (menu_path - arg) + i;
+- 	    vim_free(tofree);
+- 	    tofree = new_cmd;
+- 	    arg = new_cmd;
+- 	}
+- 	if (*p != '.')
+- 	    break;
+- 	menu_path = p + 1;
+-     }
+- #endif
+- 
+-     /*
+-      * Isolate the menu name.
+-      * Skip the menu name, and translate <Tab> into a real TAB.
+-      */
+      menu_path = arg;
+      if (*menu_path == '.')
+      {
+--- 250,255 ----
+***************
+*** 293,313 ****
+  	goto theend;
+      }
+  
+!     while (*arg && !vim_iswhite(*arg))
+!     {
+! 	if ((*arg == '\\' || *arg == Ctrl_V) && arg[1] != NUL)
+! 	    arg++;
+! 	else if (STRNICMP(arg, "<TAB>", 5) == 0)
+! 	{
+! 	    *arg = TAB;
+! 	    STRMOVE(arg + 1, arg + 5);
+! 	}
+! 	arg++;
+!     }
+!     if (*arg != NUL)
+! 	*arg++ = NUL;
+!     arg = skipwhite(arg);
+!     map_to = arg;
+  
+      /*
+       * If there is only a menu name, display menus with that name.
+--- 257,263 ----
+  	goto theend;
+      }
+  
+!     map_to = menu_translate_tab_and_shift(arg);
+  
+      /*
+       * If there is only a menu name, display menus with that name.
+***************
+*** 453,463 ****
+  #endif
+  
+  theend:
+- #ifdef FEAT_MULTI_LANG
+-     vim_free(tofree);
+- #else
+      ;
+- #endif
+  }
+  
+  /*
+--- 403,409 ----
+***************
+*** 498,503 ****
+--- 444,453 ----
+      int		pri_idx = 0;
+      int		old_modes = 0;
+      int		amenu;
++ #ifdef FEAT_MULTI_LANG
++     char_u	*en_name;
++     char_u	*map_to = NULL;
++ #endif
+  
+      /* Make a copy so we can stuff around with it, since it could be const */
+      path_name = vim_strsave(menu_path);
+***************
+*** 511,516 ****
+--- 461,476 ----
+  	/* Get name of this element in the menu hierarchy, and the simplified
+  	 * name (without mnemonic and accelerator text). */
+  	next_name = menu_name_skip(name);
++ #ifdef	FEAT_MULTI_LANG
++ 	map_to = menutrans_lookup(name,STRLEN(name));
++ 	if (map_to != NULL)
++ 	{
++ 	    en_name = name;
++ 	    name = map_to;
++ 	}
++ 	else
++ 	    en_name = NULL;
++ #endif
+  	dname = menu_text(name, NULL, NULL);
+  	if (dname == NULL)
+  	    goto erret;
+***************
+*** 594,599 ****
+--- 554,571 ----
+  	    menu->name = vim_strsave(name);
+  	    /* separate mnemonic and accelerator text from actual menu name */
+  	    menu->dname = menu_text(name, &menu->mnemonic, &menu->actext);
++ #ifdef	FEAT_MULTI_LANG
++ 	    if (en_name != NULL)
++ 	    {
++ 		menu->en_name = vim_strsave(en_name);
++ 		menu->en_dname = menu_text(en_name, NULL, NULL);
++ 	    }
++ 	    else
++ 	    {
++ 		menu->en_name = NULL;
++ 		menu->en_dname = NULL;
++ 	    }
++ #endif
+  	    menu->priority = pri_tab[pri_idx];
+  	    menu->parent = parent;
+  #ifdef FEAT_GUI_MOTIF
+***************
+*** 1040,1045 ****
+--- 1012,1021 ----
+      *menup = menu->next;
+      vim_free(menu->name);
+      vim_free(menu->dname);
++ #ifdef FEAT_MULTI_LANG
++     vim_free(menu->en_name);
++     vim_free(menu->en_dname);
++ #endif
+      vim_free(menu->actext);
+  #ifdef FEAT_TOOLBAR
+      vim_free(menu->iconfile);
+***************
+*** 1357,1365 ****
+--- 1333,1347 ----
+  {
+      static vimmenu_T	*menu = NULL;
+      char_u		*str;
++ #ifdef FEAT_MULTI_LANG
++     static  int		should_advance = FALSE;
++ #endif
+  
+      if (idx == 0)	    /* first call: start at first item */
++     {
+  	menu = expand_menu;
++ 	should_advance = FALSE;
++     }
+  
+      /* Skip PopUp[nvoci]. */
+      while (menu != NULL && (menu_is_hidden(menu->dname)
+***************
+*** 1372,1383 ****
+  	return NULL;
+  
+      if (menu->modes & expand_modes)
+! 	str = menu->dname;
+      else
+  	str = (char_u *)"";
+  
+!     /* Advance to next menu entry. */
+!     menu = menu->next;
+  
+      return str;
+  }
+--- 1354,1383 ----
+  	return NULL;
+  
+      if (menu->modes & expand_modes)
+! #ifdef FEAT_MULTI_LANG
+! 	if (should_advance)
+! 	    str = menu->en_dname;
+! 	else
+! 	{
+! #endif
+! 	    str = menu->dname;
+! #ifdef FEAT_MULTI_LANG
+! 	    if (menu->en_dname == NULL)
+!                 should_advance = TRUE;
+! 	}
+! #endif
+      else
+  	str = (char_u *)"";
+  
+! #ifdef FEAT_MULTI_LANG
+!     if (should_advance)
+! #endif
+!         /* Advance to next menu entry. */
+!         menu = menu->next;
+! 
+! #ifdef FEAT_MULTI_LANG
+!     should_advance = !should_advance;
+! #endif
+  
+      return str;
+  }
+***************
+*** 1394,1402 ****
+--- 1394,1408 ----
+      static vimmenu_T	*menu = NULL;
+      static char_u	tbuffer[256]; /*hack*/
+      char_u		*str;
++ #ifdef FEAT_MULTI_LANG
++     static  int		should_advance = FALSE;
++ #endif
+  
+      if (idx == 0)	    /* first call: start at first item */
++     {
+  	menu = expand_menu;
++ 	should_advance = FALSE;
++     }
+  
+      /* Skip Browse-style entries, popup menus and separators. */
+      while (menu != NULL
+***************
+*** 1416,1435 ****
+      {
+  	if (menu->children != NULL)
+  	{
+! 	    STRCPY(tbuffer, menu->dname);
+  	    /* hack on menu separators:  use a 'magic' char for the separator
+  	     * so that '.' in names gets escaped properly */
+  	    STRCAT(tbuffer, "\001");
+  	    str = tbuffer;
+  	}
+  	else
+! 	    str = menu->dname;
+      }
+      else
+  	str = (char_u *)"";
+  
+!     /* Advance to next menu entry. */
+!     menu = menu->next;
+  
+      return str;
+  }
+--- 1422,1472 ----
+      {
+  	if (menu->children != NULL)
+  	{
+! #ifdef FEAT_MULTI_LANG
+! 	    if (should_advance)
+! 		STRCPY(tbuffer, menu->en_dname);
+! 	    else
+! 	    {
+! #endif
+! 		STRCPY(tbuffer, menu->dname);
+! #ifdef FEAT_MULTI_LANG
+! 		if (menu->en_dname == NULL)
+! 		    should_advance = TRUE;
+! 	    }
+! #endif
+  	    /* hack on menu separators:  use a 'magic' char for the separator
+  	     * so that '.' in names gets escaped properly */
+  	    STRCAT(tbuffer, "\001");
+  	    str = tbuffer;
+  	}
+  	else
+! #ifdef FEAT_MULTI_LANG
+!         {
+!             if (should_advance)
+!                 str = menu->en_dname;
+!             else
+!             {
+! #endif
+!                 str = menu->dname;
+! #ifdef FEAT_MULTI_LANG
+!                 if (menu->en_dname == NULL)
+!                     should_advance = TRUE;
+!             }
+!         }
+! #endif
+      }
+      else
+  	str = (char_u *)"";
+  
+! #ifdef FEAT_MULTI_LANG
+!     if (should_advance)
+! #endif
+!         /* Advance to next menu entry. */
+!         menu = menu->next;
+! 
+! #ifdef FEAT_MULTI_LANG
+!     should_advance = !should_advance;
+! #endif
+  
+      return str;
+  }
+***************
+*** 1469,1475 ****
+      char_u	*name;
+      vimmenu_T	*menu;
+  {
+!     return (menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname));
+  }
+  
+      static int
+--- 1506,1516 ----
+      char_u	*name;
+      vimmenu_T	*menu;
+  {
+!     if (menu->en_name != NULL
+! 	    && (menu_namecmp(name,menu->en_name)
+! 		|| menu_namecmp(name,menu->en_dname)))
+!         return TRUE;
+!     return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname);
+  }
+  
+      static int
+***************
+*** 2402,2407 ****
+--- 2443,2452 ----
+  		    to = vim_strnsave(to, (int)(arg - to));
+  		    if (from_noamp != NULL && to != NULL)
+  		    {
++ 			menu_translate_tab_and_shift(from);
++ 			menu_translate_tab_and_shift(to);
++ 			menu_unescape_name(from);
++ 			menu_unescape_name(to);
+  			tp[menutrans_ga.ga_len].from = from;
+  			tp[menutrans_ga.ga_len].from_noamp = from_noamp;
+  			tp[menutrans_ga.ga_len].to = to;
+***************
+*** 2476,2479 ****
+--- 2521,2566 ----
+  }
+  #endif /* FEAT_MULTI_LANG */
+  
++ /*
++  * Unescape the name in the translate dictionary table.
++  */
++     static void
++ menu_unescape_name(name)
++     char_u	*name;
++ {
++     char_u  *p;
++ 
++     for (p = name; *p && *p != '.'; mb_ptr_adv(p))
++ 	if (*p == '\\')
++ 	    STRMOVE(p, p + 1);
++ }
++ 
++ /*
++  * Isolate the menu name.
++  * Skip the menu name, and translate <Tab> into a real TAB.
++  */
++     static char_u *
++ menu_translate_tab_and_shift(arg_start)
++     char_u	*arg_start;
++ {
++     char_u	*arg = arg_start;
++ 
++     while (*arg && !vim_iswhite(*arg))
++     {
++ 	if ((*arg == '\\' || *arg == Ctrl_V) && arg[1] != NUL)
++ 	    arg++;
++ 	else if (STRNICMP(arg, "<TAB>", 5) == 0)
++ 	{
++ 	    *arg = TAB;
++ 	    STRMOVE(arg + 1, arg + 5);
++ 	}
++ 	arg++;
++     }
++     if (*arg != NUL)
++ 	*arg++ = NUL;
++     arg = skipwhite(arg);
++ 
++     return arg;
++ }
++ 
+  #endif /* FEAT_MENU */
+*** ../vim-7.2.431/src/structs.h	2009-09-18 17:24:54.000000000 +0200
+--- src/structs.h	2010-05-14 22:21:50.000000000 +0200
+***************
+*** 232,238 ****
+  {
+      wininfo_T	*wi_next;	/* next entry or NULL for last entry */
+      wininfo_T	*wi_prev;	/* previous entry or NULL for first entry */
+!     win_T	*wi_win;	/* pointer to window that did set wi_lnum */
+      pos_T	wi_fpos;	/* last cursor position in the file */
+      int		wi_optset;	/* TRUE when wi_opt has useful values */
+      winopt_T	wi_opt;		/* local window options */
+--- 232,238 ----
+  {
+      wininfo_T	*wi_next;	/* next entry or NULL for last entry */
+      wininfo_T	*wi_prev;	/* previous entry or NULL for first entry */
+!     win_T	*wi_win;	/* pointer to window that did set wi_fpos */
+      pos_T	wi_fpos;	/* last cursor position in the file */
+      int		wi_optset;	/* TRUE when wi_opt has useful values */
+      winopt_T	wi_opt;		/* local window options */
+***************
+*** 2207,2214 ****
+  {
+      int		modes;		    /* Which modes is this menu visible for? */
+      int		enabled;	    /* for which modes the menu is enabled */
+!     char_u	*name;		    /* Name of menu */
+!     char_u	*dname;		    /* Displayed Name (without '&') */
+      int		mnemonic;	    /* mnemonic key (after '&') */
+      char_u	*actext;	    /* accelerator text (after TAB) */
+      int		priority;	    /* Menu order priority */
+--- 2207,2220 ----
+  {
+      int		modes;		    /* Which modes is this menu visible for? */
+      int		enabled;	    /* for which modes the menu is enabled */
+!     char_u	*name;		    /* Name of menu, possibly translated */
+!     char_u	*dname;		    /* Displayed Name ("name" without '&') */
+! #ifdef FEAT_MULTI_LANG
+!     char_u	*en_name;	    /* "name" untranslated, NULL when "name"
+! 				     * was not translated */
+!     char_u	*en_dname;	    /* "dname" untranslated, NULL when "dname"
+! 				     * was not translated */
+! #endif
+      int		mnemonic;	    /* mnemonic key (after '&') */
+      char_u	*actext;	    /* accelerator text (after TAB) */
+      int		priority;	    /* Menu order priority */
+*** ../vim-7.2.431/src/version.c	2010-05-14 21:19:16.000000000 +0200
+--- src/version.c	2010-05-14 22:19:39.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     432,
+  /**/
+
+-- 
+It is hard to understand how a cemetery raised its burial
+cost and blamed it on the cost of living.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.433
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.433
+Problem:    Can't use cscope with QuickFixCmdPre and QuickFixCmdPost.
+Solution:   Add cscope support for these autocmd events. (Bryan Venteicher)
+Files:	    runtime/doc/autocmd.txt, src/if_cscope.c
+
+
+*** ../vim-7.2.432/runtime/doc/autocmd.txt	2009-06-24 17:51:01.000000000 +0200
+--- runtime/doc/autocmd.txt	2010-05-14 22:48:43.000000000 +0200
+***************
+*** 678,687 ****
+  QuickFixCmdPre			Before a quickfix command is run (|:make|,
+  				|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+  				|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+! 				|:vimgrepadd|, |:lvimgrepadd|). The pattern is
+! 				matched against the command being run.  When
+! 				|:grep| is used but 'grepprg' is set to
+! 				"internal" it still matches "grep".
+  				This command cannot be used to set the
+  				'makeprg' and 'grepprg' variables.
+  				If this command causes an error, the quickfix
+--- 678,687 ----
+  QuickFixCmdPre			Before a quickfix command is run (|:make|,
+  				|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+  				|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+! 				|:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
+! 				The pattern is matched against the command
+! 				being run.  When |:grep| is used but 'grepprg'
+! 				is set to "internal" it still matches "grep".
+  				This command cannot be used to set the
+  				'makeprg' and 'grepprg' variables.
+  				If this command causes an error, the quickfix
+*** ../vim-7.2.432/src/if_cscope.c	2010-02-24 14:46:58.000000000 +0100
+--- src/if_cscope.c	2010-05-14 23:10:39.000000000 +0200
+***************
+*** 1113,1118 ****
+--- 1113,1182 ----
+  #ifdef FEAT_QUICKFIX
+      char cmdletter;
+      char *qfpos;
++ 
++     /* get cmd letter */
++     switch (opt[0])
++     {
++     case '0' :
++ 	cmdletter = 's';
++ 	break;
++     case '1' :
++ 	cmdletter = 'g';
++ 	break;
++     case '2' :
++ 	cmdletter = 'd';
++ 	break;
++     case '3' :
++ 	cmdletter = 'c';
++ 	break;
++     case '4' :
++ 	cmdletter = 't';
++ 	break;
++     case '6' :
++ 	cmdletter = 'e';
++ 	break;
++     case '7' :
++ 	cmdletter = 'f';
++ 	break;
++     case '8' :
++ 	cmdletter = 'i';
++ 	break;
++     default :
++ 	cmdletter = opt[0];
++     }
++ 
++     qfpos = (char *)vim_strchr(p_csqf, cmdletter);
++     if (qfpos != NULL)
++     {
++ 	qfpos++;
++ 	/* next symbol must be + or - */
++ 	if (strchr(CSQF_FLAGS, *qfpos) == NULL)
++ 	{
++ 	    char *nf = _("E469: invalid cscopequickfix flag %c for %c");
++ 	    char *buf = (char *)alloc((unsigned)strlen(nf));
++ 
++ 	    /* strlen will be enough because we use chars */
++ 	    if (buf != NULL)
++ 	    {
++ 		sprintf(buf, nf, *qfpos, *(qfpos-1));
++ 		(void)EMSG(buf);
++ 		vim_free(buf);
++ 	    }
++ 	    return FALSE;
++ 	}
++ 
++ # ifdef FEAT_AUTOCMD
++ 	if (*qfpos != '0')
++ 	{
++ 	    apply_autocmds(EVENT_QUICKFIXCMDPRE, (char_u *)"cscope",
++ 					       curbuf->b_fname, TRUE, curbuf);
++ #  ifdef FEAT_EVAL
++ 	    if (did_throw || force_abort)
++ 		return FALSE;
++ #  endif
++ 	}
++ # endif
++     }
+  #endif
+  
+      /* create the actual command to send to cscope */
+***************
+*** 1174,1231 ****
+      }
+  
+  #ifdef FEAT_QUICKFIX
+-     /* get cmd letter */
+-     switch (opt[0])
+-     {
+-     case '0' :
+- 	cmdletter = 's';
+- 	break;
+-     case '1' :
+- 	cmdletter = 'g';
+- 	break;
+-     case '2' :
+- 	cmdletter = 'd';
+- 	break;
+-     case '3' :
+- 	cmdletter = 'c';
+- 	break;
+-     case '4' :
+- 	cmdletter = 't';
+- 	break;
+-     case '6' :
+- 	cmdletter = 'e';
+- 	break;
+-     case '7' :
+- 	cmdletter = 'f';
+- 	break;
+-     case '8' :
+- 	cmdletter = 'i';
+- 	break;
+-     default :
+- 	cmdletter = opt[0];
+-     }
+- 
+-     qfpos = (char *)vim_strchr(p_csqf, cmdletter);
+-     if (qfpos != NULL)
+-     {
+- 	qfpos++;
+- 	/* next symbol must be + or - */
+- 	if (strchr(CSQF_FLAGS, *qfpos) == NULL)
+- 	{
+- 	    char *nf = _("E469: invalid cscopequickfix flag %c for %c");
+- 	    char *buf = (char *)alloc((unsigned)strlen(nf));
+- 
+- 	    /* strlen will be enough because we use chars */
+- 	    if (buf != NULL)
+- 	    {
+- 		sprintf(buf, nf, *qfpos, *(qfpos-1));
+- 		(void)EMSG(buf);
+- 		vim_free(buf);
+- 	    }
+- 	    vim_free(nummatches);
+- 	    return FALSE;
+- 	}
+-     }
+      if (qfpos != NULL && *qfpos != '0' && totmatches > 0)
+      {
+  	/* fill error list */
+--- 1238,1243 ----
+***************
+*** 1258,1263 ****
+--- 1270,1280 ----
+  		    postponed_split = 0;
+  		}
+  # endif
++ 
++ # ifdef FEAT_AUTOCMD
++ 		apply_autocmds(EVENT_QUICKFIXCMDPOST, (char_u *)"cscope",
++ 					       curbuf->b_fname, TRUE, curbuf);
++ # endif
+  		if (use_ll)
+  		    /*
+  		     * In the location list window, use the displayed location
+*** ../vim-7.2.432/src/version.c	2010-05-14 22:24:31.000000000 +0200
+--- src/version.c	2010-05-14 23:13:27.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     433,
+  /**/
+
+-- 
+The 50-50-90 rule: Anytime you have a 50-50 chance of getting
+something right, there's a 90% probability you'll get it wrong.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.434
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.434 (after 7.2.432)
+Problem:    Compilation fails without the multi-lang feature.
+Solution:   Add #ifdefs. (Johm Marriott)
+Files:	    src/menu.c
+
+
+*** ../vim-7.2.433/src/menu.c	2010-05-14 22:24:31.000000000 +0200
+--- src/menu.c	2010-05-16 12:28:21.000000000 +0200
+***************
+*** 1340,1346 ****
+--- 1340,1348 ----
+      if (idx == 0)	    /* first call: start at first item */
+      {
+  	menu = expand_menu;
++ #ifdef FEAT_MULTI_LANG
+  	should_advance = FALSE;
++ #endif
+      }
+  
+      /* Skip PopUp[nvoci]. */
+***************
+*** 1401,1407 ****
+--- 1403,1411 ----
+      if (idx == 0)	    /* first call: start at first item */
+      {
+  	menu = expand_menu;
++ #ifdef FEAT_MULTI_LANG
+  	should_advance = FALSE;
++ #endif
+      }
+  
+      /* Skip Browse-style entries, popup menus and separators. */
+***************
+*** 1506,1515 ****
+--- 1510,1521 ----
+      char_u	*name;
+      vimmenu_T	*menu;
+  {
++ #ifdef FEAT_MULTI_LANG
+      if (menu->en_name != NULL
+  	    && (menu_namecmp(name,menu->en_name)
+  		|| menu_namecmp(name,menu->en_dname)))
+          return TRUE;
++ #endif
+      return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname);
+  }
+  
+*** ../vim-7.2.433/src/version.c	2010-05-14 23:14:37.000000000 +0200
+--- src/version.c	2010-05-16 12:29:40.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     434,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+43. You tell the kids they can't use the computer because "Daddy's got work to
+    do" and you don't even have a job.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.435
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.435 (after 7.2.430)
+Problem:    Crash when using bad_char_idx uninitialized. (Patrick Texier)
+Solution:   Don't use bad_char_idx, reproduce the ++bad argument from bad_char.
+Files:	    src/eval.c, src/ex_cmds.h, src/ex_docmd.c
+
+
+*** ../vim-7.2.434/src/eval.c	2010-05-14 20:41:00.000000000 +0200
+--- src/eval.c	2010-05-16 13:19:04.000000000 +0200
+***************
+*** 18309,18316 ****
+  # ifdef FEAT_MBYTE
+      if (eap->force_enc != 0)
+  	len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
+!     if (eap->bad_char_idx != 0)
+! 	len += (unsigned)STRLEN(eap->cmd + eap->bad_char_idx) + 7;
+  # endif
+  
+      newval = alloc(len + 1);
+--- 18309,18316 ----
+  # ifdef FEAT_MBYTE
+      if (eap->force_enc != 0)
+  	len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
+!     if (eap->bad_char != 0)
+! 	len += 7 + 4;  /* " ++bad=" + "keep" or "drop" */
+  # endif
+  
+      newval = alloc(len + 1);
+***************
+*** 18334,18342 ****
+      if (eap->force_enc != 0)
+  	sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
+  					       eap->cmd + eap->force_enc);
+!     if (eap->bad_char_idx != 0)
+! 	sprintf((char *)newval + STRLEN(newval), " ++bad=%s",
+! 					       eap->cmd + eap->bad_char_idx);
+  # endif
+      vimvars[VV_CMDARG].vv_str = newval;
+      return oldval;
+--- 18334,18345 ----
+      if (eap->force_enc != 0)
+  	sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
+  					       eap->cmd + eap->force_enc);
+!     if (eap->bad_char == BAD_KEEP)
+! 	STRCPY(newval + STRLEN(newval), " ++bad=keep");
+!     else if (eap->bad_char == BAD_DROP)
+! 	STRCPY(newval + STRLEN(newval), " ++bad=drop");
+!     else if (eap->bad_char != 0)
+! 	sprintf((char *)newval + STRLEN(newval), " ++bad=%c", eap->bad_char);
+  # endif
+      vimvars[VV_CMDARG].vv_str = newval;
+      return oldval;
+*** ../vim-7.2.434/src/ex_cmds.h	2010-05-14 20:41:00.000000000 +0200
+--- src/ex_cmds.h	2010-05-16 13:03:53.000000000 +0200
+***************
+*** 1152,1159 ****
+      int		force_ff;	/* ++ff= argument (index in cmd[]) */
+  #ifdef FEAT_MBYTE
+      int		force_enc;	/* ++enc= argument (index in cmd[]) */
+!     int		bad_char_idx;	/* ++bad= argument (index in cmd[]) */
+!     int		bad_char;	/* BAD_KEEP, BAD_DROP or replacement char */
+  #endif
+  #ifdef FEAT_USR_CMDS
+      int		useridx;	/* user command index */
+--- 1152,1158 ----
+      int		force_ff;	/* ++ff= argument (index in cmd[]) */
+  #ifdef FEAT_MBYTE
+      int		force_enc;	/* ++enc= argument (index in cmd[]) */
+!     int		bad_char;	/* BAD_KEEP, BAD_DROP or replacement byte */
+  #endif
+  #ifdef FEAT_USR_CMDS
+      int		useridx;	/* user command index */
+*** ../vim-7.2.434/src/ex_docmd.c	2010-05-14 20:41:00.000000000 +0200
+--- src/ex_docmd.c	2010-05-16 13:13:30.000000000 +0200
+***************
+*** 4688,4693 ****
+--- 4688,4694 ----
+      char_u	*arg = eap->arg + 2;
+      int		*pp = NULL;
+  #ifdef FEAT_MBYTE
++     int		bad_char_idx;
+      char_u	*p;
+  #endif
+  
+***************
+*** 4739,4745 ****
+      else if (STRNCMP(arg, "bad", 3) == 0)
+      {
+  	arg += 3;
+! 	pp = &eap->bad_char_idx;
+      }
+  #endif
+  
+--- 4740,4746 ----
+      else if (STRNCMP(arg, "bad", 3) == 0)
+      {
+  	arg += 3;
+! 	pp = &bad_char_idx;
+      }
+  #endif
+  
+***************
+*** 4770,4776 ****
+      {
+  	/* Check ++bad= argument.  Must be a single-byte character, "keep" or
+  	 * "drop". */
+! 	p = eap->cmd + eap->bad_char_idx;
+  	if (STRICMP(p, "keep") == 0)
+  	    eap->bad_char = BAD_KEEP;
+  	else if (STRICMP(p, "drop") == 0)
+--- 4771,4777 ----
+      {
+  	/* Check ++bad= argument.  Must be a single-byte character, "keep" or
+  	 * "drop". */
+! 	p = eap->cmd + bad_char_idx;
+  	if (STRICMP(p, "keep") == 0)
+  	    eap->bad_char = BAD_KEEP;
+  	else if (STRICMP(p, "drop") == 0)
+*** ../vim-7.2.434/src/version.c	2010-05-16 12:32:37.000000000 +0200
+--- src/version.c	2010-05-16 13:24:39.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     435,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+45. You buy a Captain Kirk chair with a built-in keyboard and mouse.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.436
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.436
+Problem:    Reproducible crash in syntax HL. (George Reilly, Dominique Pelle)
+Solution:   Make sst_stacksize an int instead of short. (Dominique Pelle)
+Files:	    src/structs.h
+
+
+*** ../vim-7.2.435/src/structs.h	2010-05-14 22:24:31.000000000 +0200
+--- src/structs.h	2010-05-16 13:48:26.000000000 +0200
+***************
+*** 327,333 ****
+  typedef struct m_info minfo_T;
+  
+  /*
+!  * stucture used to link chunks in one of the free chunk lists.
+   */
+  struct m_info
+  {
+--- 327,333 ----
+  typedef struct m_info minfo_T;
+  
+  /*
+!  * structure used to link chunks in one of the free chunk lists.
+   */
+  struct m_info
+  {
+***************
+*** 795,803 ****
+  	garray_T	sst_ga;	/* growarray for long state stack */
+      } sst_union;
+      int		sst_next_flags;	/* flags for sst_next_list */
+      short	*sst_next_list;	/* "nextgroup" list in this state
+  				 * (this is a copy, don't free it! */
+-     short	sst_stacksize;	/* number of states on the stack */
+      disptick_T	sst_tick;	/* tick when last displayed */
+      linenr_T	sst_change_lnum;/* when non-zero, change in this line
+  				 * may have made the state invalid */
+--- 795,803 ----
+  	garray_T	sst_ga;	/* growarray for long state stack */
+      } sst_union;
+      int		sst_next_flags;	/* flags for sst_next_list */
++     int		sst_stacksize;	/* number of states on the stack */
+      short	*sst_next_list;	/* "nextgroup" list in this state
+  				 * (this is a copy, don't free it! */
+      disptick_T	sst_tick;	/* tick when last displayed */
+      linenr_T	sst_change_lnum;/* when non-zero, change in this line
+  				 * may have made the state invalid */
+***************
+*** 2138,2144 ****
+  #define SHAPE_IDX_CI	5	/* Command line Insert mode */
+  #define SHAPE_IDX_CR	6	/* Command line Replace mode */
+  #define SHAPE_IDX_O	7	/* Operator-pending mode */
+! #define SHAPE_IDX_VE	8	/* Visual mode with 'seleciton' exclusive */
+  #define SHAPE_IDX_CLINE	9	/* On command line */
+  #define SHAPE_IDX_STATUS 10	/* A status line */
+  #define SHAPE_IDX_SDRAG 11	/* dragging a status line */
+--- 2138,2144 ----
+  #define SHAPE_IDX_CI	5	/* Command line Insert mode */
+  #define SHAPE_IDX_CR	6	/* Command line Replace mode */
+  #define SHAPE_IDX_O	7	/* Operator-pending mode */
+! #define SHAPE_IDX_VE	8	/* Visual mode with 'selection' exclusive */
+  #define SHAPE_IDX_CLINE	9	/* On command line */
+  #define SHAPE_IDX_STATUS 10	/* A status line */
+  #define SHAPE_IDX_SDRAG 11	/* dragging a status line */
+***************
+*** 2267,2273 ****
+  /*  short	index;	*/	    /* the item index within the father menu */
+      short	menu_id;	    /* the menu id to which this item belong */
+      short	submenu_id;	    /* the menu id of the children (could be
+! 				       get throught some tricks) */
+      MenuHandle	menu_handle;
+      MenuHandle	submenu_handle;
+  #endif
+--- 2267,2273 ----
+  /*  short	index;	*/	    /* the item index within the father menu */
+      short	menu_id;	    /* the menu id to which this item belong */
+      short	submenu_id;	    /* the menu id of the children (could be
+! 				       get through some tricks) */
+      MenuHandle	menu_handle;
+      MenuHandle	submenu_handle;
+  #endif
+*** ../vim-7.2.435/src/version.c	2010-05-16 13:26:19.000000000 +0200
+--- src/version.c	2010-05-16 13:54:30.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     436,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+47. You are so familiar with the WWW that you find the search engines useless.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.437
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.437 (after 7.2.407)
+Problem:    When "\\\n" appears in the expression result the \n doesn't result
+	    in a line break. (Andy Wokula)
+Solution:   Also replace a \n after a backslash into \r.
+Files:	    src/regexp.c
+
+
+*** ../vim-7.2.436/src/regexp.c	2010-03-23 16:27:15.000000000 +0100
+--- src/regexp.c	2010-05-21 13:06:00.000000000 +0200
+***************
+*** 6974,6979 ****
+--- 6974,6986 ----
+  		    else if (*s == '\\' && s[1] != NUL)
+  		    {
+  			++s;
++ 			/* Change NL to CR here too, so that this works:
++ 			 * :s/abc\\\ndef/\="aaa\\\nbbb"/  on text:
++ 			 *   abc\
++ 			 *   def
++ 			 */
++ 			if (*s == NL)
++ 			    *s = CAR;
+  			had_backslash = TRUE;
+  		    }
+  		}
+*** ../vim-7.2.436/src/version.c	2010-05-16 13:56:01.000000000 +0200
+--- src/version.c	2010-05-21 13:07:50.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     437,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+89. In addition to your e-mail address being on your business
+    cards you even have your own domain.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.438
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.438 (after 7.2.427)
+Problem:    "vim -r" crashes.
+Solution:   Don't use NULL pointer argument.
+Files:	    src/memline.c
+
+
+*** ../vim-7.2.437/src/memline.c	2010-05-14 17:52:35.000000000 +0200
+--- src/memline.c	2010-05-25 21:36:01.000000000 +0200
+***************
+*** 1404,1418 ****
+      int		i;
+      char_u	*dirp;
+      char_u	*dir_name;
+!     char_u	*fname_res = *fname;
+  #ifdef HAVE_READLINK
+      char_u	fname_buf[MAXPATHL];
+  
+      /* Expand symlink in the file name, because the swap file is created with
+       * the actual file instead of with the symlink. */
+      if (resolve_symlink(*fname, fname_buf) == OK)
+  	fname_res = fname_buf;
+  #endif
+  
+      if (list)
+      {
+--- 1404,1425 ----
+      int		i;
+      char_u	*dirp;
+      char_u	*dir_name;
+!     char_u	*fname_res = NULL;
+  #ifdef HAVE_READLINK
+      char_u	fname_buf[MAXPATHL];
++ #endif
+  
++     if (fname != NULL)
++     {
++ #ifdef HAVE_READLINK
+      /* Expand symlink in the file name, because the swap file is created with
+       * the actual file instead of with the symlink. */
+      if (resolve_symlink(*fname, fname_buf) == OK)
+  	fname_res = fname_buf;
++     else
+  #endif
++ 	fname_res = *fname;
++     }
+  
+      if (list)
+      {
+*** ../vim-7.2.437/src/version.c	2010-05-21 13:08:51.000000000 +0200
+--- src/version.c	2010-05-25 21:30:12.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     438,
+  /**/
+
+-- 
+A fool learns from his mistakes, a wise man from someone else's.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.439
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.439
+Problem:    Invalid memory access when doing thesaurus completion and
+	    'infercase' is set.
+Solution:   Use the minimal length of completed word and replacement.
+	    (Dominique Pelle)
+Files:	    src/edit.c
+
+
+*** ../vim-7.2.438/src/edit.c	2010-03-10 14:15:28.000000000 +0100
+--- src/edit.c	2010-05-28 21:20:29.000000000 +0200
+***************
+*** 2164,2169 ****
+--- 2164,2170 ----
+      int		i, c;
+      int		actual_len;		/* Take multi-byte characters */
+      int		actual_compl_length;	/* into account. */
++     int		min_len;
+      int		*wca;			/* Wide character array. */
+      int		has_lower = FALSE;
+      int		was_letter = FALSE;
+***************
+*** 2204,2209 ****
+--- 2205,2215 ----
+  #endif
+  	    actual_compl_length = compl_length;
+  
++ 	/* "actual_len" may be smaller than "actual_compl_length" when using
++ 	 * thesaurus, only use the minimum when comparing. */
++ 	min_len = actual_len < actual_compl_length
++ 					   ? actual_len : actual_compl_length;
++ 
+  	/* Allocate wide character array for the completion and fill it. */
+  	wca = (int *)alloc((unsigned)(actual_len * sizeof(int)));
+  	if (wca != NULL)
+***************
+*** 2219,2225 ****
+  
+  	    /* Rule 1: Were any chars converted to lower? */
+  	    p = compl_orig_text;
+! 	    for (i = 0; i < actual_compl_length; ++i)
+  	    {
+  #ifdef FEAT_MBYTE
+  		if (has_mbyte)
+--- 2225,2231 ----
+  
+  	    /* Rule 1: Were any chars converted to lower? */
+  	    p = compl_orig_text;
+! 	    for (i = 0; i < min_len; ++i)
+  	    {
+  #ifdef FEAT_MBYTE
+  		if (has_mbyte)
+***************
+*** 2247,2253 ****
+  	    if (!has_lower)
+  	    {
+  		p = compl_orig_text;
+! 		for (i = 0; i < actual_compl_length; ++i)
+  		{
+  #ifdef FEAT_MBYTE
+  		    if (has_mbyte)
+--- 2253,2259 ----
+  	    if (!has_lower)
+  	    {
+  		p = compl_orig_text;
+! 		for (i = 0; i < min_len; ++i)
+  		{
+  #ifdef FEAT_MBYTE
+  		    if (has_mbyte)
+***************
+*** 2268,2274 ****
+  
+  	    /* Copy the original case of the part we typed. */
+  	    p = compl_orig_text;
+! 	    for (i = 0; i < actual_compl_length; ++i)
+  	    {
+  #ifdef FEAT_MBYTE
+  		if (has_mbyte)
+--- 2274,2280 ----
+  
+  	    /* Copy the original case of the part we typed. */
+  	    p = compl_orig_text;
+! 	    for (i = 0; i < min_len; ++i)
+  	    {
+  #ifdef FEAT_MBYTE
+  		if (has_mbyte)
+*** ../vim-7.2.438/src/version.c	2010-05-25 21:37:12.000000000 +0200
+--- src/version.c	2010-05-28 21:30:53.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     439,
+  /**/
+
+-- 
+Corduroy pillows: They're making headlines!
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.440
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.440
+Problem:    Calling a function through a funcref, where the function deletes
+	    the funcref, leads to an invalid memory access.
+Solution:   Make a copy of the function name. (Lech Lorens)
+Files:	    src/eval.c, src/testdir/test34.in, src/testdir/test34.ok
+
+
+*** ../vim-7.2.439/src/eval.c	2010-05-16 13:26:19.000000000 +0200
+--- src/eval.c	2010-05-28 22:01:07.000000000 +0200
+***************
+*** 464,470 ****
+  static int find_internal_func __ARGS((char_u *name));
+  static char_u *deref_func_name __ARGS((char_u *name, int *lenp));
+  static int get_func_tv __ARGS((char_u *name, int len, typval_T *rettv, char_u **arg, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict));
+! static int call_func __ARGS((char_u *name, int len, typval_T *rettv, int argcount, typval_T *argvars, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict));
+  static void emsg_funcname __ARGS((char *ermsg, char_u *name));
+  static int non_zero_arg __ARGS((typval_T *argvars));
+  
+--- 464,470 ----
+  static int find_internal_func __ARGS((char_u *name));
+  static char_u *deref_func_name __ARGS((char_u *name, int *lenp));
+  static int get_func_tv __ARGS((char_u *name, int len, typval_T *rettv, char_u **arg, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict));
+! static int call_func __ARGS((char_u *func_name, int len, typval_T *rettv, int argcount, typval_T *argvars, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict));
+  static void emsg_funcname __ARGS((char *ermsg, char_u *name));
+  static int non_zero_arg __ARGS((typval_T *argvars));
+  
+***************
+*** 7997,8005 ****
+   * Also returns OK when an error was encountered while executing the function.
+   */
+      static int
+! call_func(name, len, rettv, argcount, argvars, firstline, lastline,
+  						doesrange, evaluate, selfdict)
+!     char_u	*name;		/* name of the function */
+      int		len;		/* length of "name" */
+      typval_T	*rettv;		/* return value goes here */
+      int		argcount;	/* number of "argvars" */
+--- 7997,8005 ----
+   * Also returns OK when an error was encountered while executing the function.
+   */
+      static int
+! call_func(func_name, len, rettv, argcount, argvars, firstline, lastline,
+  						doesrange, evaluate, selfdict)
+!     char_u	*func_name;	/* name of the function */
+      int		len;		/* length of "name" */
+      typval_T	*rettv;		/* return value goes here */
+      int		argcount;	/* number of "argvars" */
+***************
+*** 8023,8040 ****
+      int		i;
+      int		llen;
+      ufunc_T	*fp;
+-     int		cc;
+  #define FLEN_FIXED 40
+      char_u	fname_buf[FLEN_FIXED + 1];
+      char_u	*fname;
+  
+      /*
+       * In a script change <SID>name() and s:name() to K_SNR 123_name().
+       * Change <SNR>123_name() to K_SNR 123_name().
+       * Use fname_buf[] when it fits, otherwise allocate memory (slow).
+       */
+-     cc = name[len];
+-     name[len] = NUL;
+      llen = eval_fname_script(name);
+      if (llen > 0)
+      {
+--- 8023,8044 ----
+      int		i;
+      int		llen;
+      ufunc_T	*fp;
+  #define FLEN_FIXED 40
+      char_u	fname_buf[FLEN_FIXED + 1];
+      char_u	*fname;
++     char_u	*name;
++ 
++     /* Make a copy of the name, if it comes from a funcref variable it could
++      * be changed or deleted in the called function. */
++     name = vim_strnsave(func_name, len);
++     if (name == NULL)
++ 	return ret;
+  
+      /*
+       * In a script change <SID>name() and s:name() to K_SNR 123_name().
+       * Change <SNR>123_name() to K_SNR 123_name().
+       * Use fname_buf[] when it fits, otherwise allocate memory (slow).
+       */
+      llen = eval_fname_script(name);
+      if (llen > 0)
+      {
+***************
+*** 8205,8213 ****
+  	}
+      }
+  
+-     name[len] = cc;
+      if (fname != name && fname != fname_buf)
+  	vim_free(fname);
+  
+      return ret;
+  }
+--- 8209,8217 ----
+  	}
+      }
+  
+      if (fname != name && fname != fname_buf)
+  	vim_free(fname);
++     vim_free(name);
+  
+      return ret;
+  }
+*** ../vim-7.2.439/src/testdir/test34.in	2007-09-25 17:59:15.000000000 +0200
+--- src/testdir/test34.in	2010-05-28 21:54:36.000000000 +0200
+***************
+*** 35,40 ****
+--- 35,45 ----
+  :  let g:counter = 0
+  :  return ''
+  :endfunc
++ :func FuncWithRef(a)
++ :  unlet g:FuncRef
++ :  return a:a
++ :endfunc
++ :let g:FuncRef=function("FuncWithRef")
+  :let counter = 0
+  :inoremap <expr> ( ListItem()
+  :inoremap <expr> [ ListReset()
+***************
+*** 47,52 ****
+--- 52,58 ----
+   =retval
+   =Compute(45, 5, "retval")
+   =retval
++  =g:FuncRef(333)
+  
+  XX+-XX
+  ---*---
+*** ../vim-7.2.439/src/testdir/test34.ok	2006-04-30 20:49:40.000000000 +0200
+--- src/testdir/test34.ok	2010-05-28 21:56:03.000000000 +0200
+***************
+*** 1,4 ****
+! xxx4asdf fail nop ok 9
+  XX111XX
+  ---222---
+  1. one
+--- 1,4 ----
+! xxx4asdf fail nop ok 9 333
+  XX111XX
+  ---222---
+  1. one
+*** ../vim-7.2.439/src/version.c	2010-05-28 21:31:51.000000000 +0200
+--- src/version.c	2010-05-28 22:03:30.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     440,
+  /**/
+
+-- 
+Nobody will ever need more than 640 kB RAM.
+		-- Bill Gates, 1983
+Windows 98 requires 16 MB RAM.
+		-- Bill Gates, 1999
+Logical conclusion: Nobody will ever need Windows 98.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.441
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.441
+Problem:    When using ":earlier" undo information may be wrong.
+Solution:   When changing alternate branches also adjust b_u_oldhead.
+Files:	    src/undo.c
+
+
+*** ../vim-7.2.440/src/undo.c	2008-02-13 15:21:29.000000000 +0100
+--- src/undo.c	2010-05-30 16:52:47.000000000 +0200
+***************
+*** 242,248 ****
+  }
+  
+  /*
+!  * save the line "lnum" (used by ":s" and "~" command)
+   * The line is replaced, so the new bottom line is lnum + 1.
+   */
+      int
+--- 242,248 ----
+  }
+  
+  /*
+!  * Save the line "lnum" (used by ":s" and "~" command).
+   * The line is replaced, so the new bottom line is lnum + 1.
+   */
+      int
+***************
+*** 256,262 ****
+  }
+  
+  /*
+!  * a new line is inserted before line "lnum" (used by :s command)
+   * The line is inserted, so the new bottom line is lnum + 1.
+   */
+      int
+--- 256,262 ----
+  }
+  
+  /*
+!  * A new line is inserted before line "lnum" (used by :s command).
+   * The line is inserted, so the new bottom line is lnum + 1.
+   */
+      int
+***************
+*** 270,276 ****
+  }
+  
+  /*
+!  * save the lines "lnum" - "lnum" + nlines (used by delete command)
+   * The lines are deleted, so the new bottom line is lnum, unless the buffer
+   * becomes empty.
+   */
+--- 270,276 ----
+  }
+  
+  /*
+!  * Save the lines "lnum" - "lnum" + nlines (used by delete command).
+   * The lines are deleted, so the new bottom line is lnum, unless the buffer
+   * becomes empty.
+   */
+***************
+*** 996,1001 ****
+--- 996,1003 ----
+  		last->uh_alt_next = uhp;
+  		uhp->uh_alt_prev = last;
+  
++ 		if (curbuf->b_u_oldhead == uhp)
++ 		    curbuf->b_u_oldhead = last;
+  		uhp = last;
+  		if (uhp->uh_next != NULL)
+  		    uhp->uh_next->uh_prev = uhp;
+***************
+*** 1406,1415 ****
+  /*
+   * ":undolist": List the leafs of the undo tree
+   */
+- /*ARGSUSED*/
+      void
+  ex_undolist(eap)
+!     exarg_T *eap;
+  {
+      garray_T	ga;
+      u_header_T	*uhp;
+--- 1408,1416 ----
+  /*
+   * ":undolist": List the leafs of the undo tree
+   */
+      void
+  ex_undolist(eap)
+!     exarg_T *eap UNUSED;
+  {
+      garray_T	ga;
+      u_header_T	*uhp;
+***************
+*** 1529,1538 ****
+  /*
+   * ":undojoin": continue adding to the last entry list
+   */
+- /*ARGSUSED*/
+      void
+  ex_undojoin(eap)
+!     exarg_T *eap;
+  {
+      if (curbuf->b_u_newhead == NULL)
+  	return;		    /* nothing changed before */
+--- 1530,1538 ----
+  /*
+   * ":undojoin": continue adding to the last entry list
+   */
+      void
+  ex_undojoin(eap)
+!     exarg_T *eap UNUSED;
+  {
+      if (curbuf->b_u_newhead == NULL)
+  	return;		    /* nothing changed before */
+*** ../vim-7.2.440/src/version.c	2010-05-28 22:06:41.000000000 +0200
+--- src/version.c	2010-05-30 16:53:56.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     441,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+127. You bring your laptop and cellular phone to church.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.442
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.442 (after 7.2.201)
+Problem:    Copy/paste with OpenOffice doesn't work.
+Solution:   Do not offer the HTML target when it is not supported. (James
+	    Vega)
+Files:	    src/gui_gtk_x11.c, src/option.c, src/proto/gui_gtk_x11.pro
+
+
+*** ../vim-7.2.441/src/gui_gtk_x11.c	2010-02-11 18:19:32.000000000 +0100
+--- src/gui_gtk_x11.c	2010-06-05 12:42:23.000000000 +0200
+***************
+*** 1433,1438 ****
+--- 1433,1442 ----
+      }
+  #endif /* !HAVE_GTK2 */
+  
++     /* Chop off any traiing NUL bytes.  OpenOffice sends these. */
++     while (len > 0 && text[len - 1] == NUL)
++ 	--len;
++ 
+      clip_yank_selection(motion_type, text, (long)len, cbd);
+      received_selection = RS_OK;
+      vim_free(tmpbuf);
+***************
+*** 3463,3468 ****
+--- 3467,3532 ----
+  #endif /* FEAT_GUI_TABLINE */
+  
+  /*
++  * Add selection targets for PRIMARY and CLIPBOARD selections.
++  */
++     void
++ gui_gtk_set_selection_targets(void)
++ {
++     int		    i, j = 0;
++     int		    n_targets = N_SELECTION_TARGETS;
++     GtkTargetEntry  targets[N_SELECTION_TARGETS];
++ 
++     for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
++     {
++ #ifdef FEAT_MBYTE
++ 	/* OpenOffice tries to use TARGET_HTML and fails when it doesn't
++ 	 * return something, instead of trying another target. Therefore only
++ 	 * offer TARGET_HTML when it works. */
++ 	if (!clip_html && selection_targets[i].info == TARGET_HTML)
++ 	    n_targets--;
++ 	else
++ #endif
++ 	    targets[j++] = selection_targets[i];
++     }
++ 
++     gtk_selection_clear_targets(gui.drawarea, (GdkAtom)GDK_SELECTION_PRIMARY);
++     gtk_selection_clear_targets(gui.drawarea, (GdkAtom)clip_plus.gtk_sel_atom);
++     gtk_selection_add_targets(gui.drawarea,
++ 			      (GdkAtom)GDK_SELECTION_PRIMARY,
++ 			      targets, n_targets);
++     gtk_selection_add_targets(gui.drawarea,
++ 			      (GdkAtom)clip_plus.gtk_sel_atom,
++ 			      targets, n_targets);
++ }
++ 
++ /*
++  * Set up for receiving DND items.
++  */
++     void
++ gui_gtk_set_dnd_targets(void)
++ {
++     int		    i, j = 0;
++     int		    n_targets = N_DND_TARGETS;
++     GtkTargetEntry  targets[N_DND_TARGETS];
++ 
++     for (i = 0; i < (int)N_DND_TARGETS; ++i)
++     {
++ #ifdef FEAT_MBYTE
++ 	if (!clip_html && selection_targets[i].info == TARGET_HTML)
++ 	    n_targets--;
++ 	else
++ #endif
++ 	    targets[j++] = dnd_targets[i];
++     }
++ 
++     gtk_drag_dest_unset(gui.drawarea);
++     gtk_drag_dest_set(gui.drawarea,
++ 		      GTK_DEST_DEFAULT_ALL,
++ 		      targets, n_targets,
++ 		      GDK_ACTION_COPY);
++ }
++ 
++ /*
+   * Initialize the GUI.	Create all the windows, set up all the callbacks etc.
+   * Returns OK for success, FAIL when the GUI can't be started.
+   */
+***************
+*** 3925,3939 ****
+      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_received",
+  		       GTK_SIGNAL_FUNC(selection_received_cb), NULL);
+  
+!     /*
+!      * Add selection targets for PRIMARY and CLIPBOARD selections.
+!      */
+!     gtk_selection_add_targets(gui.drawarea,
+! 			      (GdkAtom)GDK_SELECTION_PRIMARY,
+! 			      selection_targets, N_SELECTION_TARGETS);
+!     gtk_selection_add_targets(gui.drawarea,
+! 			      (GdkAtom)clip_plus.gtk_sel_atom,
+! 			      selection_targets, N_SELECTION_TARGETS);
+  
+      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_get",
+  		       GTK_SIGNAL_FUNC(selection_get_cb), NULL);
+--- 3989,3995 ----
+      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_received",
+  		       GTK_SIGNAL_FUNC(selection_received_cb), NULL);
+  
+!     gui_gtk_set_selection_targets();
+  
+      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_get",
+  		       GTK_SIGNAL_FUNC(selection_get_cb), NULL);
+***************
+*** 4057,4063 ****
+      return TRUE;
+  }
+  
+- 
+  /*
+   * Open the GUI window which was created by a call to gui_mch_init().
+   */
+--- 4113,4118 ----
+***************
+*** 4225,4237 ****
+  		       GTK_SIGNAL_FUNC(form_configure_event), NULL);
+  
+  #ifdef FEAT_DND
+!     /*
+!      * Set up for receiving DND items.
+!      */
+!     gtk_drag_dest_set(gui.drawarea,
+! 		      GTK_DEST_DEFAULT_ALL,
+! 		      dnd_targets, N_DND_TARGETS,
+! 		      GDK_ACTION_COPY);
+  
+      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "drag_data_received",
+  		       GTK_SIGNAL_FUNC(drag_data_received_cb), NULL);
+--- 4280,4287 ----
+  		       GTK_SIGNAL_FUNC(form_configure_event), NULL);
+  
+  #ifdef FEAT_DND
+!     /* Set up for receiving DND items. */
+!     gui_gtk_set_dnd_targets();
+  
+      gtk_signal_connect(GTK_OBJECT(gui.drawarea), "drag_data_received",
+  		       GTK_SIGNAL_FUNC(drag_data_received_cb), NULL);
+***************
+*** 4428,4434 ****
+      /* this will cause the proper resizement to happen too */
+      update_window_manager_hints(0, 0);
+  
+! #else  /* HAVE_GTK2 */
+      /* this will cause the proper resizement to happen too */
+      if (gtk_socket_id == 0)
+  	update_window_manager_hints(0, 0);
+--- 4478,4484 ----
+      /* this will cause the proper resizement to happen too */
+      update_window_manager_hints(0, 0);
+  
+! #else
+      /* this will cause the proper resizement to happen too */
+      if (gtk_socket_id == 0)
+  	update_window_manager_hints(0, 0);
+***************
+*** 4444,4457 ****
+      else
+  	update_window_manager_hints(width, height);
+  
+! #if 0
+      if (!resize_idle_installed)
+      {
+  	g_idle_add_full(GDK_PRIORITY_EVENTS + 10,
+  			&force_shell_resize_idle, NULL, NULL);
+  	resize_idle_installed = TRUE;
+      }
+! #endif
+      /*
+       * Wait until all events are processed to prevent a crash because the
+       * real size of the drawing area doesn't reflect Vim's internal ideas.
+--- 4494,4507 ----
+      else
+  	update_window_manager_hints(width, height);
+  
+! # if 0
+      if (!resize_idle_installed)
+      {
+  	g_idle_add_full(GDK_PRIORITY_EVENTS + 10,
+  			&force_shell_resize_idle, NULL, NULL);
+  	resize_idle_installed = TRUE;
+      }
+! # endif
+      /*
+       * Wait until all events are processed to prevent a crash because the
+       * real size of the drawing area doesn't reflect Vim's internal ideas.
+*** ../vim-7.2.441/src/option.c	2010-05-14 17:32:53.000000000 +0200
+--- src/option.c	2010-06-05 12:19:38.000000000 +0200
+***************
+*** 7112,7117 ****
+--- 7112,7124 ----
+  	clip_html = new_html;
+  	vim_free(clip_exclude_prog);
+  	clip_exclude_prog = new_exclude_prog;
++ #ifdef FEAT_GUI_GTK
++ 	if (gui.in_use)
++ 	{
++ 	    gui_gtk_set_selection_targets();
++ 	    gui_gtk_set_dnd_targets();
++ 	}
++ #endif
+      }
+      else
+  	vim_free(new_exclude_prog);
+*** ../vim-7.2.441/src/proto/gui_gtk_x11.pro	2009-09-23 18:14:13.000000000 +0200
+--- src/proto/gui_gtk_x11.pro	2010-06-05 12:31:22.000000000 +0200
+***************
+*** 9,14 ****
+--- 9,16 ----
+  int gui_mch_showing_tabline __ARGS((void));
+  void gui_mch_update_tabline __ARGS((void));
+  void gui_mch_set_curtab __ARGS((int nr));
++ void gui_gtk_set_selection_targets __ARGS((void));
++ void gui_gtk_set_dnd_targets __ARGS((void));
+  int gui_mch_init __ARGS((void));
+  void gui_mch_forked __ARGS((void));
+  void gui_mch_new_colors __ARGS((void));
+*** ../vim-7.2.441/src/version.c	2010-05-30 16:55:17.000000000 +0200
+--- src/version.c	2010-06-05 12:48:01.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     442,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+158. You get a tuner card so you can watch TV while surfing.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.443
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.443 
+Problem:    Using taglist() on a tag file with duplicate fields generates an 
+            internal error. (Peter Odding) 
+Solution:   Check for duplicate field names. 
+Files:      src/eval.c, src/proto/eval.pro, src/tag.c 
+
+
+*** ../vim-7.2.442/src/eval.c	2010-05-28 22:06:41.000000000 +0200
+--- src/eval.c	2010-06-12 19:59:09.000000000 +0200
+***************
+*** 451,457 ****
+  static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
+  static dict_T *dict_copy __ARGS((dict_T *orig, int deep, int copyID));
+  static long dict_len __ARGS((dict_T *d));
+- static dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
+  static char_u *dict2string __ARGS((typval_T *tv, int copyID));
+  static int get_dict_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate));
+  static char_u *echo_string __ARGS((typval_T *tv, char_u **tofree, char_u *numbuf, int copyID));
+--- 451,456 ----
+***************
+*** 7012,7018 ****
+   * If "len" is negative use strlen(key).
+   * Returns NULL when not found.
+   */
+!     static dictitem_T *
+  dict_find(d, key, len)
+      dict_T	*d;
+      char_u	*key;
+--- 7011,7017 ----
+   * If "len" is negative use strlen(key).
+   * Returns NULL when not found.
+   */
+!     dictitem_T *
+  dict_find(d, key, len)
+      dict_T	*d;
+      char_u	*key;
+*** ../vim-7.2.442/src/proto/eval.pro	2010-01-19 15:51:29.000000000 +0100
+--- src/proto/eval.pro	2010-06-12 19:59:13.000000000 +0200
+***************
+*** 56,61 ****
+--- 56,62 ----
+  void dictitem_free __ARGS((dictitem_T *item));
+  int dict_add __ARGS((dict_T *d, dictitem_T *item));
+  int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
++ dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len));
+  char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save));
+  long get_dict_number __ARGS((dict_T *d, char_u *key));
+  char_u *get_function_name __ARGS((expand_T *xp, int idx));
+*** ../vim-7.2.442/src/tag.c	2010-02-24 14:46:58.000000000 +0100
+--- src/tag.c	2010-06-12 20:01:45.000000000 +0200
+***************
+*** 3771,3777 ****
+  static int add_tag_field __ARGS((dict_T *dict, char *field_name, char_u *start, char_u *end));
+  
+  /*
+!  * Add a tag field to the dictionary "dict"
+   */
+      static int
+  add_tag_field(dict, field_name, start, end)
+--- 3771,3778 ----
+  static int add_tag_field __ARGS((dict_T *dict, char *field_name, char_u *start, char_u *end));
+  
+  /*
+!  * Add a tag field to the dictionary "dict".
+!  * Return OK or FAIL.
+   */
+      static int
+  add_tag_field(dict, field_name, start, end)
+***************
+*** 3783,3788 ****
+--- 3784,3800 ----
+      char_u	buf[MAXPATHL];
+      int		len = 0;
+  
++     /* check that the field name doesn't exist yet */
++     if (dict_find(dict, (char_u *)field_name, -1) != NULL)
++     {
++ 	if (p_verbose > 0)
++ 	{
++ 	    verbose_enter();
++ 	    smsg((char_u *)_("Duplicate field name: %s"), field_name);
++ 	    verbose_leave();
++ 	}
++ 	return FAIL;
++     }
+      if (start != NULL)
+      {
+  	if (end == NULL)
+*** ../vim-7.2.442/src/version.c	2010-06-05 12:49:40.000000000 +0200
+--- src/version.c	2010-06-12 20:05:27.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     443,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+191. You rate eating establishments not by the quality of the food,
+     but by the availability of electrical outlets for your PowerBook.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.444
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.444 (after 7.2.442)
+Problem:    Can't build with GTK 1, gtk_selection_clear_targets() is not
+            available. (Patrick Texier)
+Solution:   Don't change the targets for GTK 1, set them once.
+Files:      src/gui_gtk_x11.c, src/option.c
+
+
+*** ../vim-7.2.443/src/gui_gtk_x11.c	2010-06-05 12:49:40.000000000 +0200
+--- src/gui_gtk_x11.c	2010-06-13 02:26:24.000000000 +0200
+***************
+*** 3478,3484 ****
+  
+      for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
+      {
+! #ifdef FEAT_MBYTE
+  	/* OpenOffice tries to use TARGET_HTML and fails when it doesn't
+  	 * return something, instead of trying another target. Therefore only
+  	 * offer TARGET_HTML when it works. */
+--- 3478,3484 ----
+  
+      for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
+      {
+! #if defined(FEAT_MBYTE) && defined(HAVE_GTK2)
+  	/* OpenOffice tries to use TARGET_HTML and fails when it doesn't
+  	 * return something, instead of trying another target. Therefore only
+  	 * offer TARGET_HTML when it works. */
+***************
+*** 3489,3496 ****
+--- 3489,3498 ----
+  	    targets[j++] = selection_targets[i];
+      }
+  
++ #ifdef HAVE_GTK2  /* GTK 1 doesn't have this function */
+      gtk_selection_clear_targets(gui.drawarea, (GdkAtom)GDK_SELECTION_PRIMARY);
+      gtk_selection_clear_targets(gui.drawarea, (GdkAtom)clip_plus.gtk_sel_atom);
++ #endif
+      gtk_selection_add_targets(gui.drawarea,
+  			      (GdkAtom)GDK_SELECTION_PRIMARY,
+  			      targets, n_targets);
+*** ../vim-7.2.443/src/option.c	2010-06-05 12:49:40.000000000 +0200
+--- src/option.c	2010-06-13 02:27:36.000000000 +0200
+***************
+*** 7112,7118 ****
+  	clip_html = new_html;
+  	vim_free(clip_exclude_prog);
+  	clip_exclude_prog = new_exclude_prog;
+! #ifdef FEAT_GUI_GTK
+  	if (gui.in_use)
+  	{
+  	    gui_gtk_set_selection_targets();
+--- 7112,7118 ----
+  	clip_html = new_html;
+  	vim_free(clip_exclude_prog);
+  	clip_exclude_prog = new_exclude_prog;
+! #ifdef HAVE_GTK2  /* for GTK 1 we can't change the list of targets */
+  	if (gui.in_use)
+  	{
+  	    gui_gtk_set_selection_targets();
+*** ../vim-7.2.443/src/version.c	2010-06-12 20:11:53.000000000 +0200
+--- src/version.c	2010-06-13 02:29:18.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     444,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+195. Your cat has its own home page.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.445
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.445
+Problem:    Crash when using undo/redo and a FileChangedRO autocmd event that
+	    reloads the buffer. (Dominique Pelle)
+Solution:   Do not allow autocommands while performing and undo or redo.
+Files:	    src/misc1.c, src/undo.c
+
+
+*** ../vim-7.2.444/src/misc1.c	2010-03-23 18:22:40.000000000 +0100
+--- src/misc1.c	2010-07-07 18:18:52.000000000 +0200
+***************
+*** 2467,2476 ****
+  }
+  
+  /*
+!  * changed() is called when something in the current buffer is changed.
+   *
+   * Most often called through changed_bytes() and changed_lines(), which also
+   * mark the area of the display to be redrawn.
+   */
+      void
+  changed()
+--- 2467,2478 ----
+  }
+  
+  /*
+!  * Call this function when something in the current buffer is changed.
+   *
+   * Most often called through changed_bytes() and changed_lines(), which also
+   * mark the area of the display to be redrawn.
++  *
++  * Careful: may trigger autocommands that reload the buffer.
+   */
+      void
+  changed()
+***************
+*** 2536,2541 ****
+--- 2538,2544 ----
+   * - marks the windows on this buffer to be redisplayed
+   * - marks the buffer changed by calling changed()
+   * - invalidates cached values
++  * Careful: may trigger autocommands that reload the buffer.
+   */
+      void
+  changed_bytes(lnum, col)
+***************
+*** 2649,2654 ****
+--- 2652,2658 ----
+   * below the changed lines (BEFORE the change).
+   * When only inserting lines, "lnum" and "lnume" are equal.
+   * Takes care of calling changed() and updating b_mod_*.
++  * Careful: may trigger autocommands that reload the buffer.
+   */
+      void
+  changed_lines(lnum, col, lnume, xtra)
+***************
+*** 2716,2721 ****
+--- 2720,2730 ----
+      }
+  }
+  
++ /*
++  * Common code for when a change is was made.
++  * See changed_lines() for the arguments.
++  * Careful: may trigger autocommands that reload the buffer.
++  */
+      static void
+  changed_common(lnum, col, lnume, xtra)
+      linenr_T	lnum;
+***************
+*** 2966,2971 ****
+--- 2975,2981 ----
+   * Don't use emsg(), because it flushes the macro buffer.
+   * If we have undone all changes b_changed will be FALSE, but "b_did_warn"
+   * will be TRUE.
++  * Careful: may trigger autocommands that reload the buffer.
+   */
+      void
+  change_warning(col)
+*** ../vim-7.2.444/src/undo.c	2010-05-30 16:55:17.000000000 +0200
+--- src/undo.c	2010-07-07 18:14:44.000000000 +0200
+***************
+*** 185,191 ****
+      }
+  }
+  
+!     void
+  u_check(int newhead_may_be_NULL)
+  {
+      seen_b_u_newhead = 0;
+--- 185,191 ----
+      }
+  }
+  
+!     static void
+  u_check(int newhead_may_be_NULL)
+  {
+      seen_b_u_newhead = 0;
+***************
+*** 320,325 ****
+--- 320,328 ----
+      return TRUE;
+  }
+  
++ /*
++  * Common code for various ways to save text before a change.
++  */
+      static int
+  u_savecommon(top, bot, newbot)
+      linenr_T	top, bot;
+***************
+*** 374,380 ****
+      size = bot - top - 1;
+  
+      /*
+!      * if curbuf->b_u_synced == TRUE make a new header
+       */
+      if (curbuf->b_u_synced)
+      {
+--- 377,383 ----
+      size = bot - top - 1;
+  
+      /*
+!      * If curbuf->b_u_synced == TRUE make a new header.
+       */
+      if (curbuf->b_u_synced)
+      {
+***************
+*** 709,714 ****
+--- 712,723 ----
+  	u_oldcount = -1;
+      while (count--)
+      {
++ 	/* Do the change warning now, so that it triggers FileChangedRO when
++ 	 * needed.  This may cause the file to be reloaded, that must happen
++ 	 * before we do anything, because it may change curbuf->b_u_curhead
++ 	 * and more. */
++ 	change_warning(0);
++ 
+  	if (undo_undoes)
+  	{
+  	    if (curbuf->b_u_curhead == NULL)		/* first undo */
+***************
+*** 952,959 ****
+  	/*
+  	 * First go up the tree as much as needed.
+  	 */
+! 	for (;;)
+  	{
+  	    uhp = curbuf->b_u_curhead;
+  	    if (uhp == NULL)
+  		uhp = curbuf->b_u_newhead;
+--- 961,971 ----
+  	/*
+  	 * First go up the tree as much as needed.
+  	 */
+! 	while (!got_int)
+  	{
++ 	    /* Do the change warning now, for the same reason as above. */
++ 	    change_warning(0);
++ 
+  	    uhp = curbuf->b_u_curhead;
+  	    if (uhp == NULL)
+  		uhp = curbuf->b_u_newhead;
+***************
+*** 970,978 ****
+  	/*
+  	 * And now go down the tree (redo), branching off where needed.
+  	 */
+! 	uhp = curbuf->b_u_curhead;
+! 	while (uhp != NULL)
+  	{
+  	    /* Go back to the first branch with a mark. */
+  	    while (uhp->uh_alt_prev != NULL
+  					&& uhp->uh_alt_prev->uh_walk == mark)
+--- 982,996 ----
+  	/*
+  	 * And now go down the tree (redo), branching off where needed.
+  	 */
+! 	while (!got_int)
+  	{
++ 	    /* Do the change warning now, for the same reason as above. */
++ 	    change_warning(0);
++ 
++ 	    uhp = curbuf->b_u_curhead;
++ 	    if (uhp == NULL)
++ 		break;
++ 
+  	    /* Go back to the first branch with a mark. */
+  	    while (uhp->uh_alt_prev != NULL
+  					&& uhp->uh_alt_prev->uh_walk == mark)
+***************
+*** 1070,1075 ****
+--- 1088,1099 ----
+      int		empty_buffer;		    /* buffer became empty */
+      u_header_T	*curhead = curbuf->b_u_curhead;
+  
++ #ifdef FEAT_AUTOCMD
++     /* Don't want autocommands using the undo structures here, they are
++      * invalid till the end. */
++     block_autocmds();
++ #endif
++ 
+  #ifdef U_DEBUG
+      u_check(FALSE);
+  #endif
+***************
+*** 1099,1104 ****
+--- 1123,1131 ----
+  	if (top > curbuf->b_ml.ml_line_count || top >= bot
+  				      || bot > curbuf->b_ml.ml_line_count + 1)
+  	{
++ #ifdef FEAT_AUTOCMD
++ 	    unblock_autocmds();
++ #endif
+  	    EMSG(_("E438: u_undo: line numbers wrong"));
+  	    changed();		/* don't want UNCHANGED now */
+  	    return;
+***************
+*** 1304,1309 ****
+--- 1331,1340 ----
+      /* The timestamp can be the same for multiple changes, just use the one of
+       * the undone/redone change. */
+      curbuf->b_u_seq_time = curhead->uh_time;
++ 
++ #ifdef FEAT_AUTOCMD
++     unblock_autocmds();
++ #endif
+  #ifdef U_DEBUG
+      u_check(FALSE);
+  #endif
+*** ../vim-7.2.444/src/version.c	2010-06-13 02:35:41.000000000 +0200
+--- src/version.c	2010-07-07 18:18:27.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     445,
+  /**/
+
+-- 
+    A KNIGHT rides into shot and hacks him to the ground.  He rides off.
+    We stay for a moment on the glade.  A MIDDLE-AGED LADY in a C. & A.
+    twin-set emerges from the trees and looks in horror at the body of her
+    HUSBAND.
+MRS HISTORIAN: FRANK!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
+To: vim-dev at vim.org
+Subject: Patch 7.2.446
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.446
+Problem:    Crash in GUI when closing the last window in a tabpage. (ryo7000)
+Solution:   Remove the tabpage from the list before freeing the window.
+Files:	    src/window.c
+
+
+*** ../vim-7.2.445/src/window.c	2010-03-17 16:54:51.000000000 +0100
+--- src/window.c	2010-07-11 13:18:31.000000000 +0200
+***************
+*** 2304,2309 ****
+--- 2304,2310 ----
+      win_T	*wp;
+      int		dir;
+      tabpage_T   *ptp = NULL;
++     int		free_tp = FALSE;
+  
+      /* Close the link to the buffer. */
+      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+***************
+*** 2321,2331 ****
+      if (wp == NULL)
+  	return;
+  
+-     /* Free the memory used for the window. */
+-     wp = win_free_mem(win, &dir, tp);
+- 
+      /* When closing the last window in a tab page remove the tab page. */
+!     if (wp == NULL)
+      {
+  	if (tp == first_tabpage)
+  	    first_tabpage = tp->tp_next;
+--- 2322,2329 ----
+      if (wp == NULL)
+  	return;
+  
+      /* When closing the last window in a tab page remove the tab page. */
+!     if (tp == NULL ? firstwin == lastwin : tp->tp_firstwin == tp->tp_lastwin)
+      {
+  	if (tp == first_tabpage)
+  	    first_tabpage = tp->tp_next;
+***************
+*** 2341,2348 ****
+  	    }
+  	    ptp->tp_next = tp->tp_next;
+  	}
+! 	free_tabpage(tp);
+      }
+  }
+  
+  /*
+--- 2339,2352 ----
+  	    }
+  	    ptp->tp_next = tp->tp_next;
+  	}
+! 	free_tp = TRUE;
+      }
++ 
++     /* Free the memory used for the window. */
++     win_free_mem(win, &dir, tp);
++ 
++     if (free_tp)
++ 	free_tabpage(tp);
+  }
+  
+  /*
+*** ../vim-7.2.445/src/version.c	2010-07-07 18:20:21.000000000 +0200
+--- src/version.c	2010-07-12 21:36:05.000000000 +0200
+***************
+*** 683,684 ****
+--- 683,686 ----
+  {   /* Add new patch number below this line */
++ /**/
++     446,
+  /**/
+
+-- 
+Not too long ago, compress was something you did to garbage...
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch b/meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch
new file mode 100644
index 0000000..c8cfe8e
--- /dev/null
+++ b/meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch
@@ -0,0 +1,17 @@
+upstream: http://groups.google.com/group/vim_dev/browse_thread/thread/5685c3b859e3c793# 
+status: reported upstream
+--- vim72-orig/src/configure.in	2010-09-29 19:13:33.000000000 +0200
++++ vim72/src/configure.in	2010-09-29 19:17:07.000000000 +0200
+@@ -35,10 +35,10 @@
+ fi
+ if test "$GCC" = yes; then
+   dnl method that should work for nearly all versions
+-  gccversion=`"$CC" -dumpversion`
++  gccversion=`$CC -dumpversion`
+   if test "x$gccversion" = "x"; then
+     dnl old method; fall-back for when -dumpversion doesn't work
+-    gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
++    gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
+   fi
+   dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
+   if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
diff --git a/meta-oe/recipes-support/vim/files/vimrc b/meta-oe/recipes-support/vim/files/vimrc
new file mode 100644
index 0000000..df65555
--- /dev/null
+++ b/meta-oe/recipes-support/vim/files/vimrc
@@ -0,0 +1,96 @@
+" An example for a vimrc file.
+"
+" Maintainer:	Bram Moolenaar <Bram at vim.org>
+" Last change:	2008 Jul 02
+"
+" To use it, copy it to
+"     for Unix and OS/2:  ~/.vimrc
+"	      for Amiga:  s:.vimrc
+"  for MS-DOS and Win32:  $VIM\_vimrc
+"	    for OpenVMS:  sys$login:.vimrc
+
+" When started as "evim", evim.vim will already have done these settings.
+if v:progname =~? "evim"
+  finish
+endif
+
+" Use Vim settings, rather then Vi settings (much better!).
+" This must be first, because it changes other options as a side effect.
+set nocompatible
+
+" allow backspacing over everything in insert mode
+set backspace=indent,eol,start
+
+if has("vms")
+  set nobackup		" do not keep a backup file, use versions instead
+else
+  set backup		" keep a backup file
+endif
+set history=50		" keep 50 lines of command line history
+set ruler		" show the cursor position all the time
+set showcmd		" display incomplete commands
+set incsearch		" do incremental searching
+
+" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
+" let &guioptions = substitute(&guioptions, "t", "", "g")
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
+" so that you can undo CTRL-U after inserting a line break.
+inoremap <C-U> <C-G>u<C-U>
+
+" In many terminal emulators the mouse works just fine, thus enable it.
+if has('mouse')
+  set mouse=a
+endif
+
+" Switch syntax highlighting on, when the terminal has colors
+" Also switch on highlighting the last used search pattern.
+"if &t_Co > 2 || has("gui_running")
+"  syntax on
+"  set hlsearch
+"endif
+
+" Only do this part when compiled with support for autocommands.
+if has("autocmd")
+
+  " Enable file type detection.
+  " Use the default filetype settings, so that mail gets 'tw' set to 72,
+  " 'cindent' is on in C files, etc.
+  " Also load indent files, to automatically do language-dependent indenting.
+  filetype plugin indent on
+
+  " Put these in an autocmd group, so that we can delete them easily.
+  augroup vimrcEx
+  au!
+
+  " For all text files set 'textwidth' to 78 characters.
+  autocmd FileType text setlocal textwidth=78
+
+  " When editing a file, always jump to the last known cursor position.
+  " Don't do it when the position is invalid or when inside an event handler
+  " (happens when dropping a file on gvim).
+  " Also don't do it when the mark is in the first line, that is the default
+  " position when opening a file.
+  autocmd BufReadPost *
+    \ if line("'\"") > 1 && line("'\"") <= line("$") |
+    \   exe "normal! g`\"" |
+    \ endif
+
+  augroup END
+
+else
+
+  set autoindent		" always set autoindenting on
+
+endif " has("autocmd")
+
+" Convenient command to see the difference between the current buffer and the
+" file it was loaded from, thus the changes you made.
+" Only define it when not defined already.
+if !exists(":DiffOrig")
+  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
+		  \ | wincmd p | diffthis
+endif
diff --git a/meta-oe/recipes-support/vim/gvim_7.2.446.bb b/meta-oe/recipes-support/vim/gvim_7.2.446.bb
new file mode 100644
index 0000000..94215b4
--- /dev/null
+++ b/meta-oe/recipes-support/vim/gvim_7.2.446.bb
@@ -0,0 +1,10 @@
+VIMGUI = "gtk2"
+VIMX = "--with-x"
+
+require vim_${PV}.bb
+
+DEPENDS += "gtk+ xt"
+
+EXTRA_OECONF += "--enable-gtk2-test"
+
+RREPLACES_${PN} = "vim vim-tiny"
diff --git a/meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb b/meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb
new file mode 100644
index 0000000..25a9205
--- /dev/null
+++ b/meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb
@@ -0,0 +1,5 @@
+VIMFEATURES = "tiny"
+
+require vim_${PV}.bb
+
+RCONFLICTS_${PN} = "gvim vim"
diff --git a/meta-oe/recipes-support/vim/vim.inc b/meta-oe/recipes-support/vim/vim.inc
new file mode 100644
index 0000000..43924f3
--- /dev/null
+++ b/meta-oe/recipes-support/vim/vim.inc
@@ -0,0 +1,77 @@
+DESCRIPTION = "Vi IMproved - enhanced vi editor"
+SECTION = "console/utils"
+DEPENDS = "ncurses"
+# vimdiff doesn't like busybox diff
+RSUGGESTS_${PN} = "diffutils"
+LICENSE = "vim"
+LIC_FILES_CHKSUM = "file://README.txt;md5=72c4840d07b65659b60b3fa405c7da36"
+
+PV_MAJOR = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
+VIMDIR = "${@bb.data.getVar('PV',d,1).split('.')[0]}${@bb.data.getVar('PV',d,1).split('.')[1]}"
+
+INC_PR = "r10"
+
+SRC_URI = " \
+  ftp://ftp.vim.org/pub/vim/unix/vim-${PV_MAJOR}.tar.bz2;name=vim${PV_MAJOR}tarbz2 \
+  ftp://ftp.vim.org/pub/vim/extra/vim-${PV_MAJOR}-extra.tar.gz;name=vim${PV_MAJOR}extratargz \
+  ftp://ftp.vim.org/pub/vim/extra/vim-${PV_MAJOR}-lang.tar.gz;name=vim${PV_MAJOR}langtargz \
+"
+
+S = "${WORKDIR}/vim${VIMDIR}/src"
+
+inherit autotools update-alternatives
+
+# vim configure.in contains functions which got 'dropped' by autotools.bbclass
+do_configure () {
+  rm -f auto/*
+  touch auto/config.mk
+  aclocal
+  autoconf
+  oe_runconf
+  touch auto/configure
+  touch auto/config.mk auto/config.h
+}
+
+
+
+VIMFEATURES ?= "big"
+VIMX ?= "--without-x"
+VIMGUI ?= "no"
+
+EXTRA_OECONF = " \
+  --enable-gui=${VIMGUI} \
+  --with-features=${VIMFEATURES} \
+  ${VIMX} \
+  --disable-gpm \
+  --disable-gtktest \
+  --disable-xim \
+  --disable-netbeans \
+  --with-tlib=ncurses \
+  ac_cv_small_wchar_t=no \
+  vim_cv_getcwd_broken=no \
+  vim_cv_memmove_handles_overlap=yes \
+  vim_cv_stat_ignores_slash=no \
+  vim_cv_terminfo=yes \
+  vim_cv_tgent=non-zero \
+  vim_cv_toupper_broken=no \
+  vim_cv_tty_group=world \
+"
+
+PACKAGES =+ "vim-common vim-syntax vim-help vim-tutor"
+FILES_vim-syntax = "${datadir}/vim/vim${VIMVER}/syntax"
+FILES_vim-help = "${datadir}/vim/vim${VIMVER}/doc"
+FILES_vim-tutor = "${datadir}/vim/vim${VIMVER}/tutor ${bindir}/vimtutor"
+
+ALTERNATIVE_NAME = "vi"
+ALTERNATIVE_PATH = "${bindir}/vim"
+ALTERNATIVE_LINK = "${base_bindir}/vi"
+ALTERNATIVE_PRIORITY = "100"
+
+SRC_URI[vim7.2tarbz2.md5sum] = "f0901284b338e448bfd79ccca0041254"
+SRC_URI[vim7.2tarbz2.sha256sum] = "914db0f2205ebd6f02878295ec2506036ea7500399db112c61a01491cd9a1d86"
+SRC_URI[vim7.2langtargz.md5sum] = "d8884786979e0e520c112faf2e176f05"
+SRC_URI[vim7.2langtargz.sha256sum] = "11607f539a4518b550bf1606b7d3a6f36c1ffdf566c058e7d94bced78034cd5b"
+SRC_URI[vim7.2extratargz.md5sum] = "35e04482f07c57221c9a751aaa3b8dac"
+SRC_URI[vim7.2extratargz.sha256sum] = "20894ac79672160bfc4f1d2f9f9775b34d944762d655307a91ca96d358faa04d"
+
+PARALLEL_MAKE = ""
diff --git a/meta-oe/recipes-support/vim/vim_7.2.446.bb b/meta-oe/recipes-support/vim/vim_7.2.446.bb
new file mode 100644
index 0000000..62d76d7
--- /dev/null
+++ b/meta-oe/recipes-support/vim/vim_7.2.446.bb
@@ -0,0 +1,41 @@
+# vim-tiny sets that too
+VIMFEATURES ?= "big"
+
+# GUI type - gvim recipe sets "gtk2"
+VIMGUI ?= "no"
+
+# gvim recipes uses "--with-x"
+VIMX ?= "--without-x"
+
+require vim.inc
+
+PR = "${INC_PR}.3"
+
+# 001-446; 401-446 are not yet available online
+SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.001-100.gz;name=p001-100;apply=yes;patchdir=..;pnum=0"
+SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.101-200.gz;name=p101-200;apply=yes;patchdir=..;pnum=0"
+SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.201-300.gz;name=p201-300;apply=yes;patchdir=..;pnum=0"
+SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.301-400.gz;name=p301-400;apply=yes;patchdir=..;pnum=0"
+SRC_URI += "file://401-446.diff;patchdir=..;pnum=0"
+
+SRC_URI[p001-100.md5sum] = "ba91b19374cee90f71b8f4ab1d92dc0f"
+SRC_URI[p001-100.sha256sum] = "519f4fea460e4f7a737ea8006c0dc1684982f8372d1581fb963a5d58f8007f67"
+SRC_URI[p101-200.md5sum] = "b485233d360041d043c56cd99057dbff"
+SRC_URI[p101-200.sha256sum] = "0a6e25e454706377f8a6babe4da99c6eab7e71a63d28ad9b24aa5c170522bac3"
+SRC_URI[p201-300.md5sum] = "069fb537772a8e4a74119d8a6a7e61f3"
+SRC_URI[p201-300.sha256sum] = "a11bad3a4e167501c62f0212d3b8935a73a1ae378c5d6ed73a477a71f57baffa"
+SRC_URI[p301-400.md5sum] = "137b5821ff4a2266796d14d867be5f9f"
+SRC_URI[p301-400.sha256sum] = "41f022ec829786a008685c0b00acf8be09525755a94a06236a4b879b1f84b5f4"
+
+SRC_URI += "file://configure.in_remove_CC_quotes.patch;patchdir=.."
+SRC_URI += "file://vimrc"
+
+do_install_append() {
+    install -m 0644 ${WORKDIR}/vimrc ${D}/${datadir}/vim
+}
+
+RCONFLICTS_${PN} = "gvim"
+RREPLACES_${PN} = "vim-tiny"
+PACKAGES =+ "${PN}-vimrc"
+
+FILES_${PN}-vimrc = "${datadir}/vim/vimrc"
-- 
1.7.3.4





More information about the Openembedded-devel mailing list