r756 - in /trunk/packages/vim: debian/README debian/changelog upstream/patches/7.0.068 upstream/patches/7.0.069 upstream/patches/7.0.070 upstream/patches/7.0.071 upstream/patches/7.0.072 upstream/patches/7.0.073 upstream/patches/7.0.074

active2-guest at users.alioth.debian.org active2-guest at users.alioth.debian.org
Tue Aug 29 19:54:23 UTC 2006


Author: active2-guest
Date: Tue Aug 29 19:54:21 2006
New Revision: 756

URL: http://svn.debian.org/wsvn/pkg-vim/?sc=1&rev=756
Log:
 * Added upstream patches up to patch 74

Added:
    trunk/packages/vim/upstream/patches/7.0.068
    trunk/packages/vim/upstream/patches/7.0.069
    trunk/packages/vim/upstream/patches/7.0.070
    trunk/packages/vim/upstream/patches/7.0.071
    trunk/packages/vim/upstream/patches/7.0.072
    trunk/packages/vim/upstream/patches/7.0.073
    trunk/packages/vim/upstream/patches/7.0.074
Modified:
    trunk/packages/vim/debian/README
    trunk/packages/vim/debian/changelog

Modified: trunk/packages/vim/debian/README
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/debian/README?rev=756&op=diff
==============================================================================
--- trunk/packages/vim/debian/README (original)
+++ trunk/packages/vim/debian/README Tue Aug 29 19:54:21 2006
@@ -92,3 +92,10 @@
   1750  7.0.065  (extra) Mac: horizontal scroll wheel caused vertical scroll
   1407  7.0.066  tab pages line not redrawn after removing the popup menu
   3038  7.0.067  undo problems when using input method
+  6123  7.0.068  'ignorecase' is not used properly for Insert mode completion
+  1457  7.0.069  crash when setting 'guitablabel' to "%!expand(\%)"
+ 71560  7.0.070  compiler warnings for shadowed and uninitialized variables
+  1550  7.0.071  using empty search pattern may cause a crash
+  2791  7.0.072  can't specify anything to do when starting the GUI fails
+  1597  7.0.073  CR in Insert mode completion may select original text
+  6819  7.0.074  (extra) Win32: tooltips can be in the wrong encoding

Modified: trunk/packages/vim/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/debian/changelog?rev=756&op=diff
==============================================================================
--- trunk/packages/vim/debian/changelog (original)
+++ trunk/packages/vim/debian/changelog Tue Aug 29 19:54:21 2006
@@ -1,7 +1,7 @@
-vim (1:7.0-067+1) UNRELEASED; urgency=medium
+vim (1:7.0-074+1) UNRELEASED; urgency=medium
 
   [ Debian Vim Maintainers ]
-  * New upstream patches (036 - 067), see README.gz for details.
+  * New upstream patches (036 - 074), see README.gz for details.
   * Urgency medium because of the fix to vim-lesstif's crash bug.
 
   [ James Vega ]
@@ -23,7 +23,7 @@
     better recognition of tex vs plaintex filetype (namely it recognizes as
     latex files containing sectioning commands). (closes: #384479)
 
- -- James Vega <jamessan at debian.org>  Tue, 29 Aug 2006 10:19:26 -0400
+ -- Matthijs Mohlmann <matthijs at cacholong.nl>  Tue, 29 Aug 2006 21:52:03 +0200
 
 vim (1:7.0-035+1) unstable; urgency=low
 

Added: trunk/packages/vim/upstream/patches/7.0.068
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.068?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.068 (added)
+++ trunk/packages/vim/upstream/patches/7.0.068 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,194 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.068
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.068
+Problem:    When 'ignorecase' is set and using Insert mode completion,
+	    typing characters to change the list of matches, case is not
+	    ignored. (Hugo Ahlenius)
+Solution:   Store the 'ignorecase' flag with the matches where needed.
+Files:	    src/edit.c, src/search.c, src/spell.c
+
+
+*** ../vim-7.0.067/src/edit.c	Tue Aug 29 16:10:54 2006
+--- src/edit.c	Tue Aug 29 14:57:46 2006
+***************
+*** 2405,2411 ****
+      /* compl_pattern doesn't need to be set */
+      compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
+      if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
+! 			-1, FALSE, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
+  	return;
+  
+      /* Handle like dictionary completion. */
+--- 2405,2411 ----
+      /* compl_pattern doesn't need to be set */
+      compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
+      if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
+! 			-1, p_ic, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
+  	return;
+  
+      /* Handle like dictionary completion. */
+***************
+*** 2821,2827 ****
+  			ptr = find_word_end(ptr);
+  		    add_r = ins_compl_add_infercase(regmatch->startp[0],
+  					  (int)(ptr - regmatch->startp[0]),
+! 						     FALSE, files[i], *dir, 0);
+  		    if (thesaurus)
+  		    {
+  			char_u *wstart;
+--- 2821,2827 ----
+  			ptr = find_word_end(ptr);
+  		    add_r = ins_compl_add_infercase(regmatch->startp[0],
+  					  (int)(ptr - regmatch->startp[0]),
+! 						     p_ic, files[i], *dir, 0);
+  		    if (thesaurus)
+  		    {
+  			char_u *wstart;
+***************
+*** 2857,2863 ****
+  				ptr = find_word_end(ptr);
+  			    add_r = ins_compl_add_infercase(wstart,
+  				    (int)(ptr - wstart),
+! 				    FALSE, files[i], *dir, 0);
+  			}
+  		    }
+  		    if (add_r == OK)
+--- 2857,2863 ----
+  				ptr = find_word_end(ptr);
+  			    add_r = ins_compl_add_infercase(wstart,
+  				    (int)(ptr - wstart),
+! 				    p_ic, files[i], *dir, 0);
+  			}
+  		    }
+  		    if (add_r == OK)
+***************
+*** 3826,3832 ****
+  		    TAG_INS_COMP | (ctrl_x_mode ? TAG_VERBOSE : 0),
+  		    TAG_MANY, curbuf->b_ffname) == OK && num_matches > 0)
+  	    {
+! 		ins_compl_add_matches(num_matches, matches, FALSE);
+  	    }
+  	    p_ic = save_p_ic;
+  	    break;
+--- 3826,3832 ----
+  		    TAG_INS_COMP | (ctrl_x_mode ? TAG_VERBOSE : 0),
+  		    TAG_MANY, curbuf->b_ffname) == OK && num_matches > 0)
+  	    {
+! 		ins_compl_add_matches(num_matches, matches, p_ic);
+  	    }
+  	    p_ic = save_p_ic;
+  	    break;
+***************
+*** 3867,3873 ****
+  	    num_matches = expand_spelling(first_match_pos.lnum,
+  				 first_match_pos.col, compl_pattern, &matches);
+  	    if (num_matches > 0)
+! 		ins_compl_add_matches(num_matches, matches, FALSE);
+  #endif
+  	    break;
+  
+--- 3867,3873 ----
+  	    num_matches = expand_spelling(first_match_pos.lnum,
+  				 first_match_pos.col, compl_pattern, &matches);
+  	    if (num_matches > 0)
+! 		ins_compl_add_matches(num_matches, matches, p_ic);
+  #endif
+  	    break;
+  
+***************
+*** 4001,4007 ****
+  			    continue;
+  		    }
+  		}
+! 		if (ins_compl_add_infercase(ptr, len, FALSE,
+  				 ins_buf == curbuf ? NULL : ins_buf->b_sfname,
+  					   0, flags) != NOTDONE)
+  		{
+--- 4001,4007 ----
+  			    continue;
+  		    }
+  		}
+! 		if (ins_compl_add_infercase(ptr, len, p_ic,
+  				 ins_buf == curbuf ? NULL : ins_buf->b_sfname,
+  					   0, flags) != NOTDONE)
+  		{
+***************
+*** 4809,4815 ****
+  	vim_free(compl_orig_text);
+  	compl_orig_text = vim_strnsave(line + compl_col, compl_length);
+  	if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
+! 			-1, FALSE, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
+  	{
+  	    vim_free(compl_pattern);
+  	    compl_pattern = NULL;
+--- 4809,4815 ----
+  	vim_free(compl_orig_text);
+  	compl_orig_text = vim_strnsave(line + compl_col, compl_length);
+  	if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
+! 			-1, p_ic, NULL, NULL, 0, ORIGINAL_TEXT, FALSE) != OK)
+  	{
+  	    vim_free(compl_pattern);
+  	    compl_pattern = NULL;
+*** ../vim-7.0.067/src/search.c	Fri May  5 23:15:17 2006
+--- src/search.c	Tue Aug 29 14:56:15 2006
+***************
+*** 4871,4877 ****
+  			goto exit_matched;
+  		}
+  
+! 		add_r = ins_compl_add_infercase(aux, i, FALSE,
+  			curr_fname == curbuf->b_fname ? NULL : curr_fname,
+  			dir, reuse);
+  		if (add_r == OK)
+--- 4876,4882 ----
+  			goto exit_matched;
+  		}
+  
+! 		add_r = ins_compl_add_infercase(aux, i, p_ic,
+  			curr_fname == curbuf->b_fname ? NULL : curr_fname,
+  			dir, reuse);
+  		if (add_r == OK)
+*** ../vim-7.0.067/src/spell.c	Sun Jul 23 21:52:16 2006
+--- src/spell.c	Tue Aug 29 14:56:26 2006
+***************
+*** 15658,15664 ****
+  		    ? MB_STRNICMP(p, pat, STRLEN(pat)) == 0
+  		    : STRNCMP(p, pat, STRLEN(pat)) == 0)
+  		&& ins_compl_add_infercase(p, (int)STRLEN(p),
+! 					  FALSE, NULL, *dir, 0) == OK)
+  	/* if dir was BACKWARD then honor it just once */
+  	*dir = FORWARD;
+  }
+--- 15662,15668 ----
+  		    ? MB_STRNICMP(p, pat, STRLEN(pat)) == 0
+  		    : STRNCMP(p, pat, STRLEN(pat)) == 0)
+  		&& ins_compl_add_infercase(p, (int)STRLEN(p),
+! 					  p_ic, NULL, *dir, 0) == OK)
+  	/* if dir was BACKWARD then honor it just once */
+  	*dir = FORWARD;
+  }
+*** ../vim-7.0.067/src/version.c	Tue Aug 29 16:10:54 2006
+--- src/version.c	Tue Aug 29 16:13:49 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     68,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+266. You hear most of your jokes via e-mail instead of in person.
+
+ /// 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    ///

Added: trunk/packages/vim/upstream/patches/7.0.069
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.069?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.069 (added)
+++ trunk/packages/vim/upstream/patches/7.0.069 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,53 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.069
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.069
+Problem:    Setting 'guitablabel' to %!expand(\%)  causes Vim to free an
+	    invalid pointer. (Kim Schulz)
+Solution:   Don't try freeing a constant string pointer.
+Files:	    src/buffer.c
+
+
+*** ../vim-7.0.068/src/buffer.c	Wed Aug 16 19:34:59 2006
+--- src/buffer.c	Tue Aug 29 16:23:49 2006
+***************
+*** 3324,3330 ****
+      {
+  	usefmt = eval_to_string_safe(fmt + 2, NULL, use_sandbox);
+  	if (usefmt == NULL)
+! 	    usefmt = (char_u *)"";
+      }
+  #endif
+  
+--- 3324,3330 ----
+      {
+  	usefmt = eval_to_string_safe(fmt + 2, NULL, use_sandbox);
+  	if (usefmt == NULL)
+! 	    usefmt = fmt;
+      }
+  #endif
+  
+*** ../vim-7.0.068/src/version.c	Tue Aug 29 16:33:23 2006
+--- src/version.c	Tue Aug 29 16:48:08 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     69,
+  /**/
+
+-- 
+Two fish in a tank. One says to the other:
+"Do you know how to drive this thing?"
+
+ /// 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    ///

