rpms/vim/F-10 7.2.061, NONE, 1.1 7.2.062, NONE, 1.1 7.2.063, NONE, 1.1 7.2.064, NONE, 1.1 7.2.065, NONE, 1.1 7.2.066, NONE, 1.1 7.2.067, NONE, 1.1 7.2.068, NONE, 1.1 7.2.069, NONE, 1.1 7.2.070, NONE, 1.1 7.2.071, NONE, 1.1 7.2.072, NONE, 1.1 7.2.073, NONE, 1.1 7.2.074, NONE, 1.1 7.2.075, NONE, 1.1 7.2.076, NONE, 1.1 7.2.077, NONE, 1.1 7.2.078, NONE, 1.1 7.2.079, NONE, 1.1 7.2.080, NONE, 1.1 7.2.081, NONE, 1.1 7.2.082, NONE, 1.1 7.2.083, NONE, 1.1 7.2.084, NONE, 1.1 7.2.085, NONE, 1.1 7.2.086, NONE, 1.1 7.2.087, NONE, 1.1 7.2.088, NONE, 1.1 7.2.089, NONE, 1.1 7.2.090, NONE, 1.1 7.2.091, NONE, 1.1 7.2.092, NONE, 1.1 7.2.093, NONE, 1.1 7.2.094, NONE, 1.1 7.2.095, NONE, 1.1 7.2.096, NONE, 1.1 7.2.097, NONE, 1.1 7.2.098, NONE, 1.1 7.2.099, NONE, 1.1 7.2.100, NONE, 1.1 7.2.101, NONE, 1.1 7.2.102, NONE, 1.1 7.2.103, NONE, 1.1 7.2.104, NONE, 1.1 7.2.105, NONE, 1.1 7.2.106, NONE, 1.1 7.2.107, NONE, 1.1 7.2.108, NONE, 1.1 7.2.109, NONE, 1.1 7.2.110, NONE, 1.1 7.2.111, NONE, 1.1 7.2.112, NONE, 1.1 7.2.113, NONE, 1.1 7.2.114, NONE, 1.1 7.2.115, NONE, 1.1 7.2.116, NONE, 1.1 7.2.117, NONE, 1.1 7.2.118, NONE, 1.1 7.2.119, NONE, 1.1 7.2.120, NONE, 1.1 7.2.121, NONE, 1.1 7.2.122, NONE, 1.1 7.2.123, NONE, 1.1 7.2.124, NONE, 1.1 7.2.125, NONE, 1.1 7.2.126, NONE, 1.1 7.2.127, NONE, 1.1 7.2.128, NONE, 1.1 7.2.129, NONE, 1.1 7.2.130, NONE, 1.1 7.2.131, NONE, 1.1 7.2.132, NONE, 1.1 7.2.133, NONE, 1.1 7.2.134, NONE, 1.1 7.2.135, NONE, 1.1 7.2.136, NONE, 1.1 7.2.137, NONE, 1.1 7.2.138, NONE, 1.1 7.2.139, NONE, 1.1 7.2.140, NONE, 1.1 7.2.141, NONE, 1.1 7.2.142, NONE, 1.1 7.2.143, NONE, 1.1 7.2.144, NONE, 1.1 7.2.145, NONE, 1.1 7.2.146, NONE, 1.1 7.2.147, NONE, 1.1 7.2.148, NONE, 1.1 README.patches, 1.115, 1.116 vim.spec, 1.227, 1.228

Karsten Hopp karsten at fedoraproject.org
Fri Mar 27 11:54:00 UTC 2009


Author: karsten

Update of /cvs/extras/rpms/vim/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv18240

Modified Files:
	README.patches vim.spec 
Added Files:
	7.2.061 7.2.062 7.2.063 7.2.064 7.2.065 7.2.066 7.2.067 
	7.2.068 7.2.069 7.2.070 7.2.071 7.2.072 7.2.073 7.2.074 
	7.2.075 7.2.076 7.2.077 7.2.078 7.2.079 7.2.080 7.2.081 
	7.2.082 7.2.083 7.2.084 7.2.085 7.2.086 7.2.087 7.2.088 
	7.2.089 7.2.090 7.2.091 7.2.092 7.2.093 7.2.094 7.2.095 
	7.2.096 7.2.097 7.2.098 7.2.099 7.2.100 7.2.101 7.2.102 
	7.2.103 7.2.104 7.2.105 7.2.106 7.2.107 7.2.108 7.2.109 
	7.2.110 7.2.111 7.2.112 7.2.113 7.2.114 7.2.115 7.2.116 
	7.2.117 7.2.118 7.2.119 7.2.120 7.2.121 7.2.122 7.2.123 
	7.2.124 7.2.125 7.2.126 7.2.127 7.2.128 7.2.129 7.2.130 
	7.2.131 7.2.132 7.2.133 7.2.134 7.2.135 7.2.136 7.2.137 
	7.2.138 7.2.139 7.2.140 7.2.141 7.2.142 7.2.143 7.2.144 
	7.2.145 7.2.146 7.2.147 7.2.148 
Log Message:
- update to patchlevel 148


--- NEW FILE 7.2.061 ---
To: vim-dev at vim.org
Subject: Patch 7.2.061
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.2.061
Problem:    Can't create a funcref for an autoload function without loading
	    the script first. (Marc Weber)
Solution:   Accept autoload functions that don't exist yet in function().
Files:	    src/eval.c


*** ../vim-7.2.060/src/eval.c	Fri Nov 28 21:26:50 2008
--- src/eval.c	Sat Nov 29 12:28:51 2008
***************
*** 10339,10345 ****
      s = get_tv_string(&argvars[0]);
      if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
  	EMSG2(_(e_invarg2), s);
