rpms/vim/F-8 7.1.136, NONE, 1.1 7.1.137, NONE, 1.1 7.1.138, NONE, 1.1 7.1.139, NONE, 1.1 7.1.140, NONE, 1.1 7.1.141, NONE, 1.1 7.1.142, NONE, 1.1 7.1.143, NONE, 1.1 7.1.144, NONE, 1.1 7.1.145, NONE, 1.1 7.1.146, NONE, 1.1 7.1.147, NONE, 1.1 7.1.148, NONE, 1.1 7.1.149, NONE, 1.1 7.1.150, NONE, 1.1 7.1.151, NONE, 1.1 7.1.152, NONE, 1.1 7.1.153, NONE, 1.1 7.1.154, NONE, 1.1 7.1.155, NONE, 1.1 7.1.156, NONE, 1.1 7.1.157, NONE, 1.1 7.1.158, NONE, 1.1 7.1.159, NONE, 1.1 7.1.160, NONE, 1.1 7.1.161, NONE, 1.1 7.1.162, NONE, 1.1 7.1.163, NONE, 1.1 7.1.164, NONE, 1.1 7.1.165, NONE, 1.1 7.1.166, NONE, 1.1 7.1.167, NONE, 1.1 7.1.168, NONE, 1.1 7.1.169, NONE, 1.1 7.1.170, NONE, 1.1 7.1.171, NONE, 1.1 7.1.172, NONE, 1.1 7.1.173, NONE, 1.1 7.1.174, NONE, 1.1 7.1.175, NONE, 1.1 7.1.176, NONE, 1.1 7.1.177, NONE, 1.1 7.1.178, NONE, 1.1 7.1.179, NONE, 1.1 7.1.180, NONE, 1.1 7.1.181, NONE, 1.1 7.1.182, NONE, 1.1 7.1.183, NONE, 1.1 7.1.184, NONE, 1.1 7.1.185, NONE, 1.1 7.1.186, NONE, 1.1 7.1.187, NONE, 1.1 7.1.188, NONE, 1.1 7.1.189, NONE, 1.1 7.1.190, NONE, 1.1 7.1.191, NONE, 1.1 7.1.192, NONE, 1.1 7.1.193, NONE, 1.1 7.1.194, NONE, 1.1 7.1.195, NONE, 1.1 7.1.196, NONE, 1.1 7.1.197, NONE, 1.1 7.1.198, NONE, 1.1 7.1.199, NONE, 1.1 7.1.200, NONE, 1.1 7.1.201, NONE, 1.1 7.1.202, NONE, 1.1 7.1.203, NONE, 1.1 7.1.204, NONE, 1.1 7.1.205, NONE, 1.1 7.1.206, NONE, 1.1 7.1.207, NONE, 1.1 7.1.208, NONE, 1.1 7.1.209, NONE, 1.1 7.1.210, NONE, 1.1 7.1.211, NONE, 1.1 README.patches, 1.87, 1.88 gvim.desktop, 1.4, 1.5 vim.spec, 1.179, 1.180

Karsten Hopp (karsten) fedora-extras-commits at redhat.com
Thu Jan 10 10:08:39 UTC 2008


Author: karsten

Update of /cvs/extras/rpms/vim/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv952

Modified Files:
	README.patches gvim.desktop vim.spec 
Added Files:
	7.1.136 7.1.137 7.1.138 7.1.139 7.1.140 7.1.141 7.1.142 
	7.1.143 7.1.144 7.1.145 7.1.146 7.1.147 7.1.148 7.1.149 
	7.1.150 7.1.151 7.1.152 7.1.153 7.1.154 7.1.155 7.1.156 
	7.1.157 7.1.158 7.1.159 7.1.160 7.1.161 7.1.162 7.1.163 
	7.1.164 7.1.165 7.1.166 7.1.167 7.1.168 7.1.169 7.1.170 
	7.1.171 7.1.172 7.1.173 7.1.174 7.1.175 7.1.176 7.1.177 
	7.1.178 7.1.179 7.1.180 7.1.181 7.1.182 7.1.183 7.1.184 
	7.1.185 7.1.186 7.1.187 7.1.188 7.1.189 7.1.190 7.1.191 
	7.1.192 7.1.193 7.1.194 7.1.195 7.1.196 7.1.197 7.1.198 
	7.1.199 7.1.200 7.1.201 7.1.202 7.1.203 7.1.204 7.1.205 
	7.1.206 7.1.207 7.1.208 7.1.209 7.1.210 7.1.211 
Log Message:
- build patchlevel 211 for F-8


--- NEW FILE 7.1.136 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.136
Problem:    Memory leak when using Ruby syntax highlighting. (Dominique Pelle)
Solution:   Free the contained-in list.
Files:	    src/syntax.c


*** ../vim-7.1.135/src/syntax.c	Thu Aug 30 19:36:52 2007
--- src/syntax.c	Sun Oct  7 15:10:54 2007
***************
*** 3354,3359 ****
--- 3354,3360 ----
      {
  	vim_free(SYN_ITEMS(buf)[i].sp_cont_list);
  	vim_free(SYN_ITEMS(buf)[i].sp_next_list);
+ 	vim_free(SYN_ITEMS(buf)[i].sp_syn.cont_in_list);
      }
  }
  
*** ../vim-7.1.135/src/version.c	Wed Oct  3 14:30:54 2007
--- src/version.c	Sun Oct  7 15:20:22 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     136,
  /**/

-- 
Every engineer dreams about saving the universe and having sex with aliens.
This is much more glamorous than the real life of an engineer, which consists
of hiding from the universe and having sex without the participation of other
life forms.                     (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.1.137 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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
------------

Patch 7.1.137
Problem:    Build failure when using EXITFREE. (Dominique Pelle)
Solution:   Add an #ifdef around using clip_exclude_prog.
Files:      src/misc2.c
    

*** ../vim-7.1.136/src/misc2.c	Sat Sep 29 14:15:00 2007
--- src/misc2.c	Sun Sep 30 18:00:09 2007
***************
*** 1037,1043 ****
--- 1038,1046 ----
  
      /* Free some global vars. */
      vim_free(username);
+ # ifdef FEAT_CLIPBOARD
      vim_free(clip_exclude_prog);
+ # endif
      vim_free(last_cmdline);
      vim_free(new_last_cmdline);
      set_keep_msg(NULL, 0);
*** ../vim-7.1.136/src/version.c	Sun Oct  7 15:21:31 2007
--- src/version.c	Sun Oct  7 15:42:26 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     137,
  /**/

-- 
For society, it's probably a good thing that engineers value function over
appearance.  For example, you wouldn't want engineers to build nuclear power
plants that only _look_ like they would keep all the radiation inside.
				(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.1.138 ---
To: vim-dev at vim.org
Subject: Patch 7.1.138
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.1.138
Problem:    The Perl Msg() function doesn't stop when "q" is typed at the more
	    prompt. (Hari Krishna Dara)
Solution:   Check got_int.
Files:	    src/if_perl.xs


*** ../vim-7.1.137/src/if_perl.xs	Sat Sep 15 14:48:57 2007
--- src/if_perl.xs	Wed Oct  3 17:00:16 2007
***************
*** 445,457 ****
      char *next;
      char *token = (char *)s;
  
!     while ((next = strchr(token, '\n')))
      {
  	*next++ = '\0';			/* replace \n with \0 */
  	msg_attr((char_u *)token, attr);
  	token = next;
      }
!     if (*token)
  	msg_attr((char_u *)token, attr);
  }
  
--- 445,457 ----
      char *next;
      char *token = (char *)s;
  
!     while ((next = strchr(token, '\n')) && !got_int)
      {
  	*next++ = '\0';			/* replace \n with \0 */
  	msg_attr((char_u *)token, attr);
  	token = next;
      }
!     if (*token && !got_int)
  	msg_attr((char_u *)token, attr);
  }
  
*** ../vim-7.1.137/src/version.c	Sun Oct  7 15:44:28 2007
--- src/version.c	Tue Oct  9 10:45:08 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     138,
  /**/

-- 
A consultant is a person who takes your money and annoys your employees while
tirelessly searching for the best way to extend the consulting contract.
				(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.1.139 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.139
Problem:    When using marker folding and ending Insert mode with CTRL-C the
	    current fold is truncated. (Fred Kater)
Solution:   Ignore got_int while updating folds.
Files:	    src/fold.c


*** ../vim-7.1.138/src/fold.c	Thu May 10 21:02:13 2007
--- src/fold.c	Sun Oct 14 15:27:13 2007
***************
*** 858,864 ****
--- 858,871 ----
  	    || foldmethodIsDiff(wp)
  #endif
  	    || foldmethodIsSyntax(wp))
+     {
+ 	int save_got_int = got_int;
+ 
+ 	/* reset got_int here, otherwise it won't work */
+ 	got_int = FALSE;
  	foldUpdateIEMS(wp, top, bot);
+ 	got_int |= save_got_int;
+     }
  }
  
  /* foldUpdateAll() {{{2 */
*** ../vim-7.1.138/src/version.c	Tue Oct  9 10:46:39 2007
--- src/version.c	Sun Oct 14 15:31:18 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     139,
  /**/

-- 
If Pacman had affected us as kids we'd be running around in dark rooms,
munching pills and listening to repetitive music.
                       -- Marcus Brigstocke

 /// 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.1.140 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.140
Problem:    v:count is set only after typing a non-digit, that makes it
	    difficult to make a nice mapping.
Solution:   Set v:count while still typing the count.
Files:	    src/normal.c


*** ../vim-7.1.139/src/normal.c	Thu Sep 13 18:25:08 2007
--- src/normal.c	Sun Oct 14 17:15:36 2007
***************
*** 690,695 ****
--- 690,702 ----
  		ca.count0 = ca.count0 * 10 + (c - '0');
  	    if (ca.count0 < 0)	    /* got too large! */
  		ca.count0 = 999999999L;
+ #ifdef FEAT_EVAL
+ 	    /* Set v:count here, when called from main() and not a stuffed
+ 	     * command, so that v:count can be used in an expression mapping
+ 	     * right after the count. */
+ 	    if (toplevel && stuff_empty())
+ 		set_vcount(ca.count0, ca.count0 == 0 ? 1 : ca.count0);
+ #endif
  	    if (ctrl_w)
  	    {
  		++no_mapping;
*** ../vim-7.1.139/src/version.c	Sun Oct 14 15:32:10 2007
--- src/version.c	Sun Oct 14 17:13:15 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     140,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
11. Specify that your drive-through order is "to go".

 /// 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.1.141 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.141
Problem:    GTK: -geom argument doesn't support a negative offset.
Solution:   Compute position from the right/lower corner.
Files:	    src/gui_gtk_x11.c


*** ../vim-7.1.140/src/gui_gtk_x11.c	Sat Sep 15 14:06:41 2007
--- src/gui_gtk_x11.c	Mon Oct  8 21:26:50 2007
***************
*** 4044,4049 ****
--- 4044,4051 ----
  	unsigned int	w, h;
  	int		x = 0;
  	int		y = 0;
+ 	guint		pixel_width;
+ 	guint		pixel_height;
  
  	mask = XParseGeometry((char *)gui.geom, &x, &y, &w, &h);
  
***************
*** 4055,4066 ****
--- 4057,4087 ----
  		p_window = h - 1;
  	    Rows = h;
  	}
+ 
+ 	pixel_width = (guint)(gui_get_base_width() + Columns * gui.char_width);
+ 	pixel_height = (guint)(gui_get_base_height() + Rows * gui.char_height);
+ 
+ #ifdef HAVE_GTK2
+ 	pixel_width  += get_menu_tool_width();
+ 	pixel_height += get_menu_tool_height();
+ #endif
+ 
  	if (mask & (XValue | YValue))
+ 	{
+ 	    int w, h;
+ 	    gui_mch_get_screen_dimensions(&w, &h);
+ 	    h += p_ghr + get_menu_tool_height();
+ 	    w += get_menu_tool_width();
+ 	    if (mask & XNegative)
+ 		x += w - pixel_width;
+ 	    if (mask & YNegative)
+ 		y += h - pixel_height;
  #ifdef HAVE_GTK2
  	    gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
  #else
  	    gtk_widget_set_uposition(gui.mainwin, x, y);
  #endif
+ 	}
  	vim_free(gui.geom);
  	gui.geom = NULL;
  
***************
*** 4071,4084 ****
  	 */
  	if (gtk_socket_id != 0  &&  (mask & WidthValue || mask & HeightValue))
  	{
- 	    guint pixel_width = (guint)(gui_get_base_width() + Columns * gui.char_width);
- 	    guint pixel_height = (guint)(gui_get_base_height() + Rows * gui.char_height);
- 
- #ifdef HAVE_GTK2
- 	    pixel_width  += get_menu_tool_width();
- 	    pixel_height += get_menu_tool_height();
- #endif
- 
  	    update_window_manager_hints(pixel_width, pixel_height);
  	    init_window_hints_state = 1;
  	    g_timeout_add(1000, check_startup_plug_hints, NULL);
--- 4092,4097 ----
*** ../vim-7.1.140/src/version.c	Sun Oct 14 17:15:45 2007
--- src/version.c	Fri Oct 19 14:28:52 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     141,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
35. Your husband tells you he's had the beard for 2 months.

 /// 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.1.142 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.142
Problem:    ":redir @A>" doesn't work.
Solution:   Ignore the extra ">" also when appending. (James Vega)
Files:	    src/ex_docmd.c


*** ../vim-7.1.141/src/ex_docmd.c	Sun Sep 30 14:00:41 2007
--- src/ex_docmd.c	Tue Oct  9 11:09:09 2007
***************
*** 8426,8446 ****
  		    || *arg == '"')
  	    {
  		redir_reg = *arg++;
! 		if (*arg == '>' && arg[1] == '>')
  		    arg += 2;
! 		else if ((*arg == NUL || (*arg == '>' && arg[1] == NUL)) &&
! 			 (islower(redir_reg)
! # ifdef FEAT_CLIPBOARD
! 			    || redir_reg == '*'
! 			    || redir_reg == '+'
! # endif
! 			    || redir_reg == '"'))
  		{
  		    if (*arg == '>')
  			arg++;
! 
! 		    /* make register empty */
! 		    write_reg_contents(redir_reg, (char_u *)"", -1, FALSE);
  		}
  	    }
  	    if (*arg != NUL)
--- 8426,8442 ----
  		    || *arg == '"')
  	    {
  		redir_reg = *arg++;
! 		if (*arg == '>' && arg[1] == '>')  /* append */
  		    arg += 2;
! 		else
  		{
+ 		    /* Can use both "@a" and "@a>". */
  		    if (*arg == '>')
  			arg++;
! 		    /* Make register empty when not using @A- at Z and the
! 		     * command is valid. */
! 		    if (*arg == NUL && !isupper(redir_reg))
! 			write_reg_contents(redir_reg, (char_u *)"", -1, FALSE);
  		}
  	    }
  	    if (*arg != NUL)
*** ../vim-7.1.141/src/version.c	Fri Oct 19 14:32:50 2007
--- src/version.c	Fri Oct 19 16:18:36 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     142,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
36. You miss more than five meals a week downloading the latest games from
    Apogee.

 /// 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.1.143 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.143
Problem:    Uninitialized memory read when diffing three files. (Dominique
	    Pelle)
Solution:   Remove "+ !notset" so that we don't use fields that were not
	    computed.
Files:	    src/diff.c


*** ../vim-7.1.142/src/diff.c	Sat Sep 29 14:15:00 2007
--- src/diff.c	Sun Oct 14 21:52:56 2007
***************
*** 1310,1316 ****
  		    dp->df_count[idx_new] += -off;
  		off = 0;
  	    }
! 	    for (i = idx_orig; i < idx_new + !notset; ++i)
  		if (curtab->tp_diffbuf[i] != NULL)
  		    dp->df_count[i] = dpl->df_lnum[i] + dpl->df_count[i]
  						       - dp->df_lnum[i] + off;
--- 1310,1316 ----
  		    dp->df_count[idx_new] += -off;
  		off = 0;
  	    }
! 	    for (i = idx_orig; i < idx_new; ++i)
  		if (curtab->tp_diffbuf[i] != NULL)
  		    dp->df_count[i] = dpl->df_lnum[i] + dpl->df_count[i]
  						       - dp->df_lnum[i] + off;
*** ../vim-7.1.142/src/version.c	Fri Oct 19 16:20:09 2007
--- src/version.c	Fri Oct 19 17:32:18 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     143,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
37. You start looking for hot HTML addresses in public restrooms.

 /// 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.1.144 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.144
Problem:    After ":diffup" cursor can be in the wrong position.
Solution:   Force recomputing the cursor position.
Files:	    src/diff.c


*** ../vim-7.1.143/src/diff.c	Fri Oct 19 17:32:58 2007
--- src/diff.c	Fri Oct 19 18:54:13 2007
***************
*** 791,796 ****
--- 791,799 ----
      }
      mch_remove(tmp_orig);
  
+     /* force updating cursor position on screen */
+     curwin->w_valid_cursor.lnum = 0;
+ 
      diff_redraw(TRUE);
  
  theend:
*** ../vim-7.1.143/src/version.c	Fri Oct 19 17:32:58 2007
--- src/version.c	Fri Oct 19 18:56:49 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     144,
  /**/

-- 
He who laughs last, thinks slowest.

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


--- NEW FILE 7.1.145 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.145
Problem:    Insert mode completion: When using the popup menu, after
	    completing a word and typing a non-word character Vim is still
	    completing the same word, following CTRL-N doesn't work.
	    Insert mode Completion: When using CTRL-X O and there is only
	    "struct." before the cursor, typing one char to reduce the
	    matches, then BS completion stops.
Solution:   When typing a character that is not part of the item being
	    completed, stop complete mode.  For whole line completion also
	    accept a space.  For file name completion stop at a path
	    separator.
	    For omni completion stay in completion mode even if completing
	    with empty string.
Files:	    src/edit.c


*** ../vim-7.1.144/src/edit.c	Thu Sep 13 18:25:08 2007
--- src/edit.c	Fri Oct 19 16:04:38 2007
***************
*** 129,134 ****
--- 129,135 ----
  
  static void ins_ctrl_x __ARGS((void));
  static int  has_compl_option __ARGS((int dict_opt));
+ static int  ins_compl_accept_char __ARGS((int c));
  static int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags, int adup));
  static int  ins_compl_equal __ARGS((compl_T *match, char_u *str, int len));
  static void ins_compl_longest_match __ARGS((compl_T *match));
***************
*** 754,761 ****
  		    continue;
  		}
  
! 		/* A printable, non-white character: Add to "compl_leader". */
! 		if (vim_isprintc(c) && !vim_iswhite(c))
  		{
  		    ins_compl_addleader(c);
  		    continue;
--- 755,763 ----
  		    continue;
  		}
  