Added: trunk/packages/vim/upstream/patches/7.0.070
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.070?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.070 (added)
+++ trunk/packages/vim/upstream/patches/7.0.070 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,2603 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.070
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.070
+Problem:    Compiler warnings for shadowed variables and uninitialized
+	    variables.
+Solution:   Rename variables such as "index", "msg" and "dup".  Initialize
+	    variables.
+Files:	    src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
+	    src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c,
+	    src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c,
+	    src/memline.c, src/netbeans.c, src/normal.c, src/option.c,
+	    src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c,
+	    src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c,
+	    src/version.c
+
+
+*** ../vim-7.0.069/src/edit.c	Tue Aug 29 16:33:23 2006
+--- src/edit.c	Tue Aug 29 14:57:46 2006
+***************
+*** 129,135 ****
+  
+  static void ins_ctrl_x __ARGS((void));
+  static int  has_compl_option __ARGS((int dict_opt));
+! static int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags, int dup));
+  static int  ins_compl_equal __ARGS((compl_T *match, char_u *str, int len));
+  static void ins_compl_longest_match __ARGS((compl_T *match));
+  static void ins_compl_add_matches __ARGS((int num_matches, char_u **matches, int icase));
+--- 129,135 ----
+  
+  static void ins_ctrl_x __ARGS((void));
+  static int  has_compl_option __ARGS((int dict_opt));
+! static int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags, int adup));
+  static int  ins_compl_equal __ARGS((compl_T *match, char_u *str, int len));
+  static void ins_compl_longest_match __ARGS((compl_T *match));
+  static void ins_compl_add_matches __ARGS((int num_matches, char_u **matches, int icase));
+***************
+*** 2118,2124 ****
+   * maybe because alloc() returns NULL, then FAIL is returned.
+   */
+      static int
+! ins_compl_add(str, len, icase, fname, cptext, cdir, flags, dup)
+      char_u	*str;
+      int		len;
+      int		icase;
+--- 2118,2124 ----
+   * maybe because alloc() returns NULL, then FAIL is returned.
+   */
+      static int
+! ins_compl_add(str, len, icase, fname, cptext, cdir, flags, adup)
+      char_u	*str;
+      int		len;
+      int		icase;
+***************
+*** 2126,2132 ****
+      char_u	**cptext;   /* extra text for popup menu or NULL */
+      int		cdir;
+      int		flags;
+!     int		dup;	    /* accept duplicate match */
+  {
+      compl_T	*match;
+      int		dir = (cdir == 0 ? compl_direction : cdir);
+--- 2126,2132 ----
+      char_u	**cptext;   /* extra text for popup menu or NULL */
+      int		cdir;
+      int		flags;
+!     int		adup;	    /* accept duplicate match */
+  {
+      compl_T	*match;
+      int		dir = (cdir == 0 ? compl_direction : cdir);
+***************
+*** 2140,2146 ****
+      /*
+       * If the same match is already present, don't add it.
+       */
+!     if (compl_first_match != NULL && !dup)
+      {
+  	match = compl_first_match;
+  	do
+--- 2140,2146 ----
+      /*
+       * If the same match is already present, don't add it.
+       */
+!     if (compl_first_match != NULL && !adup)
+      {
+  	match = compl_first_match;
+  	do
+***************
+*** 3608,3614 ****
+  {
+      char_u	*word;
+      int		icase = FALSE;
+!     int		dup = FALSE;
+      char_u	*(cptext[CPT_COUNT]);
+  
+      if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
+--- 3608,3614 ----
+  {
+      char_u	*word;
+      int		icase = FALSE;
+!     int		adup = FALSE;
+      char_u	*(cptext[CPT_COUNT]);
+  
+      if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
+***************
+*** 3625,3631 ****
+  	if (get_dict_string(tv->vval.v_dict, (char_u *)"icase", FALSE) != NULL)
+  	    icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase");
+  	if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL)
+! 	    dup = get_dict_number(tv->vval.v_dict, (char_u *)"dup");
+      }
+      else
+      {
+--- 3625,3631 ----
+  	if (get_dict_string(tv->vval.v_dict, (char_u *)"icase", FALSE) != NULL)
+  	    icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase");
+  	if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL)
+! 	    adup = get_dict_number(tv->vval.v_dict, (char_u *)"dup");
+      }
+      else
+      {
+***************
+*** 3634,3640 ****
+      }
+      if (word == NULL || *word == NUL)
+  	return FAIL;
+!     return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, dup);
+  }
+  #endif
+  
+--- 3634,3640 ----
+      }
+      if (word == NULL || *word == NUL)
+  	return FAIL;
+!     return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup);
+  }
+  #endif
+  
+*** ../vim-7.0.069/src/eval.c	Wed Aug 16 22:03:35 2006
+--- src/eval.c	Thu Aug 24 22:00:09 2006
+***************
+*** 454,460 ****
+  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 *msg, char_u *name));
+  
+  static void f_add __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
+--- 454,460 ----
+  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 void f_add __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 2260,2266 ****
+  	    EMSG(_(e_letunexp));
+  	else
+  	{
+! 	    char_u	*tofree = NULL;
+  	    char_u	*s;
+  
+  	    p = get_tv_string_chk(tv);
+--- 2260,2266 ----
+  	    EMSG(_(e_letunexp));
+  	else
+  	{
+! 	    char_u	*ptofree = NULL;
+  	    char_u	*s;
+  
+  	    p = get_tv_string_chk(tv);
+***************
+*** 2269,2275 ****
+  		s = get_reg_contents(*arg == '@' ? '"' : *arg, TRUE, TRUE);
+  		if (s != NULL)
+  		{
+! 		    p = tofree = concat_str(s, p);
+  		    vim_free(s);
+  		}
+  	    }
+--- 2269,2275 ----
+  		s = get_reg_contents(*arg == '@' ? '"' : *arg, TRUE, TRUE);
+  		if (s != NULL)
+  		{
+! 		    p = ptofree = concat_str(s, p);
+  		    vim_free(s);
+  		}
+  	    }
+***************
+*** 2278,2284 ****
+  		write_reg_contents(*arg == '@' ? '"' : *arg, p, -1, FALSE);
+  		arg_end = arg + 1;
+  	    }
+! 	    vim_free(tofree);
+  	}
+      }
+  
+--- 2278,2284 ----
+  		write_reg_contents(*arg == '@' ? '"' : *arg, p, -1, FALSE);
+  		arg_end = arg + 1;
+  	    }
+! 	    vim_free(ptofree);
+  	}
+      }
+  
+***************
+*** 7595,7602 ****
+   * Give an error message with a function name.  Handle <SNR> things.
+   */
+      static void
+! emsg_funcname(msg, name)
+!     char	*msg;
+      char_u	*name;
+  {
+      char_u	*p;
+--- 7595,7602 ----
+   * Give an error message with a function name.  Handle <SNR> things.
+   */
+      static void
+! emsg_funcname(ermsg, name)
+!     char	*ermsg;
+      char_u	*name;
+  {
+      char_u	*p;
+***************
+*** 7605,7611 ****
+  	p = concat_str((char_u *)"<SNR>", name + 3);
+      else
+  	p = name;
+!     EMSG2(_(msg), p);
+      if (p != name)
+  	vim_free(p);
+  }
+--- 7605,7611 ----
+  	p = concat_str((char_u *)"<SNR>", name + 3);
+      else
+  	p = name;
+!     EMSG2(_(ermsg), p);
+      if (p != name)
+  	vim_free(p);
+  }
+***************
+*** 9179,9203 ****
+      typval_T	save_key;
+      int		rem;
+      int		todo;
+!     char_u	*msg = map ? (char_u *)"map()" : (char_u *)"filter()";
+      int		save_did_emsg;
+  
+      rettv->vval.v_number = 0;
+      if (argvars[0].v_type == VAR_LIST)
+      {
+  	if ((l = argvars[0].vval.v_list) == NULL
+! 		|| (map && tv_check_lock(l->lv_lock, msg)))
+  	    return;
+      }
+      else if (argvars[0].v_type == VAR_DICT)
+      {
+  	if ((d = argvars[0].vval.v_dict) == NULL
+! 		|| (map && tv_check_lock(d->dv_lock, msg)))
+  	    return;
+      }
+      else
+      {
+! 	EMSG2(_(e_listdictarg), msg);
+  	return;
+      }
+  
+--- 9179,9203 ----
+      typval_T	save_key;
+      int		rem;
+      int		todo;
+!     char_u	*ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+      int		save_did_emsg;
+  
+      rettv->vval.v_number = 0;
+      if (argvars[0].v_type == VAR_LIST)
+      {
+  	if ((l = argvars[0].vval.v_list) == NULL
+! 		|| (map && tv_check_lock(l->lv_lock, ermsg)))
+  	    return;
+      }
+      else if (argvars[0].v_type == VAR_DICT)
+      {
+  	if ((d = argvars[0].vval.v_dict) == NULL
+! 		|| (map && tv_check_lock(d->dv_lock, ermsg)))
+  	    return;
+      }
+      else
+      {
+! 	EMSG2(_(e_listdictarg), ermsg);
+  	return;
+      }
+  
+***************
+*** 9229,9235 ****
+  		{
+  		    --todo;
+  		    di = HI2DI(hi);
+! 		    if (tv_check_lock(di->di_tv.v_lock, msg))
+  			break;
+  		    vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
+  		    if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
+--- 9229,9235 ----
+  		{
+  		    --todo;
+  		    di = HI2DI(hi);
+! 		    if (tv_check_lock(di->di_tv.v_lock, ermsg))
+  			break;
+  		    vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
+  		    if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
+***************
+*** 9248,9254 ****
+  	{
+  	    for (li = l->lv_first; li != NULL; li = nli)
+  	    {
+! 		if (tv_check_lock(li->li_tv.v_lock, msg))
+  		    break;
+  		nli = li->li_next;
+  		if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+--- 9248,9254 ----
+  	{
+  	    for (li = l->lv_first; li != NULL; li = nli)
+  	    {
+! 		if (tv_check_lock(li->li_tv.v_lock, ermsg))
+  		    break;
+  		nli = li->li_next;
+  		if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+***************
+*** 19789,19795 ****
+  	    if (p_verbose >= 14)
+  	    {
+  		char_u	buf[MSG_BUF_LEN];
+! 		char_u	numbuf[NUMBUFLEN];
+  		char_u	*tofree;
+  
+  		msg_puts((char_u *)"(");
+--- 19789,19795 ----
+  	    if (p_verbose >= 14)
+  	    {
+  		char_u	buf[MSG_BUF_LEN];
+! 		char_u	numbuf2[NUMBUFLEN];
+  		char_u	*tofree;
+  
+  		msg_puts((char_u *)"(");
+***************
+*** 19801,19808 ****
+  			msg_outnum((long)argvars[i].vval.v_number);
+  		    else
+  		    {
+! 			trunc_string(tv2string(&argvars[i], &tofree, numbuf, 0),
+! 							    buf, MSG_BUF_CLEN);
+  			msg_puts(buf);
+  			vim_free(tofree);
+  		    }
+--- 19801,19808 ----
+  			msg_outnum((long)argvars[i].vval.v_number);
+  		    else
+  		    {
+! 			trunc_string(tv2string(&argvars[i], &tofree,
+! 					      numbuf2, 0), buf, MSG_BUF_CLEN);
+  			msg_puts(buf);
+  			vim_free(tofree);
+  		    }
+***************
+*** 19880,19892 ****
+  	else
+  	{
+  	    char_u	buf[MSG_BUF_LEN];
+! 	    char_u	numbuf[NUMBUFLEN];
+  	    char_u	*tofree;
+  
+  	    /* The value may be very long.  Skip the middle part, so that we
+  	     * have some idea how it starts and ends. smsg() would always
+  	     * truncate it at the end. */
+! 	    trunc_string(tv2string(fc.rettv, &tofree, numbuf, 0),
+  							   buf, MSG_BUF_CLEN);
+  	    smsg((char_u *)_("%s returning %s"), sourcing_name, buf);
+  	    vim_free(tofree);
+--- 19880,19892 ----
+  	else
+  	{
+  	    char_u	buf[MSG_BUF_LEN];
+! 	    char_u	numbuf2[NUMBUFLEN];
+  	    char_u	*tofree;
+  
+  	    /* The value may be very long.  Skip the middle part, so that we
+  	     * have some idea how it starts and ends. smsg() would always
+  	     * truncate it at the end. */
+! 	    trunc_string(tv2string(fc.rettv, &tofree, numbuf2, 0),
+  							   buf, MSG_BUF_CLEN);
+  	    smsg((char_u *)_("%s returning %s"), sourcing_name, buf);
+  	    vim_free(tofree);
+*** ../vim-7.0.069/src/ex_cmds.c	Sun Apr 23 00:33:23 2006
+--- src/ex_cmds.c	Mon Aug 28 21:42:29 2006
+***************
+*** 185,190 ****
+--- 185,191 ----
+  	    new_indent = indent;
+  	else
+  	{
++ 	    has_tab = FALSE;	/* avoid uninit warnings */
+  	    len = linelen(eap->cmdidx == CMD_right ? &has_tab
+  						   : NULL) - get_indent();
+  
+***************
+*** 1772,1781 ****
+  				? (st_old.st_mode & 0020)
+  				: (st_old.st_mode & 0002))))
+  	{
+! 	    int	tt;
+  
+  	    /* avoid a wait_return for this message, it's annoying */
+- 	    tt = msg_didany;
+  	    EMSG2(_("E137: Viminfo file is not writable: %s"), fname);
+  	    msg_didany = tt;
+  	    fclose(fp_in);
+--- 1773,1781 ----
+  				? (st_old.st_mode & 0020)
+  				: (st_old.st_mode & 0002))))
+  	{
+! 	    int	tt = msg_didany;
+  
+  	    /* avoid a wait_return for this message, it's annoying */
+  	    EMSG2(_("E137: Viminfo file is not writable: %s"), fname);
+  	    msg_didany = tt;
+  	    fclose(fp_in);
+*** ../vim-7.0.069/src/ex_cmds2.c	Tue Apr 18 00:10:47 2006
+--- src/ex_cmds2.c	Thu Aug 24 22:01:44 2006
+***************
+*** 3648,3660 ****
+   * Return FALSE when not sourcing a file.
+   */
+      int
+! source_finished(getline, cookie)
+!     char_u	*(*getline) __ARGS((int, void *, int));
+      void	*cookie;
+  {
+!     return (getline_equal(getline, cookie, getsourceline)
+  	    && ((struct source_cookie *)getline_cookie(
+! 						 getline, cookie))->finished);
+  }
+  #endif
+  
+--- 3648,3660 ----
+   * Return FALSE when not sourcing a file.
+   */
+      int
+! source_finished(fgetline, cookie)
+!     char_u	*(*fgetline) __ARGS((int, void *, int));
+      void	*cookie;
+  {
+!     return (getline_equal(fgetline, cookie, getsourceline)
+  	    && ((struct source_cookie *)getline_cookie(
+! 						fgetline, cookie))->finished);
+  }
+  #endif
+  
+*** ../vim-7.0.069/src/ex_docmd.c	Wed Aug 16 17:06:22 2006
+--- src/ex_docmd.c	Thu Aug 24 22:03:17 2006
+***************
+*** 58,66 ****
+  #endif
+  
+  #ifdef FEAT_EVAL
+! static char_u	*do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*getline)(int, void *, int), void *cookie));
+  #else
+! static char_u	*do_one_cmd __ARGS((char_u **, int, char_u *(*getline)(int, void *, int), void *cookie));
+  static int	if_level = 0;		/* depth in :if */
+  #endif
+  static char_u	*find_command __ARGS((exarg_T *eap, int *full));
+--- 58,66 ----
+  #endif
+  
+  #ifdef FEAT_EVAL
+! static char_u	*do_one_cmd __ARGS((char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int), void *cookie));
+  #else
+! static char_u	*do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie));
+  static int	if_level = 0;		/* depth in :if */
+  #endif
+  static char_u	*find_command __ARGS((exarg_T *eap, int *full));
+***************
+*** 831,840 ****
+  
+      /*
+       * If requested, store and reset the global values controlling the
+!      * exception handling (used when debugging).
+       */
+      if (flags & DOCMD_EXCRESET)
+  	save_dbg_stuff(&debug_saved);
+  
+      initial_trylevel = trylevel;
+  
+--- 831,843 ----
+  
+      /*
+       * If requested, store and reset the global values controlling the
+!      * exception handling (used when debugging).  Otherwise clear it to avoid
+!      * a bogus compiler warning when the optimizer uses inline functions...
+       */
+      if (flags & DOCMD_EXCRESET)
+  	save_dbg_stuff(&debug_saved);
++     else
++ 	memset(&debug_saved, 0, 1);
+  
+      initial_trylevel = trylevel;
+  
+***************
+*** 1574,1597 ****
+  #endif
+  
+  /*
+!  * If "getline" is get_loop_line(), return TRUE if the getline it uses equals
+!  * "func".  * Otherwise return TRUE when "getline" equals "func".
+   */
+  /*ARGSUSED*/
+      int
+! getline_equal(getline, cookie, func)
+!     char_u	*(*getline) __ARGS((int, void *, int));
+!     void	*cookie;		/* argument for getline() */
+      char_u	*(*func) __ARGS((int, void *, int));
+  {
+  #ifdef FEAT_EVAL
+      char_u		*(*gp) __ARGS((int, void *, int));
+      struct loop_cookie *cp;
+  
+!     /* When "getline" is "get_loop_line()" use the "cookie" to find the
+       * function that's orignally used to obtain the lines.  This may be nested
+       * several levels. */
+!     gp = getline;
+      cp = (struct loop_cookie *)cookie;
+      while (gp == get_loop_line)
+      {
+--- 1577,1600 ----
+  #endif
+  
+  /*
+!  * If "fgetline" is get_loop_line(), return TRUE if the getline it uses equals
+!  * "func".  * Otherwise return TRUE when "fgetline" equals "func".
+   */
+  /*ARGSUSED*/
+      int
+! getline_equal(fgetline, cookie, func)
+!     char_u	*(*fgetline) __ARGS((int, void *, int));
+!     void	*cookie;		/* argument for fgetline() */
+      char_u	*(*func) __ARGS((int, void *, int));
+  {
+  #ifdef FEAT_EVAL
+      char_u		*(*gp) __ARGS((int, void *, int));
+      struct loop_cookie *cp;
+  
+!     /* When "fgetline" is "get_loop_line()" use the "cookie" to find the
+       * function that's orignally used to obtain the lines.  This may be nested
+       * several levels. */
+!     gp = fgetline;
+      cp = (struct loop_cookie *)cookie;
+      while (gp == get_loop_line)
+      {
+***************
+*** 1600,1628 ****
+      }
+      return gp == func;
+  #else
+!     return getline == func;
+  #endif
+  }
+  
+  #if defined(FEAT_EVAL) || defined(FEAT_MBYTE) || defined(PROTO)
+  /*
+!  * If "getline" is get_loop_line(), return the cookie used by the original
+   * getline function.  Otherwise return "cookie".
+   */
+  /*ARGSUSED*/
+      void *
+! getline_cookie(getline, cookie)
+!     char_u	*(*getline) __ARGS((int, void *, int));
+!     void	*cookie;		/* argument for getline() */
+  {
+  # ifdef FEAT_EVAL
+      char_u		*(*gp) __ARGS((int, void *, int));
+      struct loop_cookie *cp;
+  
+!     /* When "getline" is "get_loop_line()" use the "cookie" to find the
+       * cookie that's orignally used to obtain the lines.  This may be nested
+       * several levels. */
+!     gp = getline;
+      cp = (struct loop_cookie *)cookie;
+      while (gp == get_loop_line)
+      {
+--- 1603,1631 ----
+      }
+      return gp == func;
+  #else
+!     return fgetline == func;
+  #endif
+  }
+  
+  #if defined(FEAT_EVAL) || defined(FEAT_MBYTE) || defined(PROTO)
+  /*
+!  * If "fgetline" is get_loop_line(), return the cookie used by the original
+   * getline function.  Otherwise return "cookie".
+   */
+  /*ARGSUSED*/
+      void *
+! getline_cookie(fgetline, cookie)
+!     char_u	*(*fgetline) __ARGS((int, void *, int));
+!     void	*cookie;		/* argument for fgetline() */
+  {
+  # ifdef FEAT_EVAL
+      char_u		*(*gp) __ARGS((int, void *, int));
+      struct loop_cookie *cp;
+  
+!     /* When "fgetline" is "get_loop_line()" use the "cookie" to find the
+       * cookie that's orignally used to obtain the lines.  This may be nested
+       * several levels. */
+!     gp = fgetline;
+      cp = (struct loop_cookie *)cookie;
+      while (gp == get_loop_line)
+      {
+***************
+*** 1648,1654 ****
+   * 5. parse arguments
+   * 6. switch on command name
+   *
+!  * Note: "getline" can be NULL.
+   *
+   * This function may be called recursively!
+   */
+--- 1651,1657 ----
+   * 5. parse arguments
+   * 6. switch on command name
+   *
+!  * Note: "fgetline" can be NULL.
+   *
+   * This function may be called recursively!
+   */
+***************
+*** 1663,1676 ****
+  #ifdef FEAT_EVAL
+  			    cstack,
+  #endif
+! 				    getline, cookie)
+      char_u		**cmdlinep;
+      int			sourcing;
+  #ifdef FEAT_EVAL
+      struct condstack	*cstack;
+  #endif
+!     char_u		*(*getline) __ARGS((int, void *, int));
+!     void		*cookie;		/* argument for getline() */
+  {
+      char_u		*p;
+      linenr_T		lnum;
+--- 1666,1679 ----
+  #ifdef FEAT_EVAL
+  			    cstack,
+  #endif
+! 				    fgetline, cookie)
+      char_u		**cmdlinep;
+      int			sourcing;
+  #ifdef FEAT_EVAL
+      struct condstack	*cstack;
+  #endif
+!     char_u		*(*fgetline) __ARGS((int, void *, int));
+!     void		*cookie;		/* argument for fgetline() */
+  {
+      char_u		*p;
+      linenr_T		lnum;
+***************
+*** 1698,1704 ****
+      if (quitmore
+  #ifdef FEAT_EVAL
+  	    /* avoid that a function call in 'statusline' does this */
+! 	    && !getline_equal(getline, cookie, get_func_line)
+  #endif
+  	    )
+  	--quitmore;
+--- 1701,1707 ----
+      if (quitmore
+  #ifdef FEAT_EVAL
+  	    /* avoid that a function call in 'statusline' does this */
+! 	    && !getline_equal(fgetline, cookie, get_func_line)
+  #endif
+  	    )
+  	--quitmore;
+***************
+*** 1728,1735 ****
+  
+  	/* in ex mode, an empty line works like :+ */
+  	if (*ea.cmd == NUL && exmode_active
+! 			&& (getline_equal(getline, cookie, getexmodeline)
+! 			    || getline_equal(getline, cookie, getexline))
+  			&& curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+  	{
+  	    ea.cmd = (char_u *)"+";
+--- 1731,1738 ----
+  
+  	/* in ex mode, an empty line works like :+ */
+  	if (*ea.cmd == NUL && exmode_active
+! 			&& (getline_equal(fgetline, cookie, getexmodeline)
+! 			    || getline_equal(fgetline, cookie, getexline))
+  			&& curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+  	{
+  	    ea.cmd = (char_u *)"+";
+***************
+*** 1918,1926 ****
+      /* Count this line for profiling if ea.skip is FALSE. */
+      if (do_profiling == PROF_YES && !ea.skip)
+      {
+! 	if (getline_equal(getline, cookie, get_func_line))
+! 	    func_line_exec(getline_cookie(getline, cookie));
+! 	else if (getline_equal(getline, cookie, getsourceline))
+  	    script_line_exec();
+      }
+  #endif
+--- 1921,1929 ----
+      /* Count this line for profiling if ea.skip is FALSE. */
+      if (do_profiling == PROF_YES && !ea.skip)
+      {
+! 	if (getline_equal(fgetline, cookie, get_func_line))
+! 	    func_line_exec(getline_cookie(fgetline, cookie));
+! 	else if (getline_equal(fgetline, cookie, getsourceline))
+  	    script_line_exec();
+      }
+  #endif
+***************
+*** 2589,2595 ****
+   * The "ea" structure holds the arguments that can be used.
+   */
+      ea.cmdlinep = cmdlinep;
+!     ea.getline = getline;
+      ea.cookie = cookie;
+  #ifdef FEAT_EVAL
+      ea.cstack = cstack;
+--- 2592,2598 ----
+   * The "ea" structure holds the arguments that can be used.
+   */
+      ea.cmdlinep = cmdlinep;
+!     ea.getline = fgetline;
+      ea.cookie = cookie;
+  #ifdef FEAT_EVAL
+      ea.cstack = cstack;
+***************
+*** 2627,2635 ****
+  	do_throw(cstack);
+      else if (check_cstack)
+      {
+! 	if (source_finished(getline, cookie))
+  	    do_finish(&ea, TRUE);
+! 	else if (getline_equal(getline, cookie, get_func_line)
+  						   && current_func_returned())
+  	    do_return(&ea, TRUE, FALSE, NULL);
+      }
+--- 2630,2638 ----
+  	do_throw(cstack);
+      else if (check_cstack)
+      {
+! 	if (source_finished(fgetline, cookie))
+  	    do_finish(&ea, TRUE);
+! 	else if (getline_equal(fgetline, cookie, get_func_line)
+  						   && current_func_returned())
+  	    do_return(&ea, TRUE, FALSE, NULL);
+      }
+*** ../vim-7.0.069/src/gui_beval.c	Thu May  4 23:57:11 2006
+--- src/gui_beval.c	Thu Aug 24 22:39:50 2006
+***************
+*** 926,932 ****
+  #  define IS_NONPRINTABLE(c) (((c) < 0x20 && (c) != TAB && (c) != NL) \
+  			      || (c) == DEL)
+      static void
+! set_printable_label_text(GtkLabel *label, char_u *msg)
+  {
+      char_u	    *convbuf = NULL;
+      char_u	    *buf;
+--- 926,932 ----
+  #  define IS_NONPRINTABLE(c) (((c) < 0x20 && (c) != TAB && (c) != NL) \
+  			      || (c) == DEL)
+      static void
+! set_printable_label_text(GtkLabel *label, char_u *text)
+  {
+      char_u	    *convbuf = NULL;
+      char_u	    *buf;
+***************
+*** 940,953 ****
+      /* Convert to UTF-8 if it isn't already */
+      if (output_conv.vc_type != CONV_NONE)
+      {
+! 	convbuf = string_convert(&output_conv, msg, NULL);
+  	if (convbuf != NULL)
+! 	    msg = convbuf;
+      }
+  
+      /* First let's see how much we need to allocate */
+      len = 0;
+!     for (p = msg; *p != NUL; p += charlen)
+      {
+  	if ((*p & 0x80) == 0)	/* be quick for ASCII */
+  	{
+--- 940,953 ----
+      /* Convert to UTF-8 if it isn't already */
+      if (output_conv.vc_type != CONV_NONE)
+      {
+! 	convbuf = string_convert(&output_conv, text, NULL);
+  	if (convbuf != NULL)
+! 	    text = convbuf;
+      }
+  
+      /* First let's see how much we need to allocate */
+      len = 0;
+!     for (p = text; *p != NUL; p += charlen)
+      {
+  	if ((*p & 0x80) == 0)	/* be quick for ASCII */
+  	{
+***************
+*** 992,998 ****
+  				     (unsigned long)pixel, &color);
+  
+  	pdest = buf;
+! 	p = msg;
+  	while (*p != NUL)
+  	{
+  	    /* Be quick for ASCII */
+--- 992,998 ----
+  				     (unsigned long)pixel, &color);
+  
+  	pdest = buf;
+! 	p = text;
+  	while (*p != NUL)
+  	{
+  	    /* Be quick for ASCII */
+*** ../vim-7.0.069/src/gui_gtk.c	Fri May  5 23:13:49 2006
+--- src/gui_gtk.c	Thu Aug 24 22:34:30 2006
+***************
+*** 957,971 ****
+  get_menu_position(vimmenu_T *menu)
+  {
+      vimmenu_T	*node;
+!     int		index = 0;
+  
+      for (node = menu->parent->children; node != menu; node = node->next)
+      {
+  	g_return_val_if_fail(node != NULL, -1);
+! 	++index;
+      }
+  
+!     return index;
+  }
+  #endif /* FEAT_TOOLBAR && HAVE_GTK2 */
+  
+--- 957,971 ----
+  get_menu_position(vimmenu_T *menu)
+  {
+      vimmenu_T	*node;
+!     int		idx = 0;
+  
+      for (node = menu->parent->children; node != menu; node = node->next)
+      {
+  	g_return_val_if_fail(node != NULL, -1);
+! 	++idx;
+      }
+  
+!     return idx;
+  }
+  #endif /* FEAT_TOOLBAR && HAVE_GTK2 */
+  
+***************
+*** 2127,2133 ****
+      char    **ync;  /* "yes no cancel" */
+      char    **buttons;
+      int	    n_buttons = 0;
+!     int	    index;
+  
+      button_string = vim_strsave(button_string); /* must be writable */
+      if (button_string == NULL)
+--- 2128,2134 ----
+      char    **ync;  /* "yes no cancel" */
+      char    **buttons;
+      int	    n_buttons = 0;
+!     int	    idx;
+  
+      button_string = vim_strsave(button_string); /* must be writable */
+      if (button_string == NULL)
+***************
+*** 2161,2172 ****
+       * Well, apparently somebody changed his mind: with GTK 2.2.4 it works the
+       * other way around...
+       */
+!     for (index = 1; index <= n_buttons; ++index)
+      {
+  	char	*label;
+  	char_u	*label8;
+  
+! 	label = buttons[index - 1];
+  	/*
+  	 * Perform some guesswork to find appropriate stock items for the
+  	 * buttons.  We have to compare with a sample of the translated
+--- 2162,2173 ----
+       * Well, apparently somebody changed his mind: with GTK 2.2.4 it works the
+       * other way around...
+       */
+!     for (idx = 1; idx <= n_buttons; ++idx)
+      {
+  	char	*label;
+  	char_u	*label8;
+  
+! 	label = buttons[idx - 1];
+  	/*
+  	 * Perform some guesswork to find appropriate stock items for the
+  	 * buttons.  We have to compare with a sample of the translated
+***************
+*** 2188,2194 ****
+  	    else if (button_equal(label, "Cancel")) label = GTK_STOCK_CANCEL;
+  	}
+  	label8 = CONVERT_TO_UTF8((char_u *)label);
+! 	gtk_dialog_add_button(dialog, (const gchar *)label8, index);
+  	CONVERT_TO_UTF8_FREE(label8);
+      }
+  
+--- 2189,2195 ----
+  	    else if (button_equal(label, "Cancel")) label = GTK_STOCK_CANCEL;
+  	}
+  	label8 = CONVERT_TO_UTF8((char_u *)label);
+! 	gtk_dialog_add_button(dialog, (const gchar *)label8, idx);
+  	CONVERT_TO_UTF8_FREE(label8);
+      }
+  
+*** ../vim-7.0.069/src/gui_gtk_x11.c	Fri May  5 23:16:59 2006
+--- src/gui_gtk_x11.c	Thu Aug 24 22:35:59 2006
+***************
+*** 3233,3244 ****
+  on_select_tab(
+  	GtkNotebook	*notebook,
+  	GtkNotebookPage *page,
+! 	gint		index,
+  	gpointer	data)
+  {
+      if (!ignore_tabline_evt)
+      {
+! 	if (send_tabline_event(index + 1) && gtk_main_level() > 0)
+  	    gtk_main_quit();
+      }
+  }
+--- 3233,3244 ----
+  on_select_tab(
+  	GtkNotebook	*notebook,
+  	GtkNotebookPage *page,
+! 	gint		idx,
+  	gpointer	data)
+  {
+      if (!ignore_tabline_evt)
+      {
+! 	if (send_tabline_event(idx + 1) && gtk_main_level() > 0)
+  	    gtk_main_quit();
+      }
+  }
+***************
+*** 5303,5315 ****
+  # ifdef HAVE_GTK2
+      if (font != NOFONT)
+      {
+! 	char	*name = pango_font_description_to_string(font);
+  
+! 	if (name != NULL)
+  	{
+! 	    char_u	*s = vim_strsave((char_u *)name);
+  
+! 	    g_free(name);
+  	    return s;
+  	}
+      }
+--- 5303,5315 ----
+  # ifdef HAVE_GTK2
+      if (font != NOFONT)
+      {
+! 	char	*pangoname = pango_font_description_to_string(font);
+  
+! 	if (pangoname != NULL)
+  	{
+! 	    char_u	*s = vim_strsave((char_u *)pangoname);
+  
+! 	    g_free(pangoname);
+  	    return s;
+  	}
+      }
+***************
+*** 6241,6264 ****
+  {
+      GdkGCValues values;
+      GdkGC *invert_gc;
+-     GdkColor foreground;
+-     GdkColor background;
+  
+      if (gui.drawarea->window == NULL)
+  	return;
+  
+!     foreground.pixel = gui.norm_pixel ^ gui.back_pixel;
+!     background.pixel = gui.norm_pixel ^ gui.back_pixel;
+! 
+!     values.foreground = foreground;
+!     values.background = background;
+      values.function = GDK_XOR;
+      invert_gc = gdk_gc_new_with_values(gui.drawarea->window,
+  				       &values,
+  				       GDK_GC_FOREGROUND |
+  				       GDK_GC_BACKGROUND |
+  				       GDK_GC_FUNCTION);
+!     gdk_gc_set_exposures(invert_gc, gui.visibility != GDK_VISIBILITY_UNOBSCURED);
+      gdk_draw_rectangle(gui.drawarea->window, invert_gc,
+  		       TRUE,
+  		       FILL_X(c), FILL_Y(r),
+--- 6241,6260 ----
+  {
+      GdkGCValues values;
+      GdkGC *invert_gc;
+  
+      if (gui.drawarea->window == NULL)
+  	return;
+  
+!     values.foreground.pixel = gui.norm_pixel ^ gui.back_pixel;
+!     values.background.pixel = gui.norm_pixel ^ gui.back_pixel;
+      values.function = GDK_XOR;
+      invert_gc = gdk_gc_new_with_values(gui.drawarea->window,
+  				       &values,
+  				       GDK_GC_FOREGROUND |
+  				       GDK_GC_BACKGROUND |
+  				       GDK_GC_FUNCTION);
+!     gdk_gc_set_exposures(invert_gc, gui.visibility !=
+! 						   GDK_VISIBILITY_UNOBSCURED);
+      gdk_draw_rectangle(gui.drawarea->window, invert_gc,
+  		       TRUE,
+  		       FILL_X(c), FILL_Y(r),
+*** ../vim-7.0.069/src/hardcopy.c	Thu May  4 23:53:57 2006
+--- src/hardcopy.c	Thu Aug 24 22:04:32 2006
+***************
+*** 1794,1822 ****
+      static int
+  prt_resfile_next_line()
+  {
+!     int     index;
+  
+      /* Move to start of next line and then find end of line */
+!     index = prt_resfile.line_end + 1;
+!     while (index < prt_resfile.len)
+      {
+! 	if (prt_resfile.buffer[index] != PSLF && prt_resfile.buffer[index]
+! 									!= PSCR)
+  	    break;
+! 	index++;
+      }
+!     prt_resfile.line_start = index;
+  
+!     while (index < prt_resfile.len)
+      {
+! 	if (prt_resfile.buffer[index] == PSLF || prt_resfile.buffer[index]
+! 									== PSCR)
+  	    break;
+! 	index++;
+      }
+!     prt_resfile.line_end = index;
+  
+!     return (index < prt_resfile.len);
+  }
+  
+      static int
+--- 1794,1820 ----
+      static int
+  prt_resfile_next_line()
+  {
+!     int     idx;
+  
+      /* Move to start of next line and then find end of line */
+!     idx = prt_resfile.line_end + 1;
+!     while (idx < prt_resfile.len)
+      {
+! 	if (prt_resfile.buffer[idx] != PSLF && prt_resfile.buffer[idx] != PSCR)
+  	    break;
+! 	idx++;
+      }
+!     prt_resfile.line_start = idx;
+  
+!     while (idx < prt_resfile.len)
+      {
+! 	if (prt_resfile.buffer[idx] == PSLF || prt_resfile.buffer[idx] == PSCR)
+  	    break;
+! 	idx++;
+      }
+!     prt_resfile.line_end = idx;
+  
+!     return (idx < prt_resfile.len);
+  }
+  
+      static int
+***************
+*** 1837,1850 ****
+  prt_resfile_skip_nonws(offset)
+      int     offset;
+  {
+!     int     index;
+  
+!     index = prt_resfile.line_start + offset;
+!     while (index < prt_resfile.line_end)
+      {
+! 	if (isspace(prt_resfile.buffer[index]))
+! 	    return index - prt_resfile.line_start;
+! 	index++;
+      }
+      return -1;
+  }
+--- 1835,1848 ----
+  prt_resfile_skip_nonws(offset)
+      int     offset;
+  {
+!     int     idx;
+  
+!     idx = prt_resfile.line_start + offset;
+!     while (idx < prt_resfile.line_end)
+      {
+! 	if (isspace(prt_resfile.buffer[idx]))
+! 	    return idx - prt_resfile.line_start;
+! 	idx++;
+      }
+      return -1;
+  }
+***************
+*** 1853,1866 ****
+  prt_resfile_skip_ws(offset)
+      int     offset;
+  {
+!     int     index;
+  
+!     index = prt_resfile.line_start + offset;
+!     while (index < prt_resfile.line_end)
+      {
+! 	if (!isspace(prt_resfile.buffer[index]))
+! 	    return index - prt_resfile.line_start;
+! 	index++;
+      }
+      return -1;
+  }
+--- 1851,1864 ----
+  prt_resfile_skip_ws(offset)
+      int     offset;
+  {
+!     int     idx;
+  
+!     idx = prt_resfile.line_start + offset;
+!     while (idx < prt_resfile.line_end)
+      {
+! 	if (!isspace(prt_resfile.buffer[idx]))
+! 	    return idx - prt_resfile.line_start;
+! 	idx++;
+      }
+      return -1;
+  }
+***************
+*** 2478,2484 ****
+      char_u	*p_encoding;
+      struct prt_ps_encoding_S *p_mbenc;
+      struct prt_ps_encoding_S *p_mbenc_first;
+!     struct prt_ps_charset_S  *p_mbchar;
+  #endif
+  
+  #if 0
+--- 2476,2482 ----
+      char_u	*p_encoding;
+      struct prt_ps_encoding_S *p_mbenc;
+      struct prt_ps_encoding_S *p_mbenc_first;
+!     struct prt_ps_charset_S  *p_mbchar = NULL;
+  #endif
+  
+  #if 0
+***************
+*** 2516,2522 ****
+      if (!(props & ENC_8BIT) && ((*p_pmcs != NUL) || !(props & ENC_UNICODE)))
+      {
+  	p_mbenc_first = NULL;
+- 	p_mbchar = NULL;
+  	for (cmap = 0; cmap < NUM_ELEMENTS(prt_ps_mbfonts); cmap++)
+  	    if (prt_match_encoding((char *)p_encoding, &prt_ps_mbfonts[cmap],
+  								    &p_mbenc))
+--- 2514,2519 ----
+*** ../vim-7.0.069/src/if_cscope.c	Tue Apr 18 23:49:18 2006
+--- src/if_cscope.c	Sat Jul  8 22:34:46 2006
+***************
+*** 989,996 ****
+  {
+      int i;
+      char *cmd;
+!     char **matches, **contexts;
+!     int nummatches[CSCOPE_MAX_CONNECTIONS], totmatches, matched;
+  #ifdef FEAT_QUICKFIX
+      char cmdletter;
+      char *qfpos;
+--- 989,995 ----
+  {
+      int i;
+      char *cmd;
+!     int nummatches[CSCOPE_MAX_CONNECTIONS], totmatches;
+  #ifdef FEAT_QUICKFIX
+      char cmdletter;
+      char *qfpos;
+***************
+*** 1141,1146 ****
+--- 1140,1148 ----
+      else
+  #endif /* FEAT_QUICKFIX */
+      {
++ 	char **matches = NULL, **contexts = NULL;
++ 	int matched = 0;
++ 
+  	/* read output */
+  	cs_fill_results((char *)pat, totmatches, nummatches, &matches,
+  							 &contexts, &matched);
+*** ../vim-7.0.069/src/main.c	Tue Aug 15 21:42:17 2006
+--- src/main.c	Thu Aug 24 22:05:09 2006
+***************
+*** 2285,2291 ****
+      mparm_T	*parmp;
+  {
+  #ifdef FEAT_WINDOWS
+!     int		rewind;
+      int		done = 0;
+  
+      /*
+--- 2285,2291 ----
+      mparm_T	*parmp;
+  {
+  #ifdef FEAT_WINDOWS
+!     int		dorewind;
+      int		done = 0;
+  
+      /*
+***************
+*** 2342,2351 ****
+  	++autocmd_no_leave;
+  #endif
+  #ifdef FEAT_WINDOWS
+! 	rewind = TRUE;
+  	while (done++ < 1000)
+  	{
+! 	    if (rewind)
+  	    {
+  		if (parmp->window_layout == WIN_TABS)
+  		    goto_tabpage(1);
+--- 2342,2351 ----
+  	++autocmd_no_leave;
+  #endif
+  #ifdef FEAT_WINDOWS
+! 	dorewind = TRUE;
+  	while (done++ < 1000)
+  	{
+! 	    if (dorewind)
+  	    {
+  		if (parmp->window_layout == WIN_TABS)
+  		    goto_tabpage(1);
+***************
+*** 2364,2370 ****
+  		    break;
+  		curwin = curwin->w_next;
+  	    }
+! 	    rewind = FALSE;
+  #endif
+  	    curbuf = curwin->w_buffer;
+  	    if (curbuf->b_ml.ml_mfp == NULL)
+--- 2364,2370 ----
+  		    break;
+  		curwin = curwin->w_next;
+  	    }
+! 	    dorewind = FALSE;
+  #endif
+  	    curbuf = curwin->w_buffer;
+  	    if (curbuf->b_ml.ml_mfp == NULL)
+***************
+*** 2385,2391 ****
+  		check_swap_exists_action();
+  #endif
+  #ifdef FEAT_AUTOCMD
+! 		rewind = TRUE;		/* start again */
+  #endif
+  	    }
+  #ifdef FEAT_WINDOWS
+--- 2385,2391 ----
+  		check_swap_exists_action();
+  #endif
+  #ifdef FEAT_AUTOCMD
+! 		dorewind = TRUE;		/* start again */
+  #endif
+  	    }
+  #ifdef FEAT_WINDOWS
+*** ../vim-7.0.069/src/mbyte.c	Tue Aug 29 16:10:54 2006
+--- src/mbyte.c	Tue Aug 29 14:41:45 2006
+***************
+*** 3861,3873 ****
+  
+      if (preedit_string != NULL && attr_list != NULL)
+      {
+! 	int index;
+  
+  	/* Get the byte index as used by PangoAttrIterator */
+! 	for (index = 0; col > 0 && preedit_string[index] != '\0'; --col)
+! 	    index += utfc_ptr2len((char_u *)preedit_string + index);
+  
+! 	if (preedit_string[index] != '\0')
+  	{
+  	    PangoAttrIterator	*iter;
+  	    int			start, end;
+--- 3861,3873 ----
+  
+      if (preedit_string != NULL && attr_list != NULL)
+      {
+! 	int idx;
+  
+  	/* Get the byte index as used by PangoAttrIterator */
+! 	for (idx = 0; col > 0 && preedit_string[idx] != '\0'; --col)
+! 	    idx += utfc_ptr2len((char_u *)preedit_string + idx);
+  
+! 	if (preedit_string[idx] != '\0')
+  	{
+  	    PangoAttrIterator	*iter;
+  	    int			start, end;
+***************
+*** 3880,3886 ****
+  	    {
+  		pango_attr_iterator_range(iter, &start, &end);
+  
+! 		if (index >= start && index < end)
+  		    char_attr |= translate_pango_attributes(iter);
+  	    }
+  	    while (pango_attr_iterator_next(iter));
+--- 3880,3886 ----
+  	    {
+  		pango_attr_iterator_range(iter, &start, &end);
+  
+! 		if (idx >= start && idx < end)
+  		    char_attr |= translate_pango_attributes(iter);
+  	    }
+  	    while (pango_attr_iterator_next(iter));
+*** ../vim-7.0.069/src/memline.c	Fri Apr 21 00:16:47 2006
+--- src/memline.c	Thu Aug 24 22:06:17 2006
+***************
+*** 215,221 ****
+  #define ML_FLUSH	0x02	    /* flush locked block */
+  #define ML_SIMPLE(x)	(x & 0x10)  /* DEL, INS or FIND */
+  
+! static void ml_upd_block0 __ARGS((buf_T *buf, int setfname));
+  static void set_b0_fname __ARGS((ZERO_BL *, buf_T *buf));
+  static void set_b0_dir_flag __ARGS((ZERO_BL *b0p, buf_T *buf));
+  #ifdef FEAT_MBYTE
+--- 215,221 ----
+  #define ML_FLUSH	0x02	    /* flush locked block */
+  #define ML_SIMPLE(x)	(x & 0x10)  /* DEL, INS or FIND */
+  
+! static void ml_upd_block0 __ARGS((buf_T *buf, int set_fname));
+  static void set_b0_fname __ARGS((ZERO_BL *, buf_T *buf));
+  static void set_b0_dir_flag __ARGS((ZERO_BL *b0p, buf_T *buf));
+  #ifdef FEAT_MBYTE
+***************
+*** 679,687 ****
+   * Update the timestamp or the B0_SAME_DIR flag of the .swp file.
+   */
+      static void
+! ml_upd_block0(buf, setfname)
+      buf_T	*buf;
+!     int		setfname;
+  {
+      memfile_T	*mfp;
+      bhdr_T	*hp;
+--- 679,687 ----
+   * Update the timestamp or the B0_SAME_DIR flag of the .swp file.
+   */
+      static void
+! ml_upd_block0(buf, set_fname)
+      buf_T	*buf;
+!     int		set_fname;
+  {
+      memfile_T	*mfp;
+      bhdr_T	*hp;
+***************
+*** 695,701 ****
+  	EMSG(_("E304: ml_upd_block0(): Didn't get block 0??"));
+      else
+      {
+! 	if (setfname)
+  	    set_b0_fname(b0p, buf);
+  	else
+  	    set_b0_dir_flag(b0p, buf);
+--- 695,701 ----
+  	EMSG(_("E304: ml_upd_block0(): Didn't get block 0??"));
+      else
+      {
+! 	if (set_fname)
+  	    set_b0_fname(b0p, buf);
+  	else
+  	    set_b0_dir_flag(b0p, buf);
+*** ../vim-7.0.069/src/netbeans.c	Tue Aug  8 21:36:15 2006
+--- src/netbeans.c	Thu Aug 24 22:42:09 2006
+***************
+*** 103,109 ****
+  static int  inputHandler = -1;		/* simply ret.value of WSAAsyncSelect() */
+  extern HWND s_hwnd;			/* Gvim's Window handle */
+  #endif
+! static int cmdno;			/* current command number for reply */
+  static int haveConnection = FALSE;	/* socket is connected and
+  					   initialization is done */
+  #ifdef FEAT_GUI_MOTIF
+--- 103,109 ----
+  static int  inputHandler = -1;		/* simply ret.value of WSAAsyncSelect() */
+  extern HWND s_hwnd;			/* Gvim's Window handle */
+  #endif
+! static int r_cmdno;			/* current command number for reply */
+  static int haveConnection = FALSE;	/* socket is connected and
+  					   initialization is done */
+  #ifdef FEAT_GUI_MOTIF
+***************
+*** 832,842 ****
+  	return;
+      }
+  
+!     cmdno = strtol(q, &q, 10);
+  
+      q = (char *)skipwhite((char_u *)q);
+  
+!     if (nb_do_cmd(bufno, (char_u *)verb, isfunc, cmdno, (char_u *)q) == FAIL)
+      {
+  #ifdef NBDEBUG
+  	/*
+--- 832,842 ----
+  	return;
+      }
+  
+!     r_cmdno = strtol(q, &q, 10);
+  
+      q = (char *)skipwhite((char_u *)q);
+  
+!     if (nb_do_cmd(bufno, (char_u *)verb, isfunc, r_cmdno, (char_u *)q) == FAIL)
+      {
+  #ifdef NBDEBUG
+  	/*
+***************
+*** 1008,1018 ****
+  	if (netbeansForcedQuit)
+  	{
+  	    /* mark as unmodified so NetBeans won't put up dialog on "killed" */
+! 	    sprintf(buf, "%d:unmodified=%d\n", i, cmdno);
+  	    nbdebug(("EVT: %s", buf));
+  	    nb_send(buf, "netbeans_end");
+  	}
+! 	sprintf(buf, "%d:killed=%d\n", i, cmdno);
+  	nbdebug(("EVT: %s", buf));
+  /*	nb_send(buf, "netbeans_end");    avoid "write failed" messages */
+  	if (sd >= 0)
+--- 1008,1018 ----
+  	if (netbeansForcedQuit)
+  	{
+  	    /* mark as unmodified so NetBeans won't put up dialog on "killed" */
+! 	    sprintf(buf, "%d:unmodified=%d\n", i, r_cmdno);
+  	    nbdebug(("EVT: %s", buf));
+  	    nb_send(buf, "netbeans_end");
+  	}
+! 	sprintf(buf, "%d:killed=%d\n", i, r_cmdno);
+  	nbdebug(("EVT: %s", buf));
+  /*	nb_send(buf, "netbeans_end");    avoid "write failed" messages */
+  	if (sd >= 0)
+***************
+*** 2563,2569 ****
+  	    if (p != NULL)
+  	    {
+  		vim_snprintf(buf, sizeof(buf),
+! 				       "0:balloonText=%d \"%s\"\n", cmdno, p);
+  		vim_free(p);
+  	    }
+  	    nbdebug(("EVT: %s", buf));
+--- 2563,2569 ----
+  	    if (p != NULL)
+  	    {
+  		vim_snprintf(buf, sizeof(buf),
+! 				       "0:balloonText=%d \"%s\"\n", r_cmdno, p);
+  		vim_free(p);
+  	    }
+  	    nbdebug(("EVT: %s", buf));
+***************
+*** 2617,2623 ****
+  
+      if (haveConnection)
+      {
+! 	sprintf(buf, "0:disconnect=%d\n", cmdno);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send(buf, "netbeans_disconnect");
+      }
+--- 2617,2623 ----
+  
+      if (haveConnection)
+      {
+! 	sprintf(buf, "0:disconnect=%d\n", r_cmdno);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send(buf, "netbeans_disconnect");
+      }
+***************
+*** 2636,2642 ****
+  	return;
+  
+      sprintf(buf, "0:geometry=%d %d %d %d %d\n",
+! 		    cmdno, (int)Columns, (int)Rows, new_x, new_y);
+      /*nbdebug(("EVT: %s", buf)); happens too many times during a move */
+      nb_send(buf, "netbeans_frame_moved");
+  }
+--- 2636,2642 ----
+  	return;
+  
+      sprintf(buf, "0:geometry=%d %d %d %d %d\n",
+! 		    r_cmdno, (int)Columns, (int)Rows, new_x, new_y);
+      /*nbdebug(("EVT: %s", buf)); happens too many times during a move */
+      nb_send(buf, "netbeans_frame_moved");
+  }
+***************
+*** 2745,2751 ****
+      if (bufno <= 0)
+  	return;
+  
+!     sprintf(buffer, "%d:killed=%d\n", bufno, cmdno);
+  
+      nbdebug(("EVT: %s", buffer));
+  
+--- 2745,2751 ----
+      if (bufno <= 0)
+  	return;
+  
+!     sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
+  
+      nbdebug(("EVT: %s", buffer));
+  
+***************
+*** 2819,2825 ****
+      if (p != NULL)
+      {
+  	buf = alloc(128 + 2*newlen);
+! 	sprintf((char *)buf, "%d:insert=%d %ld \"%s\"\n", bufno, cmdno, off, p);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send((char *)buf, "netbeans_inserted");
+  	vim_free(p);
+--- 2819,2826 ----
+      if (p != NULL)
+      {
+  	buf = alloc(128 + 2*newlen);
+! 	sprintf((char *)buf, "%d:insert=%d %ld \"%s\"\n",
+! 						      bufno, r_cmdno, off, p);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send((char *)buf, "netbeans_inserted");
+  	vim_free(p);
+***************
+*** 2861,2867 ****
+  
+      off = pos2off(bufp, &pos);
+  
+!     sprintf((char *)buf, "%d:remove=%d %ld %ld\n", bufno, cmdno, off, len);
+      nbdebug(("EVT: %s", buf));
+      nb_send((char *)buf, "netbeans_removed");
+  }
+--- 2862,2868 ----
+  
+      off = pos2off(bufp, &pos);
+  
+!     sprintf((char *)buf, "%d:remove=%d %ld %ld\n", bufno, r_cmdno, off, len);
+      nbdebug(("EVT: %s", buf));
+      nb_send((char *)buf, "netbeans_removed");
+  }
+***************
+*** 2886,2892 ****
+  
+      nbbuf->modified = 0;
+  
+!     sprintf((char *)buf, "%d:unmodified=%d\n", bufno, cmdno);
+      nbdebug(("EVT: %s", buf));
+      nb_send((char *)buf, "netbeans_unmodified");
+  #endif
+--- 2887,2893 ----
+  
+      nbbuf->modified = 0;
+  
+!     sprintf((char *)buf, "%d:unmodified=%d\n", bufno, r_cmdno);
+      nbdebug(("EVT: %s", buf));
+      nb_send((char *)buf, "netbeans_unmodified");
+  #endif
+***************
+*** 2910,2920 ****
+  	long off = pos2off(curbuf, &curwin->w_cursor);
+  
+  	/* sync the cursor position */
+! 	sprintf(buf, "%d:newDotAndMark=%d %ld %ld\n", bufno, cmdno, off, off);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send(buf, "netbeans_button_release[newDotAndMark]");
+  
+! 	sprintf(buf, "%d:buttonRelease=%d %d %ld %d\n", bufno, cmdno,
+  				    button, (long)curwin->w_cursor.lnum, col);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send(buf, "netbeans_button_release");
+--- 2911,2921 ----
+  	long off = pos2off(curbuf, &curwin->w_cursor);
+  
+  	/* sync the cursor position */
+! 	sprintf(buf, "%d:newDotAndMark=%d %ld %ld\n", bufno, r_cmdno, off, off);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send(buf, "netbeans_button_release[newDotAndMark]");
+  
+! 	sprintf(buf, "%d:buttonRelease=%d %d %ld %d\n", bufno, r_cmdno,
+  				    button, (long)curwin->w_cursor.lnum, col);
+  	nbdebug(("EVT: %s", buf));
+  	nb_send(buf, "netbeans_button_release");
+***************
+*** 2975,2981 ****
+  
+      /* sync the cursor position */
+      off = pos2off(curbuf, &curwin->w_cursor);
+!     sprintf(buf, "%d:newDotAndMark=%d %ld %ld\n", bufno, cmdno, off, off);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
+  
+--- 2976,2982 ----
+  
+      /* sync the cursor position */
+      off = pos2off(curbuf, &curwin->w_cursor);
+!     sprintf(buf, "%d:newDotAndMark=%d %ld %ld\n", bufno, r_cmdno, off, off);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
+  
+***************
+*** 2986,2998 ****
+  
+      /* now send keyCommand event */
+      vim_snprintf(buf, sizeof(buf), "%d:keyCommand=%d \"%s\"\n",
+! 						       bufno, cmdno, keyName);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
+  
+      /* New: do both at once and include the lnum/col. */
+      vim_snprintf(buf, sizeof(buf), "%d:keyAtPos=%d \"%s\" %ld %ld/%ld\n",
+! 	    bufno, cmdno, keyName,
+  		off, (long)curwin->w_cursor.lnum, (long)curwin->w_cursor.col);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
+--- 2987,2999 ----
+  
+      /* now send keyCommand event */
+      vim_snprintf(buf, sizeof(buf), "%d:keyCommand=%d \"%s\"\n",
+! 						     bufno, r_cmdno, keyName);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
+  
+      /* New: do both at once and include the lnum/col. */
+      vim_snprintf(buf, sizeof(buf), "%d:keyAtPos=%d \"%s\" %ld %ld/%ld\n",
+! 	    bufno, r_cmdno, keyName,
+  		off, (long)curwin->w_cursor.lnum, (long)curwin->w_cursor.col);
+      nbdebug(("EVT: %s", buf));
+      nb_send(buf, "netbeans_keycommand");
+***************
+*** 3015,3021 ****
+  
+      nbbuf->modified = 0;
+  
+!     sprintf((char *)buf, "%d:save=%d\n", bufno, cmdno);
+      nbdebug(("EVT: %s", buf));
+      nb_send((char *)buf, "netbeans_save_buffer");
+  }
+--- 3016,3022 ----
+  
+      nbbuf->modified = 0;
+  
+!     sprintf((char *)buf, "%d:save=%d\n", bufno, r_cmdno);
+      nbdebug(("EVT: %s", buf));
+      nb_send((char *)buf, "netbeans_save_buffer");
+  }
+***************
+*** 3039,3045 ****
+      if (nbbuf->insertDone)
+  	nbbuf->modified = 1;
+  
+!     sprintf((char *)buf, "%d:remove=%d 0 -1\n", bufno, cmdno);
+      nbdebug(("EVT(suppressed): %s", buf));
+  /*     nb_send(buf, "netbeans_deleted_all_lines"); */
+  }
+--- 3040,3046 ----
+      if (nbbuf->insertDone)
+  	nbbuf->modified = 1;
+  
+!     sprintf((char *)buf, "%d:remove=%d 0 -1\n", bufno, r_cmdno);
+      nbdebug(("EVT(suppressed): %s", buf));
+  /*     nb_send(buf, "netbeans_deleted_all_lines"); */
+  }
+*** ../vim-7.0.069/src/normal.c	Wed Aug 16 21:42:34 2006
+--- src/normal.c	Thu Aug 24 22:17:37 2006
+***************
+*** 4127,4133 ****
+      int		save_p_ws;
+      int		save_p_scs;
+      int		retval = OK;
+!     int		incl;
+  
+      if ((pat = alloc(len + 7)) == NULL)
+  	return FAIL;
+--- 4127,4133 ----
+      int		save_p_ws;
+      int		save_p_scs;
+      int		retval = OK;
+!     int		incll;
+  
+      if ((pat = alloc(len + 7)) == NULL)
+  	return FAIL;
+***************
+*** 4147,4153 ****
+       * With "gd" Search back for the start of the current function, then go
+       * back until a blank line.  If this fails go to line 1.
+       */
+!     if (!locally || !findpar(&incl, BACKWARD, 1L, '{', FALSE))
+      {
+  	setpcmark();			/* Set in findpar() otherwise */
+  	curwin->w_cursor.lnum = 1;
+--- 4147,4153 ----
+       * With "gd" Search back for the start of the current function, then go
+       * back until a blank line.  If this fails go to line 1.
+       */
+!     if (!locally || !findpar(&incll, BACKWARD, 1L, '{', FALSE))
+      {
+  	setpcmark();			/* Set in findpar() otherwise */
+  	curwin->w_cursor.lnum = 1;
+*** ../vim-7.0.069/src/option.c	Tue Aug  8 16:30:51 2006
+--- src/option.c	Wed Aug 16 21:54:45 2006
+***************
+*** 5268,5312 ****
+      char_u	*s;
+      char_u	**varp;
+      int		both = (opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0;
+  
+!     if (opt_idx == -1)		/* use name */
+      {
+! 	opt_idx = findoption(name);
+! 	if (opt_idx < 0)	/* not found (should not happen) */
+  	{
+  	    EMSG2(_(e_intern2), "set_string_option_direct()");
+  	    return;
+  	}
+      }
+  
+!     if (options[opt_idx].var == NULL)	/* can't set hidden option */
+  	return;
+  
+      s = vim_strsave(val);
+      if (s != NULL)
+      {
+! 	varp = (char_u **)get_varp_scope(&(options[opt_idx]),
+  					       both ? OPT_LOCAL : opt_flags);
+! 	if ((opt_flags & OPT_FREE) && (options[opt_idx].flags & P_ALLOCED))
+  	    free_string_option(*varp);
+  	*varp = s;
+  
+  	/* For buffer/window local option may also set the global value. */
+  	if (both)
+! 	    set_string_option_global(opt_idx, varp);
+  
+! 	options[opt_idx].flags |= P_ALLOCED;
+  
+  	/* When setting both values of a global option with a local value,
+  	 * make the local value empty, so that the global value is used. */
+! 	if (((int)options[opt_idx].indir & PV_BOTH) && both)
+  	{
+  	    free_string_option(*varp);
+  	    *varp = empty_option;
+  	}
+  # ifdef FEAT_EVAL
+  	if (set_sid != SID_NONE)
+! 	    set_option_scriptID_idx(opt_idx, opt_flags,
+  					set_sid == 0 ? current_SID : set_sid);
+  # endif
+      }
+--- 5268,5313 ----
+      char_u	*s;
+      char_u	**varp;
+      int		both = (opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0;
++     int		idx = opt_idx;
+  
+!     if (idx == -1)		/* use name */
+      {
+! 	idx = findoption(name);
+! 	if (idx < 0)	/* not found (should not happen) */
+  	{
+  	    EMSG2(_(e_intern2), "set_string_option_direct()");
+  	    return;
+  	}
+      }
+  
+!     if (options[idx].var == NULL)	/* can't set hidden option */
+  	return;
+  
+      s = vim_strsave(val);
+      if (s != NULL)
+      {
+! 	varp = (char_u **)get_varp_scope(&(options[idx]),
+  					       both ? OPT_LOCAL : opt_flags);
+! 	if ((opt_flags & OPT_FREE) && (options[idx].flags & P_ALLOCED))
+  	    free_string_option(*varp);
+  	*varp = s;
+  
+  	/* For buffer/window local option may also set the global value. */
+  	if (both)
+! 	    set_string_option_global(idx, varp);
+  
+! 	options[idx].flags |= P_ALLOCED;
+  
+  	/* When setting both values of a global option with a local value,
+  	 * make the local value empty, so that the global value is used. */
+! 	if (((int)options[idx].indir & PV_BOTH) && both)
+  	{
+  	    free_string_option(*varp);
+  	    *varp = empty_option;
+  	}
+  # ifdef FEAT_EVAL
+  	if (set_sid != SID_NONE)
+! 	    set_option_scriptID_idx(idx, opt_flags,
+  					set_sid == 0 ? current_SID : set_sid);
+  # endif
+      }
+*** ../vim-7.0.069/src/os_unix.c	Thu Jun 22 19:47:11 2006
+--- src/os_unix.c	Thu Aug 24 22:21:56 2006
+***************
+*** 3934,3940 ****
+  		    {
+  			linenr_T    lnum = curbuf->b_op_start.lnum;
+  			int	    written = 0;
+! 			char_u	    *p = ml_get(lnum);
+  			char_u	    *s;
+  			size_t	    l;
+  
+--- 3934,3940 ----
+  		    {
+  			linenr_T    lnum = curbuf->b_op_start.lnum;
+  			int	    written = 0;
+! 			char_u	    *lp = ml_get(lnum);
+  			char_u	    *s;
+  			size_t	    l;
+  
+***************
+*** 3942,3958 ****
+  			close(fromshell_fd);
+  			for (;;)
+  			{
+! 			    l = STRLEN(p + written);
+  			    if (l == 0)
+  				len = 0;
+! 			    else if (p[written] == NL)
+  				/* NL -> NUL translation */
+  				len = write(toshell_fd, "", (size_t)1);
+  			    else
+  			    {
+! 				s = vim_strchr(p + written, NL);
+! 				len = write(toshell_fd, (char *)p + written,
+! 					   s == NULL ? l : s - (p + written));
+  			    }
+  			    if (len == l)
+  			    {
+--- 3942,3958 ----
+  			close(fromshell_fd);
+  			for (;;)
+  			{
+! 			    l = STRLEN(lp + written);
+  			    if (l == 0)
+  				len = 0;
+! 			    else if (lp[written] == NL)
+  				/* NL -> NUL translation */
+  				len = write(toshell_fd, "", (size_t)1);
+  			    else
+  			    {
+! 				s = vim_strchr(lp + written, NL);
+! 				len = write(toshell_fd, (char *)lp + written,
+! 					   s == NULL ? l : s - (lp + written));
+  			    }
+  			    if (len == l)
+  			    {
+***************
+*** 3973,3979 ****
+  				    toshell_fd = -1;
+  				    break;
+  				}
+! 				p = ml_get(lnum);
+  				written = 0;
+  			    }
+  			    else if (len > 0)
+--- 3973,3979 ----
+  				    toshell_fd = -1;
+  				    break;
+  				}
+! 				lp = ml_get(lnum);
+  				written = 0;
+  			    }
+  			    else if (len > 0)
+*** ../vim-7.0.069/src/quickfix.c	Wed Aug 16 19:34:59 2006
+--- src/quickfix.c	Thu Aug 24 22:23:31 2006
+***************
+*** 500,507 ****
+  	{
+  	    if (tv != NULL)
+  	    {
+- 		int len;
+- 
+  		if (tv->v_type == VAR_STRING)
+  		{
+  		    /* Get the next line from the supplied string */
+--- 500,505 ----
+*** ../vim-7.0.069/src/regexp.c	Sun Apr 30 20:38:22 2006
+--- src/regexp.c	Thu Aug 24 22:25:15 2006
+***************
+*** 3912,3918 ****
+  		{
+  		    colnr_T	    start, end;
+  		    colnr_T	    start2, end2;
+! 		    colnr_T	    col;
+  
+  		    getvvcol(wp, &top, &start, NULL, &end);
+  		    getvvcol(wp, &bot, &start2, NULL, &end2);
+--- 3919,3925 ----
+  		{
+  		    colnr_T	    start, end;
+  		    colnr_T	    start2, end2;
+! 		    colnr_T	    cols;
+  
+  		    getvvcol(wp, &top, &start, NULL, &end);
+  		    getvvcol(wp, &bot, &start2, NULL, &end2);
+***************
+*** 3922,3930 ****
+  			end = end2;
+  		    if (top.col == MAXCOL || bot.col == MAXCOL)
+  			end = MAXCOL;
+! 		    col = win_linetabsize(wp,
+  				      regline, (colnr_T)(reginput - regline));
+! 		    if (col < start || col > end - (*p_sel == 'e'))
+  			status = RA_NOMATCH;
+  		}
+  	    }
+--- 3929,3937 ----
+  			end = end2;
+  		    if (top.col == MAXCOL || bot.col == MAXCOL)
+  			end = MAXCOL;
+! 		    cols = win_linetabsize(wp,
+  				      regline, (colnr_T)(reginput - regline));
+! 		    if (cols < start || cols > end - (*p_sel == 'e'))
+  			status = RA_NOMATCH;
+  		}
+  	    }
+***************
+*** 4253,4259 ****
+  	    {
+  		int	i, len;
+  		char_u	*opnd;
+! 		int	opndc, inpc;
+  
+  		opnd = OPERAND(scan);
+  		/* Safety check (just in case 'encoding' was changed since
+--- 4260,4266 ----
+  	    {
+  		int	i, len;
+  		char_u	*opnd;
+! 		int	opndc = 0, inpc;
+  
+  		opnd = OPERAND(scan);
+  		/* Safety check (just in case 'encoding' was changed since
+*** ../vim-7.0.069/src/screen.c	Tue Jul 11 22:59:04 2006
+--- src/screen.c	Thu Aug 24 22:26:16 2006
+***************
+*** 7099,7105 ****
+      tabpage_T	    *tp;
+  #endif
+      static int	    entered = FALSE;		/* avoid recursiveness */
+!     static int	    did_outofmem_msg = FALSE;	/* did outofmem message */
+  
+      /*
+       * Allocation of the screen buffers is done only when the size changes and
+--- 7099,7105 ----
+      tabpage_T	    *tp;
+  #endif
+      static int	    entered = FALSE;		/* avoid recursiveness */
+!     static int	    done_outofmem_msg = FALSE;	/* did outofmem message */
+  
+      /*
+       * Allocation of the screen buffers is done only when the size changes and
+***************
+*** 7207,7220 ****
+  #endif
+  	    || outofmem)
+      {
+! 	if (ScreenLines != NULL || !did_outofmem_msg)
+  	{
+  	    /* guess the size */
+  	    do_outofmem_msg((long_u)((Rows + 1) * Columns));
+  
+  	    /* Remember we did this to avoid getting outofmem messages over
+  	     * and over again. */
+! 	    did_outofmem_msg = TRUE;
+  	}
+  	vim_free(new_ScreenLines);
+  	new_ScreenLines = NULL;
+--- 7207,7220 ----
+  #endif
+  	    || outofmem)
+      {
+! 	if (ScreenLines != NULL || !done_outofmem_msg)
+  	{
+  	    /* guess the size */
+  	    do_outofmem_msg((long_u)((Rows + 1) * Columns));
+  
+  	    /* Remember we did this to avoid getting outofmem messages over
+  	     * and over again. */
+! 	    done_outofmem_msg = TRUE;
+  	}
+  	vim_free(new_ScreenLines);
+  	new_ScreenLines = NULL;
+***************
+*** 7242,7248 ****
+      }
+      else
+      {
+! 	did_outofmem_msg = FALSE;
+  
+  	for (new_row = 0; new_row < Rows; ++new_row)
+  	{
+--- 7242,7248 ----
+      }
+      else
+      {
+! 	done_outofmem_msg = FALSE;
+  
+  	for (new_row = 0; new_row < Rows; ++new_row)
+  	{
+*** ../vim-7.0.069/src/search.c	Tue Aug 29 16:33:23 2006
+--- src/search.c	Tue Aug 29 14:56:15 2006
+***************
+*** 4826,4840 ****
+  
+  		if ((compl_cont_status & CONT_ADDING) && i == compl_length)
+  		{
+- 		    /* get the next line */
+  		    /* IOSIZE > compl_length, so the STRNCPY works */
+  		    STRNCPY(IObuff, aux, i);
+! 		    if (!(     depth < 0
+! 			    && lnum < end_lnum
+! 			    && (line = ml_get(++lnum)) != NULL)
+! 			&& !(	depth >= 0
+! 			    && !vim_fgets(line = file_line,
+! 						     LSIZE, files[depth].fp)))
+  			goto exit_matched;
+  
+  		    /* we read a line, set "already" to check this "line" later
+--- 4826,4845 ----
+  
+  		if ((compl_cont_status & CONT_ADDING) && i == compl_length)
+  		{
+  		    /* IOSIZE > compl_length, so the STRNCPY works */
+  		    STRNCPY(IObuff, aux, i);
+! 
+! 		    /* Get the next line: when "depth" < 0  from the current
+! 		     * buffer, otherwise from the included file.  Jump to
+! 		     * exit_matched when past the last line. */
+! 		    if (depth < 0)
+! 		    {
+! 			if (lnum >= end_lnum)
+! 			    goto exit_matched;
+! 			line = ml_get(++lnum);
+! 		    }
+! 		    else if (vim_fgets(line = file_line,
+! 						      LSIZE, files[depth].fp))
+  			goto exit_matched;
+  
+  		    /* we read a line, set "already" to check this "line" later
+*** ../vim-7.0.069/src/spell.c	Tue Aug 29 16:33:23 2006
+--- src/spell.c	Tue Aug 29 14:56:26 2006
+***************
+*** 2043,2050 ****
+      int		len;
+  # ifdef FEAT_SYN_HL
+      int		has_syntax = syntax_present(wp->w_buffer);
+-     int		col;
+  # endif
+      int		can_spell;
+      char_u	*buf = NULL;
+      int		buflen = 0;
+--- 2043,2050 ----
+      int		len;
+  # ifdef FEAT_SYN_HL
+      int		has_syntax = syntax_present(wp->w_buffer);
+  # endif
++     int		col;
+      int		can_spell;
+      char_u	*buf = NULL;
+      int		buflen = 0;
+***************
+*** 2093,2101 ****
+  	    capcol = (int)(skipwhite(line) - line);
+  	else if (curline && wp == curwin)
+  	{
+- 	    int	    col = (int)(skipwhite(line) - line);
+- 
+  	    /* For spellbadword(): check if first word needs a capital. */
+  	    if (check_need_cap(lnum, col))
+  		capcol = col;
+  
+--- 2093,2100 ----
+  	    capcol = (int)(skipwhite(line) - line);
+  	else if (curline && wp == curwin)
+  	{
+  	    /* For spellbadword(): check if first word needs a capital. */
++ 	    col = (int)(skipwhite(line) - line);
+  	    if (check_need_cap(lnum, col))
+  		capcol = col;
+  
+***************
+*** 5061,5067 ****
+      int		do_rep;
+      int		do_repsal;
+      int		do_sal;
+!     int		do_map;
+      int		found_map = FALSE;
+      hashitem_T	*hi;
+      int		l;
+--- 5060,5066 ----
+      int		do_rep;
+      int		do_repsal;
+      int		do_sal;
+!     int		do_mapline;
+      int		found_map = FALSE;
+      hashitem_T	*hi;
+      int		l;
+***************
+*** 5099,5105 ****
+      do_sal = spin->si_sal.ga_len == 0;
+  
+      /* Only do MAP lines when not done in another .aff file already. */
+!     do_map = spin->si_map.ga_len == 0;
+  
+      /*
+       * Allocate and init the afffile_T structure.
+--- 5098,5104 ----
+      do_sal = spin->si_sal.ga_len == 0;
+  
+      /* Only do MAP lines when not done in another .aff file already. */
+!     do_mapline = spin->si_map.ga_len == 0;
+  
+      /*
+       * Allocate and init the afffile_T structure.
+***************
+*** 5781,5787 ****
+  			smsg((char_u *)_("Expected MAP count in %s line %d"),
+  								 fname, lnum);
+  		}
+! 		else if (do_map)
+  		{
+  		    int		c;
+  
+--- 5780,5786 ----
+  			smsg((char_u *)_("Expected MAP count in %s line %d"),
+  								 fname, lnum);
+  		}
+! 		else if (do_mapline)
+  		{
+  		    int		c;
+  
+***************
+*** 7508,7514 ****
+  {
+      char_u	*p = p_msm;
+      long	start = 0;
+!     long	inc = 0;
+      long	added = 0;
+  
+      if (!VIM_ISDIGIT(*p))
+--- 7507,7513 ----
+  {
+      char_u	*p = p_msm;
+      long	start = 0;
+!     long	incr = 0;
+      long	added = 0;
+  
+      if (!VIM_ISDIGIT(*p))
+***************
+*** 7520,7526 ****
+      ++p;
+      if (!VIM_ISDIGIT(*p))
+  	return FAIL;
+!     inc = (getdigits(&p) * 102) / (SBLOCKSIZE / 10);
+      if (*p != ',')
+  	return FAIL;
+      ++p;
+--- 7519,7525 ----
+      ++p;
+      if (!VIM_ISDIGIT(*p))
+  	return FAIL;
+!     incr = (getdigits(&p) * 102) / (SBLOCKSIZE / 10);
+      if (*p != ',')
+  	return FAIL;
+      ++p;
+***************
+*** 7530,7540 ****
+      if (*p != NUL)
+  	return FAIL;
+  
+!     if (start == 0 || inc == 0 || added == 0 || inc > start)
+  	return FAIL;
+  
+      compress_start = start;
+!     compress_inc = inc;
+      compress_added = added;
+      return OK;
+  }
+--- 7529,7539 ----
+      if (*p != NUL)
+  	return FAIL;
+  
+!     if (start == 0 || incr == 0 || added == 0 || incr > start)
+  	return FAIL;
+  
+      compress_start = start;
+!     compress_inc = incr;
+      compress_added = added;
+      return OK;
+  }
+***************
+*** 8292,8305 ****
+   * Returns the number of nodes used.
+   */
+      static int
+! put_node(fd, node, index, regionmask, prefixtree)
+      FILE	*fd;		/* NULL when only counting */
+      wordnode_T	*node;
+!     int		index;
+      int		regionmask;
+      int		prefixtree;	/* TRUE for PREFIXTREE */
+  {
+!     int		newindex = index;
+      int		siblingcount = 0;
+      wordnode_T	*np;
+      int		flags;
+--- 8291,8304 ----
+   * Returns the number of nodes used.
+   */
+      static int
+! put_node(fd, node, idx, regionmask, prefixtree)
+      FILE	*fd;		/* NULL when only counting */
+      wordnode_T	*node;
+!     int		idx;
+      int		regionmask;
+      int		prefixtree;	/* TRUE for PREFIXTREE */
+  {
+!     int		newindex = idx;
+      int		siblingcount = 0;
+      wordnode_T	*np;
+      int		flags;
+***************
+*** 8309,8315 ****
+  	return 0;
+  
+      /* Store the index where this node is written. */
+!     node->wn_u1.index = index;
+  
+      /* Count the number of siblings. */
+      for (np = node; np != NULL; np = np->wn_sibling)
+--- 8308,8314 ----
+  	return 0;
+  
+      /* Store the index where this node is written. */
+!     node->wn_u1.index = idx;
+  
+      /* Count the number of siblings. */
+      for (np = node; np != NULL; np = np->wn_sibling)
+***************
+*** 9244,9254 ****
+   * Add "word[len]" to 'spellfile' as a good or bad word.
+   */
+      void
+! spell_add_word(word, len, bad, index, undo)
+      char_u	*word;
+      int		len;
+      int		bad;
+!     int		index;	    /* "zG" and "zW": zero, otherwise index in
+  			       'spellfile' */
+      int		undo;	    /* TRUE for "zug", "zuG", "zuw" and "zuW" */
+  {
+--- 9243,9253 ----
+   * Add "word[len]" to 'spellfile' as a good or bad word.
+   */
+      void
+! spell_add_word(word, len, bad, idx, undo)
+      char_u	*word;
+      int		len;
+      int		bad;
+!     int		idx;	    /* "zG" and "zW": zero, otherwise index in
+  			       'spellfile' */
+      int		undo;	    /* TRUE for "zug", "zuG", "zuw" and "zuW" */
+  {
+***************
+*** 9262,9268 ****
+      int		i;
+      char_u	*spf;
+  
+!     if (index == 0)	    /* use internal wordlist */
+      {
+  	if (int_wordlist == NULL)
+  	{
+--- 9261,9267 ----
+      int		i;
+      char_u	*spf;
+  
+!     if (idx == 0)	    /* use internal wordlist */
+      {
+  	if (int_wordlist == NULL)
+  	{
+***************
+*** 9290,9300 ****
+  	for (spf = curbuf->b_p_spf, i = 1; *spf != NUL; ++i)
+  	{
+  	    copy_option_part(&spf, fnamebuf, MAXPATHL, ",");
+! 	    if (i == index)
+  		break;
+  	    if (*spf == NUL)
+  	    {
+! 		EMSGN(_("E765: 'spellfile' does not have %ld entries"), index);
+  		return;
+  	    }
+  	}
+--- 9289,9299 ----
+  	for (spf = curbuf->b_p_spf, i = 1; *spf != NUL; ++i)
+  	{
+  	    copy_option_part(&spf, fnamebuf, MAXPATHL, ",");
+! 	    if (i == idx)
+  		break;
+  	    if (*spf == NUL)
+  	    {
+! 		EMSGN(_("E765: 'spellfile' does not have %ld entries"), idx);
+  		return;
+  	    }
+  	}
+***************
+*** 13581,13633 ****
+  	 * the first "the" to itself. */
+  	return;
+  
+!     /* Check if the word is already there.  Also check the length that is
+!      * being replaced "thes," -> "these" is a different suggestion from
+!      * "thes" -> "these". */
+!     stp = &SUG(*gap, 0);
+!     for (i = gap->ga_len; --i >= 0; ++stp)
+! 	if (stp->st_wordlen == goodlen
+! 		&& stp->st_orglen == badlen
+! 		&& STRNCMP(stp->st_word, goodword, goodlen) == 0)
+! 	{
+! 	    /*
+! 	     * Found it.  Remember the word with the lowest score.
+! 	     */
+! 	    if (stp->st_slang == NULL)
+! 		stp->st_slang = slang;
+  
+! 	    new_sug.st_score = score;
+! 	    new_sug.st_altscore = altscore;
+! 	    new_sug.st_had_bonus = had_bonus;
+! 
+! 	    if (stp->st_had_bonus != had_bonus)
+! 	    {
+! 		/* Only one of the two had the soundalike score computed.
+! 		 * Need to do that for the other one now, otherwise the
+! 		 * scores can't be compared.  This happens because
+! 		 * suggest_try_change() doesn't compute the soundalike
+! 		 * word to keep it fast, while some special methods set
+! 		 * the soundalike score to zero. */
+! 		if (had_bonus)
+! 		    rescore_one(su, stp);
+! 		else
+! 		{
+! 		    new_sug.st_word = stp->st_word;
+! 		    new_sug.st_wordlen = stp->st_wordlen;
+! 		    new_sug.st_slang = stp->st_slang;
+! 		    new_sug.st_orglen = badlen;
+! 		    rescore_one(su, &new_sug);
+  		}
+- 	    }
+  
+! 	    if (stp->st_score > new_sug.st_score)
+! 	    {
+! 		stp->st_score = new_sug.st_score;
+! 		stp->st_altscore = new_sug.st_altscore;
+! 		stp->st_had_bonus = new_sug.st_had_bonus;
+  	    }
+! 	    break;
+! 	}
+  
+      if (i < 0 && ga_grow(gap, 1) == OK)
+      {
+--- 13580,13637 ----
+  	 * the first "the" to itself. */
+  	return;
+  
+!     if (gap->ga_len == 0)
+! 	i = -1;
+!     else
+!     {
+! 	/* Check if the word is already there.  Also check the length that is
+! 	 * being replaced "thes," -> "these" is a different suggestion from
+! 	 * "thes" -> "these". */
+! 	stp = &SUG(*gap, 0);
+! 	for (i = gap->ga_len; --i >= 0; ++stp)
+! 	    if (stp->st_wordlen == goodlen
+! 		    && stp->st_orglen == badlen
+! 		    && STRNCMP(stp->st_word, goodword, goodlen) == 0)
+! 	    {
+! 		/*
+! 		 * Found it.  Remember the word with the lowest score.
+! 		 */
+! 		if (stp->st_slang == NULL)
+! 		    stp->st_slang = slang;
+  
+! 		new_sug.st_score = score;
+! 		new_sug.st_altscore = altscore;
+! 		new_sug.st_had_bonus = had_bonus;
+! 
+! 		if (stp->st_had_bonus != had_bonus)
+! 		{
+! 		    /* Only one of the two had the soundalike score computed.
+! 		     * Need to do that for the other one now, otherwise the
+! 		     * scores can't be compared.  This happens because
+! 		     * suggest_try_change() doesn't compute the soundalike
+! 		     * word to keep it fast, while some special methods set
+! 		     * the soundalike score to zero. */
+! 		    if (had_bonus)
+! 			rescore_one(su, stp);
+! 		    else
+! 		    {
+! 			new_sug.st_word = stp->st_word;
+! 			new_sug.st_wordlen = stp->st_wordlen;
+! 			new_sug.st_slang = stp->st_slang;
+! 			new_sug.st_orglen = badlen;
+! 			rescore_one(su, &new_sug);
+! 		    }
+  		}
+  
+! 		if (stp->st_score > new_sug.st_score)
+! 		{
+! 		    stp->st_score = new_sug.st_score;
+! 		    stp->st_altscore = new_sug.st_altscore;
+! 		    stp->st_had_bonus = new_sug.st_had_bonus;
+! 		}
+! 		break;
+  	    }
+!     }
+  
+      if (i < 0 && ga_grow(gap, 1) == OK)
+      {
+*** ../vim-7.0.069/src/ui.c	Mon Mar 27 23:02:40 2006
+--- src/ui.c	Thu Aug 24 22:31:38 2006
+***************
+*** 1137,1143 ****
+      int		len;
+  #ifdef FEAT_MBYTE
+      char_u	*p;
+-     int		i;
+  #endif
+      int		row1 = clip_star.start.lnum;
+      int		col1 = clip_star.start.col;
+--- 1137,1142 ----
+***************
+*** 1218,1223 ****
+--- 1217,1224 ----
+  #ifdef FEAT_MBYTE
+  	    if (enc_dbcs != 0)
+  	    {
++ 		int	i;
++ 
+  		p = ScreenLines + LineOffset[row];
+  		for (i = start_col; i < end_col; ++i)
+  		    if (enc_dbcs == DBCS_JPNU && p[i] == 0x8e)
+*** ../vim-7.0.069/src/undo.c	Wed Jul 12 21:48:56 2006
+--- src/undo.c	Thu Aug 24 22:32:41 2006
+***************
+*** 1187,1193 ****
+      int		did_undo;	/* just did an undo */
+      int		absolute;	/* used ":undo N" */
+  {
+!     char	*msg;
+      u_header_T	*uhp;
+      char_u	msgbuf[80];
+  
+--- 1187,1193 ----
+      int		did_undo;	/* just did an undo */
+      int		absolute;	/* used ":undo N" */
+  {
+!     char	*msgstr;
+      u_header_T	*uhp;
+      char_u	msgbuf[80];
+  
+***************
+*** 1205,1224 ****
+  
+      u_oldcount -= u_newcount;
+      if (u_oldcount == -1)
+! 	msg = N_("more line");
+      else if (u_oldcount < 0)
+! 	msg = N_("more lines");
+      else if (u_oldcount == 1)
+! 	msg = N_("line less");
+      else if (u_oldcount > 1)
+! 	msg = N_("fewer lines");
+      else
+      {
+  	u_oldcount = u_newcount;
+  	if (u_newcount == 1)
+! 	    msg = N_("change");
+  	else
+! 	    msg = N_("changes");
+      }
+  
+      if (curbuf->b_u_curhead != NULL)
+--- 1205,1224 ----
+  
+      u_oldcount -= u_newcount;
+      if (u_oldcount == -1)
+! 	msgstr = N_("more line");
+      else if (u_oldcount < 0)
+! 	msgstr = N_("more lines");
+      else if (u_oldcount == 1)
+! 	msgstr = N_("line less");
+      else if (u_oldcount > 1)
+! 	msgstr = N_("fewer lines");
+      else
+      {
+  	u_oldcount = u_newcount;
+  	if (u_newcount == 1)
+! 	    msgstr = N_("change");
+  	else
+! 	    msgstr = N_("changes");
+      }
+  
+      if (curbuf->b_u_curhead != NULL)
+***************
+*** 1244,1250 ****
+  
+      smsg((char_u *)_("%ld %s; %s #%ld  %s"),
+  	    u_oldcount < 0 ? -u_oldcount : u_oldcount,
+! 	    _(msg),
+  	    did_undo ? _("before") : _("after"),
+  	    uhp == NULL ? 0L : uhp->uh_seq,
+  	    msgbuf);
+--- 1244,1250 ----
+  
+      smsg((char_u *)_("%ld %s; %s #%ld  %s"),
+  	    u_oldcount < 0 ? -u_oldcount : u_oldcount,
+! 	    _(msgstr),
+  	    did_undo ? _("before") : _("after"),
+  	    uhp == NULL ? 0L : uhp->uh_seq,
+  	    msgbuf);
+*** ../vim-7.0.069/src/window.c	Sat May  6 23:37:40 2006
+--- src/window.c	Thu Aug 24 22:33:40 2006
+***************
+*** 340,349 ****
+  		{
+  		    tabpage_T	*oldtab = curtab;
+  		    tabpage_T	*newtab;
+- 		    win_T	*wp = curwin;
+  
+  		    /* First create a new tab with the window, then go back to
+  		     * the old tab and close the window there. */
+  		    if (win_new_tabpage((int)Prenum) == OK
+  						     && valid_tabpage(oldtab))
+  		    {
+--- 340,349 ----
+  		{
+  		    tabpage_T	*oldtab = curtab;
+  		    tabpage_T	*newtab;
+  
+  		    /* First create a new tab with the window, then go back to
+  		     * the old tab and close the window there. */
++ 		    wp = curwin;
+  		    if (win_new_tabpage((int)Prenum) == OK
+  						     && valid_tabpage(oldtab))
+  		    {
+*** ../vim-7.0.069/src/version.c	Tue Aug 29 16:52:01 2006
+--- src/version.c	Tue Aug 29 17:02:00 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     70,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+267. You get an extra phone line so you can get phone calls.
+
+ /// 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    ///

Added: trunk/packages/vim/upstream/patches/7.0.071
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.071?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.071 (added)
+++ trunk/packages/vim/upstream/patches/7.0.071 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,52 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.071
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.071
+Problem:    Using an empty search pattern may cause a crash.
+Solution:   Avoid using a NULL pointer.
+Files:	    src/search.c
+
+
+*** ../vim-7.0.070/src/search.c	Tue Aug 29 17:28:56 2006
+--- src/search.c	Tue Aug 29 14:56:15 2006
+***************
+*** 1259,1265 ****
+  	/*
+  	 * Add character and/or line offset
+  	 */
+! 	if (!(options & SEARCH_NOOF) || *pat == ';')
+  	{
+  	    if (spats[0].off.line)	/* Add the offset to the line number. */
+  	    {
+--- 1259,1265 ----
+  	/*
+  	 * Add character and/or line offset
+  	 */
+! 	if (!(options & SEARCH_NOOF) || (pat != NULL && *pat == ';'))
+  	{
+  	    if (spats[0].off.line)	/* Add the offset to the line number. */
+  	    {
+*** ../vim-7.0.070/src/version.c	Tue Aug 29 17:28:56 2006
+--- src/version.c	Tue Aug 29 17:59:24 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     71,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+268. You get up in the morning and go online before getting your coffee.
+
+ /// 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    ///

Added: trunk/packages/vim/upstream/patches/7.0.072
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.072?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.072 (added)
+++ trunk/packages/vim/upstream/patches/7.0.072 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,83 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.072
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.072
+Problem:    When starting the GUI fails there is no way to adjust settings or
+	    do something else.
+Solution:   Add the GUIFailed autocommand event.
+Files:	    src/fileio.c, src/gui.c, src/vim.h
+
+
+*** ../vim-7.0.071/src/fileio.c	Wed Aug 16 19:34:59 2006
+--- src/fileio.c	Tue Aug 29 10:11:35 2006
+***************
+*** 6980,6985 ****
+--- 6980,6986 ----
+      {"FocusLost",	EVENT_FOCUSLOST},
+      {"FuncUndefined",	EVENT_FUNCUNDEFINED},
+      {"GUIEnter",	EVENT_GUIENTER},
++     {"GUIFailed",	EVENT_GUIFAILED},
+      {"InsertChange",	EVENT_INSERTCHANGE},
+      {"InsertEnter",	EVENT_INSERTENTER},
+      {"InsertLeave",	EVENT_INSERTLEAVE},
+*** ../vim-7.0.071/src/gui.c	Tue Jun 20 20:39:32 2006
+--- src/gui.c	Tue Aug 29 10:12:32 2006
+***************
+*** 187,195 ****
+  #endif
+  
+  #ifdef FEAT_AUTOCMD
+!     /* If the GUI started successfully, trigger the GUIEnter event */
+!     if (gui.in_use)
+! 	apply_autocmds(EVENT_GUIENTER, NULL, NULL, FALSE, curbuf);
+  #endif
+  
+      --recursive;
+--- 187,196 ----
+  #endif
+  
+  #ifdef FEAT_AUTOCMD
+!     /* If the GUI started successfully, trigger the GUIEnter event, otherwise
+!      * the GUIFailed event. */
+!     apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
+! 						   NULL, NULL, FALSE, curbuf);
+  #endif
+  
+      --recursive;
+*** ../vim-7.0.071/src/vim.h	Fri Jun 23 16:33:41 2006
+--- src/vim.h	Tue Aug 29 10:12:47 2006
+***************
+*** 1120,1125 ****
+--- 1120,1126 ----
+      EVENT_FOCUSGAINED,		/* got the focus */
+      EVENT_FOCUSLOST,		/* lost the focus to another app */
+      EVENT_GUIENTER,		/* after starting the GUI */
++     EVENT_GUIFAILED,		/* after starting the GUI failed */
+      EVENT_INSERTCHANGE,		/* when changing Insert/Replace mode */
+      EVENT_INSERTENTER,		/* when entering Insert mode */
+      EVENT_INSERTLEAVE,		/* when leaving Insert mode */
+*** ../vim-7.0.071/src/version.c	Tue Aug 29 18:01:39 2006
+--- src/version.c	Tue Aug 29 18:15:13 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     72,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+269. You receive an e-mail from the wife of a deceased president, offering
+     to send you twenty million dollar, and you are not even surprised.
+
+ /// 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    ///

Added: trunk/packages/vim/upstream/patches/7.0.073
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.073?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.073 (added)
+++ trunk/packages/vim/upstream/patches/7.0.073 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,50 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.073
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.073
+Problem:    Insert mode completion: Typing <CR> sometimes selects the original
+	    text instead of keeping what was typed.  (Justin Constantino)
+Solution:   Don't let <CR> select the original text if there is no popup menu.
+Files:	    src/edit.c
+
+
+*** ../vim-7.0.072/src/edit.c	Tue Aug 29 17:28:56 2006
+--- src/edit.c	Tue Aug 29 17:40:06 2006
+***************
+*** 3097,3102 ****
+--- 3097,3106 ----
+  
+      /* Show the popup menu with a different set of matches. */
+      ins_compl_show_pum();
++ 
++     /* Don't let Enter select the original text when there is no popup menu. */
++     if (compl_match_array == NULL)
++ 	compl_enter_selects = FALSE;
+  }
+  
+  /*
+*** ../vim-7.0.072/src/version.c	Tue Aug 29 18:16:37 2006
+--- src/version.c	Tue Aug 29 18:35:33 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     73,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+269. You wonder how you can make your dustbin produce Sesame Street's
+     Oscar's the Garbage Monster song when you empty 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    ///

Added: trunk/packages/vim/upstream/patches/7.0.074
URL: http://svn.debian.org/wsvn/pkg-vim/trunk/packages/vim/upstream/patches/7.0.074?rev=756&op=file
==============================================================================
--- trunk/packages/vim/upstream/patches/7.0.074 (added)
+++ trunk/packages/vim/upstream/patches/7.0.074 Tue Aug 29 19:54:21 2006
@@ -1,0 +1,270 @@
+To: vim-dev at vim.org
+Subject: Patch 7.0.074 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.0.074 (extra)
+Problem:    Win32: tooltips were not converted from 'encoding' to Unicode.
+Solution:   Set the tooltip to use Unicode and do the conversion.  Also
+	    cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira)
+Files:	    src/gui_w32.c, src/gui_w48.c
+
+
+*** ../vim-7.0.073/src/gui_w32.c	Sat May  6 23:43:11 2006
+--- src/gui_w32.c	Tue Aug 29 21:16:58 2006
+***************
+*** 889,1005 ****
+  # ifdef FEAT_MBYTE
+  	    case TTN_GETDISPINFOW:
+  # endif
+! 	    case TTN_NEEDTEXT:
+! # ifdef FEAT_GUI_TABLINE
+! 		if (gui_mch_showing_tabline()
+! 			&& ((LPNMHDR)lParam)->hwndFrom ==
+! 					       TabCtrl_GetToolTips(s_tabhwnd))
+  		{
+! 		    LPNMTTDISPINFO	lpdi;
+! 		    POINT		pt;
+! 		    static char		*tt_text = NULL;
+! 		    static int		tt_text_len = 0;
+! 
+! 		    /*
+! 		     * Mouse is over the GUI tabline. Display the tooltip
+! 		     * for the tab under the cursor
+! 		     */
+! 		    lpdi = (LPNMTTDISPINFO)lParam;
+! 		    lpdi->hinst = NULL;
+! 		    lpdi->szText[0] = '\0';
+! 
+! 		    /*
+! 		     * Get the cursor position within the tab control
+! 		     */
+! 		    GetCursorPos(&pt);
+! 		    if (ScreenToClient(s_tabhwnd, &pt) != 0)
+! 		    {
+! 			TCHITTESTINFO htinfo;
+! 			int idx;
+  
+  			/*
+! 			 * Get the tab under the cursor
+  			 */
+! 			htinfo.pt.x = pt.x;
+! 			htinfo.pt.y = pt.y;
+! 			idx = TabCtrl_HitTest(s_tabhwnd, &htinfo);
+! 			if (idx != -1)
+  			{
+! 			    tabpage_T *tp;
+  
+! 			    tp = find_tabpage(idx + 1);
+! 			    if (tp != NULL)
+  			    {
+! #  ifdef FEAT_MBYTE
+! 				WCHAR	*wstr = NULL;
+! #  endif
+! 				get_tabline_label(tp, TRUE);
+! #  ifdef FEAT_MBYTE
+! 				if (enc_codepage >= 0
+! 					     && (int)GetACP() != enc_codepage)
+! 				{
+! 				    wstr = enc_to_ucs2(NameBuff, NULL);
+! 				    if (wstr != NULL)
+! 				    {
+! 					int wlen;
+! 
+! 					wlen = ((int)wcslen(wstr) + 1)
+! 							      * sizeof(WCHAR);
+! 					if (tt_text_len < wlen)
+! 					{
+! 					    tt_text = vim_realloc(tt_text,
+! 									wlen);
+! 					    if (tt_text != NULL)
+! 						tt_text_len = wlen;
+! 					}
+! 					if (tt_text != NULL)
+! 					    wcscpy((WCHAR *)tt_text, wstr);
+! 					lpdi->lpszText = tt_text;
+! 					vim_free(wstr);
+! 				    }
+! 				}
+! 				if (wstr == NULL)
+! #  endif
+! 				{
+! 				    int len;
+  
+! 				    len = (int)STRLEN(NameBuff) + 1;
+! 				    if (tt_text_len < len)
+! 				    {
+! 					tt_text = vim_realloc(tt_text, len);
+! 					if (tt_text != NULL)
+! 					    tt_text_len = len;
+! 				    }
+! 				    if (tt_text != NULL)
+! 					STRCPY(tt_text, NameBuff);
+! 				    lpdi->lpszText = tt_text;
+  				}
+  			    }
+  			}
+  		    }
+- 		}
+- 		else
+  # endif
+- 		{
+  # ifdef FEAT_TOOLBAR
+! 		    LPTOOLTIPTEXT	lpttt;
+! 		    UINT		idButton;
+! 		    int			idx;
+! 		    vimmenu_T		*pMenu;
+! 
+! 		    lpttt = (LPTOOLTIPTEXT)lParam;
+! 		    idButton = (UINT) lpttt->hdr.idFrom;
+! 		    pMenu = gui_mswin_find_menu(root_menu, idButton);
+! 		    if (pMenu)
+  		    {
+! 			idx = MENU_INDEX_TIP;
+! 			if (pMenu->strings[idx])
+  			{
+! 			    lpttt->hinst = NULL;  /* string, not resource */
+! 			    lpttt->lpszText = pMenu->strings[idx];
+  			}
+! 		    }
+  # endif
+  		}
+  		break;
+  # ifdef FEAT_GUI_TABLINE
+--- 889,978 ----
+  # ifdef FEAT_MBYTE
+  	    case TTN_GETDISPINFOW:
+  # endif
+! 	    case TTN_GETDISPINFO:
+  		{
+! 		    LPNMHDR		hdr = (LPNMHDR)lParam;
+! 		    char_u		*str = NULL;
+! 		    static void		*tt_text = NULL;
+! 
+! 		    vim_free(tt_text);
+! 		    tt_text = NULL;
+  
++ # ifdef FEAT_GUI_TABLINE
++ 		    if (gui_mch_showing_tabline()
++ 			   && hdr->hwndFrom == TabCtrl_GetToolTips(s_tabhwnd))
++ 		    {
++ 			POINT		pt;
+  			/*
+! 			 * Mouse is over the GUI tabline. Display the
+! 			 * tooltip for the tab under the cursor
+! 			 *
+! 			 * Get the cursor position within the tab control
+  			 */
+! 			GetCursorPos(&pt);
+! 			if (ScreenToClient(s_tabhwnd, &pt) != 0)
+  			{
+! 			    TCHITTESTINFO htinfo;
+! 			    int idx;
+  
+! 			    /*
+! 			     * Get the tab under the cursor
+! 			     */
+! 			    htinfo.pt.x = pt.x;
+! 			    htinfo.pt.y = pt.y;
+! 			    idx = TabCtrl_HitTest(s_tabhwnd, &htinfo);
+! 			    if (idx != -1)
+  			    {
+! 				tabpage_T *tp;
+  
+! 				tp = find_tabpage(idx + 1);
+! 				if (tp != NULL)
+! 				{
+! 				    get_tabline_label(tp, TRUE);
+! 				    str = NameBuff;
+  				}
+  			    }
+  			}
+  		    }
+  # endif
+  # ifdef FEAT_TOOLBAR
+! #  ifdef FEAT_GUI_TABLINE
+! 		    else
+! #  endif
+! 		    {
+! 			UINT		idButton;
+! 			vimmenu_T	*pMenu;
+! 
+! 			idButton = (UINT) hdr->idFrom;
+! 			pMenu = gui_mswin_find_menu(root_menu, idButton);
+! 			if (pMenu)
+! 			    str = pMenu->strings[MENU_INDEX_TIP];
+! 		    }
+! # endif
+! 		    if (str != NULL)
+  		    {
+! # ifdef FEAT_MBYTE
+! 			if (hdr->code == TTN_GETDISPINFOW)
+  			{
+! 			    LPNMTTDISPINFOW	lpdi = (LPNMTTDISPINFOW)lParam;
+! 
+! 			    tt_text = enc_to_ucs2(str, NULL);
+! 			    lpdi->lpszText = tt_text;
+! 			    /* can't show tooltip if failed */
+  			}
+! 			else
+  # endif
++ 			{
++ 			    LPNMTTDISPINFO	lpdi = (LPNMTTDISPINFO)lParam;
++ 
++ 			    if (STRLEN(str) < sizeof(lpdi->szText)
++ 				    || ((tt_text = vim_strsave(str)) == NULL))
++ 				vim_strncpy(lpdi->szText, str,
++ 						sizeof(lpdi->szText) - 1);
++ 			    else
++ 				lpdi->lpszText = tt_text;
++ 			}
++ 		    }
+  		}
+  		break;
+  # ifdef FEAT_GUI_TABLINE
+*** ../vim-7.0.073/src/gui_w48.c	Fri Jun 23 16:44:32 2006
+--- src/gui_w48.c	Tue Aug 29 21:14:31 2006
+***************
+*** 2194,2200 ****
+--- 2194,2211 ----
+  	return;
+  
+      if (showit)
++     {
++ # ifdef FEAT_MBYTE
++ #  ifndef TB_SETUNICODEFORMAT
++     /* For older compilers.  We assume this never changes. */
++ #   define TB_SETUNICODEFORMAT 0x2005
++ #  endif
++ 	/* Enable/disable unicode support */
++ 	int uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage);
++ 	SendMessage(s_toolbarhwnd, TB_SETUNICODEFORMAT, (WPARAM)uu, (LPARAM)0);
++ # endif
+  	ShowWindow(s_toolbarhwnd, SW_SHOW);
++     }
+      else
+  	ShowWindow(s_toolbarhwnd, SW_HIDE);
+  }
+*** ../vim-7.0.073/src/version.c	Tue Aug 29 18:36:55 2006
+--- src/version.c	Tue Aug 29 21:28:00 2006
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     74,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+271. You collect hilarious signatures from all 250 mailing lists you
+     are subscribed to.
+
+ /// 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    ///




More information about the pkg-vim-maintainers mailing list