!     else if (!function_exists(s))
  	EMSG2(_("E700: Unknown function: %s"), s);
      else
      {
--- 10339,10346 ----
      s = get_tv_string(&argvars[0]);
      if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
  	EMSG2(_(e_invarg2), s);
!     /* Don't check an autoload name for existence here. */
!     else if (vim_strchr(s, AUTOLOAD_CHAR) == NULL && !function_exists(s))
  	EMSG2(_("E700: Unknown function: %s"), s);
      else
      {
*** ../vim-7.2.060/src/version.c	Sun Nov 30 21:11:54 2008
--- src/version.c	Wed Dec  3 09:49:07 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     61,
  /**/

-- 
There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU,
Linux, etc, and those who know COBOL.  It gets very difficult for me at
parties, not knowing which group to socialise with :-)
						Sitaram Chamarty

 /// 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    ///


--- NEW FILE 7.2.062 ---
To: vim-dev at vim.org
Subject: Patch 7.2.062
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.2.062
Problem:    "[Scratch]" is not translated.
Solution:   Mark the string for translation. (Dominique Pelle)
Files:	    src/buffer.c


*** ../vim-7.2.061/src/buffer.c	Sat Nov 15 16:05:30 2008
--- src/buffer.c	Tue Dec  2 21:51:02 2008
***************
*** 5118,5124 ****
      {
  	if (buf->b_sfname != NULL)
  	    return (char *)buf->b_sfname;
! 	return "[Scratch]";
      }
  #endif
      if (buf->b_fname == NULL)
--- 5118,5124 ----
      {
  	if (buf->b_sfname != NULL)
  	    return (char *)buf->b_sfname;
! 	return _("[Scratch]");
      }
  #endif
      if (buf->b_fname == NULL)
*** ../vim-7.2.061/src/version.c	Wed Dec  3 09:51:19 2008
--- src/version.c	Wed Dec  3 11:20:30 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     62,
  /**/

-- 
DENNIS:  Listen -- strange women lying in ponds distributing swords is no
         basis for a system of government.  Supreme executive power derives
         from a mandate from the masses, not from some farcical aquatic
         ceremony.
                                  The Quest for the Holy Grail (Monty Python)

 /// 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    ///


--- NEW FILE 7.2.063 ---
To: vim-dev at vim.org
Subject: Patch 7.2.063
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.2.063
Problem:    Warning for NULL argument of Perl_sys_init3().
Solution:   Use Perl_sys_init() instead. (partly by Dominique Pelle)
Files:	    src/if_perl.xs


*** ../vim-7.2.062/src/if_perl.xs	Mon Sep  1 17:56:05 2008
--- src/if_perl.xs	Wed Dec  3 12:44:38 2008
***************
*** 166,172 ****
  # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
  # define boot_DynaLoader dll_boot_DynaLoader
  
! # define Perl_sys_init3 dll_Perl_sys_init3
  # define Perl_sys_term dll_Perl_sys_term
  # define Perl_ISv_ptr dll_Perl_ISv_ptr
  # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
--- 166,172 ----
  # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
  # define boot_DynaLoader dll_boot_DynaLoader
  
! # define Perl_sys_init dll_Perl_sys_init
  # define Perl_sys_term dll_Perl_sys_term
  # define Perl_ISv_ptr dll_Perl_ISv_ptr
  # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
***************
*** 272,278 ****
  
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
  static void (*Perl_sv_free2)(pTHX_ SV*);
! static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
  static void (*Perl_sys_term)(void);
  static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
  static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
--- 272,278 ----
  
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
  static void (*Perl_sv_free2)(pTHX_ SV*);
! static void (*Perl_sys_init)(int* argc, char*** argv);
  static void (*Perl_sys_term)(void);
  static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
  static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
***************
*** 372,378 ****
      {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
  #else
      {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
!     {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
      {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
      {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
      {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
--- 372,378 ----
      {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
  #else
      {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
!     {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
      {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
      {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
      {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
***************
*** 460,466 ****
      static char *argv[] = { "", "-e", "" };
  
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
!     Perl_sys_init3(&argc, (char***)&argv, NULL);
  #endif
      perl_interp = perl_alloc();
      perl_construct(perl_interp);
--- 460,466 ----
      static char *argv[] = { "", "-e", "" };
  
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
!     Perl_sys_init(&argc, (char***)&argv);
  #endif
      perl_interp = perl_alloc();
      perl_construct(perl_interp);
*** ../vim-7.2.062/src/version.c	Wed Dec  3 11:21:20 2008
--- src/version.c	Wed Dec  3 12:42:50 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     63,
  /**/

-- 
Windows
M!uqoms

 /// 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    ///


--- NEW FILE 7.2.064 ---
To: vim-dev at vim.org
Subject: Patch 7.2.064
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.2.064
Problem:    Screen update bug when repeating "~" on a Visual block and the
	    last line doesn't change.
Solution:   Keep track of changes for all lines.  (Moritz Orbach)
Files:	    src/ops.c


*** ../vim-7.2.063/src/ops.c	Tue Jun 24 23:59:55 2008
--- src/ops.c	Wed Dec  3 13:12:06 2008
***************
*** 2209,2220 ****
      {
  	for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
  	{
  	    block_prep(oap, &bd, pos.lnum, FALSE);
  	    pos.col = bd.textcol;
! 	    did_change = swapchars(oap->op_type, &pos, bd.textlen);
  
  # ifdef FEAT_NETBEANS_INTG
! 	    if (usingNetbeans && did_change)
  	    {
  		char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
  
--- 2209,2223 ----
      {
  	for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
  	{
+ 	    int one_change;
+ 
  	    block_prep(oap, &bd, pos.lnum, FALSE);
  	    pos.col = bd.textcol;
! 	    one_change = swapchars(oap->op_type, &pos, bd.textlen);
! 	    did_change |= one_change;
  
  # ifdef FEAT_NETBEANS_INTG
! 	    if (usingNetbeans && one_change)
  	    {
  		char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
  
*** ../vim-7.2.063/src/version.c	Wed Dec  3 13:18:16 2008
--- src/version.c	Wed Dec  3 13:14:46 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     64,
  /**/

-- 
Q:   How many hardware engineers does it take to change a lightbulb?
A:   None.  We'll fix it in software.

 /// 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    ///


--- NEW FILE 7.2.065 ---
To: vim-dev at vim.org
Subject: Patch 7.2.065
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.2.065
Problem:    GTK GUI: the cursor disappears when doing ":vsp" and the Vim
	    window is maximized.  (Dominique Pelle, Denis Smolyar)
Solution:   Don't change "Columns" back to an old value at a wrong moment.
	    Do change "Rows" when it should not be a problem.
Files:	    src/gui.c


*** ../vim-7.2.064/src/gui.c	Fri Nov 28 21:26:50 2008
--- src/gui.c	Wed Dec  3 18:01:21 2008
***************
*** 3241,3247 ****
  	    i = Rows;
  	    gui_update_tabline();
  	    Rows = i;
! 	    need_set_size = RESIZE_VERT;
  	    if (using_tabline)
  		fix_size = TRUE;
  	    if (!gui_use_tabline())
--- 3241,3247 ----
  	    i = Rows;
  	    gui_update_tabline();
  	    Rows = i;
! 	    need_set_size |= RESIZE_VERT;
  	    if (using_tabline)
  		fix_size = TRUE;
  	    if (!gui_use_tabline())
***************
*** 3275,3283 ****
  		if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
  		{
  		    if (i == SBAR_BOTTOM)
! 			need_set_size = RESIZE_VERT;
  		    else
! 			need_set_size = RESIZE_HOR;
  		    if (gui.which_scrollbars[i])
  			fix_size = TRUE;
  		}
--- 3275,3283 ----
  		if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
  		{
  		    if (i == SBAR_BOTTOM)
! 			need_set_size |= RESIZE_VERT;
  		    else
! 			need_set_size |= RESIZE_HOR;
  		    if (gui.which_scrollbars[i])
  			fix_size = TRUE;
  		}
***************
*** 3297,3303 ****
  	    gui_mch_enable_menu(gui.menu_is_active);
  	    Rows = i;
  	    prev_menu_is_active = gui.menu_is_active;
! 	    need_set_size = RESIZE_VERT;
  	    if (gui.menu_is_active)
  		fix_size = TRUE;
  	}
--- 3297,3303 ----
  	    gui_mch_enable_menu(gui.menu_is_active);
  	    Rows = i;
  	    prev_menu_is_active = gui.menu_is_active;
! 	    need_set_size |= RESIZE_VERT;
  	    if (gui.menu_is_active)
  		fix_size = TRUE;
  	}
***************
*** 3308,3314 ****
  	{
  	    gui_mch_show_toolbar(using_toolbar);
  	    prev_toolbar = using_toolbar;
! 	    need_set_size = RESIZE_VERT;
  	    if (using_toolbar)
  		fix_size = TRUE;
  	}
--- 3308,3314 ----
  	{
  	    gui_mch_show_toolbar(using_toolbar);
  	    prev_toolbar = using_toolbar;
! 	    need_set_size |= RESIZE_VERT;
  	    if (using_toolbar)
  		fix_size = TRUE;
  	}
***************
*** 3318,3324 ****
  	{
  	    gui_mch_enable_footer(using_footer);
  	    prev_footer = using_footer;
! 	    need_set_size = RESIZE_VERT;
  	    if (using_footer)
  		fix_size = TRUE;
  	}
--- 3318,3324 ----
  	{
  	    gui_mch_enable_footer(using_footer);
  	    prev_footer = using_footer;
! 	    need_set_size |= RESIZE_VERT;
  	    if (using_footer)
  		fix_size = TRUE;
  	}
***************
*** 3330,3339 ****
  	    prev_tearoff = using_tearoff;
  	}
  #endif
! 	if (need_set_size)
  	{
  #ifdef FEAT_GUI_GTK
! 	    long    c = Columns;
  #endif
  	    /* Adjust the size of the window to make the text area keep the
  	     * same size and to avoid that part of our window is off-screen
--- 3330,3340 ----
  	    prev_tearoff = using_tearoff;
  	}
  #endif
! 	if (need_set_size != 0)
  	{
  #ifdef FEAT_GUI_GTK
! 	    long    prev_Columns = Columns;
! 	    long    prev_Rows = Rows;
  #endif
  	    /* Adjust the size of the window to make the text area keep the
  	     * same size and to avoid that part of our window is off-screen
***************
*** 3349,3359 ****
  	     * If you remove this, please test this command for resizing
  	     * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
  	     * Don't do this while starting up though.
! 	     * And don't change Rows, it may have be reduced intentionally
! 	     * when adding menu/toolbar/tabline. */
! 	    if (!gui.starting)
  		(void)char_avail();
! 	    Columns = c;
  #endif
  	}
  #ifdef FEAT_WINDOWS
--- 3350,3363 ----
  	     * If you remove this, please test this command for resizing
  	     * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
  	     * Don't do this while starting up though.
! 	     * Don't change Rows when adding menu/toolbar/tabline.
! 	     * Don't change Columns when adding vertical toolbar. */
! 	    if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
  		(void)char_avail();
! 	    if ((need_set_size & RESIZE_VERT) == 0)
! 		Rows = prev_Rows;
! 	    if ((need_set_size & RESIZE_HOR) == 0)
! 		Columns = prev_Columns;
  #endif
  	}
  #ifdef FEAT_WINDOWS
*** ../vim-7.2.064/src/version.c	Wed Dec  3 13:38:00 2008
--- src/version.c	Wed Dec  3 18:47:11 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     65,
  /**/

-- 
Seen on the back of a biker's vest: If you can read this, my wife fell off.

 /// 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    ///


--- NEW FILE 7.2.066 ---
To: vim-dev at vim.org
Subject: Patch 7.2.066
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.2.066
Problem:    It's not easy to see whether 'encoding' is a multi-byte encoding.
Solution:   Add has('multi_byte_encoding').
Files:	    runtime/doc/eval.txt, src/eval.c


*** ../vim-7.2.065/runtime/doc/eval.txt	Fri Nov 28 11:15:10 2008
--- runtime/doc/eval.txt	Tue Dec  9 10:55:59 2008
***************
*** 5841,5847 ****
  mouse_pterm		Compiled with support for qnx pterm mouse.
  mouse_sysmouse		Compiled with support for sysmouse (*BSD console mouse)
  mouse_xterm		Compiled with support for xterm mouse.
! multi_byte		Compiled with support for editing Korean et al.
  multi_byte_ime		Compiled with support for IME input method.
  multi_lang		Compiled with support for multiple languages.
  mzscheme		Compiled with MzScheme interface |mzscheme|.
--- 5852,5859 ----
  mouse_pterm		Compiled with support for qnx pterm mouse.
  mouse_sysmouse		Compiled with support for sysmouse (*BSD console mouse)
  mouse_xterm		Compiled with support for xterm mouse.
! multi_byte		Compiled with support for 'encoding'
! multi_byte_encoding	'encoding' is set to a multi-byte encoding.
  multi_byte_ime		Compiled with support for IME input method.
  multi_lang		Compiled with support for multiple languages.
  mzscheme		Compiled with MzScheme interface |mzscheme|.
*** ../vim-7.2.065/src/eval.c	Wed Dec  3 09:51:19 2008
--- src/eval.c	Wed Dec  3 14:29:09 2008
***************
*** 11842,11847 ****
--- 11842,11851 ----
  	    n = has_patch(atoi((char *)name + 5));
  	else if (STRICMP(name, "vim_starting") == 0)
  	    n = (starting != 0);
+ #ifdef FEAT_MBYTE
+ 	else if (STRICMP(name, "multi_byte_encoding") == 0)
+ 	    n = has_mbyte;
+ #endif
  #if defined(FEAT_BEVAL) && defined(FEAT_GUI_W32)
  	else if (STRICMP(name, "balloon_multiline") == 0)
  	    n = multiline_balloon_available();
*** ../vim-7.2.065/src/version.c	Wed Dec  3 18:50:09 2008
--- src/version.c	Tue Dec  9 10:48:49 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     66,
  /**/

-- 
ARTHUR: Listen, old crone!  Unless you tell us where we can buy a shrubbery,
        my friend and I will ... we will say "Ni!"
CRONE:  Do your worst!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.067 ---
To: vim-dev at vim.org
Subject: Patch 7.2.067
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.2.067
Problem:    Session file can't load extra file when the path contains special
	    characters.
Solution:   Escape the file name. (Lech Lorens)
Files:	    src/ex_docmd.c


*** ../vim-7.2.066/src/ex_docmd.c	Fri Nov 28 21:26:50 2008
--- src/ex_docmd.c	Fri Dec  5 21:34:11 2008
***************
*** 10106,10112 ****
       */
      if (put_line(fd, "let s:sx = expand(\"<sfile>:p:r\").\"x.vim\"") == FAIL
  	    || put_line(fd, "if file_readable(s:sx)") == FAIL
! 	    || put_line(fd, "  exe \"source \" . s:sx") == FAIL
  	    || put_line(fd, "endif") == FAIL)
  	return FAIL;
  
--- 10106,10112 ----
       */
      if (put_line(fd, "let s:sx = expand(\"<sfile>:p:r\").\"x.vim\"") == FAIL
  	    || put_line(fd, "if file_readable(s:sx)") == FAIL
! 	    || put_line(fd, "  exe \"source \" . fnameescape(s:sx)") == FAIL
  	    || put_line(fd, "endif") == FAIL)
  	return FAIL;
  
*** ../vim-7.2.066/src/version.c	Tue Dec  9 10:56:50 2008
--- src/version.c	Tue Dec  9 11:16:27 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     67,
  /**/

-- 
Life is a gift, living is an art.		(Bram Moolenaar)

 /// 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    ///


--- NEW FILE 7.2.068 ---
To: vim-dev at vim.org
Subject: Patch 7.2.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.2.068
Problem:    Emacs tags file lines can be too long, resulting in an error
	    message. (James Vega)
Solution:   Ignore lines with errors if they are too long.
Files:	    src/tag.c


*** ../vim-7.2.067/src/tag.c	Fri Jul 18 11:26:12 2008
--- src/tag.c	Sat Dec  6 13:54:33 2008
***************
*** 2725,2731 ****
--- 2725,2748 ----
  	 */
  	p_7f = vim_strchr(lbuf, 0x7f);
  	if (p_7f == NULL)
+ 	{
+ etag_fail:
+ 	    if (vim_strchr(lbuf, '\n') == NULL)
+ 	    {
+ 		/* Truncated line.  Ignore it. */
+ 		if (p_verbose >= 5)
+ 		{
+ 		    verbose_enter();
+ 		    MSG(_("Ignoring long line in tags file"));
+ 		    verbose_leave();
+ 		}
+ 		tagp->command = lbuf;
+ 		tagp->tagname = lbuf;
+ 		tagp->tagname_end = lbuf;
+ 		return OK;
+ 	    }
  	    return FAIL;
+ 	}
  
  	/* Find ^A.  If not found the line number is after the 0x7f */
  	p = vim_strchr(p_7f, Ctrl_A);
***************
*** 2735,2741 ****
  	    ++p;
  
  	if (!VIM_ISDIGIT(*p))	    /* check for start of line number */
! 	    return FAIL;
  	tagp->command = p;
  
  
--- 2752,2758 ----
  	    ++p;
  
  	if (!VIM_ISDIGIT(*p))	    /* check for start of line number */
! 	    goto etag_fail;
  	tagp->command = p;
  
  
***************
*** 2749,2755 ****
  	    /* find end of tagname */
  	    for (p = p_7f - 1; !vim_iswordc(*p); --p)
  		if (p == lbuf)
! 		    return FAIL;
  	    tagp->tagname_end = p + 1;
  	    while (p >= lbuf && vim_iswordc(*p))
  		--p;
--- 2766,2772 ----
  	    /* find end of tagname */
  	    for (p = p_7f - 1; !vim_iswordc(*p); --p)
  		if (p == lbuf)
! 		    goto etag_fail;
  	    tagp->tagname_end = p + 1;
  	    while (p >= lbuf && vim_iswordc(*p))
  		--p;
*** ../vim-7.2.067/src/version.c	Tue Dec  9 11:17:23 2008
--- src/version.c	Tue Dec  9 12:05:41 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     68,
  /**/

-- 
Q: What do you call a fish without an eye?
A: fsh!
Q: What do you call a deer with no eyes?
A: no eye deer.
Q: What do you call a deer with no eyes and no legs?
A: still no eye deer.

 /// 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    ///


--- NEW FILE 7.2.069 ---
To: vim-dev at vim.org
Subject: Patch 7.2.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.2.069 (after 7.2.060)
Problem:    Compiler warning for storing size_t in int.
Solution:   Add type cast.
Files:      src/spell.c


*** ../vim-7.2.068/src/spell.c	Sun Nov 30 21:11:54 2008
--- src/spell.c	Tue Dec  9 22:19:04 2008
***************
*** 1765,1771 ****
  	    /* Second part matches at start of following compound word, now
  	     * check if first part matches at end of previous word. */
  	    p = ((char_u **)gap->ga_data)[i];
! 	    len = STRLEN(p);
  	    if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
  		return TRUE;
  	}
--- 1765,1771 ----
  	    /* Second part matches at start of following compound word, now
  	     * check if first part matches at end of previous word. */
  	    p = ((char_u **)gap->ga_data)[i];
! 	    len = (int)STRLEN(p);
  	    if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
  		return TRUE;
  	}
*** ../vim-7.2.068/src/version.c	Tue Dec  9 12:12:31 2008
--- src/version.c	Tue Dec  9 22:21:15 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     69,
  /**/

-- 
The war between Emacs and Vi is over.  Vi has won with 3 to 1.
			http://www.ssc.com/lg/issue30/raymond.html

 /// 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    ///


--- NEW FILE 7.2.070 ---
To: vim-dev at vim.org
Subject: Patch 7.2.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.2.070
Problem:    Crash when a function returns a:000. (Matt Wozkiski)
Solution:   Don't put the function struct on the stack, allocate it.  Free it
	    only when nothing in it is used.
Files:	    src/eval.c


*** ../vim-7.2.069/src/eval.c	Tue Dec  9 10:56:50 2008
--- src/eval.c	Wed Dec 17 21:32:26 2008
***************
*** 32,37 ****
--- 32,40 ----
  
  #define DICT_MAXNEST 100	/* maximum nesting of lists and dicts */
  
+ #define DO_NOT_FREE_CNT 99999	/* refcount for dict or list that should not
+ 				   be freed. */
+ 
  /*
   * In a hashtab item "hi_key" points to "di_key" in a dictitem.
   * This avoids adding a pointer to the hashtab item.
***************
*** 789,794 ****
--- 792,799 ----
  static void func_unref __ARGS((char_u *name));
  static void func_ref __ARGS((char_u *name));
  static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
+ static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ;
+ static void free_funccal __ARGS((funccall_T *fc, int free_val));
  static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
  static win_T *find_win_by_nr __ARGS((typval_T *vp, tabpage_T *tp));
  static void getwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
***************
*** 923,928 ****
--- 928,937 ----
  /* pointer to funccal for currently active function */
  funccall_T *current_funccal = NULL;
  
+ /* pointer to list of previously used funccal, still around because some
+  * item in it is still being used. */
+ funccall_T *previous_funccal = NULL;
+ 
  /*
   * Return TRUE when a function was ended by a ":return" command.
   */
***************
*** 6490,6496 ****
      buf_T	*buf;
      win_T	*wp;
      int		i;
!     funccall_T	*fc;
      int		did_free = FALSE;
  #ifdef FEAT_WINDOWS
      tabpage_T	*tp;
--- 6499,6505 ----
      buf_T	*buf;
      win_T	*wp;
      int		i;
!     funccall_T	*fc, **pfc;
      int		did_free = FALSE;
  #ifdef FEAT_WINDOWS
      tabpage_T	*tp;
***************
*** 6574,6579 ****
--- 6583,6602 ----
  	else
  	    ll = ll->lv_used_next;
  
+     /* check if any funccal can be freed now */
+     for (pfc = &previous_funccal; *pfc != NULL; )
+     {
+ 	if (can_free_funccal(*pfc, copyID))
+ 	{
+ 	    fc = *pfc;
+ 	    *pfc = fc->caller;
+ 	    free_funccal(fc, TRUE);
+ 	    did_free = TRUE;
+ 	}
+ 	else
+ 	    pfc = &(*pfc)->caller;
+     }
+ 
      return did_free;
  }
  
***************
*** 18962,18968 ****
      dictitem_T	*dict_var;
  {
      hash_init(&dict->dv_hashtab);
!     dict->dv_refcount = 99999;
      dict_var->di_tv.vval.v_dict = dict;
      dict_var->di_tv.v_type = VAR_DICT;
      dict_var->di_tv.v_lock = VAR_FIXED;
--- 18985,18991 ----
      dictitem_T	*dict_var;
  {
      hash_init(&dict->dv_hashtab);
!     dict->dv_refcount = DO_NOT_FREE_CNT;
      dict_var->di_tv.vval.v_dict = dict;
      dict_var->di_tv.v_type = VAR_DICT;
      dict_var->di_tv.v_lock = VAR_FIXED;
***************
*** 19299,19304 ****
--- 19322,19329 ----
   * Copy the values from typval_T "from" to typval_T "to".
   * When needed allocates string or increases reference count.
   * Does not make a copy of a list or dict but copies the reference!
+  * It is OK for "from" and "to" to point to the same item.  This is used to
+  * make a copy later.
   */
      static void
  copy_tv(from, to)
***************
*** 21111,21117 ****
      char_u	*save_sourcing_name;
      linenr_T	save_sourcing_lnum;
      scid_T	save_current_SID;
!     funccall_T	fc;
      int		save_did_emsg;
      static int	depth = 0;
      dictitem_T	*v;
--- 21136,21142 ----
      char_u	*save_sourcing_name;
      linenr_T	save_sourcing_lnum;
      scid_T	save_current_SID;
!     funccall_T	*fc;
      int		save_did_emsg;
      static int	depth = 0;
      dictitem_T	*v;
***************
*** 21137,21172 ****
  
      line_breakcheck();		/* check for CTRL-C hit */
  
!     fc.caller = current_funccal;
!     current_funccal = &fc;
!     fc.func = fp;
!     fc.rettv = rettv;
      rettv->vval.v_number = 0;
!     fc.linenr = 0;
!     fc.returned = FALSE;
!     fc.level = ex_nesting_level;
      /* Check if this function has a breakpoint. */
!     fc.breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0);
!     fc.dbg_tick = debug_tick;
  
      /*
!      * Note about using fc.fixvar[]: This is an array of FIXVAR_CNT variables
       * with names up to VAR_SHORT_LEN long.  This avoids having to alloc/free
       * each argument variable and saves a lot of time.
       */
      /*
       * Init l: variables.
       */
!     init_var_dict(&fc.l_vars, &fc.l_vars_var);
      if (selfdict != NULL)
      {
  	/* Set l:self to "selfdict".  Use "name" to avoid a warning from
  	 * some compiler that checks the destination size. */
! 	v = &fc.fixvar[fixvar_idx++].var;
  	name = v->di_key;
  	STRCPY(name, "self");
  	v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
! 	hash_add(&fc.l_vars.dv_hashtab, DI2HIKEY(v));
  	v->di_tv.v_type = VAR_DICT;
  	v->di_tv.v_lock = 0;
  	v->di_tv.vval.v_dict = selfdict;
--- 21162,21198 ----
  
      line_breakcheck();		/* check for CTRL-C hit */
  
!     fc = (funccall_T *)alloc(sizeof(funccall_T));
!     fc->caller = current_funccal;
!     current_funccal = fc;
!     fc->func = fp;
!     fc->rettv = rettv;
      rettv->vval.v_number = 0;
!     fc->linenr = 0;
!     fc->returned = FALSE;
!     fc->level = ex_nesting_level;
      /* Check if this function has a breakpoint. */
!     fc->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0);
!     fc->dbg_tick = debug_tick;
  
      /*
!      * Note about using fc->fixvar[]: This is an array of FIXVAR_CNT variables
       * with names up to VAR_SHORT_LEN long.  This avoids having to alloc/free
       * each argument variable and saves a lot of time.
       */
      /*
       * Init l: variables.
       */
!     init_var_dict(&fc->l_vars, &fc->l_vars_var);
      if (selfdict != NULL)
      {
  	/* Set l:self to "selfdict".  Use "name" to avoid a warning from
  	 * some compiler that checks the destination size. */
! 	v = &fc->fixvar[fixvar_idx++].var;
  	name = v->di_key;
  	STRCPY(name, "self");
  	v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
! 	hash_add(&fc->l_vars.dv_hashtab, DI2HIKEY(v));
  	v->di_tv.v_type = VAR_DICT;
  	v->di_tv.v_lock = 0;
  	v->di_tv.vval.v_dict = selfdict;
***************
*** 21178,21208 ****
       * Set a:0 to "argcount".
       * Set a:000 to a list with room for the "..." arguments.
       */
!     init_var_dict(&fc.l_avars, &fc.l_avars_var);
!     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
  				(varnumber_T)(argcount - fp->uf_args.ga_len));
      /* Use "name" to avoid a warning from some compiler that checks the
       * destination size. */
!     v = &fc.fixvar[fixvar_idx++].var;
      name = v->di_key;
      STRCPY(name, "000");
      v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
!     hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_LIST;
      v->di_tv.v_lock = VAR_FIXED;
!     v->di_tv.vval.v_list = &fc.l_varlist;
!     vim_memset(&fc.l_varlist, 0, sizeof(list_T));
!     fc.l_varlist.lv_refcount = 99999;
!     fc.l_varlist.lv_lock = VAR_FIXED;
  
      /*
       * Set a:firstline to "firstline" and a:lastline to "lastline".
       * Set a:name to named arguments.
       * Set a:N to the "..." arguments.
       */
!     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "firstline",
  						      (varnumber_T)firstline);
!     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "lastline",
  						       (varnumber_T)lastline);
      for (i = 0; i < argcount; ++i)
      {
--- 21204,21234 ----
       * Set a:0 to "argcount".
       * Set a:000 to a list with room for the "..." arguments.
       */
!     init_var_dict(&fc->l_avars, &fc->l_avars_var);
!     add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
  				(varnumber_T)(argcount - fp->uf_args.ga_len));
      /* Use "name" to avoid a warning from some compiler that checks the
       * destination size. */
!     v = &fc->fixvar[fixvar_idx++].var;
      name = v->di_key;
      STRCPY(name, "000");
      v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
!     hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_LIST;
      v->di_tv.v_lock = VAR_FIXED;
!     v->di_tv.vval.v_list = &fc->l_varlist;
!     vim_memset(&fc->l_varlist, 0, sizeof(list_T));
!     fc->l_varlist.lv_refcount = DO_NOT_FREE_CNT;
!     fc->l_varlist.lv_lock = VAR_FIXED;
  
      /*
       * Set a:firstline to "firstline" and a:lastline to "lastline".
       * Set a:name to named arguments.
       * Set a:N to the "..." arguments.
       */
!     add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "firstline",
  						      (varnumber_T)firstline);
!     add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "lastline",
  						       (varnumber_T)lastline);
      for (i = 0; i < argcount; ++i)
      {
***************
*** 21218,21224 ****
  	}
  	if (fixvar_idx < FIXVAR_CNT && STRLEN(name) <= VAR_SHORT_LEN)
  	{
! 	    v = &fc.fixvar[fixvar_idx++].var;
  	    v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
  	}
  	else
--- 21244,21250 ----
  	}
  	if (fixvar_idx < FIXVAR_CNT && STRLEN(name) <= VAR_SHORT_LEN)
  	{
! 	    v = &fc->fixvar[fixvar_idx++].var;
  	    v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
  	}
  	else
***************
*** 21230,21236 ****
  	    v->di_flags = DI_FLAGS_RO;
  	}
  	STRCPY(v->di_key, name);
! 	hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
  
  	/* Note: the values are copied directly to avoid alloc/free.
  	 * "argvars" must have VAR_FIXED for v_lock. */
--- 21256,21262 ----
  	    v->di_flags = DI_FLAGS_RO;
  	}
  	STRCPY(v->di_key, name);
! 	hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
  
  	/* Note: the values are copied directly to avoid alloc/free.
  	 * "argvars" must have VAR_FIXED for v_lock. */
***************
*** 21239,21247 ****
  
  	if (ai >= 0 && ai < MAX_FUNC_ARGS)
  	{
! 	    list_append(&fc.l_varlist, &fc.l_listitems[ai]);
! 	    fc.l_listitems[ai].li_tv = argvars[i];
! 	    fc.l_listitems[ai].li_tv.v_lock = VAR_FIXED;
  	}
      }
  
--- 21265,21273 ----
  
  	if (ai >= 0 && ai < MAX_FUNC_ARGS)
  	{
! 	    list_append(&fc->l_varlist, &fc->l_listitems[ai]);
! 	    fc->l_listitems[ai].li_tv = argvars[i];
! 	    fc->l_listitems[ai].li_tv.v_lock = VAR_FIXED;
  	}
      }
  
***************
*** 21306,21312 ****
  	if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
  	    func_do_profile(fp);
  	if (fp->uf_profiling
! 		       || (fc.caller != NULL && fc.caller->func->uf_profiling))
  	{
  	    ++fp->uf_tm_count;
  	    profile_start(&call_start);
--- 21332,21338 ----
  	if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
  	    func_do_profile(fp);
  	if (fp->uf_profiling
! 		    || (fc->caller != NULL && fc->caller->func->uf_profiling))
  	{
  	    ++fp->uf_tm_count;
  	    profile_start(&call_start);
***************
*** 21322,21328 ****
      did_emsg = FALSE;
  
      /* call do_cmdline() to execute the lines */
!     do_cmdline(NULL, get_func_line, (void *)&fc,
  				     DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
  
      --RedrawingDisabled;
--- 21348,21354 ----
      did_emsg = FALSE;
  
      /* call do_cmdline() to execute the lines */
!     do_cmdline(NULL, get_func_line, (void *)fc,
  				     DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
  
      --RedrawingDisabled;
***************
*** 21337,21352 ****
  
  #ifdef FEAT_PROFILE
      if (do_profiling == PROF_YES && (fp->uf_profiling
! 		    || (fc.caller != NULL && fc.caller->func->uf_profiling)))
      {
  	profile_end(&call_start);
  	profile_sub_wait(&wait_start, &call_start);
  	profile_add(&fp->uf_tm_total, &call_start);
  	profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
! 	if (fc.caller != NULL && fc.caller->func->uf_profiling)
  	{
! 	    profile_add(&fc.caller->func->uf_tm_children, &call_start);
! 	    profile_add(&fc.caller->func->uf_tml_children, &call_start);
  	}
      }
  #endif
--- 21363,21378 ----
  
  #ifdef FEAT_PROFILE
      if (do_profiling == PROF_YES && (fp->uf_profiling
! 		    || (fc->caller != NULL && fc->caller->func->uf_profiling)))
      {
  	profile_end(&call_start);
  	profile_sub_wait(&wait_start, &call_start);
  	profile_add(&fp->uf_tm_total, &call_start);
  	profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
! 	if (fc->caller != NULL && fc->caller->func->uf_profiling)
  	{
! 	    profile_add(&fc->caller->func->uf_tm_children, &call_start);
! 	    profile_add(&fc->caller->func->uf_tml_children, &call_start);
  	}
      }
  #endif
***************
*** 21359,21367 ****
  
  	if (aborting())
  	    smsg((char_u *)_("%s aborted"), sourcing_name);
! 	else if (fc.rettv->v_type == VAR_NUMBER)
  	    smsg((char_u *)_("%s returning #%ld"), sourcing_name,
! 					       (long)fc.rettv->vval.v_number);
  	else
  	{
  	    char_u	buf[MSG_BUF_LEN];
--- 21385,21393 ----
  
  	if (aborting())
  	    smsg((char_u *)_("%s aborted"), sourcing_name);
! 	else if (fc->rettv->v_type == VAR_NUMBER)
  	    smsg((char_u *)_("%s returning #%ld"), sourcing_name,
! 					       (long)fc->rettv->vval.v_number);
  	else
  	{
  	    char_u	buf[MSG_BUF_LEN];
***************
*** 21372,21378 ****
  	    /* 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. */
! 	    s = tv2string(fc.rettv, &tofree, numbuf2, 0);
  	    if (s != NULL)
  	    {
  		trunc_string(s, buf, MSG_BUF_CLEN);
--- 21398,21404 ----
  	    /* 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. */
! 	    s = tv2string(fc->rettv, &tofree, numbuf2, 0);
  	    if (s != NULL)
  	    {
  		trunc_string(s, buf, MSG_BUF_CLEN);
***************
*** 21408,21421 ****
      }
  
      did_emsg |= save_did_emsg;
!     current_funccal = fc.caller;
  
!     /* The a: variables typevals were not allocated, only free the allocated
!      * variables. */
!     vars_clear_ext(&fc.l_avars.dv_hashtab, FALSE);
  
!     vars_clear(&fc.l_vars.dv_hashtab);		/* free all l: variables */
!     --depth;
  }
  
  /*
--- 21434,21517 ----
      }
  
      did_emsg |= save_did_emsg;
!     current_funccal = fc->caller;
!     --depth;
  
!     /* if the a:000 list and the a: dict are not referenced we can free the
!      * funccall_T and what's in it. */
!     if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
! 	    && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
! 	    && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
!     {
! 	free_funccal(fc, FALSE);
!     }
!     else
!     {
! 	hashitem_T	*hi;
! 	listitem_T	*li;
! 	int		todo;
  
! 	/* "fc" is still in use.  This can happen when returning "a:000" or
! 	 * assigning "l:" to a global variable.
! 	 * Link "fc" in the list for garbage collection later. */
! 	fc->caller = previous_funccal;
! 	previous_funccal = fc;
! 
! 	/* Make a copy of the a: variables, since we didn't do that above. */
! 	todo = (int)fc->l_avars.dv_hashtab.ht_used;
! 	for (hi = fc->l_avars.dv_hashtab.ht_array; todo > 0; ++hi)
! 	{
! 	    if (!HASHITEM_EMPTY(hi))
! 	    {
! 		--todo;
! 		v = HI2DI(hi);
! 		copy_tv(&v->di_tv, &v->di_tv);
! 	    }
! 	}
! 
! 	/* Make a copy of the a:000 items, since we didn't do that above. */
! 	for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next)
! 	    copy_tv(&li->li_tv, &li->li_tv);
!     }
! }
! 
! /*
!  * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywyere.
!  */
!     static int
! can_free_funccal(fc, copyID)
!     funccall_T	*fc;
!     int		copyID;
! {
!     return (fc->l_varlist.lv_copyID != copyID
! 	    && fc->l_vars.dv_copyID != copyID
! 	    && fc->l_avars.dv_copyID != copyID);
! }
! 
! /*
!  * Free "fc" and what it contains.
!  */
!    static void
! free_funccal(fc, free_val)
!     funccall_T	*fc;
!     int		free_val;  /* a: vars were allocated */
! {
!     listitem_T	*li;
! 
!     /* The a: variables typevals may not have been allocated, only free the
!      * allocated variables. */
!     vars_clear_ext(&fc->l_avars.dv_hashtab, free_val);
! 
!     /* free all l: variables */
!     vars_clear(&fc->l_vars.dv_hashtab);
! 
!     /* Free the a:000 variables if they were allocated. */
!     if (free_val)
! 	for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next)
! 	    clear_tv(&li->li_tv);
! 
!     vim_free(fc);
  }
  
  /*
*** ../vim-7.2.069/src/version.c	Tue Dec  9 22:34:02 2008
--- src/version.c	Sun Dec 21 12:47:07 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     70,
  /**/

-- 
Close your shells, or I'll kill -9 you
Tomorrow I'll quota you
Remember the disks'll always be full
And then while I'm away
I'll write ~ everyday
And I'll send-pr all my buggings to you.
    [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]

 /// Bram Moolenaar -- Bram 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    ///


--- NEW FILE 7.2.071 ---
To: vim-dev at vim.org
Subject: Patch 7.2.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.2.071 (extra)
Problem:    Win32: Handling netbeans events while Vim is busy updating the
	    screen may cause a crash.
Solution:   Like with GTK, only handle netbeans messages in the main loop.
	    (Xavier de Gaye)
Files:	    src/gui_w48.c, src/netbeans.c


*** ../vim-7.2.070/src/gui_w48.c	Thu Nov 20 17:09:09 2008
--- src/gui_w48.c	Thu Dec 11 23:47:18 2008
***************
*** 1937,1942 ****
--- 1937,1947 ----
  	    s_need_activate = FALSE;
  	}
  
+ #ifdef FEAT_NETBEANS_INTG
+ 	/* Process the queued netbeans messages. */
+ 	netbeans_parse_messages();
+ #endif
+ 
  	/*
  	 * Don't use gui_mch_update() because then we will spin-lock until a
  	 * char arrives, instead we use GetMessage() to hang until an
*** ../vim-7.2.070/src/netbeans.c	Fri Nov 28 21:26:50 2008
--- src/netbeans.c	Sun Nov 30 12:07:00 2008
***************
*** 769,779 ****
  	return; /* don't try to parse it */
      }
  
! #ifdef FEAT_GUI_GTK
      if (gtk_main_level() > 0)
  	gtk_main_quit();
  #else
!     /* Parse the messages, but avoid recursion. */
      if (level == 1)
  	netbeans_parse_messages();
  
--- 769,782 ----
  	return; /* don't try to parse it */
      }
  
! #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)
!     /* Let the main loop handle messages. */
! # ifdef FEAT_GUI_GTK
      if (gtk_main_level() > 0)
  	gtk_main_quit();
+ # endif
  #else
!     /* Parse the messages now, but avoid recursion. */
      if (level == 1)
  	netbeans_parse_messages();
  
*** ../vim-7.2.070/src/version.c	Sun Dec 21 13:02:47 2008
--- src/version.c	Wed Dec 24 12:18:59 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     71,
  /**/

-- 
No children may attend school with their breath smelling of "wild onions."
		[real standing law in West Virginia, United States of America]

 /// 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    ///


--- NEW FILE 7.2.072 ---
To: vim-dev at vim.org
Subject: Patch 7.2.072 (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.2.072 (extra)
Problem:    Compiler warning in Sniff code.
Solution:   Use return value of pipe(). (Dominique Pelle)
Files:	    src/if_sniff.c

NOTE: Patch was adjusted to avoid problems with CVS interference.

*** ../vim-7.2.071/src/if_sniff.c	Sat Nov 15 14:11:10 2008
--- src/if_sniff.c	Sat Dec  6 14:01:57 2008
***************
*** 716,723 ****
  #else		/* UNIX Version of the Code */
      int ToSniffEmacs[2], FromSniffEmacs[2];
  
!     pipe(ToSniffEmacs);
!     pipe(FromSniffEmacs);
  
      /* fork */
      if ((sniffemacs_pid=fork()) == 0)
--- 714,723 ----
  #else		/* UNIX Version of the Code */
      int ToSniffEmacs[2], FromSniffEmacs[2];
  
!     if (pipe(ToSniffEmacs) != 0)
! 	return 1;
!     if (pipe(FromSniffEmacs) != 0)
! 	return 1;
  
      /* fork */
      if ((sniffemacs_pid=fork()) == 0)
*** ../vim-7.2.071/src/version.c	Wed Dec 24 12:20:10 2008
--- src/version.c	Wed Dec 24 12:42:13 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     72,
  /**/

-- 
SIGIRO -- irony detected (iron core dumped)

 /// 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    ///


--- NEW FILE 7.2.073 ---
To: vim-dev at vim.org
Subject: Patch 7.2.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.2.073
Problem:    ":set <xHome>" has the same output as ":set <Home>". (Matt
	    Wozniski)
Solution:   Don't translate "x" keys to its alternative for ":set".
Files:	    src/misc2.c, src/option.c, src/proto/misc2.pro


*** ../vim-7.2.072/src/misc2.c	Wed Nov 12 13:07:48 2008
--- src/misc2.c	Sun Dec 14 12:28:47 2008
***************
*** 2561,2567 ****
      int		key;
      int		dlen = 0;
  
!     key = find_special_key(srcp, &modifiers, keycode);
      if (key == 0)
  	return 0;
  
--- 2561,2567 ----
      int		key;
      int		dlen = 0;
  
!     key = find_special_key(srcp, &modifiers, keycode, FALSE);
      if (key == 0)
  	return 0;
  
***************
*** 2597,2606 ****
   * returns 0 if there is no match.
   */
      int
! find_special_key(srcp, modp, keycode)
      char_u	**srcp;
      int		*modp;
!     int		keycode; /* prefer key code, e.g. K_DEL instead of DEL */
  {
      char_u	*last_dash;
      char_u	*end_of_name;
--- 2597,2607 ----
   * returns 0 if there is no match.
   */
      int
! find_special_key(srcp, modp, keycode, keep_x_key)
      char_u	**srcp;
      int		*modp;
!     int		keycode;     /* prefer key code, e.g. K_DEL instead of DEL */
!     int		keep_x_key;  /* don't translate xHome to Home key */
  {
      char_u	*last_dash;
      char_u	*end_of_name;
***************
*** 2668,2674 ****
  	    else
  	    {
  		key = get_special_key_code(last_dash + 1);
! 		key = handle_x_keys(key);
  	    }
  
  	    /*
--- 2669,2676 ----
  	    else
  	    {
  		key = get_special_key_code(last_dash + 1);
! 		if (!keep_x_key)
! 		    key = handle_x_keys(key);
  	    }
  
  	    /*
*** ../vim-7.2.072/src/option.c	Fri Nov 28 21:26:50 2008
--- src/option.c	Sun Dec 14 12:28:56 2008
***************
*** 8328,8334 ****
      {
  	--arg;			    /* put arg at the '<' */
  	modifiers = 0;
! 	key = find_special_key(&arg, &modifiers, TRUE);
  	if (modifiers)		    /* can't handle modifiers here */
  	    key = 0;
      }
--- 8328,8334 ----
      {
  	--arg;			    /* put arg at the '<' */
  	modifiers = 0;
! 	key = find_special_key(&arg, &modifiers, TRUE, TRUE);
  	if (modifiers)		    /* can't handle modifiers here */
  	    key = 0;
      }
*** ../vim-7.2.072/src/proto/misc2.pro	Thu Jul 24 20:29:37 2008
--- src/proto/misc2.pro	Sun Dec 14 12:29:05 2008
***************
*** 59,65 ****
  int handle_x_keys __ARGS((int key));
  char_u *get_special_key_name __ARGS((int c, int modifiers));
  int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
! int find_special_key __ARGS((char_u **srcp, int *modp, int keycode));
  int extract_modifiers __ARGS((int key, int *modp));
  int find_special_key_in_table __ARGS((int c));
  int get_special_key_code __ARGS((char_u *name));
--- 59,65 ----
  int handle_x_keys __ARGS((int key));
  char_u *get_special_key_name __ARGS((int c, int modifiers));
  int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
! int find_special_key __ARGS((char_u **srcp, int *modp, int keycode, int keep_x_key));
  int extract_modifiers __ARGS((int key, int *modp));
  int find_special_key_in_table __ARGS((int c));
  int get_special_key_code __ARGS((char_u *name));
*** ../vim-7.2.072/src/version.c	Wed Dec 24 12:43:15 2008
--- src/version.c	Wed Dec 24 12:51:26 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     73,
  /**/


-- 
ARTHUR: If you do not open these doors, we will take this castle by force ...
   [A bucket of slops land on ARTHUR.  He tries to retain his dignity.]
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.074 ---
To: vim-dev at vim.org
Subject: Patch 7.2.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.2.074 (extra, after 7.2.073)
Problem:    ":set <xHome>" has the same output as ":set <Home>". (Matt
	    Wozniski)
Solution:   Don't translate "x" keys to its alternative for ":set".
Files:	    src/gui_mac.c


*** ../vim-7.2.073/src/gui_mac.c	Sat Aug  9 19:37:28 2008
--- src/gui_mac.c	Sun Dec 14 12:28:26 2008
***************
*** 4966,4972 ****
  	char_u	    *p_actext;
  
  	p_actext = menu->actext;
! 	key = find_special_key(&p_actext, &modifiers, /*keycode=*/0);
  	if (*p_actext != 0)
  	    key = 0; /* error: trailing text */
  	/* find_special_key() returns a keycode with as many of the
--- 4966,4972 ----
  	char_u	    *p_actext;
  
  	p_actext = menu->actext;
! 	key = find_special_key(&p_actext, &modifiers, FALSE, FALSE);
  	if (*p_actext != 0)
  	    key = 0; /* error: trailing text */
  	/* find_special_key() returns a keycode with as many of the
*** ../vim-7.2.073/src/version.c	Wed Dec 24 12:53:33 2008
--- src/version.c	Wed Dec 24 12:55:42 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     74,
  /**/

-- 
   Another bucket of what can only be described as human ordure hits ARTHUR.
ARTHUR: ... Right!  (to the KNIGHTS) That settles it!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.075 ---
To: vim-dev at vim.org
Subject: Patch 7.2.075
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.2.075 (after 7.2.058)
Problem:    Explanation about making a diff for extra_patches is unclear.
Solution:   Adjust comment.
Files:	    src/version.c


*** ../vim-7.2.074/src/version.c	Wed Dec 24 13:04:41 2008
--- src/version.c	Wed Dec 24 13:07:47 2008
***************
*** 833,839 ****
   * Keep it short, e.g.,: "relative numbers", "persistent undo".
   * Also add a comment marker to separate the lines.
   * See the official Vim patches for the diff format: It must use a context of
!  * one line only.  Use "diff -C2".
   */
  static char *(extra_patches[]) =
  {   /* Add your patch description below this line */
--- 835,841 ----
   * Keep it short, e.g.,: "relative numbers", "persistent undo".
   * Also add a comment marker to separate the lines.
   * See the official Vim patches for the diff format: It must use a context of
!  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
   */
  static char *(extra_patches[]) =
  {   /* Add your patch description below this line */
*** ../vim-7.2.074/src/version.c	Wed Dec 24 13:04:41 2008
--- src/version.c	Wed Dec 24 13:07:47 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     75,
  /**/

-- 
BEDEVERE: Stand by for attack!!
   [CUT TO enormous army forming up.  Trebuchets, rows of PIKEMEN, siege
   towers, pennants flying, shouts of "Stand by for attack!"  Traditional
   army build-up shots.  The shouts echo across the ranks of the army.
   We see various groups reacting, and stirring themselves in readiness.]
ARTHUR:   Who are they?
BEDEVERE: Oh, just some friends!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.076 ---
To: vim-dev at vim.org
Subject: Patch 7.2.076
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.2.076
Problem:    rename(from, to) deletes the file if "from" and "to" are not equal
	    but still refer to the same file.  E.g., on a FAT32 filesystem
	    under Unix.
Solution:   Go through another file name.
Files:	    src/fileio.c


*** ../vim-7.2.075/src/fileio.c	Fri Nov 28 21:26:50 2008
--- src/fileio.c	Tue Dec 30 16:04:44 2008
***************
*** 6119,6124 ****
--- 6119,6165 ----
      if (mch_stat((char *)from, &st) < 0)
  	return -1;
  
+ #ifdef UNIX
+     {
+ 	struct stat	st_to;
+ 	char		tempname[MAXPATHL + 1];
+ 
+ 	/* It's possible for the source and destination to be the same file.
+ 	 * This happens when "from" and "to" differ in case and are on a FAT32
+ 	 * filesystem.  In that case go through a temp file name. */
+ 	if (mch_stat((char *)to, &st_to) >= 0
+ 		&& st.st_dev == st_to.st_dev
+ 		&& st.st_ino == st_to.st_ino)
+ 	{
+ 	    /* Find a name that doesn't exist and is in the same directory.
+ 	     * Move "from" to "tempname" and then to "to". */
+ 	    if (STRLEN(from) >= MAXPATHL - 5)
+ 		return -1;
+ 	    STRCPY(tempname, from);
+ 	    for (n = 123; n < 99999; ++n)
+ 	    {
+ 		sprintf(gettail(tempname), "%d", n);
+ 		if (mch_stat(tempname, &st_to) < 0)
+ 		{
+ 		    if (mch_rename((char *)from, tempname) == 0)
+ 		    {
+ 			if (mch_rename(tempname, (char *)to) == 0)
+ 			    return 0;
+ 			/* Strange, the second step failed.  Try moving the
+ 			 * file back and return failure. */
+ 			mch_rename(tempname, (char *)from);
+ 			return -1;
+ 		    }
+ 		    /* If it fails for one temp name it will most likely fail
+ 		     * for any temp name, give up. */
+ 		    return -1;
+ 		}
+ 	    }
+ 	    return -1;
+ 	}
+     }
+ #endif
+ 
      /*
       * Delete the "to" file, this is required on some systems to make the
       * mch_rename() work, on other systems it makes sure that we don't have
*** ../vim-7.2.075/src/version.c	Wed Dec 24 14:24:41 2008
--- src/version.c	Tue Dec 30 16:09:51 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     76,
  /**/

-- 
FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing.

 /// 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    ///


--- NEW FILE 7.2.077 ---
To: vim-dev at vim.org
Subject: Patch 7.2.077
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.2.077 (after 7.2.076)
Problem:    rename(from, to) doesn't work if "from" and "to" differ only in
	    case on a system that ignores case in file names.
Solution:   Go through another file name.
Files:	    src/fileio.c


*** ../vim-7.2.076/src/fileio.c	Tue Dec 30 16:15:16 2008
--- src/fileio.c	Wed Dec 31 14:59:59 2008
***************
*** 6106,6117 ****
  #ifdef HAVE_ACL
      vim_acl_T	acl;		/* ACL from original file */
  #endif
  
      /*
!      * When the names are identical, there is nothing to do.
       */
      if (fnamecmp(from, to) == 0)
! 	return 0;
  
      /*
       * Fail if the "from" file doesn't exist.  Avoids that "to" is deleted.
--- 6106,6129 ----
  #ifdef HAVE_ACL
      vim_acl_T	acl;		/* ACL from original file */
  #endif
+ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
+     int		use_tmp_file = FALSE;
+ #endif
  
      /*
!      * When the names are identical, there is nothing to do.  When they refer
!      * to the same file (ignoring case and slash/backslash differences) but
!      * the file name differs we need to go through a temp file.
       */
      if (fnamecmp(from, to) == 0)
!     {
! #ifdef CASE_INSENSITIVE_FILENAME
! 	if (STRCMP(gettail(from), gettail(to)) != 0)
! 	    use_tmp_file = TRUE;
! 	else
! #endif
! 	    return 0;
!     }
  
      /*
       * Fail if the "from" file doesn't exist.  Avoids that "to" is deleted.
***************
*** 6122,6128 ****
  #ifdef UNIX
      {
  	struct stat	st_to;
- 	char		tempname[MAXPATHL + 1];
  
  	/* It's possible for the source and destination to be the same file.
  	 * This happens when "from" and "to" differ in case and are on a FAT32
--- 6134,6139 ----
***************
*** 6130,6162 ****
  	if (mch_stat((char *)to, &st_to) >= 0
  		&& st.st_dev == st_to.st_dev
  		&& st.st_ino == st_to.st_ino)
  	{
! 	    /* Find a name that doesn't exist and is in the same directory.
! 	     * Move "from" to "tempname" and then to "to". */
! 	    if (STRLEN(from) >= MAXPATHL - 5)
! 		return -1;
! 	    STRCPY(tempname, from);
! 	    for (n = 123; n < 99999; ++n)
  	    {
! 		sprintf(gettail(tempname), "%d", n);
! 		if (mch_stat(tempname, &st_to) < 0)
  		{
! 		    if (mch_rename((char *)from, tempname) == 0)
! 		    {
! 			if (mch_rename(tempname, (char *)to) == 0)
! 			    return 0;
! 			/* Strange, the second step failed.  Try moving the
! 			 * file back and return failure. */
! 			mch_rename(tempname, (char *)from);
! 			return -1;
! 		    }
! 		    /* If it fails for one temp name it will most likely fail
! 		     * for any temp name, give up. */
  		    return -1;
  		}
  	    }
- 	    return -1;
  	}
      }
  #endif
  
--- 6141,6182 ----
  	if (mch_stat((char *)to, &st_to) >= 0
  		&& st.st_dev == st_to.st_dev
  		&& st.st_ino == st_to.st_ino)
+ 	    use_tmp_file = TRUE;
+     }
+ #endif
+ 
+ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
+     if (use_tmp_file)
+     {
+ 	char	tempname[MAXPATHL + 1];
+ 
+ 	/*
+ 	 * Find a name that doesn't exist and is in the same directory.
+ 	 * Rename "from" to "tempname" and then rename "tempname" to "to".
+ 	 */
+ 	if (STRLEN(from) >= MAXPATHL - 5)
+ 	    return -1;
+ 	STRCPY(tempname, from);
+ 	for (n = 123; n < 99999; ++n)
  	{
! 	    sprintf((char *)gettail((char_u *)tempname), "%d", n);
! 	    if (mch_stat(tempname, &st) < 0)
  	    {
! 		if (mch_rename((char *)from, tempname) == 0)
  		{
! 		    if (mch_rename(tempname, (char *)to) == 0)
! 			return 0;
! 		    /* Strange, the second step failed.  Try moving the
! 		     * file back and return failure. */
! 		    mch_rename(tempname, (char *)from);
  		    return -1;
  		}
+ 		/* If it fails for one temp name it will most likely fail
+ 		 * for any temp name, give up. */
+ 		return -1;
  	    }
  	}
+ 	return -1;
      }
  #endif
  
*** ../vim-7.2.076/src/version.c	Tue Dec 30 16:15:16 2008
--- src/version.c	Wed Dec 31 16:19:29 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     77,
  /**/

-- 
We apologise again for the fault in the subtitles.  Those responsible for
sacking the people who have just been sacked have been sacked.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.078 ---
To: vim-dev at vim.org
Subject: Patch 7.2.078
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.2.078
Problem:    When deleting a fold that is specified with markers the cursor
	    position may be wrong.  Folds may not be displayed properly after
	    a delete.  Wrong fold may be deleted.
Solution:   Fix the problems. (mostly by Lech Lorens)
Files:	    src/fold.c


*** ../vim-7.2.077/src/fold.c	Fri Nov 28 21:26:50 2008
--- src/fold.c	Tue Jan  6 14:53:26 2009
***************
*** 740,746 ****
      garray_T	*found_ga;
      fold_T	*found_fp = NULL;
      linenr_T	found_off = 0;
!     int		use_level = FALSE;
      int		maybe_small = FALSE;
      int		level = 0;
      linenr_T	lnum = start;
--- 740,746 ----
      garray_T	*found_ga;
      fold_T	*found_fp = NULL;
      linenr_T	found_off = 0;
!     int		use_level;
      int		maybe_small = FALSE;
      int		level = 0;
      linenr_T	lnum = start;
***************
*** 757,762 ****
--- 757,763 ----
  	gap = &curwin->w_folds;
  	found_ga = NULL;
  	lnum_off = 0;
+ 	use_level = FALSE;
  	for (;;)
  	{
  	    if (!foldFind(gap, lnum - lnum_off, &fp))
***************
*** 783,802 ****
  	else
  	{
  	    lnum = found_fp->fd_top + found_fp->fd_len + found_off;
- 	    did_one = TRUE;
  
  	    if (foldmethodIsManual(curwin))
  		deleteFoldEntry(found_ga,
  		    (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
  	    else
  	    {
! 		if (found_fp->fd_top + found_off < first_lnum)
! 		    first_lnum = found_fp->fd_top;
! 		if (lnum > last_lnum)
  		    last_lnum = lnum;
! 		parseMarker(curwin);
  		deleteFoldMarkers(found_fp, recursive, found_off);
  	    }
  
  	    /* redraw window */
  	    changed_window_setting();
--- 784,804 ----
  	else
  	{
  	    lnum = found_fp->fd_top + found_fp->fd_len + found_off;
  
  	    if (foldmethodIsManual(curwin))
  		deleteFoldEntry(found_ga,
  		    (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
  	    else
  	    {
! 		if (first_lnum > found_fp->fd_top + found_off)
! 		    first_lnum = found_fp->fd_top + found_off;
! 		if (last_lnum < lnum)
  		    last_lnum = lnum;
! 		if (!did_one)
! 		    parseMarker(curwin);
  		deleteFoldMarkers(found_fp, recursive, found_off);
  	    }
+ 	    did_one = TRUE;
  
  	    /* redraw window */
  	    changed_window_setting();
***************
*** 811,816 ****
--- 813,822 ----
  	    redraw_curbuf_later(INVERTED);
  #endif
      }
+     else
+ 	/* Deleting markers may make cursor column invalid. */
+ 	check_cursor_col();
+ 
      if (last_lnum > 0)
  	changed_lines(first_lnum, (colnr_T)0, last_lnum, 0L);
  }
*** ../vim-7.2.077/src/version.c	Wed Dec 31 16:20:54 2008
--- src/version.c	Tue Jan  6 15:00:36 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     78,
  /**/

-- 
Looking at Perl through Lisp glasses, Perl looks atrocious.

 /// 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    ///


--- NEW FILE 7.2.079 ---
To: vim-dev at vim.org
Subject: Patch 7.2.079
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.2.079
Problem:    "killed" netbeans events are not handled correctly.
Solution:   A "killed" netbeans event is sent when the buffer is deleted or
	    wiped out (in this case, the netbeans annotations in this buffer
	    have been removed).  A user can still remove a sign with the
	    command ":sign unplace" and this does not trigger a "killed"
	    event.  (Xavier de Gaye)
Files:	    runtime/doc/netbeans.txt, src/buffer.c, src/globals.h,
	    src/netbeans.c, src/proto/netbeans.pro


*** ../vim-7.2.078/runtime/doc/netbeans.txt	Sat Aug  9 19:36:49 2008
--- runtime/doc/netbeans.txt	Tue Jan  6 15:23:39 2009
***************
*** 1,4 ****
! *netbeans.txt*  For Vim version 7.2.  Last change: 2008 Jun 28
  
  
  		  VIM REFERENCE MANUAL    by Gordon Prieur et al.
--- 1,4 ----
! *netbeans.txt*  For Vim version 7.2.  Last change: 2009 Jan 06
  
  
  		  VIM REFERENCE MANUAL    by Gordon Prieur et al.
***************
*** 722,729 ****
  		of the cursor.
  		New in version 2.1.
  
! killed		A file was closed by the user.  Only for files that have been
! 		assigned a number by the IDE.
  
  newDotAndMark off off
  		Reports the position of the cursor being at "off" bytes into
--- 722,731 ----
  		of the cursor.
  		New in version 2.1.
  
! killed		A file was deleted or wiped out by the user and the buffer
! 		annotations have been removed.  The bufID number for this
! 		buffer has become invalid.  Only for files that have been
! 		assigned a bufID number by the IDE.
  
  newDotAndMark off off
  		Reports the position of the cursor being at "off" bytes into
*** ../vim-7.2.078/src/buffer.c	Wed Dec  3 11:21:20 2008
--- src/buffer.c	Tue Jan  6 15:23:02 2009
***************
*** 437,446 ****
  	return;
  #endif
  
- #ifdef FEAT_NETBEANS_INTG
-     if (usingNetbeans)
- 	netbeans_file_closed(buf);
- #endif
      /* Change directories when the 'acd' option is set. */
      DO_AUTOCHDIR
  
--- 437,442 ----
***************
*** 639,644 ****
--- 635,644 ----
  #ifdef FEAT_SIGNS
      buf_delete_signs(buf);		/* delete any signs */
  #endif
+ #ifdef FEAT_NETBEANS_INTG
+     if (usingNetbeans)
+         netbeans_file_killed(buf);
+ #endif
  #ifdef FEAT_LOCALMAP
      map_clear_int(buf, MAP_ALL_MODES, TRUE, FALSE);  /* clear local mappings */
      map_clear_int(buf, MAP_ALL_MODES, TRUE, TRUE);   /* clear local abbrevs */
***************
*** 815,823 ****
      int		bnr;		/* buffer number */
      char_u	*p;
  
- #ifdef FEAT_NETBEANS_INTG
-     netbeansCloseFile = 1;
- #endif
      if (addr_count == 0)
      {
  	(void)do_buffer(command, DOBUF_CURRENT, FORWARD, 0, forceit);
--- 815,820 ----
***************
*** 912,920 ****
  	}
      }
  
- #ifdef FEAT_NETBEANS_INTG
-     netbeansCloseFile = 0;
- #endif
  
      return errormsg;
  }
--- 909,914 ----
*** ../vim-7.2.078/src/globals.h	Fri Nov 28 21:26:50 2008
--- src/globals.h	Tue Jan  6 15:23:02 2009
***************
*** 1340,1346 ****
  
  #ifdef FEAT_NETBEANS_INTG
  EXTERN char *netbeansArg INIT(= NULL);	/* the -nb[:host:port:passwd] arg */
- EXTERN int netbeansCloseFile INIT(= 0);	/* send killed if != 0 */
  EXTERN int netbeansFireChanges INIT(= 1); /* send buffer changes if != 0 */
  EXTERN int netbeansForcedQuit INIT(= 0);/* don't write modified files */
  EXTERN int netbeansReadFile INIT(= 1);	/* OK to read from disk if != 0 */
--- 1340,1345 ----
*** ../vim-7.2.078/src/netbeans.c	Wed Dec 24 12:20:10 2008
--- src/netbeans.c	Tue Jan  6 15:23:02 2009
***************
*** 2921,2964 ****
  }
  
  /*
!  * Tell netbeans a file was closed.
   */
      void
! netbeans_file_closed(buf_T *bufp)
  {
      int		bufno = nb_getbufno(bufp);
      nbbuf_T	*nbbuf = nb_get_buf(bufno);
      char	buffer[2*MAXPATHL];
  
!     if (!haveConnection || bufno < 0)
  	return;
  
!     if (!netbeansCloseFile)
!     {
! 	nbdebug(("Ignoring file_closed for %s. File was closed from IDE\n",
! 		    bufp->b_ffname));
! 	return;
!     }
! 
!     nbdebug(("netbeans_file_closed:\n"));
!     nbdebug(("    Closing bufno: %d", bufno));
!     if (curbuf != NULL && curbuf != bufp)
!     {
! 	nbdebug(("    Curbuf bufno:  %d\n", nb_getbufno(curbuf)));
!     }
!     else if (curbuf == bufp)
!     {
! 	nbdebug(("    curbuf == bufp\n"));
!     }
! 
!     if (bufno <= 0)
! 	return;
  
      sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
  
      nbdebug(("EVT: %s", buffer));
  
!     nb_send(buffer, "netbeans_file_closed");
  
      if (nbbuf != NULL)
  	nbbuf->bufp = NULL;
--- 2921,2946 ----
  }
  
  /*
!  * Tell netbeans that a file was deleted or wiped out.
   */
      void
! netbeans_file_killed(buf_T *bufp)
  {
      int		bufno = nb_getbufno(bufp);
      nbbuf_T	*nbbuf = nb_get_buf(bufno);
      char	buffer[2*MAXPATHL];
  
!     if (!haveConnection || bufno == -1)
  	return;
  
!     nbdebug(("netbeans_file_killed:\n"));
!     nbdebug(("    Killing bufno: %d", bufno));
  
      sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
  
      nbdebug(("EVT: %s", buffer));
  
!     nb_send(buffer, "netbeans_file_killed");
  
      if (nbbuf != NULL)
  	nbbuf->bufp = NULL;
*** ../vim-7.2.078/src/proto/netbeans.pro	Tue Jun 24 23:25:53 2008
--- src/proto/netbeans.pro	Tue Jan  6 15:23:02 2009
***************
*** 11,17 ****
  void netbeans_frame_moved __ARGS((int new_x, int new_y));
  void netbeans_file_activated __ARGS((buf_T *bufp));
  void netbeans_file_opened __ARGS((buf_T *bufp));
! void netbeans_file_closed __ARGS((buf_T *bufp));
  void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
  void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
  void netbeans_unmodified __ARGS((buf_T *bufp));
--- 11,17 ----
  void netbeans_frame_moved __ARGS((int new_x, int new_y));
  void netbeans_file_activated __ARGS((buf_T *bufp));
  void netbeans_file_opened __ARGS((buf_T *bufp));
! void netbeans_file_killed __ARGS((buf_T *bufp));
  void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
  void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
  void netbeans_unmodified __ARGS((buf_T *bufp));
*** ../vim-7.2.078/src/version.c	Tue Jan  6 15:01:58 2009
--- src/version.c	Tue Jan  6 16:11:11 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     79,
  /**/

-- 
Friends?  I have lots of friends!  In fact, I have every episode ever made.

 /// 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    ///


--- NEW FILE 7.2.080 ---
To: vim-dev at vim.org
Subject: Patch 7.2.080
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.2.080
Problem:    When typing a composing character just after starting completion
	    may access memory before its allocation point. (Dominique Pelle)
Solution:   Don't delete before the completion start column.  Add extra checks
	    for the offset not being negative.
Files:	    src/edit.c


*** ../vim-7.2.079/src/edit.c	Wed Aug  6 18:56:55 2008
--- src/edit.c	Tue Jan 13 12:05:57 2009
***************
*** 147,152 ****
--- 147,153 ----
  static int  ins_compl_bs __ARGS((void));
  static void ins_compl_new_leader __ARGS((void));
  static void ins_compl_addleader __ARGS((int c));
+ static int ins_compl_len __ARGS((void));
  static void ins_compl_restart __ARGS((void));
  static void ins_compl_set_original_text __ARGS((char_u *str));
  static void ins_compl_addfrommatch __ARGS((void));
***************
*** 197,203 ****
  static void mb_replace_pop_ins __ARGS((int cc));
  #endif
  static void replace_flush __ARGS((void));
! static void replace_do_bs __ARGS((void));
  #ifdef FEAT_CINDENT
  static int cindent_on __ARGS((void));
  #endif
--- 198,205 ----
  static void mb_replace_pop_ins __ARGS((int cc));
  #endif
  static void replace_flush __ARGS((void));
! static void replace_do_bs __ARGS((int limit_col));
! static int del_char_after_col __ARGS((int limit_col));
  #ifdef FEAT_CINDENT
  static int cindent_on __ARGS((void));
  #endif
***************
*** 1933,1938 ****
--- 1935,1942 ----
  /*
   * Backspace the cursor until the given column.  Handles REPLACE and VREPLACE
   * modes correctly.  May also be used when not in insert mode at all.
+  * Will attempt not to go before "col" even when there is a composing
+  * character.
   */
      void
  backspace_until_column(col)
***************
*** 1942,1954 ****
      {
  	curwin->w_cursor.col--;
  	if (State & REPLACE_FLAG)
! 	    replace_do_bs();
! 	else
! 	    (void)del_char(FALSE);
      }
  }
  #endif
  
  #if defined(FEAT_INS_EXPAND) || defined(PROTO)
  /*
   * CTRL-X pressed in Insert mode.
--- 1946,1994 ----
      {
  	curwin->w_cursor.col--;
  	if (State & REPLACE_FLAG)
! 	    replace_do_bs(col);
! 	else if (!del_char_after_col(col))
! 	    break;
      }
  }
  #endif
  
+ /*
+  * Like del_char(), but make sure not to go before column "limit_col".
+  * Only matters when there are composing characters.
+  * Return TRUE when something was deleted.
+  */
+    static int
+ del_char_after_col(limit_col)
+     int limit_col;
+ {
+ #ifdef FEAT_MBYTE
+     if (enc_utf8 && limit_col >= 0)
+     {
+ 	int ecol = curwin->w_cursor.col + 1;
+ 
+ 	/* Make sure the cursor is at the start of a character, but
+ 	 * skip forward again when going too far back because of a
+ 	 * composing character. */
+ 	mb_adjust_cursor();
+ 	while (curwin->w_cursor.col < limit_col)
+ 	{
+ 	    int l = utf_ptr2len(ml_get_cursor());
+ 
+ 	    if (l == 0)  /* end of line */
+ 		break;
+ 	    curwin->w_cursor.col += l;
+ 	}
+ 	if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
+ 	    return FALSE;
+ 	del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
+     }
+     else
+ #endif
+ 	(void)del_char(FALSE);
+     return TRUE;
+ }
+ 
  #if defined(FEAT_INS_EXPAND) || defined(PROTO)
  /*
   * CTRL-X pressed in Insert mode.
***************
*** 2418,2424 ****
  	{
  	    had_match = (curwin->w_cursor.col > compl_col);
  	    ins_compl_delete();
! 	    ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
  	    ins_redraw(FALSE);
  
  	    /* When the match isn't there (to avoid matching itself) remove it
--- 2458,2464 ----
  	{
  	    had_match = (curwin->w_cursor.col > compl_col);
  	    ins_compl_delete();
! 	    ins_bytes(compl_leader + ins_compl_len());
  	    ins_redraw(FALSE);
  
  	    /* When the match isn't there (to avoid matching itself) remove it
***************
*** 2470,2476 ****
  	    *p = NUL;
  	    had_match = (curwin->w_cursor.col > compl_col);
  	    ins_compl_delete();
! 	    ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
  	    ins_redraw(FALSE);
  
  	    /* When the match isn't there (to avoid matching itself) remove it
--- 2510,2516 ----
  	    *p = NUL;
  	    had_match = (curwin->w_cursor.col > compl_col);
  	    ins_compl_delete();
! 	    ins_bytes(compl_leader + ins_compl_len());
  	    ins_redraw(FALSE);
  
  	    /* When the match isn't there (to avoid matching itself) remove it
***************
*** 3209,3215 ****
  {
      ins_compl_del_pum();
      ins_compl_delete();
!     ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
      compl_used_match = FALSE;
  
      if (compl_started)
--- 3249,3255 ----
  {
      ins_compl_del_pum();
      ins_compl_delete();
!     ins_bytes(compl_leader + ins_compl_len());
      compl_used_match = FALSE;
  
      if (compl_started)
***************
*** 3264,3269 ****
--- 3304,3323 ----
  }
  
  /*
+  * Return the length of the completion, from the completion start column to
+  * the cursor column.  Making sure it never goes below zero.
+  */
+     static int
+ ins_compl_len()
+ {
+     int off = curwin->w_cursor.col - compl_col;
+ 
+     if (off < 0)
+ 	return 0;
+     return off;
+ }
+ 
+ /*
   * Append one character to the match leader.  May reduce the number of
   * matches.
   */
***************
*** 3621,3630 ****
  	    {
  		ins_compl_delete();
  		if (compl_leader != NULL)
! 		    ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
  		else if (compl_first_match != NULL)
! 		    ins_bytes(compl_orig_text
! 					  + curwin->w_cursor.col - compl_col);
  		retval = TRUE;
  	    }
  
--- 3675,3683 ----
  	    {
  		ins_compl_delete();
  		if (compl_leader != NULL)
! 		    ins_bytes(compl_leader + ins_compl_len());
  		else if (compl_first_match != NULL)
! 		    ins_bytes(compl_orig_text + ins_compl_len());
  		retval = TRUE;
  	    }
  
***************
*** 4256,4262 ****
      static void
  ins_compl_insert()
  {
!     ins_bytes(compl_shown_match->cp_str + curwin->w_cursor.col - compl_col);
      if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
  	compl_used_match = FALSE;
      else
--- 4309,4315 ----
      static void
  ins_compl_insert()
  {
!     ins_bytes(compl_shown_match->cp_str + ins_compl_len());
      if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
  	compl_used_match = FALSE;
      else
***************
*** 4425,4431 ****
  	if (!compl_get_longest || compl_used_match)
  	    ins_compl_insert();
  	else
! 	    ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
      }
      else
  	compl_used_match = FALSE;
--- 4478,4484 ----
  	if (!compl_get_longest || compl_used_match)
  	    ins_compl_insert();
  	else
! 	    ins_bytes(compl_leader + ins_compl_len());
      }
      else
  	compl_used_match = FALSE;
***************
*** 7123,7131 ****
   * cc == 0: character was inserted, delete it
   * cc > 0: character was replaced, put cc (first byte of original char) back
   * and check for more characters to be put back
   */
      static void
! replace_do_bs()
  {
      int		cc;
  #ifdef FEAT_VREPLACE
--- 7176,7187 ----
   * cc == 0: character was inserted, delete it
   * cc > 0: character was replaced, put cc (first byte of original char) back
   * and check for more characters to be put back
+  * When "limit_col" is >= 0, don't delete before this column.  Matters when
+  * using composing characters, use del_char_after_col() instead of del_char().
   */
      static void
! replace_do_bs(limit_col)
!     int		limit_col;
  {
      int		cc;
  #ifdef FEAT_VREPLACE
***************
*** 7153,7159 ****
  #ifdef FEAT_MBYTE
  	if (has_mbyte)
  	{
! 	    del_char(FALSE);
  # ifdef FEAT_VREPLACE
  	    if (State & VREPLACE_FLAG)
  		orig_len = (int)STRLEN(ml_get_cursor());
--- 7209,7215 ----
  #ifdef FEAT_MBYTE
  	if (has_mbyte)
  	{
! 	    (void)del_char_after_col(limit_col);
  # ifdef FEAT_VREPLACE
  	    if (State & VREPLACE_FLAG)
  		orig_len = (int)STRLEN(ml_get_cursor());
***************
*** 7203,7209 ****
  	changed_bytes(curwin->w_cursor.lnum, curwin->w_cursor.col);
      }
      else if (cc == 0)
! 	(void)del_char(FALSE);
  }
  
  #ifdef FEAT_CINDENT
--- 7259,7265 ----
  	changed_bytes(curwin->w_cursor.lnum, curwin->w_cursor.col);
      }
      else if (cc == 0)
! 	(void)del_char_after_col(limit_col);
  }
  
  #ifdef FEAT_CINDENT
***************
*** 8239,8245 ****
  	 * Replace mode */
  	if (curwin->w_cursor.lnum != Insstart.lnum
  		|| curwin->w_cursor.col >= Insstart.col)
! 	    replace_do_bs();
      }
      else
  	(void)del_char(FALSE);
--- 8295,8301 ----
  	 * Replace mode */
  	if (curwin->w_cursor.lnum != Insstart.lnum
  		|| curwin->w_cursor.col >= Insstart.col)
! 	    replace_do_bs(-1);
      }
      else
  	(void)del_char(FALSE);
***************
*** 8556,8562 ****
  		break;
  	    }
  	    if (State & REPLACE_FLAG)
! 		replace_do_bs();
  	    else
  	    {
  #ifdef FEAT_MBYTE
--- 8612,8618 ----
  		break;
  	    }
  	    if (State & REPLACE_FLAG)
! 		replace_do_bs(-1);
  	    else
  	    {
  #ifdef FEAT_MBYTE
*** ../vim-7.2.079/src/version.c	Tue Jan  6 16:13:42 2009
--- src/version.c	Tue Jan 13 12:25:29 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     80,
  /**/

-- 
At some point in the project somebody will start whining about the need to
determine the project "requirements".  This involves interviewing people who
don't know what they want but, curiously, know exactly when they need it.
				(Scott Adams - The Dilbert principle)

 /// 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    ///


--- NEW FILE 7.2.081 ---
To: vim-dev at vim.org
Subject: Patch 7.2.081
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.2.081
Problem:    Compiler warning for floating point overflow on VAX.
Solution:   For VAX use a smaller number. (Zoltan Arpadffy)
Files:	    src/message.c


*** ../vim-7.2.080/src/message.c	Fri Nov 28 21:26:50 2008
--- src/message.c	Tue Jan 13 16:19:07 2009
***************
*** 4556,4562 ****
  			remove_trailing_zeroes = TRUE;
  		    }
  
! 		    if (fmt_spec == 'f' && abs_f > 1.0e307)
  		    {
  			/* Avoid a buffer overflow */
  			strcpy(tmp, "inf");
--- 4556,4568 ----
  			remove_trailing_zeroes = TRUE;
  		    }
  
! 		    if (fmt_spec == 'f' &&
! #ifdef VAX
! 			    abs_f > 1.0e38
! #else
! 			    abs_f > 1.0e307
! #endif
! 			    )
  		    {
  			/* Avoid a buffer overflow */
  			strcpy(tmp, "inf");
*** ../vim-7.2.080/src/version.c	Tue Jan 13 12:29:03 2009
--- src/version.c	Tue Jan 13 16:19:52 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     81,
  /**/

-- 
Sometimes you can protect millions of dollars in your budget simply by buying
a bag of cookies, dropping it on the budget anylyst's desk, and saying
something deeply personal such as "How was your weekend, big guy?"
				(Scott Adams - The Dilbert principle)

 /// 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    ///


--- NEW FILE 7.2.082 ---
To: vim-dev at vim.org
Subject: Patch 7.2.082
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.2.082
Problem:    When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a.
	    (Andy Wokula)
Solution:   Use NL for this situation. (Lech Lorens)
Files:	    src/ex_cmds.c


*** ../vim-7.2.081/src/ex_cmds.c	Fri Nov 28 21:26:50 2008
--- src/ex_cmds.c	Tue Jan 13 16:51:32 2009
***************
*** 49,54 ****
--- 49,55 ----
      exarg_T	*eap;
  {
      int		c;
+     int		cval;
      char	buf1[20];
      char	buf2[20];
      char_u	buf3[7];
***************
*** 75,80 ****
--- 76,85 ----
      {
  	if (c == NL)	    /* NUL is stored as NL */
  	    c = NUL;
+ 	if (c == CAR && get_fileformat(curbuf) == EOL_MAC)
+ 	    cval = NL;	    /* NL is stored as CR */
+ 	else
+ 	    cval = c;
  	if (vim_isprintc_strict(c) && (c < ' '
  #ifndef EBCDIC
  		    || c > '~'
***************
*** 94,100 ****
  	    buf2[0] = NUL;
  	vim_snprintf((char *)IObuff, IOSIZE,
  		_("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
! 					   transchar(c), buf1, buf2, c, c, c);
  #ifdef FEAT_MBYTE
  	if (enc_utf8)
  	    c = cc[ci++];
--- 99,105 ----
  	    buf2[0] = NUL;
  	vim_snprintf((char *)IObuff, IOSIZE,
  		_("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
! 				  transchar(c), buf1, buf2, cval, cval, cval);
  #ifdef FEAT_MBYTE
  	if (enc_utf8)
  	    c = cc[ci++];
*** ../vim-7.2.081/src/version.c	Tue Jan 13 16:37:31 2009
--- src/version.c	Tue Jan 13 16:53:39 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     82,
  /**/

-- 
The budget process was invented by an alien race of sadistic beings who
resemble large cats.
				(Scott Adams - The Dilbert principle)

 /// 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    ///


--- NEW FILE 7.2.083 ---
To: vim-dev at vim.org
Subject: Patch 7.2.083
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.2.083
Problem:    ":tag" does not return to the right tag entry from the tag stack.
Solution:   Don't change the current match when there is no argument.
	    (Erik Falor)
Files:	    src/tag.c


*** ../vim-7.2.082/src/tag.c	Tue Dec  9 12:12:31 2008
--- src/tag.c	Tue Jan 13 17:14:59 2009
***************
*** 515,521 ****
  	     * If a count is supplied to the ":tag <name>" command, then
  	     * jump to count'th matching tag.
  	     */
! 	    if (type == DT_TAG && count > 0)
  		cur_match = count - 1;
  
  	    if (type == DT_SELECT || type == DT_JUMP
--- 515,521 ----
  	     * If a count is supplied to the ":tag <name>" command, then
  	     * jump to count'th matching tag.
  	     */
! 	    if (type == DT_TAG && *tag != NUL && count > 0)
  		cur_match = count - 1;
  
  	    if (type == DT_SELECT || type == DT_JUMP
*** ../vim-7.2.082/src/version.c	Tue Jan 13 16:57:09 2009
--- src/version.c	Tue Jan 13 17:16:42 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     83,
  /**/

-- 
Engineers will go without food and hygiene for days to solve a problem.
(Other times just because they forgot.)
				(Scott Adams - The Dilbert principle)

 /// 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    ///


--- NEW FILE 7.2.084 ---
To: vim-dev at vim.org
Subject: Patch 7.2.084
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.2.084
Problem:    Recursive structures are not handled properly in Python
	    vim.eval().
Solution:   Keep track of references in a better way. (Yukihiro Nakadaira)
Files:	    src/if_python.c


*** ../vim-7.2.083/src/if_python.c	Thu Nov 20 11:04:01 2008
--- src/if_python.c	Tue Jan 13 18:08:06 2009
***************
*** 1151,1164 ****
  
      /* Check if we run into a recursive loop.  The item must be in lookupDict
       * then and we can use it again. */
!     sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, (long_u)our_tv);
!     result = PyDict_GetItemString(lookupDict, ptrBuf);
!     if (result != NULL)
! 	Py_INCREF(result);
!     else if (our_tv->v_type == VAR_STRING)
      {
  	result = Py_BuildValue("s", our_tv->vval.v_string);
- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
      }
      else if (our_tv->v_type == VAR_NUMBER)
      {
--- 1151,1173 ----
  
      /* Check if we run into a recursive loop.  The item must be in lookupDict
       * then and we can use it again. */
!     if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
! 	    || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
!     {
! 	sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
! 	        our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
! 		                           : (long_u)our_tv->vval.v_dict);
! 	result = PyDict_GetItemString(lookupDict, ptrBuf);
! 	if (result != NULL)
! 	{
! 	    Py_INCREF(result);
! 	    return result;
! 	}
!     }
! 
!     if (our_tv->v_type == VAR_STRING)
      {
  	result = Py_BuildValue("s", our_tv->vval.v_string);
      }
      else if (our_tv->v_type == VAR_NUMBER)
      {
***************
*** 1167,1173 ****
  	/* For backwards compatibility numbers are stored as strings. */
  	sprintf(buf, "%ld", (long)our_tv->vval.v_number);
  	result = Py_BuildValue("s", buf);
- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
      }
  # ifdef FEAT_FLOAT
      else if (our_tv->v_type == VAR_FLOAT)
--- 1176,1181 ----
***************
*** 1176,1182 ****
  
  	sprintf(buf, "%f", our_tv->vval.v_float);
  	result = Py_BuildValue("s", buf);
- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
      }
  # endif
      else if (our_tv->v_type == VAR_LIST)
--- 1184,1189 ----
***************
*** 1185,1194 ****
  	listitem_T	*curr;
  
  	result = PyList_New(0);
- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
  
  	if (list != NULL)
  	{
  	    for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
  	    {
  		newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
--- 1192,1202 ----
  	listitem_T	*curr;
  
  	result = PyList_New(0);
  
  	if (list != NULL)
  	{
+ 	    PyDict_SetItemString(lookupDict, ptrBuf, result);
+ 
  	    for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
  	    {
  		newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
***************
*** 1200,1206 ****
      else if (our_tv->v_type == VAR_DICT)
      {
  	result = PyDict_New();
- 	PyDict_SetItemString(lookupDict, ptrBuf, result);
  
  	if (our_tv->vval.v_dict != NULL)
  	{
--- 1208,1213 ----
***************
*** 1209,1214 ****
--- 1216,1223 ----
  	    hashitem_T	*hi;
  	    dictitem_T	*di;
  
+ 	    PyDict_SetItemString(lookupDict, ptrBuf, result);
+ 
  	    for (hi = ht->ht_array; todo > 0; ++hi)
  	    {
  		if (!HASHITEM_EMPTY(hi))
*** ../vim-7.2.083/src/version.c	Tue Jan 13 17:27:18 2009
--- src/version.c	Tue Jan 13 17:54:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     84,
  /**/

-- 
Article in the first Free Software Magazine: "Bram Moolenaar studied electrical
engineering at the Technical University of Delft and graduated in 1985 on a
multi-processor Unix architecture."
Response by "dimator": Could the school not afford a proper stage for the
ceremony?

 /// 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    ///


--- NEW FILE 7.2.085 ---
To: vim-dev at vim.org
Subject: Patch 7.2.085
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.2.085
Problem:    ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8.
Solution:   Put the <M-b> character in the input buffer as valid utf-8.
	    (partly by Matt Wosniski)
Files:	    src/term.c


*** ../vim-7.2.084/src/term.c	Tue Jul 29 12:22:12 2008
--- src/term.c	Thu Jan 22 18:18:29 2009
***************
*** 4920,4926 ****
  	key_name[0] = KEY2TERMCAP0(key);
  	key_name[1] = KEY2TERMCAP1(key);
  	if (key_name[0] == KS_KEY)
! 	    string[new_slen++] = key_name[1];	/* from ":set <M-b>=xx" */
  	else
  	{
  	    string[new_slen++] = K_SPECIAL;
--- 4920,4934 ----
  	key_name[0] = KEY2TERMCAP0(key);
  	key_name[1] = KEY2TERMCAP1(key);
  	if (key_name[0] == KS_KEY)
! 	{
! 	    /* from ":set <M-b>=xx" */
! #ifdef FEAT_MBYTE
! 	    if (has_mbyte)
! 		new_slen += (*mb_char2bytes)(key_name[1], string + new_slen);
! 	    else
! #endif
! 		string[new_slen++] = key_name[1];
! 	}
  	else
  	{
  	    string[new_slen++] = K_SPECIAL;
*** ../vim-7.2.084/src/version.c	Tue Jan 13 18:10:21 2009
--- src/version.c	Thu Jan 22 18:31:50 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     85,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
20. When looking at a pageful of someone else's links, you notice all of them
    are already highlighted in purple.

 /// 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    ///


--- NEW FILE 7.2.086 ---
To: vim-dev at vim.org
Subject: Patch 7.2.086
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.2.086
Problem:    Using ":diffget 1" in buffer 1 corrupts the text.
Solution:   Don't do anything when source and destination of ":diffget" or
	    ":diffput" is the same buffer. (Dominique Pelle)
Files:	    src/diff.c


*** ../vim-7.2.085/src/diff.c	Sun Nov 30 15:15:56 2008
--- src/diff.c	Wed Jan 14 20:40:25 2009
***************
*** 8,14 ****
   */
  
  /*
!  * diff.c: code for diff'ing two or three buffers.
   */
  
  #include "vim.h"
--- 8,14 ----
   */
  
  /*
!  * diff.c: code for diff'ing two, three or four buffers.
   */
  
  #include "vim.h"
***************
*** 116,122 ****
   * Add a buffer to make diffs for.
   * Call this when a new buffer is being edited in the current window where
   * 'diff' is set.
!  * Marks the current buffer as being part of the diff and requireing updating.
   * This must be done before any autocmd, because a command may use info
   * about the screen contents.
   */
--- 116,122 ----
   * Add a buffer to make diffs for.
   * Call this when a new buffer is being edited in the current window where
   * 'diff' is set.
!  * Marks the current buffer as being part of the diff and requiring updating.
   * This must be done before any autocmd, because a command may use info
   * about the screen contents.
   */
***************
*** 929,935 ****
  	goto theend;
  
  #ifdef UNIX
!     /* Temporaraly chdir to /tmp, to avoid patching files in the current
       * directory when the patch file contains more than one patch.  When we
       * have our own temp dir use that instead, it will be cleaned up when we
       * exit (any .rej files created).  Don't change directory if we can't
--- 929,935 ----
  	goto theend;
  
  #ifdef UNIX
!     /* Temporarily chdir to /tmp, to avoid patching files in the current
       * directory when the patch file contains more than one patch.  When we
       * have our own temp dir use that instead, it will be cleaned up when we
       * exit (any .rej files created).  Don't change directory if we can't
***************
*** 2129,2134 ****
--- 2129,2136 ----
  	    EMSG2(_("E102: Can't find buffer \"%s\""), eap->arg);
  	    return;
  	}
+ 	if (buf == curbuf)
+ 	    return;		/* nothing to do */
  	idx_other = diff_buf_idx(buf);
  	if (idx_other == DB_COUNT)
  	{
*** ../vim-7.2.085/src/version.c	Thu Jan 22 18:32:55 2009
--- src/version.c	Thu Jan 22 20:46:54 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     86,
  /**/

-- 
Shift happens.
                -- Doppler

 /// 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    ///


--- NEW FILE 7.2.087 ---
To: vim-dev at vim.org
Subject: Patch 7.2.087
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.2.087
Problem:    Adding URL to 'path' doesn't work to edit a file.
Solution:   Skip simplify_filename() for URLs. (Matt Wosniski)
Files:	    src/misc2.c


*** ../vim-7.2.086/src/misc2.c	Wed Dec 24 12:53:33 2008
--- src/misc2.c	Sun Jan 18 12:26:20 2009
***************
*** 4696,4702 ****
  				stackp->ffs_filearray_cur = i + 1;
  				ff_push(search_ctx, stackp);
  
! 				simplify_filename(file_path);
  				if (mch_dirname(ff_expand_buffer, MAXPATHL)
  									== OK)
  				{
--- 4696,4703 ----
  				stackp->ffs_filearray_cur = i + 1;
  				ff_push(search_ctx, stackp);
  
! 				if (!path_with_url(file_path))
! 				    simplify_filename(file_path);
  				if (mch_dirname(ff_expand_buffer, MAXPATHL)
  									== OK)
  				{
*** ../vim-7.2.086/src/version.c	Thu Jan 22 20:48:07 2009
--- src/version.c	Thu Jan 22 21:30:36 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     87,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
21. Your dog has its own home page.

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.088 ---
To: vim-dev at vim.org
Subject: Patch 7.2.088 (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.2.088 (extra)
Problem:    OpenClipboard() may fail when another application is using the
	    clipboard.
Solution:   Retry OpenClipboard() a few times. (Jianrong Yu)
Files:	    src/os_mswin.c


*** ../vim-7.2.087/src/os_mswin.c	Thu Nov 20 17:09:09 2008
--- src/os_mswin.c	Thu Jan 22 18:38:12 2009
***************
*** 1224,1229 ****
--- 1224,1248 ----
  #endif /* FEAT_MBYTE */
  
  /*
+  * Wait for another process to Close the Clipboard.
+  * Returns TRUE for success.
+  */
+     int
+ vim_open_clipboard()
+ {
+     int delay = 10;
+ 
+     while (!OpenClipboard(NULL))
+     {
+         if (delay > 500)
+             return FALSE;  /* waited too long, give up */
+         Sleep(delay);
+         delay *= 2;	/* wait for 10, 20, 40, 80, etc. msec */
+     }
+     return TRUE;
+ }
+ 
+ /*
   * Get the current selection and put it in the clipboard register.
   *
   * NOTE: Must use GlobalLock/Unlock here to ensure Win32s compatibility.
***************
*** 1254,1260 ****
       * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
       * then we can't paste back into the same window for some reason - webb.
       */
!     if (!OpenClipboard(NULL))
  	return;
  
      /* Check for vim's own clipboard format first.  This only gets the type of
--- 1273,1279 ----
       * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
       * then we can't paste back into the same window for some reason - webb.
       */
!     if (!vim_open_clipboard())
  	return;
  
      /* Check for vim's own clipboard format first.  This only gets the type of
***************
*** 1562,1568 ****
       * because then we can't paste back into the same window for some
       * reason - webb.
       */
!     if (OpenClipboard(NULL))
      {
  	if (EmptyClipboard())
  	{
--- 1581,1587 ----
       * because then we can't paste back into the same window for some
       * reason - webb.
       */
!     if (vim_open_clipboard())
      {
  	if (EmptyClipboard())
  	{
*** ../vim-7.2.087/src/version.c	Thu Jan 22 21:31:24 2009
--- src/version.c	Thu Jan 22 21:47:52 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     88,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
22. You've already visited all the links at Yahoo and you're halfway through
    Lycos.

 /// 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    ///


--- NEW FILE 7.2.089 ---
To: vim-dev at vim.org
Subject: Patch 7.2.089 (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.2.089 (extra)
Problem:    Win32: crash when using Ultramon buttons.
Solution:   Don't use a WM_OLE message of zero size. (Ray Megal)
Files:	    src/if_ole.cpp, src/gui_w48.c


*** ../vim-7.2.088/src/if_ole.cpp	Sun Mar 16 14:53:11 2008
--- src/if_ole.cpp	Mon Jan 19 21:16:33 2009
***************
*** 353,361 ****
      }
  
      /* Pass the string to the main input loop. The memory will be freed when
!      * the message is processed.
       */
!     PostMessage(NULL, WM_OLE, 0, (LPARAM)str);
  
      return S_OK;
  }
--- 353,365 ----
      }
  
      /* Pass the string to the main input loop. The memory will be freed when
!      * the message is processed.  Except for an empty message, we don't need
!      * to post it then.
       */
!     if (*str == NUL)
! 	vim_free(str);
!     else
! 	PostMessage(NULL, WM_OLE, 0, (LPARAM)str);
  
      return S_OK;
  }
*** ../vim-7.2.088/src/gui_w48.c	Wed Dec 24 12:20:10 2008
--- src/gui_w48.c	Mon Jan 19 21:19:30 2009
***************
*** 1663,1670 ****
      if (msg.message == WM_OLE)
      {
  	char_u *str = (char_u *)msg.lParam;
! 	add_to_input_buf(str, (int)STRLEN(str));
! 	vim_free(str);
  	return;
      }
  #endif
--- 1663,1679 ----
      if (msg.message == WM_OLE)
      {
  	char_u *str = (char_u *)msg.lParam;
! 	if (str == NULL || *str == NUL)
! 	{
! 	    /* Message can't be ours, forward it.  Fixes problem with Ultramon
! 	     * 3.0.4 */
! 	    DispatchMessage(&msg);
! 	}
! 	else
! 	{
! 	    add_to_input_buf(str, (int)STRLEN(str));
! 	    vim_free(str);  /* was allocated in CVim::SendKeys() */
! 	}
  	return;
      }
  #endif
*** ../vim-7.2.088/src/version.c	Thu Jan 22 21:49:21 2009
--- src/version.c	Wed Jan 28 14:16:01 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     89,
  /**/


-- 
How To Keep A Healthy Level Of Insanity:
16. Have your coworkers address you by your wrestling name, Rock Hard Kim.

 /// 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    ///


--- NEW FILE 7.2.090 ---
To: vim-dev at vim.org
Subject: Patch 7.2.090
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.2.090
Problem:    User command containing 0x80 in multi-byte character does not work
	    properly. (Yasuhiro Matsumoto)
Solution:   Undo replacement of K_SPECIAL and CSI characters when executing
	    the command.
Files:	    src/ex_docmd.c


*** ../vim-7.2.089/src/ex_docmd.c	Tue Dec  9 11:17:23 2008
--- src/ex_docmd.c	Wed Jan 28 15:34:19 2009
***************
*** 5482,5487 ****
--- 5482,5490 ----
      return OK;
  }
  
+ /*
+  * ":command ..."
+  */
      static void
  ex_command(eap)
      exarg_T   *eap;
***************
*** 5914,5919 ****
--- 5917,5923 ----
  
      char_u	*start;
      char_u	*end;
+     char_u	*ksp;
      size_t	len, totlen;
  
      size_t	split_len = 0;
***************
*** 5930,5945 ****
  
      /*
       * Replace <> in the command by the arguments.
       */
      buf = NULL;
      for (;;)
      {
! 	p = cmd->uc_rep;
! 	q = buf;
  	totlen = 0;
! 	while ((start = vim_strchr(p, '<')) != NULL
! 	       && (end = vim_strchr(start + 1, '>')) != NULL)
  	{
  	    /* Include the '>' */
  	    ++end;
  
--- 5934,5984 ----
  
      /*
       * Replace <> in the command by the arguments.
+      * First round: "buf" is NULL, compute length, allocate "buf".
+      * Second round: copy result into "buf".
       */
      buf = NULL;
      for (;;)
      {
! 	p = cmd->uc_rep;    /* source */
! 	q = buf;	    /* destinateion */
  	totlen = 0;
! 
! 	for (;;)
  	{
+ 	    start = vim_strchr(p, '<');
+ 	    if (start != NULL)
+ 		end = vim_strchr(start + 1, '>');
+ 	    if (buf != NULL)
+ 	    {
+ 		ksp = vim_strchr(p, K_SPECIAL);
+ 		if (ksp != NULL && (start == NULL || ksp < start || end == NULL)
+ 			&& ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
+ # ifdef FEAT_GUI
+ 			    || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
+ # endif
+ 			    ))
+ 		{
+ 		    /* K_SPECIAL han been put in the buffer as K_SPECIAL
+ 		     * KS_SPECIAL KE_FILLER, like for mappings, but
+ 		     * do_cmdline() doesn't handle that, so convert it back.
+ 		     * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
+ 		    len = ksp - p;
+ 		    if (len > 0)
+ 		    {
+ 			mch_memmove(q, p, len);
+ 			q += len;
+ 		    }
+ 		    *q++ = ksp[1] == KS_SPECIAL ? K_SPECIAL : CSI;
+ 		    p = ksp + 3;
+ 		    continue;
+ 		}
+ 	    }
+ 
+ 	    /* break if there no <item> is found */
+ 	    if (start == NULL || end == NULL)
+ 		break;
+ 
  	    /* Include the '>' */
  	    ++end;
  
*** ../vim-7.2.089/src/version.c	Wed Jan 28 14:17:21 2009
--- src/version.c	Wed Jan 28 15:37:40 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     90,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
17. When the money comes out the ATM, scream "I won!, I won! 3rd
    time this week!!!!!"

 /// 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    ///


--- NEW FILE 7.2.091 ---
To: vim-dev at vim.org
Subject: Patch 7.2.091
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.2.091
Problem:    ":cs help" output is not aligned for some languages.
Solution:   Compute character size instead of byte size. (Dominique Pelle)
Files:	    src/if_cscope.c


*** ../vim-7.2.090/src/if_cscope.c	Mon Aug 25 04:35:13 2008
--- src/if_cscope.c	Thu Jan 22 18:44:46 2009
***************
*** 1177,1184 ****
      (void)MSG_PUTS(_("cscope commands:\n"));
      while (cmdp->name != NULL)
      {
! 	(void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
! 				      cmdp->name, _(cmdp->help), cmdp->usage);
  	if (strcmp(cmdp->name, "find") == 0)
  	    MSG_PUTS(_("\n"
  		       "       c: Find functions calling this function\n"
--- 1177,1192 ----
      (void)MSG_PUTS(_("cscope commands:\n"));
      while (cmdp->name != NULL)
      {
! 	char *help = _(cmdp->help);
! 	int  space_cnt = 30 - vim_strsize((char_u *)help);
! 
! 	/* Use %*s rather than %30s to ensure proper alignment in utf-8 */
! 	if (space_cnt < 0)
! 	    space_cnt = 0;
! 	(void)smsg((char_u *)_("%-5s: %s%*s (Usage: %s)"),
! 				      cmdp->name,
! 				      help, space_cnt, " ",
! 				      cmdp->usage);
  	if (strcmp(cmdp->name, "find") == 0)
  	    MSG_PUTS(_("\n"
  		       "       c: Find functions calling this function\n"
*** ../vim-7.2.090/src/version.c	Wed Jan 28 15:42:07 2009
--- src/version.c	Wed Jan 28 16:02:25 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     91,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
18. When leaving the zoo, start running towards the parking lot,
    yelling "run for your lives, they're loose!!"

 /// 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    ///


--- NEW FILE 7.2.092 ---
To: vim-dev at vim.org
Subject: Patch 7.2.092
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.2.092
Problem:    Some error messages are not translated.
Solution:   Add _() around the messages. (Dominique Pelle)
Files:	    src/eval.c


*** ../vim-7.2.091/src/eval.c	Sun Dec 21 13:02:47 2008
--- src/eval.c	Sat Jan 24 12:22:47 2009
***************
*** 7918,7926 ****
      else if (!aborting())
      {
  	if (argcount == MAX_FUNC_ARGS)
! 	    emsg_funcname("E740: Too many arguments for function %s", name);
  	else
! 	    emsg_funcname("E116: Invalid arguments for function %s", name);
      }
  
      while (--argcount >= 0)
--- 7918,7926 ----
      else if (!aborting())
      {
  	if (argcount == MAX_FUNC_ARGS)
! 	    emsg_funcname(N_("E740: Too many arguments for function %s"), name);
  	else
! 	    emsg_funcname(N_("E116: Invalid arguments for function %s"), name);
      }
  
      while (--argcount >= 0)
***************
*** 8153,8158 ****
--- 8153,8159 ----
  
  /*
   * Give an error message with a function name.  Handle <SNR> things.
+  * "ermsg" is to be passed without translation, use N_() instead of _().
   */
      static void
  emsg_funcname(ermsg, name)
***************
*** 19867,19873 ****
  		}
  	    }
  	    else
! 		emsg_funcname("E123: Undefined function: %s", name);
  	}
  	goto ret_free;
      }
--- 19868,19874 ----
  		}
  	    }
  	    else
! 		emsg_funcname(N_("E123: Undefined function: %s"), name);
  	}
  	goto ret_free;
      }
***************
*** 19911,19917 ****
  						      : eval_isnamec(arg[j])))
  		++j;
  	    if (arg[j] != NUL)
! 		emsg_funcname(_(e_invarg2), arg);
  	}
      }
  
--- 19912,19918 ----
  						      : eval_isnamec(arg[j])))
  		++j;
  	    if (arg[j] != NUL)
! 		emsg_funcname(e_invarg2, arg);
  	}
      }
  
***************
*** 20183,20189 ****
  	v = find_var(name, &ht);
  	if (v != NULL && v->di_tv.v_type == VAR_FUNC)
  	{
! 	    emsg_funcname("E707: Function name conflicts with variable: %s",
  									name);
  	    goto erret;
  	}
--- 20184,20190 ----
  	v = find_var(name, &ht);
  	if (v != NULL && v->di_tv.v_type == VAR_FUNC)
  	{
! 	    emsg_funcname(N_("E707: Function name conflicts with variable: %s"),
  									name);
  	    goto erret;
  	}
***************
*** 20198,20204 ****
  	    }
  	    if (fp->uf_calls > 0)
  	    {
! 		emsg_funcname("E127: Cannot redefine function %s: It is in use",
  									name);
  		goto erret;
  	    }
--- 20199,20205 ----
  	    }
  	    if (fp->uf_calls > 0)
  	    {
! 		emsg_funcname(N_("E127: Cannot redefine function %s: It is in use"),
  									name);
  		goto erret;
  	    }
***************
*** 21477,21483 ****
  
  /*
   * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywyere.
   */
      static int
  can_free_funccal(fc, copyID)
--- 21478,21484 ----
  
  /*
   * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywhere.
   */
      static int
  can_free_funccal(fc, copyID)
*** ../vim-7.2.091/src/version.c	Wed Jan 28 16:03:51 2009
--- src/version.c	Wed Jan 28 19:05:47 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     92,
  /**/


-- 
Now it is such a bizarrely improbable coincidence that anything as
mind-bogglingly useful as the Babel fish could have evolved purely by chance
that some thinkers have chosen to see it as a final and clinching proof of the
NON-existence of God.
The argument goes something like this: 'I refuse to prove that I exist,' says
God, 'for proof denies faith, and without faith I am nothing.'
'But,' says Man, 'the Babel fish is a dead giveaway, isn't it?  It could not
have evolved by chance.  It proves you exist, and so therefore, by your own
arguments, you don't.  QED.'
'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
puff of logic.
'Oh, that was easy,' says Man, and for an encore goes on to prove that black
is white and gets himself killed on the next pedestrian crossing.
		-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

 /// 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    ///


--- NEW FILE 7.2.093 ---
To: vim-dev at vim.org
Subject: Patch 7.2.093 (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.2.093 (extra)
Problem:    Win32: inputdialog() and find/replace dialogs can't handle
	    multi-byte text.
Solution:   Use the wide version of dialog functions when available. (Yanwei
	    Jia)
Files:	    src/gui_w32.c, src/gui_w48.c


*** ../vim-7.2.092/src/gui_w32.c	Thu Nov 20 17:09:09 2008
--- src/gui_w32.c	Wed Jan 28 21:15:29 2009
***************
*** 1582,1587 ****
--- 1582,1598 ----
      s_findrep_struct.lpstrReplaceWith[0] = NUL;
      s_findrep_struct.wFindWhatLen = MSWIN_FR_BUFSIZE;
      s_findrep_struct.wReplaceWithLen = MSWIN_FR_BUFSIZE;
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+     s_findrep_struct_w.lStructSize = sizeof(s_findrep_struct_w);
+     s_findrep_struct_w.lpstrFindWhat =
+ 			      (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
+     s_findrep_struct_w.lpstrFindWhat[0] = NUL;
+     s_findrep_struct_w.lpstrReplaceWith =
+ 			      (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
+     s_findrep_struct_w.lpstrReplaceWith[0] = NUL;
+     s_findrep_struct_w.wFindWhatLen = MSWIN_FR_BUFSIZE;
+     s_findrep_struct_w.wReplaceWithLen = MSWIN_FR_BUFSIZE;
+ # endif
  #endif
  
  theend:
***************
*** 2938,2945 ****
  
  	/* If the edit box exists, copy the string. */
  	if (s_textfield != NULL)
! 	    GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
  							 s_textfield, IOSIZE);
  
  	/*
  	 * Need to check for IDOK because if the user just hits Return to
--- 2949,2975 ----
  
  	/* If the edit box exists, copy the string. */
  	if (s_textfield != NULL)
! 	{
! # if defined(FEAT_MBYTE) && defined(WIN3264)
! 	    /* If the OS is Windows NT, and 'encoding' differs from active
! 	     * codepage: use wide function and convert text. */
! 	    if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
! 		    && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
!             {
! 	       WCHAR  *wp = (WCHAR *)alloc(IOSIZE * sizeof(WCHAR));
! 	       char_u *p;
! 
! 	       GetDlgItemTextW(hwnd, DLG_NONBUTTON_CONTROL + 2, wp, IOSIZE);
! 	       p = utf16_to_enc(wp, NULL);
! 	       vim_strncpy(s_textfield, p, IOSIZE);
! 	       vim_free(p);
! 	       vim_free(wp);
! 	    }
! 	    else
! # endif
! 		GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
  							 s_textfield, IOSIZE);
+ 	}
  
  	/*
  	 * Need to check for IDOK because if the user just hits Return to
*** ../vim-7.2.092/src/gui_w48.c	Wed Jan 28 14:17:21 2009
--- src/gui_w48.c	Wed Jan 28 21:10:26 2009
***************
*** 153,158 ****
--- 153,161 ----
  #ifdef MSWIN_FIND_REPLACE
  static UINT		s_findrep_msg = 0;	/* set in gui_w[16/32].c */
  static FINDREPLACE	s_findrep_struct;
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ static FINDREPLACEW	s_findrep_struct_w;
+ # endif
  static HWND		s_findrep_hwnd = NULL;
  static int		s_findrep_is_find;	/* TRUE for find dialog, FALSE
  						   for find/replace dialog */
***************
*** 884,889 ****
--- 887,931 ----
  #endif
  
  #ifdef MSWIN_FIND_REPLACE
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ /*
+  * copy useful data from structure LPFINDREPLACE to structure LPFINDREPLACEW
+  */
+     static void
+ findrep_atow(LPFINDREPLACEW lpfrw, LPFINDREPLACE lpfr)
+ {
+     WCHAR *wp;
+ 
+     lpfrw->hwndOwner = lpfr->hwndOwner;
+     lpfrw->Flags = lpfr->Flags;
+ 
+     wp = enc_to_utf16(lpfr->lpstrFindWhat, NULL);
+     wcsncpy(lpfrw->lpstrFindWhat, wp, lpfrw->wFindWhatLen - 1);
+     vim_free(wp);
+ 
+     /* the field "lpstrReplaceWith" doesn't need to be copied */
+ }
+ 
+ /*
+  * copy useful data from structure LPFINDREPLACEW to structure LPFINDREPLACE
+  */
+     static void
+ findrep_wtoa(LPFINDREPLACE lpfr, LPFINDREPLACEW lpfrw)
+ {
+     char_u *p;
+ 
+     lpfr->Flags = lpfrw->Flags;
+ 
+     p = utf16_to_enc(lpfrw->lpstrFindWhat, NULL);
+     vim_strncpy(lpfr->lpstrFindWhat, p, lpfr->wFindWhatLen - 1);
+     vim_free(p);
+ 
+     p = utf16_to_enc(lpfrw->lpstrReplaceWith, NULL);
+     vim_strncpy(lpfr->lpstrReplaceWith, p, lpfr->wReplaceWithLen - 1);
+     vim_free(p);
+ }
+ # endif
+ 
  /*
   * Handle a Find/Replace window message.
   */
***************
*** 893,898 ****
--- 935,950 ----
      int	    flags = 0;
      int	    down;
  
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+     /* If the OS is Windows NT, and 'encoding' differs from active codepage:
+      * convert text from wide string. */
+     if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+ 			&& enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+     {
+         findrep_wtoa(&s_findrep_struct, &s_findrep_struct_w);
+     }
+ # endif
+ 
      if (s_findrep_struct.Flags & FR_DIALOGTERM)
  	/* Give main window the focus back. */
  	(void)SetFocus(s_hwnd);
***************
*** 2562,2568 ****
  	if (!IsWindow(s_findrep_hwnd))
  	{
  	    initialise_findrep(eap->arg);
! 	    s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
  	}
  
  	set_window_title(s_findrep_hwnd,
--- 2614,2632 ----
  	if (!IsWindow(s_findrep_hwnd))
  	{
  	    initialise_findrep(eap->arg);
! # if defined(FEAT_MBYTE) && defined(WIN3264)
! 	    /* If the OS is Windows NT, and 'encoding' differs from active
! 	     * codepage: convert text and use wide function. */
! 	    if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
! 		    && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	    {
! 	        findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
! 		s_findrep_hwnd = FindTextW(
! 					(LPFINDREPLACEW) &s_findrep_struct_w);
! 	    }
! 	    else
! # endif
! 		s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
  	}
  
  	set_window_title(s_findrep_hwnd,
***************
*** 2587,2593 ****
  	if (!IsWindow(s_findrep_hwnd))
  	{
  	    initialise_findrep(eap->arg);
! 	    s_findrep_hwnd = ReplaceText((LPFINDREPLACE) &s_findrep_struct);
  	}
  
  	set_window_title(s_findrep_hwnd,
--- 2651,2668 ----
  	if (!IsWindow(s_findrep_hwnd))
  	{
  	    initialise_findrep(eap->arg);
! # if defined(FEAT_MBYTE) && defined(WIN3264)
! 	    if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
! 		    && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	    {
! 		findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
! 		s_findrep_hwnd = ReplaceTextW(
! 					(LPFINDREPLACEW) &s_findrep_struct_w);
! 	    }
! 	    else
! # endif
! 		s_findrep_hwnd = ReplaceText(
! 					   (LPFINDREPLACE) &s_findrep_struct);
  	}
  
  	set_window_title(s_findrep_hwnd,
*** ../vim-7.2.092/src/version.c	Wed Jan 28 19:08:31 2009
--- src/version.c	Wed Jan 28 21:19:56 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     93,
  /**/

-- 
I'm not familiar with this proof, but I'm aware of a significant
following of toddlers who believe that peanut butter is the solution
to all of life's problems... 		-- Tim Hammerquist

 /// 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    ///


--- NEW FILE 7.2.094 ---
To: vim-dev at vim.org
Subject: Patch 7.2.094
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.2.094
Problem:    Compiler warning for signed/unsigned compare.
Solution:   Add type cast.  Also fix a few typos.
Files:	    src/edit.c


*** ../vim-7.2.093/src/edit.c	Tue Jan 13 12:29:03 2009
--- src/edit.c	Wed Jan 28 21:13:51 2009
***************
*** 1958,1963 ****
--- 1958,1964 ----
   * Only matters when there are composing characters.
   * Return TRUE when something was deleted.
   */
+ /*ARGSUSED*/
     static int
  del_char_after_col(limit_col)
      int limit_col;
***************
*** 1971,1977 ****
  	 * skip forward again when going too far back because of a
  	 * composing character. */
  	mb_adjust_cursor();
! 	while (curwin->w_cursor.col < limit_col)
  	{
  	    int l = utf_ptr2len(ml_get_cursor());
  
--- 1972,1978 ----
  	 * skip forward again when going too far back because of a
  	 * composing character. */
  	mb_adjust_cursor();
! 	while (curwin->w_cursor.col < (colnr_T)limit_col)
  	{
  	    int l = utf_ptr2len(ml_get_cursor());
  
***************
*** 4240,4246 ****
  	}
  
  	/* check if compl_curr_match has changed, (e.g. other type of
! 	 * expansion added somenthing) */
  	if (type != 0 && compl_curr_match != old_match)
  	    found_new_match = OK;
  
--- 4241,4247 ----
  	}
  
  	/* check if compl_curr_match has changed, (e.g. other type of
! 	 * expansion added something) */
  	if (type != 0 && compl_curr_match != old_match)
  	    found_new_match = OK;
  
***************
*** 4741,4747 ****
  		}
  		compl_length = curwin->w_cursor.col - (int)compl_col;
  		/* IObuff is used to add a "word from the next line" would we
! 		 * have enough space?  just being paranoic */
  #define	MIN_SPACE 75
  		if (compl_length > (IOSIZE - MIN_SPACE))
  		{
--- 4742,4748 ----
  		}
  		compl_length = curwin->w_cursor.col - (int)compl_col;
  		/* IObuff is used to add a "word from the next line" would we
! 		 * have enough space?  just being paranoid */
  #define	MIN_SPACE 75
  		if (compl_length > (IOSIZE - MIN_SPACE))
  		{
***************
*** 8206,8212 ****
  /*
   * If the cursor is on an indent, ^T/^D insert/delete one
   * shiftwidth.	Otherwise ^T/^D behave like a "<<" or ">>".
!  * Always round the indent to 'shiftwith', this is compatible
   * with vi.  But vi only supports ^T and ^D after an
   * autoindent, we support it everywhere.
   */
--- 8207,8213 ----
  /*
   * If the cursor is on an indent, ^T/^D insert/delete one
   * shiftwidth.	Otherwise ^T/^D behave like a "<<" or ">>".
!  * Always round the indent to 'shiftwidth', this is compatible
   * with vi.  But vi only supports ^T and ^D after an
   * autoindent, we support it everywhere.
   */
*** ../vim-7.2.093/src/version.c	Wed Jan 28 21:22:20 2009
--- src/version.c	Wed Feb  4 11:17:02 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     94,
  /**/

-- 
Despite the cost of living, have you noticed how it remains so popular?

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.095 ---
To: vim-dev at vim.org
Subject: Patch 7.2.095
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.2.095
Problem:    With Visual selection, "r" and then CTRL-C Visual mode is stopped
	    but the highlighting is not removed.
Solution:   Call reset_VIsual().
Files:	    src/normal.c


*** ../vim-7.2.094/src/normal.c	Thu Nov 20 16:11:03 2008
--- src/normal.c	Fri Jan 30 20:37:01 2009
***************
*** 6783,6788 ****
--- 6783,6790 ----
      /* Visual mode "r" */
      if (VIsual_active)
      {
+ 	if (got_int)
+ 	    reset_VIsual();
  	nv_operator(cap);
  	return;
      }
***************
*** 7839,7845 ****
  	else
  	    i = curwin->w_leftcol;
  	/* Go to the middle of the screen line.  When 'number' is on and lines
! 	 * are wrapping the middle can be more to the left.*/
  	if (cap->nchar == 'm')
  	    i += (W_WIDTH(curwin) - curwin_col_off()
  		    + ((curwin->w_p_wrap && i > 0)
--- 7841,7847 ----
  	else
  	    i = curwin->w_leftcol;
  	/* Go to the middle of the screen line.  When 'number' is on and lines
! 	 * are wrapping the middle can be more to the left. */
  	if (cap->nchar == 'm')
  	    i += (W_WIDTH(curwin) - curwin_col_off()
  		    + ((curwin->w_p_wrap && i > 0)
*** ../vim-7.2.094/src/version.c	Wed Feb  4 11:19:40 2009
--- src/version.c	Wed Feb  4 11:43:28 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     95,
  /**/

-- 
Nothing is fool-proof to a sufficiently talented fool.

 /// 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    ///


--- NEW FILE 7.2.096 ---
To: vim-dev at vim.org
Subject: Patch 7.2.096
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.2.096
Problem:    After ":number" the "Press Enter" message may be on the wrong
	    screen, if switching screens for shell commands.
Solution:   Reset info_message. (James Vega)
Files:	    src/ex_cmds.c


*** ../vim-7.2.095/src/ex_cmds.c	Tue Jan 13 16:57:09 2009
--- src/ex_cmds.c	Fri Jan 30 21:01:54 2009
***************
*** 2417,2424 ****
  	cursor_on();		/* msg_start() switches it off */
  	out_flush();
  	silent_mode = save_silent;
- 	info_message = FALSE;
      }
  }
  
  /*
--- 2417,2424 ----
  	cursor_on();		/* msg_start() switches it off */
  	out_flush();
  	silent_mode = save_silent;
      }
+     info_message = FALSE;
  }
  
  /*
*** ../vim-7.2.095/src/version.c	Wed Feb  4 11:45:28 2009
--- src/version.c	Wed Feb  4 13:12:55 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     96,
  /**/

-- 
A fine is a tax for doing wrong.  A tax is a fine for doing well.

 /// 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    ///


--- NEW FILE 7.2.097 ---
To: vim-dev at vim.org
Subject: Patch 7.2.097
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.2.097
Problem:    "!xterm&" doesn't work when 'shell' is "bash".
Solution:   Ignore SIGHUP after calling setsid(). (Simon Schubert) 
Files:	    src/os_unix.c


*** ../vim-7.2.096/src/os_unix.c	Fri Nov 28 21:26:50 2008
--- src/os_unix.c	Wed Feb  4 12:09:55 2009
***************
*** 3950,3956 ****
--- 3950,3966 ----
  		 * children can be kill()ed.  Don't do this when using pipes,
  		 * because stdin is not a tty, we would lose /dev/tty. */
  		if (p_stmp)
+ 		{
  		    (void)setsid();
+ #  if defined(SIGHUP)
+ 		    /* When doing "!xterm&" and 'shell' is bash: the shell
+ 		     * will exit and send SIGHUP to all processes in its
+ 		     * group, killing the just started process.  Ignore SIGHUP
+ 		     * to avoid that. (suggested by Simon Schubert)
+ 		     */
+ 		    signal(SIGHUP, SIG_IGN);
+ #  endif
+ 		}
  # endif
  # ifdef FEAT_GUI
  		if (pty_slave_fd >= 0)
*** ../vim-7.2.096/src/version.c	Wed Feb  4 13:13:42 2009
--- src/version.c	Wed Feb  4 14:16:37 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     97,
  /**/

-- 
It was recently discovered that research causes cancer in rats.

 /// 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    ///


--- NEW FILE 7.2.098 ---
To: vim-dev at vim.org
Subject: Patch 7.2.098
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.2.098
Problem:    Warning for signed/unsigned pointer.
Solution:   Add type cast.
Files:	    src/eval.c


*** ../vim-7.2.097/src/eval.c	Wed Jan 28 19:08:31 2009
--- src/eval.c	Wed Feb  4 13:09:01 2009
***************
*** 3928,3934 ****
  
  /*
   * Handle top level expression:
!  *	expr1 ? expr0 : expr0
   *
   * "arg" must point to the first non-white of the expression.
   * "arg" is advanced to the next non-white after the recognized expression.
--- 3928,3934 ----
  
  /*
   * Handle top level expression:
!  *	expr2 ? expr1 : expr1
   *
   * "arg" must point to the first non-white of the expression.
   * "arg" is advanced to the next non-white after the recognized expression.
***************
*** 19912,19918 ****
  						      : eval_isnamec(arg[j])))
  		++j;
  	    if (arg[j] != NUL)
! 		emsg_funcname(e_invarg2, arg);
  	}
      }
  
--- 19912,19918 ----
  						      : eval_isnamec(arg[j])))
  		++j;
  	    if (arg[j] != NUL)
! 		emsg_funcname((char *)e_invarg2, arg);
  	}
      }
  
*** ../vim-7.2.097/src/version.c	Wed Feb  4 14:18:44 2009
--- src/version.c	Wed Feb  4 16:24:06 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     98,
  /**/

-- 
Everybody lies, but it doesn't matter since nobody listens.
                                -- Lieberman's Law

 /// 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    ///


--- NEW FILE 7.2.099 ---
To: vim-dev at vim.org
Subject: Patch 7.2.099
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.2.099
Problem:    Changing GUI options causes an unnecessary redraw when the GUI
	    isn't active.
Solution:   Avoid the redraw. (Lech Lorens)
Files:	    src/option.c


*** ../vim-7.2.098/src/option.c	Wed Dec 24 12:53:33 2008
--- src/option.c	Wed Feb  4 16:59:56 2009
***************
*** 5407,5412 ****
--- 5407,5416 ----
      int		did_chartab = FALSE;
      char_u	**gvarp;
      long_u	free_oldval = (options[opt_idx].flags & P_ALLOCED);
+ #ifdef FEAT_GUI
+     /* set when changing an option that only requires a redraw in the GUI */
+     int		redraw_gui_only = FALSE;
+ #endif
  
      /* Get the global option to compare with, otherwise we would have to check
       * two values for all local options. */
***************
*** 6055,6060 ****
--- 6059,6065 ----
  		    errmsg = (char_u *)N_("E596: Invalid font(s)");
  	    }
  	}
+ 	redraw_gui_only = TRUE;
      }
  # ifdef FEAT_XFONTSET
      else if (varp == &p_guifontset)
***************
*** 6063,6068 ****
--- 6068,6074 ----
  	    errmsg = (char_u *)N_("E597: can't select fontset");
  	else if (gui.in_use && gui_init_font(p_guifontset, TRUE) != OK)
  	    errmsg = (char_u *)N_("E598: Invalid fontset");
+ 	redraw_gui_only = TRUE;
      }
  # endif
  # ifdef FEAT_MBYTE
***************
*** 6072,6077 ****
--- 6078,6084 ----
  	    errmsg = (char_u *)N_("E533: can't select wide font");
  	else if (gui_get_wide_font() == FAIL)
  	    errmsg = (char_u *)N_("E534: Invalid wide font");
+ 	redraw_gui_only = TRUE;
      }
  # endif
  #endif
***************
*** 6133,6145 ****
--- 6140,6163 ----
  #ifdef FEAT_GUI
      /* 'guioptions' */
      else if (varp == &p_go)
+     {
  	gui_init_which_components(oldval);
+ 	redraw_gui_only = TRUE;
+     }
  #endif
  
  #if defined(FEAT_GUI_TABLINE)
      /* 'guitablabel' */
      else if (varp == &p_gtl)
+     {
  	redraw_tabline = TRUE;
+ 	redraw_gui_only = TRUE;
+     }
+     /* 'guitabtooltip' */
+     else if (varp == &p_gtt)
+     {
+ 	redraw_gui_only = TRUE;
+     }
  #endif
  
  #if defined(FEAT_MOUSE_TTY) && (defined(UNIX) || defined(VMS))
***************
*** 6717,6723 ****
  
      if (curwin->w_curswant != MAXCOL)
  	curwin->w_set_curswant = TRUE;  /* in case 'showbreak' changed */
!     check_redraw(options[opt_idx].flags);
  
      return errmsg;
  }
--- 6735,6745 ----
  
      if (curwin->w_curswant != MAXCOL)
  	curwin->w_set_curswant = TRUE;  /* in case 'showbreak' changed */
! #ifdef FEAT_GUI
!     /* check redraw when it's not a GUI option or the GUI is active. */
!     if (!redraw_gui_only || gui.in_use)
! #endif
! 	check_redraw(options[opt_idx].flags);
  
      return errmsg;
  }
*** ../vim-7.2.098/src/version.c	Wed Feb  4 16:25:53 2009
--- src/version.c	Wed Feb  4 17:24:11 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     99,
  /**/

-- 
I started out with nothing, and I still have most of it.
                                -- Michael Davis -- "Tonight Show"

 /// 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    ///


--- NEW FILE 7.2.100 ---
To: vim-dev at vim.org
Subject: Patch 7.2.100
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.2.100
Problem:    When using ":source" on a FIFO or something else that can't rewind
	    the first three bytes are skipped.
Solution:   Instead of rewinding read the first line and detect a BOM in that.
	    (mostly by James Vega)
Files:	    src/ex_cmds2.c


*** ../vim-7.2.099/src/ex_cmds2.c	Sat Nov 15 14:10:23 2008
--- src/ex_cmds2.c	Wed Feb  4 16:05:51 2009
***************
*** 2842,2847 ****
--- 2842,2848 ----
      linenr_T		    save_sourcing_lnum;
      char_u		    *p;
      char_u		    *fname_exp;
+     char_u		    *firstline = NULL;
      int			    retval = FAIL;
  #ifdef FEAT_EVAL
      scid_T		    save_current_SID;
***************
*** 2992,3014 ****
  
      cookie.level = ex_nesting_level;
  #endif
- #ifdef FEAT_MBYTE
-     cookie.conv.vc_type = CONV_NONE;		/* no conversion */
- 
-     /* Try reading the first few bytes to check for a UTF-8 BOM. */
-     {
- 	char_u	    buf[3];
- 
- 	if (fread((char *)buf, sizeof(char_u), (size_t)3, cookie.fp)
- 								  == (size_t)3
- 		&& buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf)
- 	    /* Found BOM, setup conversion and skip over it. */
- 	    convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
- 	else
- 	    /* No BOM found, rewind. */
- 	    fseek(cookie.fp, 0L, SEEK_SET);
-     }
- #endif
  
      /*
       * Keep the sourcing name/lnum, for recursive calls.
--- 2993,2998 ----
***************
*** 3018,3023 ****
--- 3002,3026 ----
      save_sourcing_lnum = sourcing_lnum;
      sourcing_lnum = 0;
  
+ #ifdef FEAT_MBYTE
+     cookie.conv.vc_type = CONV_NONE;		/* no conversion */
+ 
+     /* Read the first line so we can check for a UTF-8 BOM. */
+     firstline = getsourceline(0, (void *)&cookie, 0);
+     if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
+ 			      && firstline[1] == 0xbb && firstline[2] == 0xbf)
+     {
+ 	/* Found BOM; setup conversion, skip over BOM and recode the line. */
+ 	convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
+ 	p = string_convert(&cookie.conv, firstline + 3, NULL);
+ 	if (p != NULL)
+ 	{
+ 	    vim_free(firstline);
+ 	    firstline = p;
+ 	}
+     }
+ #endif
+ 
  #ifdef STARTUPTIME
      time_push(&tv_rel, &tv_start);
  #endif
***************
*** 3111,3119 ****
      /*
       * Call do_cmdline, which will call getsourceline() to get the lines.
       */
!     do_cmdline(NULL, getsourceline, (void *)&cookie,
  				     DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
- 
      retval = OK;
  
  #ifdef FEAT_PROFILE
--- 3114,3121 ----
      /*
       * Call do_cmdline, which will call getsourceline() to get the lines.
       */
!     do_cmdline(firstline, getsourceline, (void *)&cookie,
  				     DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
      retval = OK;
  
  #ifdef FEAT_PROFILE
***************
*** 3171,3176 ****
--- 3173,3179 ----
  #endif
      fclose(cookie.fp);
      vim_free(cookie.nextline);
+     vim_free(firstline);
  #ifdef FEAT_MBYTE
      convert_setup(&cookie.conv, NULL, NULL);
  #endif
*** ../vim-7.2.099/src/version.c	Wed Feb  4 17:27:50 2009
--- src/version.c	Wed Feb  4 17:48:47 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     100,
  /**/

-- 
Well, you come from nothing, you go back to nothing...  What have you
lost?  Nothing!
				-- Monty Python: The life of Brian

 /// 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    ///


--- NEW FILE 7.2.101 ---
To: vim-dev at vim.org
Subject: Patch 7.2.101 (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.2.101 (extra)
Problem:    MSVC version not recognized.
Solution:   Add the version number to the list.  (Zhong Zhang)
Files:	    src/Make_mvc.mak


*** ../vim-7.2.100/src/Make_mvc.mak	Thu Jul 24 20:49:58 2008
--- src/Make_mvc.mak	Wed Feb  4 18:32:47 2009
***************
*** 354,359 ****
--- 354,362 ----
  !if "$(_NMAKE_VER)" == "9.00.21022.08"
  MSVCVER = 9.0
  !endif
+ !if "$(_NMAKE_VER)" == "9.00.30729.01"
+ MSVCVER = 9.0
+ !endif
  !endif
  
  # Abort bulding VIM if version of VC is unrecognised.
*** ../vim-7.2.100/src/version.c	Wed Feb  4 17:49:46 2009
--- src/version.c	Wed Feb  4 18:34:12 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     101,
  /**/

-- 
Light travels faster than sound.  This is why some people
appear bright until you hear them speak

 /// 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    ///


--- NEW FILE 7.2.102 ---
To: vim-dev at vim.org
Subject: Patch 7.2.102
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.2.102 (after 7.2.100)
Problem:    When 'encoding' is "utf-8" a BOM at the start of a Vim script is
	    not removed. (Tony Mechelynck)
Solution:   When no conversion is taking place make a copy of the line without
	    the BOM.
Files:	    src/ex_cmds2.c


*** ../vim-7.2.101/src/ex_cmds2.c	Wed Feb  4 17:49:46 2009
--- src/ex_cmds2.c	Thu Feb  5 20:41:56 2009
***************
*** 3013,3018 ****
--- 3013,3020 ----
  	/* Found BOM; setup conversion, skip over BOM and recode the line. */
  	convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
  	p = string_convert(&cookie.conv, firstline + 3, NULL);
+ 	if (p == NULL)
+ 	    p = vim_strsave(firstline + 3);
  	if (p != NULL)
  	{
  	    vim_free(firstline);
*** ../vim-7.2.101/src/version.c	Wed Feb  4 18:34:54 2009
--- src/version.c	Thu Feb  5 20:44:55 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     102,
  /**/

-- 
CVS sux, men don't like commitment

 /// 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    ///


--- NEW FILE 7.2.103 ---
To: vim-dev at vim.org
Subject: Patch 7.2.103
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.2.103
Problem:    When 'bomb' is changed the window title is updated to show/hide a
	    "+", but the tab page label isn't. (Patrick Texier)
Solution:   Set "redraw_tabline" in most places where "need_maketitle" is set.
	    (partly by Lech Lorens)
Files:	    src/option.c


*** ../vim-7.2.102/src/option.c	Wed Feb  4 17:27:50 2009
--- src/option.c	Wed Feb  4 17:40:02 2009
***************
*** 5268,5273 ****
--- 5268,5288 ----
  }
  #endif
  
+ #ifdef FEAT_TITLE
+ static void redraw_titles __ARGS((void));
+ 
+ /*
+  * Redraw the window title and/or tab page text later.
+  */
+ static void redraw_titles()
+ {
+     need_maketitle = TRUE;
+ # ifdef FEAT_WINDOWS
+     redraw_tabline = TRUE;
+ # endif
+ }
+ #endif
+ 
  /*
   * Set a string option to a new value (without checking the effect).
   * The string is copied into allocated memory.
***************
*** 5672,5678 ****
  	    {
  # ifdef FEAT_TITLE
  		/* May show a "+" in the title now. */
! 		need_maketitle = TRUE;
  # endif
  		/* Add 'fileencoding' to the swap file. */
  		ml_setflags(curbuf);
--- 5687,5693 ----
  	    {
  # ifdef FEAT_TITLE
  		/* May show a "+" in the title now. */
! 		redraw_titles();
  # endif
  		/* Add 'fileencoding' to the swap file. */
  		ml_setflags(curbuf);
***************
*** 5691,5697 ****
  	    {
  		errmsg = mb_init();
  # ifdef FEAT_TITLE
! 		need_maketitle = TRUE;
  # endif
  	    }
  	}
--- 5706,5712 ----
  	    {
  		errmsg = mb_init();
  # ifdef FEAT_TITLE
! 		redraw_titles();
  # endif
  	    }
  	}
***************
*** 5800,5806 ****
  	    else
  		curbuf->b_p_tx = FALSE;
  #ifdef FEAT_TITLE
! 	    need_maketitle = TRUE;
  #endif
  	    /* update flag in swap file */
  	    ml_setflags(curbuf);
--- 5815,5821 ----
  	    else
  		curbuf->b_p_tx = FALSE;
  #ifdef FEAT_TITLE
! 	    redraw_titles();
  #endif
  	    /* update flag in swap file */
  	    ml_setflags(curbuf);
***************
*** 7127,7148 ****
  	    curbuf->b_did_warn = FALSE;
  
  #ifdef FEAT_TITLE
! 	need_maketitle = TRUE;
  #endif
      }
  
  #ifdef FEAT_TITLE
      /* when 'modifiable' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_ma)
! 	need_maketitle = TRUE;
      /* when 'endofline' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_eol)
! 	need_maketitle = TRUE;
! #ifdef FEAT_MBYTE
!     /* when 'bomb' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_bomb)
! 	need_maketitle = TRUE;
! #endif
  #endif
  
      /* when 'bin' is set also set some other options */
--- 7142,7169 ----
  	    curbuf->b_did_warn = FALSE;
  
  #ifdef FEAT_TITLE
! 	redraw_titles();
  #endif
      }
  
  #ifdef FEAT_TITLE
      /* when 'modifiable' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_ma)
!     {
! 	redraw_titles();
!     }
      /* when 'endofline' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_eol)
!     {
! 	redraw_titles();
!     }
! # ifdef FEAT_MBYTE
!     /* when 'bomb' is changed, redraw the window title and tab page text */
      else if ((int *)varp == &curbuf->b_p_bomb)
!     {
! 	redraw_titles();
!     }
! # endif
  #endif
  
      /* when 'bin' is set also set some other options */
***************
*** 7150,7156 ****
      {
  	set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
  #ifdef FEAT_TITLE
! 	need_maketitle = TRUE;
  #endif
      }
  
--- 7171,7177 ----
      {
  	set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
  #ifdef FEAT_TITLE
! 	redraw_titles();
  #endif
      }
  
***************
*** 7301,7307 ****
  	if (!value)
  	    save_file_ff(curbuf);	/* Buffer is unchanged */
  #ifdef FEAT_TITLE
! 	need_maketitle = TRUE;
  #endif
  #ifdef FEAT_AUTOCMD
  	modified_was_set = value;
--- 7322,7328 ----
  	if (!value)
  	    save_file_ff(curbuf);	/* Buffer is unchanged */
  #ifdef FEAT_TITLE
! 	redraw_titles();
  #endif
  #ifdef FEAT_AUTOCMD
  	modified_was_set = value;
***************
*** 7736,7742 ****
  	newFoldLevel();
      }
  
!     /* 'foldminlevel' */
      else if (pp == &curwin->w_p_fml)
      {
  	foldUpdateAll(curwin);
--- 7757,7763 ----
  	newFoldLevel();
      }
  
!     /* 'foldminlines' */
      else if (pp == &curwin->w_p_fml)
      {
  	foldUpdateAll(curwin);
*** ../vim-7.2.102/src/version.c	Thu Feb  5 20:47:14 2009
--- src/version.c	Wed Feb 11 11:32:20 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     103,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
73. You give your dog used motherboards instead of bones

 /// 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    ///


--- NEW FILE 7.2.104 ---
To: vim-dev at vim.org
Subject: Patch 7.2.104
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.2.104
Problem:    When using ":saveas bar.c" the tab label isn't updated right away.
Solution:   Set redraw_tabline. (Francois Ingelrest)
Files:      src/ex_cmds.c


*** ../vim-7.2.103/src/ex_cmds.c	Wed Feb  4 13:13:42 2009
--- src/ex_cmds.c	Wed Feb 11 15:58:06 2009
***************
*** 2707,2713 ****
--- 2707,2718 ----
  	if (eap->cmdidx == CMD_saveas)
  	{
  	    if (retval == OK)
+ 	    {
  		curbuf->b_p_ro = FALSE;
+ #ifdef FEAT_WINDOWS
+ 		redraw_tabline = TRUE;
+ #endif
+ 	    }
  	    /* Change directories when the 'acd' option is set. */
  	    DO_AUTOCHDIR
  	}
*** ../vim-7.2.103/src/version.c	Wed Feb 11 11:34:24 2009
--- src/version.c	Wed Feb 11 16:02:19 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     104,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
75. You start wondering whether you could actually upgrade your brain
    with a Pentium Pro microprocessor 80.  The upgrade works just fine.

 /// 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    ///


--- NEW FILE 7.2.105 ---
To: vim-dev at vim.org
Subject: Patch 7.2.105
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.2.105
Problem:    Modeline setting for 'foldmethod' overrules diff options. (Ingo
	    Karkat)
Solution:   Don't set 'foldmethod' and 'wrap' from a modeline when 'diff' is
	    on.
Files:	    src/option.c


*** ../vim-7.2.104/src/option.c	Wed Feb 11 11:34:24 2009
--- src/option.c	Wed Feb 11 16:29:56 2009
***************
*** 4119,4129 ****
  					   && options[opt_idx].var == VAR_WIN)
  		goto skip;
  
! 	    /* Disallow changing some options from modelines */
! 	    if ((opt_flags & OPT_MODELINE) && (flags & P_SECURE))
  	    {
! 		errmsg = (char_u *)_("E520: Not allowed in a modeline");
! 		goto skip;
  	    }
  
  #ifdef HAVE_SANDBOX
--- 4119,4139 ----
  					   && options[opt_idx].var == VAR_WIN)
  		goto skip;
  
! 	    /* Disallow changing some options from modelines. */
! 	    if (opt_flags & OPT_MODELINE)
  	    {
! 		if (flags & P_SECURE)
! 		{
! 		    errmsg = (char_u *)_("E520: Not allowed in a modeline");
! 		    goto skip;
! 		}
! 		/* In diff mode some options are overruled.  This avoids that
! 		 * 'foldmethod' becomes "marker" instead of "diff" and that
! 		 * "wrap" gets set. */
! 		if (curwin->w_p_diff
! 			&& (options[opt_idx].indir == PV_FDM
! 			    || options[opt_idx].indir == PV_WRAP))
! 		    goto skip;
  	    }
  
  #ifdef HAVE_SANDBOX
*** ../vim-7.2.104/src/version.c	Wed Feb 11 16:02:29 2009
--- src/version.c	Wed Feb 11 16:40:35 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     105,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
76. Your ISP regards you as a business partner rather than as a customer.

 /// 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    ///


--- NEW FILE 7.2.106 ---
To: vim-dev at vim.org
Subject: Patch 7.2.106
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.2.106
Problem:    Endless loop when using "]s" in HTML when there are no
	    misspellings. (Ingo Karkat)
Solution:   Break the search loop.  Also fix pointer alignment for systems
	    with pointers larger than int.
Files:	    src/spell.c


*** ../vim-7.2.105/src/spell.c	Tue Dec  9 22:34:02 2008
--- src/spell.c	Wed Feb 11 17:54:50 2009
***************
*** 2376,2382 ****
  
  	    /* If we are back at the starting line and there is no match then
  	     * give up. */
! 	    if (lnum == wp->w_cursor.lnum && !found_one)
  		break;
  
  	    /* Skip the characters at the start of the next line that were
--- 2376,2382 ----
  
  	    /* If we are back at the starting line and there is no match then
  	     * give up. */
! 	    if (lnum == wp->w_cursor.lnum && (!found_one || wrapped))
  		break;
  
  	    /* Skip the characters at the start of the next line that were
***************
*** 4956,4968 ****
   * Structure that is used to store the items in the word tree.  This avoids
   * the need to keep track of each allocated thing, everything is freed all at
   * once after ":mkspell" is done.
   */
  #define  SBLOCKSIZE 16000	/* size of sb_data */
  typedef struct sblock_S sblock_T;
  struct sblock_S
  {
-     sblock_T	*sb_next;	/* next block in list */
      int		sb_used;	/* nr of bytes already in use */
      char_u	sb_data[1];	/* data, actually longer */
  };
  
--- 4956,4971 ----
   * Structure that is used to store the items in the word tree.  This avoids
   * the need to keep track of each allocated thing, everything is freed all at
   * once after ":mkspell" is done.
+  * Note: "sb_next" must be just before "sb_data" to make sure the alignment of
+  * "sb_data" is correct for systems where pointers must be aligned on
+  * pointer-size boundaries and sizeof(pointer) > sizeof(int) (e.g., Sparc).
   */
  #define  SBLOCKSIZE 16000	/* size of sb_data */
  typedef struct sblock_S sblock_T;
  struct sblock_S
  {
      int		sb_used;	/* nr of bytes already in use */
+     sblock_T	*sb_next;	/* next block in list */
      char_u	sb_data[1];	/* data, actually longer */
  };
  
***************
*** 15011,15017 ****
  
  	case 0:
  	    /*
! 	     * Lenghts are equal, thus changes must result in same length: An
  	     * insert is only possible in combination with a delete.
  	     * 1: check if for identical strings
  	     */
--- 15014,15020 ----
  
  	case 0:
  	    /*
! 	     * Lengths are equal, thus changes must result in same length: An
  	     * insert is only possible in combination with a delete.
  	     * 1: check if for identical strings
  	     */
*** ../vim-7.2.105/src/version.c	Wed Feb 11 16:45:56 2009
--- src/version.c	Wed Feb 11 17:56:34 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     106,
  /**/

-- 
If bankers can count, how come they have eight windows and
only four tellers?

 /// 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    ///


--- NEW FILE 7.2.107 ---
To: vim-dev at vim.org
Subject: Patch 7.2.107
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.2.107
Problem:    When using a GUI dialog and ":echo" commands the messages are
	    deleted after the dialog. (Vicent Birebent)
Solution:   Don't call msg_end_prompt() since there was no prompt.
Files:	    src/message.c


*** ../vim-7.2.106/src/message.c	Tue Jan 13 16:37:31 2009
--- src/message.c	Wed Feb 11 18:38:14 2009
***************
*** 3309,3315 ****
      {
  	c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
  								   textfield);
! 	msg_end_prompt();
  
  	/* Flush output to avoid that further messages and redrawing is done
  	 * in the wrong order. */
--- 3309,3318 ----
      {
  	c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
  								   textfield);
! 	/* avoid a hit-enter prompt without clearing the cmdline */
! 	need_wait_return = FALSE;
! 	emsg_on_display = FALSE;
! 	cmdline_row = msg_row;
  
  	/* Flush output to avoid that further messages and redrawing is done
  	 * in the wrong order. */
*** ../vim-7.2.106/src/version.c	Wed Feb 11 17:57:43 2009
--- src/version.c	Wed Feb 11 18:46:12 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     107,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
79. All of your most erotic dreams have a scrollbar at the right side.

 /// 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    ///


--- NEW FILE 7.2.108 ---
To: vim-dev at vim.org
Subject: Patch 7.2.108
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.2.108 (after 7.2.105)
Problem:    Can't build without the diff feature.
Solution:   Add #ifdef.
Files:	    src/option.c


*** ../vim-7.2.107/src/option.c	Wed Feb 11 16:45:56 2009
--- src/option.c	Wed Feb 11 22:21:16 2009
***************
*** 4127,4132 ****
--- 4127,4133 ----
  		    errmsg = (char_u *)_("E520: Not allowed in a modeline");
  		    goto skip;
  		}
+ #ifdef FEAT_DIFF
  		/* In diff mode some options are overruled.  This avoids that
  		 * 'foldmethod' becomes "marker" instead of "diff" and that
  		 * "wrap" gets set. */
***************
*** 4134,4139 ****
--- 4135,4141 ----
  			&& (options[opt_idx].indir == PV_FDM
  			    || options[opt_idx].indir == PV_WRAP))
  		    goto skip;
+ #endif
  	    }
  
  #ifdef HAVE_SANDBOX
*** ../vim-7.2.107/src/version.c	Wed Feb 11 18:46:48 2009
--- src/version.c	Wed Feb 11 22:46:40 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     108,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
80. At parties, you introduce your spouse as your "service provider."

 /// 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    ///


--- NEW FILE 7.2.109 ---
To: vim-dev at vim.org
Subject: Patch 7.2.109
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.2.109
Problem:    'langmap' does not work for multi-byte characters.
Solution:   Add a list of mapped multi-byte characters. (based on work by
            Konstantin Korikov, Agathoklis Hatzimanikas)
Files:      runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h,
            src/normal.c, src/option.c, src/proto/option.pro, src/window.c
    

*** ../vim-7.2.108/runtime/doc/options.txt	Fri Nov 28 10:59:57 2008
--- runtime/doc/options.txt	Wed Feb 11 18:59:34 2009
***************
*** 4175,4183 ****
  	be able to execute Normal mode commands.
  	This is the opposite of the 'keymap' option, where characters are
  	mapped in Insert mode.
- 	This only works for 8-bit characters.  The value of 'langmap' may be
- 	specified with multi-byte characters (e.g., UTF-8), but only the lower
- 	8 bits of each character will be used.
  
  	Example (for Greek, in UTF-8):				*greek*  >
  	    :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
--- 4188,4193 ----
*** ../vim-7.2.108/src/edit.c	Wed Feb  4 11:19:40 2009
--- src/edit.c	Sat Feb 21 19:54:03 2009
***************
*** 7703,7711 ****
       */
      ++no_mapping;
      regname = plain_vgetc();
- #ifdef FEAT_LANGMAP
      LANGMAP_ADJUST(regname, TRUE);
- #endif
      if (regname == Ctrl_R || regname == Ctrl_O || regname == Ctrl_P)
      {
  	/* Get a third key for literal register insertion */
--- 7703,7709 ----
***************
*** 7714,7722 ****
  	add_to_showcmd_c(literally);
  #endif
  	regname = plain_vgetc();
- #ifdef FEAT_LANGMAP
  	LANGMAP_ADJUST(regname, TRUE);
- #endif
      }
      --no_mapping;
  
--- 7712,7718 ----
*** ../vim-7.2.108/src/macros.h	Wed Aug 15 20:41:07 2007
--- src/macros.h	Sat Feb 21 19:55:38 2009
***************
*** 127,141 ****
  #ifdef FEAT_LANGMAP
  /*
   * Adjust chars in a language according to 'langmap' option.
!  * NOTE that there is NO overhead if 'langmap' is not set; but even
!  * when set we only have to do 2 ifs and an array lookup.
   * Don't apply 'langmap' if the character comes from the Stuff buffer.
   * The do-while is just to ignore a ';' after the macro.
   */
! # define LANGMAP_ADJUST(c, condition) do { \
! 	if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
! 	    c = langmap_mapchar[c]; \
      } while (0)
  #endif
  
  /*
--- 127,157 ----
  #ifdef FEAT_LANGMAP
  /*
   * Adjust chars in a language according to 'langmap' option.
!  * NOTE that there is no noticeable overhead if 'langmap' is not set.
!  * When set the overhead for characters < 256 is small.
   * Don't apply 'langmap' if the character comes from the Stuff buffer.
   * The do-while is just to ignore a ';' after the macro.
   */
! # ifdef FEAT_MBYTE
! #  define LANGMAP_ADJUST(c, condition) \
!     do { \
!         if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
! 	{ \
! 	    if ((c) < 256) \
! 		c = langmap_mapchar[c]; \
! 	    else \
! 		c = langmap_adjust_mb(c); \
! 	} \
      } while (0)
+ # else
+ #  define LANGMAP_ADJUST(c, condition) \
+     do { \
+         if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
+             c = langmap_mapchar[c]; \
+     } while (0)
+ # endif
+ #else
+ # define LANGMAP_ADJUST(c, condition) /* nop */
  #endif
  
  /*
*** ../vim-7.2.108/src/normal.c	Wed Feb  4 11:45:28 2009
--- src/normal.c	Sat Feb 21 19:55:17 2009
***************
*** 651,660 ****
       * Get the command character from the user.
       */
      c = safe_vgetc();
- 
- #ifdef FEAT_LANGMAP
      LANGMAP_ADJUST(c, TRUE);
- #endif
  
  #ifdef FEAT_VISUAL
      /*
--- 651,657 ----
***************
*** 744,752 ****
  	    }
  	    ++no_zero_mapping;		/* don't map zero here */
  	    c = plain_vgetc();
- #ifdef FEAT_LANGMAP
  	    LANGMAP_ADJUST(c, TRUE);
- #endif
  	    --no_zero_mapping;
  	    if (ctrl_w)
  	    {
--- 741,747 ----
***************
*** 769,777 ****
  	    ++no_mapping;
  	    ++allow_keys;		/* no mapping for nchar, but keys */
  	    c = plain_vgetc();		/* get next character */
- #ifdef FEAT_LANGMAP
  	    LANGMAP_ADJUST(c, TRUE);
- #endif
  	    --no_mapping;
  	    --allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 764,770 ----
***************
*** 959,967 ****
  	     * "gr", "g'" and "g`".
  	     */
  	    ca.nchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
  	    LANGMAP_ADJUST(ca.nchar, TRUE);
- #endif
  #ifdef FEAT_CMDL_INFO
  	    need_flushbuf |= add_to_showcmd(ca.nchar);
  #endif
--- 952,958 ----
***************
*** 1062,1071 ****
  		}
  #endif
  
- #ifdef FEAT_LANGMAP
  		/* adjust chars > 127, except after "tTfFr" commands */
  		LANGMAP_ADJUST(*cp, !lang);
- #endif
  #ifdef FEAT_RIGHTLEFT
  		/* adjust Hebrew mapped char */
  		if (p_hkmap && lang && KeyTyped)
--- 1053,1060 ----
***************
*** 4630,4638 ****
  	    ++no_mapping;
  	    ++allow_keys;   /* no mapping for nchar, but allow key codes */
  	    nchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
  	    LANGMAP_ADJUST(nchar, TRUE);
- #endif
  	    --no_mapping;
  	    --allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 4619,4625 ----
***************
*** 4988,4996 ****
  		++no_mapping;
  		++allow_keys;   /* no mapping for nchar, but allow key codes */
  		nchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
  		LANGMAP_ADJUST(nchar, TRUE);
- #endif
  		--no_mapping;
  		--allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 4975,4981 ----
*** ../vim-7.2.108/src/option.c	Wed Feb 11 22:47:32 2009
--- src/option.c	Sat Feb 21 19:46:13 2009
***************
*** 10153,10177 ****
  
  #ifdef FEAT_LANGMAP
  /*
!  * Any character has an equivalent character.  This is used for keyboards that
!  * have a special language mode that sends characters above 128 (although
!  * other characters can be translated too).
   */
  
  /*
!  * char_u langmap_mapchar[256];
!  * Normally maps each of the 128 upper chars to an <128 ascii char; used to
!  * "translate" native lang chars in normal mode or some cases of
!  * insert mode without having to tediously switch lang mode back&forth.
   */
  
      static void
  langmap_init()
  {
      int i;
  
!     for (i = 0; i < 256; i++)		/* we init with a-one-to one map */
! 	langmap_mapchar[i] = i;
  }
  
  /*
--- 10153,10262 ----
  
  #ifdef FEAT_LANGMAP
  /*
!  * Any character has an equivalent 'langmap' character.  This is used for
!  * keyboards that have a special language mode that sends characters above
!  * 128 (although other characters can be translated too).  The "to" field is a
!  * Vim command character.  This avoids having to switch the keyboard back to
!  * ASCII mode when leaving Insert mode.
!  *
!  * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
!  * commands.
!  * When FEAT_MBYTE is defined langmap_mapga.ga_data is a sorted table of
!  * langmap_entry_T.  This does the same as langmap_mapchar[] for characters >=
!  * 256.
!  */
! # ifdef FEAT_MBYTE
! /*
!  * With multi-byte support use growarray for 'langmap' chars >= 256
   */
+ typedef struct
+ {
+     int	    from;
+     int     to;
+ } langmap_entry_T;
+ 
+ static garray_T langmap_mapga;
+ static void langmap_set_entry __ARGS((int from, int to));
+ 
+ /*
+  * Search for an entry in "langmap_mapga" for "from".  If found set the "to"
+  * field.  If not found insert a new entry at the appropriate location.
+  */
+     static void
+ langmap_set_entry(from, to)
+     int    from;
+     int    to;
+ {
+     langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
+     int             a = 0;
+     int             b = langmap_mapga.ga_len;
+ 
+     /* Do a binary search for an existing entry. */
+     while (a != b)
+     {
+ 	int i = (a + b) / 2;
+ 	int d = entries[i].from - from;
+ 
+ 	if (d == 0)
+ 	{
+ 	    entries[i].to = to;
+ 	    return;
+ 	}
+ 	if (d < 0)
+ 	    a = i + 1;
+ 	else
+ 	    b = i;
+     }
+ 
+     if (ga_grow(&langmap_mapga, 1) != OK)
+ 	return;  /* out of memory */
+ 
+     /* insert new entry at position "a" */
+     entries = (langmap_entry_T *)(langmap_mapga.ga_data) + a;
+     mch_memmove(entries + 1, entries,
+ 			(langmap_mapga.ga_len - a) * sizeof(langmap_entry_T));
+     ++langmap_mapga.ga_len;
+     entries[0].from = from;
+     entries[0].to = to;
+ }
  
  /*
!  * Apply 'langmap' to multi-byte character "c" and return the result.
   */
+     int
+ langmap_adjust_mb(c)
+     int c;
+ {
+     langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
+     int a = 0;
+     int b = langmap_mapga.ga_len;
+ 
+     while (a != b)
+     {
+ 	int i = (a + b) / 2;
+ 	int d = entries[i].from - c;
+ 
+ 	if (d == 0)
+ 	    return entries[i].to;  /* found matching entry */
+ 	if (d < 0)
+ 	    a = i + 1;
+ 	else
+ 	    b = i;
+     }
+     return c;  /* no entry found, return "c" unmodified */
+ }
+ # endif
  
      static void
  langmap_init()
  {
      int i;
  
!     for (i = 0; i < 256; i++)
! 	langmap_mapchar[i] = i;	 /* we init with a one-to-one map */
! # ifdef FEAT_MBYTE
!     ga_init2(&langmap_mapga, sizeof(langmap_entry_T), 8);
! # endif
  }
  
  /*
***************
*** 10185,10191 ****
      char_u  *p2;
      int	    from, to;
  
!     langmap_init();			    /* back to one-to-one map first */
  
      for (p = p_langmap; p[0] != NUL; )
      {
--- 10270,10279 ----
      char_u  *p2;
      int	    from, to;
  
! #ifdef FEAT_MBYTE
!     ga_clear(&langmap_mapga);		    /* clear the previous map first */
! #endif
!     langmap_init();			    /* back to one-to-one map */
  
      for (p = p_langmap; p[0] != NUL; )
      {
***************
*** 10235,10241 ****
  							     transchar(from));
  		return;
  	    }
! 	    langmap_mapchar[from & 255] = to;
  
  	    /* Advance to next pair */
  	    mb_ptr_adv(p);
--- 10323,10335 ----
  							     transchar(from));
  		return;
  	    }
! 
! #ifdef FEAT_MBYTE
! 	    if (from >= 256)
! 		langmap_set_entry(from, to);
! 	    else
! #endif
! 		langmap_mapchar[from & 255] = to;
  
  	    /* Advance to next pair */
  	    mb_ptr_adv(p);
*** ../vim-7.2.108/src/proto/option.pro	Sat May  5 19:28:04 2007
--- src/proto/option.pro	Wed Feb 11 21:21:05 2009
***************
*** 44,49 ****
--- 44,50 ----
  void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
  int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
  int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
+ int langmap_adjust_mb __ARGS((int c));
  int has_format_option __ARGS((int x));
  int shortmess __ARGS((int x));
  void vimrc_found __ARGS((char_u *fname, char_u *envname));
*** ../vim-7.2.108/src/window.c	Fri Nov 28 21:26:50 2008
--- src/window.c	Sat Feb 21 19:55:25 2009
***************
*** 594,602 ****
  		++allow_keys;   /* no mapping for xchar, but allow key codes */
  		if (xchar == NUL)
  		    xchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
  		LANGMAP_ADJUST(xchar, TRUE);
- #endif
  		--no_mapping;
  		--allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 594,600 ----
*** ../vim-7.2.108/src/version.c	Wed Feb 11 22:47:32 2009
--- src/version.c	Sat Feb 21 19:34:28 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     109,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
99. The hum of a cooling fan and the click of keys is comforting to you.

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.110 ---
To: vim-dev at vim.org
Subject: Patch 7.2.110
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.2.110
Problem:    Compiler warning for unused variable.
Solution:   Init the variable.
Files:      src/ex_docmd.c
    

*** ../vim-7.2.109/src/ex_docmd.c	Wed Jan 28 15:42:07 2009
--- src/ex_docmd.c	Tue Feb 17 03:47:13 2009
***************
*** 5916,5922 ****
      char_u	*q;
  
      char_u	*start;
!     char_u	*end;
      char_u	*ksp;
      size_t	len, totlen;
  
--- 5916,5922 ----
      char_u	*q;
  
      char_u	*start;
!     char_u	*end = NULL;
      char_u	*ksp;
      size_t	len, totlen;
  
*** ../vim-7.2.109/src/version.c	Sat Feb 21 20:27:00 2009
--- src/version.c	Sat Feb 21 20:35:50 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     110,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
100. The most exciting sporting events you noticed during summer 1996
    was Netscape vs. Microsoft.

 /// 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    ///


--- NEW FILE 7.2.111 ---
To: vim-dev at vim.org
Subject: Patch 7.2.111
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.2.111
Problem:    When using Visual block mode with 'cursorcolumn' it's unclear what
            is selected.
Solution:   Don't use 'cursorcolumn' highlighting inside the Visual selection.
            (idea by Dominique Pelle)
Files:      src/screen.c
    

*** ../vim-7.2.110/src/screen.c	Wed Oct  1 21:09:02 2008
--- src/screen.c	Sat Feb 21 21:04:19 2009
***************
*** 2596,2601 ****
--- 2596,2602 ----
      int		noinvcur = FALSE;	/* don't invert the cursor */
  #ifdef FEAT_VISUAL
      pos_T	*top, *bot;
+     int		lnum_in_visual_area = FALSE;
  #endif
      pos_T	pos;
      long	v;
***************
*** 2792,2800 ****
  	    top = &VIsual;
  	    bot = &curwin->w_cursor;
  	}
  	if (VIsual_mode == Ctrl_V)	/* block mode */
  	{
! 	    if (lnum >= top->lnum && lnum <= bot->lnum)
  	    {
  		fromcol = wp->w_old_cursor_fcol;
  		tocol = wp->w_old_cursor_lcol;
--- 2793,2802 ----
  	    top = &VIsual;
  	    bot = &curwin->w_cursor;
  	}
+ 	lnum_in_visual_area = (lnum >= top->lnum && lnum <= bot->lnum);
  	if (VIsual_mode == Ctrl_V)	/* block mode */
  	{
! 	    if (lnum_in_visual_area)
  	    {
  		fromcol = wp->w_old_cursor_fcol;
  		tocol = wp->w_old_cursor_lcol;
***************
*** 4557,4563 ****
  	 * highlight the cursor position itself. */
  	if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
  		&& lnum != wp->w_cursor.lnum
! 		&& draw_state == WL_LINE)
  	{
  	    vcol_save_attr = char_attr;
  	    char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
--- 4560,4567 ----
  	 * highlight the cursor position itself. */
  	if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
  		&& lnum != wp->w_cursor.lnum
! 		&& draw_state == WL_LINE
! 		&& !lnum_in_visual_area)
  	{
  	    vcol_save_attr = char_attr;
  	    char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
*** ../vim-7.2.110/src/version.c	Sat Feb 21 20:36:30 2009
--- src/version.c	Sat Feb 21 21:08:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     111,
  /**/

-- 
Contrary to popular belief, Unix is user friendly.
It just happens to be selective about who it makes friends with.
                                               -- Dave Parnas

 /// 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    ///


--- NEW FILE 7.2.112 ---
To: vim-dev at vim.org
Subject: Patch 7.2.112
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.2.112 
Problem:    Cursor invisible in Visual mode when 'number' is set and cursor in 
            first column. (Matti Niemenmaa, Renato Alves) 
Solution:   Check that vcol_prev is smaller than vcol. 
Files:      src/screen.c 


*** ../vim-7.2.111/src/screen.c	Sat Feb 21 21:10:24 2009
--- src/screen.c	Sat Feb 21 21:04:19 2009
***************
*** 3422,3427 ****
--- 3422,3428 ----
  			&& (*mb_ptr2cells)(ptr) > 1)
  #endif
  		    || ((int)vcol_prev == fromcol_prev
+ 			&& vcol_prev < vcol	/* not at margin */
  			&& vcol < tocol))
  		area_attr = attr;		/* start highlighting */
  	    else if (area_attr != 0
*** ../vim-7.2.111/src/version.c	Sat Feb 21 21:10:24 2009
--- src/version.c	Sat Feb 21 21:20:51 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     112,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
102. When filling out your driver's license application, you give
     your IP address.

 /// 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    ///


--- NEW FILE 7.2.113 ---
To: vim-dev at vim.org
Subject: Patch 7.2.113
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.2.113
Problem:    Crash for substitute() call using submatch(1) while there is no
            such submatch. (Yukihiro Nakadaira)
Solution:   Also check the start of the submatch is set, it can be NULL when
            an attempted match didn't work out.
Files:      src/regexp.c


*** ../vim-7.2.112/src/regexp.c	Fri Aug  8 13:45:31 2008
--- src/regexp.c	Sat Feb 21 21:46:49 2009
***************
*** 4532,4538 ****
  		cleanup_subexpr();
  		if (!REG_MULTI)		/* Single-line regexp */
  		{
! 		    if (reg_endp[no] == NULL)
  		    {
  			/* Backref was not set: Match an empty string. */
  			len = 0;
--- 4532,4538 ----
  		cleanup_subexpr();
  		if (!REG_MULTI)		/* Single-line regexp */
  		{
! 		    if (reg_startp[no] == NULL || reg_endp[no] == NULL)
  		    {
  			/* Backref was not set: Match an empty string. */
  			len = 0;
***************
*** 4548,4554 ****
  		}
  		else				/* Multi-line regexp */
  		{
! 		    if (reg_endpos[no].lnum < 0)
  		    {
  			/* Backref was not set: Match an empty string. */
  			len = 0;
--- 4548,4554 ----
  		}
  		else				/* Multi-line regexp */
  		{
! 		    if (reg_startpos[no].lnum < 0 || reg_endpos[no].lnum < 0)
  		    {
  			/* Backref was not set: Match an empty string. */
  			len = 0;
***************
*** 7279,7291 ****
      }
      else
      {
! 	if (submatch_match->endp[no] == NULL)
  	    retval = NULL;
  	else
- 	{
- 	    s = submatch_match->startp[no];
  	    retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
- 	}
      }
  
      return retval;
--- 7279,7289 ----
      }
      else
      {
! 	s = submatch_match->startp[no];
! 	if (s == NULL || submatch_match->endp[no] == NULL)
  	    retval = NULL;
  	else
  	    retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
      }
  
      return retval;
*** ../vim-7.2.112/src/version.c	Sat Feb 21 21:22:44 2009
--- src/version.c	Sat Feb 21 22:01:56 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     113,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
103. When you find yourself in the "Computer" section of Barnes & Noble
     enjoying yourself.

 /// 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    ///


--- NEW FILE 7.2.114 ---
To: vim-dev at vim.org
Subject: Patch 7.2.114
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.2.114
Problem:    Using wrong printf format.
Solution:   Use "%ld" instead of "%d". (Dominique Pelle)
Files:      src/netbeans.c


*** ../vim-7.2.113/src/netbeans.c	Tue Jan  6 16:13:42 2009
--- src/netbeans.c	Tue Feb 17 03:21:33 2009
***************
*** 1924,1930 ****
  	    vim_free(path);
  	    if (bufp == NULL)
  	    {
! 	    	nbdebug(("    File %s not found in setBufferNumber\n", args));
  		EMSG2("E642: File %s not found in setBufferNumber", args);
  		return FAIL;
  	    }
--- 1924,1930 ----
  	    vim_free(path);
  	    if (bufp == NULL)
  	    {
! 		nbdebug(("    File %s not found in setBufferNumber\n", args));
  		EMSG2("E642: File %s not found in setBufferNumber", args);
  		return FAIL;
  	    }
***************
*** 2318,2324 ****
  	    }
  	    if (pos)
  	    {
! 		coloncmd(":sign place %d line=%d name=%d buffer=%d",
  			   serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
  		if (typeNum == curPCtype)
  		    coloncmd(":sign jump %d buffer=%d", serNum,
--- 2318,2324 ----
  	    }
  	    if (pos)
  	    {
! 		coloncmd(":sign place %d line=%ld name=%d buffer=%d",
  			   serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
  		if (typeNum == curPCtype)
  		    coloncmd(":sign jump %d buffer=%d", serNum,
***************
*** 2422,2428 ****
  				GUARDED) == 0)
  			    {
  				coloncmd(
! 				    ":sign place %d line=%d name=%d buffer=%d",
  				     guardId++, lnum, GUARDED,
  				     buf->bufp->b_fnum);
  			    }
--- 2422,2428 ----
  				GUARDED) == 0)
  			    {
  				coloncmd(
! 				    ":sign place %d line=%ld name=%d buffer=%d",
  				     guardId++, lnum, GUARDED,
  				     buf->bufp->b_fnum);
  			    }
*** ../vim-7.2.113/src/version.c	Sat Feb 21 22:03:06 2009
--- src/version.c	Sat Feb 21 22:11:21 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     114,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
104. When people ask about the Presidential Election you ask "Which country?"

 /// 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    ///


--- NEW FILE 7.2.115 ---
To: vim-dev at vim.org
Subject: Patch 7.2.115
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.2.115
Problem:    Some debugging code is never used.
Solution:   Remove nbtrace() and nbprt(). (Dominique Pelle)
Files:      src/nbdebug.c, src/nbdebug.h

*** ../vim-7.2.114/src/nbdebug.c	Tue Jun 24 23:54:30 2008
--- src/nbdebug.c	Tue Feb 17 03:26:07 2009
***************
*** 33,39 ****
  u_int		 nb_dlevel = 0;		/* nb_debug verbosity level */
  
  void		 nbdb(char *, ...);
- void		 nbtrace(char *, ...);
  
  static int	 lookup(char *);
  #ifdef USE_NB_ERRORHANDLER
--- 33,38 ----
***************
*** 100,124 ****
  }    /* end nbdebug_log_init */
  
  
- 
- 
- void
- nbtrace(
- 	char		*fmt,
- 	...)
- {
- 	va_list		 ap;
- 
- 	if (nb_debug!= NULL && (nb_dlevel & (NB_TRACE | NB_TRACE_VERBOSE))) {
- 		va_start(ap, fmt);
- 		vfprintf(nb_debug, fmt, ap);
- 		va_end(ap);
- 		fflush(nb_debug);
- 	}
- 
- }    /* end nbtrace */
- 
- 
  void
  nbdbg(
  	char		*fmt,
--- 99,104 ----
***************
*** 136,158 ****
  }    /* end nbdbg */
  
  
- void
- nbprt(
- 	char		*fmt,
- 	...)
- {
- 	va_list		 ap;
- 
- 	if (nb_debug != NULL && nb_dlevel & NB_PRINT) {
- 		va_start(ap, fmt);
- 		vfprintf(nb_debug, fmt, ap);
- 		va_end(ap);
- 		fflush(nb_debug);
- 	}
- 
- }    /* end nbprt */
- 
- 
  static int
  lookup(
  	char		*file)
--- 116,121 ----
*** ../vim-7.2.114/src/nbdebug.h	Wed Jun 25 00:47:21 2008
--- src/nbdebug.h	Tue Feb 17 03:26:38 2009
***************
*** 43,50 ****
  
  
  void		 nbdbg(char *, ...);
- void		 nbprt(char *, ...);
- void		 nbtrace(char *, ...);
  
  void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
  void nbdebug_log_init __ARGS((char *log_var, char *level_var));
--- 43,48 ----
***************
*** 70,88 ****
  {
  }
  
- void
- nbprt(
- 	char		*fmt,
- 	...)
- {
- }
- 
- void
- nbtrace(
- 	char		*fmt,
- 	...)
- {
- }
- 
  #endif /* NBDEBUG */
  #endif /* NBDEBUG_H */
--- 68,72 ----
*** ../vim-7.2.114/src/version.c	Sat Feb 21 22:12:43 2009
--- src/version.c	Sat Feb 21 22:28:21 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     115,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
105. When someone asks you for your address, you tell them your URL.

 /// 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    ///


--- NEW FILE 7.2.116 ---
To: vim-dev at vim.org
Subject: Patch 7.2.116
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.2.116 
Problem:    Not all memory is freed when EXITFREE is defined. 
Solution:   Free allocated memory on exit. (Dominique Pelle) 
Files:      src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c, 
            src/tag.c 
    

*** ../vim-7.2.115/src/tag.c	Tue Jan 13 17:27:18 2009
--- src/tag.c	Tue Feb 17 03:43:32 2009
***************
*** 2542,2547 ****
--- 2542,2556 ----
  {
      ga_clear_strings(&tag_fnames);
      do_tag(NULL, DT_FREE, 0, 0, 0);
+     tag_freematch();
+ 
+ # if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+     if (ptag_entry.tagname)
+     {
+         vim_free(ptag_entry.tagname);
+         ptag_entry.tagname = NULL;
+     }
+ # endif
  }
  #endif
  
*** ../vim-7.2.115/src/version.c	Sat Feb 21 22:29:12 2009
--- src/version.c	Sat Feb 21 22:56:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     116,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
106. When told to "go to your room" you inform your parents that you
     can't...because you were kicked out and banned.

 /// 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    ///


--- NEW FILE 7.2.117 ---
To: vim-dev at vim.org
Subject: Patch 7.2.117
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.2.117
Problem:    Location list incorrectly labelled "Quickfix List".
Solution:   Break out of both loops for finding window for location list
            buffer. (Lech Lorens)
Files:      src/buffer.c, src/quickfix.c, src/screen.c


*** ../vim-7.2.116/src/buffer.c	Tue Jan  6 16:13:42 2009
--- src/buffer.c	Tue Feb 17 04:00:51 2009
***************
*** 5098,5104 ****
  	 */
  	FOR_ALL_TAB_WINDOWS(tp, win)
  	    if (win->w_buffer == buf)
! 		break;
  	if (win != NULL && win->w_llist_ref != NULL)
  	    return _("[Location List]");
  	else
--- 5098,5105 ----
  	 */
  	FOR_ALL_TAB_WINDOWS(tp, win)
  	    if (win->w_buffer == buf)
! 		goto win_found;
! win_found:
  	if (win != NULL && win->w_llist_ref != NULL)
  	    return _("[Location List]");
  	else
*** ../vim-7.2.116/src/quickfix.c	Sat Nov 15 14:10:23 2008
--- src/quickfix.c	Sat Feb 21 22:54:25 2009
***************
*** 1610,1619 ****
  		{
  		    goto_tabpage_win(tp, wp);
  		    usable_win = 1;
! 		    break;
  		}
  	    }
  	}
  
  	/*
  	 * If there is only one window and it is the quickfix window, create a
--- 1612,1622 ----
  		{
  		    goto_tabpage_win(tp, wp);
  		    usable_win = 1;
! 		    goto win_found;
  		}
  	    }
  	}
+ win_found:
  
  	/*
  	 * If there is only one window and it is the quickfix window, create a
*** ../vim-7.2.116/src/screen.c	Sat Feb 21 21:22:44 2009
--- src/screen.c	Sat Feb 21 21:04:19 2009
***************
*** 7452,7461 ****
  	{
  	    outofmem = TRUE;
  #ifdef FEAT_WINDOWS
! 	    break;
  #endif
  	}
      }
  
  #ifdef FEAT_MBYTE
      for (i = 0; i < p_mco; ++i)
--- 7452,7464 ----
  	{
  	    outofmem = TRUE;
  #ifdef FEAT_WINDOWS
! 	    goto give_up;
  #endif
  	}
      }
+ #ifdef FEAT_WINDOWS
+ give_up:
+ #endif
  
  #ifdef FEAT_MBYTE
      for (i = 0; i < p_mco; ++i)
*** ../vim-7.2.116/src/version.c	Sat Feb 21 22:57:10 2009
--- src/version.c	Sat Feb 21 23:58:24 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     117,
  /**/

-- 
Laughing helps. It's like jogging on the inside.

 /// 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    ///


--- NEW FILE 7.2.118 ---
To: vim-dev at vim.org
Subject: Patch 7.2.118
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.2.118
Problem:    <PageUp> at the more prompt only does half a page.
Solution:   Make <PageUp> go up a whole page.  Also make 'f' go a page
            forward, but not quit the more prompt. (Markus Heidelberg)
Files:      src/message.c


*** ../vim-7.2.117/src/message.c	Wed Feb 11 18:46:48 2009
--- src/message.c	Fri Feb 20 05:20:15 2009
***************
*** 976,982 ****
  		    }
  		}
  		else if (msg_scrolled > Rows - 2
! 				     && (c == 'j' || c == K_DOWN || c == 'd'))
  		    c = K_IGNORE;
  	    }
  	} while ((had_got_int && c == Ctrl_C)
--- 976,982 ----
  		    }
  		}
  		else if (msg_scrolled > Rows - 2
! 			 && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f'))
  		    c = K_IGNORE;
  	    }
  	} while ((had_got_int && c == Ctrl_C)
***************
*** 2504,2510 ****
  	    break;
  
  	case 'u':		/* Up half a page */
- 	case K_PAGEUP:
  	    scroll = -(Rows / 2);
  	    break;
  
--- 2504,2509 ----
***************
*** 2513,2522 ****
--- 2512,2523 ----
  	    break;
  
  	case 'b':		/* one page back */
+ 	case K_PAGEUP:
  	    scroll = -(Rows - 1);
  	    break;
  
  	case ' ':		/* one extra page */
+ 	case 'f':
  	case K_PAGEDOWN:
  	case K_LEFTMOUSE:
  	    scroll = Rows - 1;
*** ../vim-7.2.117/src/version.c	Sun Feb 22 00:01:42 2009
--- src/version.c	Sun Feb 22 00:57:16 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     118,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
109. You actually read -- and enjoy -- lists like this.

 /// 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    ///


--- NEW FILE 7.2.119 ---
To: vim-dev at vim.org
Subject: Patch 7.2.119
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.2.119
Problem:    Status line is redrawn too often.
Solution:   Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira)
Files:      src/screen.c


*** ../vim-7.2.118/src/screen.c	Sun Feb 22 00:01:42 2009
--- src/screen.c	Sun Feb 22 01:07:38 2009
***************
*** 6362,6368 ****
  		    && c == 0x8e
  		    && ScreenLines2[off] != ptr[1])
  		|| (enc_utf8
! 		    && (ScreenLinesUC[off] != (u8char_T)u8c
  			|| screen_comp_differs(off, u8cc)))
  #endif
  		|| ScreenAttrs[off] != attr
--- 6362,6368 ----
  		    && c == 0x8e
  		    && ScreenLines2[off] != ptr[1])
  		|| (enc_utf8
! 		    && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0)
  			|| screen_comp_differs(off, u8cc)))
  #endif
  		|| ScreenAttrs[off] != attr