! 		/* A non-white character that fits in with the current
! 		 * completion: Add to "compl_leader". */
! 		if (ins_compl_accept_char(c))
  		{
  		    ins_compl_addleader(c);
  		    continue;
***************
*** 2053,2058 ****
--- 2055,2094 ----
  }
  
  /*
+  * Return TRUE when character "c" is part of the item currently being
+  * completed.  Used to decide whether to abandon complete mode when the menu
+  * is visible.
+  */
+     static int
+ ins_compl_accept_char(c)
+     int c;
+ {
+     if (ctrl_x_mode & CTRL_X_WANT_IDENT)
+ 	/* When expanding an identifier only accept identifier chars. */
+ 	return vim_isIDc(c);
+ 
+     switch (ctrl_x_mode)
+     {
+ 	case CTRL_X_FILES:
+ 	    /* When expanding file name only accept file name chars. But not
+ 	     * path separators, so that "proto/<Tab>" expands files in
+ 	     * "proto", not "proto/" as a whole */
+ 	    return vim_isfilec(c) && !vim_ispathsep(c);
+ 
+ 	case CTRL_X_CMDLINE:
+ 	case CTRL_X_OMNI:
+ 	    /* Command line and Omni completion can work with just about any
+ 	     * printable character, but do stop at white space. */
+ 	    return vim_isprintc(c) && !vim_iswhite(c);
+ 
+ 	case CTRL_X_WHOLE_LINE:
+ 	    /* For while line completion a space can be part of the line. */
+ 	    return vim_isprintc(c);
+     }
+     return vim_iswordc(c);
+ }
+ 
+ /*
   * This is like ins_compl_add(), but if 'ic' and 'inf' are set, then the
   * case of the originally typed text is used, and the case of the completed
   * text is inferred, ie this tries to work out what case you probably wanted
***************
*** 3128,3135 ****
      p = line + curwin->w_cursor.col;
      mb_ptr_back(line, p);
  
!     /* Stop completion when the whole word was deleted. */
!     if ((int)(p - line) - (int)compl_col <= 0)
  	return K_BS;
  
      /* Deleted more than what was used to find matches or didn't finish
--- 3164,3174 ----
      p = line + curwin->w_cursor.col;
      mb_ptr_back(line, p);
  
!     /* Stop completion when the whole word was deleted.  For Omni completion
!      * allow the word to be deleted, we won't match everything. */
!     if ((int)(p - line) - (int)compl_col < 0
! 	    || ((int)(p - line) - (int)compl_col == 0
! 		&& (ctrl_x_mode & CTRL_X_OMNI) == 0))
  	return K_BS;
  
      /* Deleted more than what was used to find matches or didn't finish
***************
*** 4591,4604 ****
  	curs_col = curwin->w_cursor.col;
  	compl_pending = 0;
  
! 	/* if this same ctrl_x_mode has been interrupted use the text from
  	 * "compl_startpos" to the cursor as a pattern to add a new word
  	 * instead of expand the one before the cursor, in word-wise if
! 	 * "compl_startpos"
! 	 * is not in the same line as the cursor then fix it (the line has
! 	 * been split because it was longer than 'tw').  if SOL is set then
! 	 * skip the previous pattern, a word at the beginning of the line has
! 	 * been inserted, we'll look for that  -- Acevedo. */
  	if ((compl_cont_status & CONT_INTRPT) == CONT_INTRPT
  					    && compl_cont_mode == ctrl_x_mode)
  	{
--- 4630,4642 ----
  	curs_col = curwin->w_cursor.col;
  	compl_pending = 0;
  
! 	/* If this same ctrl_x_mode has been interrupted use the text from
  	 * "compl_startpos" to the cursor as a pattern to add a new word
  	 * instead of expand the one before the cursor, in word-wise if
! 	 * "compl_startpos" is not in the same line as the cursor then fix it
! 	 * (the line has been split because it was longer than 'tw').  if SOL
! 	 * is set then skip the previous pattern, a word at the beginning of
! 	 * the line has been inserted, we'll look for that  -- Acevedo. */
  	if ((compl_cont_status & CONT_INTRPT) == CONT_INTRPT
  					    && compl_cont_mode == ctrl_x_mode)
  	{
*** ../vim-7.1.144/src/version.c	Fri Oct 19 18:57:33 2007
--- src/version.c	Fri Oct 19 20:38:21 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     145,
  /**/

-- 
Micro$oft: where do you want to go today?
    Linux: where do you want to go tomorrow?
  FreeBSD: are you guys coming, or what?

 /// 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.1.146 ---
To: vim-dev at vim.org
Subject: Patch 7.1.146 (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.1.146 (extra)
Problem:    VMS: Files with a very rare record organization (VFC) cannot be
	    properly written by Vim.
	    On older VAX systems mms runs into a syntax error.
Solution:   Check for this special situation.  Do not wrap a comment, make it
	    one long line.  (Zoltan Arpadffy)
Files:	    src/fileio.c, src/Make_vms.mms


*** ../vim-7.1.145/src/fileio.c	Wed Oct  3 12:49:24 2007
--- src/fileio.c	Mon Oct 22 21:10:00 2007
***************
*** 4251,4257 ****
  	 * they don't it adds one.
  	 * With other RMS structures it works perfect without this fix.
  	 */
! 	if ((buf->b_fab_rat & (FAB$M_FTN | FAB$M_CR)) != 0)
  	{
  	    int b2write;
  
--- 4252,4259 ----
  	 * they don't it adds one.
  	 * With other RMS structures it works perfect without this fix.
  	 */
! 	if (buf->b_fab_rfm == FAB$C_VFC
! 		|| ((buf->b_fab_rat & (FAB$M_FTN | FAB$M_CR)) != 0))
  	{
  	    int b2write;
  
*** ../vim-7.1.145/src/Make_vms.mms	Thu May 10 20:47:35 2007
--- src/Make_vms.mms	Mon Oct 22 21:13:08 2007
***************
*** 2,8 ****
  # Makefile for Vim on OpenVMS
  #
  # Maintainer:   Zoltan Arpadffy <arpadffy at polarhome.com>
! # Last change:  2007 May 07
  #
  # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
  # with MMS and MMK
--- 2,8 ----
  # Makefile for Vim on OpenVMS
  #
  # Maintainer:   Zoltan Arpadffy <arpadffy at polarhome.com>
! # Last change:  2007 Oct 22
  #
  # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
  # with MMS and MMK
***************
*** 96,103 ****
  
  .IFDEF MMSVAX
  .IFDEF DECC	     # VAX with DECC
! CC_DEF  = cc # /decc # some system requires this switch
! 		     # but when it is not required /ver might fail
  PREFIX  = /prefix=all
  .ELSE		     # VAX with VAXC
  CC_DEF	= cc
--- 96,102 ----
  
  .IFDEF MMSVAX
  .IFDEF DECC	     # VAX with DECC
! CC_DEF  = cc # /decc # some system requires this switch but when it is not required /ver might fail
  PREFIX  = /prefix=all
  .ELSE		     # VAX with VAXC
  CC_DEF	= cc
*** ../vim-7.1.145/src/version.c	Fri Oct 19 20:39:56 2007
--- src/version.c	Mon Oct 29 22:36:20 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     146,
  /**/

-- 
Be thankful to be in a traffic jam, because it means you own a car.

 /// 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.1.147 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.147 (after 7.1.127)
Problem:    Freeing memory already freed when completing user name. (Meino
	    Cramer)
Solution:   Use a flag to remember if "orig" needs to be freed.
Files:	    src/ex_getln.c


*** ../vim-7.1.146/src/ex_getln.c	Sun Sep 30 22:10:45 2007
--- src/ex_getln.c	Tue Oct 30 17:13:33 2007
***************
*** 3353,3358 ****
--- 3353,3359 ----
      char_u	*ss = NULL;
      static int	findex;
      static char_u *orig_save = NULL;	/* kept value of orig */
+     int		orig_saved = FALSE;
      int		i;
      long_u	len;
      int		non_suf_match;		/* number without matching suffix */
***************
*** 3421,3426 ****
--- 3422,3428 ----
      {
  	vim_free(orig_save);
  	orig_save = orig;
+ 	orig_saved = TRUE;
  
  	/*
  	 * Do the expansion.
***************
*** 3546,3552 ****
  	ExpandCleanup(xp);
  
      /* Free "orig" if it wasn't stored in "orig_save". */
!     if (orig != orig_save)
  	vim_free(orig);
  
      return ss;
--- 3548,3554 ----
  	ExpandCleanup(xp);
  
      /* Free "orig" if it wasn't stored in "orig_save". */
!     if (!orig_saved)
  	vim_free(orig);
  
      return ss;
*** ../vim-7.1.146/src/version.c	Mon Oct 29 22:37:57 2007
--- src/version.c	Tue Oct 30 17:30:35 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     147,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
59. Your wife says communication is important in a marriage...so you buy
    another computer and install a second phone line so the two of you can
    chat.

 /// 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.1.148 ---
To: vim-dev at vim.org
Subject: Patch 7.1.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.1.148
Problem:    Some types are not found by configure.
Solution:   Test for the sys/types.h header file. (Sean Boudreau)
Files:	    src/configure.in, src/auto/configure


*** ../vim-7.1.147/src/configure.in	Thu Jun 28 13:02:22 2007
--- src/configure.in	Sat Oct 27 15:52:16 2007
***************
*** 2026,2032 ****
  fi
  
  AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
! 	termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h \
  	iconv.h langinfo.h unistd.h stropts.h errno.h \
  	sys/resource.h sys/systeminfo.h locale.h \
  	sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
--- 2026,2032 ----
  fi
  
  AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
! 	termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
  	iconv.h langinfo.h unistd.h stropts.h errno.h \
  	sys/resource.h sys/systeminfo.h locale.h \
  	sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
*** ../vim-7.1.147/src/auto/configure	Thu Jun 28 13:02:22 2007
--- src/auto/configure	Sun Nov  4 15:34:14 2007
***************
*** 10265,10272 ****
  
  
  
  for ac_header in stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
! 	termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h \
  	iconv.h langinfo.h unistd.h stropts.h errno.h \
  	sys/resource.h sys/systeminfo.h locale.h \
  	sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
--- 10265,10273 ----
  
  
  
+ 
  for ac_header in stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
! 	termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
  	iconv.h langinfo.h unistd.h stropts.h errno.h \
  	sys/resource.h sys/systeminfo.h locale.h \
  	sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
*** ../vim-7.1.147/src/version.c	Tue Oct 30 17:36:31 2007
--- src/version.c	Sun Nov  4 15:34:26 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     148,
  /**/

-- 
If your nose runs, and your feet smell, you might be upside down.

 /// 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.1.149 ---
To: vim-dev at vim.org
Subject: Patch 7.1.149
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.1.149
Problem:    GTK GUI: When the completion popup menu is used scrolling another
	    window by the scrollbar is OK, but using the scroll wheel it
	    behaves line <Enter>.
Solution:   Ignore K_MOUSEDOWN and K_MOUSEUP.  Fix redrawing the popup menu.
Files:	    src/edit.c, src/gui.c


*** ../vim-7.1.148/src/edit.c	Fri Oct 19 20:39:56 2007
--- src/edit.c	Sun Nov  4 16:17:42 2007
***************
*** 3385,3392 ****
      if (c != Ctrl_R && vim_is_ctrl_x_key(c))
  	edit_submode_extra = NULL;
  
!     /* Ignore end of Select mode mapping */
!     if (c == K_SELECT)
  	return retval;
  
      /* Set "compl_get_longest" when finding the first matches. */
--- 3385,3392 ----
      if (c != Ctrl_R && vim_is_ctrl_x_key(c))
  	edit_submode_extra = NULL;
  
!     /* Ignore end of Select mode mapping and mouse scroll buttons. */
!     if (c == K_SELECT || c == K_MOUSEDOWN || c == K_MOUSEUP)
  	return retval;
  
      /* Set "compl_get_longest" when finding the first matches. */
***************
*** 8652,8666 ****
      int		up;
  {
      pos_T	tpos;
! # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
!     win_T	*old_curwin;
  # endif
  
      tpos = curwin->w_cursor;
  
  # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
-     old_curwin = curwin;
- 
      /* Currently the mouse coordinates are only known in the GUI. */
      if (gui.in_use && mouse_row >= 0 && mouse_col >= 0)
      {
--- 8652,8667 ----
      int		up;
  {
      pos_T	tpos;
! # if defined(FEAT_WINDOWS)
!     win_T	*old_curwin = curwin;
! # endif
! # ifdef FEAT_INS_EXPAND
!     int		did_scroll = FALSE;
  # endif
  
      tpos = curwin->w_cursor;
  
  # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
      /* Currently the mouse coordinates are only known in the GUI. */
      if (gui.in_use && mouse_row >= 0 && mouse_col >= 0)
      {
***************
*** 8677,8692 ****
  # endif
  	undisplay_dollar();
  
!     if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
! 	scroll_redraw(up, (long)(curwin->w_botline - curwin->w_topline));
!     else
! 	scroll_redraw(up, 3L);
  
  # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
      curwin->w_redr_status = TRUE;
  
      curwin = old_curwin;
      curbuf = curwin->w_buffer;
  # endif
  
      if (!equalpos(curwin->w_cursor, tpos))
--- 8678,8717 ----
  # endif
  	undisplay_dollar();
  
! # ifdef FEAT_INS_EXPAND
!     /* Don't scroll the window in which completion is being done. */
!     if (!pum_visible()
! #  if defined(FEAT_WINDOWS)
! 	    || curwin != old_curwin
! #  endif
! 	    )
! # endif
!     {
! 	if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
! 	    scroll_redraw(up, (long)(curwin->w_botline - curwin->w_topline));
! 	else
! 	    scroll_redraw(up, 3L);
! # ifdef FEAT_INS_EXPAND
! 	did_scroll = TRUE;
! # endif
!     }
  
  # if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
      curwin->w_redr_status = TRUE;
  
      curwin = old_curwin;
      curbuf = curwin->w_buffer;
+ # endif
+ 
+ # ifdef FEAT_INS_EXPAND
+     /* The popup menu may overlay the window, need to redraw it.
+      * TODO: Would be more efficient to only redraw the windows that are
+      * overlapped by the popup menu. */
+     if (pum_visible() && did_scroll)
+     {
+ 	redraw_all_later(NOT_VALID);
+ 	ins_compl_show_pum();
+     }
  # endif
  
      if (!equalpos(curwin->w_cursor, tpos))
*** ../vim-7.1.148/src/gui.c	Wed Sep  5 21:45:54 2007
--- src/gui.c	Fri Oct 19 16:14:57 2007
***************
*** 4214,4220 ****
  #endif
  	    )
      {
! 	redraw_win_later(wp, VALID);
  	updateWindow(wp);   /* update window, status line, and cmdline */
      }
  
--- 4214,4232 ----
  #endif
  	    )
      {
! 	int type = VALID;
! 
! #ifdef FEAT_INS_EXPAND
! 	if (pum_visible())
! 	{
! 	    type = NOT_VALID;
! 	    wp->w_lines_valid = 0;
! 	}
! #endif
! 	/* Don't set must_redraw here, it may cause the popup menu to
! 	 * disappear when losing focus after a scrollbar drag. */
! 	if (wp->w_redr_type < type)
! 	    wp->w_redr_type = type;
  	updateWindow(wp);   /* update window, status line, and cmdline */
      }
  
*** ../vim-7.1.148/src/version.c	Sun Nov  4 15:35:23 2007
--- src/version.c	Tue Nov  6 22:21:03 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     149,
  /**/

-- 
>From "know your smileys":
 ...---...   SOS

 /// 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.1.150 ---
To: vim-dev at vim.org
Subject: Patch 7.1.150
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.1.150
Problem:    When 'clipboard' has "unnamed" using "p" in Visual mode doesn't
	    work correctly. (Jianrong Yu)
Solution:   When 'clipboard' has "unnamed" also obtain the selection when
	    getting the default register.
Files:	    src/ops.c


*** ../vim-7.1.149/src/ops.c	Tue Sep 25 14:19:35 2007
--- src/ops.c	Sun Oct 28 13:58:35 2007
***************
*** 933,941 ****
  #ifdef FEAT_CLIPBOARD
      /* When Visual area changed, may have to update selection.  Obtain the
       * selection too. */
!     if (name == '*' && clip_star.available && clip_isautosel())
      {
! 	clip_update_selection();
  	may_get_selection(name);
      }
  #endif
--- 933,942 ----
  #ifdef FEAT_CLIPBOARD
      /* When Visual area changed, may have to update selection.  Obtain the
       * selection too. */
!     if (name == '*' && clip_star.available)
      {
! 	if (clip_isautosel())
! 	    clip_update_selection();
  	may_get_selection(name);
      }
  #endif
*** ../vim-7.1.149/src/version.c	Tue Nov  6 22:26:39 2007
--- src/version.c	Thu Nov  8 10:34:18 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     150,
  /**/

-- 
>From "know your smileys":
 8<}}	Glasses, big nose, beard

 /// 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.1.151 ---
To: vim-dev at vim.org
Subject: Patch 7.1.151
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.1.151
Problem:    Using whole line completion with 'ignorecase' and 'infercase' set
	    and the line is empty get an lalloc(0) error.
Solution:   Don't try changing case for an empty match. (Matthew Wozniski)
Files:	    src/edit.c


*** ../vim-7.1.150/src/edit.c	Tue Nov  6 22:26:39 2007
--- src/edit.c	Sun Nov  4 16:17:42 2007
***************
*** 2111,2117 ****
      int		has_lower = FALSE;
      int		was_letter = FALSE;
  
!     if (p_ic && curbuf->b_p_inf)
      {
  	/* Infer case of completed part. */
  
--- 2111,2117 ----
      int		has_lower = FALSE;
      int		was_letter = FALSE;
  
!     if (p_ic && curbuf->b_p_inf && len > 0)
      {
  	/* Infer case of completed part. */
  
***************
*** 2225,2231 ****
  		    wca[i] = MB_TOUPPER(wca[i]);
  	    }
  
! 	    /* 
  	     * Generate encoding specific output from wide character array.
  	     * Multi-byte characters can occupy up to five bytes more than
  	     * ASCII characters, and we also need one byte for NUL, so stay
--- 2225,2231 ----
  		    wca[i] = MB_TOUPPER(wca[i]);
  	    }
  
! 	    /*
  	     * Generate encoding specific output from wide character array.
  	     * Multi-byte characters can occupy up to five bytes more than
  	     * ASCII characters, and we also need one byte for NUL, so stay
*** ../vim-7.1.150/src/version.c	Thu Nov  8 10:35:02 2007
--- src/version.c	Thu Nov  8 13:01:34 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     151,
  /**/

-- 
>From "know your smileys":
 %-)	After staring at screen for 15 hours

 /// 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.1.152 ---
To: vim-dev at vim.org
Subject: Patch 7.1.152
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.1.152
Problem:    Display problem when 'hls' and 'cursorcolumn' are set and
	    searching for "$".  (John Mullin)  Also when scrolling
	    horizontally when 'wrap' is off.
Solution:   Keep track of the column where highlighting was set.  Check the
	    column offset when skipping characters.
Files:	    src/screen.c


*** ../vim-7.1.151/src/screen.c	Mon Sep 17 22:37:05 2007
--- src/screen.c	Fri Oct 19 15:18:49 2007
***************
*** 2599,2604 ****
--- 2599,2605 ----
      int		syntax_attr = 0;	/* attributes desired by syntax */
      int		has_syntax = FALSE;	/* this buffer has syntax highl. */
      int		save_did_emsg;
+     int		eol_hl_off = 0;		/* 1 if highlighted char after EOL */
  #endif
  #ifdef FEAT_SPELL
      int		has_spell = FALSE;	/* this buffer has spell checking */
***************
*** 4312,4317 ****
--- 4313,4322 ----
  	{
  #ifdef FEAT_SEARCH_EXTRA
  	    long prevcol = (long)(ptr - line) - (c == NUL);
+ 
+ 	    /* we're not really at that column when skipping some text */
+ 	    if ((wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol)
+ 		++prevcol;
  #endif
  
  	    /* invert at least one char, used for Visual and empty line or
***************
*** 4408,4418 ****
--- 4413,4432 ----
  		ScreenAttrs[off] = char_attr;
  #ifdef FEAT_RIGHTLEFT
  		if (wp->w_p_rl)
+ 		{
  		    --col;
+ 		    --off;
+ 		}
  		else
  #endif
+ 		{
  		    ++col;
+ 		    ++off;
+ 		}
  		++vcol;
+ #ifdef FEAT_SYN_HL
+ 		eol_hl_off = 1;
+ #endif
  	    }
  	}
  
***************
*** 4422,4427 ****
--- 4436,4449 ----
  	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;
+ 		--off;
+ 		--vcol;
+ 	    }
+ 
  	    /* Highlight 'cursorcolumn' past end of the line. */
  	    if (wp->w_p_wrap)
  		v = wp->w_skipcol;
***************
*** 4432,4438 ****
  
  		vcol = v + col - win_col_off(wp);
  	    if (wp->w_p_cuc
! 		    && (int)wp->w_virtcol >= vcol
  		    && (int)wp->w_virtcol < W_WIDTH(wp) * (row - startrow + 1)
  									   + v
  		    && lnum != wp->w_cursor.lnum
--- 4454,4460 ----
  
  		vcol = v + col - win_col_off(wp);
  	    if (wp->w_p_cuc
! 		    && (int)wp->w_virtcol >= vcol - eol_hl_off
  		    && (int)wp->w_virtcol < W_WIDTH(wp) * (row - startrow + 1)
  									   + v
  		    && lnum != wp->w_cursor.lnum
*** ../vim-7.1.151/src/version.c	Thu Nov  8 13:03:33 2007
--- src/version.c	Thu Nov  8 14:48:59 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     152,
  /**/

-- 
>From "know your smileys":
 2B|^2B	  Message from Shakespeare

 /// 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.1.153 ---
To: vim-dev at vim.org
Subject: Patch 7.1.153
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.1.153
Problem:    Compiler warnings on SGI.  Undefined XpmAllocColor (Charles
	    Campbell)
Solution:   Add type casts.  Init st_dev and st_ino separately.  Don't use
	    type casts for vim_snprintf() when HAVE_STDARG_H is defined.
	    Define XpmAllocColor when needed.
Files:	    src/eval.c, src/ex_cmds.c, src/fileio.c, src/misc2.c,
	    src/gui_xmebw.c


*** ../vim-7.1.152/src/eval.c	Tue Oct  2 22:07:58 2007
--- src/eval.c	Mon Oct  1 20:56:09 2007
***************
*** 8729,8735 ****
      static int		fnum = 0;
      static int		change_start = 0;
      static int		change_end = 0;
!     static hlf_T	hlID = 0;
      int			filler_lines;
      int			col;
  
--- 8729,8735 ----
      static int		fnum = 0;
      static int		change_start = 0;
      static int		change_end = 0;
!     static hlf_T	hlID = (hlf_T)0;
      int			filler_lines;
      int			col;
  
*** ../vim-7.1.152/src/ex_cmds.c	Thu Sep 13 18:25:08 2007
--- src/ex_cmds.c	Thu Sep 13 16:19:40 2007
***************
*** 1774,1780 ****
  	 * overwrite a user's viminfo file after a "su root", with a
  	 * viminfo file that the user can't read.
  	 */
! 	st_old.st_dev = st_old.st_ino = 0;
  	st_old.st_mode = 0600;
  	if (mch_stat((char *)fname, &st_old) == 0
  		&& getuid() != ROOT_UID
--- 1774,1781 ----
  	 * overwrite a user's viminfo file after a "su root", with a
  	 * viminfo file that the user can't read.
  	 */
! 	st_old.st_dev = 0;
! 	st_old.st_ino = 0;
  	st_old.st_mode = 0600;
  	if (mch_stat((char *)fname, &st_old) == 0
  		&& getuid() != ROOT_UID
*** ../vim-7.1.152/src/fileio.c	Mon Oct 29 22:37:57 2007
--- src/fileio.c	Mon Oct 22 21:10:00 2007
***************
*** 3209,3215 ****
       * Get information about original file (if there is one).
       */
  #if defined(UNIX) && !defined(ARCHIE)
!     st_old.st_dev = st_old.st_ino = 0;
      perm = -1;
      if (mch_stat((char *)fname, &st_old) < 0)
  	newfile = TRUE;
--- 3209,3216 ----
       * Get information about original file (if there is one).
       */
  #if defined(UNIX) && !defined(ARCHIE)
!     st_old.st_dev = 0;
!     st_old.st_ino = 0;
      perm = -1;
      if (mch_stat((char *)fname, &st_old) < 0)
  	newfile = TRUE;
*** ../vim-7.1.152/src/misc2.c	Sun Oct  7 15:44:28 2007
--- src/misc2.c	Sun Sep 30 18:00:09 2007
***************
*** 5924,5930 ****
--- 5925,5935 ----
  {
      if (emsg_not_now())
  	return TRUE;		/* no error messages at the moment */
+ #ifdef HAVE_STDARG_H
+     vim_snprintf((char *)IObuff, IOSIZE, (char *)s, a1, a2);
+ #else
      vim_snprintf((char *)IObuff, IOSIZE, (char *)s, (long_u)a1, (long_u)a2);
+ #endif
      return emsg(IObuff);
  }
  
*** ../vim-7.1.152/src/gui_xmebw.c	Thu May 10 19:46:55 2007
--- src/gui_xmebw.c	Thu Sep  6 12:57:51 2007
***************
*** 395,405 ****
  
      /* Create the "highlight" pixmap. */
      color[4].pixel = eb->primitive.bottom_shadow_color;
      attr.valuemask = XpmColorSymbols | XpmCloseness | XpmAllocColor;
      attr.closeness = 65535;	/* accuracy isn't crucial */
      attr.colorsymbols = color;
      attr.numsymbols = XtNumber(color);
-     attr.alloc_color = alloc_color;
  
      status = XpmCreatePixmapFromData(dpy, root, data, &pix, NULL, &attr);
      XpmFreeAttributes(&attr);
--- 395,409 ----
  
      /* Create the "highlight" pixmap. */
      color[4].pixel = eb->primitive.bottom_shadow_color;
+ #ifdef XpmAllocColor /* SGI doesn't have it */
      attr.valuemask = XpmColorSymbols | XpmCloseness | XpmAllocColor;
+     attr.alloc_color = alloc_color;
+ #else
+     attr.valuemask = XpmColorSymbols | XpmCloseness;
+ #endif
      attr.closeness = 65535;	/* accuracy isn't crucial */
      attr.colorsymbols = color;
      attr.numsymbols = XtNumber(color);
  
      status = XpmCreatePixmapFromData(dpy, root, data, &pix, NULL, &attr);
      XpmFreeAttributes(&attr);
*** ../vim-7.1.152/src/version.c	Thu Nov  8 14:50:58 2007
--- src/version.c	Thu Nov  8 20:45:56 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     153,
  /**/

-- 
>From "know your smileys":
 @:-()	Elvis Presley

 /// 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.1.154 ---
To: vim-dev at vim.org
Subject: Patch 7.1.154
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.1.154
Problem:    Compiler warning for signed/unsigned compare.
Solution:   Add type cast.
Files:	    src/screen.c


*** ../vim-7.1.153/src/screen.c	Thu Nov  8 14:50:58 2007
--- src/screen.c	Thu Nov  8 21:18:46 2007
***************
*** 4315,4321 ****
  	    long prevcol = (long)(ptr - line) - (c == NUL);
  
  	    /* we're not really at that column when skipping some text */
! 	    if ((wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol)
  		++prevcol;
  #endif
  
--- 4315,4321 ----
  	    long prevcol = (long)(ptr - line) - (c == NUL);
  
  	    /* we're not really at that column when skipping some text */
! 	    if ((long)(wp->w_p_wrap ? wp->w_skipcol : wp->w_leftcol) > prevcol)
  		++prevcol;
  #endif
  
*** ../vim-7.1.153/src/version.c	Thu Nov  8 20:47:34 2007
--- src/version.c	Thu Nov  8 21:19:59 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     154,
  /**/

-- 
>From "know your smileys":
 :-F	Bucktoothed vampire with one tooth missing

 /// 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.1.155 ---
To: vim-dev at vim.org
Subject: Patch 7.1.155
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.1.155
Problem:    Crash when 'undolevels' is 0 and repeating "udd". (James Vega)
Solution:   When there is only one branch use u_freeheader() to delete it.
Files:	    src/undo.c


*** ../vim-7.1.154/src/undo.c	Mon Oct  1 22:53:27 2007
--- src/undo.c	Sat Nov 10 13:45:28 2007
***************
*** 1677,1682 ****
--- 1677,1690 ----
      u_header_T	    **uhpp;	/* if not NULL reset when freeing this header */
  {
      u_header_T	    *tofree, *next;
+ 
+     /* If this is the top branch we may need to use u_freeheader() to update
+      * all the pointers. */
+     if (uhp == buf->b_u_oldhead)
+     {
+ 	u_freeheader(buf, uhp, uhpp);
+ 	return;
+     }
  
      if (uhp->uh_alt_prev != NULL)
  	uhp->uh_alt_prev->uh_alt_next = NULL;
*** ../vim-7.1.154/src/version.c	Thu Nov  8 21:23:34 2007
--- src/version.c	Sat Nov 10 22:49:40 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     155,
  /**/

-- 
I AM THANKFUL...
...for the piles of laundry and ironing because it means I
have plenty of clothes to wear.

 /// 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.1.156 ---
To: vim-dev at vim.org
Subject: Patch 7.1.156
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.1.156
Problem:    Overlapping arguments for strcpy() when expanding command line
	    variables.
Solution:   Use mch_memmove() instead of STRCPY().  Also fix a few typos.
	    (Dominique Pelle)
Files:	    src/ex_docmd.c


*** ../vim-7.1.155/src/ex_docmd.c	Fri Oct 19 16:20:09 2007
--- src/ex_docmd.c	Sat Nov 10 12:39:51 2007
***************
*** 666,672 ****
  		if (ex_pressedreturn)
  		{
  		    /* go up one line, to overwrite the ":<CR>" line, so the
! 		     * output doensn't contain empty lines. */
  		    msg_row = prev_msg_row;
  		    if (prev_msg_row == Rows - 1)
  			msg_row--;
--- 666,672 ----
  		if (ex_pressedreturn)
  		{
  		    /* go up one line, to overwrite the ":<CR>" line, so the
! 		     * output doesn't contain empty lines. */
  		    msg_row = prev_msg_row;
  		    if (prev_msg_row == Rows - 1)
  			msg_row--;
***************
*** 2760,2766 ****
  
      /*
       * Isolate the command and search for it in the command table.
!      * Exeptions:
       * - the 'k' command can directly be followed by any character.
       * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r'
       *	    but :sre[wind] is another command, as are :scrip[tnames],
--- 2760,2766 ----
  
      /*
       * Isolate the command and search for it in the command table.
!      * Exceptions:
       * - the 'k' command can directly be followed by any character.
       * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r'
       *	    but :sre[wind] is another command, as are :scrip[tnames],
***************
*** 6677,6683 ****
   * The list should be allocated using alloc(), as should each item in the
   * list. This function takes over responsibility for freeing the list.
   *
!  * XXX The list is made into the arggument list. This is freed using
   * FreeWild(), which does a series of vim_free() calls, unless the two defines
   * __EMX__ and __ALWAYS_HAS_TRAILING_NUL_POINTER are set. In this case, a
   * routine _fnexplodefree() is used. This may cause problems, but as the drop
--- 6677,6683 ----
   * The list should be allocated using alloc(), as should each item in the
   * list. This function takes over responsibility for freeing the list.
   *
!  * XXX The list is made into the argument list. This is freed using
   * FreeWild(), which does a series of vim_free() calls, unless the two defines
   * __EMX__ and __ALWAYS_HAS_TRAILING_NUL_POINTER are set. In this case, a
   * routine _fnexplodefree() is used. This may cause problems, but as the drop
***************
*** 7795,7801 ****
  	if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged()
  							     && !eap->forceit)
  	{
! 	    EMSG(_("E747: Cannot change directory, buffer is modifed (add ! to override)"));
  	    return;
  	}
  
--- 7795,7801 ----
  	if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged()
  							     && !eap->forceit)
  	{
! 	    EMSG(_("E747: Cannot change directory, buffer is modified (add ! to override)"));
  	    return;
  	}
  
***************
*** 9391,9397 ****
      if (src > srcstart && src[-1] == '\\')
      {
  	*usedlen = 0;
! 	STRCPY(src - 1, src);		/* remove backslash */
  	return NULL;
      }
  
--- 9391,9397 ----
      if (src > srcstart && src[-1] == '\\')
      {
  	*usedlen = 0;
! 	mch_memmove(src - 1, src, STRLEN(src) + 1);	/* remove backslash */
  	return NULL;
      }
  
*** ../vim-7.1.155/src/version.c	Sat Nov 10 22:50:20 2007
--- src/version.c	Sun Nov 11 19:15:51 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     156,
  /**/

-- 
Common sense is what tells you that the world is flat.

 /// 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.1.157 ---
To: vim-dev at vim.org
Subject: Patch 7.1.157
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.1.157
Problem:    In Ex mode, :" gives an error at end-of-file. (Michael Hordijk)
Solution:   Only give an error for an empty line, not for a comment.
Files:	    src/ex_docmd.c


*** ../vim-7.1.156/src/ex_docmd.c	Sun Nov 11 19:16:44 2007
--- src/ex_docmd.c	Sat Nov 17 20:23:38 2007
***************
*** 1741,1747 ****
  	}
  
  	/* ignore comment and empty lines */
! 	if (*ea.cmd == '"' || *ea.cmd == NUL)
  	{
  	    ex_pressedreturn = TRUE;
  	    goto doend;
--- 1741,1749 ----
  	}
  
  	/* ignore comment and empty lines */
! 	if (*ea.cmd == '"')
! 	    goto doend;
! 	if (*ea.cmd == NUL)
  	{
  	    ex_pressedreturn = TRUE;
  	    goto doend;
*** ../vim-7.1.156/src/version.c	Sun Nov 11 19:16:44 2007
--- src/version.c	Tue Nov 20 12:28:22 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     157,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
119. You are reading a book and look for the scroll bar to get to
     the next 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.1.158 ---
To: vim-dev at vim.org
Subject: Patch 7.1.158 (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.1.158 (extra)
Problem:    Win32 console: When 'encoding' is "utf-8" and typing Alt-y the
            result is wrong.  Win32 GUI: Alt-y results in "u" when 'encoding'
            is "cp1250" (Lukas Cerman)
Solution:   For utf-8 don't set the 7th bit in a byte, convert to the correct
            byte sequence.  For cp1250, when conversion to 'encoding' results
            in the 7th bit not set, set the 7th bit after conversion.
Files:      src/os_win32.c, src/gui_w48.c


*** ../vim-7.1.157/src/os_win32.c	Mon Oct  1 20:33:45 2007
--- src/os_win32.c	Sat Oct 27 17:35:04 2007
***************
*** 1521,1527 ****
--- 1521,1532 ----
  #endif
  		   )
  		{
+ #ifdef FEAT_MBYTE
+ 		    n = (*mb_char2bytes)(typeahead[typeaheadlen] | 0x80,
+ 						    typeahead + typeaheadlen);
+ #else
  		    typeahead[typeaheadlen] |= 0x80;
+ #endif
  		    modifiers &= ~MOD_MASK_ALT;
  		}
  
*** ../vim-7.1.157/src/gui_w48.c	Sun Sep 30 14:00:41 2007
--- src/gui_w48.c	Mon Oct 29 20:00:25 2007
***************
*** 486,495 ****
  
  /*
   * Convert Unicode character "ch" to bytes in "string[slen]".
   * Return the length.
   */
      static int
! char_to_string(int ch, char_u *string, int slen)
  {
      int		len;
      int		i;
--- 486,496 ----
  
  /*
   * Convert Unicode character "ch" to bytes in "string[slen]".
+  * When "had_alt" is TRUE the ALT key was included in "ch".
   * Return the length.
   */
      static int
! char_to_string(int ch, char_u *string, int slen, int had_alt)
  {
      int		len;
      int		i;
***************
*** 522,529 ****
--- 523,544 ----
  	 * "enc_codepage" is non-zero use the standard Win32 function,
  	 * otherwise use our own conversion function (e.g., for UTF-8). */
  	if (enc_codepage > 0)
+ 	{
  	    len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
  						       string, slen, 0, NULL);
+ 	    /* If we had included the ALT key into the character but now the
+ 	     * upper bit is no longer set, that probably means the conversion
+ 	     * failed.  Convert the original character and set the upper bit
+ 	     * afterwards. */
+ 	    if (had_alt && len == 1 && ch >= 0x80 && string[0] < 0x80)
+ 	    {
+ 		wstring[0] = ch & 0x7f;
+ 		len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
+ 						       string, slen, 0, NULL);
+ 		if (len == 1) /* safety check */
+ 		    string[0] |= 0x80;
+ 	    }
+ 	}
  	else
  	{
  	    len = 1;
***************
*** 573,579 ****
      char_u	string[40];
      int		len = 0;
  
!     len = char_to_string(ch, string, 40);
      if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts)
      {
  	trash_input_buf();
--- 588,594 ----
      char_u	string[40];
      int		len = 0;
  
!     len = char_to_string(ch, string, 40, FALSE);
      if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts)
      {
  	trash_input_buf();
***************
*** 640,646 ****
      {
  	/* Although the documentation isn't clear about it, we assume "ch" is
  	 * a Unicode character. */
! 	len += char_to_string(ch, string + len, 40 - len);
      }
  
      add_to_input_buf(string, len);
--- 655,661 ----
      {
  	/* Although the documentation isn't clear about it, we assume "ch" is
  	 * a Unicode character. */
! 	len += char_to_string(ch, string + len, 40 - len, TRUE);
      }
  
      add_to_input_buf(string, len);
***************
*** 1775,1781 ****
  		    int	len;
  
  		    /* Handle "key" as a Unicode character. */
! 		    len = char_to_string(key, string, 40);
  		    add_to_input_buf(string, len);
  		}
  		break;
--- 1790,1796 ----
  		    int	len;
  
  		    /* Handle "key" as a Unicode character. */
! 		    len = char_to_string(key, string, 40, FALSE);
  		    add_to_input_buf(string, len);
  		}
  		break;
*** ../vim-7.1.157/src/version.c	Tue Nov 20 12:30:31 2007
--- src/version.c	Tue Nov 20 17:19:18 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     158,
  /**/

-- 
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.1.159 ---
To: vim-dev at vim.org
Subject: Patch 7.1.159
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.1.159
Problem:    strcpy() has overlapping arguments.
Solution:   Use mch_memmove() instead. (Dominique Pelle)
Files:	    src/ex_cmds.c


*** ../vim-7.1.158/src/ex_cmds.c	Thu Nov  8 20:47:34 2007
--- src/ex_cmds.c	Sun Nov 18 14:11:58 2007
***************
*** 4885,4891 ****
  			    ++line2;
  			    /* move the cursor to the new line, like Vi */
  			    ++curwin->w_cursor.lnum;
! 			    STRCPY(new_start, p1 + 1);	/* copy the rest */
  			    p1 = new_start - 1;
  			}
  		    }
--- 4885,4892 ----
  			    ++line2;
  			    /* move the cursor to the new line, like Vi */
  			    ++curwin->w_cursor.lnum;
! 			    /* copy the rest */
! 			    mch_memmove(new_start, p1 + 1, STRLEN(p1 + 1) + 1);
  			    p1 = new_start - 1;
  			}
  		    }
*** ../vim-7.1.158/src/version.c	Tue Nov 20 17:21:28 2007
--- src/version.c	Tue Nov 20 18:01:45 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     159,
  /**/

-- 
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.1.160 ---
To: vim-dev at vim.org
Subject: Patch 7.1.160
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.1.160
Problem:    When a focus autocommand is defined, getting or losing focus
	    causes the hit-enter prompt to be redrawn. (Bjorn Winckler)
Solution:   Overwrite the last line.
Files:	    src/message.c


*** ../vim-7.1.159/src/message.c	Thu Sep 13 22:04:30 2007
--- src/message.c	Sun Nov  4 17:33:15 2007
***************
*** 2850,2855 ****
--- 2850,2864 ----
      }
      else if (State == HITRETURN || State == SETWSIZE)
      {
+ 	if (msg_row == Rows - 1)
+ 	{
+ 	    /* Avoid drawing the "hit-enter" prompt below the previous one,
+ 	     * overwrite it.  Esp. useful when regaining focus and a
+ 	     * FocusGained autocmd exists but didn't draw anything. */
+ 	    msg_didout = FALSE;
+ 	    msg_col = 0;
+ 	    msg_clr_eos();
+ 	}
  	hit_return_msg();
  	msg_row = Rows - 1;
      }
*** ../vim-7.1.159/src/version.c	Tue Nov 20 18:03:34 2007
--- src/version.c	Sat Nov 24 15:41:43 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     160,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
142. You dream about creating the world's greatest web site.

 /// 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.1.161 ---
To: vim-dev at vim.org
Subject: Patch 7.1.161
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.1.161
Problem:    Compilation errors with tiny features and EXITFREE.
Solution:   Add #ifdefs. (Dominique Pelle)
Files:	    src/edit.c, src/misc2.c


*** ../vim-7.1.160/src/edit.c	Thu Nov  8 13:03:33 2007
--- src/edit.c	Sat Nov 24 14:57:46 2007
***************
*** 2236,2242 ****
  	    while (i < actual_len && (p - IObuff + 6) < IOSIZE)
  #ifdef FEAT_MBYTE
  		if (has_mbyte)
! 		    p += mb_char2bytes(wca[i++], p);
  		else
  #endif
  		    *(p++) = wca[i++];
--- 2236,2242 ----
  	    while (i < actual_len && (p - IObuff + 6) < IOSIZE)
  #ifdef FEAT_MBYTE
  		if (has_mbyte)
! 		    p += (*mb_char2bytes)(wca[i++], p);
  		else
  #endif
  		    *(p++) = wca[i++];
***************
*** 6444,6451 ****
--- 6444,6453 ----
  {
      vim_free(last_insert);
      last_insert = NULL;
+ # ifdef FEAT_INS_EXPAND
      vim_free(compl_orig_text);
      compl_orig_text = NULL;
+ # endif
  }
  #endif
  
*** ../vim-7.1.160/src/misc2.c	Thu Nov  8 20:47:34 2007
--- src/misc2.c	Sat Nov 24 15:01:46 2007
***************
*** 964,970 ****
  {
      buf_T	*buf, *nextbuf;
      static int	entered = FALSE;
-     win_T	*win;
  
      /* When we cause a crash here it is caught and Vim tries to exit cleanly.
       * Don't try freeing everything again. */
--- 965,970 ----
***************
*** 972,986 ****
  	return;
      entered = TRUE;
  
      block_autocmds();	    /* don't want to trigger autocommands here */
  
! #ifdef FEAT_WINDOWS
      /* close all tabs and windows */
      if (first_tabpage->tp_next != NULL)
  	do_cmdline_cmd((char_u *)"tabonly!");
      if (firstwin != lastwin)
  	do_cmdline_cmd((char_u *)"only!");
! #endif
  
  # if defined(FEAT_SPELL)
      /* Free all spell info. */
--- 972,988 ----
  	return;
      entered = TRUE;
  
+ # ifdef FEAT_AUTOCMD
      block_autocmds();	    /* don't want to trigger autocommands here */
+ # endif
  
! # ifdef FEAT_WINDOWS
      /* close all tabs and windows */
      if (first_tabpage->tp_next != NULL)
  	do_cmdline_cmd((char_u *)"tabonly!");
      if (firstwin != lastwin)
  	do_cmdline_cmd((char_u *)"only!");
! # endif
  
  # if defined(FEAT_SPELL)
      /* Free all spell info. */
***************
*** 1031,1038 ****
--- 1033,1044 ----
      free_regexp_stuff();
      free_tag_stuff();
      free_cd_dir();
+ # ifdef FEAT_EVAL
      set_expr_line(NULL);
+ # endif
+ # ifdef FEAT_DIFF
      diff_clear(curtab);
+ # endif
      clear_sb_text();	      /* free any scrollback text */
  
      /* Free some global vars. */
***************
*** 1041,1059 ****
      vim_free(clip_exclude_prog);
  # endif
      vim_free(last_cmdline);
      vim_free(new_last_cmdline);
      set_keep_msg(NULL, 0);
      vim_free(ff_expand_buffer);
  
      /* Clear cmdline history. */
      p_hi = 0;
      init_history();
  
  #ifdef FEAT_QUICKFIX
!     qf_free_all(NULL);
!     /* Free all location lists */
!     FOR_ALL_WINDOWS(win)
! 	qf_free_all(win);
  #endif
  
      /* Close all script inputs. */
--- 1047,1073 ----
      vim_free(clip_exclude_prog);
  # endif
      vim_free(last_cmdline);
+ # ifdef FEAT_CMDHIST
      vim_free(new_last_cmdline);
+ # endif
      set_keep_msg(NULL, 0);
      vim_free(ff_expand_buffer);
  
      /* Clear cmdline history. */
      p_hi = 0;
+ # ifdef FEAT_CMDHIST
      init_history();
+ # endif
  
  #ifdef FEAT_QUICKFIX
!     {
! 	win_T	*win;
! 
! 	qf_free_all(NULL);
! 	/* Free all location lists */
! 	FOR_ALL_WINDOWS(win)
! 	    qf_free_all(win);
!     }
  #endif
  
      /* Close all script inputs. */
*** ../vim-7.1.160/src/version.c	Sat Nov 24 15:44:17 2007
--- src/version.c	Sat Nov 24 20:55:38 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     161,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
143. You dream in pallettes of 216 websafe colors.

 /// 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.1.162 ---
To: vim-dev at vim.org
Subject: Patch 7.1.162
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.1.162
Problem:    Crash when using a modifier before "while" or "for". (A.Politz)
Solution:   Skip modifiers when checking for a loop command.
Files:	    src/proto/ex_docmd.pro, src/ex_docmd.c, src/ex_eval.c


*** ../vim-7.1.161/src/proto/ex_docmd.pro	Sun Sep 30 14:00:41 2007
--- src/proto/ex_docmd.pro	Sat Nov 24 16:34:06 2007
***************
*** 5,10 ****
--- 5,11 ----
  int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
  void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie));
  int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+ int modifier_len __ARGS((char_u *cmd));
  int cmd_exists __ARGS((char_u *name));
  char_u *set_one_cmd_context __ARGS((expand_T *xp, char_u *buff));
  char_u *skip_range __ARGS((char_u *cmd, int *ctx));
*** ../vim-7.1.161/src/ex_docmd.c	Tue Nov 20 12:30:31 2007
--- src/ex_docmd.c	Sat Nov 24 16:41:20 2007
***************
*** 2963,2968 ****
--- 2963,3019 ----
  #endif
  
  #if defined(FEAT_EVAL) || defined(PROTO)
+ static struct cmdmod
+ {
+     char	*name;
+     int		minlen;
+     int		has_count;  /* :123verbose  :3tab */
+ } cmdmods[] = {
+     {"aboveleft", 3, FALSE},
+     {"belowright", 3, FALSE},
+     {"botright", 2, FALSE},
+     {"browse", 3, FALSE},
+     {"confirm", 4, FALSE},
+     {"hide", 3, FALSE},
+     {"keepalt", 5, FALSE},
+     {"keepjumps", 5, FALSE},
+     {"keepmarks", 3, FALSE},
+     {"leftabove", 5, FALSE},
+     {"lockmarks", 3, FALSE},
+     {"rightbelow", 6, FALSE},
+     {"sandbox", 3, FALSE},
+     {"silent", 3, FALSE},
+     {"tab", 3, TRUE},
+     {"topleft", 2, FALSE},
+     {"verbose", 4, TRUE},
+     {"vertical", 4, FALSE},
+ };
+ 
+ /*
+  * Return length of a command modifier (including optional count).
+  * Return zero when it's not a modifier.
+  */
+     int
+ modifier_len(cmd)
+     char_u	*cmd;
+ {
+     int		i, j;
+     char_u	*p = cmd;
+ 
+     if (VIM_ISDIGIT(*cmd))
+ 	p = skipwhite(skipdigits(cmd));
+     for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i)
+     {
+ 	for (j = 0; p[j] != NUL; ++j)
+ 	    if (p[j] != cmdmods[i].name[j])
+ 		break;
+ 	if (!isalpha(p[j]) && j >= cmdmods[i].minlen
+ 					&& (p == cmd || cmdmods[i].has_count))
+ 	    return j + (p - cmd);
+     }
+     return 0;
+ }
+ 
  /*
   * Return > 0 if an Ex command "name" exists.
   * Return 2 if there is an exact match.
***************
*** 2977,3006 ****
      int		i;
      int		j;
      char_u	*p;
-     static struct cmdmod
-     {
- 	char	*name;
- 	int	minlen;
-     } cmdmods[] = {
- 	{"aboveleft", 3},
- 	{"belowright", 3},
- 	{"botright", 2},
- 	{"browse", 3},
- 	{"confirm", 4},
- 	{"hide", 3},
- 	{"keepalt", 5},
- 	{"keepjumps", 5},
- 	{"keepmarks", 3},
- 	{"leftabove", 5},
- 	{"lockmarks", 3},
- 	{"rightbelow", 6},
- 	{"sandbox", 3},
- 	{"silent", 3},
- 	{"tab", 3},
- 	{"topleft", 2},
- 	{"verbose", 4},
- 	{"vertical", 4},
-     };
  
      /* Check command modifiers. */
      for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i)
--- 3028,3033 ----
*** ../vim-7.1.161/src/ex_eval.c	Wed Aug  1 15:47:06 2007
--- src/ex_eval.c	Sat Nov 24 16:34:09 2007
***************
*** 2269,2277 ****
  has_loop_cmd(p)
      char_u	*p;
  {
!     p = skipwhite(p);
!     while (*p == ':')
! 	p = skipwhite(p + 1);
      if ((p[0] == 'w' && p[1] == 'h')
  	    || (p[0] == 'f' && p[1] == 'o' && p[2] == 'r'))
  	return TRUE;
--- 2269,2286 ----
  has_loop_cmd(p)
      char_u	*p;
  {
!     int		len;
! 
!     /* skip modifiers, white space and ':' */
!     for (;;)
!     {
! 	while (*p == ' ' || *p == '\t' || *p == ':')
! 	    ++p;
! 	len = modifier_len(p);
! 	if (len == 0)
! 	    break;
! 	p += len;
!     }
      if ((p[0] == 'w' && p[1] == 'h')
  	    || (p[0] == 'f' && p[1] == 'o' && p[2] == 'r'))
  	return TRUE;
*** ../vim-7.1.161/src/version.c	Sat Nov 24 21:27:33 2007
--- src/version.c	Sat Nov 24 21:48:38 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     162,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
144. You eagerly await the update of the "Cool Site of the Day."

 /// 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.1.163 ---
To: vim-dev at vim.org
Subject: Patch 7.1.163
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.1.163
Problem:    Warning for the unknown option 'bufsecret'.
Solution:   Remove the lines .vim that use this option. (Andy Wokula)
Files:	    runtime/menu.vim


*** ../vim-7.1.162/runtime/menu.vim	Sun May  6 15:21:23 2007
--- runtime/menu.vim	Mon Nov 19 23:17:11 2007
***************
*** 2,8 ****
  " You can also use this as a start for your own set of menus.
  "
  " Maintainer:	Bram Moolenaar <Bram at vim.org>
! " Last Change:	2007 Jan 09
  
  " Note that ":an" (short for ":anoremenu") is often used to make a menu work
  " in all modes and avoid side effects from mappings defined by the user.
--- 2,8 ----
  " You can also use this as a start for your own set of menus.
  "
  " Maintainer:	Bram Moolenaar <Bram at vim.org>
! " Last Change:	2007 Nov 19
  
  " Note that ":an" (short for ":anoremenu") is often used to make a menu work
  " in all modes and avoid side effects from mappings defined by the user.
***************
*** 658,664 ****
    let buf = 1
    while buf <= bufnr('$')
      if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
- 					    \ && !getbufvar(buf, "&bufsecret")
        let s:bmenu_count = s:bmenu_count + 1
      endif
      let buf = buf + 1
--- 658,663 ----
***************
*** 671,677 ****
    let buf = 1
    while buf <= bufnr('$')
      if bufexists(buf) && !isdirectory(bufname(buf)) && buflisted(buf)
- 					    \ && !getbufvar(buf, "&bufsecret")
        call <SID>BMFilename(bufname(buf), buf)
      endif
      let buf = buf + 1
--- 670,675 ----
*** ../vim-7.1.162/src/version.c	Sat Nov 24 21:49:19 2007
--- src/version.c	Thu Nov 29 17:44:08 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     163,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
158. You get a tuner card so you can watch TV while surfing.

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


--- NEW FILE 7.1.164 ---
To: vim-dev at vim.org
Subject: Patch 7.1.164
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.1.164
Problem:    Reading past end of regexp pattern. (Dominique Pelle)
Solution:   Use utf_ptr2len().
Files:	    src/regexp.c


*** ../vim-7.1.163/src/regexp.c	Sat Aug 11 13:57:31 2007
--- src/regexp.c	Sat Nov 24 13:23:53 2007
***************
*** 2770,2776 ****
      {
  #ifdef FEAT_MBYTE
  	if (enc_utf8)
! 	    prevchr_len += utf_char2len(mb_ptr2char(regparse + prevchr_len));
  	else if (has_mbyte)
  	    prevchr_len += (*mb_ptr2len)(regparse + prevchr_len);
  	else
--- 2770,2777 ----
      {
  #ifdef FEAT_MBYTE
  	if (enc_utf8)
! 	    /* exclude composing chars that mb_ptr2len does include */
! 	    prevchr_len += utf_ptr2len(regparse + prevchr_len);
  	else if (has_mbyte)
  	    prevchr_len += (*mb_ptr2len)(regparse + prevchr_len);
  	else
*** ../vim-7.1.163/src/version.c	Thu Nov 29 17:46:01 2007
--- src/version.c	Thu Nov 29 21:25:45 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     164,
  /**/

-- 
Send $25.00 for handy leaflet on how to make money by selling leaflets

 /// 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.1.165 ---
To: vim-dev at vim.org
Subject: Patch 7.1.165
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.1.165
Problem:    Crash related to getting X window ID. (Dominique Pelle)
Solution:   Don't trust the window ID that we got in the past, check it every
	    time.
Files:	    src/os_unix.c


*** ../vim-7.1.164/src/os_unix.c	Thu Aug 30 11:46:46 2007
--- src/os_unix.c	Thu Nov 29 18:19:56 2007
***************
*** 310,316 ****
  }
  
  /*
!  * mch_inchar(): low level input funcion.
   * Get a characters from the keyboard.
   * Return the number of characters that are available.
   * If wtime == 0 do not wait for characters.
--- 310,316 ----
  }
  
  /*
!  * mch_inchar(): low level input function.
   * Get a characters from the keyboard.
   * Return the number of characters that are available.
   * If wtime == 0 do not wait for characters.
***************
*** 1567,1584 ****
  #ifdef FEAT_XCLIPBOARD
      if (xterm_dpy != NULL && x11_window != 0)
      {
! 	/* Checked it already. */
! 	if (x11_display_from == XD_XTERM)
! 	    return OK;
! 
! 	/*
! 	 * If the X11 display was opened here before, for the window where Vim
! 	 * was started, close that one now to avoid a memory leak.
! 	 */
! 	if (x11_display_from == XD_HERE && x11_display != NULL)
! 	    XCloseDisplay(x11_display);
! 	x11_display = xterm_dpy;
! 	x11_display_from = XD_XTERM;
  	if (test_x11_window(x11_display) == FAIL)
  	{
  	    /* probably bad $WINDOWID */
--- 1567,1585 ----
  #ifdef FEAT_XCLIPBOARD
      if (xterm_dpy != NULL && x11_window != 0)
      {
! 	/* We may have checked it already, but Gnome terminal can move us to
! 	 * another window, so we need to check every time. */
! 	if (x11_display_from != XD_XTERM)
! 	{
! 	    /*
! 	     * If the X11 display was opened here before, for the window where
! 	     * Vim was started, close that one now to avoid a memory leak.
! 	     */
! 	    if (x11_display_from == XD_HERE && x11_display != NULL)
! 		XCloseDisplay(x11_display);
! 	    x11_display = xterm_dpy;
! 	    x11_display_from = XD_XTERM;
! 	}
  	if (test_x11_window(x11_display) == FAIL)
  	{
  	    /* probably bad $WINDOWID */
***************
*** 2421,2427 ****
  /*
   * Set the case of the file name, if it already exists.  This will cause the
   * file name to remain exactly the same.
!  * Only required for file systems where case is ingored and preserved.
   */
  /*ARGSUSED*/
      void
--- 2422,2428 ----
  /*
   * Set the case of the file name, if it already exists.  This will cause the
   * file name to remain exactly the same.
!  * Only required for file systems where case is ignored and preserved.
   */
  /*ARGSUSED*/
      void
***************
*** 4653,4659 ****
  	ret = poll(fds, nfd, towait);
  # ifdef FEAT_MZSCHEME
  	if (ret == 0 && mzquantum_used)
! 	    /* MzThreads scheduling is required and timeout occured */
  	    finished = FALSE;
  # endif
  
--- 4654,4660 ----
  	ret = poll(fds, nfd, towait);
  # ifdef FEAT_MZSCHEME
  	if (ret == 0 && mzquantum_used)
! 	    /* MzThreads scheduling is required and timeout occurred */
  	    finished = FALSE;
  # endif
  
***************
*** 4801,4807 ****
  #endif
  # ifdef FEAT_MZSCHEME
  	if (ret == 0 && mzquantum_used)
! 	    /* loop if MzThreads must be scheduled and timeout occured */
  	    finished = FALSE;
  # endif
  
--- 4802,4808 ----
  #endif
  # ifdef FEAT_MZSCHEME
  	if (ret == 0 && mzquantum_used)
! 	    /* loop if MzThreads must be scheduled and timeout occurred */
  	    finished = FALSE;
  # endif
  
***************
*** 5191,5197 ****
  	{
  	    /* When using system() always add extra quotes, because the shell
  	     * is started twice.  Otherwise put a backslash before special
! 	     * characters, except insice ``. */
  #ifdef USE_SYSTEM
  	    STRCAT(command, " \"");
  	    STRCAT(command, pat[i]);
--- 5192,5198 ----
  	{
  	    /* When using system() always add extra quotes, because the shell
  	     * is started twice.  Otherwise put a backslash before special
! 	     * characters, except inside ``. */
  #ifdef USE_SYSTEM
  	    STRCAT(command, " \"");
  	    STRCAT(command, pat[i]);
***************
*** 5675,5681 ****
  	    /* gpm library tries to handling TSTP causes
  	     * problems. Anyways, we close connection to Gpm whenever
  	     * we are going to suspend or starting an external process
! 	     * so we should'nt  have problem with this
  	     */
  	    signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
  	    return 1; /* succeed */
--- 5676,5682 ----
  	    /* gpm library tries to handling TSTP causes
  	     * problems. Anyways, we close connection to Gpm whenever
  	     * we are going to suspend or starting an external process
! 	     * so we shouldn't  have problem with this
  	     */
  	    signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
  	    return 1; /* succeed */
*** ../vim-7.1.164/src/version.c	Thu Nov 29 21:26:38 2007
--- src/version.c	Sat Dec  1 17:17:20 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     165,
  /**/

-- 
"Hit any key to continue" is very confusing when you have two keyboards.

 /// 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.1.166 ---
To: vim-dev at vim.org
Subject: Patch 7.1.166
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.1.166
Problem:    Memory leak for using "gp" in Visual mode.
Solution:   Free memory in put_register(). (Dominique Pelle)
Files:	    src/ops.c


*** ../vim-7.1.165/src/ops.c	Thu Nov  8 10:35:02 2007
--- src/ops.c	Sun Nov 25 15:17:43 2007
***************
*** 927,934 ****
      int		name;
      int		copy;	/* make a copy, if FALSE make register empty. */
  {
!     static struct yankreg	*reg;
!     int				i;
  
  #ifdef FEAT_CLIPBOARD
      /* When Visual area changed, may have to update selection.  Obtain the
--- 927,934 ----
      int		name;
      int		copy;	/* make a copy, if FALSE make register empty. */
  {
!     struct yankreg	*reg;
!     int			i;
  
  #ifdef FEAT_CLIPBOARD
      /* When Visual area changed, may have to update selection.  Obtain the
***************
*** 967,973 ****
  }
  
  /*
!  * Put "reg" into register "name".  Free any previous contents.
   */
      void
  put_register(name, reg)
--- 967,973 ----
  }
  
  /*
!  * Put "reg" into register "name".  Free any previous contents and "reg".
   */
      void
  put_register(name, reg)
***************
*** 977,982 ****
--- 977,983 ----
      get_yank_register(name, 0);
      free_yank_all();
      *y_current = *(struct yankreg *)reg;
+     vim_free(reg);
  
  # ifdef FEAT_CLIPBOARD
      /* Send text written to clipboard register to the clipboard. */
*** ../vim-7.1.165/src/version.c	Sat Dec  1 17:18:45 2007
--- src/version.c	Sat Dec  1 21:11:25 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     166,
  /**/

-- 
An error has occurred.  Hit any user to continue.

 /// 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.1.167 ---
To: vim-dev at vim.org
Subject: Patch 7.1.167
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.1.167
Problem:    Xxd crashes when using "xxd -b -c 110". (Debian bug 452789)
Solution:   Allocate more memory.  Fix check for maximum number of columns.
Files:	    src/xxd/xxd.c


*** ../vim-7.1.166/src/xxd/xxd.c	Thu May 10 19:07:42 2007
--- src/xxd/xxd.c	Thu Nov 29 21:05:16 2007
***************
*** 212,218 ****
  
  #define TRY_SEEK	/* attempt to use lseek, or skip forward by reading */
  #define COLS 256	/* change here, if you ever need more columns */
! #define LLEN (9 + (5*COLS-1)/2 + 2 + COLS)
  
  char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa;
  
--- 212,218 ----
  
  #define TRY_SEEK	/* attempt to use lseek, or skip forward by reading */
  #define COLS 256	/* change here, if you ever need more columns */
! #define LLEN (11 + (9*COLS-1)/1 + COLS + 2)
  
  char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa;
  
***************
*** 590,596 ****
        default:			octspergrp = 0; break;
        }
  
!   if (cols < 1 || (!hextype && (cols > COLS)))
      {
        fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS);
        exit(1);
--- 590,597 ----
        default:			octspergrp = 0; break;
        }
  
!   if (cols < 1 || ((hextype == HEX_NORMAL || hextype == HEX_BITS)
! 							    && (cols > COLS)))
      {
        fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS);
        exit(1);
***************
*** 750,755 ****
--- 751,757 ----
  	}
        if (ebcdic)
  	e = (e < 64) ? '.' : etoa64[e-64];
+       /* When changing this update definition of LLEN above. */
        l[11 + (grplen * cols - 1)/octspergrp + p] =
  #ifdef __MVS__
  	  (e >= 64)
*** ../vim-7.1.166/src/version.c	Sat Dec  1 21:12:23 2007
--- src/version.c	Mon Dec  3 21:30:31 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     167,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
178. You look for an icon to double-click to open your bedroom 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.1.168 ---
To: vim-dev at vim.org
Subject: Patch 7.1.168 (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.1.168 (extra)
Problem:    Win32 GUI: Since patch 7.1.095, when the Vim window does not have
	    focus, clicking in it doesn't position the cursor. (Juergen
	    Kraemer)
Solution:   Don't reset s_button_pending just after receiving focus.
Files:	    src/gui_w48.c


*** ../vim-7.1.167/src/gui_w48.c	Tue Nov 20 17:21:28 2007
--- src/gui_w48.c	Mon Dec  3 22:13:16 2007
***************
*** 290,295 ****
--- 290,300 ----
  
  /* Local variables */
  static int		s_button_pending = -1;
+ 
+ /* s_getting_focus is set when we got focus but didn't see mouse-up event yet,
+  * so don't reset s_button_pending. */
+ static int		s_getting_focus = FALSE;
+ 
  static int		s_x_pending;
  static int		s_y_pending;
  static UINT		s_kFlags_pending;
***************
*** 671,676 ****
--- 676,683 ----
  {
      int vim_modifiers = 0x0;
  
+     s_getting_focus = FALSE;
+ 
      if (keyFlags & MK_SHIFT)
  	vim_modifiers |= MOUSE_SHIFT;
      if (keyFlags & MK_CONTROL)
***************
*** 792,797 ****
--- 799,805 ----
  {
      int button;
  
+     s_getting_focus = FALSE;
      if (s_button_pending > -1)
      {
  	/* Delayed action for mouse down event */
***************
*** 1951,1958 ****
  	    allow_scrollbar = FALSE;
  
  	    /* Clear pending mouse button, the release event may have been
! 	     * taken by the dialog window. */
! 	    s_button_pending = -1;
  
  	    return OK;
  	}
--- 1959,1968 ----
  	    allow_scrollbar = FALSE;
  
  	    /* Clear pending mouse button, the release event may have been
! 	     * taken by the dialog window.  But don't do this when getting
! 	     * focus, we need the mouse-up event then. */
! 	    if (!s_getting_focus)
! 		s_button_pending = -1;
  
  	    return OK;
  	}
***************
*** 2702,2707 ****
--- 2712,2718 ----
      HWND hwndOldFocus)
  {
      gui_focus_change(TRUE);
+     s_getting_focus = TRUE;
      (void)MyWindowProc(hwnd, WM_SETFOCUS, (WPARAM)hwndOldFocus, 0);
  }
  
***************
*** 2711,2716 ****
--- 2722,2728 ----
      HWND hwndNewFocus)
  {
      gui_focus_change(FALSE);
+     s_getting_focus = FALSE;
      (void)MyWindowProc(hwnd, WM_KILLFOCUS, (WPARAM)hwndNewFocus, 0);
  }
  
*** ../vim-7.1.167/src/version.c	Mon Dec  3 21:31:56 2007
--- src/version.c	Mon Dec  3 22:16:32 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     168,
  /**/

-- 
Rule #1: Don't give somebody a tool that he's going to hurt himself with.

 /// 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.1.169 ---
To: vim-dev at vim.org
Subject: Patch 7.1.169
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.1.169
Problem:    Using uninitialized variable when system() fails. (Dominique
            Pelle)
Solution:   Let system() return an empty string when it fails.
Files:      src/eval.c


*** ../vim-7.1.168/src/eval.c	Thu Nov  8 20:47:34 2007
--- src/eval.c	Fri Nov 30 21:01:26 2007
***************
*** 15826,15832 ****
      FILE	*fd;
  
      if (check_restricted() || check_secure())
! 	return;
  
      if (argvars[1].v_type != VAR_UNKNOWN)
      {
--- 15826,15832 ----
      FILE	*fd;
  
      if (check_restricted() || check_secure())
! 	goto done;
  
      if (argvars[1].v_type != VAR_UNKNOWN)
      {
***************
*** 15837,15843 ****
  	if ((infile = vim_tempname('i')) == NULL)
  	{
  	    EMSG(_(e_notmp));
! 	    return;
  	}
  
  	fd = mch_fopen((char *)infile, WRITEBIN);
--- 15837,15843 ----
  	if ((infile = vim_tempname('i')) == NULL)
  	{
  	    EMSG(_(e_notmp));
! 	    goto done;
  	}
  
  	fd = mch_fopen((char *)infile, WRITEBIN);
*** ../vim-7.1.168/src/version.c	Mon Dec  3 22:20:17 2007
--- src/version.c	Fri Dec  7 17:07:32 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     169,
  /**/

-- 
% 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.1.170 ---
To: vim-dev at vim.org
Subject: Patch 7.1.170
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.1.170
Problem:    Valgrind warning for overlapping arguments for strcpy().
Solution:   Use mch_memmove() instead. (Dominique Pelle)
Files:	    src/getchar.c


*** ../vim-7.1.169/src/getchar.c	Thu Sep 13 18:25:08 2007
--- src/getchar.c	Mon Dec  3 20:42:29 2007
***************
*** 253,260 ****
  	return;
      }
      else if (buf->bh_index != 0)
! 	STRCPY(buf->bh_first.b_next->b_str,
! 				 buf->bh_first.b_next->b_str + buf->bh_index);
      buf->bh_index = 0;
  
      if (buf->bh_space >= (int)slen)
--- 253,261 ----
  	return;
      }
      else if (buf->bh_index != 0)
! 	mch_memmove(buf->bh_first.b_next->b_str,
! 		    buf->bh_first.b_next->b_str + buf->bh_index,
! 		    STRLEN(buf->bh_first.b_next->b_str + buf->bh_index) + 1);
      buf->bh_index = 0;
  
      if (buf->bh_space >= (int)slen)
*** ../vim-7.1.169/src/version.c	Fri Dec  7 17:08:35 2007
--- src/version.c	Fri Dec  7 17:27:13 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     170,
  /**/

-- 
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.1.171 ---
To: vim-dev at vim.org
Subject: Patch 7.1.171
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.1.171
Problem:    Reading one byte before allocated memory.
Solution:   Check index not to become negative. (Dominique Pelle)
Files:	    src/ex_getln.c


*** ../vim-7.1.170/src/ex_getln.c	Tue Oct 30 17:36:31 2007
--- src/ex_getln.c	Tue Dec  4 21:49:24 2007
***************
*** 1186,1195 ****
  	case K_LEFT:
  	case K_S_LEFT:
  	case K_C_LEFT:
  		do
  		{
- 		    if (ccline.cmdpos == 0)
- 			break;
  		    --ccline.cmdpos;
  #ifdef FEAT_MBYTE
  		    if (has_mbyte)	/* move to first byte of char */
--- 1186,1195 ----
  	case K_LEFT:
  	case K_S_LEFT:
  	case K_C_LEFT:
+ 		if (ccline.cmdpos == 0)
+ 		    goto cmdline_not_changed;
  		do
  		{
  		    --ccline.cmdpos;
  #ifdef FEAT_MBYTE
  		    if (has_mbyte)	/* move to first byte of char */
***************
*** 1198,1204 ****
  #endif
  		    ccline.cmdspos -= cmdline_charsize(ccline.cmdpos);
  		}
! 		while ((c == K_S_LEFT || c == K_C_LEFT
  			       || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL)))
  			&& ccline.cmdbuff[ccline.cmdpos - 1] != ' ');
  #ifdef FEAT_MBYTE
--- 1198,1205 ----
  #endif
  		    ccline.cmdspos -= cmdline_charsize(ccline.cmdpos);
  		}
! 		while (ccline.cmdpos > 0
! 			&& (c == K_S_LEFT || c == K_C_LEFT
  			       || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL)))
  			&& ccline.cmdbuff[ccline.cmdpos - 1] != ' ');
  #ifdef FEAT_MBYTE
*** ../vim-7.1.170/src/version.c	Fri Dec  7 17:30:04 2007
--- src/version.c	Fri Dec  7 20:00:06 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     171,
  /**/

-- 
Some of the well know MS-Windows errors:
	EMULTI		Multitasking attempted, system confused
	EKEYBOARD	Keyboard locked, try getting out of this one!
	EXPLAIN		Unexplained error, please tell us what happened
	EFUTURE		Reserved for our future mistakes

 /// 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.1.172 ---
To: vim-dev at vim.org
Subject: Patch 7.1.172
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.1.172
Problem:    When 'buftype' is "acwrite" Vim still checks if the file or
	    directory exists before overwriting.
Solution:   Don't check for overwriting when the buffer name is not a file
	    name.
Files:	    src/ex_cmds.c


*** ../vim-7.1.171/src/ex_cmds.c	Tue Nov 20 18:03:34 2007
--- src/ex_cmds.c	Fri Dec  7 22:13:32 2007
***************
*** 2732,2737 ****
--- 2732,2740 ----
  		    && vim_strchr(p_cpo, CPO_OVERNEW) == NULL)
  		|| (buf->b_flags & BF_READERR))
  	    && !p_wa
+ #ifdef FEAT_QUICKFIX
+ 	    && !bt_nofile(buf)
+ #endif
  	    && vim_fexists(ffname))
      {
  	if (!eap->forceit && !eap->append)
*** ../vim-7.1.171/src/version.c	Fri Dec  7 20:28:13 2007
--- src/version.c	Sat Dec  8 22:18:54 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     172,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
206. You religiously respond immediately to e-mail, while ignoring
     your growing pile of snail mail.

 /// 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.1.173 ---
To: vim-dev at vim.org
Subject: Patch 7.1.173
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.1.173
Problem:    Accessing freed memory. (Dominique Pelle)
Solution:   Don't call reg_getline() to check if a line is the first in the
	    file.
Files:	    src/regexp.c


*** ../vim-7.1.172/src/regexp.c	Thu Nov 29 21:26:38 2007
--- src/regexp.c	Sat Dec  8 15:54:05 2007
***************
*** 3810,3820 ****
  	    break;
  
  	  case RE_BOF:
! 	    /* Passing -1 to the getline() function provided for the search
! 	     * should always return NULL if the current line is the first
! 	     * line of the file. */
  	    if (reglnum != 0 || reginput != regline
! 			|| (REG_MULTI && reg_getline((linenr_T)-1) != NULL))
  		status = RA_NOMATCH;
  	    break;
  
--- 3810,3820 ----
  	    break;
  
  	  case RE_BOF:
! 	    /* We're not at the beginning of the file when below the first
! 	     * line where we started, not at the start of the line or we
! 	     * didn't start at the first line of the buffer. */
  	    if (reglnum != 0 || reginput != regline
! 					  || (REG_MULTI && reg_firstlnum > 1))
  		status = RA_NOMATCH;
  	    break;
  
*** ../vim-7.1.172/src/version.c	Sat Dec  8 22:20:24 2007
--- src/version.c	Sun Dec  9 19:24:36 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     173,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
213. Your kids start referring to you as "that guy in front of the monitor."

 /// 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.1.174 ---
To: vim-dev at vim.org
Subject: Patch 7.1.174
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.1.174
Problem:    Writing NUL past end of a buffer.
Solution:   Copy one byte less when using strncat(). (Dominuque Pelle)
Files:	    src/ex_cmds.c, src/ex_docmd.c


*** ../vim-7.1.173/src/ex_cmds.c	Sat Dec  8 22:20:24 2007
--- src/ex_cmds.c	Fri Dec  7 22:13:32 2007
***************
*** 1650,1656 ****
  {
      vim_snprintf((char *)IObuff, IOSIZE, _("%sviminfo: %s in line: "),
  							     errnum, message);
!     STRNCAT(IObuff, line, IOSIZE - STRLEN(IObuff));
      if (IObuff[STRLEN(IObuff) - 1] == '\n')
  	IObuff[STRLEN(IObuff) - 1] = NUL;
      emsg(IObuff);
--- 1650,1656 ----
  {
      vim_snprintf((char *)IObuff, IOSIZE, _("%sviminfo: %s in line: "),
  							     errnum, message);
!     STRNCAT(IObuff, line, IOSIZE - STRLEN(IObuff) - 1);
      if (IObuff[STRLEN(IObuff) - 1] == '\n')
  	IObuff[STRLEN(IObuff) - 1] = NUL;
      emsg(IObuff);
*** ../vim-7.1.173/src/ex_docmd.c	Sat Nov 24 21:49:19 2007
--- src/ex_docmd.c	Fri Dec  7 21:01:03 2007
***************
*** 2660,2666 ****
  		errormsg = IObuff;
  	    }
  	    STRCAT(errormsg, ": ");
! 	    STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff));
  	}
  	emsg(errormsg);
      }
--- 2660,2666 ----
  		errormsg = IObuff;
  	    }
  	    STRCAT(errormsg, ": ");
! 	    STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1);
  	}
  	emsg(errormsg);
      }
*** ../vim-7.1.173/src/version.c	Sun Dec  9 19:25:35 2007
--- src/version.c	Sun Dec  9 19:36:50 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     174,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
214. Your MCI "Circle of Friends" are all Hayes-compatible.

 /// 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.1.175 ---
To: vim-dev at vim.org
Subject: Patch 7.1.175
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.1.175
Problem:    <BS> doesn't work with some combination of 'sts', 'linebreak' and
	    'backspace'. (Francois Ingelrest)
Solution:   When adding white space results in not moving back delete one
	    character.
Files:	    src/edit.c


*** ../vim-7.1.174/src/edit.c	Sat Nov 24 21:27:33 2007
--- src/edit.c	Fri Dec  7 21:32:48 2007
***************
*** 8189,8194 ****
--- 8189,8217 ----
      AppendCharToRedobuff(K_DEL);
  }
  
+ static void ins_bs_one __ARGS((colnr_T *vcolp));
+ 
+ /*
+  * Delete one character for ins_bs().
+  */
+     static void
+ ins_bs_one(vcolp)
+     colnr_T	*vcolp;
+ {
+     dec_cursor();
+     getvcol(curwin, &curwin->w_cursor, vcolp, NULL, NULL);
+     if (State & REPLACE_FLAG)
+     {
+ 	/* Don't delete characters before the insert point when in
+ 	 * Replace mode */
+ 	if (curwin->w_cursor.lnum != Insstart.lnum
+ 		|| curwin->w_cursor.col >= Insstart.col)
+ 	    replace_do_bs();
+     }
+     else
+ 	(void)del_char(FALSE);
+ }
+ 
  /*
   * Handle Backspace, delete-word and delete-line in Insert mode.
   * Return TRUE when backspace was actually used.
***************
*** 8418,8426 ****
  	    int		ts;
  	    colnr_T	vcol;
  	    colnr_T	want_vcol;
! #if 0
! 	    int		extra = 0;
! #endif
  
  	    *inserted_space_p = FALSE;
  	    if (p_sta && in_indent)
--- 8441,8447 ----
  	    int		ts;
  	    colnr_T	vcol;
  	    colnr_T	want_vcol;
! 	    colnr_T	start_vcol;
  
  	    *inserted_space_p = FALSE;
  	    if (p_sta && in_indent)
***************
*** 8431,8436 ****
--- 8452,8458 ----
  	     * 'showbreak' may get in the way, need to get the last column of
  	     * the previous character. */
  	    getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