*** ../vim-7.2.118/src/version.c	Sun Feb 22 00:58:03 2009
--- src/version.c	Sun Feb 22 01:09:54 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     119,
  /**/

-- 
In a world without walls and borders, who needs windows and gates?

 /// 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    ///


--- NEW FILE 7.2.120 ---
To: vim-dev at vim.org
Subject: Patch 7.2.120
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.2.120
Problem:    When opening the quickfix window or splitting the window and
            setting the location list, the location list is copied and then
            deleted, which is inefficient.
Solution:   Don't copy the location list when not needed. (Lech Lorens)
Files:      src/quickfix.c, src/vim.h, src/window.c


*** ../vim-7.2.119/src/quickfix.c	Sun Feb 22 00:01:42 2009
--- src/quickfix.c	Sat Feb 21 22:54:25 2009
***************
*** 1419,1424 ****
--- 1419,1425 ----
      int			opened_window = FALSE;
      win_T		*win;
      win_T		*altwin;
+     int			flags;
  #endif
      win_T		*oldwin = curwin;
      int			print_message = TRUE;
***************
*** 1531,1537 ****
      if (qf_ptr->qf_type == 1 && (!curwin->w_buffer->b_help || cmdmod.tab != 0))
      {
  	win_T	*wp;
- 	int	n;
  
  	if (cmdmod.tab != 0)
  	    wp = NULL;
--- 1532,1537 ----
***************
*** 1547,1559 ****
  	     * Split off help window; put it at far top if no position
  	     * specified, the current window is vertically split and narrow.
  	     */
! 	    n = WSP_HELP;
  # ifdef FEAT_VERTSPLIT
  	    if (cmdmod.split == 0 && curwin->w_width != Columns
  						      && curwin->w_width < 80)
! 		n |= WSP_TOP;
  # endif
! 	    if (win_split(0, n) == FAIL)
  		goto theend;
  	    opened_window = TRUE;	/* close it when fail */
  
--- 1547,1562 ----
  	     * Split off help window; put it at far top if no position
  	     * specified, the current window is vertically split and narrow.
  	     */
! 	    flags = WSP_HELP;
  # ifdef FEAT_VERTSPLIT
  	    if (cmdmod.split == 0 && curwin->w_width != Columns
  						      && curwin->w_width < 80)
! 		flags |= WSP_TOP;
  # endif
! 	    if (qi != &ql_info)
! 		flags |= WSP_NEWLOC;  /* don't copy the location list */
! 
! 	    if (win_split(0, flags) == FAIL)
  		goto theend;
  	    opened_window = TRUE;	/* close it when fail */
  
***************
*** 1563,1569 ****
  	    if (qi != &ql_info)	    /* not a quickfix list */
  	    {
  		/* The new window should use the supplied location list */
- 		qf_free_all(curwin);
  		curwin->w_llist = qi;
  		qi->qf_refcount++;
  	    }
--- 1566,1571 ----
***************
*** 1624,1630 ****
  	{
  	    ll_ref = curwin->w_llist_ref;
  
! 	    if (win_split(0, WSP_ABOVE) == FAIL)
  		goto failed;		/* not enough room for window */
  	    opened_window = TRUE;	/* close it when fail */
  	    p_swb = empty_option;	/* don't split again */
--- 1626,1635 ----
  	{
  	    ll_ref = curwin->w_llist_ref;
  
! 	    flags = WSP_ABOVE;
! 	    if (ll_ref != NULL)
! 		flags |= WSP_NEWLOC;
! 	    if (win_split(0, flags) == FAIL)
  		goto failed;		/* not enough room for window */
  	    opened_window = TRUE;	/* close it when fail */
  	    p_swb = empty_option;	/* don't split again */
***************
*** 1636,1642 ****
  	    {
  		/* The new window should use the location list from the
  		 * location list window */
- 		qf_free_all(curwin);
  		curwin->w_llist = ll_ref;
  		ll_ref->qf_refcount++;
  	    }
--- 1641,1646 ----
***************
*** 2311,2325 ****
  	if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
  	    /* Create the new window at the very bottom. */
  	    win_goto(lastwin);
! 	if (win_split(height, WSP_BELOW) == FAIL)
  	    return;		/* not enough room for window */
  #ifdef FEAT_SCROLLBIND
  	curwin->w_p_scb = FALSE;
  #endif
  
- 	/* Remove the location list for the quickfix window */
- 	qf_free_all(curwin);
- 
  	if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
  	{
  	    /*
--- 2315,2326 ----
  	if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
  	    /* Create the new window at the very bottom. */
  	    win_goto(lastwin);
! 	if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
  	    return;		/* not enough room for window */
  #ifdef FEAT_SCROLLBIND
  	curwin->w_p_scb = FALSE;
  #endif
  
  	if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
  	{
  	    /*
*** ../vim-7.2.119/src/vim.h	Thu Nov 20 14:11:47 2008
--- src/vim.h	Sat Feb 21 22:53:03 2009
***************
*** 1057,1062 ****
--- 1057,1063 ----
  #define WSP_HELP	16	/* creating the help window */
  #define WSP_BELOW	32	/* put new window below/right */
  #define WSP_ABOVE	64	/* put new window above/left */
+ #define WSP_NEWLOC	128	/* don't copy location list */
  
  /*
   * arguments for gui_set_shellsize()
*** ../vim-7.2.119/src/window.c	Sat Feb 21 20:27:00 2009
--- src/window.c	Sat Feb 21 23:56:41 2009
***************
*** 12,18 ****
  static int path_is_url __ARGS((char_u *p));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
  static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
! static void win_init __ARGS((win_T *newp, win_T *oldp));
  static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
  static void frame_setheight __ARGS((frame_T *curfrp, int height));
  #ifdef FEAT_VERTSPLIT
--- 12,18 ----
  static int path_is_url __ARGS((char_u *p));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
  static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
! static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
  static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
  static void frame_setheight __ARGS((frame_T *curfrp, int height));
  #ifdef FEAT_VERTSPLIT
***************
*** 911,917 ****
  	    return FAIL;
  
  	/* make the contents of the new window the same as the current one */
! 	win_init(wp, curwin);
      }
  
      /*
--- 911,917 ----
  	    return FAIL;
  
  	/* make the contents of the new window the same as the current one */
! 	win_init(wp, curwin, flags);
      }
  
      /*
***************
*** 1160,1170 ****
   * Initialize window "newp" from window "oldp".
   * Used when splitting a window and when creating a new tab page.
   * The windows will both edit the same buffer.
   */
      static void
! win_init(newp, oldp)
      win_T	*newp;
      win_T	*oldp;
  {
      int		i;
  
--- 1160,1174 ----
   * Initialize window "newp" from window "oldp".
   * Used when splitting a window and when creating a new tab page.
   * The windows will both edit the same buffer.
+  * WSP_NEWLOC may be specified in flags to prevent the location list from
+  * being copied.
   */
+ /*ARGSUSED*/
      static void
! win_init(newp, oldp, flags)
      win_T	*newp;
      win_T	*oldp;
+     int		 flags;
  {
      int		i;
  
***************
*** 1189,1195 ****
      copy_jumplist(oldp, newp);
  #endif
  #ifdef FEAT_QUICKFIX
!     copy_loclist(oldp, newp);
  #endif
      if (oldp->w_localdir != NULL)
  	newp->w_localdir = vim_strsave(oldp->w_localdir);
--- 1193,1206 ----
      copy_jumplist(oldp, newp);
  #endif
  #ifdef FEAT_QUICKFIX
!     if (flags & WSP_NEWLOC)
!     {
! 	/* Don't copy the location list.  */
! 	newp->w_llist = NULL;
! 	newp->w_llist_ref = NULL;
!     }
!     else
! 	copy_loclist(oldp, newp);
  #endif
      if (oldp->w_localdir != NULL)
  	newp->w_localdir = vim_strsave(oldp->w_localdir);
***************
*** 3219,3225 ****
      else
      {
  	/* First window in new tab page, initialize it from "oldwin". */
! 	win_init(curwin, oldwin);
  
  # ifdef FEAT_SCROLLBIND
  	/* We don't want scroll-binding in the first window. */
--- 3230,3236 ----
      else
      {
  	/* First window in new tab page, initialize it from "oldwin". */
! 	win_init(curwin, oldwin, 0);
  
  # ifdef FEAT_SCROLLBIND
  	/* We don't want scroll-binding in the first window. */
*** ../vim-7.2.119/src/version.c	Sun Feb 22 01:13:45 2009
--- src/version.c	Sun Feb 22 02:32:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     120,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
110. You actually volunteer to become your employer's webmaster.

 /// 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    ///


--- NEW FILE 7.2.121 ---
To: vim-dev at vim.org
Subject: Patch 7.2.121
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.2.121
Problem:    In gvim "!grep a *.c" spews out a lot of text that can't be
            stopped with CTRL-C.
Solution:   When looping to read and show text, do check for typed characters
            every two seconds.
Files:      src/os_unix.c


*** ../vim-7.2.120/src/os_unix.c	Wed Feb  4 14:18:44 2009
--- src/os_unix.c	Sun Feb 22 00:54:05 2009
***************
*** 4092,4097 ****
--- 4092,4100 ----
  		int	    fromshell_fd;
  		garray_T    ga;
  		int	    noread_cnt;
+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+ 		struct timeval  start_tv;
+ # endif
  
  # ifdef FEAT_GUI
  		if (pty_master_fd >= 0)
***************
*** 4201,4207 ****
  		    ga_init2(&ga, 1, BUFLEN);
  
  		noread_cnt = 0;
! 
  		for (;;)
  		{
  		    /*
--- 4204,4212 ----
  		    ga_init2(&ga, 1, BUFLEN);
  
  		noread_cnt = 0;
! # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
! 		gettimeofday(&start_tv, NULL);
! # endif
  		for (;;)
  		{
  		    /*
***************
*** 4214,4238 ****
  		     * that a typed password is echoed for ssh or gpg command.
  		     * Don't get characters when the child has already
  		     * finished (wait_pid == 0).
- 		     * Don't get extra characters when we already have one.
  		     * Don't read characters unless we didn't get output for a
! 		     * while, avoids that ":r !ls" eats typeahead.
  		     */
  		    len = 0;
  		    if (!(options & SHELL_EXPAND)
  			    && ((options &
  					 (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
  				      != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
! #ifdef FEAT_GUI
  						    || gui.in_use
! #endif
  						    )
  			    && wait_pid == 0
! 			    && (ta_len > 0
! 				|| (noread_cnt > 4
! 				    && (len = ui_inchar(ta_buf,
! 						       BUFLEN, 10L, 0)) > 0)))
  		    {
  			/*
  			 * For pipes:
  			 * Check for CTRL-C: send interrupt signal to child.
--- 4219,4252 ----
  		     * that a typed password is echoed for ssh or gpg command.
  		     * Don't get characters when the child has already
  		     * finished (wait_pid == 0).
  		     * Don't read characters unless we didn't get output for a
! 		     * while (noread_cnt > 4), avoids that ":r !ls" eats
! 		     * typeahead.
  		     */
  		    len = 0;
  		    if (!(options & SHELL_EXPAND)
  			    && ((options &
  					 (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
  				      != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
! # ifdef FEAT_GUI
  						    || gui.in_use
! # endif
  						    )
  			    && wait_pid == 0
! 			    && (ta_len > 0 || noread_cnt > 4))
  		    {
+ 		      if (ta_len == 0)
+ 		      {
+ 			  /* Get extra characters when we don't have any.
+ 			   * Reset the counter and timer. */
+ 			  noread_cnt = 0;
+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+ 			  gettimeofday(&start_tv, NULL);
+ # endif
+ 			  len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
+ 		      }
+ 		      if (ta_len > 0 || len > 0)
+ 		      {
  			/*
  			 * For pipes:
  			 * Check for CTRL-C: send interrupt signal to child.
***************
*** 4334,4342 ****
  			    {
  				ta_len -= len;
  				mch_memmove(ta_buf, ta_buf + len, ta_len);
- 				noread_cnt = 0;
  			    }
  			}
  		    }
  
  		    if (got_int)
--- 4348,4356 ----
  			    {
  				ta_len -= len;
  				mch_memmove(ta_buf, ta_buf + len, ta_len);
  			    }
  			}
+ 		      }
  		    }
  
  		    if (got_int)
***************
*** 4444,4449 ****
--- 4458,4482 ----
  			out_flush();
  			if (got_int)
  			    break;
+ 
+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+ 			{
+ 			    struct timeval  now_tv;
+ 			    long	    msec;
+ 
+ 			    /* Avoid that we keep looping here without
+ 			     * checking for a CTRL-C for a long time.  Don't
+ 			     * break out too often to avoid losing typeahead. */
+ 			    gettimeofday(&now_tv, NULL);
+ 			    msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
+ 				+ (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
+ 			    if (msec > 2000)
+ 			    {
+ 				noread_cnt = 5;
+ 				break;
+ 			    }
+ 			}
+ # endif
  		    }
  
  		    /* If we already detected the child has finished break the
*** ../vim-7.2.120/src/version.c	Sun Feb 22 02:36:36 2009
--- src/version.c	Sun Feb 22 02:48:03 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     121,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
111. You and your friends get together regularly on IRC, even though
     all of you live in the same city.

 /// 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    ///


--- NEW FILE 7.2.122 ---
To: vim-dev at vim.org
Subject: Patch 7.2.122
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.2.122
Problem:    Invalid memory access when the VimResized autocommand changes
            'columns' and/or 'lines'.
Solution:   After VimResized check for changed values. (Dominique Pelle)
Files:      src/screen.c


*** ../vim-7.2.121/src/screen.c	Sun Feb 22 01:13:45 2009
--- src/screen.c	Sun Feb 22 01:07:38 2009
***************
*** 7368,7374 ****
--- 7368,7378 ----
  #endif
      static int	    entered = FALSE;		/* avoid recursiveness */
      static int	    done_outofmem_msg = FALSE;	/* did outofmem message */
+ #ifdef FEAT_AUTOCMD
+     int		    retry_count = 0;
  
+ retry:
+ #endif
      /*
       * Allocation of the screen buffers is done only when the size changes and
       * when Rows and Columns have been set and we have started doing full
***************
*** 7643,7650 ****
      --RedrawingDisabled;
  
  #ifdef FEAT_AUTOCMD
!     if (starting == 0)
  	apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
  #endif
  }
  
--- 7647,7663 ----
      --RedrawingDisabled;
  
  #ifdef FEAT_AUTOCMD
!     /*
!      * Do not apply autocommands more than 3 times to avoid an endless loop
!      * in case applying autocommands always changes Rows or Columns.
!      */
!     if (starting == 0 && ++retry_count <= 3)
!     {
  	apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+ 	/* In rare cases, autocommands may have altered Rows or Columns,
+ 	 * jump back to check if we need to allocate the screen again. */
+ 	goto retry;
+     }
  #endif
  }
  
*** ../vim-7.2.121/src/version.c	Sun Feb 22 02:51:37 2009
--- src/version.c	Sun Feb 22 21:11:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     122,
  /**/

-- 
FIXME and XXX are two common keywords used to mark broken or incomplete code
not only since XXX as a sex reference would grab everbodys attention but
simply due to the fact that Vim would highlight these words.
					-- Hendrik Scholz

 /// 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    ///


--- NEW FILE 7.2.123 ---
To: vim-dev at vim.org
Subject: Patch 7.2.123
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.2.123
Problem:    Typing 'q' at more prompt for ":map" output still displays another
            line, causing another more prompt. (Markus Heidelberg)
Solution:   Quit listing maps when 'q' typed.
Files:      src/getchar.c


*** ../vim-7.2.122/src/getchar.c	Fri Nov 28 12:05:07 2008
--- src/getchar.c	Sun Feb 22 23:10:45 2009
***************
*** 3816,3822 ****
--- 3816,3826 ----
      int len = 1;
  
      if (msg_didout || msg_silent != 0)
+     {
  	msg_putchar('\n');
+ 	if (got_int)	    /* 'q' typed at MORE prompt */
+ 	    return;
+     }
      if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
  	msg_putchar('!');			/* :map! */
      else if (mp->m_mode & INSERT)
*** ../vim-7.2.122/src/version.c	Sun Feb 22 21:12:22 2009
--- src/version.c	Sun Feb 22 23:16:29 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     123,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."

 /// 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    ///


--- NEW FILE 7.2.124 ---
To: vim-dev at vim.org
Subject: Patch 7.2.124
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.2.124
Problem:    Typing 'q' at more prompt for ":tselect" output still displays
            more lines, causing another more prompt. (Markus Heidelberg)
Solution:   Quit listing tags when 'q' typed.
Files:      src/tag.c


*** ../vim-7.2.123/src/tag.c	Sat Feb 21 22:57:10 2009
--- src/tag.c	Mon Feb 23 00:07:24 2009
***************
*** 618,624 ****
  		taglen_advance(taglen);
  		MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
  
! 		for (i = 0; i < num_matches; ++i)
  		{
  		    parse_match(matches[i], &tagp);
  		    if (!new_tag && (
--- 618,624 ----
  		taglen_advance(taglen);
  		MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
  
! 		for (i = 0; i < num_matches && !got_int; ++i)
  		{
  		    parse_match(matches[i], &tagp);
  		    if (!new_tag && (
***************
*** 655,660 ****
--- 655,662 ----
  		    }
  		    if (msg_col > 0)
  			msg_putchar('\n');
+ 		    if (got_int)
+ 			break;
  		    msg_advance(15);
  
  		    /* print any extra fields */
***************
*** 689,694 ****
--- 691,698 ----
  				if (msg_col + ptr2cells(p) >= Columns)
  				{
  				    msg_putchar('\n');
+ 				    if (got_int)
+ 					break;
  				    msg_advance(15);
  				}
  				p = msg_outtrans_one(p, attr);
***************
*** 704,709 ****
--- 708,715 ----
  			if (msg_col > 15)
  			{
  			    msg_putchar('\n');
+ 			    if (got_int)
+ 				break;
  			    msg_advance(15);
  			}
  		    }
***************
*** 734,739 ****
--- 740,747 ----
  		    {
  			if (msg_col + (*p == TAB ? 1 : ptr2cells(p)) > Columns)
  			    msg_putchar('\n');
+ 			if (got_int)
+ 			    break;
  			msg_advance(15);
  
  			/* skip backslash used for escaping command char */
***************
*** 760,771 ****
  		    if (msg_col)
  			msg_putchar('\n');
  		    ui_breakcheck();
- 		    if (got_int)
- 		    {
- 			got_int = FALSE;	/* only stop the listing */
- 			break;
- 		    }
  		}
  		ask_for_selection = TRUE;
  	    }
  #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
--- 768,776 ----
  		    if (msg_col)
  			msg_putchar('\n');
  		    ui_breakcheck();
  		}
+ 		if (got_int)
+ 		    got_int = FALSE;	/* only stop the listing */
  		ask_for_selection = TRUE;
  	    }
  #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
*** ../vim-7.2.123/src/version.c	Sun Feb 22 23:42:08 2009
--- src/version.c	Mon Feb 23 00:51:57 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     124,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
123. You ask the car dealer to install an extra cigarette lighter
     on your new car to power your notebook.

 /// 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    ///


--- NEW FILE 7.2.125 ---
To: vim-dev at vim.org
Subject: Patch 7.2.125
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.2.125
Problem:    Leaking memory when reading XPM bitmap for a sign.
Solution:   Don't allocate the memory twice. (Dominique Pelle)
Files:      src/gui_x11.c


*** ../vim-7.2.124/src/gui_x11.c	Wed Nov 12 13:07:48 2008
--- src/gui_x11.c	Sun Feb 22 21:58:19 2009
***************
*** 1587,1592 ****
--- 1587,1594 ----
      XtCloseDisplay(gui.dpy);
      gui.dpy = NULL;
      vimShell = (Widget)0;
+     vim_free(gui_argv);
+     gui_argv = NULL;
  }
  
  /*
***************
*** 1761,1766 ****
--- 1763,1770 ----
       * says that this isn't needed when exiting, so just skip it. */
      XtCloseDisplay(gui.dpy);
  #endif
+     vim_free(gui_argv);
+     gui_argv = NULL;
  }
  
  /*
***************
*** 3439,3485 ****
      char_u	    *signfile;
  {
      XpmAttributes   attrs;
!     XImage	    *sign;
      int		    status;
  
      /*
       * Setup the color substitution table.
       */
-     sign = NULL;
      if (signfile[0] != NUL && signfile[0] != '-')
      {
! 	sign = (XImage *)alloc(sizeof(XImage));
! 	if (sign != NULL)
  	{
! 	    XpmColorSymbol color[5] =
! 	    {
! 		{"none", NULL, 0},
! 		{"iconColor1", NULL, 0},
! 		{"bottomShadowColor", NULL, 0},
! 		{"topShadowColor", NULL, 0},
! 		{"selectColor", NULL, 0}
! 	    };
! 	    attrs.valuemask = XpmColorSymbols;
! 	    attrs.numsymbols = 2;
! 	    attrs.colorsymbols = color;
! 	    attrs.colorsymbols[0].pixel = gui.back_pixel;
! 	    attrs.colorsymbols[1].pixel = gui.norm_pixel;
! 	    status = XpmReadFileToImage(gui.dpy, (char *)signfile,
  							 &sign, NULL, &attrs);
! 
! 	    if (status == 0)
! 	    {
! 		/* Sign width is fixed at two columns now.
! 		if (sign->width > gui.sign_width)
! 		    gui.sign_width = sign->width + 8; */
! 	    }
! 	    else
! 	    {
! 		vim_free(sign);
! 		sign = NULL;
! 		EMSG(_(e_signdata));
! 	    }
  	}
      }
  
      return (void *)sign;
--- 3443,3479 ----
      char_u	    *signfile;
  {
      XpmAttributes   attrs;
!     XImage	    *sign = NULL;
      int		    status;
  
      /*
       * Setup the color substitution table.
       */
      if (signfile[0] != NUL && signfile[0] != '-')
      {
! 	XpmColorSymbol color[5] =
  	{
! 	    {"none", NULL, 0},
! 	    {"iconColor1", NULL, 0},
! 	    {"bottomShadowColor", NULL, 0},
! 	    {"topShadowColor", NULL, 0},
! 	    {"selectColor", NULL, 0}
! 	};
! 	attrs.valuemask = XpmColorSymbols;
! 	attrs.numsymbols = 2;
! 	attrs.colorsymbols = color;
! 	attrs.colorsymbols[0].pixel = gui.back_pixel;
! 	attrs.colorsymbols[1].pixel = gui.norm_pixel;
! 	status = XpmReadFileToImage(gui.dpy, (char *)signfile,
  							 &sign, NULL, &attrs);
! 	if (status == 0)
! 	{
! 	    /* Sign width is fixed at two columns now.
! 	    if (sign->width > gui.sign_width)
! 	        gui.sign_width = sign->width + 8; */
  	}
+ 	else
+ 	    EMSG(_(e_signdata));
      }
  
      return (void *)sign;
***************
*** 3489,3496 ****
  gui_mch_destroy_sign(sign)
      void *sign;
  {
!     XFree(((XImage *)sign)->data);
!     vim_free(sign);
  }
  #endif
  
--- 3483,3489 ----
  gui_mch_destroy_sign(sign)
      void *sign;
  {
!     XDestroyImage((XImage*)sign);
  }
  #endif
  
*** ../vim-7.2.124/src/version.c	Mon Feb 23 00:53:35 2009
--- src/version.c	Tue Feb 24 04:09:33 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     125,
  /**/

-- 
I have a watch cat! Just break in and she'll watch.

 /// 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    ///


--- NEW FILE 7.2.126 ---
To: vim-dev at vim.org
Subject: Patch 7.2.126
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.2.126
Problem:    When EXITFREE is defined signs are not freed.
Solution:   Free all signs on exit.  Also free keymaps. (Dominique Pelle)
Files:      src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro


*** ../vim-7.2.125/src/misc2.c	Thu Jan 22 21:31:24 2009
--- src/misc2.c	Sun Feb 22 22:04:53 2009
***************
*** 1010,1015 ****
--- 1010,1018 ----
  # if defined(FEAT_PROFILE)
      do_cmdline_cmd((char_u *)"profdel *");
  # endif
+ # if defined(FEAT_KEYMAP)
+     do_cmdline_cmd((char_u *)"set keymap=");
+ #endif
  
  # ifdef FEAT_TITLE
      free_titles();
***************
*** 1034,1039 ****
--- 1037,1045 ----
      free_regexp_stuff();
      free_tag_stuff();
      free_cd_dir();
+ # ifdef FEAT_SIGNS
+     free_signs();
+ # endif
  # ifdef FEAT_EVAL
      set_expr_line(NULL);
  # endif
*** ../vim-7.2.125/src/ex_cmds.c	Wed Feb 11 16:02:29 2009
--- src/ex_cmds.c	Sun Feb 22 22:07:08 2009
***************
*** 6541,6546 ****
--- 6541,6547 ----
  static int	last_sign_typenr = MAX_TYPENR;	/* is decremented */
  
  static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
  
  /*
   * ":sign" command
***************
*** 6749,6772 ****
  		/* ":sign list {name}" */
  		sign_list_defined(sp);
  	    else
- 	    {
  		/* ":sign undefine {name}" */
! 		vim_free(sp->sn_name);
! 		vim_free(sp->sn_icon);
! #ifdef FEAT_SIGN_ICONS
! 		if (sp->sn_image != NULL)
! 		{
! 		    out_flush();
! 		    gui_mch_destroy_sign(sp->sn_image);
! 		}
! #endif
! 		vim_free(sp->sn_text);
! 		if (sp_prev == NULL)
! 		    first_sign = sp->sn_next;
! 		else
! 		    sp_prev->sn_next = sp->sn_next;
! 		vim_free(sp);
! 	    }
  	}
      }
      else
--- 6750,6757 ----
  		/* ":sign list {name}" */
  		sign_list_defined(sp);
  	    else
  		/* ":sign undefine {name}" */
! 		sign_undefine(sp, sp_prev);
  	}
      }
      else
***************
*** 7015,7020 ****
--- 7000,7030 ----
  }
  
  /*
+  * Undefine a sign and free its memory.
+  */
+     static void
+ sign_undefine(sp, sp_prev)
+     sign_T	*sp;
+     sign_T	*sp_prev;
+ {
+     vim_free(sp->sn_name);
+     vim_free(sp->sn_icon);
+ #ifdef FEAT_SIGN_ICONS
+     if (sp->sn_image != NULL)
+     {
+ 	out_flush();
+ 	gui_mch_destroy_sign(sp->sn_image);
+     }
+ #endif
+     vim_free(sp->sn_text);
+     if (sp_prev == NULL)
+ 	first_sign = sp->sn_next;
+     else
+ 	sp_prev->sn_next = sp->sn_next;
+     vim_free(sp);
+ }
+ 
+ /*
   * Get highlighting attribute for sign "typenr".
   * If "line" is TRUE: line highl, if FALSE: text highl.
   */
***************
*** 7088,7093 ****
--- 7098,7115 ----
      return (char_u *)_("[Deleted]");
  }
  
+ #if defined(EXITFREE) || defined(PROTO)
+ /*
+  * Undefine/free all signs.
+  */
+     void
+ free_signs()
+ {
+     while (first_sign != NULL)
+ 	sign_undefine(first_sign, NULL);
+ }
+ #endif
+ 
  #endif
  
  #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
*** ../vim-7.2.125/src/proto/ex_cmds.pro	Sat Nov 15 14:10:23 2008
--- src/proto/ex_cmds.pro	Sun Feb 22 22:04:53 2009
***************
*** 40,45 ****
--- 40,46 ----
  int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
  void write_viminfo_sub_string __ARGS((FILE *fp));
  void free_old_sub __ARGS((void));
+ void free_signs __ARGS((void));
  int prepare_tagpreview __ARGS((int undo_sync));
  void ex_help __ARGS((exarg_T *eap));
  char_u *check_help_lang __ARGS((char_u *arg));
*** ../vim-7.2.125/src/version.c	Tue Feb 24 04:11:07 2009
--- src/version.c	Tue Feb 24 04:24:46 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     126,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
125. You begin to wonder how often it REALLY is necessary to get up
     and shower or bathe.

 /// 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    ///


--- NEW FILE 7.2.127 ---
To: vim-dev at vim.org
Subject: Patch 7.2.127
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.2.127
Problem:    When listing mappings and a wrapping line causes the more prompt,
            after typing 'q' there can be another more prompt. (Markus 
            Heidelberg)
Solution:   Set "lines_left" to allow more lines to be displayed.
Files:      src/message.c


*** ../vim-7.2.126/src/message.c	Sun Feb 22 00:58:03 2009
--- src/message.c	Mon Feb 23 04:17:39 2009
***************
*** 2553,2559 ****
  	    {
  		/* Jump to the choices of the dialog. */
  		retval = TRUE;
- 		lines_left = Rows - 1;
  	    }
  	    else
  #endif
--- 2553,2558 ----
***************
*** 2561,2566 ****
--- 2560,2568 ----
  		got_int = TRUE;
  		quit_more = TRUE;
  	    }
+ 	    /* When there is some more output (wrapping line) display that
+ 	     * without another prompt. */
+ 	    lines_left = Rows - 1;
  	    break;
  
  #ifdef FEAT_CLIPBOARD
*** ../vim-7.2.126/src/version.c	Tue Feb 24 04:28:40 2009
--- src/version.c	Tue Feb 24 04:35:38 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     127,
  /**/

-- 
The difference between theory and practice, is that in theory, there
is no difference between theory and practice.

 /// 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    ///


--- NEW FILE 7.2.128 ---
To: vim-dev at vim.org
Subject: Patch 7.2.128
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.2.128 (after 7.2.055)
Problem:    Using ":lcd" makes session files not work.
Solution:   Compare return value of mch_chdir() properly. (Andreas Bernauer)
Files:      src/ex_docmd.c


*** ../vim-7.2.127/src/ex_docmd.c	Sat Feb 21 20:36:30 2009
--- src/ex_docmd.c	Sun Mar  1 02:39:38 2009
***************
*** 8792,8798 ****
  		else if (*dirnow != NUL
  			&& (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
  		{
! 		    if (mch_chdir((char *)globaldir) == OK)
  			shorten_fnames(TRUE);
  		}
  
--- 8799,8805 ----
  		else if (*dirnow != NUL
  			&& (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
  		{
! 		    if (mch_chdir((char *)globaldir) == 0)
  			shorten_fnames(TRUE);
  		}
  
*** ../vim-7.2.127/src/version.c	Tue Feb 24 04:36:50 2009
--- src/version.c	Sun Mar  1 02:42:47 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     128,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
138. You develop a liking for cold 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    ///


--- NEW FILE 7.2.129 ---
To: vim-dev at vim.org
Subject: Patch 7.2.129
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.2.129
Problem:    When opening a command window from input() it uses the search
            history.
Solution:   Use get_cmdline_type(). (James Vega)
Files:      src/ex_getln.c


*** ../vim-7.2.128/src/ex_getln.c	Fri Nov 28 10:59:57 2008
--- src/ex_getln.c	Mon Mar  2 00:53:39 2009
***************
*** 6047,6055 ****
  # endif
  	return K_IGNORE;
      }
!     cmdwin_type = ccline.cmdfirstc;
!     if (cmdwin_type == NUL)
! 	cmdwin_type = '-';
  
      /* Create the command-line buffer empty. */
      (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
--- 6062,6068 ----
  # endif
  	return K_IGNORE;
      }
!     cmdwin_type = get_cmdline_type();
  
      /* Create the command-line buffer empty. */
      (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
***************
*** 6073,6079 ****
      /* Showing the prompt may have set need_wait_return, reset it. */
      need_wait_return = FALSE;
  
!     histtype = hist_char2type(ccline.cmdfirstc);
      if (histtype == HIST_CMD || histtype == HIST_DEBUG)
      {
  	if (p_wc == TAB)
--- 6086,6092 ----
      /* Showing the prompt may have set need_wait_return, reset it. */
      need_wait_return = FALSE;
  
!     histtype = hist_char2type(cmdwin_type);
      if (histtype == HIST_CMD || histtype == HIST_DEBUG)
      {
  	if (p_wc == TAB)
*** ../vim-7.2.128/src/version.c	Sun Mar  1 02:43:50 2009
--- src/version.c	Mon Mar  2 02:10:11 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     129,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
146. You experience ACTUAL physical withdrawal symptoms when away
     from your 'puter and the net.

 /// 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    ///


--- NEW FILE 7.2.130 ---
To: vim-dev at vim.org
Subject: Patch 7.2.130
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.2.130
Problem:    Vim may haing until CTRL-C is typed when using CTRL-Z.
Solution:   Avoid using pause().  Also use "volatile" for variables used in
            signal functions. (Dominique Pelle)
Files:      src/auto/configure, src/configure.in, src/config.h.in,
            src/globals.h, src/os_unix.c
    

*** ../vim-7.2.129/src/auto/configure	Thu Nov 20 10:36:04 2008
--- src/auto/configure	Mon Mar  2 02:36:52 2009
***************
*** 11565,11570 ****
--- 11565,11631 ----
  
  fi
  
+ { $as_echo "$as_me:$LINENO: checking for working volatile" >&5
+ $as_echo_n "checking for working volatile... " >&6; }
+ if test "${ac_cv_c_volatile+set}" = set; then
+   $as_echo_n "(cached) " >&6
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ 
+ int
+ main ()
+ {
+ 
+ volatile int x;
+ int * volatile y = (int *) 0;
+ return !x && !y;
+   ;
+   return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_compile") 2>conftest.er1
+   ac_status=$?
+   grep -v '^ *+' conftest.er1 >conftest.err
+   rm -f conftest.er1
+   cat conftest.err >&5
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && {
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then
+   ac_cv_c_volatile=yes
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	ac_cv_c_volatile=no
+ fi
+ 
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+ $as_echo "$ac_cv_c_volatile" >&6; }
+ if test $ac_cv_c_volatile = no; then
+ 
+ cat >>confdefs.h <<\_ACEOF
+ #define volatile /**/
+ _ACEOF
+ 
+ fi
+ 
  { $as_echo "$as_me:$LINENO: checking for mode_t" >&5
  $as_echo_n "checking for mode_t... " >&6; }
  if test "${ac_cv_type_mode_t+set}" = set; then
*** ../vim-7.2.129/src/configure.in	Thu Nov 20 10:36:04 2008
--- src/configure.in	Sun Feb 22 21:47:44 2009
***************
*** 2148,2153 ****
--- 2148,2154 ----
  dnl Checks for typedefs, structures, and compiler characteristics.
  AC_PROG_GCC_TRADITIONAL
  AC_C_CONST
+ AC_C_VOLATILE
  AC_TYPE_MODE_T
  AC_TYPE_OFF_T
  AC_TYPE_PID_T
*** ../vim-7.2.129/src/config.h.in	Tue Jun 24 23:47:46 2008
--- src/config.h.in	Mon Feb 23 00:13:17 2009
***************
*** 50,55 ****
--- 50,58 ----
  /* Define to empty if the keyword does not work.  */
  #undef const
  
+ /* Define to empty if the keyword does not work.  */
+ #undef volatile
+ 
  /* Define to `int' if <sys/types.h> doesn't define.  */
  #undef mode_t
  
*** ../vim-7.2.129/src/globals.h	Tue Jan  6 16:13:42 2009
--- src/globals.h	Mon Mar  2 02:40:16 2009
***************
*** 482,489 ****
  /*
   * While executing external commands or in Ex mode, should not insert GUI
   * events in the input buffer: Set hold_gui_events to non-zero.
   */
! EXTERN int	hold_gui_events INIT(= 0);
  
  /*
   * When resizing the shell is postponed, remember the new size, and call
--- 482,491 ----
  /*
   * While executing external commands or in Ex mode, should not insert GUI
   * events in the input buffer: Set hold_gui_events to non-zero.
+  *
+  * volatile because it is used in signal handler sig_sysmouse().
   */
! EXTERN volatile int hold_gui_events INIT(= 0);
  
  /*
   * When resizing the shell is postponed, remember the new size, and call
***************
*** 597,603 ****
  EXTERN int	really_exiting INIT(= FALSE);
  				/* TRUE when we are sure to exit, e.g., after
  				 * a deadly signal */
! EXTERN int	full_screen INIT(= FALSE);
  				/* TRUE when doing full-screen output
  				 * otherwise only writing some messages */
  
--- 599,606 ----
  EXTERN int	really_exiting INIT(= FALSE);
  				/* TRUE when we are sure to exit, e.g., after
  				 * a deadly signal */
! /* volatile because it is used in signal handler deathtrap(). */
! EXTERN volatile int full_screen INIT(= FALSE);
  				/* TRUE when doing full-screen output
  				 * otherwise only writing some messages */
  
***************
*** 739,748 ****
   */
  EXTERN JMP_BUF lc_jump_env;	/* argument to SETJMP() */
  # ifdef SIGHASARG
! EXTERN int lc_signal;		/* catched signal number, 0 when no was signal
! 				   catched; used for mch_libcall() */
  # endif
! EXTERN int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
  #endif
  
  #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
--- 747,758 ----
   */
  EXTERN JMP_BUF lc_jump_env;	/* argument to SETJMP() */
  # ifdef SIGHASARG
! /* volatile because it is used in signal handlers. */
! EXTERN volatile int lc_signal;	/* caught signal number, 0 when no was signal
! 				   caught; used for mch_libcall() */
  # endif
! /* volatile because it is used in signal handler deathtrap(). */
! EXTERN volatile int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
  #endif
  
  #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
***************
*** 986,992 ****
  EXTERN FILE	*scriptout  INIT(= NULL);   /* stream to write script to */
  EXTERN int	read_cmd_fd INIT(= 0);	    /* fd to read commands from */
  
! EXTERN int	got_int INIT(= FALSE);	    /* set to TRUE when interrupt
  						signal occurred */
  #ifdef USE_TERM_CONSOLE
  EXTERN int	term_console INIT(= FALSE); /* set to TRUE when console used */
--- 996,1003 ----
  EXTERN FILE	*scriptout  INIT(= NULL);   /* stream to write script to */
  EXTERN int	read_cmd_fd INIT(= 0);	    /* fd to read commands from */
  
! /* volatile because it is used in signal handler catch_sigint(). */
! EXTERN volatile int got_int INIT(= FALSE);    /* set to TRUE when interrupt
  						signal occurred */
  #ifdef USE_TERM_CONSOLE
  EXTERN int	term_console INIT(= FALSE); /* set to TRUE when console used */
*** ../vim-7.2.129/src/os_unix.c	Sun Feb 22 02:51:37 2009
--- src/os_unix.c	Mon Mar  2 01:05:50 2009
***************
*** 181,187 ****
  	&& defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
  # define SET_SIG_ALARM
  static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
! static int sig_alarm_called;
  #endif
  static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
  
--- 181,188 ----
  	&& defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
  # define SET_SIG_ALARM
  static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
! /* volatile because it is used in signal handler sig_alarm(). */
! static volatile int sig_alarm_called;
  #endif
  static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
  
***************
*** 201,213 ****
  # define SIG_ERR	((RETSIGTYPE (*)())-1)
  #endif
  
! static int	do_resize = FALSE;
  #ifndef __EMX__
  static char_u	*extra_shell_arg = NULL;
  static int	show_shell_mess = TRUE;
  #endif
! static int	deadly_signal = 0;	    /* The signal we caught */
! static int	in_mch_delay = FALSE;	    /* sleeping in mch_delay() */
  
  static int curr_tmode = TMODE_COOK;	/* contains current terminal mode */
  
--- 202,217 ----
  # define SIG_ERR	((RETSIGTYPE (*)())-1)
  #endif
  
! /* volatile because it is used in signal handler sig_winch(). */
! static volatile int do_resize = FALSE;
  #ifndef __EMX__
  static char_u	*extra_shell_arg = NULL;
  static int	show_shell_mess = TRUE;
  #endif
! /* volatile because it is used in signal handler deathtrap(). */
! static volatile int deadly_signal = 0;	    /* The signal we caught */
! /* volatile because it is used in signal handler deathtrap(). */
! static volatile int in_mch_delay = FALSE;    /* sleeping in mch_delay() */
  
  static int curr_tmode = TMODE_COOK;	/* contains current terminal mode */
  
***************
*** 802,808 ****
  #endif
  
  /*
!  * We need correct potatotypes for a signal function, otherwise mean compilers
   * will barf when the second argument to signal() is ``wrong''.
   * Let me try it with a few tricky defines from my own osdef.h	(jw).
   */
--- 806,812 ----
  #endif
  
  /*
!  * We need correct prototypes for a signal function, otherwise mean compilers
   * will barf when the second argument to signal() is ``wrong''.
   * Let me try it with a few tricky defines from my own osdef.h	(jw).
   */
***************
*** 1068,1080 ****
      SIGRETURN;
  }
  
! #ifdef _REENTRANT
  /*
   * On Solaris with multi-threading, suspending might not work immediately.
   * Catch the SIGCONT signal, which will be used as an indication whether the
   * suspending has been done or not.
   */
! static int sigcont_received;
  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
  
  /*
--- 1072,1089 ----
      SIGRETURN;
  }
  
! #if defined(_REENTRANT) && defined(SIGCONT)
  /*
   * On Solaris with multi-threading, suspending might not work immediately.
   * Catch the SIGCONT signal, which will be used as an indication whether the
   * suspending has been done or not.
+  *
+  * On Linux, signal is not always handled immediately either.
+  * See https://bugs.launchpad.net/bugs/291373
+  *
+  * volatile because it is used in in signal handler sigcont_handler().
   */
! static volatile int sigcont_received;
  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
  
  /*
***************
*** 1118,1132 ****
      }
  # endif
  
! # ifdef _REENTRANT
      sigcont_received = FALSE;
  # endif
      kill(0, SIGTSTP);	    /* send ourselves a STOP signal */
! # ifdef _REENTRANT
!     /* When we didn't suspend immediately in the kill(), do it now.  Happens
!      * on multi-threaded Solaris. */
!     if (!sigcont_received)
! 	pause();
  # endif
  
  # ifdef FEAT_TITLE
--- 1127,1154 ----
      }
  # endif
  
! # if defined(_REENTRANT) && defined(SIGCONT)
      sigcont_received = FALSE;
  # endif
      kill(0, SIGTSTP);	    /* send ourselves a STOP signal */
! # if defined(_REENTRANT) && defined(SIGCONT)
!     /*
!      * Wait for the SIGCONT signal to be handled. It generally happens
!      * immediately, but somehow not all the time. Do not call pause()
!      * because there would be race condition which would hang Vim if
!      * signal happened in between the test of sigcont_received and the
!      * call to pause(). If signal is not yet received, call sleep(0)
!      * to just yield CPU. Signal should then be received. If somehow
!      * it's still not received, sleep 1, 2, 3 ms. Don't bother waiting
!      * further if signal is not received after 1+2+3+4 ms (not expected
!      * to happen).
!      */
!     {
! 	long wait;
! 	for (wait = 0; !sigcont_received && wait <= 3L; wait++)
! 	    /* Loop is not entered most of the time */
! 	    mch_delay(wait, FALSE);
!     }
  # endif
  
  # ifdef FEAT_TITLE
***************
*** 1175,1181 ****
  #ifdef SIGTSTP
      signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
  #endif
! #ifdef _REENTRANT
      signal(SIGCONT, sigcont_handler);
  #endif
  
--- 1197,1203 ----
  #ifdef SIGTSTP
      signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
  #endif
! #if defined(_REENTRANT) && defined(SIGCONT)
      signal(SIGCONT, sigcont_handler);
  #endif
  
***************
*** 1234,1240 ****
  reset_signals()
  {
      catch_signals(SIG_DFL, SIG_DFL);
! #ifdef _REENTRANT
      /* SIGCONT isn't in the list, because its default action is ignore */
      signal(SIGCONT, SIG_DFL);
  #endif
--- 1256,1262 ----
  reset_signals()
  {
      catch_signals(SIG_DFL, SIG_DFL);
! #if defined(_REENTRANT) && defined(SIGCONT)
      /* SIGCONT isn't in the list, because its default action is ignore */
      signal(SIGCONT, SIG_DFL);
  #endif
***************
*** 5899,5905 ****
--- 5921,5929 ----
  	     * we are going to suspend or starting an external process
  	     * so we shouldn't  have problem with this
  	     */
+ # ifdef SIGTSTP
  	    signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ # endif
  	    return 1; /* succeed */
  	}
  	if (gpm_fd == -2)
*** ../vim-7.2.129/src/version.c	Mon Mar  2 02:11:09 2009
--- src/version.c	Mon Mar  2 02:36:00 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     130,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
148. You find it easier to dial-up the National Weather Service
     Weather/your_town/now.html than to simply look out the window.

 /// 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    ///


--- NEW FILE 7.2.131 ---
To: vim-dev at vim.org
Subject: Patch 7.2.131
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.2.131
Problem:    When 'keymap' is cleared may still use the cursor highlighting for
            when it's enabled.
Solution:   Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle)
            Also avoid ":setlocal" for these options have a global effect.
Files:      src/option.c


*** ../vim-7.2.130/src/option.c	Sat Feb 21 20:27:00 2009
--- src/option.c	Wed Mar  4 04:09:51 2009
***************
*** 5797,5810 ****
  	/* load or unload key mapping tables */
  	errmsg = keymap_init();
  
! 	/* When successfully installed a new keymap switch on using it. */
! 	if (*curbuf->b_p_keymap != NUL && errmsg == NULL)
  	{
! 	    curbuf->b_p_iminsert = B_IMODE_LMAP;
! 	    if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
! 		curbuf->b_p_imsearch = B_IMODE_LMAP;
! 	    set_iminsert_global();
! 	    set_imsearch_global();
  # ifdef FEAT_WINDOWS
  	    status_redraw_curbuf();
  # endif
--- 5797,5824 ----
  	/* load or unload key mapping tables */
  	errmsg = keymap_init();
  
! 	if (errmsg == NULL)
  	{
! 	    if (*curbuf->b_p_keymap != NUL)
! 	    {
! 		/* Installed a new keymap, switch on using it. */
! 		curbuf->b_p_iminsert = B_IMODE_LMAP;
! 		if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
! 		    curbuf->b_p_imsearch = B_IMODE_LMAP;
! 	    }
! 	    else
! 	    {
! 		/* Cleared the keymap, may reset 'iminsert' and 'imsearch'. */
! 		if (curbuf->b_p_iminsert == B_IMODE_LMAP)
! 		    curbuf->b_p_iminsert = B_IMODE_NONE;
! 		if (curbuf->b_p_imsearch == B_IMODE_LMAP)
! 		    curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
! 	    }
! 	    if ((opt_flags & OPT_LOCAL) == 0)
! 	    {
! 		set_iminsert_global();
! 		set_imsearch_global();
! 	    }
  # ifdef FEAT_WINDOWS
  	    status_redraw_curbuf();
  # endif
*** ../vim-7.2.130/src/version.c	Mon Mar  2 02:44:54 2009
--- src/version.c	Wed Mar  4 04:10:32 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     131,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
157. You fum through a magazine, you first check to see if it has a web
     address.

 /// 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    ///


--- NEW FILE 7.2.132 ---
To: vim-dev at vim.org
Subject: Patch 7.2.132
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.2.132
Problem:    When changing directory during a SwapExists autocmd freed memory
            may be accessed. (Dominique Pelle)
Solution:   Add the allbuf_lock flag.
Files:      src/ex_getln.c, src/globals.h, src/fileio.c,
            src/proto/ex_getln.pro
    

*** ../vim-7.2.131/src/ex_getln.c	Mon Mar  2 02:11:09 2009
--- src/ex_getln.c	Mon Mar  2 00:53:39 2009
***************
*** 2000,2007 ****
  
  #if defined(FEAT_AUTOCMD) || defined(PROTO)
  /*
!  * Check if "curbuf_lock" is set and return TRUE when it is and give an error
!  * message.
   */
      int
  curbuf_locked()
--- 2000,2007 ----
  
  #if defined(FEAT_AUTOCMD) || defined(PROTO)
  /*
!  * Check if "curbuf_lock" or "allbuf_lock" is set and return TRUE when it is
!  * and give an error message.
   */
      int
  curbuf_locked()
***************
*** 2011,2016 ****
--- 2011,2031 ----
  	EMSG(_("E788: Not allowed to edit another buffer now"));
  	return TRUE;
      }
+     return allbuf_locked();
+ }
+ 
+ /*
+  * Check if "allbuf_lock" is set and return TRUE when it is and give an error
+  * message.
+  */
+     int
+ allbuf_locked()
+ {
+     if (allbuf_lock > 0)
+     {
+ 	EMSG(_("E811: Not allowed to change buffer information now"));
+ 	return TRUE;
+     }
      return FALSE;
  }
  #endif
*** ../vim-7.2.131/src/globals.h	Mon Mar  2 02:44:54 2009
--- src/globals.h	Mon Mar  2 02:40:16 2009
***************
*** 619,624 ****
--- 619,629 ----
  EXTERN int	curbuf_lock INIT(= 0);
  				/* non-zero when the current buffer can't be
  				 * changed.  Used for FileChangedRO. */
+ EXTERN int	allbuf_lock INIT(= 0);
+ 				/* non-zero when no buffer name can be
+ 				 * changed, no buffer can be deleted and
+ 				 * current directory can't be changed.
+ 				 * Used for SwapExists et al. */
  #endif
  #ifdef FEAT_EVAL
  # define HAVE_SANDBOX
*** ../vim-7.2.131/src/fileio.c	Wed Dec 31 16:20:54 2008
--- src/fileio.c	Sun Mar  1 23:37:10 2009
***************
*** 69,75 ****
  static int au_find_group __ARGS((char_u *name));
  
  # define AUGROUP_DEFAULT    -1	    /* default autocmd group */
! # define AUGROUP_ERROR	    -2	    /* errornouse autocmd group */
  # define AUGROUP_ALL	    -3	    /* all autocmd groups */
  #endif
  
--- 69,75 ----
  static int au_find_group __ARGS((char_u *name));
  
  # define AUGROUP_DEFAULT    -1	    /* default autocmd group */
! # define AUGROUP_ERROR	    -2	    /* erroneous autocmd group */
  # define AUGROUP_ALL	    -3	    /* all autocmd groups */
  #endif
  
***************
*** 144,150 ****
  # endif
  #endif
  static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
! 
  
      void
  filemess(buf, name, s, attr)
--- 144,152 ----
  # endif
  #endif
  static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
! #ifdef FEAT_AUTOCMD
! static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
! #endif
  
      void
  filemess(buf, name, s, attr)
***************
*** 295,300 ****
--- 297,315 ----
      int		conv_restlen = 0;	/* nr of bytes in conv_rest[] */
  #endif
  
+ #ifdef FEAT_AUTOCMD
+     /* Remember the initial values of curbuf, curbuf->b_ffname and
+      * curbuf->b_fname to detect whether they are altered as a result of
+      * executing nasty autocommands.  Also check if "fname" and "sfname"
+      * point to one of these values. */
+     buf_T   *old_curbuf = curbuf;
+     char_u  *old_b_ffname = curbuf->b_ffname;
+     char_u  *old_b_fname = curbuf->b_fname;
+     int     using_b_ffname = (fname == curbuf->b_ffname)
+ 					      || (sfname == curbuf->b_ffname);
+     int     using_b_fname = (fname == curbuf->b_fname)
+ 					       || (sfname == curbuf->b_fname);
+ #endif
      write_no_eol_lnum = 0;	/* in case it was set by the previous read */
  
      /*
***************
*** 589,595 ****
--- 604,624 ----
  #ifdef FEAT_QUICKFIX
  		    if (!bt_dontwrite(curbuf))
  #endif
+ 		    {
  			check_need_swap(newfile);
+ #ifdef FEAT_AUTOCMD
+ 			/* SwapExists autocommand may mess things up */
+ 			if (curbuf != old_curbuf
+ 				|| (using_b_ffname
+ 					&& (old_b_ffname != curbuf->b_ffname))
+ 				|| (using_b_fname
+ 					 && (old_b_fname != curbuf->b_fname)))
+ 			{
+ 			    EMSG(_(e_auchangedbuf));
+ 			    return FAIL;
+ 			}
+ #endif
+ 		    }
  		    if (dir_of_file_exists(fname))
  			filemess(curbuf, sfname, (char_u *)_("[New File]"), 0);
  		    else
***************
*** 668,673 ****
--- 697,713 ----
  #endif
      {
  	check_need_swap(newfile);
+ #ifdef FEAT_AUTOCMD
+ 	if (!read_stdin && (curbuf != old_curbuf
+ 		|| (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
+ 		|| (using_b_fname && (old_b_fname != curbuf->b_fname))))
+ 	{
+ 	    EMSG(_(e_auchangedbuf));
+ 	    if (!read_buffer)
+ 		close(fd);
+ 	    return FAIL;
+ 	}
+ #endif
  #ifdef UNIX
  	/* Set swap file protection bits after creating it. */
  	if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
***************
*** 698,704 ****
      {
  	int	m = msg_scroll;
  	int	n = msg_scrolled;
- 	buf_T	*old_curbuf = curbuf;
  
  	/*
  	 * The file must be closed again, the autocommands may want to change
--- 738,743 ----
***************
*** 740,747 ****
--- 779,791 ----
  	/*
  	 * Don't allow the autocommands to change the current buffer.
  	 * Try to re-open the file.
+ 	 *
+ 	 * Don't allow the autocommands to change the buffer name either
+ 	 * (cd for example) if it invalidates fname or sfname.
  	 */
  	if (!read_stdin && (curbuf != old_curbuf
+ 		|| (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
+ 		|| (using_b_fname && (old_b_fname != curbuf->b_fname))
  		|| (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) < 0))
  	{
  	    --no_wait_return;
***************
*** 6320,6326 ****
  
      if (!stuff_empty() || global_busy || !typebuf_typed()
  #ifdef FEAT_AUTOCMD
! 			|| autocmd_busy || curbuf_lock > 0
  #endif
  					)
  	need_check_timestamps = TRUE;		/* check later */
--- 6364,6370 ----
  
      if (!stuff_empty() || global_busy || !typebuf_typed()
  #ifdef FEAT_AUTOCMD
! 			|| autocmd_busy || curbuf_lock > 0 || allbuf_lock > 0
  #endif
  					)
  	need_check_timestamps = TRUE;		/* check later */
***************
*** 6522,6529 ****
--- 6566,6575 ----
  	    set_vim_var_string(VV_FCS_REASON, (char_u *)reason, -1);
  	    set_vim_var_string(VV_FCS_CHOICE, (char_u *)"", -1);
  # endif
+ 	    ++allbuf_lock;
  	    n = apply_autocmds(EVENT_FILECHANGEDSHELL,
  				      buf->b_fname, buf->b_fname, FALSE, buf);
+ 	    --allbuf_lock;
  	    busy = FALSE;
  	    if (n)
  	    {
*** ../vim-7.2.131/src/proto/ex_getln.pro	Fri Nov 28 10:59:57 2008
--- src/proto/ex_getln.pro	Sun Mar  1 00:27:12 2009
***************
*** 4,9 ****
--- 4,10 ----
  int text_locked __ARGS((void));
  void text_locked_msg __ARGS((void));
  int curbuf_locked __ARGS((void));
+ int allbuf_locked __ARGS((void));
  char_u *getexline __ARGS((int c, void *dummy, int indent));
  char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
  int cmdline_overstrike __ARGS((void));
*** ../vim-7.2.131/src/version.c	Wed Mar  4 04:11:56 2009
--- src/version.c	Thu Mar  5 03:08:54 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     132,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
168. You have your own domain name.

 /// 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    ///


--- NEW FILE 7.2.133 ---
To: vim-dev at vim.org
Subject: Patch 7.2.133
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.2.133
Problem:    ":diffoff!" changes settings in windows not in diff mode.
Solution:   Only change settings in other windows when 'diff' is set, always
	    do it for the current window. (Lech Lorens)
Files:	    src/diff.c


*** ../vim-7.2.132/src/diff.c	Thu Jan 22 20:48:07 2009
--- src/diff.c	Fri Mar  6 04:17:41 2009
***************
*** 1153,1159 ****
  
      for (wp = firstwin; wp != NULL; wp = wp->w_next)
      {
! 	if (wp == curwin || eap->forceit)
  	{
  	    /* Set 'diff', 'scrollbind' off and 'wrap' on. */
  	    wp->w_p_diff = FALSE;
--- 1153,1159 ----
  
      for (wp = firstwin; wp != NULL; wp = wp->w_next)
      {
! 	if (wp == curwin || (eap->forceit && wp->w_p_diff))
  	{
  	    /* Set 'diff', 'scrollbind' off and 'wrap' on. */
  	    wp->w_p_diff = FALSE;
*** ../vim-7.2.132/src/version.c	Thu Mar  5 03:13:51 2009
--- src/version.c	Wed Mar 11 12:45:10 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     133,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
192. Your boss asks you to "go fer" coffee and you come up with 235 FTP sites.

 /// 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    ///


--- NEW FILE 7.2.134 ---
To: vim-dev at vim.org
Subject: Patch 7.2.134
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.2.134
Problem:    Warning for discarding "const" from pointer.
Solution:   Don't pass const pointer to mch_memmove().
Files:	    src/fileio.c


*** ../vim-7.2.133/src/fileio.c	Thu Mar  5 03:13:51 2009
--- src/fileio.c	Wed Mar 11 12:59:35 2009
***************
*** 5288,5300 ****
  	    /* Convert with iconv(). */
  	    if (ip->bw_restlen > 0)
  	    {
  		/* Need to concatenate the remainder of the previous call and
  		 * the bytes of the current call.  Use the end of the
  		 * conversion buffer for this. */
  		fromlen = len + ip->bw_restlen;
! 		from = (char *)ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
! 		mch_memmove((void *)from, ip->bw_rest, (size_t)ip->bw_restlen);
! 		mch_memmove((void *)(from + ip->bw_restlen), buf, (size_t)len);
  		tolen = ip->bw_conv_buflen - fromlen;
  	    }
  	    else
--- 5288,5303 ----
  	    /* Convert with iconv(). */
  	    if (ip->bw_restlen > 0)
  	    {
+ 		char *fp;
+ 
  		/* Need to concatenate the remainder of the previous call and
  		 * the bytes of the current call.  Use the end of the
  		 * conversion buffer for this. */
  		fromlen = len + ip->bw_restlen;
! 		fp = (char *)ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
! 		mch_memmove(fp, ip->bw_rest, (size_t)ip->bw_restlen);
! 		mch_memmove(fp + ip->bw_restlen, buf, (size_t)len);
! 		from = fp;
  		tolen = ip->bw_conv_buflen - fromlen;
  	    }
  	    else
*** ../vim-7.2.133/src/version.c	Wed Mar 11 12:45:44 2009
--- src/version.c	Wed Mar 11 13:08:25 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     134,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
193. You ask your girlfriend to drive home so you can sit back with
     your PDA and download the information to your laptop

 /// 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    ///


--- NEW FILE 7.2.135 ---
To: vim-dev at vim.org
Subject: Patch 7.2.135
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.2.135
Problem:    Memory leak when redefining user command with complete argument.
Solution:   Free the old complete argument. (Dominique Pelle)
Files:	    src/ex_docmd.c


*** ../vim-7.2.134/src/ex_docmd.c	Sun Mar  1 02:43:50 2009
--- src/ex_docmd.c	Wed Mar 11 11:13:31 2009
***************
*** 5124,5130 ****
  	    }
  
  	    vim_free(cmd->uc_rep);
! 	    cmd->uc_rep = 0;
  	    break;
  	}
  
--- 5124,5134 ----
  	    }
  
  	    vim_free(cmd->uc_rep);
! 	    cmd->uc_rep = NULL;
! #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
! 	    vim_free(cmd->uc_compl_arg);
! 	    cmd->uc_compl_arg = NULL;
! #endif
  	    break;
  	}
  
***************
*** 5941,5947 ****
      for (;;)
      {
  	p = cmd->uc_rep;    /* source */
! 	q = buf;	    /* destinateion */
  	totlen = 0;
  
  	for (;;)
--- 5945,5951 ----
      for (;;)
      {
  	p = cmd->uc_rep;    /* source */
! 	q = buf;	    /* destination */
  	totlen = 0;
  
  	for (;;)
***************
*** 7846,7851 ****
--- 7850,7858 ----
  {
      vim_free(prev_dir);
      prev_dir = NULL;
+ 
+     vim_free(globaldir);
+     globaldir = NULL;
  }
  #endif
  
*** ../vim-7.2.134/src/version.c	Wed Mar 11 13:09:30 2009
--- src/version.c	Wed Mar 11 15:06:23 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     135,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
194. Your business cards contain your e-mail and home page address.

 /// 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    ///


--- NEW FILE 7.2.136 ---
To: vim-dev at vim.org
Subject: Patch 7.2.136
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.2.136 (after 7.2.132)
Problem:    ":cd" is still possible in a SwapExists autocmd.
Solution:   Check the allbuf_lock flag in ex_cd().
Files:	    src/ex_docmd.c


*** ../vim-7.2.135/src/ex_docmd.c	Wed Mar 11 15:09:07 2009
--- src/ex_docmd.c	Wed Mar 11 11:13:31 2009
***************
*** 7875,7880 ****
--- 7875,7884 ----
      else
  #endif
      {
+ #ifdef FEAT_AUTOCMD
+ 	if (allbuf_locked())
+ 	    return;
+ #endif
  	if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged()
  							     && !eap->forceit)
  	{
*** ../vim-7.2.135/src/version.c	Wed Mar 11 15:09:07 2009
--- src/version.c	Wed Mar 11 15:35:36 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     136,
  /**/

-- 
Press any key to continue, press any other key to quit.

 /// 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    ///


--- NEW FILE 7.2.137 ---
To: vim-dev at vim.org
Subject: Patch 7.2.137
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
------------

Note: The special characters in the patch may cause problems.

Patch 7.2.137
Problem:    When 'virtualedit' is set, a left shift of a blockwise selection
	    that starts and ends inside a tab shifts too much. (Helmut
	    Stiegler)
Solution:   Redo the block left shift code. (Lech Lorens)
Files:	    src/ops.c, src/testdir/Makefile, src/testdir/test66.in,
	    src/testdir/test66.ok


*** ../vim-7.2.136/src/ops.c	Wed Dec  3 13:38:00 2008
--- src/ops.c	Thu Mar  5 04:47:09 2009
***************
*** 72,82 ****
   */
  struct block_def
  {
!     int		startspaces;	/* 'extra' cols of first char */
!     int		endspaces;	/* 'extra' cols of first char */
      int		textlen;	/* chars in block */
!     char_u	*textstart;	/* pointer to 1st char in block */
!     colnr_T	textcol;	/* cols of chars (at least part.) in block */
      colnr_T	start_vcol;	/* start col of 1st char wholly inside block */
      colnr_T	end_vcol;	/* start col of 1st char wholly after block */
  #ifdef FEAT_VISUALEXTRA
--- 72,82 ----
   */
  struct block_def
  {
!     int		startspaces;	/* 'extra' cols before first char */
!     int		endspaces;	/* 'extra' cols after last char */
      int		textlen;	/* chars in block */
!     char_u	*textstart;	/* pointer to 1st char (partially) in block */
!     colnr_T	textcol;	/* index of chars (partially) in block */
      colnr_T	start_vcol;	/* start col of 1st char wholly inside block */
      colnr_T	end_vcol;	/* start col of 1st char wholly after block */
  #ifdef FEAT_VISUALEXTRA
***************
*** 382,396 ****
  {
      int			left = (oap->op_type == OP_LSHIFT);
      int			oldstate = State;
!     int			total, split;
!     char_u		*newp, *oldp, *midp, *ptr;
      int			oldcol = curwin->w_cursor.col;
      int			p_sw = (int)curbuf->b_p_sw;
      int			p_ts = (int)curbuf->b_p_ts;
      struct block_def	bd;
-     int			internal = 0;
      int			incr;
!     colnr_T		vcol, col = 0, ws_vcol;
      int			i = 0, j = 0;
      int			len;
  
--- 382,395 ----
  {
      int			left = (oap->op_type == OP_LSHIFT);
      int			oldstate = State;
!     int			total;
!     char_u		*newp, *oldp;
      int			oldcol = curwin->w_cursor.col;
      int			p_sw = (int)curbuf->b_p_sw;
      int			p_ts = (int)curbuf->b_p_ts;
      struct block_def	bd;
      int			incr;
!     colnr_T		ws_vcol;
      int			i = 0, j = 0;
      int			len;
  
***************
*** 456,522 ****
      }
      else /* left */
      {
! 	vcol = oap->start_vcol;
! 	/* walk vcol past ws to be removed */
! 	for (midp = oldp + bd.textcol;
! 	      vcol < (oap->start_vcol + total) && vim_iswhite(*midp); )
! 	{
! 	    incr = lbr_chartabsize_adv(&midp, (colnr_T)vcol);
! 	    vcol += incr;
! 	}
! 	/* internal is the block-internal ws replacing a split TAB */
! 	if (vcol > (oap->start_vcol + total))
! 	{
! 	    /* we have to split the TAB *(midp-1) */
! 	    internal = vcol - (oap->start_vcol + total);
! 	}
! 	/* if 'expandtab' is not set, use TABs */
  
! 	split = bd.startspaces + internal;
! 	if (split > 0)
! 	{
! 	    if (!curbuf->b_p_et)
! 	    {
! 		for (ptr = oldp, col = 0; ptr < oldp+bd.textcol; )
! 		    col += lbr_chartabsize_adv(&ptr, (colnr_T)col);
  
! 		/* col+1 now equals the start col of the first char of the
! 		 * block (may be < oap.start_vcol if we're splitting a TAB) */
! 		i = ((col % p_ts) + split) / p_ts; /* number of tabs */
! 	    }
! 	    if (i)
! 		j = ((col % p_ts) + split) % p_ts; /* number of spp */
! 	    else
! 		j = split;
! 	}
  
! 	newp = alloc_check(bd.textcol + i + j + (unsigned)STRLEN(midp) + 1);
! 	if (newp == NULL)
! 	    return;
! 	vim_memset(newp, NUL, (size_t)(bd.textcol + i + j + STRLEN(midp) + 1));
  
! 	/* copy first part we want to keep */
! 	mch_memmove(newp, oldp, (size_t)bd.textcol);
! 	/* Now copy any TABS and spp to ensure correct alignment! */
! 	while (vim_iswhite(*midp))
  	{
! 	    if (*midp == TAB)
! 		i++;
! 	    else /*space */
! 		j++;
! 	    midp++;
  	}
! 	/* We might have an extra TAB worth of spp now! */
! 	if (j / p_ts && !curbuf->b_p_et)
  	{
! 	    i++;
! 	    j -= p_ts;
  	}
- 	copy_chars(newp + bd.textcol, (size_t)i, TAB);
- 	copy_spaces(newp + bd.textcol + i, (size_t)j);
  
! 	/* the end */
! 	STRMOVE(newp + STRLEN(newp), midp);
      }
      /* replace the line */
      ml_replace(curwin->w_cursor.lnum, newp, FALSE);
--- 455,543 ----
      }
      else /* left */
      {
! 	colnr_T	    destination_col;	/* column to which text in block will
! 					   be shifted */
! 	char_u	    *verbatim_copy_end;	/* end of the part of the line which is
! 					   copied verbatim */
! 	colnr_T	    verbatim_copy_width;/* the (displayed) width of this part
! 					   of line */
! 	unsigned    fill;		/* nr of spaces that replace a TAB */
! 	unsigned    new_line_len;	/* the length of the line after the
! 					   block shift */
! 	size_t	    block_space_width;
! 	size_t	    shift_amount;
! 	char_u	    *non_white = bd.textstart;
! 	colnr_T	    non_white_col;
  
! 	/*
! 	 * Firstly, let's find the first non-whitespace character that is
! 	 * displayed after the block's start column and the character's column
! 	 * number. Also, let's calculate the width of all the whitespace
! 	 * characters that are displayed in the block and precede the searched
! 	 * non-whitespace character.
! 	 */
  
! 	/* If "bd.startspaces" is set, "bd.textstart" points to the character,
! 	 * the part of which is displayed at the block's beginning. Let's start
! 	 * searching from the next character. */
! 	if (bd.startspaces)
! 	    mb_ptr_adv(non_white);
  
! 	/* The character's column is in "bd.start_vcol".  */
! 	non_white_col = bd.start_vcol;
  
! 	while (vim_iswhite(*non_white))
  	{
! 	    incr = lbr_chartabsize_adv(&non_white, non_white_col);
! 	    non_white_col += incr;
  	}
! 
! 	block_space_width = non_white_col - oap->start_vcol;
! 	/* We will shift by "total" or "block_space_width", whichever is less.
! 	 */
! 	shift_amount = (block_space_width < total? block_space_width: total);
! 
! 	/* The column to which we will shift the text.  */
! 	destination_col = non_white_col - shift_amount;
! 
! 	/* Now let's find out how much of the beginning of the line we can
! 	 * reuse without modification.  */
! 	verbatim_copy_end = bd.textstart;
! 	verbatim_copy_width = bd.start_vcol;
! 
! 	/* If "bd.startspaces" is set, "bd.textstart" points to the character
! 	 * preceding the block. We have to subtract its width to obtain its
! 	 * column number.  */
! 	if (bd.startspaces)
! 	    verbatim_copy_width -= bd.start_char_vcols;
! 	while (verbatim_copy_width < destination_col)
  	{
! 	    incr = lbr_chartabsize(verbatim_copy_end, verbatim_copy_width);
! 	    if (verbatim_copy_width + incr > destination_col)
! 		break;
! 	    verbatim_copy_width += incr;
! 	    mb_ptr_adv(verbatim_copy_end);
  	}
  
! 	/* If "destination_col" is different from the width of the initial
! 	 * part of the line that will be copied, it means we encountered a tab
! 	 * character, which we will have to partly replace with spaces.  */
! 	fill = destination_col - verbatim_copy_width;
! 
! 	/* The replacement line will consist of:
! 	 * - the beginning of the original line up to "verbatim_copy_end",
! 	 * - "fill" number of spaces,
! 	 * - the rest of the line, pointed to by non_white.  */
! 	new_line_len = (unsigned)(verbatim_copy_end - oldp)
! 		       + fill
! 		       + (unsigned)STRLEN(non_white) + 1;
! 
! 	newp = alloc_check(new_line_len);
! 	if (newp == NULL)
! 	    return;
! 	mch_memmove(newp, oldp, (size_t)(verbatim_copy_end - oldp));
! 	copy_spaces(newp + (verbatim_copy_end - oldp), (size_t)fill);
! 	STRMOVE(newp + (verbatim_copy_end - oldp) + fill, non_white);
      }
      /* replace the line */
      ml_replace(curwin->w_cursor.lnum, newp, FALSE);
***************
*** 4851,4857 ****
   * - textlen includes the first/last char to be (partly) deleted
   * - start/endspaces is the number of columns that are taken by the
   *   first/last deleted char minus the number of columns that have to be
!  *   deleted.  for yank and tilde:
   * - textlen includes the first/last char to be wholly yanked
   * - start/endspaces is the number of columns of the first/last yanked char
   *   that are to be yanked.
--- 4872,4879 ----
   * - textlen includes the first/last char to be (partly) deleted
   * - start/endspaces is the number of columns that are taken by the
   *   first/last deleted char minus the number of columns that have to be
!  *   deleted.
!  * for yank and tilde:
   * - textlen includes the first/last char to be wholly yanked
   * - start/endspaces is the number of columns of the first/last yanked char
   *   that are to be yanked.
*** ../vim-7.2.136/src/testdir/Makefile	Wed Sep 10 18:25:18 2008
--- src/testdir/Makefile	Thu Mar  5 04:53:58 2009
***************
*** 20,26 ****
  		test48.out test49.out test51.out test52.out test53.out \
  		test54.out test55.out test56.out test57.out test58.out \
  		test59.out test60.out test61.out test62.out test63.out \
! 		test64.out test65.out
  
  SCRIPTS_GUI = test16.out
  
--- 20,26 ----
  		test48.out test49.out test51.out test52.out test53.out \
  		test54.out test55.out test56.out test57.out test58.out \
  		test59.out test60.out test61.out test62.out test63.out \
! 		test64.out test65.out test66.out
  
  SCRIPTS_GUI = test16.out
  
*** ../vim-7.2.136/src/testdir/test66.in	Wed Mar 11 16:24:44 2009
--- src/testdir/test66.in	Wed Mar 11 11:52:57 2009
***************
*** 0 ****
--- 1,25 ----
+ 
+ Test for visual block shift and tab characters.
+ 
+ STARTTEST
+ :so small.vim
+ /^abcdefgh
+ 4jI    j<<11|D
+ 7|a		
+ 7|a		   
+ 7|a	       	4k13|4j<
+ :$-4,$w! test.out
+ :$-4,$s/\s\+//g
+ 4kI    j<<
+ 7|a		
+ 7|a					
+ 7|a	       		4k13|4j3<
+ :$-4,$w >> test.out
+ :qa!
+ ENDTEST
+ 
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
*** ../vim-7.2.136/src/testdir/test66.ok	Wed Mar 11 16:24:44 2009
--- src/testdir/test66.ok	Thu Mar  5 04:39:36 2009
***************
*** 0 ****
--- 1,10 ----
+     abcdefghijklmnopqrstuvwxyz
+ abcdefghij
+     abc	    defghijklmnopqrstuvwxyz
+     abc	    defghijklmnopqrstuvwxyz
+     abc	    defghijklmnopqrstuvwxyz
+     abcdefghijklmnopqrstuvwxyz
+ abcdefghij
+     abc	    defghijklmnopqrstuvwxyz
+     abc		defghijklmnopqrstuvwxyz
+     abc	    defghijklmnopqrstuvwxyz
*** ../vim-7.2.136/src/version.c	Wed Mar 11 15:36:01 2009
--- src/version.c	Wed Mar 11 16:23:07 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     137,
  /**/

-- 
% cat /usr/include/sys/errno.h
#define	EPERM		1		/* Operation not permitted */
#define	ENOENT		2		/* No such file or directory */
#define	ESRCH		3		/* No such process */
[...]
#define EMACS		666		/* Too many macros */
%

 /// 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    ///


--- NEW FILE 7.2.138 ---
To: vim-dev at vim.org
Subject: Patch 7.2.138 (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.2.138 (extra part of 7.2.137)
Problem:    See 7.2.137.
Solution:   See 7.2.137.
Files:	    src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
	    src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
	    src/testdir/Make_vms.mms


*** ../vim-7.2.137/src/testdir/Make_amiga.mak	Tue Jun 24 23:46:42 2008
--- src/testdir/Make_amiga.mak	Thu Mar  5 04:49:38 2009
***************
*** 25,31 ****
  		test43.out test44.out test45.out test46.out test47.out \
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
! 		test61.out test62.out test63.out test64.out test65.out
  
  .SUFFIXES: .in .out
  
--- 25,32 ----
  		test43.out test44.out test45.out test46.out test47.out \
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
! 		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out
  
  .SUFFIXES: .in .out
  
***************
*** 110,112 ****
--- 111,114 ----
  test63.out: test63.in
  test64.out: test64.in
  test65.out: test65.in
+ test66.out: test66.in
*** ../vim-7.2.137/src/testdir/Make_dos.mak	Tue Jun 24 23:39:51 2008
--- src/testdir/Make_dos.mak	Thu Mar  5 04:52:47 2009
***************
*** 26,32 ****
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out
  
  SCRIPTS32 =	test50.out
  
--- 26,32 ----
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out
  
  SCRIPTS32 =	test50.out
  
*** ../vim-7.2.137/src/testdir/Make_ming.mak	Sat Sep 20 16:26:10 2008
--- src/testdir/Make_ming.mak	Thu Mar  5 04:53:16 2009
***************
*** 45,51 ****
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out
  
  SCRIPTS32 =	test50.out
  
--- 45,51 ----
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out
  
  SCRIPTS32 =	test50.out
  
*** ../vim-7.2.137/src/testdir/Make_os2.mak	Tue Jun 24 22:37:41 2008
--- src/testdir/Make_os2.mak	Thu Mar  5 04:53:31 2009
***************
*** 25,31 ****
  		test43.out test44.out test45.out test46.out test47.out \
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
! 		test61.out test62.out test63.out test64.out test65.out
  
  .SUFFIXES: .in .out
  
--- 25,32 ----
  		test43.out test44.out test45.out test46.out test47.out \
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
! 		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out
  
  .SUFFIXES: .in .out
  
*** ../vim-7.2.137/src/testdir/Make_vms.mms	Mon Sep  1 16:50:09 2008
--- src/testdir/Make_vms.mms	Thu Mar  5 04:53:42 2009
***************
*** 4,10 ****
  # Authors:	Zoltan Arpadffy, <arpadffy at polarhome.com>
  #		Sandor Kopanyi,  <sandor.kopanyi at mailbox.hu>
  #
! # Last change:  2008 Aug 19
  #
  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  # Edit the lines in the Configuration section below to select.
--- 4,10 ----
  # Authors:	Zoltan Arpadffy, <arpadffy at polarhome.com>
  #		Sandor Kopanyi,  <sandor.kopanyi at mailbox.hu>
  #
! # Last change:  2009 Mar 05
  #
  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  # Edit the lines in the Configuration section below to select.
***************
*** 68,74 ****
  	 test43.out test44.out test45.out test46.out \
  	 test48.out test51.out test53.out test54.out test55.out \
  	 test56.out test57.out test60.out \
! 	 test61.out test62.out test63.out test64.out test65.out
  
  .IFDEF WANT_GUI
  SCRIPT_GUI = test16.out
--- 68,75 ----
  	 test43.out test44.out test45.out test46.out \
  	 test48.out test51.out test53.out test54.out test55.out \
  	 test56.out test57.out test60.out \
! 	 test61.out test62.out test63.out test64.out test65.out \
! 	 test66.out
  
  .IFDEF WANT_GUI
  SCRIPT_GUI = test16.out
*** ../vim-7.2.137/src/version.c	Wed Mar 11 16:26:01 2009
--- src/version.c	Wed Mar 11 16:35:06 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     138,
  /**/

-- 
Some of the well know MS-Windows errors:
	ESLEEP		Operator fell asleep
	ENOERR		No error yet
	EDOLLAR		OS too expensive
	EWINDOWS	MS-Windows loaded, system in danger

 /// 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    ///


--- NEW FILE 7.2.139 ---
To: vim-dev at vim.org
Subject: Patch 7.2.139
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.2.139
Problem:    Crash when 'virtualedit' is "all". (James Vega)
Solution:   Avoid overflow when column is MAXCOL. (Dominique Pelle)
Files:	    src/misc2.c


*** ../vim-7.2.138/src/misc2.c	Tue Feb 24 04:28:40 2009
--- src/misc2.c	Wed Mar 11 16:45:05 2009
***************
*** 496,502 ****
  {
      colnr_T len;
  #ifdef FEAT_VIRTUALEDIT
!     colnr_T oldcol = curwin->w_cursor.col + curwin->w_cursor.coladd;
  #endif
  
      len = (colnr_T)STRLEN(ml_get_curline());
--- 496,503 ----
  {
      colnr_T len;
  #ifdef FEAT_VIRTUALEDIT
!     colnr_T oldcol = curwin->w_cursor.col;
!     colnr_T oldcoladd = curwin->w_cursor.col + curwin->w_cursor.coladd;
  #endif
  
      len = (colnr_T)STRLEN(ml_get_curline());
***************
*** 535,541 ****
      if (oldcol == MAXCOL)
  	curwin->w_cursor.coladd = 0;
      else if (ve_flags == VE_ALL)
! 	curwin->w_cursor.coladd = oldcol - curwin->w_cursor.col;
  #endif
  }
  
--- 536,548 ----
      if (oldcol == MAXCOL)
  	curwin->w_cursor.coladd = 0;
      else if (ve_flags == VE_ALL)
!     {
! 	if (oldcoladd > curwin->w_cursor.col)
! 	    curwin->w_cursor.coladd = oldcoladd - curwin->w_cursor.col;
! 	else
! 	    /* avoid weird number when there is a miscalculation or overflow */
! 	    curwin->w_cursor.coladd = 0;
!     }
  #endif
  }
  
*** ../vim-7.2.138/src/version.c	Wed Mar 11 16:36:04 2009
--- src/version.c	Wed Mar 11 17:26:50 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     139,
  /**/

-- 
Some of the well know MS-Windows errors:
	EHUH		Unexpected error
	EUSER		User error, not our fault!
	EGOD		Horrible problem, god knows what has happened
	EERR		Errornous error: nothing wrong

 /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


--- NEW FILE 7.2.140 ---
To: vim-dev at vim.org
Subject: Patch 7.2.140
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.2.140
Problem:    Diff highlighting isn't displayed before the Visual area if it
	    starts at the cursor position. (Markus Heidelberg)
Solution:   Also check fromcol_prev.
Files:	    src/screen.c


*** ../vim-7.2.139/src/screen.c	Sun Feb 22 21:12:22 2009
--- src/screen.c	Wed Mar 11 13:59:24 2009
***************
*** 3555,3561 ****
  		/* Use line_attr when not in the Visual or 'incsearch' area
  		 * (area_attr may be 0 when "noinvcur" is set). */
  	    else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL)
! 					|| (vcol < fromcol || vcol >= tocol)))
  		char_attr = line_attr;
  #endif
  	    else
--- 3555,3562 ----
  		/* Use line_attr when not in the Visual or 'incsearch' area
  		 * (area_attr may be 0 when "noinvcur" is set). */
  	    else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL)
! 				|| vcol < fromcol || vcol_prev < fromcol_prev
! 				|| vcol >= tocol))
  		char_attr = line_attr;
  #endif
  	    else
*** ../vim-7.2.139/src/version.c	Wed Mar 11 17:27:46 2009
--- src/version.c	Wed Mar 11 17:42:19 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     140,
  /**/

-- 
Some of the well know MS-Windows errors:
	EMEMORY		Memory error caused by..., eh...
	ELICENSE	Your license has expired, give us more money!
	EMOUSE		Mouse moved, reinstall Windows
	EILLEGAL	Illegal error, you are not allowed to see this
	EVIRUS		Undetectable virus found

 /// 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    ///


--- NEW FILE 7.2.141 ---
To: vim-dev at vim.org
Subject: Patch 7.2.141
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.2.141
Problem:    When redrawing a character for bold spill this causes the next
	    character to be redrawn as well.
Solution:   Only redraw one extra character. (Yukihiro Nakadaira)
Files:	    src/screen.c


*** ../vim-7.2.140/src/screen.c	Wed Mar 11 17:44:38 2009
--- src/screen.c	Wed Mar 11 13:59:24 2009
***************
*** 5132,5139 ****
  #endif
  
  #if defined(FEAT_GUI) || defined(UNIX)
! 	    /* The bold trick makes a single row of pixels appear in the next
! 	     * character.  When a bold character is removed, the next
  	     * character should be redrawn too.  This happens for our own GUI
  	     * and for some xterms. */
  	    if (
--- 5132,5139 ----
  #endif
  
  #if defined(FEAT_GUI) || defined(UNIX)
! 	    /* The bold trick makes a single column of pixels appear in the
! 	     * next character.  When a bold character is removed, the next
  	     * character should be redrawn too.  This happens for our own GUI
  	     * and for some xterms. */
  	    if (
***************
*** 6276,6284 ****
--- 6276,6290 ----
      int		pcc[MAX_MCO];
  # endif
  #endif
+ #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
+     int		force_redraw_this;
+     int		force_redraw_next = FALSE;
+ #endif
+     int		need_redraw;
  
      if (ScreenLines == NULL || row >= screen_Rows)	/* safety check */
  	return;
+     off = LineOffset[row] + col;
  
  #ifdef FEAT_MBYTE
      /* When drawing over the right halve of a double-wide char clear out the
***************
*** 6288,6297 ****
  	    && !gui.in_use
  # endif
  	    && mb_fix_col(col, row) != col)
! 	screen_puts_len((char_u *)" ", 1, row, col - 1, 0);
  #endif
  
-     off = LineOffset[row] + col;
  #ifdef FEAT_MBYTE
      max_off = LineOffset[row] + screen_Columns;
  #endif
--- 6294,6314 ----
  	    && !gui.in_use
  # endif
  	    && mb_fix_col(col, row) != col)
!     {
! 	ScreenLines[off - 1] = ' ';
! 	ScreenAttrs[off - 1] = 0;
! 	if (enc_utf8)
! 	{
! 	    ScreenLinesUC[off - 1] = 0;
! 	    ScreenLinesC[0][off - 1] = 0;
! 	}
! 	/* redraw the previous cell, make it empty */
! 	screen_char(off - 1, row, col - 1);
! 	/* force the cell at "col" to be redrawn */
! 	force_redraw_next = TRUE;
!     }
  #endif
  
  #ifdef FEAT_MBYTE
      max_off = LineOffset[row] + screen_Columns;
  #endif
***************
*** 6355,6361 ****
  	}
  #endif
  
! 	if (ScreenLines[off] != c
  #ifdef FEAT_MBYTE
  		|| (mbyte_cells == 2
  		    && ScreenLines[off + 1] != (enc_dbcs ? ptr[1] : 0))
--- 6372,6383 ----
  	}
  #endif
  
! #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
! 	force_redraw_this = force_redraw_next;
! 	force_redraw_next = FALSE;
! #endif
! 
! 	need_redraw = ScreenLines[off] != c
  #ifdef FEAT_MBYTE
  		|| (mbyte_cells == 2
  		    && ScreenLines[off + 1] != (enc_dbcs ? ptr[1] : 0))
***************
*** 6367,6386 ****
  			|| screen_comp_differs(off, u8cc)))
  #endif
  		|| ScreenAttrs[off] != attr
! 		|| exmode_active
  		)
  	{
  #if defined(FEAT_GUI) || defined(UNIX)
  	    /* The bold trick makes a single row of pixels appear in the next
  	     * character.  When a bold character is removed, the next
  	     * character should be redrawn too.  This happens for our own GUI
! 	     * and for some xterms.
! 	     * Force the redraw by setting the attribute to a different value
! 	     * than "attr", the contents of ScreenLines[] may be needed by
! 	     * mb_off2cells() further on.
! 	     * Don't do this for the last drawn character, because the next
! 	     * character may not be redrawn. */
! 	    if (
  # ifdef FEAT_GUI
  		    gui.in_use
  # endif
--- 6389,6408 ----
  			|| screen_comp_differs(off, u8cc)))
  #endif
  		|| ScreenAttrs[off] != attr
! 		|| exmode_active;
! 
! 	if (need_redraw
! #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
! 		|| force_redraw_this
! #endif
  		)
  	{
  #if defined(FEAT_GUI) || defined(UNIX)
  	    /* The bold trick makes a single row of pixels appear in the next
  	     * character.  When a bold character is removed, the next
  	     * character should be redrawn too.  This happens for our own GUI
! 	     * and for some xterms. */
! 	    if (need_redraw && ScreenLines[off] != ' ' && (
  # ifdef FEAT_GUI
  		    gui.in_use
  # endif
***************
*** 6390,6412 ****
  # ifdef UNIX
  		    term_is_xterm
  # endif
! 	       )
  	    {
! 		int		n;
  
! 		n = ScreenAttrs[off];
! # ifdef FEAT_MBYTE
! 		if (col + mbyte_cells < screen_Columns
! 			&& (n > HL_ALL || (n & HL_BOLD))
! 			&& (len < 0 ? ptr[mbyte_blen] != NUL
! 					     : ptr + mbyte_blen < text + len))
! 		    ScreenAttrs[off + mbyte_cells] = attr + 1;
! # else
! 		if (col + 1 < screen_Columns
! 			&& (n > HL_ALL || (n & HL_BOLD))
! 			&& (len < 0 ? ptr[1] != NUL : ptr + 1 < text + len))
! 		    ScreenLines[off + 1] = 0;
! # endif
  	    }
  #endif
  #ifdef FEAT_MBYTE
--- 6412,6425 ----
  # ifdef UNIX
  		    term_is_xterm
  # endif
! 		    ))
  	    {
! 		int	n = ScreenAttrs[off];
  
! 		if (n > HL_ALL)
! 		    n = syn_attr2attr(n);
! 		if (n & HL_BOLD)
! 		    force_redraw_next = TRUE;
  	    }
  #endif
  #ifdef FEAT_MBYTE
***************
*** 6493,6498 ****
--- 6506,6525 ----
  	    ++ptr;
  	}
      }
+ 
+ #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
+     /* If we detected the next character needs to be redrawn, but the text
+      * doesn't extend up to there, update the character here. */
+     if (force_redraw_next && col < screen_Columns)
+     {
+ # ifdef FEAT_MBYTE
+ 	if (enc_dbcs != 0 && dbcs_off2cells(off, max_off) > 1)
+ 	    screen_char_2(off, row, col);
+ 	else
+ # endif
+ 	    screen_char(off, row, col);
+     }
+ #endif
  }
  
  #ifdef FEAT_SEARCH_EXTRA
*** ../vim-7.2.140/src/version.c	Wed Mar 11 17:44:38 2009
--- src/version.c	Wed Mar 11 17:55:22 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     141,
  /**/

-- 
Some of the well know MS-Windows errors:
	ETIME		Wrong time, wait a little while
	ECRASH		Try again...
	EDETECT		Unable to detect errors
	EOVER		You lost!  Play another game?
	ENOCLUE		Eh, what did you want?

 /// 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    ///


--- NEW FILE 7.2.142 ---
To: vim-dev at vim.org
Subject: Patch 7.2.142
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.2.142
Problem:    Motif and Athena balloons don't use tooltip colors.
Solution:   Set the colors. (Matt Wozniski)
Files:	    src/gui_beval.c


*** ../vim-7.2.141/src/gui_beval.c	Thu May 10 21:29:20 2007
--- src/gui_beval.c	Wed Mar 11 15:20:36 2009
***************
*** 1291,1296 ****
--- 1291,1313 ----
  		XtNy, ty,
  		NULL);
  #endif
+ 	/* Set tooltip colors */
+ 	{
+ 	    Arg args[2];
+ 
+ #ifdef FEAT_GUI_MOTIF
+ 	    args[0].name = XmNbackground;
+ 	    args[0].value = gui.tooltip_bg_pixel;
+ 	    args[1].name = XmNforeground;
+ 	    args[1].value = gui.tooltip_fg_pixel;
+ #else /* Athena */
+ 	    args[0].name = XtNbackground;
+ 	    args[0].value = gui.tooltip_bg_pixel;
+ 	    args[1].name = XtNforeground;
+ 	    args[1].value = gui.tooltip_fg_pixel;
+ #endif
+ 	    XtSetValues(beval->balloonLabel, &args[0], XtNumber(args));
+ 	}
  
  	XtPopup(beval->balloonShell, XtGrabNone);
  
*** ../vim-7.2.141/src/version.c	Wed Mar 11 17:57:05 2009
--- src/version.c	Wed Mar 18 12:20:01 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     142,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
233. You start dreaming about web pages...in html.

 /// 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    ///


--- NEW FILE 7.2.143 ---
To: vim-dev at vim.org
Subject: Patch 7.2.143
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.2.143
Problem:    No command line completion for ":cscope" command.
Solution:   Add the completion for ":cscope". (Dominique Pelle)
Files:	    src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c,
	    src/proto/if_cscope.pro, src/vim.h


*** ../vim-7.2.142/src/ex_docmd.c	Wed Mar 11 15:36:01 2009
--- src/ex_docmd.c	Wed Mar 11 15:45:04 2009
***************
*** 3683,3688 ****
--- 3683,3693 ----
  	case CMD_highlight:
  	    set_context_in_highlight_cmd(xp, arg);
  	    break;
+ #ifdef FEAT_CSCOPE
+ 	case CMD_cscope:
+ 	    set_context_in_cscope_cmd(xp, arg);
+ 	    break;
+ #endif
  #ifdef FEAT_LISTCMDS
  	case CMD_bdelete:
  	case CMD_bwipeout:
***************
*** 5187,5192 ****
--- 5192,5200 ----
      {EXPAND_AUGROUP, "augroup"},
      {EXPAND_BUFFERS, "buffer"},
      {EXPAND_COMMANDS, "command"},
+ #if defined(FEAT_CSCOPE)
+     {EXPAND_CSCOPE, "cscope"},
+ #endif
  #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
      {EXPAND_USER_DEFINED, "custom"},
      {EXPAND_USER_LIST, "customlist"},
*** ../vim-7.2.142/src/ex_getln.c	Thu Mar  5 03:13:51 2009
--- src/ex_getln.c	Wed Mar 11 15:45:04 2009
***************
*** 4518,4523 ****
--- 4518,4526 ----
  	    {EXPAND_EVENTS, get_event_name, TRUE},
  	    {EXPAND_AUGROUP, get_augroup_name, TRUE},
  #endif
+ #ifdef FEAT_CSCOPE
+ 	    {EXPAND_CSCOPE, get_cscope_name, TRUE},
+ #endif
  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
  	&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
  	    {EXPAND_LANGUAGE, get_lang_arg, TRUE},
*** ../vim-7.2.142/src/if_cscope.c	Wed Jan 28 16:03:51 2009
--- src/if_cscope.c	Wed Mar 11 15:56:07 2009
***************
*** 93,104 ****
      (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
  }
  
  /*
   * PRIVATE: do_cscope_general
   *
!  * find the command, print help if invalid, and the then call the
!  * corresponding command function,
!  * called from do_cscope and do_scscope
   */
      static void
  do_cscope_general(eap, make_split)
--- 93,209 ----
      (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
  }
  
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+ 
+ static enum
+ {
+     EXP_CSCOPE_SUBCMD,	/* expand ":cscope" sub-commands */
+     EXP_CSCOPE_FIND,	/* expand ":cscope find" arguments */
+     EXP_CSCOPE_KILL	/* expand ":cscope kill" arguments */
+ } expand_what;
+ 
+ /*
+  * Function given to ExpandGeneric() to obtain the cscope command
+  * expansion.
+  */
+ /*ARGSUSED*/
+     char_u *
+ get_cscope_name(xp, idx)
+     expand_T	*xp;
+     int		idx;
+ {
+     switch (expand_what)
+     {
+     case EXP_CSCOPE_SUBCMD:
+ 	/* Complete with sub-commands of ":cscope":
+ 	 * add, find, help, kill, reset, show */
+ 	return (char_u *)cs_cmds[idx].name;
+     case EXP_CSCOPE_FIND:
+ 	{
+ 	    const char *query_type[] =
+ 	    {
+ 		"c", "d", "e", "f", "g", "i", "s", "t", NULL
+ 	    };
+ 
+ 	    /* Complete with query type of ":cscope find {query_type}".
+ 	     * {query_type} can be letters (c, d, ... t) or numbers (0, 1,
+ 	     * ..., 8) but only complete with letters, since numbers are
+ 	     * redundant. */
+ 	    return (char_u *)query_type[idx];
+ 	}
+     case EXP_CSCOPE_KILL:
+ 	{
+ 	    int			i;
+ 	    int			current_idx = 0;
+ 	    static char_u	connection[2];
+ 
+ 	    /* ":cscope kill" accepts connection numbers or partial names of
+ 	     * the pathname of the cscope database as argument.  Only complete
+ 	     * with connection numbers. -1 can also be used to kill all
+ 	     * connections. */
+ 	    for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ 	    {
+ 		if (csinfo[i].fname == NULL)
+ 		    continue;
+ 		if (current_idx++ == idx)
+ 		{
+ 		    /* Connection number fits in one character since
+ 		     * CSCOPE_MAX_CONNECTIONS is < 10 */
+ 		    connection[0] = i + '0';
+ 		    connection[1] = NUL;
+ 		    return connection;
+ 		}
+ 	    }
+ 	    return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
+ 	}
+     default:
+ 	return NULL;
+     }
+ }
+ 
+ /*
+  * Handle command line completion for :cscope command.
+  */
+     void
+ set_context_in_cscope_cmd(xp, arg)
+     expand_T	*xp;
+     char_u	*arg;
+ {
+     char_u	*p;
+ 
+     /* Default: expand subcommands */
+     xp->xp_context = EXPAND_CSCOPE;
+     expand_what = EXP_CSCOPE_SUBCMD;
+     xp->xp_pattern = arg;
+ 
+     /* (part of) subcommand already typed */
+     if (*arg != NUL)
+     {
+ 	p = skiptowhite(arg);
+ 	if (*p != NUL)		    /* past first word */
+ 	{
+ 	    xp->xp_pattern = skipwhite(p);
+ 	    if (*skiptowhite(xp->xp_pattern) != NUL)
+ 		xp->xp_context = EXPAND_NOTHING;
+ 	    else if (STRNICMP(arg, "add", p - arg) == 0)
+ 		xp->xp_context = EXPAND_FILES;
+ 	    else if (STRNICMP(arg, "kill", p - arg) == 0)
+ 		expand_what = EXP_CSCOPE_KILL;
+ 	    else if (STRNICMP(arg, "find", p - arg) == 0)
+ 		expand_what = EXP_CSCOPE_FIND;
+ 	    else
+ 		xp->xp_context = EXPAND_NOTHING;
+ 	}
+     }
+ }
+ 
+ #endif /* FEAT_CMDL_COMPL */
+ 
  /*
   * PRIVATE: do_cscope_general
   *
!  * Find the command, print help if invalid, and then call the corresponding
!  * command function.
   */
      static void
  do_cscope_general(eap, make_split)
*** ../vim-7.2.142/src/proto/if_cscope.pro	Thu Sep  6 17:38:21 2007
--- src/proto/if_cscope.pro	Wed Mar 11 15:57:03 2009
***************
*** 1,4 ****
--- 1,6 ----
  /* if_cscope.c */
+ char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
+ void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg));
  void do_cscope __ARGS((exarg_T *eap));
  void do_scscope __ARGS((exarg_T *eap));
  void do_cstag __ARGS((exarg_T *eap));
*** ../vim-7.2.142/src/vim.h	Sun Feb 22 02:36:36 2009
--- src/vim.h	Wed Mar 11 15:45:04 2009
***************
*** 708,713 ****
--- 708,714 ----
  #define EXPAND_USER_DEFINED	30
  #define EXPAND_USER_LIST	31
  #define EXPAND_SHELLCMD		32
+ #define EXPAND_CSCOPE		33
  
  /* Values for exmode_active (0 is no exmode) */
  #define EXMODE_NORMAL		1
*** ../vim-7.2.142/src/version.c	Wed Mar 18 12:20:35 2009
--- src/version.c	Wed Mar 18 12:48:08 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     143,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
234. You started college as a chemistry major, and walk out four years
     later as an Internet provider.

 /// 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    ///


--- NEW FILE 7.2.144 ---
To: vim-dev at vim.org
Subject: Patch 7.2.144
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.2.144
Problem:    When 't_Co' is set to the value it already had the color scheme is
            reloaded anyway.
Solution:   Only load the colorscheme when the t_Co value changes. (Dominique
            Pelle)
Files:      src/option.c


*** ../vim-7.2.143/src/option.c	Wed Mar  4 04:11:56 2009
--- src/option.c	Wed Mar 18 12:00:28 2009
***************
*** 6022,6036 ****
  	/* ":set t_Co=0" and ":set t_Co=1" do ":set t_Co=" */
  	if (varp == &T_CCO)
  	{
! 	    t_colors = atoi((char *)T_CCO);
! 	    if (t_colors <= 1)
  	    {
! 		if (new_value_alloced)
! 		    vim_free(T_CCO);
! 		T_CCO = empty_option;
  	    }
- 	    /* We now have a different color setup, initialize it again. */
- 	    init_highlight(TRUE, FALSE);
  	}
  	ttest(FALSE);
  	if (varp == &T_ME)
--- 6022,6044 ----
  	/* ":set t_Co=0" and ":set t_Co=1" do ":set t_Co=" */
  	if (varp == &T_CCO)
  	{
! 	    int colors = atoi((char *)T_CCO);
! 
! 	    /* Only reinitialize colors if t_Co value has really changed to
! 	     * avoid expensive reload of colorscheme if t_Co is set to the
! 	     * same value multiple times. */
! 	    if (colors != t_colors)
  	    {
! 		t_colors = colors;
! 		if (t_colors <= 1)
! 		{
! 		    if (new_value_alloced)
! 			vim_free(T_CCO);
! 		    T_CCO = empty_option;
! 		}
! 		/* We now have a different color setup, initialize it again. */
! 		init_highlight(TRUE, FALSE);
  	    }
  	}
  	ttest(FALSE);
  	if (varp == &T_ME)
*** ../vim-7.2.143/src/version.c	Wed Mar 18 12:50:58 2009
--- src/version.c	Wed Mar 18 14:16:48 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     144,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
235. You start naming your kids Pascal, COBOL, Algol and Fortran.

 /// 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    ///


--- NEW FILE 7.2.145 ---
To: vim-dev at vim.org
Subject: Patch 7.2.145
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.2.145
Problem:    White space in ":cscope find" is not ignored.
Solution:   Ignore the white space, but not when the leading white space is
	    useful for the argument.
Files:	    runtime/doc/if_cscop.txt, src/if_cscope.c


*** ../vim-7.2.144/runtime/doc/if_cscop.txt	Sat Aug  9 19:36:48 2008
--- runtime/doc/if_cscop.txt	Wed Mar 18 14:30:09 2009
***************
*** 1,4 ****
! *if_cscop.txt*  For Vim version 7.2.  Last change: 2005 Mar 29
  
  
  		  VIM REFERENCE MANUAL    by Andy Kahn
--- 1,4 ----
! *if_cscop.txt*  For Vim version 7.2.  Last change: 2009 Mar 18
  
  
  		  VIM REFERENCE MANUAL    by Andy Kahn
***************
*** 131,141 ****
  		7 or f: Find this file
  		8 or i: Find files #including this file
  
  	EXAMPLES >
  	    :cscope find c vim_free
! 	    :cscope find 3 vim_free
  <
! 	    These two examples perform the same query. >
  
  	    :cscope find 0 DEFAULT_TERM
  <
--- 131,152 ----
  		7 or f: Find this file
  		8 or i: Find files #including this file
  
+ 	For all types, except 4 and 6, leading white space for {name} is
+ 	removed.  For 4 and 6 there is exactly one space between {querytype}
+ 	and {name}.  Further white space is included in {name}.
+ 
  	EXAMPLES >
  	    :cscope find c vim_free
! 	    :cscope find 3  vim_free
! <
! 	    These two examples perform the same query: functions calling
! 	    "vim_free". >
! 
! 	    :cscope find t initOnce
! 	    :cscope find t  initOnce
  <
! 	    The first one searches for the text "initOnce", the second one for
! 	    " initOnce". >
  
  	    :cscope find 0 DEFAULT_TERM
  <
*** ../vim-7.2.144/src/if_cscope.c	Wed Mar 18 12:50:58 2009
--- src/if_cscope.c	Wed Mar 18 13:23:53 2009
***************
*** 764,769 ****
--- 764,770 ----
  {
      char *cmd;
      short search;
+     char *pat;
  
      switch (csoption[0])
      {
***************
*** 797,806 ****
  	return NULL;
      }
  
!     if ((cmd = (char *)alloc((unsigned)(strlen(pattern) + 2))) == NULL)
  	return NULL;
  
!     (void)sprintf(cmd, "%d%s", search, pattern);
  
      return cmd;
  } /* cs_create_cmd */
--- 798,814 ----
  	return NULL;
      }
  
!     /* Skip white space before the patter, except for text and pattern search,
!      * they may want to use the leading white space. */
!     pat = pattern;
!     if (search != 4 && search != 6)
! 	while vim_iswhite(*pat)
! 	    ++pat;
! 
!     if ((cmd = (char *)alloc((unsigned)(strlen(pat) + 2))) == NULL)
  	return NULL;
  
!     (void)sprintf(cmd, "%d%s", search, pat);
  
      return cmd;
  } /* cs_create_cmd */
*** ../vim-7.2.144/src/version.c	Wed Mar 18 14:19:28 2009
--- src/version.c	Wed Mar 18 14:28:46 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     145,
  /**/

-- 
Google is kind of like Dr. Who's Tardis; it's weirder on the
inside than on the outside...

 /// 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    ///


--- NEW FILE 7.2.146 ---
To: vim-dev at vim.org
Subject: Patch 7.2.146
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.2.146
Problem:    v:warningmsg isn't used for all warnings.
Solution:   Set v:warningmsg for relevant warnings. (Ingo Karkat)
Files:	    src/fileio.c, src/misc1.c, src/option.c


*** ../vim-7.2.145/src/fileio.c	Wed Mar 11 13:09:30 2009
--- src/fileio.c	Wed Mar 18 15:03:46 2009
***************
*** 6647,6652 ****
--- 6647,6657 ----
  	    tbuf = alloc((unsigned)(STRLEN(path) + STRLEN(mesg)
  							+ STRLEN(mesg2) + 2));
  	    sprintf((char *)tbuf, mesg, path);
+ #ifdef FEAT_EVAL
+ 	    /* Set warningmsg here, before the unimportant and output-specific
+ 	     * mesg2 has been appended. */
+ 	    set_vim_var_string(VV_WARNINGMSG, tbuf, -1);
+ #endif
  #if defined(FEAT_CON_DIALOG) || defined(FEAT_GUI_DIALOG)
  	    if (can_reload)
  	    {
*** ../vim-7.2.145/src/misc1.c	Thu Nov 20 17:09:09 2008
--- src/misc1.c	Wed Mar 18 15:06:59 2009
***************
*** 2955,2960 ****
--- 2955,2962 ----
      int	    col;		/* column for message; non-zero when in insert
  				   mode and 'showmode' is on */
  {
+     static char *w_readonly = N_("W10: Warning: Changing a readonly file");
+ 
      if (curbuf->b_did_warn == FALSE
  	    && curbufIsChanged() == 0
  #ifdef FEAT_AUTOCMD
***************
*** 2977,2984 ****
  	if (msg_row == Rows - 1)
  	    msg_col = col;
  	msg_source(hl_attr(HLF_W));
! 	MSG_PUTS_ATTR(_("W10: Warning: Changing a readonly file"),
! 						   hl_attr(HLF_W) | MSG_HIST);
  	msg_clr_eos();
  	(void)msg_end();
  	if (msg_silent == 0 && !silent_mode)
--- 2979,2988 ----
  	if (msg_row == Rows - 1)
  	    msg_col = col;
  	msg_source(hl_attr(HLF_W));
! 	MSG_PUTS_ATTR(_(w_readonly), hl_attr(HLF_W) | MSG_HIST);
! #ifdef FEAT_EVAL
! 	set_vim_var_string(VV_WARNINGMSG, (char_u *)_(w_readonly), -1);
! #endif
  	msg_clr_eos();
  	(void)msg_end();
  	if (msg_silent == 0 && !silent_mode)
*** ../vim-7.2.145/src/option.c	Wed Mar 18 14:19:28 2009
--- src/option.c	Wed Mar 18 15:06:11 2009
***************
*** 7563,7571 ****
  	     * set. */
  	    if (STRCMP(p_enc, "utf-8") != 0)
  	    {
  		msg_source(hl_attr(HLF_W));
! 		MSG_ATTR(_("W17: Arabic requires UTF-8, do ':set encoding=utf-8'"),
! 			hl_attr(HLF_W));
  	    }
  
  # ifdef FEAT_MBYTE
--- 7563,7575 ----
  	     * set. */
  	    if (STRCMP(p_enc, "utf-8") != 0)
  	    {
+ 		static char *w_arabic = N_("W17: Arabic requires UTF-8, do ':set encoding=utf-8'");
+ 
  		msg_source(hl_attr(HLF_W));
! 		MSG_ATTR(_(w_arabic), hl_attr(HLF_W));
! #ifdef FEAT_EVAL
! 		set_vim_var_string(VV_WARNINGMSG, (char_u *)_(w_arabic), -1);
! #endif
  	    }
  
  # ifdef FEAT_MBYTE
*** ../vim-7.2.145/src/version.c	Wed Mar 18 14:30:46 2009
--- src/version.c	Wed Mar 18 15:38:27 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     146,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
238. You think faxes are old-fashioned.

 /// 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    ///


--- NEW FILE 7.2.147 ---
To: vim-dev at vim.org
Subject: Patch 7.2.147
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.2.147
Problem:    When compiled as small version and 'number' is on the cursor is
	    displayed in the wrong position after a tab. (James Vega)
Solution:   Don't increment vcol when still displaying the line number.
Files:	    src/screen.c


*** ../vim-7.2.146/src/screen.c	Wed Mar 11 17:57:05 2009
--- src/screen.c	Wed Mar 18 16:18:00 2009
***************
*** 4665,4671 ****
  	    --n_skip;
  
  	/* Only advance the "vcol" when after the 'number' column. */
! 	if (draw_state >= WL_SBR
  #ifdef FEAT_DIFF
  		&& filler_todo <= 0
  #endif
--- 4665,4671 ----
  	    --n_skip;
  
  	/* Only advance the "vcol" when after the 'number' column. */
! 	if (draw_state > WL_NR
  #ifdef FEAT_DIFF
  		&& filler_todo <= 0
  #endif
*** ../vim-7.2.146/src/version.c	Wed Mar 18 15:40:03 2009
--- src/version.c	Wed Mar 18 16:26:00 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     147,
  /**/

-- 
You can tune a file system, but you can't tuna fish
							-- man tunefs

 /// 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    ///


--- NEW FILE 7.2.148 ---
To: vim-dev at vim.org
Subject: Patch 7.2.148
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.2.148
Problem:    When searching for "$" while 'hlsearch' is set, highlighting the
	    character after the line does not work in the cursor column.
	    Also highlighting for Visual mode after the line end when this
	    isn't needed.  (Markus Heidelberg)
Solution:   Only compare the cursor column in the cursor line.  Only highlight
	    for Visual selection after the last character when it's needed to
	    see where the Visual selection ends.
Files:	    src/screen.c


*** ../vim-7.2.147/src/screen.c	Wed Mar 18 16:26:31 2009
--- src/screen.c	Wed Mar 18 17:24:56 2009
***************
*** 2889,2896 ****
  	}
  	else
  	    tocol = MAXCOL;
! 	if (fromcol == tocol)		/* do at least one character */
! 	    tocol = fromcol + 1;	/* happens when past end of line */
  	area_highlighting = TRUE;
  	attr = hl_attr(HLF_I);
      }
--- 2889,2897 ----
  	}
  	else
  	    tocol = MAXCOL;
! 	/* do at least one character; happens when past end of line */
! 	if (fromcol == tocol)
! 	    tocol = fromcol + 1;
  	area_highlighting = TRUE;
  	attr = hl_attr(HLF_I);
      }
***************
*** 4118,4123 ****
--- 4119,4125 ----
  # endif
  				    (col < W_WIDTH(wp)))
  				&& !(noinvcur
+ 				    && lnum == wp->w_cursor.lnum
  				    && (colnr_T)vcol == wp->w_virtcol)))
  			&& lcs_eol_one >= 0)
  		{
***************
*** 4259,4265 ****
  	 * preedit_changed and commit.  Thus Vim can't set "im_is_active", use
  	 * im_is_preediting() here. */
  	if (xic != NULL
! 		&& lnum == curwin->w_cursor.lnum
  		&& (State & INSERT)
  		&& !p_imdisable
  		&& im_is_preediting()
--- 4261,4267 ----
  	 * preedit_changed and commit.  Thus Vim can't set "im_is_active", use
  	 * im_is_preediting() here. */
  	if (xic != NULL
! 		&& lnum == wp->w_cursor.lnum
  		&& (State & INSERT)
  		&& !p_imdisable
  		&& im_is_preediting()
***************
*** 4268,4274 ****
  	    colnr_T tcol;
  
  	    if (preedit_end_col == MAXCOL)
! 		getvcol(curwin, &(curwin->w_cursor), &tcol, NULL, NULL);
  	    else
  		tcol = preedit_end_col;
  	    if ((long)preedit_start_col <= vcol && vcol < (long)tcol)
--- 4270,4276 ----
  	    colnr_T tcol;
  
  	    if (preedit_end_col == MAXCOL)
! 		getvcol(curwin, &(wp->w_cursor), &tcol, NULL, NULL);
  	    else
  		tcol = preedit_end_col;
  	    if ((long)preedit_start_col <= vcol && vcol < (long)tcol)
***************
*** 4365,4371 ****
  	    }
  #endif
  	    if (lcs_eol == lcs_eol_one
! 		    && ((area_attr != 0 && vcol == fromcol && c == NUL)
  #ifdef FEAT_SEARCH_EXTRA
  			/* highlight 'hlsearch' match at end of line */
  			|| (prevcol_hl_flag == TRUE
--- 4367,4379 ----
  	    }
  #endif
  	    if (lcs_eol == lcs_eol_one
! 		    && ((area_attr != 0 && vcol == fromcol
! #ifdef FEAT_VISUAL
! 			    && (VIsual_mode != Ctrl_V
! 				|| lnum == VIsual.lnum
! 				|| lnum == curwin->w_cursor.lnum)
! #endif
! 			    && c == NUL)
  #ifdef FEAT_SEARCH_EXTRA
  			/* highlight 'hlsearch' match at end of line */
  			|| (prevcol_hl_flag == TRUE
***************
*** 4459,4465 ****
  	if (c == NUL)
  	{
  #ifdef FEAT_SYN_HL
! 	    if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol)
  	    {
  		/* highlight last char after line */
  		--col;
--- 4467,4474 ----
  	if (c == NUL)
  	{
  #ifdef FEAT_SYN_HL
! 	    if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol
! 		    && lnum == wp->w_cursor.lnum)
  	    {
  		/* highlight last char after line */
  		--col;
*** ../vim-7.2.147/src/version.c	Wed Mar 18 16:26:31 2009
--- src/version.c	Wed Mar 18 19:05:37 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     148,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
239. You think "surfing" is something you do on dry land.

 /// 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    ///


Index: README.patches
===================================================================
RCS file: /cvs/extras/rpms/vim/F-10/README.patches,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -r1.115 -r1.116
--- README.patches	1 Dec 2008 15:57:03 -0000	1.115
+++ README.patches	27 Mar 2009 11:53:29 -0000	1.116
@@ -7,7 +7,7 @@
 
 The best is to apply the patches in sequence.  This avoids problems
 when a patch depends on a previous patch.  If you did not unpack the
-extra archive, you may want to skip patches marked with "extra:".
+extra archive, you may want to skip patches marked with "(extra)".
 Similarly for the "lang" archive.  Or ignore errors for missing files.
 
 Before patching, change to the top Vim directory, where the "src"
@@ -22,6 +22,10 @@
 
 Checksums for the patch files can be found in the file MD5.
 
+Collection of patches for Vim 7.2:
+  SIZE  NAME                  INCLUDES
+108889  7.2.001-100.gz        patches 7.2.001 to 7.2.100, gzip'ed
+
 Individual patches for Vim 7.2:
 
   SIZE  NAME     FIXES
@@ -65,7 +69,7 @@
   2438  7.2.038  overlapping arguments to memcpy()
   1378  7.2.039  accessing freed memory on exit when EXITFREE is defined
   1836  7.2.040  ":e ++ff=dos foo" gets "unix" 'ff' when CR before NL missing
- 22993  7.2.041  diff messed up when editing a diff buffer in another tab page
+ 22993  7.2.041  (extra) diff wrong when edit diff buffer in another tab page
   4987  7.2.042  restoring view in autocmd sometimes doesn't work completely
   2550  7.2.043  VMS: Too many chars escaped in filename and shell commands
   5639  7.2.044  crash because of gcc 4 being over protective for strcpy()
@@ -85,3 +89,91 @@
   2338  7.2.058  can't add a feature name in the :version output
   1847  7.2.059  diff is not always displayed properly
  34772  7.2.060  spell checking doesn't work well for compound words
+  1886  7.2.061  creating funcref requires loading the autoload script first
+  1657  7.2.062  "[Scratch]" is not translated
+  3558  7.2.063  warning for NULL argument of Perl_sys_init3()
+  1942  7.2.064  repeating "~" on a Visual block doesn't always update screen
+  5149  7.2.065  GTK GUI: cursor disappears doing ":vsp" when maximized
+  2759  7.2.066  not easy to check if 'encoding' is a multi-byte encoding
+  1683  7.2.067  can't load sesison extra file when it contains special chars
+  2598  7.2.068  error when Emacs tags file line is too long
+  1726  7.2.069  (after 7.2.060) compiler warning for putting size_t in int
+ 17606  7.2.070  crash when a function returns a:000
+  2353  7.2.071  (extra) Win32: Handling netbeans events may cause a crash
+  1615  7.2.072  (extra, fixed patch) compiler warning in Sniff code
+  4121  7.2.073  ":set <xHome>" has the same output as ":set <Home>"
+  1832  7.2.074  (extra, after 7.2.073) extra part of 7.2.073
+  2218  7.2.075  (after 7.2.058) unclear comment about making a diff
+  2666  7.2.076  rename(from, to) deletes file if names refer to the same file
+  4745  7.2.077  (after 7.2.076) rename() fails if names differ only in case
+  3298  7.2.078  problems with deleting folds
+  6947  7.2.079  "killed" netbeans events are not handled correctly
+  9942  7.2.080  accessing wrong memory with completion and composing char
+  1728  7.2.081  compiler warning for float overflow on VAX
+  2134  7.2.082  if 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a
+  1733  7.2.083  ":tag" doesn't return to the right tag entry in the tag stack
+  4331  7.2.084  Python: vim.eval() is wrong for recursive structures 
+  1862  7.2.085  ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8
+  3045  7.2.086  using ":diffget 1" in buffer 1 corrupts the text
+  1570  7.2.087  adding URL to 'path' doesn't work to edit a file
+  2895  7.2.088  (extra) Win32: Using the clipboard sometimes fails
+  2473  7.2.089  (extra) Win32: crash when using Ultramon buttons
+  3286  7.2.090  user command containing 0x80 does not work properly
+  2113  7.2.091  ":cs help" output is not aligned for some languages
+  4538  7.2.092  some error messages are not translated
+  7287  7.2.093  (extra) dialogs can't always handle multi-byte text
+  3430  7.2.094  compiler warning for signed/unsigned compare, typos
+  1902  7.2.095  using "r" and then CTRL-C Visual highlighting is not removed
+  1464  7.2.096  after ":number" "Press Enter" msg may be on the wrong screen
+  1692  7.2.097  "!xterm&" doesn't work when 'shell' is "bash"
+  1864  7.2.098  warning for signed/unsigned pointer
+  3498  7.2.099  unnecessary redraw when changing GUI options in terminal
+  3846  7.2.100  missing first three bytes on sourced FIFO
+  1362  7.2.101  (extra) MSVC version not recognized
+  1496  7.2.102  (after 7.2.100) BOM at start of Vim script not removed
+  5153  7.2.103  tab page line isn't always updated, e.g. when 'bomb' is set
+  1523  7.2.104  after ":saveas foo" the tab label isn't updated right away
+  2159  7.2.105  modeline setting for 'foldmethod' overrules diff options
+  3422  7.2.106  endless loop for "]s" in HTML when there are no misspellings
+  1825  7.2.107  After a GUI dialog ":echo" messages are deleted
+  1622  7.2.108  (after 7.2.105) can't compile without the diff feature
+ 11901  7.2.109  'langmap' does not work for multi-byte characters
+  1407  7.2.110  compiler warning for unused variable
+  2724  7.2.111  selection unclear for Visual block mode with 'cursorcolumn'
+  1509  7.2.112  cursor invisible in first col in Visual mode if 'number' set
+  2700  7.2.113  crash when using submatch() in substitute()
+  2531  7.2.114  using wrong printf format: %d instead of %ld
+  2716  7.2.115  some debugging code is never used
+  1619  7.2.116  not all memory is freed when EXITFREE is defined
+  2592  7.2.117  location list incorrectly labelled "Quickfix List"
+  2068  7.2.118  <PageUp> at the more prompt only does half a page
+  1550  7.2.119  status line is redrawn too often
+  8305  7.2.120  location list is copied and then deleted when opening window
+  4993  7.2.121  can't stop output of "!grep a *.c" in gvim with CTRL-C
+  2472  7.2.122  invalid mem access if VimResized autocmd changes screen size
+  1568  7.2.123  ":map" output continues after typing 'q' at more prompt
+  3127  7.2.124  ":tselect" output continues after typing 'q' at more prompt
+  3936  7.2.125  leaking memory when reading XPM bitmap for a sign
+  4326  7.2.126  when EXITFREE is defined signs and keymaps are not freed
+  1708  7.2.127  get another more prompt after typing 'q'
+  1537  7.2.128  (after 7.2.055) ":lcd" causes invalid session file
+  2229  7.2.129  opening command window from input() uses the search history
+ 12852  7.2.130  Vim may haing until CTRL-C is typed when using CTRL-Z
+  2612  7.2.131  using wrong cursor highlighting after clearing 'keymap'
+  7823  7.2.132  accessing freed memory when changing dir in SwapExists autocmd
+  1665  7.2.133  ":diffoff!" changes settings in windows not in diff mode
+  2314  7.2.134  compiler warnings for discarding "const" from pointer
+  1991  7.2.135  memory leak when redefining user command with complete arg
+  1326  7.2.136  (after 7.2.132) ":cd" still possible in SwapExists autocmd
+ 11328  7.2.137  wrong left shift of blockwise selection in tab when 've' set
+  5428  7.2.138  extra part of 7.2.137
+  2229  7.2.139  crash when 'virtualedit' is "all"
+  1974  7.2.140  diff highlighting missing if Visual area starts at cursor pos
+  6622  7.2.141  fixing bold spill redraws too many characters
+  1753  7.2.142  Motif and Athena balloons don't use tooltip colors
+  6830  7.2.143  no command line completion for ":cscope" command
+  2304  7.2.144  colorscheme is reloaded when 't_Co' is set to the same value
+  3379  7.2.145  white space in ":cscope find" is not ignored
+  3394  7.2.146  v:warningmsg isn't used for all warnings
+  1548  7.2.147  cursor in wrong position after Tab for small version
+  4275  7.2.148  highlighting a character after the line doesn't always work


Index: vim.spec
===================================================================
RCS file: /cvs/extras/rpms/vim/F-10/vim.spec,v
retrieving revision 1.227
retrieving revision 1.228
diff -u -r1.227 -r1.228
--- vim.spec	1 Dec 2008 15:57:05 -0000	1.227
+++ vim.spec	27 Mar 2009 11:53:29 -0000	1.228
@@ -18,7 +18,7 @@
 #used for pre-releases:
 %define beta %{nil}
 %define vimdir vim72%{?beta}
-%define patchlevel 060
+%define patchlevel 148
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
@@ -126,6 +126,94 @@
 Patch058: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.058
 Patch059: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.059
 Patch060: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.060
+Patch061: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.061
+Patch062: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.062
+Patch063: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.063
+Patch064: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.064
+Patch065: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.065
+Patch066: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.066
+Patch067: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.067
+Patch068: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.068
+Patch069: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.069
+Patch070: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.070
+Patch071: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.071
+Patch072: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.072
+Patch073: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.073
+Patch074: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.074
+Patch075: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.075
+Patch076: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.076
+Patch077: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.077
+Patch078: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.078
+Patch079: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.079
+Patch080: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.080
+Patch081: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.081
+Patch082: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.082
+Patch083: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.083
+Patch084: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.084
+Patch085: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.085
+Patch086: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.086
+Patch087: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.087
+Patch088: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.088
+Patch089: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.089
+Patch090: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.090
+Patch091: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.091
+Patch092: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.092
+Patch093: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.093
+Patch094: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.094
+Patch095: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.095
+Patch096: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.096
+Patch097: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.097
+Patch098: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.098
+Patch099: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.099
+Patch100: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.100
+Patch101: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.101
+Patch102: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.102
+Patch103: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.103
+Patch104: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.104
+Patch105: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.105
+Patch106: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.106
+Patch107: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.107
+Patch108: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.108
+Patch109: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.109
+Patch110: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.110
+Patch111: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.111
+Patch112: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.112
+Patch113: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.113
+Patch114: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.114
+Patch115: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.115
+Patch116: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.116
+Patch117: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.117
+Patch118: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.118
+Patch119: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.119
+Patch120: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.120
+Patch121: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.121
+Patch122: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.122
+Patch123: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.123
+Patch124: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.124
+Patch125: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.125
+Patch126: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.126
+Patch127: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.127
+Patch128: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.128
+Patch129: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.129
+Patch130: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.130
+Patch131: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.131
+Patch132: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.132
+Patch133: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.133
+Patch134: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.134
+Patch135: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.135
+Patch136: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.136
+Patch137: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.137
+Patch138: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.138
+Patch139: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.139
+Patch140: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.140
+Patch141: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.141
+Patch142: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.142
+Patch143: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.143
+Patch144: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.144
+Patch145: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.145
+Patch146: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.146
+Patch147: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.147
+Patch148: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.148
 
 Patch3000: vim-7.0-syntax.patch
 Patch3002: vim-7.1-nowarnings.patch
@@ -319,6 +407,94 @@
 %patch058 -p0
 %patch059 -p0
 %patch060 -p0
+%patch061 -p0                                          
+%patch062 -p0
+%patch063 -p0
+%patch064 -p0
+%patch065 -p0
+%patch066 -p0
+%patch067 -p0
+%patch068 -p0
+%patch069 -p0
+%patch070 -p0
+%patch071 -p0
+%patch072 -p0
+%patch073 -p0
+%patch074 -p0
+%patch075 -p0
+%patch076 -p0
+%patch077 -p0
+%patch078 -p0
+%patch079 -p0
+%patch080 -p0
+%patch081 -p0
+%patch082 -p0
+%patch083 -p0
+%patch084 -p0
+%patch085 -p0
+%patch086 -p0
+%patch087 -p0
+%patch088 -p0
+%patch089 -p0
+%patch090 -p0
+%patch091 -p0
+%patch092 -p0
+%patch093 -p0
+%patch094 -p0
+%patch095 -p0
+%patch096 -p0
+%patch097 -p0
+%patch098 -p0
+%patch099 -p0
+%patch100 -p0
+%patch101 -p0
+%patch102 -p0
+%patch103 -p0
+%patch104 -p0
+%patch105 -p0
+%patch106 -p0
+%patch107 -p0
+%patch108 -p0
+%patch109 -p0
+%patch110 -p0
+%patch111 -p0
+%patch112 -p0
+%patch113 -p0
+%patch114 -p0
+%patch115 -p0
+%patch116 -p0
+%patch117 -p0
+%patch118 -p0
+%patch119 -p0
+%patch120 -p0
+%patch121 -p0
+%patch122 -p0
+%patch123 -p0
+%patch124 -p0
+%patch125 -p0
+%patch126 -p0
+%patch127 -p0
+%patch128 -p0
+%patch129 -p0
+%patch130 -p0
+%patch131 -p0
+%patch132 -p0
+%patch133 -p0                                          
+%patch134 -p0                                          
+%patch135 -p0                                          
+%patch136 -p0                                          
+%patch137 -p0                                          
+%patch138 -p0                                          
+%patch139 -p0                                          
+%patch140 -p0                                          
+%patch141 -p0
+%patch142 -p0
+%patch143 -p0
+%patch144 -p0
+%patch145 -p0
+%patch146 -p0
+%patch147 -p0
+%patch148 -p0
 
 
 # install spell files
@@ -778,6 +954,30 @@
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
+* Fri Mar 27 2009 Karsten Hopp <karsten at redhat.com> 7.2.148-1
+- patchlevel 148, fixes #461417
+
+* Tue Mar 10 2009 Karsten Hopp <karsten at redhat.com> 7.2.132-1
+- patchlevel 132, fixes accesses to freed memory
+
+* Wed Mar 04 2009 Karsten Hopp <karsten at redhat.com> 7.2.131-1
+- patchlevel 131
+
+* Tue Feb 24 2009 Karsten Hopp <karsten at redhat.com> 7.2.127-1
+- patchlevel 127
+
+* Mon Feb 23 2009 Karsten Hopp <karsten at redhat.com> 7.2.124-1
+- patchlevel 124
+
+* Mon Jan 26 2009 Karsten Hopp <karsten at redhat.com> 7.2.088-1
+- patchlevel 88
+
+* Thu Jan 08 2009 Karsten Hopp <karsten at redhat.com> 7.2.079-2
+- patchlevel 79
+
+* Thu Dec 04 2008 Jesse Keating <jkeating at redhat.com> - 7.2.060-2
+- Rebuild for new python.
+
 * Mon Dec 01 2008 Karsten Hopp <karsten at redhat.com> 7.2.060-1
 - patchlevel 60
 




More information about the fedora-extras-commits mailing list