+ 	    start_vcol = vcol;
  	    dec_cursor();
  	    getvcol(curwin, &curwin->w_cursor, NULL, NULL, &want_vcol);
  	    inc_cursor();
***************
*** 8439,8468 ****
  	    /* delete characters until we are at or before want_vcol */
  	    while (vcol > want_vcol
  		    && (cc = *(ml_get_cursor() - 1), vim_iswhite(cc)))
! 	    {
! 		dec_cursor();
! 		getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
! 		if (State & REPLACE_FLAG)
! 		{
! 		    /* Don't delete characters before the insert point when in
! 		     * Replace mode */
! 		    if (curwin->w_cursor.lnum != Insstart.lnum
! 			    || curwin->w_cursor.col >= Insstart.col)
! 		    {
! #if 0	/* what was this for?  It causes problems when sw != ts. */
! 			if (State == REPLACE && (int)vcol < want_vcol)
! 			{
! 			    (void)del_char(FALSE);
! 			    extra = 2;	/* don't pop too much */
! 			}
! 			else
! #endif
! 			    replace_do_bs();
! 		    }
! 		}
! 		else
! 		    (void)del_char(FALSE);
! 	    }
  
  	    /* insert extra spaces until we are at want_vcol */
  	    while (vcol < want_vcol)
--- 8461,8467 ----
  	    /* delete characters until we are at or before want_vcol */
  	    while (vcol > want_vcol
  		    && (cc = *(ml_get_cursor() - 1), vim_iswhite(cc)))
! 		ins_bs_one(&vcol);
  
  	    /* insert extra spaces until we are at want_vcol */
  	    while (vcol < want_vcol)
***************
*** 8479,8500 ****
  #endif
  		{
  		    ins_str((char_u *)" ");
! 		    if ((State & REPLACE_FLAG) /* && extra <= 1 */)
! 		    {
! #if 0
! 			if (extra)
! 			    replace_push_off(NUL);
! 			else
! #endif
! 			    replace_push(NUL);
! 		    }
! #if 0
! 		    if (extra == 2)
! 			extra = 1;
! #endif
  		}
  		getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
  	    }
  	}
  
  	/*
--- 8478,8493 ----
  #endif
  		{
  		    ins_str((char_u *)" ");
! 		    if ((State & REPLACE_FLAG))
! 			replace_push(NUL);
  		}
  		getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
  	    }
+ 
+ 	    /* If we are now back where we started delete one character.  Can
+ 	     * happen when using 'sts' and 'linebreak'. */
+ 	    if (vcol >= start_vcol)
+ 		ins_bs_one(&vcol);
  	}
  
  	/*
*** ../vim-7.1.174/src/version.c	Sun Dec  9 19:37:37 2007
--- src/version.c	Sun Dec  9 20:24:11 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     175,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
215. Your mouse-clicking forearm rivals Popeye's.

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


--- NEW FILE 7.1.176 ---
To: vim-dev at vim.org
Subject: Patch 7.1.176
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.1.176
Problem:    Building with Aap fails when the "compiledby" argument contains
	    '<' or '>' characters. (Alex Yeh)
Solution:   Change how quoting is done in the Aap recipe.
Files:	    src/main.aap


*** ../vim-7.1.175/src/main.aap	Tue Sep 25 22:13:14 2007
--- src/main.aap	Fri Dec  7 17:03:31 2007
***************
*** 63,70 ****
          @else:
          @   arch = "ppc"
          :print Building for $arch system
          :sys CONFIG_STATUS=auto/config.status
!                 ./configure.aap `file2string("config.arg")`
                      --with-mac-arch=$arch
                      --cache-file=auto/config.cache
  
--- 63,71 ----
          @else:
          @   arch = "ppc"
          :print Building for $arch system
+         config_args = `file2string("config.arg")`
          :sys CONFIG_STATUS=auto/config.status
!                 ./configure.aap $config_args
                      --with-mac-arch=$arch
                      --cache-file=auto/config.cache
  
***************
*** 440,450 ****
          :print >> $target char_u *all_lflags = (char_u *)"$linkcmd";
          @if _no.get("COMPILEDBY"):
              who = $COMPILEDBY
!             where = ''
          @else:
              :syseval whoami | :eval re.sub("\n", "", stdin) | :assign who
  
              :syseval hostname | :eval re.sub("\n", "", stdin) | :assign where
          :print >> $target char_u *compiled_user = (char_u *)"$who";
          :print >> $target char_u *compiled_sys = (char_u *)"$where";
  
--- 441,453 ----
          :print >> $target char_u *all_lflags = (char_u *)"$linkcmd";
          @if _no.get("COMPILEDBY"):
              who = $COMPILEDBY
!             where =
          @else:
              :syseval whoami | :eval re.sub("\n", "", stdin) | :assign who
  
              :syseval hostname | :eval re.sub("\n", "", stdin) | :assign where
+         @who = string.replace(who, '"', '\\"')
+         @where = string.replace(where, '"', '\\"')
          :print >> $target char_u *compiled_user = (char_u *)"$who";
          :print >> $target char_u *compiled_sys = (char_u *)"$where";
  
*** ../vim-7.1.175/src/version.c	Sun Dec  9 20:25:59 2007
--- src/version.c	Mon Dec 31 16:40:01 2007
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     176,
  /**/

-- 
E  M  A  C  S
s  e  l  o  h
c  t  t  n  i
a  a     t  f
p        r  t
e        o
         l

 /// 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.1.177 ---
To: vim-dev at vim.org
Subject: Patch 7.1.177
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.1.177
Problem:    Freeing memory twice when in debug mode while reading a script.
Solution:   Ignore script input while in debug mode.
Files:	    src/ex_cmds2.c, src/getchar.c, src/globals.h


*** ../vim-7.1.176/src/ex_cmds2.c	Thu May 10 20:55:46 2007
--- src/ex_cmds2.c	Tue Jan  1 14:13:41 2008
***************
*** 93,98 ****
--- 93,100 ----
      int		save_emsg_silent = emsg_silent;
      int		save_redir_off = redir_off;
      tasave_T	typeaheadbuf;
+     int		typeahead_saved = FALSE;
+     int		save_ignore_script;
  # ifdef FEAT_EX_EXTRA
      int		save_ex_normal_busy;
  # endif
***************
*** 159,176 ****
  	 * This makes sure we get input from the user here and don't interfere
  	 * with the commands being executed.  Reset "ex_normal_busy" to avoid
  	 * the side effects of using ":normal". Save the stuff buffer and make
! 	 * it empty. */
  # ifdef FEAT_EX_EXTRA
  	save_ex_normal_busy = ex_normal_busy;
  	ex_normal_busy = 0;
  # endif
  	if (!debug_greedy)
  	    save_typeahead(&typeaheadbuf);
  
  	cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL);
  
! 	if (!debug_greedy)
  	    restore_typeahead(&typeaheadbuf);
  # ifdef FEAT_EX_EXTRA
  	ex_normal_busy = save_ex_normal_busy;
  # endif
--- 161,186 ----
  	 * This makes sure we get input from the user here and don't interfere
  	 * with the commands being executed.  Reset "ex_normal_busy" to avoid
  	 * the side effects of using ":normal". Save the stuff buffer and make
! 	 * it empty. Set ignore_script to avoid reading from script input. */
  # ifdef FEAT_EX_EXTRA
  	save_ex_normal_busy = ex_normal_busy;
  	ex_normal_busy = 0;
  # endif
  	if (!debug_greedy)
+ 	{
  	    save_typeahead(&typeaheadbuf);
+ 	    typeahead_saved = TRUE;
+ 	    save_ignore_script = ignore_script;
+ 	    ignore_script = TRUE;
+ 	}
  
  	cmdline = getcmdline_prompt('>', NULL, 0, EXPAND_NOTHING, NULL);
  
! 	if (typeahead_saved)
! 	{
  	    restore_typeahead(&typeaheadbuf);
+ 	    ignore_script = save_ignore_script;
+ 	}
  # ifdef FEAT_EX_EXTRA
  	ex_normal_busy = save_ex_normal_busy;
  # endif
*** ../vim-7.1.176/src/getchar.c	Fri Dec  7 17:30:04 2007
--- src/getchar.c	Tue Jan  1 14:11:42 2008
***************
*** 1279,1286 ****
      void
  free_typebuf()
  {
!     vim_free(typebuf.tb_buf);
!     vim_free(typebuf.tb_noremap);
  }
  
  /*
--- 1279,1292 ----
      void
  free_typebuf()
  {
!     if (typebuf.tb_buf == typebuf_init)
! 	EMSG2(_(e_intern2), "Free typebuf 1");
!     else
! 	vim_free(typebuf.tb_buf);
!     if (typebuf.tb_buf == noremapbuf_init)
! 	EMSG2(_(e_intern2), "Free typebuf 2");
!     else
! 	vim_free(typebuf.tb_noremap);
  }
  
  /*
***************
*** 1359,1364 ****
--- 1365,1375 ----
  	EMSG(_(e_nesting));
  	return;
      }
+ #ifdef FEAT_EVAL
+     if (ignore_script)
+ 	/* Not reading from script, also don't open one.  Warning message? */
+ 	return;
+ #endif
  
      if (scriptin[curscript] != NULL)	/* already reading script */
  	++curscript;
***************
*** 2346,2352 ****
  						   current_menu->silent[idx]);
  				}
  			    }
! #endif /* FEAT_GUI */
  			    continue;	/* try mapping again */
  			}
  
--- 2357,2363 ----
  						   current_menu->silent[idx]);
  				}
  			    }
! #endif /* FEAT_GUI && FEAT_MENU */
  			    continue;	/* try mapping again */
  			}
  
***************
*** 2862,2872 ****
      undo_off = FALSE;		    /* restart undo now */
  
      /*
!      * first try script file
!      *	If interrupted: Stop reading script files.
       */
      script_char = -1;
!     while (scriptin[curscript] != NULL && script_char < 0)
      {
  	if (got_int || (script_char = getc(scriptin[curscript])) < 0)
  	{
--- 2873,2887 ----
      undo_off = FALSE;		    /* restart undo now */
  
      /*
!      * Get a character from a script file if there is one.
!      * If interrupted: Stop reading script files, close them all.
       */
      script_char = -1;
!     while (scriptin[curscript] != NULL && script_char < 0
! #ifdef FEAT_EVAL
! 	    && !ignore_script
! #endif
! 	    )
      {
  	if (got_int || (script_char = getc(scriptin[curscript])) < 0)
  	{
*** ../vim-7.1.176/src/globals.h	Sat Sep 29 14:15:00 2007
--- src/globals.h	Mon Dec 31 17:00:21 2007
***************
*** 954,959 ****
--- 954,962 ----
  EXTERN int	ex_normal_busy INIT(= 0); /* recursiveness of ex_normal() */
  EXTERN int	ex_normal_lock INIT(= 0); /* forbid use of ex_normal() */
  #endif
+ #ifdef FEAT_EVAL
+ EXTERN int	ignore_script INIT(= FALSE);  /* ignore script input */
+ #endif
  EXTERN int	stop_insert_mode;	/* for ":stopinsert" and 'insertmode' */
  
  EXTERN int	KeyTyped;		/* TRUE if user typed current char */
*** ../vim-7.1.176/src/version.c	Mon Dec 31 16:41:31 2007
--- src/version.c	Tue Jan  1 14:00:09 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     177,
  /**/

-- 
Back up my hard drive?  I can't find the reverse switch!

 /// 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.1.178 ---
To: vim-dev at vim.org
Subject: Patch 7.1.178
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.1.178
Problem:    "%" doesn't work on "/* comment *//* comment */".
Solution:   Don't handle the "//" in "*//*" as a C++ comment. (Markus
	    Heidelberg)
Files:	    src/search.c


*** ../vim-7.1.177/src/search.c	Wed Aug  8 22:48:16 2007
--- src/search.c	Mon Dec 10 21:21:17 2007
***************
*** 2319,2325 ****
  #endif
      while ((p = vim_strchr(p, '/')) != NULL)
      {
! 	if (p[1] == '/')
  	    break;
  	++p;
      }
--- 2319,2327 ----
  #endif
      while ((p = vim_strchr(p, '/')) != NULL)
      {
! 	/* accept a double /, unless it's preceded with * and followed by *,
! 	 * because * / / * is an end and start of a C comment */
! 	if (p[1] == '/' && (p == line || p[-1] != '*' || p[2] != '*'))
  	    break;
  	++p;
      }
*** ../vim-7.1.177/src/version.c	Tue Jan  1 14:16:42 2008
--- src/version.c	Tue Jan  1 15:41:33 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     178,
  /**/

-- 
I'd like to meet the man who invented sex and see what he's working on now.

 /// 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.1.179 ---
To: vim-dev at vim.org
Subject: Patch 7.1.179
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.1.179
Problem:    Need to check for TCL 8.5.
Solution:   Adjust configure script. (Alexey Froloff)
Files:	    src/configure.in, src/auto/configure


*** ../vim-7.1.178/src/configure.in	Sun Nov  4 15:35:23 2007
--- src/configure.in	Sun Dec 30 13:55:28 2007
***************
*** 759,773 ****
  
  if test "$enable_tclinterp" = "yes"; then
  
!   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[420]
    AC_MSG_CHECKING(--with-tclsh argument)
    AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
  	tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
! 	tclsh_name="tclsh8.4"; AC_MSG_RESULT(no))
    AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
    AC_SUBST(vi_cv_path_tcl)
  
!   dnl when no specific version specified, also try 8.2 and 8.0
    if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
      tclsh_name="tclsh8.2"
      AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
--- 759,777 ----
  
  if test "$enable_tclinterp" = "yes"; then
  
!   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
    AC_MSG_CHECKING(--with-tclsh argument)
    AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
  	tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
! 	tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
    AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
    AC_SUBST(vi_cv_path_tcl)
  
!   dnl when no specific version specified, also try 8.4, 8.2 and 8.0
!   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
!     tclsh_name="tclsh8.4"
!     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
!   fi
    if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
      tclsh_name="tclsh8.2"
      AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
***************
*** 810,815 ****
--- 814,820 ----
  	AC_MSG_CHECKING(for location of tclConfig.sh script)
  	if test "x$MACOSX" != "xyes"; then
  	  tclcnf=`echo $tclinc | sed s/include/lib/g`
+ 	  tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
  	else
  	  dnl For Mac OS X 10.3, use the OS-provided framework location
  	  tclcnf="/System/Library/Frameworks/Tcl.framework"
***************
*** 830,835 ****
--- 835,841 ----
  	  AC_MSG_RESULT(<not found>)
  	  AC_MSG_CHECKING(for Tcl library by myself)
  	  tcllib=`echo $tclinc | sed s/include/lib/g`
+ 	  tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
  	  for ext in .so .a ; do
  	    for ver in "" $tclver ; do
  	      for try in $tcllib ; do
*** ../vim-7.1.178/src/auto/configure	Sun Nov  4 15:35:23 2007
--- src/auto/configure	Sun Dec 30 13:55:35 2007
***************
*** 4445,4451 ****
    tclsh_name="$withval"; echo "$as_me:$LINENO: result: $tclsh_name" >&5
  echo "${ECHO_T}$tclsh_name" >&6
  else
!   tclsh_name="tclsh8.4"; echo "$as_me:$LINENO: result: no" >&5
  echo "${ECHO_T}no" >&6
  fi;
    # Extract the first word of "$tclsh_name", so it can be a program name with args.
--- 4445,4451 ----
    tclsh_name="$withval"; echo "$as_me:$LINENO: result: $tclsh_name" >&5
  echo "${ECHO_T}$tclsh_name" >&6
  else
!   tclsh_name="tclsh8.5"; echo "$as_me:$LINENO: result: no" >&5
  echo "${ECHO_T}no" >&6
  fi;
    # Extract the first word of "$tclsh_name", so it can be a program name with args.
***************
*** 4489,4495 ****
  
  
  
!     if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
      tclsh_name="tclsh8.2"
      # Extract the first word of "$tclsh_name", so it can be a program name with args.
  set dummy $tclsh_name; ac_word=$2
--- 4489,4537 ----
  
  
  
!     if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
!     tclsh_name="tclsh8.4"
!     # Extract the first word of "$tclsh_name", so it can be a program name with args.
! set dummy $tclsh_name; ac_word=$2
! echo "$as_me:$LINENO: checking for $ac_word" >&5
! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
! if test "${ac_cv_path_vi_cv_path_tcl+set}" = set; then
!   echo $ECHO_N "(cached) $ECHO_C" >&6
! else
!   case $vi_cv_path_tcl in
!   [\\/]* | ?:[\\/]*)
!   ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path.
!   ;;
!   *)
!   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
! for as_dir in $PATH
! do
!   IFS=$as_save_IFS
!   test -z "$as_dir" && as_dir=.
!   for ac_exec_ext in '' $ac_executable_extensions; do
!   if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
!     ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext"
!     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
!     break 2
!   fi
! done
! done
! 
!   ;;
! esac
! fi
! vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl
! 
! if test -n "$vi_cv_path_tcl"; then
!   echo "$as_me:$LINENO: result: $vi_cv_path_tcl" >&5
! echo "${ECHO_T}$vi_cv_path_tcl" >&6
! else
!   echo "$as_me:$LINENO: result: no" >&5
! echo "${ECHO_T}no" >&6
! fi
! 
!   fi
!   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
      tclsh_name="tclsh8.2"
      # Extract the first word of "$tclsh_name", so it can be a program name with args.
  set dummy $tclsh_name; ac_word=$2
***************
*** 4649,4654 ****
--- 4691,4697 ----
  echo $ECHO_N "checking for location of tclConfig.sh script... $ECHO_C" >&6
  	if test "x$MACOSX" != "xyes"; then
  	  tclcnf=`echo $tclinc | sed s/include/lib/g`
+ 	  tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
  	else
  	  	  tclcnf="/System/Library/Frameworks/Tcl.framework"
  	fi
***************
*** 4668,4673 ****
--- 4711,4717 ----
  	  echo "$as_me:$LINENO: checking for Tcl library by myself" >&5
  echo $ECHO_N "checking for Tcl library by myself... $ECHO_C" >&6
  	  tcllib=`echo $tclinc | sed s/include/lib/g`
+ 	  tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
  	  for ext in .so .a ; do
  	    for ver in "" $tclver ; do
  	      for try in $tcllib ; do
*** ../vim-7.1.178/src/version.c	Tue Jan  1 15:42:45 2008
--- src/version.c	Tue Jan  1 16:24:07 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     179,
  /**/

-- 
Just think of all the things we haven't thought of yet.

 /// 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.1.180 ---
To: vim-dev at vim.org
Subject: Patch 7.1.180
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.1.180
Problem:    Regexp patterns not tested sufficiently.
Solution:   Add more checks to the regexp test.
Files:	    src/testdir/test64.in, src/testdir/test64.ok


*** ../vim-7.1.179/src/testdir/test64.in	Tue Sep 25 17:54:41 2007
--- src/testdir/test64.in	Mon Dec 31 14:20:23 2007
***************
*** 14,23 ****
--- 14,136 ----
  :"    etc.
  :"  When there is no match use only the first two items.
  :let tl = []
+ :call add(tl, ['ab', 'aab', 'ab'])
  :call add(tl, ['b', 'abcdef', 'b'])
  :call add(tl, ['bc*', 'abccccdef', 'bcccc'])
  :call add(tl, ['bc\{-}', 'abccccdef', 'b'])
  :call add(tl, ['bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
+ :call add(tl, ['bc*', 'abbdef', 'b'])
+ :call add(tl, ['c*', 'ccc', 'ccc'])
+ :call add(tl, ['bc*', 'abdef', 'b'])
+ :call add(tl, ['c*', 'abdef', ''])
+ :call add(tl, ['bc\+', 'abccccdef', 'bcccc'])
+ :call add(tl, ['bc\+', 'abdef']) "no match
+ :"
+ :"operator \|
+ :call add(tl, ['a\|ab', 'cabd', 'a']) "alternation is ordered
+ :"
+ :call add(tl, ['c\?', 'ccb', 'c'])
+ :call add(tl, ['bc\?', 'abd', 'b'])
+ :call add(tl, ['bc\?', 'abccd', 'bc'])
+ :"
+ :call add(tl, ['\va{1}', 'ab', 'a'])
+ :"
+ :call add(tl, ['\va{2}', 'aa', 'aa'])
+ :call add(tl, ['\va{2}', 'caad', 'aa'])
+ :call add(tl, ['\va{2}', 'aba'])
+ :call add(tl, ['\va{2}', 'ab'])
+ :call add(tl, ['\va{2}', 'abaa', 'aa'])
+ :call add(tl, ['\va{2}', 'aaa', 'aa'])
+ :"
+ :call add(tl, ['\vb{1}', 'abca', 'b'])
+ :call add(tl, ['\vba{2}', 'abaa', 'baa'])
+ :call add(tl, ['\vba{3}', 'aabaac'])
+ :"
+ :call add(tl, ['\v(ab){1}', 'ab', 'ab', 'ab'])
+ :call add(tl, ['\v(ab){1}', 'dabc', 'ab', 'ab'])
+ :call add(tl, ['\v(ab){1}', 'acb'])
+ :"
+ :call add(tl, ['\v(ab){0,2}', 'acb', "", ""])
+ :call add(tl, ['\v(ab){0,2}', 'ab', 'ab', 'ab'])
+ :call add(tl, ['\v(ab){1,2}', 'ab', 'ab', 'ab'])
+ :call add(tl, ['\v(ab){1,2}', 'ababc', 'abab', 'ab'])
+ :call add(tl, ['\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
+ :call add(tl, ['\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
+ :"
+ :call add(tl, ['\v(ab){2}', 'abab', 'abab', 'ab'])
+ :call add(tl, ['\v(ab){2}', 'cdababe', 'abab', 'ab'])
+ :call add(tl, ['\v(ab){2}', 'abac'])
+ :call add(tl, ['\v(ab){2}', 'abacabab', 'abab', 'ab'])
+ :call add(tl, ['\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
+ :call add(tl, ['\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
+ :"
+ :call add(tl, ['\v(a{1}){1}', 'a', 'a', 'a'])
+ :call add(tl, ['\v(a{2}){1}', 'aa', 'aa', 'aa'])
+ :call add(tl, ['\v(a{2}){1}', 'aaac', 'aa', 'aa'])
+ :call add(tl, ['\v(a{2}){1}', 'daaac', 'aa', 'aa'])
+ :call add(tl, ['\v(a{1}){2}', 'daaac', 'aa', 'a'])
+ :call add(tl, ['\v(a{1}){2}', 'aaa', 'aa', 'a'])
+ :call add(tl, ['\v(a{2})+', 'adaac', 'aa', 'aa'])
+ :call add(tl, ['\v(a{2})+', 'aa', 'aa', 'aa'])
+ :call add(tl, ['\v(a{2}){1}', 'aa', 'aa', 'aa'])
+ :call add(tl, ['\v(a{1}){2}', 'aa', 'aa', 'a'])
+ :call add(tl, ['\v(a{1}){1}', 'a', 'a', 'a'])
+ :call add(tl, ['\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
+ :call add(tl, ['\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
+ :"
+ :call add(tl, ['\v(a+){2}', 'dadaac', 'aa', 'a'])
+ :call add(tl, ['\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
+ :"
+ :call add(tl, ['\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
+ :call add(tl, ['\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
+ :call add(tl, ['\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
+ :call add(tl, ['\v(a{1,3}){3}', 'daac'])
+ :call add(tl, ['\v(a{1,2}){2}', 'dac'])
+ :call add(tl, ['\v(a+)+', 'daac', 'aa', 'aa'])
+ :call add(tl, ['\v(a+)+', 'aaa', 'aaa', 'aaa'])
+ :call add(tl, ['\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
+ :call add(tl, ['\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
+ :call add(tl, ['\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
+ :call add(tl, ['\v(a|b|c)+', 'aacb', 'aacb', 'b'])
+ :call add(tl, ['\v(a|b|c){2}', 'abcb', 'ab', 'b'])
+ :call add(tl, ['\v(abc){2}', 'abcabd', ])
+ :call add(tl, ['\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
+ :"
+ :call add(tl, ['a*', 'cc', ''])
+ :call add(tl, ['\v(a*)+', 'cc', ''])
+ :call add(tl, ['\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
+ :call add(tl, ['\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
+ :call add(tl, ['\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
+ :call add(tl, ['\v(a{0,2})+', 'cc', ''])
+ :call add(tl, ['\v(a*)+', '', ''])
+ :call add(tl, ['\v((a*)+)+', '', ''])
+ :call add(tl, ['\v((ab)*)+', '', ''])
+ :call add(tl, ['\va{1,3}', 'aab', 'aa'])
+ :call add(tl, ['\va{2,3}', 'abaa', 'aa'])
+ :"
+ :call add(tl, ['\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
+ :call add(tl, ['\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
+ :call add(tl, ['\va{2}|b{2}', 'abab'])
+ :call add(tl, ['\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
+ :call add(tl, ['\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
+ :call add(tl, ['\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
+ :call add(tl, ['\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
+ :call add(tl, ['\va(bc){2}d', 'aabcbfbc' ])
+ :call add(tl, ['\va*a{2}', 'a', ])
+ :call add(tl, ['\va*a{2}', 'aa', 'aa' ])
+ :call add(tl, ['\va*a{2}', 'aaa', 'aaa' ])
+ :call add(tl, ['\va*a{2}', 'bbbabcc', ])
+ :call add(tl, ['\va*b*|a*c*', 'a', 'a'])
+ :call add(tl, ['\va{1}b{1}|a{1}b{1}', ''])
+ :"
+ :"submatches
+ :call add(tl, ['\v(a)', 'ab', 'a', 'a'])
+ :call add(tl, ['\v(a)(b)', 'ab', 'ab', 'a', 'b'])
+ :call add(tl, ['\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
+ :call add(tl, ['\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
+ :call add(tl, ['\v(a)|(b)', 'ab', 'a', 'a'])
+ :"
+ :call add(tl, ['\v(a*)+', 'aaaa', 'aaaa', ''])
  :call add(tl, ['x', 'abcdef'])
  :"
  :for t in tl
*** ../vim-7.1.179/src/testdir/test64.ok	Tue Aug 14 17:28:14 2007
--- src/testdir/test64.ok	Mon Dec 31 14:20:26 2007
***************
*** 4,6 ****
--- 4,102 ----
  OK
  OK
  OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
+ OK
*** ../vim-7.1.179/src/version.c	Tue Jan  1 16:25:33 2008
--- src/version.c	Tue Jan  1 17:34:32 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     180,
  /**/

-- 
CONCORDE: Message for you, sir.
   He falls forward revealing the arrow with the note.
                 "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.1.181 ---
To: vim-dev at vim.org
Subject: Patch 7.1.181
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.1.181
Problem:    Accessing uninitialized memory in Farsi mode. (Dominuque Pelle)
Solution:   Only invoke lrF_sub() when there is something to do.
Files:	    src/ex_cmds.c


*** ../vim-7.1.180/src/ex_cmds.c	Sun Dec  9 19:37:37 2007
--- src/ex_cmds.c	Mon Dec 31 17:29:25 2007
***************
*** 4212,4222 ****
  	sub_nlines = 0;
      }
  
- #ifdef FEAT_FKMAP	/* reverse the flow of the Farsi characters */
-     if (p_altkeymap && curwin->w_p_rl)
- 	lrF_sub(cmd);
- #endif
- 
      if (eap->cmdidx == CMD_tilde)
  	which_pat = RE_LAST;	/* use last used regexp */
      else
--- 4212,4217 ----
***************
*** 4252,4257 ****
--- 4247,4256 ----
  	}
  	else		/* find the end of the regexp */
  	{
+ #ifdef FEAT_FKMAP	/* reverse the flow of the Farsi characters */
+ 	    if (p_altkeymap && curwin->w_p_rl)
+ 		lrF_sub(cmd);
+ #endif
  	    which_pat = RE_LAST;	    /* use last used regexp */
  	    delimiter = *cmd++;		    /* remember delimiter character */
  	    pat = cmd;			    /* remember start of search pat */
*** ../vim-7.1.180/src/version.c	Tue Jan  1 17:37:01 2008
--- src/version.c	Wed Jan  2 13:57:31 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     181,
  /**/

-- 
Yah, well, we had to carve our electrons out of driftwood we'd
find.  In the winter.  Uphill.  Both ways.

 /// 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.1.182 ---
To: vim-dev at vim.org
Subject: Patch 7.1.182
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.1.182
Problem:    When using tab pages and an argument list the session file may
	    contain wrong "next" commands. (Alexander Bluem)
Solution:   Use "argu" commands and only when needed.
Files:	    src/ex_docmd.c


*** ../vim-7.1.181/src/ex_docmd.c	Sun Dec  9 19:37:37 2007
--- src/ex_docmd.c	Mon Dec 31 18:24:16 2007
***************
*** 372,378 ****
  static char_u	*arg_all __ARGS((void));
  #ifdef FEAT_SESSION
  static int	makeopens __ARGS((FILE *fd, char_u *dirnow));
! static int	put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp));
  static void	ex_loadview __ARGS((exarg_T *eap));
  static char_u	*get_view_file __ARGS((int c));
  static int	did_lcd;	/* whether ":lcd" was produced for a session */
--- 372,378 ----
  static char_u	*arg_all __ARGS((void));
  #ifdef FEAT_SESSION
  static int	makeopens __ARGS((FILE *fd, char_u *dirnow));
! static int	put_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp, int current_arg_idx));
  static void	ex_loadview __ARGS((exarg_T *eap));
  static char_u	*get_view_file __ARGS((int c));
  static int	did_lcd;	/* whether ":lcd" was produced for a session */
***************
*** 8762,8768 ****
  	    }
  	    else
  	    {
! 		failed |= (put_view(fd, curwin, !using_vdir, flagp) == FAIL);
  	    }
  	    if (put_line(fd, "let &so = s:so_save | let &siso = s:siso_save")
  								      == FAIL)
--- 8762,8769 ----
  	    }
  	    else
  	    {
! 		failed |= (put_view(fd, curwin, !using_vdir, flagp,
! 								 -1) == FAIL);
  	    }
  	    if (put_line(fd, "let &so = s:so_save | let &siso = s:siso_save")
  								      == FAIL)
***************
*** 9761,9766 ****
--- 9762,9769 ----
      int		tabnr;
      win_T	*tab_firstwin;
      frame_T	*tab_topframe;
+     int		cur_arg_idx = 0;
+     int		next_arg_idx;
  
      if (ssop_flags & SSOP_BUFFERS)
  	only_save_windows = FALSE;		/* Save ALL buffers */
***************
*** 9976,9987 ****
  	{
  	    if (!ses_do_win(wp))
  		continue;
! 	    if (put_view(fd, wp, wp != edited_win, &ssop_flags) == FAIL)
  		return FAIL;
  	    if (nr > 1 && put_line(fd, "wincmd w") == FAIL)
  		return FAIL;
  	}
  
  	/*
  	 * Restore cursor to the current window if it's not the first one.
  	 */
--- 9979,9997 ----
  	{
  	    if (!ses_do_win(wp))
  		continue;
! 	    if (put_view(fd, wp, wp != edited_win, &ssop_flags,
! 							 cur_arg_idx) == FAIL)
  		return FAIL;
  	    if (nr > 1 && put_line(fd, "wincmd w") == FAIL)
  		return FAIL;
+ 	    next_arg_idx = wp->w_arg_idx;
  	}
  
+ 	/* The argument index in the first tab page is zero, need to set it in
+ 	 * each window.  For further tab pages it's the window where we do
+ 	 * "tabedit". */
+ 	cur_arg_idx = next_arg_idx;
+ 
  	/*
  	 * Restore cursor to the current window if it's not the first one.
  	 */
***************
*** 10190,10200 ****
   * Caller must make sure 'scrolloff' is zero.
   */
      static int
! put_view(fd, wp, add_edit, flagp)
      FILE	*fd;
      win_T	*wp;
      int		add_edit;	/* add ":edit" command to view */
      unsigned	*flagp;		/* vop_flags or ssop_flags */
  {
      win_T	*save_curwin;
      int		f;
--- 10200,10212 ----
   * Caller must make sure 'scrolloff' is zero.
   */
      static int
! put_view(fd, wp, add_edit, flagp, current_arg_idx)
      FILE	*fd;
      win_T	*wp;
      int		add_edit;	/* add ":edit" command to view */
      unsigned	*flagp;		/* vop_flags or ssop_flags */
+     int		current_arg_idx; /* current argument index of the window, use
+ 				  * -1 if unknown */
  {
      win_T	*save_curwin;
      int		f;
***************
*** 10224,10233 ****
  
      /* Only when part of a session: restore the argument index.  Some
       * arguments may have been deleted, check if the index is valid. */
!     if (wp->w_arg_idx != 0 && wp->w_arg_idx <= WARGCOUNT(wp)
  						      && flagp == &ssop_flags)
      {
! 	if (fprintf(fd, "%ldnext", (long)wp->w_arg_idx) < 0
  		|| put_eol(fd) == FAIL)
  	    return FAIL;
  	did_next = TRUE;
--- 10236,10245 ----
  
      /* Only when part of a session: restore the argument index.  Some
       * arguments may have been deleted, check if the index is valid. */
!     if (wp->w_arg_idx != current_arg_idx && wp->w_arg_idx <= WARGCOUNT(wp)
  						      && flagp == &ssop_flags)
      {
! 	if (fprintf(fd, "%ldargu", (long)wp->w_arg_idx + 1) < 0
  		|| put_eol(fd) == FAIL)
  	    return FAIL;
  	did_next = TRUE;
*** ../vim-7.1.181/src/version.c	Wed Jan  2 13:58:17 2008
--- src/version.c	Wed Jan  2 15:10:01 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     182,
  /**/

-- 
You were lucky. We lived for three months in a brown paper bag in a 
septic tank. We used to have to get up at six o'clock in the morning, 
clean the bag, eat a crust of stale bread, go to work down mill for 
fourteen hours a day week in-week out. When we got home, our Dad
would thrash us to sleep with his belt!

 /// 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.1.183 ---
To: vim-dev at vim.org
Subject: Patch 7.1.183
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.1.183
Problem:    "Internal error" for ":echo matchstr('a', 'a\%[\&]')" (Mitanu
	    Paul)
Solution:   Inside "\%[]" detect \&, \| and \) as an error.
Files:	    src/regexp.c


*** ../vim-7.1.182/src/regexp.c	Sun Dec  9 19:25:35 2007
--- src/regexp.c	Wed Jan  2 15:02:37 2008
***************
*** 1288,1295 ****
  }
  
  /*
!  * regbranch - one alternative of an | operator
!  *
   * Implements the & operator.
   */
      static char_u *
--- 1288,1294 ----
  }
  
  /*
!  * Handle one alternative of an | operator.
   * Implements the & operator.
   */
      static char_u *
***************
*** 1330,1337 ****
  }
  
  /*
!  * regbranch - one alternative of an | or & operator
!  *
   * Implements the concatenation operator.
   */
      static char_u *
--- 1329,1335 ----
  }
  
  /*
!  * Handle one alternative of an | or & operator.
   * Implements the concatenation operator.
   */
      static char_u *
***************
*** 1708,1713 ****
--- 1706,1713 ----
        case Magic('|'):
        case Magic('&'):
        case Magic(')'):
+ 	if (one_exactly)
+ 	    EMSG_ONE_RET_NULL;
  	EMSG_RET_NULL(_(e_internal));	/* Supposed to be caught earlier. */
  	/* NOTREACHED */
  
***************
*** 3106,3112 ****
   * slow, we keep one allocated piece of memory and only re-allocate it when
   * it's too small.  It's freed in vim_regexec_both() when finished.
   */
! static char_u	*reg_tofree;
  static unsigned	reg_tofreelen;
  
  /*
--- 3106,3112 ----
   * slow, we keep one allocated piece of memory and only re-allocate it when
   * it's too small.  It's freed in vim_regexec_both() when finished.
   */
! static char_u	*reg_tofree = NULL;
  static unsigned	reg_tofreelen;
  
  /*
*** ../vim-7.1.182/src/version.c	Wed Jan  2 15:12:29 2008
--- src/version.c	Wed Jan  2 15:33:52 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     183,
  /**/

-- 
Not too long ago, unzipping in public was illegal...

 /// 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.1.184 ---
To: vim-dev at vim.org
Subject: Patch 7.1.184
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.1.184
Problem:    Crash when deleting backwards over a line break in Insert mode.
Solution:   Don't advance the cursor when it's already on the NUL after a
	    line. (Matthew Wozniski)
Files:	    src/normal.c


*** ../vim-7.1.183/src/normal.c	Sun Oct 14 17:15:45 2007
--- src/normal.c	Tue Jan  1 16:40:24 2008
***************
*** 5849,5860 ****
  		/* When the NL before the first char has to be deleted we
  		 * put the cursor on the NUL after the previous line.
  		 * This is a very special case, be careful!
! 		 * don't adjust op_end now, otherwise it won't work */
  		if (	   (cap->oap->op_type == OP_DELETE
  			    || cap->oap->op_type == OP_CHANGE)
  			&& !lineempty(curwin->w_cursor.lnum))
  		{
! 		    ++curwin->w_cursor.col;
  		    cap->retval |= CA_NO_ADJ_OP_END;
  		}
  		continue;
--- 5849,5861 ----
  		/* When the NL before the first char has to be deleted we
  		 * put the cursor on the NUL after the previous line.
  		 * This is a very special case, be careful!
! 		 * Don't adjust op_end now, otherwise it won't work. */
  		if (	   (cap->oap->op_type == OP_DELETE
  			    || cap->oap->op_type == OP_CHANGE)
  			&& !lineempty(curwin->w_cursor.lnum))
  		{
! 		    if (*ml_get_cursor() != NUL)
! 			++curwin->w_cursor.col;
  		    cap->retval |= CA_NO_ADJ_OP_END;
  		}
  		continue;
*** ../vim-7.1.183/src/version.c	Wed Jan  2 15:34:48 2008
--- src/version.c	Wed Jan  2 16:24:19 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     184,
  /**/

-- 
Not too long ago, cut and paste was done with scissors and glue...

 /// 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.1.185 ---
To: vim-dev at vim.org
Subject: Patch 7.1.185
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.1.185
Problem:    Using "gR" with a multi-byte encoding and typing a CR pushes
	    characters onto the replace stack incorrectly, resulting in BS
	    putting back the wrong characters. (Paul B. Mahol)
Solution:   Push multi-byte characters onto the replace stack in reverse byte
	    order.  Add replace_push_mb().
Files:	    src/edit.c, src/misc1.c, src/proto/edit.pro


*** ../vim-7.1.184/src/edit.c	Sun Dec  9 20:25:59 2007
--- src/edit.c	Tue Jan  1 17:28:07 2008
***************
*** 6939,6944 ****
--- 6939,6963 ----
      ++replace_stack_nr;
  }
  
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+  * Push a character onto the replace stack.  Handles a multi-byte character in
+  * reverse byte order, so that the first byte is popped off first.
+  * Return the number of bytes done (includes composing characters).
+  */
+     int
+ replace_push_mb(p)
+     char_u *p;
+ {
+     int l = (*mb_ptr2len)(p);
+     int j;
+ 
+     for (j = l - 1; j >= 0; --j)
+ 	replace_push(p[j]);
+     return l;
+ }
+ #endif
+ 
  #if 0
  /*
   * call replace_push(c) with replace_offset set to the first NUL.
*** ../vim-7.1.184/src/misc1.c	Wed Sep 26 22:35:06 2007
--- src/misc1.c	Wed Jan  2 17:48:00 2008
***************
*** 591,597 ****
  	replace_push(NUL);
  	p = saved_line + curwin->w_cursor.col;
  	while (*p != NUL)
! 	    replace_push(*p++);
  	saved_line[curwin->w_cursor.col] = NUL;
      }
  #endif
--- 592,605 ----
  	replace_push(NUL);
  	p = saved_line + curwin->w_cursor.col;
  	while (*p != NUL)
! 	{
! #ifdef FEAT_MBYTE
! 	    if (has_mbyte)
! 		p += replace_push_mb(p);
! 	    else
! #endif
! 		replace_push(*p++);
! 	}
  	saved_line[curwin->w_cursor.col] = NUL;
      }
  #endif
***************
*** 1914,1920 ****
      int		charlen;
  {
      int		c = buf[0];
-     int		l, j;
  #endif
      int		newlen;		/* nr of bytes inserted */
      int		oldlen;		/* nr of bytes deleted (0 when not replacing) */
--- 1922,1927 ----
***************
*** 2016,2028 ****
  	for (i = 0; i < oldlen; ++i)
  	{
  #ifdef FEAT_MBYTE
! 	    l = (*mb_ptr2len)(oldp + col + i) - 1;
! 	    for (j = l; j >= 0; --j)
! 		replace_push(oldp[col + i + j]);
! 	    i += l;
! #else
! 	    replace_push(oldp[col + i]);
  #endif
  	}
      }
  
--- 2023,2033 ----
  	for (i = 0; i < oldlen; ++i)
  	{
  #ifdef FEAT_MBYTE
! 	    if (has_mbyte)
! 		i += replace_push_mb(oldp + col + i) - 1;
! 	    else
  #endif
+ 		replace_push(oldp[col + i]);
  	}
      }
  
*** ../vim-7.1.184/src/proto/edit.pro	Sat May  5 20:21:34 2007
--- src/proto/edit.pro	Tue Jan  1 17:21:24 2008
***************
*** 32,37 ****
--- 32,38 ----
  char_u *get_last_insert __ARGS((void));
  char_u *get_last_insert_save __ARGS((void));
  void replace_push __ARGS((int c));
+ int replace_push_mb __ARGS((char_u *p));
  void fixthisline __ARGS((int (*get_the_indent)(void)));
  void fix_indent __ARGS((void));
  int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
*** ../vim-7.1.184/src/version.c	Wed Jan  2 16:25:20 2008
--- src/version.c	Wed Jan  2 17:45:10 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     185,
  /**/

-- 
Not too long ago, a keyboard was something to make music with...

 /// 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.1.186 ---
To: vim-dev at vim.org
Subject: Patch 7.1.186
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.1.186
Problem:    "expand('<afile>')" returns a bogus value after changing
	    directory. (Dave Fishburn)
Solution:   Copy "autocmd_fname" to allocated memory and expand to full
	    filename.  Shorten the path when expanding <afile>.
Files:	    src/ex_docmd.c, src/fileio.c


*** ../vim-7.1.185/src/ex_docmd.c	Wed Jan  2 15:12:29 2008
--- src/ex_docmd.c	Wed Jan  2 20:12:33 2008
***************
*** 7799,7804 ****
--- 7799,7805 ----
  free_cd_dir()
  {
      vim_free(prev_dir);
+     prev_dir = NULL;
  }
  #endif
  
***************
*** 9521,9526 ****
--- 9522,9528 ----
  		    *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"<afile>\"");
  		    return NULL;
  		}
+ 		result = shorten_fname1(result);
  		break;
  
  	case SPEC_ABUF:		/* buffer number for autocommand */
*** ../vim-7.1.185/src/fileio.c	Thu Nov  8 20:47:34 2007
--- src/fileio.c	Wed Jan  2 20:21:43 2008
***************
*** 5556,5562 ****
  #endif
  
  #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \
!     defined(FEAT_QUICKFIX) || defined(PROTO)
  /*
   * Try to find a shortname by comparing the fullname with the current
   * directory.
--- 5556,5562 ----
  #endif
  
  #if defined(FEAT_VIMINFO) || defined(FEAT_BROWSE) || \
!     defined(FEAT_QUICKFIX) || defined(FEAT_AUTOCMD) || defined(PROTO)
  /*
   * Try to find a shortname by comparing the fullname with the current
   * directory.
***************
*** 8546,8551 ****
--- 8546,8553 ----
  
      /*
       * Set the file name to be used for <afile>.
+      * Make a copy to avoid that changing a buffer name or directory makes it
+      * invalid.
       */
      if (fname_io == NULL)
      {
***************
*** 8558,8563 ****
--- 8560,8567 ----
      }
      else
  	autocmd_fname = fname_io;
+     if (autocmd_fname != NULL)
+ 	autocmd_fname = FullName_save(autocmd_fname, FALSE);
  
      /*
       * Set the buffer number to be used for <abuf>.
***************
*** 8740,8745 ****
--- 8744,8750 ----
      vim_free(sourcing_name);
      sourcing_name = save_sourcing_name;
      sourcing_lnum = save_sourcing_lnum;
+     vim_free(autocmd_fname);
      autocmd_fname = save_autocmd_fname;
      autocmd_bufnr = save_autocmd_bufnr;
      autocmd_match = save_autocmd_match;
*** ../vim-7.1.185/src/version.c	Wed Jan  2 17:48:24 2008
--- src/version.c	Wed Jan  2 21:06:35 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     186,
  /**/

-- 
   LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and
   hacks him to the floor.  Blood.  Swashbuckling music (perhaps).
   LAUNCELOT races through into the castle screaming.
SECOND SENTRY: Hey!
                 "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.1.187 ---
To: vim-dev at vim.org
Subject: Patch 7.1.187
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.1.187
Problem:    Win32 GUI: Custom completion using system() no longer works
	    after patch 7.1.104. (Erik Falor)
Solution:   Loop when safe_vgetc() returns K_IGNORE.
Files:	    src/ex_getln.c


*** ../vim-7.1.186/src/ex_getln.c	Fri Dec  7 20:28:13 2007
--- src/ex_getln.c	Wed Jan  2 21:42:51 2008
***************
*** 335,341 ****
  	quit_more = FALSE;	/* reset after CTRL-D which had a more-prompt */
  
  	cursorcmd();		/* set the cursor on the right spot */
! 	c = safe_vgetc();
  	if (KeyTyped)
  	{
  	    some_key_typed = TRUE;
--- 335,348 ----
  	quit_more = FALSE;	/* reset after CTRL-D which had a more-prompt */
  
  	cursorcmd();		/* set the cursor on the right spot */
! 
! 	/* Get a character.  Ignore K_IGNORE, it should not do anything, such
! 	 * as stop completion. */
! 	do
! 	{
! 	    c = safe_vgetc();
! 	} while (c == K_IGNORE);
! 
  	if (KeyTyped)
  	{
  	    some_key_typed = TRUE;
***************
*** 1209,1215 ****
  		goto cmdline_not_changed;
  
  	case K_IGNORE:
! 		goto cmdline_not_changed;	/* Ignore mouse */
  
  #ifdef FEAT_GUI_W32
  	    /* On Win32 ignore <M-F4>, we get it when closing the window was
--- 1216,1223 ----
  		goto cmdline_not_changed;
  
  	case K_IGNORE:
! 		/* Ignore mouse event or ex_window() result. */
! 		goto cmdline_not_changed;
  
  #ifdef FEAT_GUI_W32
  	    /* On Win32 ignore <M-F4>, we get it when closing the window was
*** ../vim-7.1.186/src/version.c	Wed Jan  2 21:07:32 2008
--- src/version.c	Wed Jan  2 21:53:24 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     187,
  /**/

-- 
FATHER:    Who are you?
PRINCE:    I'm ... your son ...
FATHER:    Not you.
LAUNCELOT: I'm ... er ... Sir Launcelot, sir.
                 "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.1.188 ---
To: vim-dev at vim.org
Subject: Patch 7.1.188
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.1.188
Problem:    When 'showmode' is off the message for changing a readonly file is
	    given in the second column instead of the first.  (Payl B.  Mahol)
Solution:   Put the W10 message in the first column.
Files:	    src/edit.c


*** ../vim-7.1.187/src/edit.c	Wed Jan  2 17:48:24 2008
--- src/edit.c	Wed Jan  2 20:56:46 2008
***************
*** 550,556 ****
  	i = showmode();
  
      if (!p_im && did_restart_edit == 0)
! 	change_warning(i + 1);
  
  #ifdef CURSOR_SHAPE
      ui_cursor_shape();		/* may show different cursor shape */
--- 550,556 ----
  	i = showmode();
  
      if (!p_im && did_restart_edit == 0)
! 	change_warning(i == 0 ? 0 : i + 1);
  
  #ifdef CURSOR_SHAPE
      ui_cursor_shape();		/* may show different cursor shape */
*** ../vim-7.1.187/src/version.c	Wed Jan  2 21:54:33 2008
--- src/version.c	Wed Jan  2 22:06:19 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     188,
  /**/

-- 
PRINCE:    He's come to rescue me, father.
LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ...
                 "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.1.189 ---
To: vim-dev at vim.org
Subject: Patch 7.1.189
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.1.189 (after 7.1.104)
Problem:    Patch 7.1.104 was incomplete.
Solution:   Also call plain_vgetc() in ask_yesno().
Files:	    src/misc1.c


*** ../vim-7.1.188/src/misc1.c	Wed Jan  2 17:48:24 2008
--- src/misc1.c	Wed Jan  2 17:48:00 2008
***************
*** 222,231 ****
  	    *s++ = *p++;
  	    orig_char_len--;
  	}
  	/* Skip over any additional white space (useful when newindent is less
  	 * than old) */
  	while (vim_iswhite(*p))
! 	    (void)*p++;
  
      }
      else
--- 222,232 ----
  	    *s++ = *p++;
  	    orig_char_len--;
  	}
+ 
  	/* Skip over any additional white space (useful when newindent is less
  	 * than old) */
  	while (vim_iswhite(*p))
! 	    ++p;
  
      }
      else
***************
*** 3024,3030 ****
  	if (direct)
  	    r = get_keystroke();
  	else
! 	    r = safe_vgetc();
  	if (r == Ctrl_C || r == ESC)
  	    r = 'n';
  	msg_putchar(r);	    /* show what you typed */
--- 3025,3031 ----
  	if (direct)
  	    r = get_keystroke();
  	else
! 	    r = plain_vgetc();
  	if (r == Ctrl_C || r == ESC)
  	    r = 'n';
  	msg_putchar(r);	    /* show what you typed */
*** ../vim-7.1.188/src/version.c	Wed Jan  2 22:08:43 2008
--- src/version.c	Thu Jan  3 12:40:31 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     189,
  /**/

-- 
Q: How does a UNIX Guru do Sex ?
A: unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

 /// 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.1.190 ---
To: vim-dev at vim.org
Subject: Patch 7.1.190
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.1.190
Problem:    Cursor after end-of-line: "iA sentence.<Esc>)"
Solution:   Move cursor back and make motion inclusive.
Files:	    src/normal.c


*** ../vim-7.1.189/src/normal.c	Wed Jan  2 16:25:20 2008
--- src/normal.c	Wed Jan  2 22:04:38 2008
***************
*** 6564,6569 ****
--- 6564,6575 ----
  	clearopbeep(cap->oap);
      else
      {
+ 	/* Don't leave the cursor on the NUL past a line */
+ 	if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL)
+ 	{
+ 	    --curwin->w_cursor.col;
+ 	    cap->oap->inclusive = TRUE;
+ 	}
  #ifdef FEAT_VIRTUALEDIT
  	curwin->w_cursor.coladd = 0;
  #endif
*** ../vim-7.1.189/src/version.c	Thu Jan  3 12:42:39 2008
--- src/version.c	Thu Jan  3 13:19:03 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     190,
  /**/

-- 
    [clop clop]
GUARD #1:  Halt!  Who goes there?
ARTHUR:    It is I, Arthur, son of Uther Pendragon, from the castle of
           Camelot.  King of the Britons, defeator of the Saxons, sovereign of
           all England!
GUARD #1:  Pull the other one!
                                  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.1.191 ---
To: vim-dev at vim.org
Subject: Patch 7.1.191
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.1.191
Problem:    Win32 GUI: after patch 7.1.168 there is still a problem when
	    clicking in a scrollbar. (Juergen Jottkaerr)
Solution:   Don't check the input buffer when dragging the scrollbar.
Files:	    src/gui.c


*** ../vim-7.1.190/src/gui.c	Tue Nov  6 22:26:39 2007
--- src/gui.c	Thu Jan  3 13:16:29 2008
***************
*** 3734,3741 ****
      sb->value = value;
  
  #ifdef USE_ON_FLY_SCROLL
!     /* When not allowed to do the scrolling right now, return. */
!     if (dont_scroll || input_available())
  	return;
  #endif
  #ifdef FEAT_INS_EXPAND
--- 3734,3743 ----
      sb->value = value;
  
  #ifdef USE_ON_FLY_SCROLL
!     /* When not allowed to do the scrolling right now, return.
!      * This also checked input_available(), but that causes the first click in
!      * a scrollbar to be ignored when Vim doesn't have focus. */
!     if (dont_scroll)
  	return;
  #endif
  #ifdef FEAT_INS_EXPAND
*** ../vim-7.1.190/src/version.c	Thu Jan  3 13:19:50 2008
--- src/version.c	Thu Jan  3 16:13:23 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     191,
  /**/

-- 
GUARD #1:  What -- a swallow carrying a coconut?
ARTHUR:    It could grip it by the husk!
GUARD #1:  It's not a question of where he grips it!  It's a simple question
           of weight ratios!  A five ounce bird could not carry a 1 pound
           coconut.
                                  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.1.192 ---
To: vim-dev at vim.org
Subject: Patch 7.1.192
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.1.192
Problem:    With Visual block selection, "s" and typing something, CTRL-C
	    doesn't stop Vim from repeating the replacement in other lines,
	    like happens for "I".
Solution:   Check for "got_int" to be set.
Files:	    src/ops.c


*** ../vim-7.1.191/src/ops.c	Sat Dec  1 21:12:23 2007
--- src/ops.c	Thu Jan  3 16:26:37 2008
***************
*** 2468,2476 ****
  
      edit(NUL, FALSE, (linenr_T)count1);
  
!     /* if user has moved off this line, we don't know what to do, so do
!      * nothing */
!     if (curwin->w_cursor.lnum != oap->start.lnum)
  	return;
  
      if (oap->block_mode)
--- 2468,2477 ----
  
      edit(NUL, FALSE, (linenr_T)count1);
  
!     /* If user has moved off this line, we don't know what to do, so do
!      * nothing.
!      * Also don't repeat the insert when Insert mode ended with CTRL-C. */
!     if (curwin->w_cursor.lnum != oap->start.lnum || got_int)
  	return;
  
      if (oap->block_mode)
***************
*** 2601,2608 ****
      /*
       * In Visual block mode, handle copying the new text to all lines of the
       * block.
       */
!     if (oap->block_mode && oap->start.lnum != oap->end.lnum)
      {
  	/* Auto-indenting may have changed the indent.  If the cursor was past
  	 * the indent, exclude that indent change from the inserted text. */
--- 2602,2610 ----
      /*
       * In Visual block mode, handle copying the new text to all lines of the
       * block.
+      * Don't repeat the insert when Insert mode ended with CTRL-C.
       */
!     if (oap->block_mode && oap->start.lnum != oap->end.lnum && !got_int)
      {
  	/* Auto-indenting may have changed the indent.  If the cursor was past
  	 * the indent, exclude that indent change from the inserted text. */
*** ../vim-7.1.191/src/version.c	Thu Jan  3 16:14:25 2008
--- src/version.c	Thu Jan  3 16:30:07 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     192,
  /**/

-- 
"A mouse can be just as dangerous as a bullet or a bomb."
             (US Representative Lamar Smith, R-Texas)

 /// 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.1.193 ---
To: vim-dev at vim.org
Subject: Patch 7.1.193
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.1.193
Problem:    Some Vim 5.x digraphs are missing in Vim 7, even though the
	    character pairs are not used. (Philippe de Muyter)
Solution:   Add those Vim 5.x digraphs that don't conflict with others.
Files:	    src/digraph.c


*** ../vim-7.1.192/src/digraph.c	Thu Sep 13 18:25:08 2007
--- src/digraph.c	Thu Jan  3 17:48:47 2008
***************
*** 1978,1983 ****
--- 1978,2038 ----
  	{'f', 't', 0xfb05},
  	{'s', 't', 0xfb06},
  #      endif /* FEAT_MBYTE */
+ 
+ 	/* Vim 5.x compatible digraphs that don't conflict with the above */
+ 	{'~', '!', 161},	/* ¡ */
+ 	{'c', '|', 162},	/* ¢ */
+ 	{'$', '$', 163},	/* £ */
+ 	{'o', 'x', 164},	/* ¤ - currency symbol in ISO 8859-1 */
+ 	{'Y', '-', 165},	/* ¥ */
+ 	{'|', '|', 166},	/* ¦ */
+ 	{'c', 'O', 169},	/* © */
+ 	{'-', ',', 172},	/* ¬ */
+ 	{'-', '=', 175},	/* ¯ */
+ 	{'~', 'o', 176},	/* ° */
+ 	{'2', '2', 178},	/* ² */
+ 	{'3', '3', 179},	/* ³ */
+ 	{'p', 'p', 182},	/* ¶ */
+ 	{'~', '.', 183},	/* · */
+ 	{'1', '1', 185},	/* ¹ */
+ 	{'~', '?', 191},	/* ¿ */
+ 	{'A', '`', 192},	/* À */
+ 	{'A', '^', 194},	/* Â */
+ 	{'A', '~', 195},	/* Ã */
+ 	{'A', '"', 196},	/* Ä */
+ 	{'A', '@', 197},	/* Å */
+ 	{'E', '`', 200},	/* È */
+ 	{'E', '^', 202},	/* Ê */
+ 	{'E', '"', 203},	/* Ë */
+ 	{'I', '`', 204},	/* Ì */
+ 	{'I', '^', 206},	/* Î */
+ 	{'I', '"', 207},	/* Ï */
+ 	{'N', '~', 209},	/* Ñ */
+ 	{'O', '`', 210},	/* Ò */
+ 	{'O', '^', 212},	/* Ô */
+ 	{'O', '~', 213},	/* Õ */
+ 	{'/', '\\', 215},	/* × - multiplication symbol in ISO 8859-1 */
+ 	{'U', '`', 217},	/* Ù */
+ 	{'U', '^', 219},	/* Û */
+ 	{'I', 'p', 222},	/* Þ */
+ 	{'a', '`', 224},	/* à */
+ 	{'a', '^', 226},	/* â */
+ 	{'a', '~', 227},	/* ã */
+ 	{'a', '"', 228},	/* ä */
+ 	{'a', '@', 229},	/* å */
+ 	{'e', '`', 232},	/* è */
+ 	{'e', '^', 234},	/* ê */
+ 	{'e', '"', 235},	/* ë */
+ 	{'i', '`', 236},	/* ì */
+ 	{'i', '^', 238},	/* î */
+ 	{'n', '~', 241},	/* ñ */
+ 	{'o', '`', 242},	/* ò */
+ 	{'o', '^', 244},	/* ô */
+ 	{'o', '~', 245},	/* õ */
+ 	{'u', '`', 249},	/* ù */
+ 	{'u', '^', 251},	/* û */
+ 	{'y', '"', 255},	/* x XX */
+ 
  	{NUL, NUL, NUL}
         };
  
*** ../vim-7.1.192/src/version.c	Thu Jan  3 16:31:17 2008
--- src/version.c	Thu Jan  3 17:52:51 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     193,
  /**/

-- 
Futility Factor: No experiment is ever a complete failure - it can always
serve as a negative example.

 /// 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.1.194 ---
To: vim-dev at vim.org
Subject: Patch 7.1.194
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.1.194
Problem:    ":echo glob('~/{}')" results in /home/user//.
Solution:   Don't add a slash if there already is one.
Files:	    src/os_unix.c


*** ../vim-7.1.193/src/os_unix.c	Sat Dec  1 17:18:45 2007
--- src/os_unix.c	Thu Jan  3 18:52:22 2008
***************
*** 5482,5488 ****
  	{
  	    STRCPY(p, (*file)[i]);
  	    if (dir)
! 		STRCAT(p, "/");	    /* add '/' to a directory name */
  	    (*file)[j++] = p;
  	}
      }
--- 5482,5488 ----
  	{
  	    STRCPY(p, (*file)[i]);
  	    if (dir)
! 		add_pathsep(p);	    /* add '/' to a directory name */
  	    (*file)[j++] = p;
  	}
      }
*** ../vim-7.1.193/src/version.c	Thu Jan  3 17:53:41 2008
--- src/version.c	Thu Jan  3 18:54:41 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     194,
  /**/

-- 
ARTHUR:    Will you ask your master if he wants to join my court at Camelot?!
GUARD #1:  But then of course African swallows are not migratory.
GUARD #2:  Oh, yeah...
GUARD #1:  So they couldn't bring a coconut back anyway...
                                  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.1.195 ---
To: vim-dev at vim.org
Subject: Patch 7.1.195
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.1.195
Problem:    '0 mark doesn't work for "~/foo ~ foo".
Solution:   Don't expand the whole file name, only "~/".
Files:	    src/mark.c


*** ../vim-7.1.194/src/mark.c	Thu May 10 18:48:03 2007
--- src/mark.c	Thu Jan  3 20:17:29 2008
***************
*** 505,513 ****
      {
  	/*
  	 * First expand "~/" in the file name to the home directory.
! 	 * Try to shorten the file name.
  	 */
! 	expand_env(fm->fname, NameBuff, MAXPATHL);
  	mch_dirname(IObuff, IOSIZE);
  	p = shorten_fname(NameBuff, IObuff);
  
--- 505,528 ----
      {
  	/*
  	 * First expand "~/" in the file name to the home directory.
! 	 * Don't expand the whole name, it may contain other '~' chars.
  	 */
! 	if (fm->fname[0] == '~' && (fm->fname[1] == '/'
! #ifdef BACKSLASH_IN_FILENAME
! 		    || fm->fname[1] == '\\'
! #endif
! 		    ))
! 	{
! 	    int len;
! 
! 	    expand_env((char_u *)"~/", NameBuff, MAXPATHL);
! 	    len = STRLEN(NameBuff);
! 	    vim_strncpy(NameBuff + len, fm->fname + 2, MAXPATHL - len - 1);
! 	}
! 	else
! 	    vim_strncpy(NameBuff, fm->fname, MAXPATHL - 1);
! 
! 	/* Try to shorten the file name. */
  	mch_dirname(IObuff, IOSIZE);
  	p = shorten_fname(NameBuff, IObuff);
  
*** ../vim-7.1.194/src/version.c	Thu Jan  3 18:55:21 2008
--- src/version.c	Thu Jan  3 20:10:16 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     195,
  /**/

-- 
GUARD #2:  Wait a minute -- supposing two swallows carried it together?
GUARD #1:  No, they'd have to have it on a line.
GUARD #2:  Well, simple!  They'd just use a standard creeper!
GUARD #1:  What, held under the dorsal guiding feathers?
GUARD #2:  Well, why not?
                                  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.1.196 ---
To: vim-dev at vim.org
Subject: Patch 7.1.196 (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.1.196 (extra)
Problem:    Win32 GUI: "\n" in a tooltip doesn't cause a line break. (Erik
	    Falor)
Solution:   Use the TTM_SETMAXTIPWIDTH message.
Files:	    src/gui_w32.c


*** ../vim-7.1.195/src/gui_w32.c	Thu Aug 30 12:24:21 2007
--- src/gui_w32.c	Thu Jan  3 13:56:26 2008
***************
*** 987,992 ****
--- 987,997 ----
  			{
  			    LPNMTTDISPINFOW	lpdi = (LPNMTTDISPINFOW)lParam;
  
+ 			    /* Set the maximum width, this also enables using
+ 			     * \n for line break. */
+ 			    SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH,
+ 								      0, 500);
+ 
  			    tt_text = enc_to_ucs2(str, NULL);
  			    lpdi->lpszText = tt_text;
  			    /* can't show tooltip if failed */
***************
*** 996,1001 ****
--- 1001,1011 ----
  			{
  			    LPNMTTDISPINFO	lpdi = (LPNMTTDISPINFO)lParam;
  
+ 			    /* Set the maximum width, this also enables using
+ 			     * \n for line break. */
+ 			    SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH,
+ 								      0, 500);
+ 
  			    if (STRLEN(str) < sizeof(lpdi->szText)
  				    || ((tt_text = vim_strsave(str)) == NULL))
  				vim_strncpy(lpdi->szText, str,
***************
*** 4734,4745 ****
  	    cur_beval->showState = ShS_NEUTRAL;
  	    break;
  	case TTN_GETDISPINFO:
! 	{
! 	    /* if you get there then we have new common controls */
! 	    NMTTDISPINFO_NEW *info = (NMTTDISPINFO_NEW *)pnmh;
! 	    info->lpszText = (LPSTR)info->lParam;
! 	    info->uFlags |= TTF_DI_SETITEM;
! 	}
  	    break;
  	}
      }
--- 4744,4755 ----
  	    cur_beval->showState = ShS_NEUTRAL;
  	    break;
  	case TTN_GETDISPINFO:
! 	    {
! 		/* if you get there then we have new common controls */
! 		NMTTDISPINFO_NEW *info = (NMTTDISPINFO_NEW *)pnmh;
! 		info->lpszText = (LPSTR)info->lParam;
! 		info->uFlags |= TTF_DI_SETITEM;
! 	    }
  	    break;
  	}
      }
*** ../vim-7.1.195/src/version.c	Thu Jan  3 20:21:34 2008
--- src/version.c	Thu Jan  3 20:43:22 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     196,
  /**/

-- 
Shit makes the flowers grow and that's beautiful

 /// 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.1.197 ---
To: vim-dev at vim.org
Subject: Patch 7.1.197
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.1.197
Problem:    Mac: "make install" doesn't work when prefix defined.
Solution:   Pass different arguments to "make installruntime".  (Jjgod Jiang)
Files:	    src/Makefile


*** ../vim-7.1.196/src/Makefile	Thu Jan  3 20:44:40 2008
--- src/Makefile	Thu Jan  3 18:30:02 2008
***************
*** 2559,2566 ****
  #	-mkdir $(DESTDIR)$(prefix)/$(APPDIR)/bin
  	srcdir=`pwd`; $(MAKE) -f Makefile installruntime \
  		VIMEXE=$$srcdir/$(VIMTARGET) \
! 		prefix=$(DESTDIR)$(prefix)/$(RESDIR)/vim \
! 		VIMRTLOC=$(DESTDIR)$(prefix)/$(RESDIR)/vim/runtime
  # Put the link back.
  	ln -s `pwd`/../runtime $(RESDIR)/vim
  # Copy rgb.txt, Mac doesn't always have X11
--- 2564,2574 ----
  #	-mkdir $(DESTDIR)$(prefix)/$(APPDIR)/bin
  	srcdir=`pwd`; $(MAKE) -f Makefile installruntime \
  		VIMEXE=$$srcdir/$(VIMTARGET) \
! 		prefix=$(DESTDIR)$(prefix)/$(RESDIR)$(VIMDIR) \
! 		exec_prefix=$(DESTDIR)$(prefix)/$(APPDIR)/Contents \
! 		BINDIR=$(DESTDIR)$(prefix)/$(APPDIR)/Contents/MacOS \
! 		VIMLOC=$(DESTDIR)$(prefix)/$(RESDIR)$(VIMDIR) \
! 		VIMRTLOC=$(DESTDIR)$(prefix)/$(RESDIR)$(VIMDIR)/runtime
  # Put the link back.
  	ln -s `pwd`/../runtime $(RESDIR)/vim
  # Copy rgb.txt, Mac doesn't always have X11
*** ../vim-7.1.196/src/version.c	Thu Jan  3 20:44:35 2008
--- src/version.c	Fri Jan  4 11:52:46 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     197,
  /**/

-- 
CUSTOMER:     Well, can you hang around a couple of minutes?  He won't be
              long.
MORTICIAN:    Naaah, I got to go on to Robinson's -- they've lost nine today.
CUSTOMER:     Well, when is your next round?
MORTICIAN:    Thursday.
DEAD PERSON:  I think I'll go for a walk.
                                  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.1.198 ---
To: vim-dev at vim.org
Subject: Patch 7.1.198
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.1.198
Problem:    Hang when using ":s/\n//gn". (Burak Gorkemli)
Solution:   Set "skip_match".
Files:	    src/ex_cmds.c


*** ../vim-7.1.197/src/ex_cmds.c	Wed Jan  2 13:58:17 2008
--- src/ex_cmds.c	Fri Jan  4 14:46:34 2008
***************
*** 4575,4580 ****
--- 4575,4581 ----
  		    {
  			matchcol = (colnr_T)STRLEN(sub_firstline);
  			nmatch = 1;
+ 			skip_match = TRUE;
  		    }
  		    sub_nsubs++;
  		    did_sub = TRUE;
*** ../vim-7.1.197/src/version.c	Fri Jan  4 11:54:11 2008
--- src/version.c	Fri Jan  4 14:52:09 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     198,
  /**/

-- 
    [clop clop]
ARTHUR:  Old woman!
DENNIS:  Man!
ARTHUR:  Man, sorry.  What knight lives in that castle over there?
DENNIS:  I'm thirty seven.
ARTHUR:  What?
DENNIS:  I'm thirty seven -- I'm not old!
                                  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.1.199 ---
To: vim-dev at vim.org
Subject: Patch 7.1.199
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.1.199
Problem:    Can't do command line completion for a specific file name
	    extension.
Solution:   When the pattern ends in "$" don't add a star for completion and
	    remove the "$" before matching with file names.
Files:	    runtime/doc/cmdline.txt, src/ex_getln.c


*** ../vim-7.1.198/runtime/doc/cmdline.txt	Sat May 12 15:38:39 2007
--- runtime/doc/cmdline.txt	Fri Jan  4 15:13:06 2008
***************
*** 1,4 ****
! *cmdline.txt*   For Vim version 7.1.  Last change: 2006 Jul 18
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *cmdline.txt*   For Vim version 7.1.  Last change: 2008 Jan 04
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 316,322 ****
  command-line is shown.  (Note: the shifted arrow keys do not work on all
  terminals)
  
! 							*his* *:history*
  :his[tory]	Print the history of last entered commands.
  		{not in Vi}
  		{not available when compiled without the |+cmdline_hist|
--- 316,322 ----
  command-line is shown.  (Note: the shifted arrow keys do not work on all
  terminals)
  
! 							*:his* *:history*
  :his[tory]	Print the history of last entered commands.
  		{not in Vi}
  		{not available when compiled without the |+cmdline_hist|
***************
*** 447,452 ****
--- 447,457 ----
  
  To completely ignore files with some extension use 'wildignore'.
  
+ To match only files that end at the end of the typed text append a "$".  For
+ example, to match only files that end in ".c": >
+ 	:e *.c$
+ This will not match a file ending in ".cpp".  Without the "$" it does match.
+ 
  The old value of an option can be obtained by hitting 'wildchar' just after
  the '='.  For example, typing 'wildchar' after ":set dir=" will insert the
  current value of 'dir'.  This overrules file name completion for the options
*** ../vim-7.1.198/src/ex_getln.c	Wed Jan  2 21:54:33 2008
--- src/ex_getln.c	Fri Jan  4 15:05:31 2008
***************
*** 4078,4083 ****
--- 4078,4084 ----
  	     * ~ would be at the start of the file name, but not the tail.
  	     * $ could be anywhere in the tail.
  	     * ` could be anywhere in the file name.
+ 	     * When the name ends in '$' don't add a star, remove the '$'.
  	     */
  	    tail = gettail(retval);
  	    if ((*retval != '~' || tail != retval)
***************
*** 4085,4090 ****
--- 4086,4093 ----
  		    && vim_strchr(tail, '$') == NULL
  		    && vim_strchr(retval, '`') == NULL)
  		retval[len++] = '*';
+ 	    else if (len > 0 && retval[len - 1] == '$')
+ 		--len;
  	    retval[len] = NUL;
  	}
      }
*** ../vim-7.1.198/src/version.c	Fri Jan  4 14:52:14 2008
--- src/version.c	Fri Jan  4 15:14:29 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     199,
  /**/

-- 
ARTHUR:  Well, I can't just call you `Man'.
DENNIS:  Well, you could say `Dennis'.
ARTHUR:  Well, I didn't know you were called `Dennis.'
DENNIS:  Well, you didn't bother to find out, did you?
                                  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.1.200 ---
To: vim-dev at vim.org
Subject: Patch 7.1.200
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.1.200 (after 7.1.177 and 7.1.182)
Problem:    Compiler warnings for uninitialized variables.
Solution:   Init variables.
Files:	    src/ex_cmds2.c, src/ex_docmd.c


*** ../vim-7.1.199/src/ex_cmds2.c	Tue Jan  1 14:16:42 2008
--- src/ex_cmds2.c	Fri Jan  4 15:55:54 2008
***************
*** 94,100 ****
      int		save_redir_off = redir_off;
      tasave_T	typeaheadbuf;
      int		typeahead_saved = FALSE;
!     int		save_ignore_script;
  # ifdef FEAT_EX_EXTRA
      int		save_ex_normal_busy;
  # endif
--- 94,100 ----
      int		save_redir_off = redir_off;
      tasave_T	typeaheadbuf;
      int		typeahead_saved = FALSE;
!     int		save_ignore_script = 0;
  # ifdef FEAT_EX_EXTRA
      int		save_ex_normal_busy;
  # endif
*** ../vim-7.1.199/src/ex_docmd.c	Wed Jan  2 21:07:32 2008
--- src/ex_docmd.c	Fri Jan  4 15:57:28 2008
***************
*** 9765,9771 ****
      win_T	*tab_firstwin;
      frame_T	*tab_topframe;
      int		cur_arg_idx = 0;
!     int		next_arg_idx;
  
      if (ssop_flags & SSOP_BUFFERS)
  	only_save_windows = FALSE;		/* Save ALL buffers */
--- 9766,9772 ----
      win_T	*tab_firstwin;
      frame_T	*tab_topframe;
      int		cur_arg_idx = 0;
!     int		next_arg_idx = 0;
  
      if (ssop_flags & SSOP_BUFFERS)
  	only_save_windows = FALSE;		/* Save ALL buffers */
*** ../vim-7.1.199/src/version.c	Fri Jan  4 15:16:57 2008
--- src/version.c	Fri Jan  4 15:59:46 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     200,
  /**/

-- 
ARTHUR:  I did say sorry about the `old woman,' but from the behind you
         looked--
DENNIS:  What I object to is you automatically treat me like an inferior!
ARTHUR:  Well, I AM king...
                                  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.1.201 ---
To: vim-dev at vim.org
Subject: Patch 7.1.201
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.1.201
Problem:    When reading stdin 'fenc' and 'ff are not set.
Solution:   Set the options after reading stdin. (Ben Schmidt)
Files:	    src/fileio.c


*** ../vim-7.1.200/src/fileio.c	Wed Jan  2 21:07:32 2008
--- src/fileio.c	Fri Jan  4 16:18:27 2008
***************
*** 221,231 ****
  {
      int		fd = 0;
      int		newfile = (flags & READ_NEW);
-     int		set_options = newfile || (eap != NULL && eap->read_edit);
      int		check_readonly;
      int		filtering = (flags & READ_FILTER);
      int		read_stdin = (flags & READ_STDIN);
      int		read_buffer = (flags & READ_BUFFER);
      linenr_T	read_buf_lnum = 1;	/* next line to read from curbuf */
      colnr_T	read_buf_col = 0;	/* next char to read from this line */
      char_u	c;
--- 221,232 ----
  {
      int		fd = 0;
      int		newfile = (flags & READ_NEW);
      int		check_readonly;
      int		filtering = (flags & READ_FILTER);
      int		read_stdin = (flags & READ_STDIN);
      int		read_buffer = (flags & READ_BUFFER);
+     int		set_options = newfile || read_buffer
+ 					   || (eap != NULL && eap->read_edit);
      linenr_T	read_buf_lnum = 1;	/* next line to read from curbuf */
      colnr_T	read_buf_col = 0;	/* next char to read from this line */
      char_u	c;
***************
*** 650,657 ****
  
      if (set_options)
      {
! 	curbuf->b_p_eol = TRUE;
! 	curbuf->b_start_eol = TRUE;
  #ifdef FEAT_MBYTE
  	curbuf->b_p_bomb = FALSE;
  	curbuf->b_start_bomb = FALSE;
--- 651,663 ----
  
      if (set_options)
      {
! 	/* Don't change 'eol' if reading from buffer as it will already be
! 	 * correctly set when reading stdin. */
! 	if (!read_buffer)
! 	{
! 	    curbuf->b_p_eol = TRUE;
! 	    curbuf->b_start_eol = TRUE;
! 	}
  #ifdef FEAT_MBYTE
  	curbuf->b_p_bomb = FALSE;
  	curbuf->b_start_bomb = FALSE;
*** ../vim-7.1.200/src/version.c	Fri Jan  4 16:00:10 2008
--- src/version.c	Fri Jan  4 16:27:01 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     201,
  /**/

-- 
A mathematician is a device for turning coffee into theorems.
					Paul Erdos
A computer programmer is a device for turning coffee into bugs.
					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.1.202 ---
To: vim-dev at vim.org
Subject: Patch 7.1.202
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.1.202
Problem:    Incomplete utf-8 byte sequence is not checked for validity.
Solution:   Check the bytes that are present for being valid. (Ben Schmidt)
Files:	    src/mbyte.c


*** ../vim-7.1.201/src/mbyte.c	Thu Aug 30 13:51:52 2007
--- src/mbyte.c	Fri Jan  4 17:30:16 2008
***************
*** 1642,1648 ****
   * Get the length of UTF-8 byte sequence "p[size]".  Does not include any
   * following composing characters.
   * Returns 1 for "".
!  * Returns 1 for an illegal byte sequence.
   * Returns number > "size" for an incomplete byte sequence.
   */
      int
--- 1642,1648 ----
   * Get the length of UTF-8 byte sequence "p[size]".  Does not include any
   * following composing characters.
   * Returns 1 for "".
!  * Returns 1 for an illegal byte sequence (also in incomplete byte seq.).
   * Returns number > "size" for an incomplete byte sequence.
   */
      int
***************
*** 1652,1664 ****
  {
      int		len;
      int		i;
  
      if (*p == NUL)
  	return 1;
!     len = utf8len_tab[*p];
      if (len > size)
! 	return len;	/* incomplete byte sequence. */
!     for (i = 1; i < len; ++i)
  	if ((p[i] & 0xc0) != 0x80)
  	    return 1;
      return len;
--- 1652,1665 ----
  {
      int		len;
      int		i;
+     int		m;
  
      if (*p == NUL)
  	return 1;
!     m = len = utf8len_tab[*p];
      if (len > size)
! 	m = size;	/* incomplete byte sequence. */
!     for (i = 1; i < m; ++i)
  	if ((p[i] & 0xc0) != 0x80)
  	    return 1;
      return len;
*** ../vim-7.1.201/src/version.c	Fri Jan  4 16:30:40 2008
--- src/version.c	Fri Jan  4 17:45:33 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     202,
  /**/

-- 
A computer programmer is a device for turning requirements into
undocumented features.  It runs on cola, pizza and Dilbert cartoons.
					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.1.203 ---
To: vim-dev at vim.org
Subject: Patch 7.1.203
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.1.203
Problem:    When 'virtualedit' is "onemore" then "99|" works but ":normal 99|"
	    doesn't.  (Andy Wokula)
Solution:   Check for "onemore" flag in check_cursor_col().
Files:	    src/misc2.c


*** ../vim-7.1.202/src/misc2.c	Sat Nov 24 21:27:33 2007
--- src/misc2.c	Fri Jan  4 21:24:46 2008
***************
*** 507,517 ****
  	curwin->w_cursor.col = 0;
      else if (curwin->w_cursor.col >= len)
      {
! 	/* Allow cursor past end-of-line in Insert mode, restarting Insert
! 	 * mode or when in Visual mode and 'selection' isn't "old" */
  	if ((State & INSERT) || restart_edit
  #ifdef FEAT_VISUAL
  		|| (VIsual_active && *p_sel != 'o')
  #endif
  		|| virtual_active())
  	    curwin->w_cursor.col = len;
--- 508,523 ----
  	curwin->w_cursor.col = 0;
      else if (curwin->w_cursor.col >= len)
      {
! 	/* Allow cursor past end-of-line when:
! 	 * - in Insert mode or restarting Insert mode
! 	 * - in Visual mode and 'selection' isn't "old"
! 	 * - 'virtualedit' is set */
  	if ((State & INSERT) || restart_edit
  #ifdef FEAT_VISUAL
  		|| (VIsual_active && *p_sel != 'o')
+ #endif
+ #ifdef FEAT_VIRTUALEDIT
+ 		|| (ve_flags & VE_ONEMORE)
  #endif
  		|| virtual_active())
  	    curwin->w_cursor.col = len;
*** ../vim-7.1.202/src/version.c	Fri Jan  4 17:46:46 2008
--- src/version.c	Fri Jan  4 21:22:29 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     203,
  /**/

-- 
`When any government, or any church for that matter, undertakes to say to
 its subjects, "This you may not read, this you must not see, this you are
 forbidden to know," the end result is tyranny and oppression no matter how
 holy the motives' -- Robert A Heinlein, "If this goes on --"

 /// Bram Moolenaar -- Bram 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.1.204 ---
To: vim-dev at vim.org
Subject: Patch 7.1.204 (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.1.204 (extra)
Problem:    Win32: Using the example at 'balloonexpr' the balloon disappears
	    after four seconds and then comes back again.  Also moves the
	    mouse pointer a little bit.  (Yongwei Wu)
Solution:   Set the autopop time to 30 seconds (the max value).  (Sergey
	    Khorev)  Move the mouse two pixels forward and one back to end up
	    in the same position (really!).
Files:	    src/gui_w32.c



*** ../vim-7.1.203/src/gui_w32.c	Thu Jan  3 20:44:35 2008
--- src/gui_w32.c	Sat Jan  5 13:09:56 2008
***************
*** 4575,4585 ****
      SendMessage(beval->balloon, TTM_ADDTOOL, 0, (LPARAM)pti);
      /* Make tooltip appear sooner */
      SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10);
      /*
       * HACK: force tooltip to appear, because it'll not appear until
       * first mouse move. D*mn M$
       */
!     mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0);
      mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0);
      vim_free(pti);
  }
--- 4575,4589 ----
      SendMessage(beval->balloon, TTM_ADDTOOL, 0, (LPARAM)pti);
      /* Make tooltip appear sooner */
      SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10);
+     /* I've performed some tests and it seems the longest possible life time
+      * of tooltip is 30 seconds */
+     SendMessage(beval->balloon, TTM_SETDELAYTIME, TTDT_AUTOPOP, 30000);
      /*
       * HACK: force tooltip to appear, because it'll not appear until
       * first mouse move. D*mn M$
+      * Amazingly moving (2, 2) and then (-1, -1) the mouse doesn't move.
       */
!     mouse_event(MOUSEEVENTF_MOVE, 2, 2, 0, 0);
      mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0);
      vim_free(pti);
  }
*** ../vim-7.1.203/src/version.c	Fri Jan  4 21:25:01 2008
--- src/version.c	Sat Jan  5 13:12:22 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     204,
  /**/

-- 
WOMAN:   I didn't know we had a king. I thought we were an autonomous
         collective.
DENNIS:  You're fooling yourself.  We're living in a dictatorship.  A
         self-perpetuating autocracy in which the working classes--
WOMAN:   Oh there you go, bringing class into it again.
DENNIS:  That's what it's all about if only people would--
                                  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.1.205 ---
To: vim-dev at vim.org
Subject: Patch 7.1.205
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.1.205
Problem:    Can't get the operator in an ":omap".
Solution:   Add the "v:operator" variable. (Ben Schmidt)
Files:	    runtime/doc/eval.txt, src/eval.c, src/normal.c, src/vim.h


*** ../vim-7.1.204/runtime/doc/eval.txt	Tue Sep 25 17:54:41 2007
--- runtime/doc/eval.txt	Fri Jan  4 20:38:55 2008
***************
*** 1,4 ****
! *eval.txt*      For Vim version 7.1.  Last change: 2007 Sep 25
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 04
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 1401,1410 ****
  		This is the screen column number, like with |virtcol()|.  The
  		value is zero when there was no mouse button click.
  
  					*v:prevcount* *prevcount-variable*
  v:prevcount	The count given for the last but one Normal mode command.
  		This is the v:count value of the previous command.  Useful if
! 		you want to cancel Visual mode and then use the count. >
  			:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
  <		Read-only.
  
--- 1401,1424 ----
  		This is the screen column number, like with |virtcol()|.  The
  		value is zero when there was no mouse button click.
  
+ 					*v:operator* *operator-variable*
+ v:operator	The last operator given in Normal mode.  This is a single
+ 		character except for commands starting with <g> or <z>,
+ 		in which case it is two characters.  Best used alongside
+ 		|v:prevcount| and |v:register|.  Useful if you want to cancel
+ 		Operator-pending mode and then use the operator, e.g.: >
+ 			:omap O <Esc>:call MyMotion(v:operator)<CR>
+ <		The value remains set until another operator is entered, thus
+ 		don't expect it to be empty.
+ 		v:operator is not set for |:delete|, |:yank| or other Ex
+ 		commands.
+ 		Read-only.
+ 
  					*v:prevcount* *prevcount-variable*
  v:prevcount	The count given for the last but one Normal mode command.
  		This is the v:count value of the previous command.  Useful if
! 		you want to cancel Visual or Operator-pending mode and then
! 		use the count, e.g.: >
  			:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
  <		Read-only.
  
*** ../vim-7.1.204/src/eval.c	Fri Dec  7 17:08:35 2007
--- src/eval.c	Sat Jan  5 13:22:52 2008
***************
*** 345,350 ****
--- 345,351 ----
      {VV_NAME("mouse_win",	 VAR_NUMBER), 0},
      {VV_NAME("mouse_lnum",	 VAR_NUMBER), 0},
      {VV_NAME("mouse_col",	 VAR_NUMBER), 0},
+     {VV_NAME("operator",	 VAR_STRING), VV_RO},
  };
  
  /* shorthand */
*** ../vim-7.1.204/src/normal.c	Thu Jan  3 13:19:50 2008
--- src/normal.c	Fri Jan  4 20:53:43 2008
***************
*** 141,146 ****
--- 141,149 ----
  static void	nv_Undo __ARGS((cmdarg_T *cap));
  static void	nv_tilde __ARGS((cmdarg_T *cap));
  static void	nv_operator __ARGS((cmdarg_T *cap));
+ #ifdef FEAT_EVAL
+ static void	set_op_var __ARGS((int optype));
+ #endif
  static void	nv_lineop __ARGS((cmdarg_T *cap));
  static void	nv_home __ARGS((cmdarg_T *cap));
  static void	nv_pipe __ARGS((cmdarg_T *cap));
***************
*** 7180,7185 ****
--- 7183,7191 ----
  	{
  	    cap->oap->start = curwin->w_cursor;
  	    cap->oap->op_type = OP_DELETE;
+ #ifdef FEAT_EVAL
+ 	    set_op_var(OP_DELETE);
+ #endif
  	    cap->count1 = 1;
  	    nv_dollar(cap);
  	    finish_op = TRUE;
***************
*** 8219,8226 ****
--- 8225,8257 ----
      {
  	cap->oap->start = curwin->w_cursor;
  	cap->oap->op_type = op_type;
+ #ifdef FEAT_EVAL
+ 	set_op_var(op_type);
+ #endif
+     }
+ }
+ 
+ #ifdef FEAT_EVAL
+ /*
+  * Set v:operator to the characters for "optype".
+  */
+     static void
+ set_op_var(optype)
+     int optype;
+ {
+     char_u	opchars[3];
+ 
+     if (optype == OP_NOP)
+ 	set_vim_var_string(VV_OP, NULL, 0);
+     else
+     {
+ 	opchars[0] = get_op_char(optype);
+ 	opchars[1] = get_extra_op_char(optype);
+ 	opchars[2] = NUL;
+ 	set_vim_var_string(VV_OP, opchars, -1);
      }
  }
+ #endif
  
  /*
   * Handle linewise operator "dd", "yy", etc.
*** ../vim-7.1.204/src/vim.h	Sat Aug 11 13:57:31 2007
--- src/vim.h	Fri Jan  4 19:11:31 2008
***************
*** 1688,1694 ****
  #define VV_MOUSE_WIN	49
  #define VV_MOUSE_LNUM   50
  #define VV_MOUSE_COL	51
! #define VV_LEN		52	/* number of v: vars */
  
  #ifdef FEAT_CLIPBOARD
  
--- 1688,1695 ----
  #define VV_MOUSE_WIN	49
  #define VV_MOUSE_LNUM   50
  #define VV_MOUSE_COL	51
! #define VV_OP		52
! #define VV_LEN		53	/* number of v: vars */
  
  #ifdef FEAT_CLIPBOARD
  
*** ../vim-7.1.204/src/version.c	Sat Jan  5 13:15:08 2008
--- src/version.c	Sat Jan  5 13:31:49 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     205,
  /**/

-- 
ARTHUR:  Then who is your lord?
WOMAN:   We don't have a lord.
ARTHUR:  What?
DENNIS:  I told you.  We're an anarcho-syndicalist commune.  We take it in
         turns to act as a sort of executive officer for the week.
                                  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.1.206 ---
To: vim-dev at vim.org
Subject: Patch 7.1.206
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.1.206
Problem:    Compiler warnings when using MODIFIED_BY.
Solution:   Add type casts. (Ben Schmidt)
Files:	    src/version.c


*** ../vim-7.1.205/src/version.c	Sat Jan  5 13:34:01 2008
--- src/version.c	Sat Jan  5 13:56:55 2008
***************
*** 1587,1595 ****
  
      if (*mesg == ' ')
      {
! 	vim_strncpy(modby, _("Modified by "), MODBY_LEN - 1);
  	l = STRLEN(modby);
! 	vim_strncpy(modby + l, MODIFIED_BY, MODBY_LEN - l - 1);
  	mesg = modby;
      }
  #endif
--- 1589,1597 ----
  
      if (*mesg == ' ')
      {
! 	vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1);
  	l = STRLEN(modby);
! 	vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1);
  	mesg = modby;
      }
  #endif
*** ../vim-7.1.205/src/version.c	Sat Jan  5 13:34:01 2008
--- src/version.c	Sat Jan  5 13:56:55 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     206,
  /**/

-- 
ARTHUR:  I am your king!
WOMAN:   Well, I didn't vote for you.
ARTHUR:  You don't vote for kings.
WOMAN:   Well, 'ow did you become king then?
                                  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.1.207 ---
To: vim-dev at vim.org
Subject: Patch 7.1.207
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.1.207
Problem:    Netbeans: "remove" cannot delete one line. 
Solution:   Remove partial lines and whole lines properly.  Avoid a memory
	    leak.  (Xavier de Gaye)
Files:	    src/netbeans.c


*** ../vim-7.1.206/src/netbeans.c	Thu May 10 18:40:48 2007
--- src/netbeans.c	Sat Jan  5 18:03:24 2008
***************
*** 1204,1209 ****
--- 1204,1257 ----
      return result;
  }
  
+ /*
+  * Remove from "first" byte to "last" byte (inclusive), at line "lnum" of the
+  * current buffer.  Remove to end of line when "last" is MAXCOL.
+  */
+     static void
+ nb_partialremove(linenr_T lnum, colnr_T first, colnr_T last)
+ {
+     char_u *oldtext, *newtext;
+     int oldlen;
+     int lastbyte = last;
+ 
+     oldtext = ml_get(lnum);
+     oldlen = STRLEN(oldtext);
+     if (first >= oldlen || oldlen == 0)  /* just in case */
+ 	return;
+     if (lastbyte >= oldlen)
+ 	lastbyte = oldlen - 1;
+     newtext = alloc(oldlen - (int)(lastbyte - first));
+     if (newtext != NULL)
+     {
+ 	mch_memmove(newtext, oldtext, first);
+ 	mch_memmove(newtext + first, oldtext + lastbyte + 1, STRLEN(oldtext + lastbyte + 1) + 1);
+ 	nbdebug(("    NEW LINE %d: %s\n", lnum, newtext));
+ 	ml_replace(lnum, newtext, FALSE);
+     }
+ }
+ 
+ /*
+  * Replace the "first" line with the concatenation of the "first" and
+  * the "other" line. The "other" line is not removed.
+  */
+     static void
+ nb_joinlines(linenr_T first, linenr_T other)
+ {
+     int len_first, len_other;
+     char_u *p;
+ 
+     len_first = STRLEN(ml_get(first));
+     len_other = STRLEN(ml_get(other));
+     p = alloc((unsigned)(len_first + len_other + 1));
+     if (p != NULL)
+     {
+       mch_memmove(p, ml_get(first), len_first);
+       mch_memmove(p + len_first, ml_get(other), len_other + 1);
+       ml_replace(first, p, FALSE);
+     }
+ }
+ 
  #define SKIP_STOP 2
  #define streq(a,b) (strcmp(a,b) == 0)
  static int needupdate = 0;
***************
*** 1371,1376 ****
--- 1419,1426 ----
  	    long count;
  	    pos_T first, last;
  	    pos_T *pos;
+ 	    pos_T *next;
+ 	    linenr_T del_from_lnum, del_to_lnum;  /* lines to be deleted as a whole */
  	    int oldFire = netbeansFireChanges;
  	    int oldSuppress = netbeansSuppressNoLines;
  	    int wasChanged;
***************
*** 1420,1444 ****
  		}
  		last = *pos;
  		nbdebug(("    LAST POS: line %d, col %d\n", last.lnum, last.col));
! 		curwin->w_cursor = first;
  		doupdate = 1;
  
! 		/* keep part of first line */
! 		if (first.lnum == last.lnum && first.col != last.col)
  		{
! 		    /* deletion is within one line */
! 		    char_u *p = ml_get(first.lnum);
! 		    mch_memmove(p + first.col, p + last.col + 1, STRLEN(p + last.col) + 1);
! 		    nbdebug(("    NEW LINE %d: %s\n", first.lnum, p));
! 		    ml_replace(first.lnum, p, TRUE);
  		}
  
! 		if (first.lnum < last.lnum)
  		{
  		    int i;
  
  		    /* delete signs from the lines being deleted */
! 		    for (i = first.lnum; i <= last.lnum; i++)
  		    {
  			int id = buf_findsign_id(buf->bufp, (linenr_T)i);
  			if (id > 0)
--- 1470,1544 ----
  		}
  		last = *pos;
  		nbdebug(("    LAST POS: line %d, col %d\n", last.lnum, last.col));
! 		del_from_lnum = first.lnum;
! 		del_to_lnum = last.lnum;
  		doupdate = 1;
  
! 		/* Get the position of the first byte after the deleted
! 		 * section.  "next" is NULL when deleting to the end of the
! 		 * file. */
! 		next = off2pos(buf->bufp, off + count);
! 
! 		/* Remove part of the first line. */
! 		if (first.col != 0 || (next != NULL && first.lnum == next->lnum))
  		{
! 		    if (first.lnum != last.lnum
! 			    || (next != NULL && first.lnum != next->lnum))
! 		    {
! 			/* remove to the end of the first line */
! 			nb_partialremove(first.lnum, first.col,
! 							     (colnr_T)MAXCOL);
! 			if (first.lnum == last.lnum)
! 			{
! 			    /* Partial line to remove includes the end of
! 			     * line.  Join the line with the next one, have
! 			     * the next line deleted below. */
! 			    nb_joinlines(first.lnum, next->lnum);
! 			    del_to_lnum = next->lnum;
! 			}
! 		    }
! 		    else
! 		    {
! 			/* remove within one line */
! 			nb_partialremove(first.lnum, first.col, last.col);
! 		    }
! 		    ++del_from_lnum;  /* don't delete the first line */
! 		}
! 
! 		/* Remove part of the last line. */
! 		if (first.lnum != last.lnum && next != NULL
! 			&& next->col != 0 && last.lnum == next->lnum)
! 		{
! 		    nb_partialremove(last.lnum, 0, last.col);
! 		    if (del_from_lnum > first.lnum)
! 		    {
! 			/* Join end of last line to start of first line; last
! 			 * line is deleted below. */
! 			nb_joinlines(first.lnum, last.lnum);
! 		    }
! 		    else
! 			/* First line is deleted as a whole, keep the last
! 			 * line. */
! 			--del_to_lnum;
  		}
  
! 		/* First is partial line; last line to remove includes
! 		 * the end of line; join first line to line following last
! 		 * line; line following last line is deleted below. */
! 		if (first.lnum != last.lnum && del_from_lnum > first.lnum
! 			&& next != NULL && last.lnum != next->lnum)
! 		{
! 		    nb_joinlines(first.lnum, next->lnum);
! 		    del_to_lnum = next->lnum;
! 		}
! 
! 		/* Delete whole lines if there are any. */
! 		if (del_to_lnum >= del_from_lnum)
  		{
  		    int i;
  
  		    /* delete signs from the lines being deleted */
! 		    for (i = del_from_lnum; i <= del_to_lnum; i++)
  		    {
  			int id = buf_findsign_id(buf->bufp, (linenr_T)i);
  			if (id > 0)
***************
*** 1450,1459 ****
  			    nbdebug(("    No sign on line %d\n", i));
  		    }
  
! 		    /* delete whole lines */
! 		    nbdebug(("    Deleting lines %d through %d\n", first.lnum, last.lnum));
! 		    del_lines(last.lnum - first.lnum + 1, FALSE);
  		}
  		buf->bufp->b_changed = wasChanged; /* logically unchanged */
  		netbeansFireChanges = oldFire;
  		netbeansSuppressNoLines = oldSuppress;
--- 1550,1564 ----
  			    nbdebug(("    No sign on line %d\n", i));
  		    }
  
! 		    nbdebug(("    Deleting lines %d through %d\n", del_from_lnum, del_to_lnum));
! 		    curwin->w_cursor.lnum = del_from_lnum;
! 		    curwin->w_cursor.col = 0;
! 		    del_lines(del_to_lnum - del_from_lnum + 1, FALSE);
  		}
+ 
+ 		/* Leave cursor at first deleted byte. */
+ 		curwin->w_cursor = first;
+ 		check_cursor_lnum();
  		buf->bufp->b_changed = wasChanged; /* logically unchanged */
  		netbeansFireChanges = oldFire;
  		netbeansSuppressNoLines = oldSuppress;
***************
*** 2374,2381 ****
   * the current buffer as "buf".
   */
      static void
! nb_set_curbuf(buf)
!     buf_T *buf;
  {
      if (curbuf != buf && buf_jump_open_win(buf) == NULL)
  	set_curbuf(buf, DOBUF_GOTO);
--- 2479,2485 ----
   * the current buffer as "buf".
   */
      static void
! nb_set_curbuf(buf_T *buf)
  {
      if (curbuf != buf && buf_jump_open_win(buf) == NULL)
  	set_curbuf(buf, DOBUF_GOTO);
*** ../vim-7.1.206/src/version.c	Sat Jan  5 13:58:48 2008
--- src/version.c	Sat Jan  5 18:06:04 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     207,
  /**/

-- 
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.1.208 ---
To: vim-dev at vim.org
Subject: Patch 7.1.208
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.1.208
Problem:    On Alpha get an unaligned access error.
Solution:   Store the dictitem pointer before using it. (Matthew Luckie)
Files:	    src/eval.c


*** ../vim-7.1.207/src/eval.c	Sat Jan  5 13:34:01 2008
--- src/eval.c	Sat Jan  5 13:22:52 2008
***************
*** 3407,3412 ****
--- 3407,3413 ----
      hashtab_T	*ht;
      hashitem_T	*hi;
      char_u	*varname;
+     dictitem_T	*di;
  
      ht = find_var_ht(name, &varname);
      if (ht != NULL && *varname != NUL)
***************
*** 3414,3422 ****
  	hi = hash_find(ht, varname);
  	if (!HASHITEM_EMPTY(hi))
  	{
! 	    if (var_check_fixed(HI2DI(hi)->di_flags, name))
! 		return FAIL;
! 	    if (var_check_ro(HI2DI(hi)->di_flags, name))
  		return FAIL;
  	    delete_var(ht, hi);
  	    return OK;
--- 3415,3423 ----
  	hi = hash_find(ht, varname);
  	if (!HASHITEM_EMPTY(hi))
  	{
! 	    di = HI2DI(hi);
! 	    if (var_check_fixed(di->di_flags, name)
! 		    || var_check_ro(di->di_flags, name))
  		return FAIL;
  	    delete_var(ht, hi);
  	    return OK;
*** ../vim-7.1.207/src/version.c	Sat Jan  5 18:06:33 2008
--- src/version.c	Sat Jan  5 22:14:17 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     208,
  /**/

-- 
ARTHUR:  Bloody peasant!
DENNIS:  Oh, what a give away.  Did you here that, did you here that, eh?
         That's what I'm on about -- did you see him repressing me, you saw it
         didn't you?
                                  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.1.209 ---
To: vim-dev at vim.org
Subject: Patch 7.1.209
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.1.209
Problem:    GTK: When using the netrw plugin and doing ":gui" Vim hangs.
Solution:   Stop getting a selection after three seconds.  This is a hack.
Files:	    src/gui_gtk_x11.c


*** ../vim-7.1.208/src/gui_gtk_x11.c	Fri Oct 19 14:32:50 2007
--- src/gui_gtk_x11.c	Sun Jan  6 15:15:52 2008
***************
*** 6660,6665 ****
--- 6660,6666 ----
      unsigned	i;
      int		nbytes;
      char_u	*buffer;
+     time_t	start;
  
      for (i = 0; i < N_SELECTION_TARGETS; ++i)
      {
***************
*** 6670,6676 ****
  			      cbd->gtk_sel_atom, target,
  			      (guint32)GDK_CURRENT_TIME);
  
! 	while (received_selection == RS_NONE)
  	    gtk_main();	/* wait for selection_received_cb */
  
  	if (received_selection != RS_FAIL)
--- 6671,6681 ----
  			      cbd->gtk_sel_atom, target,
  			      (guint32)GDK_CURRENT_TIME);
  
! 	/* Hack: Wait up to three seconds for the selection.  A hang was
! 	 * noticed here when using the netrw plugin combined with ":gui"
! 	 * during the FocusGained event. */
! 	start = time(NULL);
! 	while (received_selection == RS_NONE && time(NULL) < start + 3)
  	    gtk_main();	/* wait for selection_received_cb */
  
  	if (received_selection != RS_FAIL)
*** ../vim-7.1.208/src/version.c	Sat Jan  5 22:15:21 2008
--- src/version.c	Sun Jan  6 15:14:48 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     209,
  /**/

-- 
BLACK KNIGHT:  I move for no man.
ARTHUR:        So be it!
    [hah] [parry thrust]
    [ARTHUR chops the BLACK KNIGHT's left arm off]
ARTHUR:        Now stand aside, worthy adversary.
BLACK KNIGHT:  'Tis but a scratch.
                                  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.1.210 ---
To: vim-dev at vim.org
Subject: Patch 7.1.210
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.1.210
Problem:    Listing mapping for 0xdb fails when 'encoding' is utf-8. (Tony
	    Mechelynck)
Solution:   Recognize K_SPECIAL KS_EXTRA KE_CSI as a CSI byte.
Files:	    src/mbyte.c


*** ../vim-7.1.209/src/mbyte.c	Fri Jan  4 17:46:46 2008
--- src/mbyte.c	Sun Jan  6 17:13:51 2008
***************
*** 2863,2877 ****
  	    buf[m++] = K_SPECIAL;
  	    n += 2;
  	}
  # ifdef FEAT_GUI
! 	else if (str[n] == CSI
  		&& str[n + 1] == KS_EXTRA
  		&& str[n + 2] == (int)KE_CSI)
  	{
  	    buf[m++] = CSI;
  	    n += 2;
  	}
- # endif
  	else if (str[n] == K_SPECIAL
  # ifdef FEAT_GUI
  		|| str[n] == CSI
--- 2882,2898 ----
  	    buf[m++] = K_SPECIAL;
  	    n += 2;
  	}
+ 	else if ((str[n] == K_SPECIAL
  # ifdef FEAT_GUI
! 		    || str[n] == CSI
! # endif
! 		 )
  		&& str[n + 1] == KS_EXTRA
  		&& str[n + 2] == (int)KE_CSI)
  	{
  	    buf[m++] = CSI;
  	    n += 2;
  	}
  	else if (str[n] == K_SPECIAL
  # ifdef FEAT_GUI
  		|| str[n] == CSI
*** ../vim-7.1.209/src/version.c	Sun Jan  6 15:16:12 2008
--- src/version.c	Sun Jan  6 17:17:25 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     210,
  /**/

-- 
ARTHUR:        A scratch?  Your arm's off!
BLACK KNIGHT:  No, it isn't.
ARTHUR:        Well, what's that then?
BLACK KNIGHT:  I've had worse.
                                  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.1.211 ---
To: vim-dev at vim.org
Subject: Patch 7.1.211
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.1.211
Problem:    The matchparen plugin may take an unexpected amount of time, so
	    that it looks like Vim hangs.
Solution:   Add a timeout to searchpair(), searchpairpos(), search() and
	    searchpos().  Use half a second timeout in the plugin.
Files:	    runtime/doc/eval.txt, runtime/plugin/matchparen.vim, src/edit.c,
	    src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c,
	    src/proto/eval.pro, src/proto/ex_cmds2.pro, src/proto/search.pro,
	    src/search.c


*** ../vim-7.1.210/runtime/doc/eval.txt	Sat Jan  5 13:34:01 2008
--- runtime/doc/eval.txt	Sun Jan  6 16:27:33 2008
***************
*** 1,4 ****
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 04
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 06
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 1733,1746 ****
  repeat( {expr}, {count})	String	repeat {expr} {count} times
  resolve( {filename})		String	get filename a shortcut points to
  reverse( {list})		List	reverse {list} in-place
! search( {pattern} [, {flags}])	Number	search for {pattern}
  searchdecl({name} [, {global} [, {thisblock}]])
  				Number  search for variable declaration
! searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]])
  				Number	search for other end of start/end pair
! searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]])
  				List	search for other end of start/end pair
! searchpos( {pattern} [, {flags} [, {stopline}]])
  				List	search for {pattern}
  server2client( {clientid}, {string})
  				Number	send reply string
--- 1733,1747 ----
  repeat( {expr}, {count})	String	repeat {expr} {count} times
  resolve( {filename})		String	get filename a shortcut points to
  reverse( {list})		List	reverse {list} in-place
! search( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
! 				Number	search for {pattern}
  searchdecl({name} [, {global} [, {thisblock}]])
  				Number  search for variable declaration
! searchpair( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
  				Number	search for other end of start/end pair
! searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip} [...]]])
  				List	search for other end of start/end pair
! searchpos( {pattern} [, {flags} [, {stopline} [, {timeout}]]])
  				List	search for {pattern}
  server2client( {clientid}, {string})
  				Number	send reply string
***************
*** 4212,4218 ****
  		If you want a list to remain unmodified make a copy first: >
  			:let revlist = reverse(copy(mylist))
  
! search({pattern} [, {flags} [, {stopline}]])			*search()*
  		Search for regexp pattern {pattern}.  The search starts at the
  		cursor position (you can use |cursor()| to set it).
  
--- 4216,4222 ----
  		If you want a list to remain unmodified make a copy first: >
  			:let revlist = reverse(copy(mylist))
  
! search({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*search()*
  		Search for regexp pattern {pattern}.  The search starts at the
  		cursor position (you can use |cursor()| to set it).
  
***************
*** 4240,4245 ****
--- 4244,4257 ----
  			let end = search('END', '', line("w$"))
  <		When {stopline} is used and it is not zero this also implies
  		that the search does not wrap around the end of the file.
+ 		A zero value is equal to not giving the argument.
+ 
+ 		When the {timeout} argument is given the search stops when
+ 		more than this many milli seconds have passed.  Thus when
+ 		{timeout} is 500 the search stops after half a second.
+ 		The value must not be negative.  A zero value is like not
+ 		giving the argument.
+ 		{only available when compiled with the +reltime feature}
  
  		If there is no match a 0 is returned and the cursor doesn't
  		move.  No error message is given.
***************
*** 4302,4308 ****
  			endif
  <
  							*searchpair()*
! searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]])
  		Search for the match of a nested start-end pair.  This can be
  		used to find the "endif" that matches an "if", while other
  		if/endif pairs in between are ignored.
--- 4314,4321 ----
  			endif
  <
  							*searchpair()*
! searchpair({start}, {middle}, {end} [, {flags} [, {skip}
! 				[, {stopline} [, {timeout}]]]])
  		Search for the match of a nested start-end pair.  This can be
  		used to find the "endif" that matches an "if", while other
  		if/endif pairs in between are ignored.
***************
*** 4337,4343 ****
  		When evaluating {skip} causes an error the search is aborted
  		and -1 returned.
  
! 		For {stopline} see |search()|.
  
  		The value of 'ignorecase' is used.  'magic' is ignored, the
  		patterns are used like it's on.
--- 4350,4356 ----
  		When evaluating {skip} causes an error the search is aborted
  		and -1 returned.
  
! 		For {stopline} and {timeout} see |search()|.
  
  		The value of 'ignorecase' is used.  'magic' is ignored, the
  		patterns are used like it's on.
***************
*** 4383,4389 ****
  	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
  <
  							*searchpairpos()*
! searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline}]]])
  		Same as searchpair(), but returns a |List| with the line and
  		column position of the match. The first element of the |List|
  		is the line number and the second element is the byte index of
--- 4396,4403 ----
  	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
  <
  							*searchpairpos()*
! searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}
! 				[, {stopline} [, {timeout}]]]])
  		Same as searchpair(), but returns a |List| with the line and
  		column position of the match. The first element of the |List|
  		is the line number and the second element is the byte index of
***************
*** 4394,4400 ****
  <
  		See |match-parens| for a bigger and more useful example.
  
! searchpos({pattern} [, {flags} [, {stopline}]])		*searchpos()*
  		Same as |search()|, but returns a |List| with the line and
  		column position of the match. The first element of the |List|
  		is the line number and the second element is the byte index of
--- 4408,4414 ----
  <
  		See |match-parens| for a bigger and more useful example.
  
! searchpos({pattern} [, {flags} [, {stopline} [, {timeout}]]])	*searchpos()*
  		Same as |search()|, but returns a |List| with the line and
  		column position of the match. The first element of the |List|
  		is the line number and the second element is the byte index of
*** ../vim-7.1.210/runtime/plugin/matchparen.vim	Sat Aug 18 18:20:57 2007
--- runtime/plugin/matchparen.vim	Sun Jan  6 16:22:39 2008
***************
*** 1,6 ****
  " Vim plugin for showing matching parens
  " Maintainer:  Bram Moolenaar <Bram at vim.org>
! " Last Change: 2007 Aug 8
  
  " Exit quickly when:
  " - this plugin was already loaded (or disabled)
--- 1,6 ----
  " Vim plugin for showing matching parens
  " Maintainer:  Bram Moolenaar <Bram at vim.org>
! " Last Change: 2008 Jan 06
  
  " Exit quickly when:
  " - this plugin was already loaded (or disabled)
***************
*** 111,117 ****
  	\ '=~?  "string\\|character\\|singlequote\\|comment"'
    execute 'if' s_skip '| let s_skip = 0 | endif'
  
!   let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
  
    if before > 0
      call winrestview(save_cursor)
--- 111,122 ----
  	\ '=~?  "string\\|character\\|singlequote\\|comment"'
    execute 'if' s_skip '| let s_skip = 0 | endif'
  
!   try
!     " Limit the search time to 500 msec to avoid a hang on very long lines.
!     let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, 500)
!   catch /E118/
!     let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline)
!   endtry
  
    if before > 0
      call winrestview(save_cursor)
*** ../vim-7.1.210/src/edit.c	Wed Jan  2 22:08:43 2008
--- src/edit.c	Sun Jan  6 16:08:00 2008
***************
*** 4062,4068 ****
  		    found_new_match = searchit(NULL, ins_buf, pos,
  							      compl_direction,
  				 compl_pattern, 1L, SEARCH_KEEP + SEARCH_NFMSG,
! 							RE_LAST, (linenr_T)0);
  		--msg_silent;
  		if (!compl_started)
  		{
--- 4062,4068 ----
  		    found_new_match = searchit(NULL, ins_buf, pos,
  							      compl_direction,
  				 compl_pattern, 1L, SEARCH_KEEP + SEARCH_NFMSG,
! 						  RE_LAST, (linenr_T)0, NULL);
  		--msg_silent;
  		if (!compl_started)
  		{
*** ../vim-7.1.210/src/eval.c	Sat Jan  5 22:15:21 2008
--- src/eval.c	Sun Jan  6 16:37:42 2008
***************
*** 7213,7223 ****
      {"repeat",		2, 2, f_repeat},
      {"resolve",		1, 1, f_resolve},
      {"reverse",		1, 1, f_reverse},
!     {"search",		1, 3, f_search},
      {"searchdecl",	1, 3, f_searchdecl},
!     {"searchpair",	3, 6, f_searchpair},
!     {"searchpairpos",	3, 6, f_searchpairpos},
!     {"searchpos",	1, 3, f_searchpos},
      {"server2client",	2, 2, f_server2client},
      {"serverlist",	0, 0, f_serverlist},
      {"setbufvar",	3, 3, f_setbufvar},
--- 7213,7223 ----
      {"repeat",		2, 2, f_repeat},
      {"resolve",		1, 1, f_resolve},
      {"reverse",		1, 1, f_reverse},
!     {"search",		1, 4, f_search},
      {"searchdecl",	1, 3, f_searchdecl},
!     {"searchpair",	3, 7, f_searchpair},
!     {"searchpairpos",	3, 7, f_searchpairpos},
!     {"searchpos",	1, 4, f_searchpos},
      {"server2client",	2, 2, f_server2client},
      {"serverlist",	0, 0, f_serverlist},
      {"setbufvar",	3, 3, f_setbufvar},
***************
*** 14020,14025 ****
--- 14020,14029 ----
      int		dir;
      int		retval = 0;	/* default: FAIL */
      long	lnum_stop = 0;
+     proftime_T	tm;
+ #ifdef FEAT_RELTIME
+     long	time_limit = 0;
+ #endif
      int		options = SEARCH_KEEP;
      int		subpatnum;
  
***************
*** 14033,14047 ****
      if (flags & SP_END)
  	options |= SEARCH_END;
  
!     /* Optional extra argument: line number to stop searching. */
!     if (argvars[1].v_type != VAR_UNKNOWN
! 	    && argvars[2].v_type != VAR_UNKNOWN)
      {
  	lnum_stop = get_tv_number_chk(&argvars[2], NULL);
  	if (lnum_stop < 0)
  	    goto theend;
      }
  
      /*
       * This function does not accept SP_REPEAT and SP_RETCOUNT flags.
       * Check to make sure only those flags are set.
--- 14037,14063 ----
      if (flags & SP_END)
  	options |= SEARCH_END;
  
!     /* Optional arguments: line number to stop searching and timeout. */
!     if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN)
      {
  	lnum_stop = get_tv_number_chk(&argvars[2], NULL);
  	if (lnum_stop < 0)
  	    goto theend;
+ #ifdef FEAT_RELTIME
+ 	if (argvars[3].v_type != VAR_UNKNOWN)
+ 	{
+ 	    time_limit = get_tv_number_chk(&argvars[3], NULL);
+ 	    if (time_limit < 0)
+ 		goto theend;
+ 	}
+ #endif
      }
  
+ #ifdef FEAT_RELTIME
+     /* Set the time limit, if there is one. */
+     profile_setlimit(time_limit, &tm);
+ #endif
+ 
      /*
       * This function does not accept SP_REPEAT and SP_RETCOUNT flags.
       * Check to make sure only those flags are set.
***************
*** 14057,14063 ****
  
      pos = save_cursor = curwin->w_cursor;
      subpatnum = searchit(curwin, curbuf, &pos, dir, pat, 1L,
! 				     options, RE_SEARCH, (linenr_T)lnum_stop);
      if (subpatnum != FAIL)
      {
  	if (flags & SP_SUBPAT)
--- 14073,14079 ----
  
      pos = save_cursor = curwin->w_cursor;
      subpatnum = searchit(curwin, curbuf, &pos, dir, pat, 1L,
! 				options, RE_SEARCH, (linenr_T)lnum_stop, &tm);
      if (subpatnum != FAIL)
      {
  	if (flags & SP_SUBPAT)
***************
*** 14147,14152 ****
--- 14163,14169 ----
      char_u	nbuf3[NUMBUFLEN];
      int		retval = 0;		/* default: FAIL */
      long	lnum_stop = 0;
+     long	time_limit = 0;
  
      /* Get the three pattern arguments: start, middle, end. */
      spat = get_tv_string_chk(&argvars[0]);
***************
*** 14182,14194 ****
  	    lnum_stop = get_tv_number_chk(&argvars[5], NULL);
  	    if (lnum_stop < 0)
  		goto theend;
  	}
      }
      if (skip == NULL)
  	goto theend;	    /* type error */
  
      retval = do_searchpair(spat, mpat, epat, dir, skip, flags,
! 							match_pos, lnum_stop);
  
  theend:
      p_ws = save_p_ws;
--- 14199,14219 ----
  	    lnum_stop = get_tv_number_chk(&argvars[5], NULL);
  	    if (lnum_stop < 0)
  		goto theend;
+ #ifdef FEAT_RELTIME
+ 	    if (argvars[6].v_type != VAR_UNKNOWN)
+ 	    {
+ 		time_limit = get_tv_number_chk(&argvars[6], NULL);
+ 		if (time_limit < 0)
+ 		    goto theend;
+ 	    }
+ #endif
  	}
      }
      if (skip == NULL)
  	goto theend;	    /* type error */
  
      retval = do_searchpair(spat, mpat, epat, dir, skip, flags,
! 					    match_pos, lnum_stop, time_limit);
  
  theend:
      p_ws = save_p_ws;
***************
*** 14240,14246 ****
   * Returns 0 or -1 for no match,
   */
      long
! do_searchpair(spat, mpat, epat, dir, skip, flags, match_pos, lnum_stop)
      char_u	*spat;	    /* start pattern */
      char_u	*mpat;	    /* middle pattern */
      char_u	*epat;	    /* end pattern */
--- 14265,14272 ----
   * Returns 0 or -1 for no match,
   */
      long
! do_searchpair(spat, mpat, epat, dir, skip, flags, match_pos,
! 							lnum_stop, time_limit)
      char_u	*spat;	    /* start pattern */
      char_u	*mpat;	    /* middle pattern */
      char_u	*epat;	    /* end pattern */
***************
*** 14249,14254 ****
--- 14275,14281 ----
      int		flags;	    /* SP_SETPCMARK and other SP_ values */
      pos_T	*match_pos;
      linenr_T	lnum_stop;  /* stop at this line if not zero */
+     long	time_limit; /* stop after this many msec */
  {
      char_u	*save_cpo;
      char_u	*pat, *pat2 = NULL, *pat3 = NULL;
***************
*** 14263,14273 ****
--- 14290,14306 ----
      int		nest = 1;
      int		err;
      int		options = SEARCH_KEEP;
+     proftime_T	tm;
  
      /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
      save_cpo = p_cpo;
      p_cpo = (char_u *)"";
  
+ #ifdef FEAT_RELTIME
+     /* Set the time limit, if there is one. */
+     profile_setlimit(time_limit, &tm);
+ #endif
+ 
      /* Make two search patterns: start/end (pat2, for in nested pairs) and
       * start/middle/end (pat3, for the top pair). */
      pat2 = alloc((unsigned)(STRLEN(spat) + STRLEN(epat) + 15));
***************
*** 14291,14297 ****
      for (;;)
      {
  	n = searchit(curwin, curbuf, &pos, dir, pat, 1L,
! 					       options, RE_SEARCH, lnum_stop);
  	if (n == FAIL || (firstpos.lnum != 0 && equalpos(pos, firstpos)))
  	    /* didn't find it or found the first match again: FAIL */
  	    break;
--- 14324,14330 ----
      for (;;)
      {
  	n = searchit(curwin, curbuf, &pos, dir, pat, 1L,
! 					   options, RE_SEARCH, lnum_stop, &tm);
  	if (n == FAIL || (firstpos.lnum != 0 && equalpos(pos, firstpos)))
  	    /* didn't find it or found the first match again: FAIL */
  	    break;
*** ../vim-7.1.210/src/ex_cmds2.c	Fri Jan  4 16:00:10 2008
--- src/ex_cmds2.c	Sun Jan  6 18:22:28 2008
***************
*** 895,913 ****
      sprintf(buf, "%10.6lf", (double)tm->QuadPart / (double)fr.QuadPart);
  # else
      sprintf(buf, "%3ld.%06ld", (long)tm->tv_sec, (long)tm->tv_usec);
! #endif
      return buf;
  }
  
! # endif  /* FEAT_PROFILE || FEAT_RELTIME */
  
- # if defined(FEAT_PROFILE) || defined(PROTO)
  /*
!  * Functions for profiling.
   */
! static void script_do_profile __ARGS((scriptitem_T *si));
! static void script_dump_profile __ARGS((FILE *fd));
! static proftime_T prof_wait_time;
  
  /*
   * Set the time in "tm" to zero.
--- 895,955 ----
      sprintf(buf, "%10.6lf", (double)tm->QuadPart / (double)fr.QuadPart);
  # else
      sprintf(buf, "%3ld.%06ld", (long)tm->tv_sec, (long)tm->tv_usec);
! # endif
      return buf;
  }
  
! /*
!  * Put the time "msec" past now in "tm".
!  */
!     void
! profile_setlimit(msec, tm)
!     long	msec;
!     proftime_T	*tm;
! {
!     if (msec <= 0)   /* no limit */
! 	profile_zero(tm);
!     else
!     {
! # ifdef WIN3264
! 	LARGE_INTEGER   fr;
! 
! 	QueryPerformanceCounter(tm);
! 	QueryPerformanceFrequency(&fr);
! 	tm->QuadPart +=  (double)msec / 1000.0 * (double)fr.QuadPart;
! # else
! 	long	    usec;
! 
! 	gettimeofday(tm, NULL);
! 	usec = (long)tm->tv_usec + (long)msec * 1000;
! 	tm->tv_usec = usec % 1000000L;
! 	tm->tv_sec += usec / 1000000L;
! # endif
!     }
! }
  
  /*
!  * Return TRUE if the current time is past "tm".
   */
!     int
! profile_passed_limit(tm)
!     proftime_T	*tm;
! {
!     proftime_T	now;
! 
! # ifdef WIN3264
!     if (tm->QuadPart == 0)  /* timer was not set */
! 	return FALSE;
!     QueryPerformanceCounter(&now);
!     return (now.QuadPart > tm->QuadPart);
! # else
!     if (tm->tv_sec == 0)    /* timer was not set */
! 	return FALSE;
!     gettimeofday(&now, NULL);
!     return (now.tv_sec > tm->tv_sec
! 	    || (now.tv_sec == tm->tv_sec && now.tv_usec > tm->tv_usec));
! # endif
! }
  
  /*
   * Set the time in "tm" to zero.
***************
*** 923,928 ****
--- 965,980 ----
      tm->tv_sec = 0;
  # endif
  }
+ 
+ # endif  /* FEAT_PROFILE || FEAT_RELTIME */
+ 
+ # if defined(FEAT_PROFILE) || defined(PROTO)
+ /*
+  * Functions for profiling.
+  */
+ static void script_do_profile __ARGS((scriptitem_T *si));
+ static void script_dump_profile __ARGS((FILE *fd));
+ static proftime_T prof_wait_time;
  
  /*
   * Add the time "tm2" to "tm".
*** ../vim-7.1.210/src/ex_docmd.c	Fri Jan  4 16:00:10 2008
--- src/ex_docmd.c	Sun Jan  6 16:08:29 2008
***************
*** 3979,3985 ****
  					*cmd == '?' ? BACKWARD : FORWARD,
  					(char_u *)"", 1L,
  					SEARCH_MSG + SEARCH_START,
! 						      i, (linenr_T)0) != FAIL)
  				lnum = pos.lnum;
  			    else
  			    {
--- 3980,3986 ----
  					*cmd == '?' ? BACKWARD : FORWARD,
  					(char_u *)"", 1L,
  					SEARCH_MSG + SEARCH_START,
! 						i, (linenr_T)0, NULL) != FAIL)
  				lnum = pos.lnum;
  			    else
  			    {
*** ../vim-7.1.210/src/normal.c	Sat Jan  5 13:34:01 2008
--- src/normal.c	Sun Jan  6 16:08:54 2008
***************
*** 4194,4200 ****
      for (;;)
      {
  	t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD,
! 				  pat, 1L, searchflags, RE_LAST, (linenr_T)0);
  	if (curwin->w_cursor.lnum >= old_pos.lnum)
  	    t = FAIL;	/* match after start is failure too */
  
--- 4194,4200 ----
      for (;;)
      {
  	t = searchit(curwin, curbuf, &curwin->w_cursor, FORWARD,
! 			    pat, 1L, searchflags, RE_LAST, (linenr_T)0, NULL);
  	if (curwin->w_cursor.lnum >= old_pos.lnum)
  	    t = FAIL;	/* match after start is failure too */
  
*** ../vim-7.1.210/src/proto/eval.pro	Sun May  6 15:18:09 2007
--- src/proto/eval.pro	Sun Jan  6 15:55:47 2008
***************
*** 54,60 ****
  long get_dict_number __ARGS((dict_T *d, char_u *key));
  char_u *get_function_name __ARGS((expand_T *xp, int idx));
  char_u *get_expr_name __ARGS((expand_T *xp, int idx));
! long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop));
  void set_vim_var_nr __ARGS((int idx, long val));
  long get_vim_var_nr __ARGS((int idx));
  char_u *get_vim_var_str __ARGS((int idx));
--- 54,60 ----
  long get_dict_number __ARGS((dict_T *d, char_u *key));
  char_u *get_function_name __ARGS((expand_T *xp, int idx));
  char_u *get_expr_name __ARGS((expand_T *xp, int idx));
! long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags, pos_T *match_pos, linenr_T lnum_stop, long time_limit));
  void set_vim_var_nr __ARGS((int idx, long val));
  long get_vim_var_nr __ARGS((int idx));
  char_u *get_vim_var_str __ARGS((int idx));
*** ../vim-7.1.210/src/proto/ex_cmds2.pro	Sat May  5 20:21:13 2007
--- src/proto/ex_cmds2.pro	Sun Jan  6 16:42:24 2008
***************
*** 14,19 ****
--- 14,21 ----
  void profile_end __ARGS((proftime_T *tm));
  void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
  char *profile_msg __ARGS((proftime_T *tm));
+ void profile_setlimit __ARGS((long msec, proftime_T *tm));
+ int profile_passed_limit __ARGS((proftime_T *tm));
  void profile_zero __ARGS((proftime_T *tm));
  void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
  void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
*** ../vim-7.1.210/src/proto/search.pro	Wed Aug  8 22:48:16 2007
--- src/proto/search.pro	Sun Jan  6 16:11:53 2008
***************
*** 10,16 ****
  void reset_search_dir __ARGS((void));
  void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
  void last_pat_prog __ARGS((regmmatch_T *regmatch));
! int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum));
  int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
  int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
  int searchc __ARGS((cmdarg_T *cap, int t_cmd));
--- 10,16 ----
  void reset_search_dir __ARGS((void));
  void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
  void last_pat_prog __ARGS((regmmatch_T *regmatch));
! int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum, proftime_T *tm));
  int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
  int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
  int searchc __ARGS((cmdarg_T *cap, int t_cmd));
*** ../vim-7.1.210/src/search.c	Tue Jan  1 15:42:45 2008
--- src/search.c	Sun Jan  6 18:23:37 2008
***************
*** 494,501 ****
   * When FEAT_EVAL is defined, returns the index of the first matching
   * subpattern plus one; one if there was none.
   */
      int
! searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum)
      win_T	*win;		/* window to search in; can be NULL for a
  				   buffer without a window! */
      buf_T	*buf;
--- 494,502 ----
   * When FEAT_EVAL is defined, returns the index of the first matching
   * subpattern plus one; one if there was none.
   */
+ /*ARGSUSED*/
      int
! searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum, tm)
      win_T	*win;		/* window to search in; can be NULL for a
  				   buffer without a window! */
      buf_T	*buf;
***************
*** 506,511 ****
--- 507,513 ----
      int		options;
      int		pat_use;	/* which pattern to use when "pat" is empty */
      linenr_T	stop_lnum;	/* stop after this line number when != 0 */
+     proftime_T	*tm;		/* timeout limit or NULL */
  {
      int		found;
      linenr_T	lnum;		/* no init to shut up Apollo cc */
***************
*** 594,599 ****
--- 596,606 ----
  		if (stop_lnum != 0 && (dir == FORWARD
  				       ? lnum > stop_lnum : lnum < stop_lnum))
  		    break;
+ #ifdef FEAT_RELTIME
+ 		/* Stop after passing the "tm" time limit. */
+ 		if (tm != NULL && profile_passed_limit(tm))
+ 		    break;
+ #endif
  
  		/*
  		 * Look for a match somewhere in line "lnum".
***************
*** 1249,1255 ****
  		       (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS
  			+ SEARCH_MSG + SEARCH_START
  			+ ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))),
! 		RE_LAST, (linenr_T)0);
  
  	if (dircp != NULL)
  	    *dircp = dirc;	/* restore second '/' or '?' for normal_cmd() */
--- 1256,1262 ----
  		       (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS
  			+ SEARCH_MSG + SEARCH_START
  			+ ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))),
! 		RE_LAST, (linenr_T)0, NULL);
  
  	if (dircp != NULL)
  	    *dircp = dirc;	/* restore second '/' or '?' for normal_cmd() */
***************
*** 3780,3786 ****
  	if (do_searchpair((char_u *)"<[^ \t>/!]\\+\\%(\\_s\\_[^>]\\{-}[^/]>\\|$\\|\\_s\\=>\\)",
  		    (char_u *)"",
  		    (char_u *)"</[^>]*>", BACKWARD, (char_u *)"", 0,
! 						      NULL, (linenr_T)0) <= 0)
  	{
  	    curwin->w_cursor = old_pos;
  	    goto theend;
--- 3787,3793 ----
  	if (do_searchpair((char_u *)"<[^ \t>/!]\\+\\%(\\_s\\_[^>]\\{-}[^/]>\\|$\\|\\_s\\=>\\)",
  		    (char_u *)"",
  		    (char_u *)"</[^>]*>", BACKWARD, (char_u *)"", 0,
! 						  NULL, (linenr_T)0, 0L) <= 0)
  	{
  	    curwin->w_cursor = old_pos;
  	    goto theend;
***************
*** 3814,3820 ****
      sprintf((char *)epat, "</%.*s>\\c", len, p);
  
      r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
! 						       0, NULL, (linenr_T)0);
  
      vim_free(spat);
      vim_free(epat);
--- 3821,3827 ----
      sprintf((char *)epat, "</%.*s>\\c", len, p);
  
      r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
! 						    0, NULL, (linenr_T)0, 0L);
  
      vim_free(spat);
      vim_free(epat);
*** ../vim-7.1.210/src/version.c	Sun Jan  6 17:18:16 2008
--- src/version.c	Sun Jan  6 20:00:03 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     211,
  /**/

-- 
No letters of the alphabet were harmed in the creation of this message.

 /// 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-8/README.patches,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- README.patches	4 Oct 2007 12:28:21 -0000	1.87
+++ README.patches	10 Jan 2008 10:07:54 -0000	1.88
@@ -25,6 +25,7 @@
 Collection of patches for Vim 7.1:
   SIZE  NAME                  INCLUDES
  91424  7.1.001-100.gz	      patches 7.1.001 to 7.1.100, gzip'ed
+ 75402  7.1.101-200.gz	      patches 7.1.101 to 7.1.200, gzip'ed
 
 
 Individual patches for Vim 7.1:
@@ -155,6 +156,7 @@
   2599  7.1.124  (extra) Mac: may get empty buffer if dropping file on Vim.app
  12060  7.1.125  the TermResponse autocommand event is not always triggered
  13372  7.1.126  (extra) ":vimgrep */*" doesn't work if autocmd changes dir
+        12461  7.1.126ne  replacement for 7.1.126 without the (extra)
   2319  7.1.127  memory leak when doing completing
   2079  7.1.128  (extra) build problem with Cygwin
   1740  7.1.129  (extra) Win32: Can't get long user name
@@ -164,3 +166,79 @@
   1515  7.1.133  shorten_fname1() linked when it's not needed
  10379  7.1.134  (extra) Win32: Can't build with VC8
   3337  7.1.135  Win32: ":e c:/tmp/foo" and ":e c:/tmp//foo" create two buffers
+  1522  7.1.136  memory leak when using Ruby syntax highlighting
+  1553  7.1.137  build failure when using EXITFREE
+  1836  7.1.138  Perl: Msg() doesn't stop when "q" is typed at the more prompt
+  1557  7.1.139  fold truncated when ending Insert mode with CTRL-C
+  1664  7.1.140  v:count can't be used in an expression mapping
+  2806  7.1.141  GTK: can't use negative offset with -geom argument
+  2161  7.1.142  ":redir @A>" doesn't work
+  1723  7.1.143  uninitialized memory read when diffing three files
+  1250  7.1.144  after ":diffup" cursor can be in the wrong position
+  6160  7.1.145  stay in Insert completion mode depending on the char typed
+  2838  7.1.146  VMS: writing fails for rare record organisation
+  2079  7.1.147  (after 7.1.127) freeing memory twice completing user name
+  2557  7.1.148  QNX and some other systems require testing for sys/types.h
+  4823  7.1.149  completion menu messed up when using the scroll bar
+  1759  7.1.150  Visual mode "p" doesn't work when 'clipboard' has "unnamed"
+  2108  7.1.151  lalloc(0) error for line completion with 'ic' and 'inf' set
+  3183  7.1.152  display problem when 'hls' and 'cursorcolumn' are set
+  4610  7.1.153  compiler warnings on SGI
+  1547  7.1.154  (after 7.1.152) compiler warning for signed/unsigned compare
+  1594  7.1.155  crash when 'undolevels' is 0 and repeating "udd"
+  4174  7.1.156  overlapping arguments for strcpy() during cmdline completion
+  1541  7.1.157  :" in Ex mode at end of file results in an error message
+  4629  7.1.158  (extra) Win32: with utf-8 and cp1250 Alt-y is the wrong char
+  1646  7.1.159  overlapping arguments for a strcpy()
+  1661  7.1.160  getting/losing focus may cause hit-enter prompt to be redrawn
+  4347  7.1.161  compilation errors with tiny features and EXITFREE
+  4691  7.1.162  crash when using a modifier before "while" or "for"
+  2367  7.1.163  warning for the unknown option 'bufsecret'
+  1576  7.1.164  reading past end of regexp pattern
+  5538  7.1.165  crash related to getting X window ID
+  2134  7.1.166  memory leak when using "gp" in Visual mode
+  2528  7.1.167  xxd crashes when using "xxd -b -c 110"
+  2989  7.1.168  (extra) Win32 GUI: when no focus click doesn't position cursor
+  1926  7.1.169  using uninitialized memory when system() fails
+  1722  7.1.170  overlapping arguments to strcpy()
+  2324  7.1.171  reading one byte before allocated memory.
+  1536  7.1.172  if 'buftype' is "acwrite" Vim still does overwrite check
+  1928  7.1.173  accessing freed memory when using "\%^" pattern
+  2197  7.1.174  writing NUL past end of a buffer
+  4722  7.1.175  <BS> doesn't work with some combination of option settings
+  2943  7.1.176  compiling with Aap fails if "compiledby" contains '<' or '>'
+  5450  7.1.177  freeing memory twice when in debug mode while reading a script
+  1567  7.1.178  "%" doesn't work on "/* comment *//* comment */"
+  6581  7.1.179  configure doesn't find TCL 8.5
+  7099  7.1.180  regexp patterns are not sufficiently tested
+  1878  7.1.181  accessing uninitialized memory in Farsi mode with ":s"
+  5457  7.1.182  with tab pages and an argument list session file may be wrong
+  2489  7.1.183  Internal error for ":echo matchstr('a', 'a\%[\&]')"
+  2132  7.1.184  crash when deleting backwards over a line break in Insert mode
+  3744  7.1.185  "gR" and then BS doesn't work properly with multi-byte chars
+  3294  7.1.186  "expand('<afile>')" returns a bogus value after ":cd dir"
+  2341  7.1.187  Win32 GUI: custom completion using system() doesn't work
+  1688  7.1.188  "W10" message could be displayed in the second column
+  1950  7.1.189  (after 7.1.104) need to call plain_vgetc() in ask_yesno()
+  1685  7.1.190  cursor after end-of-line: "iA sentence.<Esc>)"
+  2007  7.1.191  Win32 GUI: when not in focus click in scrollbar doesn't work 
+  2605  7.1.192  CTRL-C doesn't stop duplicating text for "s" in Visual block
+  2962  7.1.193  some of the Vim 5.x digraphs could be supported
+  1650  7.1.194  Unix: ":echo glob('~/{}')" results in "/home/user//"
+  2273  7.1.195  '0 mark doesn't work for "~/foo ~ foo"
+  2642  7.1.196  (extra) Win32 GUI: "\n" in a tooltip doesn't cause line break
+  2308  7.1.197  Mac: "make install" doesn't work when $prefix is set
+  1460  7.1.198  hang when using ":s/\n//gn"
+  3572  7.1.199  can't do command line completion for a file name extension
+  2310  7.1.200  (after 7.1.177 and 7.1.182) compiler warnings
+  2705  7.1.201  when reading stdin 'fenc' and 'ff' are not set
+  2383  7.1.202  incomplete utf-8 byte sequence is not checked for validity
+  2261  7.1.203  if 'virtualedit' is "onemore" then ":normal 99|" is not right
+  2891  7.1.204  (extra) Win32: 'balloonexpr' tooltip disappears after 4 sec
+  5481  7.1.205  can't get the operator in an ":omap"
+  1690  7.1.206  compiler warnings when using MODIFIED_BY
+  7708  7.1.207  netbeans: "remove" cannot delete one line
+  2051  7.1.208  on Alpha get an unaligned access error
+  2249  7.1.209  GTK GUI: when using the netrw plugin ":gui" causes a hang
+  1923  7.1.210  listing mapping for 0xdb fails when 'encoding' is utf-8
+ 25525  7.1.211  matchparen plugin may take so long it looks like Vim hangs


Index: gvim.desktop
===================================================================
RCS file: /cvs/extras/rpms/vim/F-8/gvim.desktop,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- gvim.desktop	9 Sep 2004 14:01:30 -0000	1.4
+++ gvim.desktop	10 Jan 2008 10:07:54 -0000	1.5
@@ -59,5 +59,5 @@
 Icon=gvim
 Type=Application
 Terminal=0
-XClassHintResName=VIM
+X-XClassHintResName=VIM
 MapNotify=false


Index: vim.spec
===================================================================
RCS file: /cvs/extras/rpms/vim/F-8/vim.spec,v
retrieving revision 1.179
retrieving revision 1.180
diff -u -r1.179 -r1.180
--- vim.spec	4 Oct 2007 12:28:21 -0000	1.179
+++ vim.spec	10 Jan 2008 10:07:54 -0000	1.180
@@ -15,7 +15,7 @@
 #used for pre-releases:
 %define beta %{nil}
 %define vimdir vim71%{?beta}
-%define patchlevel 135
+%define patchlevel 211
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
@@ -186,6 +186,82 @@
 Patch133: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.133
 Patch134: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.134
 Patch135: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.135
+Patch136: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.136
+Patch137: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.137
+Patch138: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.138
+Patch139: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.139
+Patch140: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.140
+Patch141: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.141
+Patch142: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.142
+Patch143: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.143
+Patch144: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.144
+Patch145: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.145
+Patch146: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.146
+Patch147: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.147
+Patch148: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.148
+Patch149: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.149
+Patch150: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.150
+Patch151: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.151
+Patch152: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.152
+Patch153: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.153
+Patch154: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.154
+Patch155: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.155
+Patch156: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.156
+Patch157: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.157
+Patch158: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.158
+Patch159: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.159
+Patch160: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.160
+Patch161: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.161
+Patch162: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.162
+Patch163: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.163
+Patch164: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.164
+Patch165: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.165
+Patch166: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.166
+Patch167: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.167
+Patch168: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.168
+Patch169: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.169
+Patch170: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.170
+Patch171: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.171
+Patch172: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.172
+Patch173: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.173
+Patch174: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.174
+Patch175: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.175
+Patch176: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.176
+Patch177: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.177
+Patch178: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.178
+Patch179: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.179
+Patch180: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.180
+Patch181: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.181
+Patch182: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.182
+Patch183: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.183
+Patch184: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.184
+Patch185: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.185
+Patch186: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.186
+Patch187: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.187
+Patch188: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.188
+Patch189: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.189
+Patch190: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.190
+Patch191: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.191
+Patch192: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.192
+Patch193: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.193
+Patch194: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.194
+Patch195: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.195
+Patch196: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.196
+Patch197: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.197
+Patch198: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.198
+Patch199: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.199
+Patch200: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.200
+Patch201: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.201
+Patch202: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.202
+Patch203: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.203
+Patch204: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.204
+Patch205: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.205
+Patch206: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.206
+Patch207: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.207
+Patch208: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.208
+Patch209: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.209
+Patch210: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.210
+Patch211: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.211
 
 Patch3000: vim-7.0-syntax.patch
 Patch3002: vim-7.1-nowarnings.patch
@@ -265,7 +341,7 @@
 %package enhanced
 Summary: A version of the VIM editor which includes recent enhancements
 Group: Applications/Editors
-Requires: vim-common = %{epoch}:%{version}-%{release}
+Requires: vim-common = %{epoch}:%{version}-%{release} which
 Provides: vim = %{version}-%{release}
 
 %description enhanced
@@ -453,6 +529,82 @@
 %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
+%patch149 -p0
+%patch150 -p0
+%patch151 -p0
+%patch152 -p0
+%patch153 -p0
+%patch154 -p0
+%patch155 -p0
+%patch156 -p0
+%patch157 -p0
+%patch158 -p0
+%patch159 -p0
+%patch160 -p0
+%patch161 -p0
+%patch162 -p0
+%patch163 -p0
+%patch164 -p0
+%patch165 -p0
+%patch166 -p0
+%patch167 -p0
+%patch168 -p0
+%patch169 -p0
+%patch170 -p0
+%patch171 -p0
+%patch172 -p0
+%patch173 -p0
+%patch174 -p0
+%patch175 -p0
+%patch176 -p0 
+%patch177 -p0 
+%patch178 -p0 
+%patch179 -p0 
+%patch180 -p0 
+%patch181 -p0 
+%patch182 -p0 
+%patch183 -p0 
+%patch184 -p0 
+%patch185 -p0 
+%patch186 -p0 
+%patch187 -p0 
+%patch188 -p0 
+%patch189 -p0 
+%patch190 -p0 
+%patch191 -p0 
+%patch192 -p0 
+%patch193 -p0 
+%patch194 -p0 
+%patch195 -p0 
+%patch196 -p0 
+%patch197 -p0 
+%patch198 -p0 
+%patch199 -p0 
+%patch200 -p0 
+%patch201 -p0 
+%patch202 -p0 
+%patch203 -p0 
+%patch204 -p0 
+%patch205 -p0 
+%patch206 -p0 
+%patch207 -p0 
+%patch208 -p0 
+%patch209 -p0 
+%patch210 -p0 
+%patch211 -p0 
 
 
 # install spell files
@@ -839,6 +991,19 @@
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
+* Thu Jan 10 2008 Karsten Hopp <karsten at redhat.com> 7.1.211-1
+- rebuild for F-8
+
+* Mon Jan 07 2008 Karsten Hopp <karsten at redhat.com> 7.1.211-1
+- patchlevel 211
+
+* Sat Dec 22 2007 Karsten Hopp <karsten at redhat.com> 7.1.175-1
+- patchlevel 175
+
+* Thu Nov 22 2007 Karsten Hopp <karsten at redhat.com> 7.1.159-1
+- patchlevel 159
+- vim-enhanced requires which for vimtutor (#395371)
+
 * Thu Oct 04 2007 Karsten Hopp <karsten at redhat.com> 7.1.135-1
 - patchlevel 135
 




More information about the fedora-extras-commits mailing list