rpms/vim/F-7 7.1.212, NONE, 1.1 7.1.213, NONE, 1.1 7.1.214, NONE, 1.1 7.1.215, NONE, 1.1 7.1.216, NONE, 1.1 7.1.217, NONE, 1.1 7.1.218, NONE, 1.1 7.1.219, NONE, 1.1 7.1.220, NONE, 1.1 7.1.221, NONE, 1.1 7.1.222, NONE, 1.1 7.1.223, NONE, 1.1 7.1.224, NONE, 1.1 7.1.225, NONE, 1.1 7.1.226, NONE, 1.1 7.1.227, NONE, 1.1 7.1.228, NONE, 1.1 7.1.229, NONE, 1.1 7.1.230, NONE, 1.1 7.1.231, NONE, 1.1 7.1.232, NONE, 1.1 7.1.233, NONE, 1.1 7.1.234, NONE, 1.1 7.1.235, NONE, 1.1 7.1.236, NONE, 1.1 7.1.237, NONE, 1.1 7.1.238, NONE, 1.1 7.1.239, NONE, 1.1 7.1.240, NONE, 1.1 7.1.241, NONE, 1.1 7.1.242, NONE, 1.1 7.1.243, NONE, 1.1 7.1.244, NONE, 1.1 7.1.245, NONE, 1.1 vim-7.1-ada.patch, NONE, 1.1 README.patches, 1.79, 1.80 vim.spec, 1.169, 1.170

Karsten Hopp (karsten) fedora-extras-commits at redhat.com
Mon Feb 11 16:42:24 UTC 2008


Author: karsten

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

Modified Files:
	README.patches vim.spec 
Added Files:
	7.1.212 7.1.213 7.1.214 7.1.215 7.1.216 7.1.217 7.1.218 
	7.1.219 7.1.220 7.1.221 7.1.222 7.1.223 7.1.224 7.1.225 
	7.1.226 7.1.227 7.1.228 7.1.229 7.1.230 7.1.231 7.1.232 
	7.1.233 7.1.234 7.1.235 7.1.236 7.1.237 7.1.238 7.1.239 
	7.1.240 7.1.241 7.1.242 7.1.243 7.1.244 7.1.245 
	vim-7.1-ada.patch 
Log Message:
- build patchlevel 245 for F-7


--- NEW FILE 7.1.212 ---
To: vim-dev at vim.org
Subject: Patch 7.1.212
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.212
Problem:    Accessing a byte before a line.
Solution:   Check that the column is 1 or more. (Dominuque Pelle)
Files:	    src/edit.c


*** ../vim-7.1.211/src/edit.c	Sun Jan  6 20:05:36 2008
--- src/edit.c	Mon Jan  7 22:31:36 2008
***************
*** 8452,8457 ****
--- 8452,8458 ----
  	if (	   mode == BACKSPACE_CHAR
  		&& ((p_sta && in_indent)
  		    || (curbuf->b_p_sts != 0
+ 			&& curwin->w_cursor.col > 0
  			&& (*(ml_get_cursor() - 1) == TAB
  			    || (*(ml_get_cursor() - 1) == ' '
  				&& (!*inserted_space_p
*** ../vim-7.1.211/src/version.c	Sun Jan  6 20:05:36 2008
--- src/version.c	Wed Jan  9 10:11:49 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     212,
  /**/

-- 
CRONE:  Who sent you?
ARTHUR: The Knights Who Say Ni!
CRONE:  Aaaagh!  (she looks around in rear) No!  We have no shrubberies here.
                 "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.213 ---
To: vim-dev at vim.org
Subject: Patch 7.1.213
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.213
Problem:    A ":tabedit" command that results in the "swap file exists" dialog
	    and selecting "abort" doesn't close the new tab. (Al Budden)
Solution:   Pass "old_curwin" to do_exedit().
Files:	    src/ex_docmd.c


*** ../vim-7.1.212/src/ex_docmd.c	Sun Jan  6 20:05:36 2008
--- src/ex_docmd.c	Wed Jan  9 20:11:13 2008
***************
*** 7126,7132 ****
  			 : eap->addr_count == 0 ? 0
  					       : (int)eap->line2 + 1) != FAIL)
  	{
! 	    do_exedit(eap, NULL);
  
  	    /* set the alternate buffer for the window we came from */
  	    if (curwin != old_curwin
--- 7127,7133 ----
  			 : eap->addr_count == 0 ? 0
  					       : (int)eap->line2 + 1) != FAIL)
  	{
! 	    do_exedit(eap, old_curwin);
  
  	    /* set the alternate buffer for the window we came from */
  	    if (curwin != old_curwin
*** ../vim-7.1.212/src/version.c	Wed Jan  9 10:13:24 2008
--- src/version.c	Wed Jan  9 20:29:09 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     213,
  /**/

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

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


--- NEW FILE 7.1.214 ---
To: vim-dev at vim.org
Subject: Patch 7.1.214
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.214
Problem:    ":1s/g\n\zs1//" deletes characters from the first line. (A Politz)
Solution:   Start replacing in the line where the match starts.
Files:	    src/ex_cmds.c


*** ../vim-7.1.213/src/ex_cmds.c	Fri Jan  4 14:52:14 2008
--- src/ex_cmds.c	Wed Jan  9 22:32:26 2008
***************
*** 4200,4206 ****
      linenr_T	old_line_count = curbuf->b_ml.ml_line_count;
      linenr_T	line2;
      long	nmatch;			/* number of lines in match */
-     linenr_T	sub_firstlnum;		/* nr of first sub line */
      char_u	*sub_firstline;		/* allocated copy of first sub line */
      int		endcolumn = FALSE;	/* cursor in last column when done */
      pos_T	old_cursor = curwin->w_cursor;
--- 4200,4205 ----
***************
*** 4447,4453 ****
  #endif
  		); ++lnum)
      {
- 	sub_firstlnum = lnum;
  	nmatch = vim_regexec_multi(&regmatch, curwin, curbuf, lnum, (colnr_T)0);
  	if (nmatch)
  	{
--- 4446,4451 ----
***************
*** 4463,4468 ****
--- 4461,4467 ----
  	    long	nmatch_tl = 0;	/* nr of lines matched below lnum */
  	    int		do_again;	/* do it again after joining lines */
  	    int		skip_match = FALSE;
+ 	    linenr_T	sub_firstlnum;	/* nr of first sub line */
  
  	    /*
  	     * The new text is build up step by step, to avoid too much
***************
*** 4482,4489 ****
  	     *			far.
  	     * new_end		The new text, where to append new text.
  	     *
! 	     * lnum		The line number where we were looking for the
! 	     *			first match in the old line.
  	     * sub_firstlnum	The line number in the buffer where to look
  	     *			for a match.  Can be different from "lnum"
  	     *			when the pattern or substitute string contains
--- 4481,4490 ----
  	     *			far.
  	     * new_end		The new text, where to append new text.
  	     *
! 	     * lnum		The line number where we found the start of
! 	     *			the match.  Can be below the line we searched
! 	     *			when there is a \n before a \zs in the
! 	     *			pattern.
  	     * sub_firstlnum	The line number in the buffer where to look
  	     *			for a match.  Can be different from "lnum"
  	     *			when the pattern or substitute string contains
***************
*** 4507,4518 ****
  	     * updating the screen or handling a multi-line match.  The "old_"
  	     * pointers point into this copy.
  	     */
! 	    sub_firstline = vim_strsave(ml_get(sub_firstlnum));
! 	    if (sub_firstline == NULL)
! 	    {
! 		vim_free(new_start);
! 		goto outofmem;
! 	    }
  	    copycol = 0;
  	    matchcol = 0;
  
--- 4508,4514 ----
  	     * updating the screen or handling a multi-line match.  The "old_"
  	     * pointers point into this copy.
  	     */
! 	    sub_firstlnum = lnum;
  	    copycol = 0;
  	    matchcol = 0;
  
***************
*** 4533,4538 ****
--- 4529,4556 ----
  	     */
  	    for (;;)
  	    {
+ 		/* Advance "lnum" to the line where the match starts.  The
+ 		 * match does not start in the first line when there is a line
+ 		 * break before \zs. */
+ 		if (regmatch.startpos[0].lnum > 0)
+ 		{
+ 		    lnum += regmatch.startpos[0].lnum;
+ 		    sub_firstlnum += regmatch.startpos[0].lnum;
+ 		    nmatch -= regmatch.startpos[0].lnum;
+ 		    vim_free(sub_firstline);
+ 		    sub_firstline = NULL;
+ 		}
+ 
+ 		if (sub_firstline == NULL)
+ 		{
+ 		    sub_firstline = vim_strsave(ml_get(sub_firstlnum));
+ 		    if (sub_firstline == NULL)
+ 		    {
+ 			vim_free(new_start);
+ 			goto outofmem;
+ 		    }
+ 		}
+ 
  		/* Save the line number of the last change for the final
  		 * cursor position (just like Vi). */
  		curwin->w_cursor.lnum = lnum;
***************
*** 4638,4644 ****
  			    temp = RedrawingDisabled;
  			    RedrawingDisabled = 0;
  
! 			    search_match_lines = regmatch.endpos[0].lnum;
  			    search_match_endcol = regmatch.endpos[0].col;
  			    highlight_match = TRUE;
  
--- 4656,4663 ----
  			    temp = RedrawingDisabled;
  			    RedrawingDisabled = 0;
  
! 			    search_match_lines = regmatch.endpos[0].lnum
! 						  - regmatch.startpos[0].lnum;
  			    search_match_endcol = regmatch.endpos[0].col;
  			    highlight_match = TRUE;
  
***************
*** 4749,4755 ****
  		 * 3. substitute the string.
  		 */
  		/* get length of substitution part */
! 		sublen = vim_regsub_multi(&regmatch, sub_firstlnum,
  				    sub, sub_firstline, FALSE, p_magic, TRUE);
  
  		/* When the match included the "$" of the last line it may
--- 4768,4775 ----
  		 * 3. substitute the string.
  		 */
  		/* get length of substitution part */
! 		sublen = vim_regsub_multi(&regmatch,
! 				    sub_firstlnum - regmatch.startpos[0].lnum,
  				    sub, sub_firstline, FALSE, p_magic, TRUE);
  
  		/* When the match included the "$" of the last line it may
***************
*** 4819,4825 ****
  		mch_memmove(new_end, sub_firstline + copycol, (size_t)i);
  		new_end += i;
  
! 		(void)vim_regsub_multi(&regmatch, sub_firstlnum,
  					   sub, new_end, TRUE, p_magic, TRUE);
  		sub_nsubs++;
  		did_sub = TRUE;
--- 4839,4846 ----
  		mch_memmove(new_end, sub_firstline + copycol, (size_t)i);
  		new_end += i;
  
! 		(void)vim_regsub_multi(&regmatch,
! 				    sub_firstlnum - regmatch.startpos[0].lnum,
  					   sub, new_end, TRUE, p_magic, TRUE);
  		sub_nsubs++;
  		did_sub = TRUE;
***************
*** 4908,4917 ****
  skip:
  		/* We already know that we did the last subst when we are at
  		 * the end of the line, except that a pattern like
! 		 * "bar\|\nfoo" may match at the NUL. */
  		lastone = (skip_match
  			|| got_int
  			|| got_quit
  			|| !(do_all || do_again)
  			|| (sub_firstline[matchcol] == NUL && nmatch <= 1
  					 && !re_multiline(regmatch.regprog)));
--- 4929,4941 ----
  skip:
  		/* We already know that we did the last subst when we are at
  		 * the end of the line, except that a pattern like
! 		 * "bar\|\nfoo" may match at the NUL.  "lnum" can be below
! 		 * "line2" when there is a \zs in the pattern after a line
! 		 * break. */
  		lastone = (skip_match
  			|| got_int
  			|| got_quit
+ 			|| lnum > line2
  			|| !(do_all || do_again)
  			|| (sub_firstline[matchcol] == NUL && nmatch <= 1
  					 && !re_multiline(regmatch.regprog)));
***************
*** 4926,4937 ****
  		 * When asking the user we like to show the already replaced
  		 * text, but don't do it when "\<@=" or "\<@!" is used, it
  		 * changes what matches.
  		 */
  		if (lastone
  			|| (do_ask && !re_lookbehind(regmatch.regprog))
  			|| nmatch_tl > 0
  			|| (nmatch = vim_regexec_multi(&regmatch, curwin,
! 				       curbuf, sub_firstlnum, matchcol)) == 0)
  		{
  		    if (new_start != NULL)
  		    {
--- 4950,4964 ----
  		 * When asking the user we like to show the already replaced
  		 * text, but don't do it when "\<@=" or "\<@!" is used, it
  		 * changes what matches.
+ 		 * When the match starts below where we start searching also
+ 		 * need to replace the line first (using \zs after \n).
  		 */
  		if (lastone
  			|| (do_ask && !re_lookbehind(regmatch.regprog))
  			|| nmatch_tl > 0
  			|| (nmatch = vim_regexec_multi(&regmatch, curwin,
! 				       curbuf, sub_firstlnum, matchcol)) == 0
! 			|| regmatch.startpos[0].lnum > 0)
  		{
  		    if (new_start != NULL)
  		    {
***************
*** 5001,5007 ****
--- 5028,5041 ----
  		     * 5. break if there isn't another match in this line
  		     */
  		    if (nmatch <= 0)
+ 		    {
+ 			/* If the match found didn't start where we were
+ 			 * searching, do the next search in the line where we
+ 			 * found the match. */
+ 			if (nmatch == -1)
+ 			    lnum -= regmatch.startpos[0].lnum;
  			break;
+ 		    }
  		}
  
  		line_breakcheck();
*** ../vim-7.1.213/src/version.c	Wed Jan  9 20:29:51 2008
--- src/version.c	Wed Jan  9 22:37:47 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     214,
  /**/

-- 
Q: What's orange and sounds like a parrot?
A: A carrot

 /// 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.215 ---
To: vim-dev at vim.org
Subject: Patch 7.1.215
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.215
Problem:    It is difficult to figure out what syntax items are nested at a
	    certain position.
Solution:   Add the synstack() function.
Files:	    runtime/doc/eval.txt, src/eval.c, src/proto/syntax.pro,
	    src/syntax.c


*** ../vim-7.1.214/runtime/doc/eval.txt	Sun Jan  6 20:05:36 2008
--- runtime/doc/eval.txt	Thu Jan 10 22:20:31 2008
***************
*** 1,4 ****
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 06
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 10
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 1786,1791 ****
--- 1786,1792 ----
  synIDattr( {synID}, {what} [, {mode}])
  				String	attribute {what} of syntax ID {synID}
  synIDtrans( {synID})		Number	translated syntax ID of {synID}
+ synstack({lnum}, {col})		List    stack of syntax IDs at {lnum} and {col}
  system( {expr} [, {input}])	String	output of shell command/filter {expr}
  tabpagebuflist( [{arg}])	List	list of buffer numbers in tab page
  tabpagenr( [{arg}])		Number	number of current or last tab page
***************
*** 4962,4967 ****
--- 4966,4989 ----
  		highlight the character.  Highlight links given with
  		":highlight link" are followed.
  
+ synstack({lnum}, {col})					*synstack()*
+ 		Return a |List|, which is the stack of syntax items at the
+ 		position {lnum} and {col} in the current window.  Each item in
+ 		the List is an ID like what |synID()| returns.
+ 		The stack is the situation in between the character at "col"
+ 		and the next character.  Note that a region of only one
+ 		character will not show up, it only exists inside that
+ 		character, not in between characters.
+ 		The first item in the List is the outer region, following are
+ 		items contained in that one.  The last one is what |synID()|
+ 		returns, unless not the whole item is highlighted or it is a
+ 		transparent item.
+ 		This function is useful for debugging a syntax file.
+ 		Example that shows the syntax stack under the cursor: >
+ 			for id in synstack(line("."), col("."))
+ 			   echo synIDattr(id, "name")
+ 			endfor
+ 
  system({expr} [, {input}])				*system()* *E677*
  		Get the output of the shell command {expr}.
  		When {input} is given, this string is written to a file and
*** ../vim-7.1.214/src/eval.c	Sun Jan  6 20:05:36 2008
--- src/eval.c	Wed Jan  9 13:42:56 2008
***************
*** 651,656 ****
--- 651,657 ----
  static void f_synID __ARGS((typval_T *argvars, typval_T *rettv));
  static void f_synIDattr __ARGS((typval_T *argvars, typval_T *rettv));
  static void f_synIDtrans __ARGS((typval_T *argvars, typval_T *rettv));
+ static void f_synstack __ARGS((typval_T *argvars, typval_T *rettv));
  static void f_system __ARGS((typval_T *argvars, typval_T *rettv));
  static void f_tabpagebuflist __ARGS((typval_T *argvars, typval_T *rettv));
  static void f_tabpagenr __ARGS((typval_T *argvars, typval_T *rettv));
***************
*** 7252,7257 ****
--- 7253,7259 ----
      {"synID",		3, 3, f_synID},
      {"synIDattr",	2, 3, f_synIDattr},
      {"synIDtrans",	1, 1, f_synIDtrans},
+     {"synstack",	2, 2, f_synstack},
      {"system",		1, 2, f_system},
      {"tabpagebuflist",	0, 1, f_tabpagebuflist},
      {"tabpagenr",	0, 1, f_tabpagenr},
***************
*** 15843,15848 ****
--- 15845,15890 ----
  	id = 0;
  
      rettv->vval.v_number = id;
+ }
+ 
+ /*
+  * "synstack(lnum, col)" function
+  */
+ /*ARGSUSED*/
+     static void
+ f_synstack(argvars, rettv)
+     typval_T	*argvars;
+     typval_T	*rettv;
+ {
+ #ifdef FEAT_SYN_HL
+     long	lnum;
+     long	col;
+     int		i;
+     int		id;
+ #endif
+ 
+     rettv->v_type = VAR_LIST;
+     rettv->vval.v_list = NULL;
+ 
+ #ifdef FEAT_SYN_HL
+     lnum = get_tv_lnum(argvars);		/* -1 on type error */
+     col = get_tv_number(&argvars[1]) - 1;	/* -1 on type error */
+ 
+     if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
+ 	    && col >= 0 && col < (long)STRLEN(ml_get(lnum))
+ 	    && rettv_list_alloc(rettv) != FAIL)
+     {
+ 	(void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL);
+ 	for (i = 0; ; ++i)
+ 	{
+ 	    id = syn_get_stack_item(i);
+ 	    if (id < 0)
+ 		break;
+ 	    if (list_append_number(rettv->vval.v_list, id) == FAIL)
+ 		break;
+ 	}
+     }
+ #endif
  }
  
  /*
*** ../vim-7.1.214/src/proto/syntax.pro	Tue Jul 24 14:32:44 2007
--- src/proto/syntax.pro	Wed Jan  9 13:38:20 2008
***************
*** 13,18 ****
--- 13,19 ----
  void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
  char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
  int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp));
+ int syn_get_stack_item __ARGS((int i));
  int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
  void init_highlight __ARGS((int both, int reset));
  int load_colors __ARGS((char_u *name));
*** ../vim-7.1.214/src/syntax.c	Sun Oct  7 15:21:31 2007
--- src/syntax.c	Wed Jan  9 15:17:47 2008
***************
*** 6104,6109 ****
--- 6102,6123 ----
  
      return (trans ? current_trans_id : current_id);
  }
+ 
+ #if defined(FEAT_EVAL) || defined(PROTO)
+ /*
+  * Return the syntax ID at position "i" in the current stack.
+  * The caller must have called syn_get_id() before to fill the stack.
+  * Returns -1 when "i" is out of range.
+  */
+     int
+ syn_get_stack_item(i)
+     int i;
+ {
+     if (i >= current_state.ga_len )
+ 	return -1;
+     return CUR_STATE(i).si_id;
+ }
+ #endif
  
  #if defined(FEAT_FOLDING) || defined(PROTO)
  /*
*** ../vim-7.1.214/src/version.c	Wed Jan  9 22:39:55 2008
--- src/version.c	Thu Jan 10 22:17:38 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     215,
  /**/

-- 
TALL KNIGHT: We are now no longer the Knights Who Say Ni!
ONE KNIGHT:  Ni!
OTHERS:      Sh!
ONE KNIGHT:  (whispers) Sorry.
                 "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.216 ---
To: vim-dev at vim.org
Subject: Patch 7.1.216
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.216
Problem:    Variants of --remote-tab are not mentioned for "vim --help".
Solution:   Display optional -wait and -silent.
Files:	    src/main.c


*** ../vim-7.1.215/src/main.c	Tue Sep 25 17:54:41 2007
--- src/main.c	Sun Dec 30 15:09:11 2007
***************
*** 3081,3087 ****
      main_msg(_("--remote-wait <files>  As --remote but wait for files to have been edited"));
      main_msg(_("--remote-wait-silent <files>  Same, don't complain if there is no server"));
  # ifdef FEAT_WINDOWS
!     main_msg(_("--remote-tab <files>  As --remote but open tab page for each file"));
  # endif
      main_msg(_("--remote-send <keys>\tSend <keys> to a Vim server and exit"));
      main_msg(_("--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"));
--- 3081,3087 ----
      main_msg(_("--remote-wait <files>  As --remote but wait for files to have been edited"));
      main_msg(_("--remote-wait-silent <files>  Same, don't complain if there is no server"));
  # ifdef FEAT_WINDOWS
!     main_msg(_("--remote-tab[-wait][-silent] <files>  As --remote but use tab page per file"));
  # endif
      main_msg(_("--remote-send <keys>\tSend <keys> to a Vim server and exit"));
      main_msg(_("--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"));
*** ../vim-7.1.215/src/version.c	Thu Jan 10 22:23:22 2008
--- src/version.c	Fri Jan 11 20:25:14 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     216,
  /**/

-- 
TIM: But follow only if you are men of valour.  For the entrance to this cave
     is guarded by a monster, a creature so foul and cruel that no man yet has
     fought with it and lived.  Bones of full fifty men lie strewn about its
     lair ...
                 "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.217 ---
To: vim-dev at vim.org
Subject: Patch 7.1.217
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.217
Problem:    The "help-tags" tag may be missing from runtime/doc/tags when it
	    was generated during "make install".
Solution:   Add the "++t" argument to ":helptags" to force adding the tag.
Files:	    runtime/doc/Makefile, runtime/doc/various.txt, src/ex_cmds.c,
	    src/ex_cmds.h


*** ../vim-7.1.216/runtime/doc/Makefile	Sat May  5 19:14:15 2007
--- runtime/doc/Makefile	Fri Jan 11 20:55:34 2008
***************
*** 301,307 ****
  # Use Vim to generate the tags file.  Can only be used when Vim has been
  # compiled and installed.  Supports multiple languages.
  vimtags: $(DOCS)
! 	$(VIMEXE) -u NONE -esX -c "helptags ." -c quit
  
  # Use "doctags" to generate the tags file.  Only works for English!
  tags: doctags $(DOCS)
--- 301,307 ----
  # Use Vim to generate the tags file.  Can only be used when Vim has been
  # compiled and installed.  Supports multiple languages.
  vimtags: $(DOCS)
! 	$(VIMEXE) -u NONE -esX -c "helptags ++t ." -c quit
  
  # Use "doctags" to generate the tags file.  Only works for English!
  tags: doctags $(DOCS)
*** ../vim-7.1.216/runtime/doc/various.txt	Sat May 12 17:05:26 2007
--- runtime/doc/various.txt	Fri Jan 11 20:45:45 2008
***************
*** 1,4 ****
! *various.txt*   For Vim version 7.1.  Last change: 2007 Jan 14
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *various.txt*   For Vim version 7.1.  Last change: 2008 Jan 11
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 748,754 ****
  
  					*:helpt* *:helptags*
  				*E154* *E150* *E151* *E152* *E153* *E670*
! :helpt[ags] {dir}	Generate the help tags file(s) for directory {dir}.
  			All "*.txt" and "*.??x" files in the directory are
  			scanned for a help tag definition in between stars.
  			The "*.??x" files are for translated docs, they
--- 754,761 ----
  
  					*:helpt* *:helptags*
  				*E154* *E150* *E151* *E152* *E153* *E670*
! :helpt[ags] [++t] {dir}
! 			Generate the help tags file(s) for directory {dir}.
  			All "*.txt" and "*.??x" files in the directory are
  			scanned for a help tag definition in between stars.
  			The "*.??x" files are for translated docs, they
***************
*** 756,761 ****
--- 763,771 ----
  			The generated tags files are sorted.
  			When there are duplicates an error message is given.
  			An existing tags file is silently overwritten.
+ 			The optional "++t" argument forces adding the
+ 			"help-tags" tag.  This is also done when the {dir} is
+ 			equal to $VIMRUNTIME/doc.
  			To rebuild the help tags in the runtime directory
  			(requires write permission there): >
  				:helptags $VIMRUNTIME/doc
*** ../vim-7.1.216/src/ex_cmds.c	Wed Jan  9 22:39:55 2008
--- src/ex_cmds.c	Fri Jan 11 20:47:13 2008
***************
*** 6091,6097 ****
  }
  
  #if defined(FEAT_EX_EXTRA) || defined(PROTO)
! static void helptags_one __ARGS((char_u *dir, char_u *ext, char_u *lang));
  
  /*
   * ":helptags"
--- 6091,6097 ----
  }
  
  #if defined(FEAT_EX_EXTRA) || defined(PROTO)
! static void helptags_one __ARGS((char_u *dir, char_u *ext, char_u *lang, int add_help_tags));
  
  /*
   * ":helptags"
***************
*** 6110,6115 ****
--- 6110,6123 ----
      char_u	fname[8];
      int		filecount;
      char_u	**files;
+     int		add_help_tags = FALSE;
+ 
+     /* Check for ":helptags ++t {dir}". */
+     if (STRNCMP(eap->arg, "++t", 3) == 0 && vim_iswhite(eap->arg[3]))
+     {
+ 	add_help_tags = TRUE;
+ 	eap->arg = skipwhite(eap->arg + 3);
+     }
  
      if (!mch_isdir(eap->arg))
      {
***************
*** 6192,6198 ****
  	    ext[1] = fname[5];
  	    ext[2] = fname[6];
  	}
! 	helptags_one(eap->arg, ext, fname);
      }
  
      ga_clear(&ga);
--- 6200,6206 ----
  	    ext[1] = fname[5];
  	    ext[2] = fname[6];
  	}
! 	helptags_one(eap->arg, ext, fname, add_help_tags);
      }
  
      ga_clear(&ga);
***************
*** 6200,6214 ****
  
  #else
      /* No language support, just use "*.txt" and "tags". */
!     helptags_one(eap->arg, (char_u *)".txt", (char_u *)"tags");
  #endif
  }
  
      static void
! helptags_one(dir, ext, tagfname)
!     char_u	*dir;	    /* doc directory */
!     char_u	*ext;	    /* suffix, ".txt", ".itx", ".frx", etc. */
!     char_u	*tagfname;    /* "tags" for English, "tags-it" for Italian. */
  {
      FILE	*fd_tags;
      FILE	*fd;
--- 6208,6223 ----
  
  #else
      /* No language support, just use "*.txt" and "tags". */
!     helptags_one(eap->arg, (char_u *)".txt", (char_u *)"tags", add_help_tags);
  #endif
  }
  
      static void
! helptags_one(dir, ext, tagfname, add_help_tags)
!     char_u	*dir;		/* doc directory */
!     char_u	*ext;		/* suffix, ".txt", ".itx", ".frx", etc. */
!     char_u	*tagfname;      /* "tags" for English, "tags-fr" for French. */
!     int		add_help_tags;  /* add "help-tags" tag */
  {
      FILE	*fd_tags;
      FILE	*fd;
***************
*** 6259,6268 ****
      }
  
      /*
!      * If generating tags for "$VIMRUNTIME/doc" add the "help-tags" tag.
       */
      ga_init2(&ga, (int)sizeof(char_u *), 100);
!     if (fullpathcmp((char_u *)"$VIMRUNTIME/doc", dir, FALSE) == FPC_SAME)
      {
  	if (ga_grow(&ga, 1) == FAIL)
  	    got_int = TRUE;
--- 6268,6279 ----
      }
  
      /*
!      * If using the "++t" argument or generating tags for "$VIMRUNTIME/doc"
!      * add the "help-tags" tag.
       */
      ga_init2(&ga, (int)sizeof(char_u *), 100);
!     if (add_help_tags || fullpathcmp((char_u *)"$VIMRUNTIME/doc",
! 						      dir, FALSE) == FPC_SAME)
      {
  	if (ga_grow(&ga, 1) == FAIL)
  	    got_int = TRUE;
*** ../vim-7.1.216/src/ex_cmds.h	Thu Mar  8 11:00:55 2007
--- src/ex_cmds.h	Fri Jan 11 20:49:18 2008
***************
*** 422,428 ****
  EX(CMD_helpgrep,	"helpgrep",	ex_helpgrep,
  			EXTRA|NOTRLCOM|NEEDARG),
  EX(CMD_helptags,	"helptags",	ex_helptags,
! 			NEEDARG|FILE1|TRLBAR|CMDWIN),
  EX(CMD_hardcopy,	"hardcopy",	ex_hardcopy,
  			RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG),
  EX(CMD_highlight,	"highlight",	ex_highlight,
--- 422,428 ----
  EX(CMD_helpgrep,	"helpgrep",	ex_helpgrep,
  			EXTRA|NOTRLCOM|NEEDARG),
  EX(CMD_helptags,	"helptags",	ex_helptags,
! 			NEEDARG|FILES|TRLBAR|CMDWIN),
  EX(CMD_hardcopy,	"hardcopy",	ex_hardcopy,
  			RANGE|COUNT|EXTRA|TRLBAR|DFLALL|BANG),
  EX(CMD_highlight,	"highlight",	ex_highlight,
*** ../vim-7.1.216/src/version.c	Fri Jan 11 20:25:42 2008
--- src/version.c	Fri Jan 11 20:58:44 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     217,
  /**/

-- 
My girlfriend told me I should be more affectionate.
So I got TWO girlfriends.

 /// 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.218 ---
To: vim-dev at vim.org
Subject: Patch 7.1.218
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.218
Problem:    A syntax region without a "keepend", containing a region with
	    "extend" could be truncated at the end of the containing region.
Solution:   Do not call syn_update_ends() when there are no keepend items.
Files:	    src/syntax.c


*** ../vim-7.1.217/src/syntax.c	Thu Jan 10 22:23:22 2008
--- src/syntax.c	Wed Jan  9 15:17:47 2008
***************
*** 2495,2501 ****
  		if (current_state.ga_len == 0)
  		    break;
  
! 		if (had_extend)
  		{
  		    syn_update_ends(FALSE);
  		    if (current_state.ga_len == 0)
--- 2493,2499 ----
  		if (current_state.ga_len == 0)
  		    break;
  
! 		if (had_extend && keepend_level >= 0)
  		{
  		    syn_update_ends(FALSE);
  		    if (current_state.ga_len == 0)
*** ../vim-7.1.217/src/version.c	Fri Jan 11 21:00:49 2008
--- src/version.c	Fri Jan 11 21:25:46 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     218,
  /**/

-- 
The Law of VIM:
For each member b of the possible behaviour space B of program P, there exists
a finite time t before which at least one user u in the total user space U of
program P will request b becomes a member of the allowed behaviour space B'
(B' <= B).
In other words: Sooner or later everyone wants everything as an option.
                                        -- Vince Negri

 /// 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.219 ---
To: vim-dev at vim.org
Subject: Patch 7.1.219
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.219 (after 7.1.215)
Problem:    synstack() returns situation after the current character, can't
	    see the state for a one-character region.
Solution:   Don't update ending states in the requested column.
Files:	    runtime/doc/eval.txt, src/eval.c, src/hardcopy.c,
	    src/proto/syntax.pro, src/screen.c, src/spell.c, src/syntax.c


*** ../vim-7.1.218/runtime/doc/eval.txt	Thu Jan 10 22:23:22 2008
--- runtime/doc/eval.txt	Fri Jan 11 22:04:59 2008
***************
*** 1,4 ****
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 10
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *eval.txt*      For Vim version 7.1.  Last change: 2008 Jan 11
  
  
  		  VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 4967,4976 ****
  		Return a |List|, which is the stack of syntax items at the
  		position {lnum} and {col} in the current window.  Each item in
  		the List is an ID like what |synID()| returns.
- 		The stack is the situation in between the character at "col"
- 		and the next character.  Note that a region of only one
- 		character will not show up, it only exists inside that
- 		character, not in between characters.
  		The first item in the List is the outer region, following are
  		items contained in that one.  The last one is what |synID()|
  		returns, unless not the whole item is highlighted or it is a
--- 4970,4975 ----
*** ../vim-7.1.218/src/eval.c	Thu Jan 10 22:23:22 2008
--- src/eval.c	Fri Jan 11 21:46:12 2008
***************
*** 15725,15731 ****
  
      if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
  	    && col >= 0 && col < (long)STRLEN(ml_get(lnum)))
! 	id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL);
  #endif
  
      rettv->vval.v_number = id;
--- 15725,15731 ----
  
      if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
  	    && col >= 0 && col < (long)STRLEN(ml_get(lnum)))
! 	id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL, FALSE);
  #endif
  
      rettv->vval.v_number = id;
***************
*** 15874,15880 ****
  	    && col >= 0 && col < (long)STRLEN(ml_get(lnum))
  	    && rettv_list_alloc(rettv) != FAIL)
      {
! 	(void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL);
  	for (i = 0; ; ++i)
  	{
  	    id = syn_get_stack_item(i);
--- 15874,15880 ----
  	    && col >= 0 && col < (long)STRLEN(ml_get(lnum))
  	    && rettv_list_alloc(rettv) != FAIL)
      {
! 	(void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
  	for (i = 0; ; ++i)
  	{
  	    id = syn_get_stack_item(i);
*** ../vim-7.1.218/src/hardcopy.c	Thu May 10 20:40:02 2007
--- src/hardcopy.c	Fri Jan 11 21:46:20 2008
***************
*** 876,882 ****
  	 */
  	if (psettings->do_syntax)
  	{
! 	    id = syn_get_id(curwin, ppos->file_line, col, 1, NULL);
  	    if (id > 0)
  		id = syn_get_final_id(id);
  	    else
--- 876,882 ----
  	 */
  	if (psettings->do_syntax)
  	{
! 	    id = syn_get_id(curwin, ppos->file_line, col, 1, NULL, FALSE);
  	    if (id > 0)
  		id = syn_get_final_id(id);
  	    else
*** ../vim-7.1.218/src/proto/syntax.pro	Thu Jan 10 22:23:22 2008
--- src/proto/syntax.pro	Fri Jan 11 21:54:19 2008
***************
*** 4,10 ****
  void syn_stack_apply_changes __ARGS((buf_T *buf));
  void syntax_end_parsing __ARGS((linenr_T lnum));
  int syntax_check_changed __ARGS((linenr_T lnum));
! int get_syntax_attr __ARGS((colnr_T col, int *can_spell));
  void syntax_clear __ARGS((buf_T *buf));
  void ex_syntax __ARGS((exarg_T *eap));
  int syntax_present __ARGS((buf_T *buf));
--- 4,10 ----
  void syn_stack_apply_changes __ARGS((buf_T *buf));
  void syntax_end_parsing __ARGS((linenr_T lnum));
  int syntax_check_changed __ARGS((linenr_T lnum));
! int get_syntax_attr __ARGS((colnr_T col, int *can_spell, int keep_state));
  void syntax_clear __ARGS((buf_T *buf));
  void ex_syntax __ARGS((exarg_T *eap));
  int syntax_present __ARGS((buf_T *buf));
***************
*** 12,18 ****
  void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg));
  void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
  char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
! int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp));
  int syn_get_stack_item __ARGS((int i));
  int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
  void init_highlight __ARGS((int both, int reset));
--- 12,18 ----
  void set_context_in_echohl_cmd __ARGS((expand_T *xp, char_u *arg));
  void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
  char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
! int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp, int keep_state));
  int syn_get_stack_item __ARGS((int i));
  int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
  void init_highlight __ARGS((int both, int reset));
*** ../vim-7.1.218/src/screen.c	Thu Nov  8 21:23:34 2007
--- src/screen.c	Fri Jan 11 21:48:10 2008
***************
*** 3885,3891 ****
  # ifdef FEAT_SPELL
  					       has_spell ? &can_spell :
  # endif
! 					       NULL);
  
  		    if (did_emsg)
  		    {
--- 3885,3891 ----
  # ifdef FEAT_SPELL
  					       has_spell ? &can_spell :
  # endif
! 					       NULL, FALSE);
  
  		    if (did_emsg)
  		    {
*** ../vim-7.1.218/src/spell.c	Sun Aug  5 18:32:21 2007
--- src/spell.c	Fri Jan 11 21:46:50 2008
***************
*** 2146,2152 ****
  			{
  			    col = (int)(p - buf);
  			    (void)syn_get_id(wp, lnum, (colnr_T)col,
! 						       FALSE, &can_spell);
  			    if (!can_spell)
  				attr = HLF_COUNT;
  			}
--- 2146,2152 ----
  			{
  			    col = (int)(p - buf);
  			    (void)syn_get_id(wp, lnum, (colnr_T)col,
! 						    FALSE, &can_spell, FALSE);
  			    if (!can_spell)
  				attr = HLF_COUNT;
  			}
*** ../vim-7.1.218/src/syntax.c	Fri Jan 11 21:26:49 2008
--- src/syntax.c	Sat Jan 12 16:42:25 2008
***************
*** 378,384 ****
  static int syn_stack_equal __ARGS((synstate_T *sp));
  static void validate_current_state __ARGS((void));
  static int syn_finish_line __ARGS((int syncing));
! static int syn_current_attr __ARGS((int syncing, int displaying, int *can_spell));
  static int did_match_already __ARGS((int idx, garray_T *gap));
  static stateitem_T *push_next_match __ARGS((stateitem_T *cur_si));
  static void check_state_ends __ARGS((void));
--- 378,384 ----
  static int syn_stack_equal __ARGS((synstate_T *sp));
  static void validate_current_state __ARGS((void));
  static int syn_finish_line __ARGS((int syncing));
! static int syn_current_attr __ARGS((int syncing, int displaying, int *can_spell, int keep_state));
  static int did_match_already __ARGS((int idx, garray_T *gap));
  static stateitem_T *push_next_match __ARGS((stateitem_T *cur_si));
  static void check_state_ends __ARGS((void));
***************
*** 1691,1697 ****
      {
  	while (!current_finished)
  	{
! 	    (void)syn_current_attr(syncing, FALSE, NULL);
  	    /*
  	     * When syncing, and found some item, need to check the item.
  	     */
--- 1690,1696 ----
      {
  	while (!current_finished)
  	{
! 	    (void)syn_current_attr(syncing, FALSE, NULL, FALSE);
  	    /*
  	     * When syncing, and found some item, need to check the item.
  	     */
***************
*** 1731,1739 ****
   * done.
   */
      int
! get_syntax_attr(col, can_spell)
      colnr_T	col;
      int		*can_spell;
  {
      int	    attr = 0;
  
--- 1730,1739 ----
   * done.
   */
      int
! get_syntax_attr(col, can_spell, keep_state)
      colnr_T	col;
      int		*can_spell;
+     int		keep_state;	/* keep state of char at "col" */
  {
      int	    attr = 0;
  
***************
*** 1768,1774 ****
       */
      while (current_col <= col)
      {
! 	attr = syn_current_attr(FALSE, TRUE, can_spell);
  	++current_col;
      }
  
--- 1768,1775 ----
       */
      while (current_col <= col)
      {
! 	attr = syn_current_attr(FALSE, TRUE, can_spell,
! 				     current_col == col ? keep_state : FALSE);
  	++current_col;
      }
  
***************
*** 1779,1788 ****
   * Get syntax attributes for current_lnum, current_col.
   */
      static int
! syn_current_attr(syncing, displaying, can_spell)
      int		syncing;		/* When 1: called for syncing */
      int		displaying;		/* result will be displayed */
      int		*can_spell;		/* return: do spell checking */
  {
      int		syn_id;
      lpos_T	endpos;		/* was: char_u *endp; */
--- 1780,1790 ----
   * Get syntax attributes for current_lnum, current_col.
   */
      static int
! syn_current_attr(syncing, displaying, can_spell, keep_state)
      int		syncing;		/* When 1: called for syncing */
      int		displaying;		/* result will be displayed */
      int		*can_spell;		/* return: do spell checking */
+     int		keep_state;		/* keep syntax stack afterwards */
  {
      int		syn_id;
      lpos_T	endpos;		/* was: char_u *endp; */
***************
*** 2298,2304 ****
  	 * may be for an empty match and a containing item might end in the
  	 * current column.
  	 */
! 	if (!syncing)
  	{
  	    check_state_ends();
  	    if (current_state.ga_len > 0
--- 2300,2306 ----
  	 * may be for an empty match and a containing item might end in the
  	 * current column.
  	 */
! 	if (!syncing && !keep_state)
  	{
  	    check_state_ends();
  	    if (current_state.ga_len > 0
***************
*** 6086,6097 ****
   * Function called for expression evaluation: get syntax ID at file position.
   */
      int
! syn_get_id(wp, lnum, col, trans, spellp)
      win_T	*wp;
      long	lnum;
      colnr_T	col;
!     int		trans;	    /* remove transparancy */
!     int		*spellp;    /* return: can do spell checking */
  {
      /* When the position is not after the current position and in the same
       * line of the same buffer, need to restart parsing. */
--- 6088,6100 ----
   * Function called for expression evaluation: get syntax ID at file position.
   */
      int
! syn_get_id(wp, lnum, col, trans, spellp, keep_state)
      win_T	*wp;
      long	lnum;
      colnr_T	col;
!     int		trans;	     /* remove transparancy */
!     int		*spellp;     /* return: can do spell checking */
!     int		keep_state;  /* keep state of char at "col" */
  {
      /* When the position is not after the current position and in the same
       * line of the same buffer, need to restart parsing. */
***************
*** 6100,6106 ****
  	    || col < current_col)
  	syntax_start(wp, lnum);
  
!     (void)get_syntax_attr(col, spellp);
  
      return (trans ? current_trans_id : current_id);
  }
--- 6103,6109 ----
  	    || col < current_col)
  	syntax_start(wp, lnum);
  
!     (void)get_syntax_attr(col, spellp, keep_state);
  
      return (trans ? current_trans_id : current_id);
  }
***************
*** 6115,6122 ****
  syn_get_stack_item(i)
      int i;
  {
!     if (i >= current_state.ga_len )
  	return -1;
      return CUR_STATE(i).si_id;
  }
  #endif
--- 6118,6131 ----
  syn_get_stack_item(i)
      int i;
  {
!     if (i >= current_state.ga_len)
!     {
! 	/* Need to invalidate the state, because we didn't properly finish it
! 	 * for the last character, "keep_state" was TRUE. */
! 	invalidate_current_state();
! 	current_col = MAXCOL;
  	return -1;
+     }
      return CUR_STATE(i).si_id;
  }
  #endif
*** ../vim-7.1.218/src/version.c	Fri Jan 11 21:26:49 2008
--- src/version.c	Sat Jan 12 16:40:47 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     219,
  /**/

-- 
ARTHUR: Go on, Bors, chop its head off.
BORS:   Right.  Silly little bleeder.  One rabbit stew coming up.
                 "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.220 ---
To: vim-dev at vim.org
Subject: Patch 7.1.220
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.220
Problem:    When a ")" or word movement command moves the cursor back from the
	    end of the line it may end up on the trail byte of a multi-byte
	    character.  It's also moved back when it isn't needed.
Solution:   Add the adjust_cursor() function.
Files:	    src/normal.c


*** ../vim-7.1.219/src/normal.c	Sun Jan  6 20:05:36 2008
--- src/normal.c	Sat Jan 12 17:10:14 2008
***************
*** 150,155 ****
--- 150,156 ----
  static void	nv_bck_word __ARGS((cmdarg_T *cap));
  static void	nv_wordcmd __ARGS((cmdarg_T *cap));
  static void	nv_beginline __ARGS((cmdarg_T *cap));
+ static void	adjust_cursor __ARGS((oparg_T *oap));
  #ifdef FEAT_VISUAL
  static void	adjust_for_sel __ARGS((cmdarg_T *cap));
  static int	unadjust_for_sel __ARGS((void));
***************
*** 6567,6578 ****
  	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
--- 6568,6575 ----
  	clearopbeep(cap->oap);
      else
      {
! 	/* Don't leave the cursor on the NUL past end of line. */
! 	adjust_cursor(cap->oap);
  #ifdef FEAT_VIRTUALEDIT
  	curwin->w_cursor.coladd = 0;
  #endif
***************
*** 8408,8419 ****
      else
  	n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP);
  
!     /* Don't leave the cursor on the NUL past a line */
!     if (n != FAIL && curwin->w_cursor.col > 0 && gchar_cursor() == NUL)
!     {
! 	--curwin->w_cursor.col;
! 	cap->oap->inclusive = TRUE;
!     }
  
      if (n == FAIL && cap->oap->op_type == OP_NOP)
  	clearopbeep(cap->oap);
--- 8405,8413 ----
      else
  	n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP);
  
!     /* Don't leave the cursor on the NUL past the end of line. */
!     if (n != FAIL)
! 	adjust_cursor(cap->oap);
  
      if (n == FAIL && cap->oap->op_type == OP_NOP)
  	clearopbeep(cap->oap);
***************
*** 8426,8431 ****
--- 8420,8458 ----
  	if ((fdo_flags & FDO_HOR) && KeyTyped && cap->oap->op_type == OP_NOP)
  	    foldOpenCursor();
  #endif
+     }
+ }
+ 
+ /*
+  * Used after a movement command: If the cursor ends up on the NUL after the
+  * end of the line, may move it back to the last character and make the motion
+  * inclusive.
+  */
+     static void
+ adjust_cursor(oap)
+     oparg_T *oap;
+ {
+     /* The cursor cannot remain on the NUL when:
+      * - the column is > 0
+      * - not in Visual mode or 'selection' is "o"
+      * - 'virtualedit' is not "all" and not "onemore".
+      */
+     if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL
+ #ifdef FEAT_VISUAL
+ 		&& (!VIsual_active || *p_sel == 'o')
+ #endif
+ #ifdef FEAT_VIRTUALEDIT
+ 		&& !virtual_active() && (ve_flags & VE_ONEMORE) == 0
+ #endif
+ 		)
+     {
+ 	--curwin->w_cursor.col;
+ #ifdef FEAT_MBYTE
+ 	/* prevent cursor from moving on the trail byte */
+ 	if (has_mbyte)
+ 	    mb_adjust_cursor();
+ #endif
+ 	oap->inclusive = TRUE;
      }
  }
  
*** ../vim-7.1.219/src/version.c	Sat Jan 12 16:45:25 2008
--- src/version.c	Sat Jan 12 17:07:28 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     220,
  /**/

-- 
A hamburger walks into a bar, and the bartender says: "I'm sorry,
but we don't serve food here."

 /// 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.221 ---
To: vim-dev at vim.org
Subject: Patch 7.1.221
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.221
Problem:    When inserting a "(", triggering the matchparen plugin, the
	    following highlighting may be messed up.
Solution:   Before triggering the CursorMovedI autocommands update the display
	    to update the stored syntax stacks for the change.
Files:	    src/edit.c


*** ../vim-7.1.220/src/edit.c	Wed Jan  9 10:13:24 2008
--- src/edit.c	Sat Jan 12 16:07:41 2008
***************
*** 1455,1460 ****
--- 1455,1468 ----
  # endif
  			     )
  	{
+ # ifdef FEAT_SYN_HL
+ 	    /* Need to update the screen first, to make sure syntax
+ 	     * highlighting is correct after making a change (e.g., inserting
+ 	     * a "(".  The autocommand may also require a redraw, so it's done
+ 	     * again below, unfortunately. */
+ 	    if (syntax_present(curbuf) && must_redraw)
+ 		update_screen(0);
+ # endif
  	    apply_autocmds(EVENT_CURSORMOVEDI, NULL, NULL, FALSE, curbuf);
  	    last_cursormoved = curwin->w_cursor;
  	}
*** ../vim-7.1.220/src/version.c	Sat Jan 12 17:11:25 2008
--- src/version.c	Sat Jan 12 18:11:22 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     221,
  /**/

-- 
ROBIN:  The what?
ARTHUR: The Holy Hand Grenade of Antioch.  'Tis one of the sacred relics
        Brother Maynard always carries with him.
ALL:    Yes. Of course.
ARTHUR: (shouting) Bring up the Holy Hand Grenade!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram 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.222 ---
To: vim-dev at vim.org
Subject: Patch 7.1.222
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.222 (after 7.1.217)
Problem:    Wildcards in argument of ":helptags" are not expanded.  (Marcel
	    Svitalsky)
Solution:   Expand wildcards in the directory name.
Files:	    src/ex_cmds.c


*** ../vim-7.1.221/src/ex_cmds.c	Fri Jan 11 21:00:49 2008
--- src/ex_cmds.c	Sat Jan 12 21:40:51 2008
***************
*** 6106,6111 ****
--- 6106,6113 ----
  #ifdef FEAT_MULTI_LANG
      char_u	lang[2];
  #endif
+     expand_T	xpc;
+     char_u	*dirname;
      char_u	ext[5];
      char_u	fname[8];
      int		filecount;
***************
*** 6119,6125 ****
  	eap->arg = skipwhite(eap->arg + 3);
      }
  
!     if (!mch_isdir(eap->arg))
      {
  	EMSG2(_("E150: Not a directory: %s"), eap->arg);
  	return;
--- 6121,6131 ----
  	eap->arg = skipwhite(eap->arg + 3);
      }
  
!     ExpandInit(&xpc);
!     xpc.xp_context = EXPAND_DIRECTORIES;
!     dirname = ExpandOne(&xpc, eap->arg, NULL,
! 			    WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE);
!     if (dirname == NULL || !mch_isdir(dirname))
      {
  	EMSG2(_("E150: Not a directory: %s"), eap->arg);
  	return;
***************
*** 6127,6133 ****
  
  #ifdef FEAT_MULTI_LANG
      /* Get a list of all files in the directory. */
!     STRCPY(NameBuff, eap->arg);
      add_pathsep(NameBuff);
      STRCAT(NameBuff, "*");
      if (gen_expand_wildcards(1, &NameBuff, &filecount, &files,
--- 6133,6139 ----
  
  #ifdef FEAT_MULTI_LANG
      /* Get a list of all files in the directory. */
!     STRCPY(NameBuff, dirname);
      add_pathsep(NameBuff);
      STRCAT(NameBuff, "*");
      if (gen_expand_wildcards(1, &NameBuff, &filecount, &files,
***************
*** 6135,6140 ****
--- 6141,6147 ----
  	    || filecount == 0)
      {
  	EMSG2("E151: No match: %s", NameBuff);
+ 	vim_free(dirname);
  	return;
      }
  
***************
*** 6200,6206 ****
  	    ext[1] = fname[5];
  	    ext[2] = fname[6];
  	}
! 	helptags_one(eap->arg, ext, fname, add_help_tags);
      }
  
      ga_clear(&ga);
--- 6207,6213 ----
  	    ext[1] = fname[5];
  	    ext[2] = fname[6];
  	}
! 	helptags_one(dirname, ext, fname, add_help_tags);
      }
  
      ga_clear(&ga);
***************
*** 6208,6215 ****
  
  #else
      /* No language support, just use "*.txt" and "tags". */
!     helptags_one(eap->arg, (char_u *)".txt", (char_u *)"tags", add_help_tags);
  #endif
  }
  
      static void
--- 6215,6223 ----
  
  #else
      /* No language support, just use "*.txt" and "tags". */
!     helptags_one(dirname, (char_u *)".txt", (char_u *)"tags", add_help_tags);
  #endif
+     vim_free(dirname);
  }
  
      static void
*** ../vim-7.1.221/src/version.c	Sat Jan 12 18:13:05 2008
--- src/version.c	Sun Jan 13 13:27:04 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     222,
  /**/

-- 
   Arthur pulls Pin out.  The MONK blesses the grenade as ...
ARTHUR:  (quietly) One, two, five ...
GALAHAD: Three, sir!
ARTHUR:  Three.
                 "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.223 ---
To: vim-dev at vim.org
Subject: Patch 7.1.223
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.223
Problem:    glob() doesn't work properly when 'shell' is "sh" or "bash" and
	    the expanded name contains spaces, '~', single quotes and other
	    special characters.  (Adri Verhoef, Charles Campbell)
Solution:   For Posix shells define a vimglob() function to list the matches
	    instead of using "echo" directly.
Files:	    src/os_unix.c


*** ../vim-7.1.222/src/os_unix.c	Thu Jan  3 18:55:21 2008
--- src/os_unix.c	Sun Jan 13 13:52:53 2008
***************
*** 4946,4951 ****
--- 4946,4954 ----
      char_u	*p;
      int		dir;
  #ifdef __EMX__
+     /*
+      * This is the OS/2 implementation.
+      */
  # define EXPL_ALLOC_INC	16
      char_u	**expl_files;
      size_t	files_alloced, files_free;
***************
*** 5056,5075 ****
      return OK;
  
  #else /* __EMX__ */
! 
      int		j;
      char_u	*tempname;
      char_u	*command;
      FILE	*fd;
      char_u	*buffer;
! #define STYLE_ECHO  0	    /* use "echo" to expand */
! #define STYLE_GLOB  1	    /* use "glob" to expand, for csh */
! #define STYLE_PRINT 2	    /* use "print -N" to expand, for zsh */
! #define STYLE_BT    3	    /* `cmd` expansion, execute the pattern directly */
      int		shell_style = STYLE_ECHO;
      int		check_spaces;
      static int	did_find_nul = FALSE;
      int		ampersent = FALSE;
  
      *num_file = 0;	/* default: no files found */
      *file = NULL;
--- 5059,5084 ----
      return OK;
  
  #else /* __EMX__ */
!     /*
!      * This is the non-OS/2 implementation (really Unix).
!      */
      int		j;
      char_u	*tempname;
      char_u	*command;
      FILE	*fd;
      char_u	*buffer;
! #define STYLE_ECHO	0	/* use "echo", the default */
! #define STYLE_GLOB	1	/* use "glob", for csh */
! #define STYLE_VIMGLOB	2	/* use "vimglob", for Posix sh */
! #define STYLE_PRINT	3	/* use "print -N", for zsh */
! #define STYLE_BT	4	/* `cmd` expansion, execute the pattern
! 				 * directly */
      int		shell_style = STYLE_ECHO;
      int		check_spaces;
      static int	did_find_nul = FALSE;
      int		ampersent = FALSE;
+ 		/* vimglob() function to define for Posix shell */
+     static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo -n \"$1\"; echo; shift; done }; vimglob >";
  
      *num_file = 0;	/* default: no files found */
      *file = NULL;
***************
*** 5107,5115 ****
  
      /*
       * Let the shell expand the patterns and write the result into the temp
!      * file.  if expanding `cmd` execute it directly.
!      * If we use csh, glob will work better than echo.
!      * If we use zsh, print -N will work better than glob.
       */
      if (num_pat == 1 && *pat[0] == '`'
  	    && (len = STRLEN(pat[0])) > 2
--- 5116,5132 ----
  
      /*
       * Let the shell expand the patterns and write the result into the temp
!      * file.
!      * STYLE_BT:	NL separated
!      *	    If expanding `cmd` execute it directly.
!      * STYLE_GLOB:	NUL separated
!      *	    If we use *csh, "glob" will work better than "echo".
!      * STYLE_PRINT:	NL or NUL separated
!      *	    If we use *zsh, "print -N" will work better than "glob".
!      * STYLE_VIMGLOB:	NL separated
!      *	    If we use *sh*, we define "vimglob()".
!      * STYLE_ECHO:	space separated.
!      *	    A shell we don't know, stay safe and use "echo".
       */
      if (num_pat == 1 && *pat[0] == '`'
  	    && (len = STRLEN(pat[0])) > 2
***************
*** 5122,5130 ****
  	else if (STRCMP(p_sh + len - 3, "zsh") == 0)
  	    shell_style = STYLE_PRINT;
      }
! 
!     /* "unset nonomatch; print -N >" plus two is 29 */
      len = STRLEN(tempname) + 29;
      for (i = 0; i < num_pat; ++i)
      {
  	/* Count the length of the patterns in the same way as they are put in
--- 5139,5155 ----
  	else if (STRCMP(p_sh + len - 3, "zsh") == 0)
  	    shell_style = STYLE_PRINT;
      }
!     if (shell_style == STYLE_ECHO && strstr((char *)gettail(p_sh),
! 								"sh") != NULL)
! 	shell_style = STYLE_VIMGLOB;
! 
!     /* Compute the length of the command.  We need 2 extra bytes: for the
!      * optional '&' and for the NUL.
!      * Worst case: "unset nonomatch; print -N >" plus two is 29 */
      len = STRLEN(tempname) + 29;
+     if (shell_style == STYLE_VIMGLOB)
+ 	len += STRLEN(sh_vimglob_func);
+ 
      for (i = 0; i < num_pat; ++i)
      {
  	/* Count the length of the patterns in the same way as they are put in
***************
*** 5183,5192 ****
--- 5208,5221 ----
  	    STRCAT(command, "glob >");
  	else if (shell_style == STYLE_PRINT)
  	    STRCAT(command, "print -N >");
+ 	else if (shell_style == STYLE_VIMGLOB)
+ 	    STRCAT(command, sh_vimglob_func);
  	else
  	    STRCAT(command, "echo >");
      }
+ 
      STRCAT(command, tempname);
+ 
      if (shell_style != STYLE_BT)
  	for (i = 0; i < num_pat; ++i)
  	{
***************
*** 5232,5239 ****
      if (flags & EW_SILENT)
  	show_shell_mess = FALSE;
      if (ampersent)
! 	STRCAT(command, "&");		/* put the '&' back after the
! 					   redirection */
  
      /*
       * Using zsh -G: If a pattern has no matches, it is just deleted from
--- 5261,5267 ----
      if (flags & EW_SILENT)
  	show_shell_mess = FALSE;
      if (ampersent)
! 	STRCAT(command, "&");		/* put the '&' after the redirection */
  
      /*
       * Using zsh -G: If a pattern has no matches, it is just deleted from
***************
*** 5265,5271 ****
      show_shell_mess = TRUE;
      vim_free(command);
  
!     if (i)				/* mch_call_shell() failed */
      {
  	mch_remove(tempname);
  	vim_free(tempname);
--- 5293,5299 ----
      show_shell_mess = TRUE;
      vim_free(command);
  
!     if (i != 0)				/* mch_call_shell() failed */
      {
  	mch_remove(tempname);
  	vim_free(tempname);
***************
*** 5336,5342 ****
      }
      vim_free(tempname);
  
! #if defined(__CYGWIN__) || defined(__CYGWIN32__)
      /* Translate <CR><NL> into <NL>.  Caution, buffer may contain NUL. */
      p = buffer;
      for (i = 0; i < len; ++i)
--- 5364,5370 ----
      }
      vim_free(tempname);
  
! # if defined(__CYGWIN__) || defined(__CYGWIN32__)
      /* Translate <CR><NL> into <NL>.  Caution, buffer may contain NUL. */
      p = buffer;
      for (i = 0; i < len; ++i)
***************
*** 5359,5365 ****
  	}
      }
      /* file names are separated with NL */
!     else if (shell_style == STYLE_BT)
      {
  	buffer[len] = NUL;		/* make sure the buffer ends in NUL */
  	p = buffer;
--- 5387,5393 ----
  	}
      }
      /* file names are separated with NL */
!     else if (shell_style == STYLE_BT || shell_style == STYLE_VIMGLOB)
      {
  	buffer[len] = NUL;		/* make sure the buffer ends in NUL */
  	p = buffer;
***************
*** 5438,5444 ****
      {
  	(*file)[i] = p;
  	/* Space or NL separates */
! 	if (shell_style == STYLE_ECHO || shell_style == STYLE_BT)
  	{
  	    while (!(shell_style == STYLE_ECHO && *p == ' ')
  						   && *p != '\n' && *p != NUL)
--- 5466,5473 ----
      {
  	(*file)[i] = p;
  	/* Space or NL separates */
! 	if (shell_style == STYLE_ECHO || shell_style == STYLE_BT
! 					      || shell_style == STYLE_VIMGLOB)
  	{
  	    while (!(shell_style == STYLE_ECHO && *p == ' ')
  						   && *p != '\n' && *p != NUL)
*** ../vim-7.1.222/src/version.c	Sun Jan 13 13:30:34 2008
--- src/version.c	Sun Jan 13 13:45:04 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     223,
  /**/

-- 
User:       I'm having problems with my text editor.
Help desk:  Which editor are you using?
User:       I don't know, but it's version VI (pronounced: 6).
Help desk:  Oh, then you should upgrade to version VIM (pronounced: 994).

 /// 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.224 ---
To: vim-dev at vim.org
Subject: Patch 7.1.224
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.224
Problem:    When using "vim -F -o file1 file2" only one window is
	    right-to-left.  Same for "-H".  (Ben Schmidt)
Solution:   use set_option_value() to set 'rightleft'.
Files:	    src/main.c


*** ../vim-7.1.223/src/main.c	Fri Jan 11 20:25:42 2008
--- src/main.c	Sun Jan 13 16:12:09 2008
***************
*** 1775,1781 ****
  
  	    case 'F':		/* "-F" start in Farsi mode: rl + fkmap set */
  #ifdef FEAT_FKMAP
! 		curwin->w_p_rl = p_fkmap = TRUE;
  #else
  		mch_errmsg(_(e_nofarsi));
  		mch_exit(2);
--- 1775,1782 ----
  
  	    case 'F':		/* "-F" start in Farsi mode: rl + fkmap set */
  #ifdef FEAT_FKMAP
! 		p_fkmap = TRUE;
! 		set_option_value((char_u *)"rl", 1L, NULL, 0);
  #else
  		mch_errmsg(_(e_nofarsi));
  		mch_exit(2);
***************
*** 1792,1798 ****
  
  	    case 'H':		/* "-H" start in Hebrew mode: rl + hkmap set */
  #ifdef FEAT_RIGHTLEFT
! 		curwin->w_p_rl = p_hkmap = TRUE;
  #else
  		mch_errmsg(_(e_nohebrew));
  		mch_exit(2);
--- 1793,1800 ----
  
  	    case 'H':		/* "-H" start in Hebrew mode: rl + hkmap set */
  #ifdef FEAT_RIGHTLEFT
! 		p_hkmap = TRUE;
! 		set_option_value((char_u *)"rl", 1L, NULL, 0);
  #else
  		mch_errmsg(_(e_nohebrew));
  		mch_exit(2);
*** ../vim-7.1.223/src/version.c	Sun Jan 13 13:53:30 2008
--- src/version.c	Sun Jan 13 16:15:49 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     224,
  /**/

-- 
LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
ARTHUR:    No, that's Saint Ives.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.1.225 ---
To: vim-dev at vim.org
Subject: Patch 7.1.225
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.225
Problem:    Using unitialized value when XGetWMNormalHints() fails.
Solution:   Check the return value. (Dominique Pelle)
Files:	    src/os_unix.c


*** ../vim-7.1.224/src/os_unix.c	Sun Jan 13 13:53:30 2008
--- src/os_unix.c	Sun Jan 13 13:52:53 2008
***************
*** 6145,6153 ****
      if (xterm_trace == 1)
      {
  	/* Get the hints just before tracking starts.  The font size might
! 	 * have changed recently */
! 	XGetWMNormalHints(xterm_dpy, x11_window, &xterm_hints, &got_hints);
! 	if (!(got_hints & PResizeInc)
  		|| xterm_hints.width_inc <= 1
  		|| xterm_hints.height_inc <= 1)
  	{
--- 6145,6153 ----
      if (xterm_trace == 1)
      {
  	/* Get the hints just before tracking starts.  The font size might
! 	 * have changed recently. */
! 	if (!XGetWMNormalHints(xterm_dpy, x11_window, &xterm_hints, &got_hints)
! 		|| !(got_hints & PResizeInc)
  		|| xterm_hints.width_inc <= 1
  		|| xterm_hints.height_inc <= 1)
  	{
*** ../vim-7.1.224/src/version.c	Sun Jan 13 16:17:02 2008
--- src/version.c	Sun Jan 13 16:29:51 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     225,
  /**/

-- 
"When I die, I want a tombstone that says "GAME OVER" - Ton Richters

 /// 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.226 ---
To: vim-dev at vim.org
Subject: Patch 7.1.226
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.226
Problem:    Command line completion doesn't work when a file name contains a
	    '&' character.
Solution:   Accept all characters in a file name, except ones that end a
	    command or white space.
Files:	    src/ex_docmd.c


*** ../vim-7.1.225/src/ex_docmd.c	Wed Jan  9 20:29:51 2008
--- src/ex_docmd.c	Wed Jan  9 20:11:13 2008
***************
*** 3338,3349 ****
  		}
  		in_quote = !in_quote;
  	    }
  #ifdef SPACE_IN_FILENAME
! 	    else if (!vim_isfilec_or_wc(c)
! 					 && (!(ea.argt & NOSPC) || usefilter))
! #else
! 	    else if (!vim_isfilec_or_wc(c))
  #endif
  	    {
  		while (*p != NUL)
  		{
--- 3338,3350 ----
  		}
  		in_quote = !in_quote;
  	    }
+ 	    /* An argument can contain just about everything, except
+ 	     * characters that end the command and white space. */
+ 	    else if (c == '|' || c == '\n' || c == '"' || (vim_iswhite(c)
  #ifdef SPACE_IN_FILENAME
! 					 && (!(ea.argt & NOSPC) || usefilter)
  #endif
+ 		    ))
  	    {
  		while (*p != NUL)
  		{
*** ../vim-7.1.225/src/version.c	Sun Jan 13 16:30:23 2008
--- src/version.c	Sun Jan 13 17:10:15 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     226,
  /**/

-- 
   [Another hideous roar.]
BEDEVERE: That's it!
ARTHUR:   What?
BEDEVERE: It's The Legendary Black Beast of Aaaaarrrrrrggghhh!
                 "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.227 ---
To: vim-dev at vim.org
Subject: Patch 7.1.227
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.227
Problem:    Hang in syntax HL when moving over a ")". (Dominique Pelle)
Solution:   Avoid storing a syntax state in the wrong position in the list of
	    remembered states.
Files:	    src/syntax.c


*** ../vim-7.1.226/src/syntax.c	Sat Jan 12 16:45:25 2008
--- src/syntax.c	Sat Jan 12 16:45:44 2008
***************
*** 372,378 ****
  static int syn_stack_cleanup __ARGS((void));
  static void syn_stack_free_entry __ARGS((buf_T *buf, synstate_T *p));
  static synstate_T *syn_stack_find_entry __ARGS((linenr_T lnum));
! static synstate_T *store_current_state __ARGS((synstate_T *sp));
  static void load_current_state __ARGS((synstate_T *from));
  static void invalidate_current_state __ARGS((void));
  static int syn_stack_equal __ARGS((synstate_T *sp));
--- 372,378 ----
  static int syn_stack_cleanup __ARGS((void));
  static void syn_stack_free_entry __ARGS((buf_T *buf, synstate_T *p));
  static synstate_T *syn_stack_find_entry __ARGS((linenr_T lnum));
! static synstate_T *store_current_state __ARGS((void));
  static void load_current_state __ARGS((synstate_T *from));
  static void invalidate_current_state __ARGS((void));
  static int syn_stack_equal __ARGS((synstate_T *sp));
***************
*** 464,470 ****
      synstate_T	*p;
      synstate_T	*last_valid = NULL;
      synstate_T	*last_min_valid = NULL;
!     synstate_T	*sp, *prev;
      linenr_T	parsed_lnum;
      linenr_T	first_stored;
      int		dist;
--- 464,470 ----
      synstate_T	*p;
      synstate_T	*last_valid = NULL;
      synstate_T	*last_min_valid = NULL;
!     synstate_T	*sp, *prev = NULL;
      linenr_T	parsed_lnum;
      linenr_T	first_stored;
      int		dist;
***************
*** 502,508 ****
  	if (!current_state_stored)
  	{
  	    ++current_lnum;
! 	    (void)store_current_state(NULL);
  	}
  
  	/*
--- 502,508 ----
  	if (!current_state_stored)
  	{
  	    ++current_lnum;
! 	    (void)store_current_state();
  	}
  
  	/*
***************
*** 558,564 ****
  	dist = 999999;
      else
  	dist = syn_buf->b_ml.ml_line_count / (syn_buf->b_sst_len - Rows) + 1;
-     prev = syn_stack_find_entry(current_lnum);
      while (current_lnum < lnum)
      {
  	syn_start_line();
--- 558,563 ----
***************
*** 573,581 ****
  	     * equal to the current state.  If so, then validate all saved
  	     * states that depended on a change before the parsed line. */
  	    if (prev == NULL)
  		sp = syn_buf->b_sst_first;
  	    else
! 		sp = prev->sst_next;
  	    if (sp != NULL
  		    && sp->sst_lnum == current_lnum
  		    && syn_stack_equal(sp))
--- 572,584 ----
  	     * equal to the current state.  If so, then validate all saved
  	     * states that depended on a change before the parsed line. */
  	    if (prev == NULL)
+ 		prev = syn_stack_find_entry(current_lnum - 1);
+ 	    if (prev == NULL)
  		sp = syn_buf->b_sst_first;
  	    else
! 		sp = prev;
! 	    while (sp != NULL && sp->sst_lnum < current_lnum)
! 		sp = sp->sst_next;
  	    if (sp != NULL
  		    && sp->sst_lnum == current_lnum
  		    && syn_stack_equal(sp))
***************
*** 601,607 ****
  	    else if (prev == NULL
  			|| current_lnum == lnum
  			|| current_lnum >= prev->sst_lnum + dist)
! 		prev = store_current_state(prev);
  	}
  
  	/* This can take a long time: break when CTRL-C pressed.  The current
--- 604,610 ----
  	    else if (prev == NULL
  			|| current_lnum == lnum
  			|| current_lnum >= prev->sst_lnum + dist)
! 		prev = store_current_state();
  	}
  
  	/* This can take a long time: break when CTRL-C pressed.  The current
***************
*** 1353,1369 ****
   * The current state must be valid for the start of the current_lnum line!
   */
      static synstate_T *
! store_current_state(sp)
!     synstate_T	*sp;	/* at or before where state is to be saved or
! 				   NULL */
  {
      int		i;
      synstate_T	*p;
      bufstate_T	*bp;
      stateitem_T	*cur_si;
! 
!     if (sp == NULL)
! 	sp = syn_stack_find_entry(current_lnum);
  
      /*
       * If the current state contains a start or end pattern that continues
--- 1356,1368 ----
   * The current state must be valid for the start of the current_lnum line!
   */
      static synstate_T *
! store_current_state()
  {
      int		i;
      synstate_T	*p;
      bufstate_T	*bp;
      stateitem_T	*cur_si;
!     synstate_T	*sp = syn_stack_find_entry(current_lnum);
  
      /*
       * If the current state contains a start or end pattern that continues
***************
*** 1667,1673 ****
  	     * Store the current state in b_sst_array[] for later use.
  	     */
  	    ++current_lnum;
! 	    (void)store_current_state(NULL);
  	}
      }
  
--- 1666,1672 ----
  	     * Store the current state in b_sst_array[] for later use.
  	     */
  	    ++current_lnum;
! 	    (void)store_current_state();
  	}
      }
  
*** ../vim-7.1.226/src/version.c	Sun Jan 13 17:11:25 2008
--- src/version.c	Sun Jan 13 17:37:10 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     227,
  /**/

-- 
Dreams are free, but there's a small charge for alterations.

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


--- NEW FILE 7.1.228 ---
To: vim-dev at vim.org
Subject: Patch 7.1.228
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.228
Problem:    When 'foldmethod' is "indent" and a fold is created with ">>" it
	    can't be closed with "zc".  (Daniel Shahaf)
Solution:   Reset the "small" flag of a fold when adding a line to it.
Files:	    src/fold.c


*** ../vim-7.1.227/src/fold.c	Sun Oct 14 15:32:10 2007
--- src/fold.c	Sun Jan 13 21:26:48 2008
***************
*** 2676,2681 ****
--- 2676,2682 ----
      if (fp->fd_len < flp->lnum - fp->fd_top)
      {
  	fp->fd_len = flp->lnum - fp->fd_top;
+ 	fp->fd_small = MAYBE;
  	fold_changed = TRUE;
      }
  
*** ../vim-7.1.227/src/version.c	Sun Jan 13 17:39:29 2008
--- src/version.c	Sun Jan 13 21:56:53 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     228,
  /**/

-- 
VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur
            and his knights seemed hopeless,  when, suddenly ... the animator
            suffered a fatal heart attack.
ANIMATOR:   Aaaaagh!
VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could
            continue.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.1.229 ---
To: vim-dev at vim.org
Subject: Patch 7.1.229
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.229
Problem:    A fold is closed when it shouldn't when 'foldmethod' is "indent"
	    and backspacing a non-white character so that the indent increases.
Solution:   Keep the fold open after backspacing a character.
Files:	    src/edit.c


*** ../vim-7.1.228/src/edit.c	Sat Jan 12 18:13:05 2008
--- src/edit.c	Mon Jan 14 20:06:43 2008
***************
*** 8618,8623 ****
--- 8619,8632 ----
      if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0)
  	dollar_vcol = curwin->w_virtcol;
  
+ #ifdef FEAT_FOLDING
+     /* When deleting a char the cursor line must never be in a closed fold.
+      * E.g., when 'foldmethod' is indent and deleting the first non-white
+      * char before a Tab. */
+     if (did_backspace)
+ 	foldOpenCursor();
+ #endif
+ 
      return did_backspace;
  }
  
*** ../vim-7.1.228/src/version.c	Sun Jan 13 21:57:25 2008
--- src/version.c	Mon Jan 14 20:08:35 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     229,
  /**/

-- 
ROBIN:  (warily) And if you get a question wrong?
ARTHUR: You are cast into the Gorge of Eternal Peril.
ROBIN:  Oh ... wacho!
                 "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.230 ---
To: vim-dev at vim.org
Subject: Patch 7.1.230
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.230
Problem:    Memory leak when executing SourceCmd autocommands.
Solution:   Free the memory. (Dominique Pelle)
Files:	    src/ex_cmds2.c


*** ../vim-7.1.229/src/ex_cmds2.c	Sun Jan  6 20:05:36 2008
--- src/ex_cmds2.c	Tue Jan 15 20:41:28 2008
***************
*** 2889,2899 ****
      if (has_autocmd(EVENT_SOURCECMD, fname_exp, NULL)
  	    && apply_autocmds(EVENT_SOURCECMD, fname_exp, fname_exp,
  							       FALSE, curbuf))
  # ifdef FEAT_EVAL
! 	return aborting() ? FAIL : OK;
  # else
! 	return OK;
  # endif
  
      /* Apply SourcePre autocommands, they may get the file. */
      apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
--- 2889,2902 ----
      if (has_autocmd(EVENT_SOURCECMD, fname_exp, NULL)
  	    && apply_autocmds(EVENT_SOURCECMD, fname_exp, fname_exp,
  							       FALSE, curbuf))
+     {
  # ifdef FEAT_EVAL
! 	retval = aborting() ? FAIL : OK;
  # else
! 	retval = OK;
  # endif
+ 	goto theend;
+     }
  
      /* Apply SourcePre autocommands, they may get the file. */
      apply_autocmds(EVENT_SOURCEPRE, fname_exp, fname_exp, FALSE, curbuf);
*** ../vim-7.1.229/src/version.c	Mon Jan 14 20:11:37 2008
--- src/version.c	Tue Jan 15 22:15:03 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     230,
  /**/

-- 
Citizens are not allowed to attend a movie house or theater nor ride in a
public streetcar within at least four hours after eating garlic.
		[real standing law in Indiana, United States of America]

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


--- NEW FILE 7.1.231 ---
To: vim-dev at vim.org
Subject: Patch 7.1.231
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.231
Problem:    When shifting lines the change is acted upon multiple times.
Solution:   Don't have shift_line() call changed_bytes.
Files:	    src/edit.c, src/ops.c, src/proto/edit.pro, src/proto/ops.pro


*** ../vim-7.1.230/src/edit.c	Mon Jan 14 20:11:37 2008
--- src/edit.c	Mon Jan 14 20:06:43 2008
***************
*** 1662,1672 ****
   * if round is TRUE, round the indent to 'shiftwidth' (only with _INC and _Dec).
   */
      void
! change_indent(type, amount, round, replaced)
      int		type;
      int		amount;
      int		round;
      int		replaced;	/* replaced character, put on replace stack */
  {
      int		vcol;
      int		last_vcol;
--- 1662,1673 ----
   * if round is TRUE, round the indent to 'shiftwidth' (only with _INC and _Dec).
   */
      void
! change_indent(type, amount, round, replaced, call_changed_bytes)
      int		type;
      int		amount;
      int		round;
      int		replaced;	/* replaced character, put on replace stack */
+     int		call_changed_bytes;	/* call changed_bytes() */
  {
      int		vcol;
      int		last_vcol;
***************
*** 1723,1729 ****
       * Set the new indent.  The cursor will be put on the first non-blank.
       */
      if (type == INDENT_SET)
! 	(void)set_indent(amount, SIN_CHANGED);
      else
      {
  #ifdef FEAT_VREPLACE
--- 1724,1730 ----
       * Set the new indent.  The cursor will be put on the first non-blank.
       */
      if (type == INDENT_SET)
! 	(void)set_indent(amount, call_changed_bytes ? SIN_CHANGED : 0);
      else
      {
  #ifdef FEAT_VREPLACE
***************
*** 1733,1739 ****
  	if (State & VREPLACE_FLAG)
  	    State = INSERT;
  #endif
! 	shift_line(type == INDENT_DEC, round, 1);
  #ifdef FEAT_VREPLACE
  	State = save_State;
  #endif
--- 1734,1740 ----
  	if (State & VREPLACE_FLAG)
  	    State = INSERT;
  #endif
! 	shift_line(type == INDENT_DEC, round, 1, call_changed_bytes);
  #ifdef FEAT_VREPLACE
  	State = save_State;
  #endif
***************
*** 5921,5927 ****
  	    {
  #ifdef FEAT_VREPLACE
  		if (State & VREPLACE_FLAG)
! 		    change_indent(INDENT_SET, second_indent, FALSE, NUL);
  		else
  #endif
  		    (void)set_indent(second_indent, SIN_CHANGED);
--- 5922,5928 ----
  	    {
  #ifdef FEAT_VREPLACE
  		if (State & VREPLACE_FLAG)
! 		    change_indent(INDENT_SET, second_indent, FALSE, NUL, TRUE);
  		else
  #endif
  		    (void)set_indent(second_indent, SIN_CHANGED);
***************
*** 7227,7233 ****
  fixthisline(get_the_indent)
      int (*get_the_indent) __ARGS((void));
  {
!     change_indent(INDENT_SET, get_the_indent(), FALSE, 0);
      if (linewhite(curwin->w_cursor.lnum))
  	did_ai = TRUE;	    /* delete the indent if the line stays empty */
  }
--- 7228,7234 ----
  fixthisline(get_the_indent)
      int (*get_the_indent) __ARGS((void));
  {
!     change_indent(INDENT_SET, get_the_indent(), FALSE, 0, TRUE);
      if (linewhite(curwin->w_cursor.lnum))
  	did_ai = TRUE;	    /* delete the indent if the line stays empty */
  }
***************
*** 8170,8179 ****
  	    replace_pop_ins();
  	if (lastc == '^')
  	    old_indent = get_indent();	/* remember curr. indent */
! 	change_indent(INDENT_SET, 0, TRUE, 0);
      }
      else
! 	change_indent(c == Ctrl_D ? INDENT_DEC : INDENT_INC, 0, TRUE, 0);
  
      if (did_ai && *skipwhite(ml_get_curline()) != NUL)
  	did_ai = FALSE;
--- 8171,8180 ----
  	    replace_pop_ins();
  	if (lastc == '^')
  	    old_indent = get_indent();	/* remember curr. indent */
! 	change_indent(INDENT_SET, 0, TRUE, 0, TRUE);
      }
      else
! 	change_indent(c == Ctrl_D ? INDENT_DEC : INDENT_INC, 0, TRUE, 0, TRUE);
  
      if (did_ai && *skipwhite(ml_get_curline()) != NUL)
  	did_ai = FALSE;
***************
*** 9633,9639 ****
  	    curwin->w_cursor = old_pos;
  #ifdef FEAT_VREPLACE
  	    if (State & VREPLACE_FLAG)
! 		change_indent(INDENT_SET, i, FALSE, NUL);
  	    else
  #endif
  		(void)set_indent(i, SIN_CHANGED);
--- 9634,9640 ----
  	    curwin->w_cursor = old_pos;
  #ifdef FEAT_VREPLACE
  	    if (State & VREPLACE_FLAG)
! 		change_indent(INDENT_SET, i, FALSE, NUL, TRUE);
  	    else
  #endif
  		(void)set_indent(i, SIN_CHANGED);
***************
*** 9662,9668 ****
  		curwin->w_cursor = old_pos;
  	    }
  	    if (temp)
! 		shift_line(TRUE, FALSE, 1);
  	}
      }
  
--- 9663,9669 ----
  		curwin->w_cursor = old_pos;
  	    }
  	    if (temp)
! 		shift_line(TRUE, FALSE, 1, TRUE);
  	}
      }
  
*** ../vim-7.1.230/src/ops.c	Thu Jan  3 16:31:17 2008
--- src/ops.c	Sun Jan 13 21:52:18 2008
***************
*** 258,264 ****
  	    if (first_char != '#' || !preprocs_left())
  #endif
  	{
! 	    shift_line(oap->op_type == OP_LSHIFT, p_sr, amount);
  	}
  	++curwin->w_cursor.lnum;
      }
--- 258,264 ----
  	    if (first_char != '#' || !preprocs_left())
  #endif
  	{
! 	    shift_line(oap->op_type == OP_LSHIFT, p_sr, amount, FALSE);
  	}
  	++curwin->w_cursor.lnum;
      }
***************
*** 321,330 ****
   * leaves cursor on first blank in the line
   */
      void
! shift_line(left, round, amount)
      int	left;
      int	round;
      int	amount;
  {
      int		count;
      int		i, j;
--- 321,331 ----
   * leaves cursor on first blank in the line
   */
      void
! shift_line(left, round, amount, call_changed_bytes)
      int	left;
      int	round;
      int	amount;
+     int call_changed_bytes;	/* call changed_bytes() */
  {
      int		count;
      int		i, j;
***************
*** 363,372 ****
      /* Set new indent */
  #ifdef FEAT_VREPLACE
      if (State & VREPLACE_FLAG)
! 	change_indent(INDENT_SET, count, FALSE, NUL);
      else
  #endif
! 	(void)set_indent(count, SIN_CHANGED);
  }
  
  #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
--- 364,373 ----
      /* Set new indent */
  #ifdef FEAT_VREPLACE
      if (State & VREPLACE_FLAG)
! 	change_indent(INDENT_SET, count, FALSE, NUL, call_changed_bytes);
      else
  #endif
! 	(void)set_indent(count, call_changed_bytes ? SIN_CHANGED : 0);
  }
  
  #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
*** ../vim-7.1.230/src/proto/edit.pro	Wed Jan  2 17:48:24 2008
--- src/proto/edit.pro	Sun Jan 13 21:52:27 2008
***************
*** 3,9 ****
  void edit_putchar __ARGS((int c, int highlight));
  void edit_unputchar __ARGS((void));
  void display_dollar __ARGS((colnr_T col));
! void change_indent __ARGS((int type, int amount, int round, int replaced));
  void truncate_spaces __ARGS((char_u *line));
  void backspace_until_column __ARGS((int col));
  int vim_is_ctrl_x_key __ARGS((int c));
--- 3,9 ----
  void edit_putchar __ARGS((int c, int highlight));
  void edit_unputchar __ARGS((void));
  void display_dollar __ARGS((colnr_T col));
! void change_indent __ARGS((int type, int amount, int round, int replaced, int call_changed_bytes));
  void truncate_spaces __ARGS((char_u *line));
  void backspace_until_column __ARGS((int col));
  int vim_is_ctrl_x_key __ARGS((int c));
*** ../vim-7.1.230/src/proto/ops.pro	Sun May  6 13:56:32 2007
--- src/proto/ops.pro	Sun Jan 13 21:52:30 2008
***************
*** 4,10 ****
  int get_op_char __ARGS((int optype));
  int get_extra_op_char __ARGS((int optype));
  void op_shift __ARGS((oparg_T *oap, int curs_top, int amount));
! void shift_line __ARGS((int left, int round, int amount));
  void op_reindent __ARGS((oparg_T *oap, int (*how)(void)));
  int get_expr_register __ARGS((void));
  void set_expr_line __ARGS((char_u *new_line));
--- 4,10 ----
  int get_op_char __ARGS((int optype));
  int get_extra_op_char __ARGS((int optype));
  void op_shift __ARGS((oparg_T *oap, int curs_top, int amount));
! void shift_line __ARGS((int left, int round, int amount, int call_changed_bytes));
  void op_reindent __ARGS((oparg_T *oap, int (*how)(void)));
  int get_expr_register __ARGS((void));
  void set_expr_line __ARGS((char_u *new_line));
*** ../vim-7.1.230/src/version.c	Tue Jan 15 22:16:36 2008
--- src/version.c	Wed Jan 16 19:58:25 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     231,
  /**/

-- 
Snoring is prohibited unless all bedroom windows are closed and securely
locked.
		[real standing law in Massachusetts, United States of America]

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


--- NEW FILE 7.1.232 ---
To: vim-dev at vim.org
Subject: Patch 7.1.232
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.232 (after 7.1.207 and 7.1.211)
Problem:    Compiler warnings with MSVC.
Solution:   Add type casts. (Mike Williams)
Files:	    src/ex_cmds2.c, src/netbeans.c


*** ../vim-7.1.231/src/ex_cmds2.c	Tue Jan 15 22:16:36 2008
--- src/ex_cmds2.c	Tue Jan 15 20:41:28 2008
***************
*** 916,922 ****
  
  	QueryPerformanceCounter(tm);
  	QueryPerformanceFrequency(&fr);
! 	tm->QuadPart +=  (double)msec / 1000.0 * (double)fr.QuadPart;
  # else
  	long	    usec;
  
--- 916,922 ----
  
  	QueryPerformanceCounter(tm);
  	QueryPerformanceFrequency(&fr);
! 	tm->QuadPart += (LONGLONG)((double)msec / 1000.0 * (double)fr.QuadPart);
  # else
  	long	    usec;
  
*** ../vim-7.1.231/src/netbeans.c	Sat Jan  5 18:06:33 2008
--- src/netbeans.c	Mon Jan 14 21:11:02 2008
***************
*** 1217,1223 ****
  
      oldtext = ml_get(lnum);
      oldlen = STRLEN(oldtext);
!     if (first >= oldlen || oldlen == 0)  /* just in case */
  	return;
      if (lastbyte >= oldlen)
  	lastbyte = oldlen - 1;
--- 1217,1223 ----
  
      oldtext = ml_get(lnum);
      oldlen = STRLEN(oldtext);
!     if (first >= (colnr_T)oldlen || oldlen == 0)  /* just in case */
  	return;
      if (lastbyte >= oldlen)
  	lastbyte = oldlen - 1;
*** ../vim-7.1.231/src/version.c	Wed Jan 16 20:01:14 2008
--- src/version.c	Fri Jan 18 11:38:39 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     232,
  /**/

-- 
Why is "abbreviation" such a long word?

 /// 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.233 ---
To: vim-dev at vim.org
Subject: Patch 7.1.233
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.233
Problem:    Crash when doing Insert mode completion for a user defined
	    command.  (Yegappan Lakshmanan)
Solution:   Don't use the non-existing command line.
Files:	    src/ex_getln.c


*** ../vim-7.1.232/src/ex_getln.c	Fri Jan  4 15:16:57 2008
--- src/ex_getln.c	Fri Jan 18 13:07:11 2008
***************
*** 4655,4661 ****
  static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T	*xp, int *num_file, char_u ***file));
  
  /*
!  * call "user_expand_func()" to invoke a user defined VimL function and return
   * the result (either a string or a List).
   */
      static void *
--- 4655,4661 ----
  static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T	*xp, int *num_file, char_u ***file));
  
  /*
!  * Call "user_expand_func()" to invoke a user defined VimL function and return
   * the result (either a string or a List).
   */
      static void *
***************
*** 4677,4687 ****
      *num_file = 0;
      *file = NULL;
  
!     keep = ccline.cmdbuff[ccline.cmdlen];
!     ccline.cmdbuff[ccline.cmdlen] = 0;
!     sprintf((char *)num, "%d", ccline.cmdpos);
      args[0] = xp->xp_pattern;
-     args[1] = ccline.cmdbuff;
      args[2] = num;
  
      /* Save the cmdline, we don't know what the function may do. */
--- 4677,4698 ----
      *num_file = 0;
      *file = NULL;
  
!     if (ccline.cmdbuff == NULL)
!     {
! 	/* Completion from Insert mode, pass fake arguments. */
! 	keep = 0;
! 	sprintf((char *)num, "%d", STRLEN(xp->xp_pattern));
! 	args[1] = xp->xp_pattern;
!     }
!     else
!     {
! 	/* Completion on the command line, pass real arguments. */
! 	keep = ccline.cmdbuff[ccline.cmdlen];
! 	ccline.cmdbuff[ccline.cmdlen] = 0;
! 	sprintf((char *)num, "%d", ccline.cmdpos);
! 	args[1] = ccline.cmdbuff;
!     }
      args[0] = xp->xp_pattern;
      args[2] = num;
  
      /* Save the cmdline, we don't know what the function may do. */
***************
*** 4694,4701 ****
  
      ccline = save_ccline;
      current_SID = save_current_SID;
! 
!     ccline.cmdbuff[ccline.cmdlen] = keep;
  
      return ret;
  }
--- 4705,4712 ----
  
      ccline = save_ccline;
      current_SID = save_current_SID;
!     if (ccline.cmdbuff != NULL)
! 	ccline.cmdbuff[ccline.cmdlen] = keep;
  
      return ret;
  }
*** ../vim-7.1.232/src/version.c	Fri Jan 18 11:40:02 2008
--- src/version.c	Fri Jan 18 13:01:05 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     233,
  /**/

-- 
"I love deadlines.  I especially like the whooshing sound they
make as they go flying by."
                         -- Douglas Adams

 /// 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.234 ---
To: vim-dev at vim.org
Subject: Patch 7.1.234
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.234
Problem:    When diff'ing three files the third one isn't displayed correctly.
	    (Gary Johnson)
Solution:   Compute the size of diff blocks correctly when merging blocks.
	    Compute filler lines correctly when scrolling.
Files:	    src/diff.c


*** ../vim-7.1.233/src/diff.c	Fri Oct 19 18:57:33 2007
--- src/diff.c	Fri Jan 18 17:32:31 2008
***************
*** 1299,1305 ****
  	    }
  	    else
  		/* second overlap of new block with existing block */
! 		dp->df_count[idx_new] += count_new - count_orig;
  
  	    /* Adjust the size of the block to include all the lines to the
  	     * end of the existing block or the new diff, whatever ends last. */
--- 1299,1307 ----
  	    }
  	    else
  		/* second overlap of new block with existing block */
! 		dp->df_count[idx_new] += count_new - count_orig
! 		    + dpl->df_lnum[idx_orig] + dpl->df_count[idx_orig]
! 		    - (dp->df_lnum[idx_orig] + dp->df_count[idx_orig]);
  
  	    /* Adjust the size of the block to include all the lines to the
  	     * end of the existing block or the new diff, whatever ends last. */
***************
*** 1628,1641 ****
      win_T	*fromwin;
      win_T	*towin;
  {
!     buf_T	*buf = fromwin->w_buffer;
      linenr_T	lnum = fromwin->w_topline;
!     int		idx;
      diff_T	*dp;
      int		i;
  
!     idx = diff_buf_idx(buf);
!     if (idx == DB_COUNT)
  	return;		/* safety check */
  
      if (curtab->tp_diff_invalid)
--- 1630,1645 ----
      win_T	*fromwin;
      win_T	*towin;
  {
!     buf_T	*frombuf = fromwin->w_buffer;
      linenr_T	lnum = fromwin->w_topline;
!     int		fromidx;
!     int		toidx;
      diff_T	*dp;
+     int		max_count;
      int		i;
  
!     fromidx = diff_buf_idx(frombuf);
!     if (fromidx == DB_COUNT)
  	return;		/* safety check */
  
      if (curtab->tp_diff_invalid)
***************
*** 1645,1686 ****
  
      /* search for a change that includes "lnum" in the list of diffblocks. */
      for (dp = curtab->tp_first_diff; dp != NULL; dp = dp->df_next)
! 	if (lnum <= dp->df_lnum[idx] + dp->df_count[idx])
  	    break;
      if (dp == NULL)
      {
  	/* After last change, compute topline relative to end of file; no
  	 * filler lines. */
  	towin->w_topline = towin->w_buffer->b_ml.ml_line_count
! 					   - (buf->b_ml.ml_line_count - lnum);
      }
      else
      {
  	/* Find index for "towin". */
! 	i = diff_buf_idx(towin->w_buffer);
! 	if (i == DB_COUNT)
  	    return;		/* safety check */
  
! 	towin->w_topline = lnum + (dp->df_lnum[i] - dp->df_lnum[idx]);
! 	if (lnum >= dp->df_lnum[idx])
  	{
! 	    /* Inside a change: compute filler lines. */
! 	    if (dp->df_count[i] == dp->df_count[idx])
  		towin->w_topfill = fromwin->w_topfill;
! 	    else if (dp->df_count[i] > dp->df_count[idx])
  	    {
! 		if (lnum == dp->df_lnum[idx] + dp->df_count[idx])
! 		    towin->w_topline = dp->df_lnum[i] + dp->df_count[i]
! 							 - fromwin->w_topfill;
  	    }
! 	    else
  	    {
! 		if (towin->w_topline >= dp->df_lnum[i] + dp->df_count[i])
  		{
! 		    if (diff_flags & DIFF_FILLER)
! 			towin->w_topfill = dp->df_lnum[idx]
! 						   + dp->df_count[idx] - lnum;
! 		    towin->w_topline = dp->df_lnum[i] + dp->df_count[i];
  		}
  	    }
  	}
--- 1649,1720 ----
  
      /* search for a change that includes "lnum" in the list of diffblocks. */
      for (dp = curtab->tp_first_diff; dp != NULL; dp = dp->df_next)
! 	if (lnum <= dp->df_lnum[fromidx] + dp->df_count[fromidx])
  	    break;
      if (dp == NULL)
      {
  	/* After last change, compute topline relative to end of file; no
  	 * filler lines. */
  	towin->w_topline = towin->w_buffer->b_ml.ml_line_count
! 				       - (frombuf->b_ml.ml_line_count - lnum);
      }
      else
      {
  	/* Find index for "towin". */
! 	toidx = diff_buf_idx(towin->w_buffer);
! 	if (toidx == DB_COUNT)
  	    return;		/* safety check */
  
! 	towin->w_topline = lnum + (dp->df_lnum[toidx] - dp->df_lnum[fromidx]);
! 	if (lnum >= dp->df_lnum[fromidx])
  	{
! 	    /* Inside a change: compute filler lines. With three or more
! 	     * buffers we need to know the largest count. */
! 	    max_count = 0;
! 	    for (i = 0; i < DB_COUNT; ++i)
! 		if (curtab->tp_diffbuf[i] != NULL
! 					       && max_count < dp->df_count[i])
! 		    max_count = dp->df_count[i];
! 
! 	    if (dp->df_count[toidx] == dp->df_count[fromidx])
! 	    {
! 		/* same number of lines: use same filler count */
  		towin->w_topfill = fromwin->w_topfill;
! 	    }
! 	    else if (dp->df_count[toidx] > dp->df_count[fromidx])
  	    {
! 		if (lnum == dp->df_lnum[fromidx] + dp->df_count[fromidx])
! 		{
! 		    /* more lines in towin and fromwin doesn't show diff
! 		     * lines, only filler lines */
! 		    if (max_count - fromwin->w_topfill >= dp->df_count[toidx])
! 		    {
! 			/* towin also only shows filler lines */
! 			towin->w_topline = dp->df_lnum[toidx]
! 						       + dp->df_count[toidx];
! 			towin->w_topfill = fromwin->w_topfill;
! 		    }
! 		    else
! 			/* towin still has some diff lines to show */
! 			towin->w_topline = dp->df_lnum[toidx]
! 					     + max_count - fromwin->w_topfill;
! 		}
  	    }
! 	    else if (towin->w_topline >= dp->df_lnum[toidx]
! 							+ dp->df_count[toidx])
  	    {
! 		/* less lines in towin and no diff lines to show: compute
! 		 * filler lines */
! 		towin->w_topline = dp->df_lnum[toidx] + dp->df_count[toidx];
! 		if (diff_flags & DIFF_FILLER)
  		{
! 		    if (lnum == dp->df_lnum[fromidx] + dp->df_count[fromidx])
! 			/* fromwin is also out of diff lines */
! 			towin->w_topfill = fromwin->w_topfill;
! 		    else
! 			/* fromwin has some diff lines */
! 			towin->w_topfill = dp->df_lnum[fromidx]
! 							   + max_count - lnum;
  		}
  	    }
  	}
*** ../vim-7.1.233/src/version.c	Fri Jan 18 13:15:32 2008
--- src/version.c	Fri Jan 18 17:37:32 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     234,
  /**/

-- 
ERIC IDLE PLAYED: THE DEAD COLLECTOR, MR BINT (A VILLAGE NE'ER-DO -WELL VERY
                  KEEN ON BURNING WITCHES), SIR ROBIN, THE GUARD WHO DOESN'T
                  HICOUGH BUT TRIES TO GET THINGS STRAIGHT, CONCORDE (SIR
                  LAUNCELOT'S TRUSTY STEED), ROGER THE SHRUBBER (A SHRUBBER),
                  BROTHER MAYNARD
                 "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.235 ---
To: vim-dev at vim.org
Subject: Patch 7.1.235
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.235
Problem:    Pattern matching is slow when using a lot of simple patterns.
Solution:   Avoid allocating memory by not freeing it when it's not so much.
	    (Alexei Alexandrov)
Files:	    src/regexp.c


*** ../vim-7.1.234/src/regexp.c	Wed Jan  2 15:34:48 2008
--- src/regexp.c	Fri Jan 18 20:35:21 2008
***************
*** 378,391 ****
  
  static char_u		*reg_prev_sub = NULL;
  
- #if defined(EXITFREE) || defined(PROTO)
-     void
- free_regexp_stuff()
- {
-     vim_free(reg_prev_sub);
- }
- #endif
- 
  /*
   * REGEXP_INRANGE contains all characters which are always special in a []
   * range after '\'.
--- 378,383 ----
***************
*** 3206,3217 ****
  } backpos_T;
  
  /*
!  * regstack and backpos are used by regmatch().  They are kept over calls to
!  * avoid invoking malloc() and free() often.
   */
! static garray_T	regstack;	/* stack with regitem_T items, sometimes
! 				   preceded by regstar_T or regbehind_T. */
! static garray_T	backpos;	/* table with backpos_T for BACK */
  
  /*
   * Get pointer to the line "lnum", which is relative to "reg_firstlnum".
--- 3198,3236 ----
  } backpos_T;
  
  /*
!  * "regstack" and "backpos" are used by regmatch().  They are kept over calls
!  * to avoid invoking malloc() and free() often.
!  * "regstack" is a stack with regitem_T items, sometimes preceded by regstar_T
!  * or regbehind_T.
!  * "backpos_T" is a table with backpos_T for BACK
!  */
! static garray_T	regstack = {0, 0, 0, 0, NULL};
! static garray_T	backpos = {0, 0, 0, 0, NULL};
! 
! /*
!  * Both for regstack and backpos tables we use the following strategy of
!  * allocation (to reduce malloc/free calls):
!  * - Initial size is fairly small.
!  * - When needed, the tables are grown bigger (8 times at first, double after
!  *   that).
!  * - After executing the match we free the memory only if the array has grown.
!  *   Thus the memory is kept allocated when it's at the initial size.
!  * This makes it fast while not keeping a lot of memory allocated.
!  * A three times speed increase was observed when using many simple patterns.
   */
! #define REGSTACK_INITIAL	2048
! #define BACKPOS_INITIAL		64
! 
! #if defined(EXITFREE) || defined(PROTO)
!     void
! free_regexp_stuff()
! {
!     ga_clear(&regstack);
!     ga_clear(&backpos);
!     vim_free(reg_tofree);
!     vim_free(reg_prev_sub);
! }
! #endif
  
  /*
   * Get pointer to the line "lnum", which is relative to "reg_firstlnum".
***************
*** 3346,3360 ****
      char_u	*s;
      long	retval = 0L;
  
!     reg_tofree = NULL;
! 
!     /* Init the regstack empty.  Use an item size of 1 byte, since we push
!      * different things onto it.  Use a large grow size to avoid reallocating
!      * it too often. */
!     ga_init2(&regstack, 1, 10000);
! 
!     /* Init the backpos table empty. */
!     ga_init2(&backpos, sizeof(backpos_T), 10);
  
      if (REG_MULTI)
      {
--- 3365,3389 ----
      char_u	*s;
      long	retval = 0L;
  
!     /* Create "regstack" and "backpos" if they are not allocated yet.
!      * We allocate *_INITIAL amount of bytes first and then set the grow size
!      * to much bigger value to avoid many malloc calls in case of deep regular
!      * expressions.  */
!     if (regstack.ga_data == NULL)
!     {
! 	/* Use an item size of 1 byte, since we push different things
! 	 * onto the regstack. */
! 	ga_init2(&regstack, 1, REGSTACK_INITIAL);
! 	ga_grow(&regstack, REGSTACK_INITIAL);
! 	regstack.ga_growsize = REGSTACK_INITIAL * 8;
!     }
! 
!     if (backpos.ga_data == NULL)
!     {
! 	ga_init2(&backpos, sizeof(backpos_T), BACKPOS_INITIAL);
! 	ga_grow(&backpos, BACKPOS_INITIAL);
! 	backpos.ga_growsize = BACKPOS_INITIAL * 8;
!     }
  
      if (REG_MULTI)
      {
***************
*** 3525,3533 ****
      }
  
  theend:
!     vim_free(reg_tofree);
!     ga_clear(&regstack);
!     ga_clear(&backpos);
  
      return retval;
  }
--- 3554,3570 ----
      }
  
  theend:
!     /* Free "reg_tofree" when it's a bit big.
!      * Free regstack and backpos if they are bigger than their initial size. */
!     if (reg_tofreelen > 400)
!     {
! 	vim_free(reg_tofree);
! 	reg_tofree = NULL;
!     }
!     if (regstack.ga_maxlen > REGSTACK_INITIAL)
! 	ga_clear(&regstack);
!     if (backpos.ga_maxlen > BACKPOS_INITIAL)
! 	ga_clear(&backpos);
  
      return retval;
  }
***************
*** 3717,3724 ****
  #define RA_MATCH	4	/* successful match */
  #define RA_NOMATCH	5	/* didn't match */
  
!   /* Init the regstack and backpos table empty.  They are initialized and
!    * freed in vim_regexec_both() to reduce malloc()/free() calls. */
    regstack.ga_len = 0;
    backpos.ga_len = 0;
  
--- 3754,3761 ----
  #define RA_MATCH	4	/* successful match */
  #define RA_NOMATCH	5	/* didn't match */
  
!   /* Make "regstack" and "backpos" empty.  They are allocated and freed in
!    * vim_regexec_both() to reduce malloc()/free() calls. */
    regstack.ga_len = 0;
    backpos.ga_len = 0;
  
*** ../vim-7.1.234/src/version.c	Fri Jan 18 17:39:10 2008
--- src/version.c	Fri Jan 18 20:33:26 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     235,
  /**/

-- 
NEIL INNES PLAYED: THE FIRST SELF-DESTRUCTIVE MONK, ROBIN'S LEAST FAVORITE
                   MINSTREL, THE PAGE CRUSHED BY A RABBIT, THE OWNER OF A DUCK
                 "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.236 ---
To: vim-dev at vim.org
Subject: Patch 7.1.236
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.236
Problem:    When using 'incsearch' and 'hlsearch' a complicated pattern may
	    make Vim hang until CTRL-C is pressed.
Solution:   Add the 'redrawtime' option.
Files:	    runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c,
	    src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c,
	    src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro,
	    src/proto/search.pro, src/search.c, src/screen.c,
	    src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c,
	    src/vim.h


*** ../vim-7.1.235/runtime/doc/options.txt	Sun Aug 12 16:55:01 2007
--- runtime/doc/options.txt	Sat Jan 19 14:01:22 2008
***************
*** 3618,3623 ****
--- 3636,3642 ----
  	When you get bored looking at the highlighted matches, you can turn it
  	off with |:nohlsearch|.  As soon as you use a search command, the
  	highlighting comes back.
+ 	'redrawtime' specifies the maximum time spend on finding matches.
  	When the search pattern can match an end-of-line, Vim will try to
  	highlight all of the matched text.  However, this depends on where the
  	search starts.  This will be the first line in the window or the first
***************
*** 3851,3856 ****
--- 3870,3879 ----
  	original position when no match is found and when pressing <Esc>.  You
  	still need to finish the search command with <Enter> to move the
  	cursor to the match.
+ 	When compiled with the |+reltime| feature Vim only searches for about
+ 	half a second.  With a complicated pattern and/or a lot of text the
+ 	match may not be found.  This is to avoid that Vim hangs while you
+ 	are typing the pattern.
  	The highlighting can be set with the 'i' flag in 'highlight'.
  	See also: 'hlsearch'.
  	CTRL-L can be used to add one character from after the current match
***************
*** 5185,5190 ****
--- 5210,5227 ----
  	{not in Vi:}  When using the ":view" command the 'readonly' option is
  	set for the newly edited buffer.
  
+ 						*'redrawtime'* *'rdt'*
+ 'redrawtime' 'rdt'	number	(default 2000)
+ 			global
+ 			{not in Vi}
+ 			{only available when compiled with the |+reltime|
+ 			feature}
+ 	The time in milliseconds for redrawing the display.  This applies to
+ 	searching for patterns for 'hlsearch' and |:match| highlighting.
+ 	When redrawing takes more than this many milliseconds no further
+ 	matches will be highlighted.  This is used to avoid that Vim hangs
+ 	when using a very complicated pattern.
+ 
  						*'remap'* *'noremap'*
  'remap'			boolean	(default on)
  			global
*** ../vim-7.1.235/src/ex_cmds.c	Sun Jan 13 13:30:34 2008
--- src/ex_cmds.c	Sat Jan 19 13:04:28 2008
***************
*** 4446,4452 ****
  #endif
  		); ++lnum)
      {
! 	nmatch = vim_regexec_multi(&regmatch, curwin, curbuf, lnum, (colnr_T)0);
  	if (nmatch)
  	{
  	    colnr_T	copycol;
--- 4446,4453 ----
  #endif
  		); ++lnum)
      {
! 	nmatch = vim_regexec_multi(&regmatch, curwin, curbuf, lnum,
! 							    (colnr_T)0, NULL);
  	if (nmatch)
  	{
  	    colnr_T	copycol;
***************
*** 4957,4963 ****
  			|| (do_ask && !re_lookbehind(regmatch.regprog))
  			|| nmatch_tl > 0
  			|| (nmatch = vim_regexec_multi(&regmatch, curwin,
! 				       curbuf, sub_firstlnum, matchcol)) == 0
  			|| regmatch.startpos[0].lnum > 0)
  		{
  		    if (new_start != NULL)
--- 4958,4965 ----
  			|| (do_ask && !re_lookbehind(regmatch.regprog))
  			|| nmatch_tl > 0
  			|| (nmatch = vim_regexec_multi(&regmatch, curwin,
! 							curbuf, sub_firstlnum,
! 							 matchcol, NULL)) == 0
  			|| regmatch.startpos[0].lnum > 0)
  		{
  		    if (new_start != NULL)
***************
*** 5022,5028 ****
  		    }
  		    if (nmatch == -1 && !lastone)
  			nmatch = vim_regexec_multi(&regmatch, curwin, curbuf,
! 						     sub_firstlnum, matchcol);
  
  		    /*
  		     * 5. break if there isn't another match in this line
--- 5024,5030 ----
  		    }
  		    if (nmatch == -1 && !lastone)
  			nmatch = vim_regexec_multi(&regmatch, curwin, curbuf,
! 					       sub_firstlnum, matchcol, NULL);
  
  		    /*
  		     * 5. break if there isn't another match in this line
***************
*** 5252,5258 ****
      for (lnum = eap->line1; lnum <= eap->line2 && !got_int; ++lnum)
      {
  	/* a match on this line? */
! 	match = vim_regexec_multi(&regmatch, curwin, curbuf, lnum, (colnr_T)0);
  	if ((type == 'g' && match) || (type == 'v' && !match))
  	{
  	    ml_setmarked(lnum);
--- 5254,5261 ----
      for (lnum = eap->line1; lnum <= eap->line2 && !got_int; ++lnum)
      {
  	/* a match on this line? */
! 	match = vim_regexec_multi(&regmatch, curwin, curbuf, lnum,
! 							    (colnr_T)0, NULL);
  	if ((type == 'g' && match) || (type == 'v' && !match))
  	{
  	    ml_setmarked(lnum);
*** ../vim-7.1.235/src/ex_docmd.c	Sun Jan 13 17:11:25 2008
--- src/ex_docmd.c	Fri Jan 18 21:01:16 2008
***************
*** 3931,3937 ****
  				curwin->w_cursor.col = 0;
  			    searchcmdlen = 0;
  			    if (!do_search(NULL, c, cmd, 1L,
! 				      SEARCH_HIS + SEARCH_MSG + SEARCH_START))
  			    {
  				curwin->w_cursor = pos;
  				cmd = NULL;
--- 3931,3938 ----
  				curwin->w_cursor.col = 0;
  			    searchcmdlen = 0;
  			    if (!do_search(NULL, c, cmd, 1L,
! 					SEARCH_HIS + SEARCH_MSG + SEARCH_START,
! 					NULL))
  			    {
  				curwin->w_cursor = pos;
  				cmd = NULL;
*** ../vim-7.1.235/src/ex_getln.c	Fri Jan 18 13:15:32 2008
--- src/ex_getln.c	Fri Jan 18 21:34:42 2008
***************
*** 1709,1714 ****
--- 1709,1717 ----
  	if (p_is && !cmd_silent && (firstc == '/' || firstc == '?'))
  	{
  	    pos_T	end_pos;
+ #ifdef FEAT_RELTIME
+ 	    proftime_T	tm;
+ #endif
  
  	    /* if there is a character waiting, search and redraw later */
  	    if (char_avail())
***************
*** 1727,1734 ****
  		cursor_off();		/* so the user knows we're busy */
  		out_flush();
  		++emsg_off;    /* So it doesn't beep if bad expr */
  		i = do_search(NULL, firstc, ccline.cmdbuff, count,
! 			SEARCH_KEEP + SEARCH_OPT + SEARCH_NOOF + SEARCH_PEEK);
  		--emsg_off;
  		/* if interrupted while searching, behave like it failed */
  		if (got_int)
--- 1730,1747 ----
  		cursor_off();		/* so the user knows we're busy */
  		out_flush();
  		++emsg_off;    /* So it doesn't beep if bad expr */
+ #ifdef FEAT_RELTIME
+ 		/* Set the time limit to half a second. */
+ 		profile_setlimit(500L, &tm);
+ #endif
  		i = do_search(NULL, firstc, ccline.cmdbuff, count,
! 			SEARCH_KEEP + SEARCH_OPT + SEARCH_NOOF + SEARCH_PEEK,
! #ifdef FEAT_RELTIME
! 			&tm
! #else
! 			NULL
! #endif
! 			);
  		--emsg_off;
  		/* if interrupted while searching, behave like it failed */
  		if (got_int)
*** ../vim-7.1.235/src/gui.c	Thu Jan  3 16:14:25 2008
--- src/gui.c	Fri Jan 18 21:01:36 2008
***************
*** 5052,5058 ****
  	/* Search for the next match. */
  	i = msg_scroll;
  	do_search(NULL, down ? '/' : '?', ga.ga_data, 1L,
! 						    SEARCH_MSG + SEARCH_MARK);
  	msg_scroll = i;	    /* don't let an error message set msg_scroll */
      }
  
--- 5052,5058 ----
  	/* Search for the next match. */
  	i = msg_scroll;
  	do_search(NULL, down ? '/' : '?', ga.ga_data, 1L,
! 					      SEARCH_MSG + SEARCH_MARK, NULL);
  	msg_scroll = i;	    /* don't let an error message set msg_scroll */
      }
  
*** ../vim-7.1.235/src/misc1.c	Thu Jan  3 12:42:38 2008
--- src/misc1.c	Sat Jan 19 13:04:39 2008
***************
*** 437,443 ****
      {
  	regmatch.rmm_ic = FALSE;
  	regmatch.rmm_maxcol = 0;
! 	if (vim_regexec_multi(&regmatch, curwin, curbuf, lnum, (colnr_T)0))
  	{
  	    pos.lnum = regmatch.endpos[0].lnum + lnum;
  	    pos.col = regmatch.endpos[0].col;
--- 437,444 ----
      {
  	regmatch.rmm_ic = FALSE;
  	regmatch.rmm_maxcol = 0;
! 	if (vim_regexec_multi(&regmatch, curwin, curbuf, lnum,
! 							    (colnr_T)0, NULL))
  	{
  	    pos.lnum = regmatch.endpos[0].lnum + lnum;
  	    pos.col = regmatch.endpos[0].col;
*** ../vim-7.1.235/src/normal.c	Sat Jan 12 17:11:25 2008
--- src/normal.c	Fri Jan 18 21:01:47 2008
***************
*** 6093,6099 ****
      curwin->w_set_curswant = TRUE;
  
      i = do_search(cap->oap, dir, pat, cap->count1,
! 				 opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG);
      if (i == 0)
  	clearop(cap->oap);
      else
--- 6093,6099 ----
      curwin->w_set_curswant = TRUE;
  
      i = do_search(cap->oap, dir, pat, cap->count1,
! 			   opt | SEARCH_OPT | SEARCH_ECHO | SEARCH_MSG, NULL);
      if (i == 0)
  	clearop(cap->oap);
      else
*** ../vim-7.1.235/src/option.c	Tue Oct  2 20:40:01 2007
--- src/option.c	Sat Jan 19 13:44:33 2008
***************
*** 1991,1996 ****
--- 1991,2003 ----
      {"redraw",	    NULL,   P_BOOL|P_VI_DEF,
  			    (char_u *)NULL, PV_NONE,
  			    {(char_u *)FALSE, (char_u *)0L}},
+     {"redrawtime",  "rdt",  P_NUM|P_VI_DEF,
+ #ifdef FEAT_RELTIME
+ 			    (char_u *)&p_rdt, PV_NONE,
+ #else
+ 			    (char_u *)NULL, PV_NONE,
+ #endif
+ 			    {(char_u *)2000L, (char_u *)0L}},
      {"remap",	    NULL,   P_BOOL|P_VI_DEF,
  			    (char_u *)&p_remap, PV_NONE,
  			    {(char_u *)TRUE, (char_u *)0L}},
*** ../vim-7.1.235/src/quickfix.c	Sun Sep 30 14:00:41 2007
--- src/quickfix.c	Sat Jan 19 13:04:53 2008
***************
*** 1803,1809 ****
  	    /* Move the cursor to the first line in the buffer */
  	    save_cursor = curwin->w_cursor;
  	    curwin->w_cursor.lnum = 0;
! 	    if (!do_search(NULL, '/', qf_ptr->qf_pattern, (long)1, SEARCH_KEEP))
  		curwin->w_cursor = save_cursor;
  	}
  
--- 1803,1810 ----
  	    /* Move the cursor to the first line in the buffer */
  	    save_cursor = curwin->w_cursor;
  	    curwin->w_cursor.lnum = 0;
! 	    if (!do_search(NULL, '/', qf_ptr->qf_pattern, (long)1,
! 							   SEARCH_KEEP, NULL))
  		curwin->w_cursor = save_cursor;
  	}
  
***************
*** 3159,3165 ****
  	    {
  		col = 0;
  		while (vim_regexec_multi(&regmatch, curwin, buf, lnum,
! 								     col) > 0)
  		{
  		    ;
  		    if (qf_add_entry(qi, &prevp,
--- 3160,3166 ----
  	    {
  		col = 0;
  		while (vim_regexec_multi(&regmatch, curwin, buf, lnum,
! 							       col, NULL) > 0)
  		{
  		    ;
  		    if (qf_add_entry(qi, &prevp,
*** ../vim-7.1.235/src/regexp.c	Fri Jan 18 20:36:40 2008
--- src/regexp.c	Sat Jan 19 15:18:12 2008
***************
*** 3040,3046 ****
  } save_se_T;
  
  static char_u	*reg_getline __ARGS((linenr_T lnum));
! static long	vim_regexec_both __ARGS((char_u *line, colnr_T col));
  static long	regtry __ARGS((regprog_T *prog, colnr_T col));
  static void	cleanup_subexpr __ARGS((void));
  #ifdef FEAT_SYN_HL
--- 3040,3046 ----
  } save_se_T;
  
  static char_u	*reg_getline __ARGS((linenr_T lnum));
! static long	vim_regexec_both __ARGS((char_u *line, colnr_T col, proftime_T *tm));
  static long	regtry __ARGS((regprog_T *prog, colnr_T col));
  static void	cleanup_subexpr __ARGS((void));
  #ifdef FEAT_SYN_HL
***************
*** 3284,3290 ****
      ireg_icombine = FALSE;
  #endif
      ireg_maxcol = 0;
!     return (vim_regexec_both(line, col) != 0);
  }
  
  #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
--- 3284,3290 ----
      ireg_icombine = FALSE;
  #endif
      ireg_maxcol = 0;
!     return (vim_regexec_both(line, col, NULL) != 0);
  }
  
  #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
***************
*** 3308,3314 ****
      ireg_icombine = FALSE;
  #endif
      ireg_maxcol = 0;
!     return (vim_regexec_both(line, col) != 0);
  }
  #endif
  
--- 3308,3314 ----
      ireg_icombine = FALSE;
  #endif
      ireg_maxcol = 0;
!     return (vim_regexec_both(line, col, NULL) != 0);
  }
  #endif
  
***************
*** 3321,3332 ****
   * match otherwise.
   */
      long
! vim_regexec_multi(rmp, win, buf, lnum, col)
      regmmatch_T	*rmp;
      win_T	*win;		/* window in which to search or NULL */
      buf_T	*buf;		/* buffer in which to search */
      linenr_T	lnum;		/* nr of line to start looking for match */
      colnr_T	col;		/* column to start looking for match */
  {
      long	r;
      buf_T	*save_curbuf = curbuf;
--- 3321,3333 ----
   * match otherwise.
   */
      long
! vim_regexec_multi(rmp, win, buf, lnum, col, tm)
      regmmatch_T	*rmp;
      win_T	*win;		/* window in which to search or NULL */
      buf_T	*buf;		/* buffer in which to search */
      linenr_T	lnum;		/* nr of line to start looking for match */
      colnr_T	col;		/* column to start looking for match */
+     proftime_T	*tm;		/* timeout limit or NULL */
  {
      long	r;
      buf_T	*save_curbuf = curbuf;
***************
*** 3346,3352 ****
  
      /* Need to switch to buffer "buf" to make vim_iswordc() work. */
      curbuf = buf;
!     r = vim_regexec_both(NULL, col);
      curbuf = save_curbuf;
  
      return r;
--- 3347,3353 ----
  
      /* Need to switch to buffer "buf" to make vim_iswordc() work. */
      curbuf = buf;
!     r = vim_regexec_both(NULL, col, tm);
      curbuf = save_curbuf;
  
      return r;
***************
*** 3356,3365 ****
   * Match a regexp against a string ("line" points to the string) or multiple
   * lines ("line" is NULL, use reg_getline()).
   */
      static long
! vim_regexec_both(line, col)
      char_u	*line;
      colnr_T	col;		/* column to start looking for match */
  {
      regprog_T	*prog;
      char_u	*s;
--- 3357,3368 ----
   * Match a regexp against a string ("line" points to the string) or multiple
   * lines ("line" is NULL, use reg_getline()).
   */
+ /*ARGSUSED*/
      static long
! vim_regexec_both(line, col, tm)
      char_u	*line;
      colnr_T	col;		/* column to start looking for match */
+     proftime_T	*tm;		/* timeout limit or NULL */
  {
      regprog_T	*prog;
      char_u	*s;
***************
*** 3502,3507 ****
--- 3505,3513 ----
      }
      else
      {
+ #ifdef FEAT_RELTIME
+ 	int tm_count = 0;
+ #endif
  	/* Messy cases:  unanchored match. */
  	while (!got_int)
  	{
***************
*** 3550,3555 ****
--- 3556,3570 ----
  	    else
  #endif
  		++col;
+ #ifdef FEAT_RELTIME
+ 	    /* Check for timeout once in a twenty times to avoid overhead. */
+ 	    if (tm != NULL && ++tm_count == 20)
+ 	    {
+ 		tm_count = 0;
+ 		if (profile_passed_limit(tm))
+ 		    break;
+ 	    }
+ #endif
  	}
      }
  
*** ../vim-7.1.235/src/proto/regexp.pro	Sat May  5 19:42:08 2007
--- src/proto/regexp.pro	Sat Jan 19 13:14:09 2008
***************
*** 1,13 ****
  /* regexp.c */
- void free_regexp_stuff __ARGS((void));
  int re_multiline __ARGS((regprog_T *prog));
  int re_lookbehind __ARGS((regprog_T *prog));
  char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
  regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
  int vim_regcomp_had_eol __ARGS((void));
  int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
  int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
! long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col));
  reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
  void unref_extmatch __ARGS((reg_extmatch_T *em));
  char_u *regtilde __ARGS((char_u *source, int magic));
--- 1,13 ----
  /* regexp.c */
  int re_multiline __ARGS((regprog_T *prog));
  int re_lookbehind __ARGS((regprog_T *prog));
  char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
  regprog_T *vim_regcomp __ARGS((char_u *expr, int re_flags));
  int vim_regcomp_had_eol __ARGS((void));
+ void free_regexp_stuff __ARGS((void));
  int vim_regexec __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
  int vim_regexec_nl __ARGS((regmatch_T *rmp, char_u *line, colnr_T col));
! long vim_regexec_multi __ARGS((regmmatch_T *rmp, win_T *win, buf_T *buf, linenr_T lnum, colnr_T col, proftime_T *tm));
  reg_extmatch_T *ref_extmatch __ARGS((reg_extmatch_T *em));
  void unref_extmatch __ARGS((reg_extmatch_T *em));
  char_u *regtilde __ARGS((char_u *source, int magic));
*** ../vim-7.1.235/src/proto/search.pro	Sun Jan  6 20:05:36 2008
--- src/proto/search.pro	Fri Jan 18 21:03:49 2008
***************
*** 11,17 ****
  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));
  pos_T *findmatch __ARGS((oparg_T *oap, int initc));
--- 11,17 ----
  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, proftime_T *tm));
  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));
  pos_T *findmatch __ARGS((oparg_T *oap, int initc));
*** ../vim-7.1.235/src/search.c	Sun Jan  6 20:05:36 2008
--- src/search.c	Sat Jan 19 13:13:25 2008
***************
*** 606,612 ****
  		 * Look for a match somewhere in line "lnum".
  		 */
  		nmatched = vim_regexec_multi(&regmatch, win, buf,
! 							    lnum, (colnr_T)0);
  		/* Abort searching on an error (e.g., out of stack). */
  		if (called_emsg)
  		    break;
--- 606,618 ----
  		 * Look for a match somewhere in line "lnum".
  		 */
  		nmatched = vim_regexec_multi(&regmatch, win, buf,
! 						      lnum, (colnr_T)0,
! #ifdef FEAT_RELTIME
! 						      tm
! #else
! 						      NULL
! #endif
! 						      );
  		/* Abort searching on an error (e.g., out of stack). */
  		if (called_emsg)
  		    break;
***************
*** 615,623 ****
  		    /* match may actually be in another line when using \zs */
  		    matchpos = regmatch.startpos[0];
  		    endpos = regmatch.endpos[0];
! # ifdef FEAT_EVAL
  		    submatch = first_submatch(&regmatch);
! # endif
  		    /* Line me be past end of buffer for "\n\zs". */
  		    if (lnum + matchpos.lnum > buf->b_ml.ml_line_count)
  			ptr = (char_u *)"";
--- 621,629 ----
  		    /* match may actually be in another line when using \zs */
  		    matchpos = regmatch.startpos[0];
  		    endpos = regmatch.endpos[0];
! #ifdef FEAT_EVAL
  		    submatch = first_submatch(&regmatch);
! #endif
  		    /* Line me be past end of buffer for "\n\zs". */
  		    if (lnum + matchpos.lnum > buf->b_ml.ml_line_count)
  			ptr = (char_u *)"";
***************
*** 693,699 ****
  			    if (ptr[matchcol] == NUL
  				    || (nmatched = vim_regexec_multi(&regmatch,
  					      win, buf, lnum + matchpos.lnum,
! 					      matchcol)) == 0)
  			    {
  				match_ok = FALSE;
  				break;
--- 699,711 ----
  			    if (ptr[matchcol] == NUL
  				    || (nmatched = vim_regexec_multi(&regmatch,
  					      win, buf, lnum + matchpos.lnum,
! 					      matchcol,
! #ifdef FEAT_RELTIME
! 					      tm
! #else
! 					      NULL
! #endif
! 					      )) == 0)
  			    {
  				match_ok = FALSE;
  				break;
***************
*** 799,805 ****
  			    if (ptr[matchcol] == NUL
  				    || (nmatched = vim_regexec_multi(&regmatch,
  					      win, buf, lnum + matchpos.lnum,
! 							      matchcol)) == 0)
  				break;
  
  			    /* Need to get the line pointer again, a
--- 811,823 ----
  			    if (ptr[matchcol] == NUL
  				    || (nmatched = vim_regexec_multi(&regmatch,
  					      win, buf, lnum + matchpos.lnum,
! 					      matchcol,
! #ifdef FEAT_RELTIME
! 					      tm
! #else
! 					      NULL
! #endif
! 					    )) == 0)
  				break;
  
  			    /* Need to get the line pointer again, a
***************
*** 977,988 ****
   * return 0 for failure, 1 for found, 2 for found and line offset added
   */
      int
! do_search(oap, dirc, pat, count, options)
      oparg_T	    *oap;	/* can be NULL */
      int		    dirc;	/* '/' or '?' */
      char_u	   *pat;
      long	    count;
      int		    options;
  {
      pos_T	    pos;	/* position of the last match */
      char_u	    *searchstr;
--- 995,1007 ----
   * return 0 for failure, 1 for found, 2 for found and line offset added
   */
      int
! do_search(oap, dirc, pat, count, options, tm)
      oparg_T	    *oap;	/* can be NULL */
      int		    dirc;	/* '/' or '?' */
      char_u	   *pat;
      long	    count;
      int		    options;
+     proftime_T	    *tm;	/* timeout limit or NULL */
  {
      pos_T	    pos;	/* position of the last match */
      char_u	    *searchstr;
***************
*** 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() */
--- 1275,1281 ----
  		       (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS
  			+ SEARCH_MSG + SEARCH_START
  			+ ((pat != NULL && *pat == ';') ? 0 : SEARCH_NOOF))),
! 		RE_LAST, (linenr_T)0, tm);
  
  	if (dircp != NULL)
  	    *dircp = dirc;	/* restore second '/' or '?' for normal_cmd() */
*** ../vim-7.1.235/src/screen.c	Sat Jan 12 16:45:25 2008
--- src/screen.c	Sat Jan 19 13:52:29 2008
***************
*** 848,858 ****
--- 848,863 ----
  	cur->hl.buf = buf;
  	cur->hl.lnum = 0;
  	cur->hl.first_lnum = 0;
+ # ifdef FEAT_RELTIME
+ 	/* Set the time limit to 'redrawtime'. */
+ 	profile_setlimit(p_rdt, &(cur->hl.tm));
+ # endif
  	cur = cur->next;
      }
      search_hl.buf = buf;
      search_hl.lnum = 0;
      search_hl.first_lnum = 0;
+     /* time limit is set at the toplevel, for all windows */
  #endif
  
  #ifdef FEAT_LINEBREAK
***************
*** 6462,6467 ****
--- 6467,6476 ----
      {
  	last_pat_prog(&search_hl.rm);
  	search_hl.attr = hl_attr(HLF_L);
+ # ifdef FEAT_RELTIME
+ 	/* Set the time limit to 'redrawtime'. */
+ 	profile_setlimit(p_rdt, &search_hl.tm);
+ # endif
      }
  }
  
***************
*** 6587,6592 ****
--- 6596,6609 ----
      called_emsg = FALSE;
      for (;;)
      {
+ #ifdef FEAT_RELTIME
+ 	/* Stop searching after passing the time limit. */
+ 	if (profile_passed_limit(&(shl->tm)))
+ 	{
+ 	    shl->lnum = 0;		/* no match found in time */
+ 	    break;
+ 	}
+ #endif
  	/* Three situations:
  	 * 1. No useful previous match: search from start of line.
  	 * 2. Not Vi compatible or empty match: continue at next character.
***************
*** 6620,6626 ****
  	    matchcol = shl->rm.endpos[0].col;
  
  	shl->lnum = lnum;
! 	nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol);
  	if (called_emsg)
  	{
  	    /* Error while handling regexp: stop using this regexp. */
--- 6637,6649 ----
  	    matchcol = shl->rm.endpos[0].col;
  
  	shl->lnum = lnum;
! 	nmatched = vim_regexec_multi(&shl->rm, win, shl->buf, lnum, matchcol,
! #ifdef FEAT_RELTIME
! 		&(shl->tm)
! #else
! 		NULL
! #endif
! 		);
  	if (called_emsg)
  	{
  	    /* Error while handling regexp: stop using this regexp. */
*** ../vim-7.1.235/src/option.h	Thu May 10 20:34:47 2007
--- src/option.h	Sat Jan 19 13:45:51 2008
***************
*** 633,638 ****
--- 633,641 ----
  #ifdef FEAT_SEARCHPATH
  EXTERN char_u	*p_cdpath;	/* 'cdpath' */
  #endif
+ #ifdef FEAT_RELTIME
+ EXTERN long	p_rdt;		/* 'redrawtime' */
+ #endif
  EXTERN int	p_remap;	/* 'remap' */
  EXTERN long	p_report;	/* 'report' */
  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
*** ../vim-7.1.235/src/spell.c	Sat Jan 12 16:45:25 2008
--- src/spell.c	Fri Jan 18 21:02:47 2008
***************
*** 10343,10349 ****
      curwin->w_cursor.lnum = 0;
      while (!got_int)
      {
! 	if (do_search(NULL, '/', frompat, 1L, SEARCH_KEEP) == 0
  						   || u_save_cursor() == FAIL)
  	    break;
  
--- 10343,10349 ----
      curwin->w_cursor.lnum = 0;
      while (!got_int)
      {
! 	if (do_search(NULL, '/', frompat, 1L, SEARCH_KEEP, NULL) == 0
  						   || u_save_cursor() == FAIL)
  	    break;
  
*** ../vim-7.1.235/src/structs.h	Mon Oct  1 22:53:27 2007
--- src/structs.h	Fri Jan 18 21:18:53 2008
***************
*** 1717,1722 ****
--- 1717,1725 ----
      linenr_T	first_lnum;	/* first lnum to search for multi-line pat */
      colnr_T	startcol; /* in win_line() points to char where HL starts */
      colnr_T	endcol;	 /* in win_line() points to char where HL ends */
+ #ifdef FEAT_RELTIME
+     proftime_T	tm;	/* for a time limit */
+ #endif
  } match_T;
  
  /*
*** ../vim-7.1.235/src/syntax.c	Sun Jan 13 17:39:29 2008
--- src/syntax.c	Sat Jan 19 13:13:49 2008
***************
*** 3097,3103 ****
      colnr_T	col;
  {
      rmp->rmm_maxcol = syn_buf->b_p_smc;
!     if (vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col) > 0)
      {
  	rmp->startpos[0].lnum += lnum;
  	rmp->endpos[0].lnum += lnum;
--- 3097,3103 ----
      colnr_T	col;
  {
      rmp->rmm_maxcol = syn_buf->b_p_smc;
!     if (vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col, NULL) > 0)
      {
  	rmp->startpos[0].lnum += lnum;
  	rmp->endpos[0].lnum += lnum;
*** ../vim-7.1.235/src/tag.c	Thu May 10 19:44:07 2007
--- src/tag.c	Fri Jan 18 21:03:41 2008
***************
*** 3191,3197 ****
  #endif
  	    save_lnum = curwin->w_cursor.lnum;
  	    curwin->w_cursor.lnum = 0;	/* start search before first line */
! 	    if (do_search(NULL, pbuf[0], pbuf + 1, (long)1, search_options))
  		retval = OK;
  	    else
  	    {
--- 3191,3198 ----
  #endif
  	    save_lnum = curwin->w_cursor.lnum;
  	    curwin->w_cursor.lnum = 0;	/* start search before first line */
! 	    if (do_search(NULL, pbuf[0], pbuf + 1, (long)1,
! 							search_options, NULL))
  		retval = OK;
  	    else
  	    {
***************
*** 3203,3209 ****
  		 */
  		p_ic = TRUE;
  		if (!do_search(NULL, pbuf[0], pbuf + 1, (long)1,
! 							      search_options))
  		{
  		    /*
  		     * Failed to find pattern, take a guess: "^func  ("
--- 3204,3210 ----
  		 */
  		p_ic = TRUE;
  		if (!do_search(NULL, pbuf[0], pbuf + 1, (long)1,
! 							search_options, NULL))
  		{
  		    /*
  		     * Failed to find pattern, take a guess: "^func  ("
***************
*** 3213,3225 ****
  		    cc = *tagp.tagname_end;
  		    *tagp.tagname_end = NUL;
  		    sprintf((char *)pbuf, "^%s\\s\\*(", tagp.tagname);
! 		    if (!do_search(NULL, '/', pbuf, (long)1, search_options))
  		    {
  			/* Guess again: "^char * \<func  (" */
  			sprintf((char *)pbuf, "^\\[#a-zA-Z_]\\.\\*\\<%s\\s\\*(",
  								tagp.tagname);
  			if (!do_search(NULL, '/', pbuf, (long)1,
! 							      search_options))
  			    found = 0;
  		    }
  		    *tagp.tagname_end = cc;
--- 3214,3227 ----
  		    cc = *tagp.tagname_end;
  		    *tagp.tagname_end = NUL;
  		    sprintf((char *)pbuf, "^%s\\s\\*(", tagp.tagname);
! 		    if (!do_search(NULL, '/', pbuf, (long)1,
! 							search_options, NULL))
  		    {
  			/* Guess again: "^char * \<func  (" */
  			sprintf((char *)pbuf, "^\\[#a-zA-Z_]\\.\\*\\<%s\\s\\*(",
  								tagp.tagname);
  			if (!do_search(NULL, '/', pbuf, (long)1,
! 							search_options, NULL))
  			    found = 0;
  		    }
  		    *tagp.tagname_end = cc;
*** ../vim-7.1.235/src/vim.h	Sat Jan  5 13:34:01 2008
--- src/vim.h	Fri Jan 18 21:29:22 2008
***************
*** 1550,1555 ****
--- 1550,1565 ----
  # define MB_MAXBYTES	21
  #endif
  
+ #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
+ # ifdef WIN3264
+ typedef LARGE_INTEGER proftime_T;
+ # else
+ typedef struct timeval proftime_T;
+ # endif
+ #else
+ typedef int proftime_T;	    /* dummy for function prototypes */
+ #endif
+ 
  /* Include option.h before structs.h, because the number of window-local and
   * buffer-local options is used there. */
  #include "option.h"	    /* options and default values */
***************
*** 1760,1775 ****
  # include <io.h>	    /* for access() */
  
  # define stat(a,b) (access(a,0) ? -1 : stat(a,b))
- #endif
- 
- #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
- # ifdef WIN3264
- typedef LARGE_INTEGER proftime_T;
- # else
- typedef struct timeval proftime_T;
- # endif
- #else
- typedef int proftime_T;	    /* dummy for function prototypes */
  #endif
  
  #include "ex_cmds.h"	    /* Ex command defines */
--- 1770,1775 ----
*** ../vim-7.1.235/src/version.c	Fri Jan 18 20:36:40 2008
--- src/version.c	Sat Jan 19 15:19:48 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     236,
  /**/

-- 
Every time I lose weight, it finds me again!

 /// 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.237 ---
To: vim-dev at vim.org
Subject: Patch 7.1.237
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.237
Problem:    Compiler warning on an Alpha processor in Motif code.
Solution:   Change a typecast. (Adri Verhoef)
Files:	    src/gui_motif.c


*** ../vim-7.1.236/src/gui_motif.c	Thu May 10 19:51:05 2007
--- src/gui_motif.c	Mon Jan 21 21:03:55 2008
***************
*** 3813,3819 ****
  
      XtAddCallback(frdp->find, XmNactivateCallback,
  	    find_replace_callback,
! 	    (XtPointer) (do_replace ? FRD_R_FINDNEXT : FRD_FINDNEXT));
  
      if (do_replace)
      {
--- 3813,3819 ----
  
      XtAddCallback(frdp->find, XmNactivateCallback,
  	    find_replace_callback,
! 	    (do_replace ? (XtPointer)FRD_R_FINDNEXT : (XtPointer)FRD_FINDNEXT));
  
      if (do_replace)
      {
*** ../vim-7.1.236/src/version.c	Sat Jan 19 15:55:51 2008
--- src/version.c	Tue Jan 22 11:05:12 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     237,
  /**/

-- 
I am always surprised in the Linux world how quickly solutions can be
obtained.  (Imagine sending an email to Bill Gates, asking why Windows
crashed, and how to fix it...  and then getting an answer that fixed the
problem... <0>_<0> !)		              -- Mark Langdon

 /// 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.238 ---
To: vim-dev at vim.org
Subject: Patch 7.1.238
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.238
Problem:    Using the 'c' flag with searchpair() may cause it to fail.  Using
	    the 'r' flag doesn't work when 'wrapscan' is set.  (A.Politz)
Solution:   Only use the 'c' flag for the first search, not for repeating.
	    When using 'r' imply 'W'. (Antony Scriven)
Files:	    src/eval.c


*** ../vim-7.1.237/src/eval.c	Sat Jan 12 16:45:25 2008
--- src/eval.c	Tue Jan 22 11:42:28 2008
***************
*** 14189,14194 ****
--- 14189,14198 ----
  	goto theend;
      }
  
+     /* Using 'r' implies 'W', otherwise it doesn't work. */
+     if (flags & SP_REPEAT)
+ 	p_ws = FALSE;
+ 
      /* Optional fifth argument: skip expression */
      if (argvars[3].v_type == VAR_UNKNOWN
  	    || argvars[4].v_type == VAR_UNKNOWN)
***************
*** 14344,14349 ****
--- 14348,14356 ----
  		incl(&pos);
  	}
  	foundpos = pos;
+ 
+ 	/* clear the start flag to avoid getting stuck here */
+ 	options &= ~SEARCH_START;
  
  	/* If the skip pattern matches, ignore this match. */
  	if (*skip != NUL)
*** ../vim-7.1.237/src/version.c	Tue Jan 22 11:06:06 2008
--- src/version.c	Tue Jan 22 11:57:28 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     238,
  /**/

-- 
To keep milk from turning sour: Keep it in the cow.

 /// 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.239 ---
To: vim-dev at vim.org
Subject: Patch 7.1.239
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.239 (after 7.1.233)
Problem:    Compiler warning for sprintf() argument.
Solution:   Add a typecast. (Nico Weber)
Files:	    src/ex_getln.c


*** ../vim-7.1.238/src/ex_getln.c	Sat Jan 19 15:55:51 2008
--- src/ex_getln.c	Tue Jan 22 12:40:54 2008
***************
*** 4694,4700 ****
      {
  	/* Completion from Insert mode, pass fake arguments. */
  	keep = 0;
! 	sprintf((char *)num, "%d", STRLEN(xp->xp_pattern));
  	args[1] = xp->xp_pattern;
      }
      else
--- 4694,4700 ----
      {
  	/* Completion from Insert mode, pass fake arguments. */
  	keep = 0;
! 	sprintf((char *)num, "%d", (int)STRLEN(xp->xp_pattern));
  	args[1] = xp->xp_pattern;
      }
      else
*** ../vim-7.1.238/src/version.c	Tue Jan 22 11:58:41 2008
--- src/version.c	Tue Jan 22 12:42:36 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     239,
  /**/

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

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


--- NEW FILE 7.1.240 ---
To: vim-dev at vim.org
Subject: Patch 7.1.240
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.240
Problem:    When "gUe" turns a German sharp s into SS the operation stops
            before the end of the word.  Latin2 has the same sharp s but it's
            not changed to SS there.
Solution:   Make sure all the characters are operated upon.  Detect the sharp
            s in latin2.  Also fixes that changing case of a multi-byte
            character that changes the byte cound doesn't always work.
Files:      src/ops.c


*** ../vim-7.1.239/src/ops.c	Wed Jan 16 20:01:14 2008
--- src/ops.c	Tue Jan 22 16:00:07 2008
***************
*** 2184,2189 ****
--- 2184,2191 ----
  }
  #endif
  
+ static int swapchars __ARGS((int op_type, pos_T *pos, int length));
+ 
  /*
   * Handle the (non-standard vi) tilde operator.  Also for "gu", "gU" and "g?".
   */
***************
*** 2194,2202 ****
      pos_T		pos;
  #ifdef FEAT_VISUAL
      struct block_def	bd;
-     int			todo;
  #endif
!     int			did_change = 0;
  
      if (u_save((linenr_T)(oap->start.lnum - 1),
  				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
--- 2196,2203 ----
      pos_T		pos;
  #ifdef FEAT_VISUAL
      struct block_def	bd;
  #endif
!     int			did_change;
  
      if (u_save((linenr_T)(oap->start.lnum - 1),
  				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
***************
*** 2210,2225 ****
  	{
  	    block_prep(oap, &bd, pos.lnum, FALSE);
  	    pos.col = bd.textcol;
! 	    for (todo = bd.textlen; todo > 0; --todo)
! 	    {
! # ifdef FEAT_MBYTE
! 		if (has_mbyte)
! 		    todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1;
! # endif
! 		did_change |= swapchar(oap->op_type, &pos);
! 		if (inc(&pos) == -1)	    /* at end of file */
! 		    break;
! 	    }
  # ifdef FEAT_NETBEANS_INTG
  	    if (usingNetbeans && did_change)
  	    {
--- 2211,2218 ----
  	{
  	    block_prep(oap, &bd, pos.lnum, FALSE);
  	    pos.col = bd.textcol;
! 	    did_change = swapchars(oap->op_type, &pos, bd.textlen);
! 
  # ifdef FEAT_NETBEANS_INTG
  	    if (usingNetbeans && did_change)
  	    {
***************
*** 2249,2261 ****
  	else if (!oap->inclusive)
  	    dec(&(oap->end));
  
! 	while (ltoreq(pos, oap->end))
! 	{
! 	    did_change |= swapchar(oap->op_type, &pos);
! 	    if (inc(&pos) == -1)    /* at end of file */
! 		break;
! 	}
! 
  	if (did_change)
  	{
  	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
--- 2242,2248 ----
  	else if (!oap->inclusive)
  	    dec(&(oap->end));
  
! 	did_change = swapchars(oap->op_type, &pos, oap->end.col - pos.col + 1);
  	if (did_change)
  	{
  	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
***************
*** 2309,2314 ****
--- 2296,2337 ----
  }
  
  /*
+  * Invoke swapchar() on "length" bytes at position "pos".
+  * "pos" is advanced to just after the changed characters.
+  * "length" is rounded up to include the whole last multi-byte character.
+  * Also works correctly when the number of bytes changes.
+  * Returns TRUE if some character was changed.
+  */
+     static int
+ swapchars(op_type, pos, length)
+     int		op_type;
+     pos_T	*pos;
+     int		length;
+ {
+     int todo;
+     int	did_change = 0;
+ 
+     for (todo = length; todo > 0; --todo)
+     {
+ # ifdef FEAT_MBYTE
+ 	int pos_col = pos->col;
+ 
+ 	if (has_mbyte)
+ 	    /* we're counting bytes, not characters */
+ 	    todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1;
+ # endif
+ 	did_change |= swapchar(op_type, pos);
+ # ifdef FEAT_MBYTE
+ 	/* Changing German sharp s to SS increases the column. */
+ 	todo += pos->col - pos_col;
+ # endif
+ 	if (inc(pos) == -1)    /* at end of file */
+ 	    break;
+     }
+     return did_change;
+ }
+ 
+ /*
   * If op_type == OP_UPPER: make uppercase,
   * if op_type == OP_LOWER: make lowercase,
   * if op_type == OP_ROT13: do rot13 encoding,
***************
*** 2330,2336 ****
  	return FALSE;
  
  #ifdef FEAT_MBYTE
!     if (op_type == OP_UPPER && enc_latin1like && c == 0xdf)
      {
  	pos_T   sp = curwin->w_cursor;
  
--- 2353,2360 ----
  	return FALSE;
  
  #ifdef FEAT_MBYTE
!     if (op_type == OP_UPPER && c == 0xdf
! 		      && (enc_latin1like || STRCMP(p_enc, "iso-8859-2") == 0))
      {
  	pos_T   sp = curwin->w_cursor;
  
*** ../vim-7.1.239/src/version.c	Tue Jan 22 12:44:03 2008
--- src/version.c	Tue Jan 22 15:36:36 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     240,
  /**/

-- 
ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot.
        King of all Britons, defeator of the Saxons, sovereign of all England!
   [Pause]
SOLDIER: Get away!
                 "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.241 ---
To: vim-dev at vim.org
Subject: Patch 7.1.241
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.241
Problem:    Focus change events not always ignored.  (Erik Falor)
Solution:   Ignore K_IGNORE in Insert mode in a few more places.
Files:	    src/edit.c


*** ../vim-7.1.240/src/edit.c	Wed Jan 16 20:01:14 2008
--- src/edit.c	Tue Jan 22 17:45:32 2008
***************
*** 703,712 ****
  #endif
  
  	/*
! 	 * Get a character for Insert mode.
  	 */
  	lastc = c;			/* remember previous char for CTRL-D */
! 	c = safe_vgetc();
  
  #ifdef FEAT_AUTOCMD
  	/* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */
--- 703,715 ----
  #endif
  
  	/*
! 	 * Get a character for Insert mode.  Ignore K_IGNORE.
  	 */
  	lastc = c;			/* remember previous char for CTRL-D */
! 	do
! 	{
! 	    c = safe_vgetc();
! 	} while (c == K_IGNORE);
  
  #ifdef FEAT_AUTOCMD
  	/* Don't want K_CURSORHOLD for the second key, e.g., after CTRL-V. */
***************
*** 777,783 ****
  	/* Prepare for or stop CTRL-X mode.  This doesn't do completion, but
  	 * it does fix up the text when finishing completion. */
  	compl_get_longest = FALSE;
! 	if (c != K_IGNORE && ins_compl_prep(c))
  	    continue;
  #endif
  
--- 780,786 ----
  	/* Prepare for or stop CTRL-X mode.  This doesn't do completion, but
  	 * it does fix up the text when finishing completion. */
  	compl_get_longest = FALSE;
! 	if (ins_compl_prep(c))
  	    continue;
  #endif
  
***************
*** 4516,4530 ****
  	else
  	{
  	    /* Need to get the character to have KeyTyped set.  We'll put it
! 	     * back with vungetc() below. */
  	    c = safe_vgetc();
  
! 	    /* Don't interrupt completion when the character wasn't typed,
! 	     * e.g., when doing @q to replay keys. */
! 	    if (c != Ctrl_R && KeyTyped)
! 		compl_interrupted = TRUE;
! 
! 	    vungetc(c);
  	}
      }
      if (compl_pending != 0 && !got_int)
--- 4519,4535 ----
  	else
  	{
  	    /* Need to get the character to have KeyTyped set.  We'll put it
! 	     * back with vungetc() below.  But skip K_IGNORE. */
  	    c = safe_vgetc();
+ 	    if (c != K_IGNORE)
+ 	    {
+ 		/* Don't interrupt completion when the character wasn't typed,
+ 		 * e.g., when doing @q to replay keys. */
+ 		if (c != Ctrl_R && KeyTyped)
+ 		    compl_interrupted = TRUE;
  
! 		vungetc(c);
! 	    }
  	}
      }
      if (compl_pending != 0 && !got_int)
*** ../vim-7.1.240/src/version.c	Tue Jan 22 16:01:25 2008
--- src/version.c	Tue Jan 22 17:48:46 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     241,
  /**/

-- 
The problem with political jokes is that they get elected.

 /// 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.242 ---
To: vim-dev at vim.org
Subject: Patch 7.1.242
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.242 (after 7.1.005)
Problem:    "cib" doesn't work properly on "(x)". (Tim Pope)
Solution:   Use ltoreq() instead of lt().  Also fix "ciT" on "<a>x</a>".
Files:	    src/search.c


*** ../vim-7.1.241/src/search.c	Sat Jan 19 15:55:51 2008
--- src/search.c	Sat Jan 26 13:56:06 2008
***************
*** 3637,3643 ****
  	oap->inclusive = FALSE;
  	if (sol)
  	    incl(&curwin->w_cursor);
! 	else if (lt(start_pos, curwin->w_cursor))
  	    /* Include the character under the cursor. */
  	    oap->inclusive = TRUE;
  	else
--- 3637,3643 ----
  	oap->inclusive = FALSE;
  	if (sol)
  	    incl(&curwin->w_cursor);
! 	else if (ltoreq(start_pos, curwin->w_cursor))
  	    /* Include the character under the cursor. */
  	    oap->inclusive = TRUE;
  	else
***************
*** 3754,3759 ****
--- 3754,3763 ----
      old_pos = curwin->w_cursor;
      old_end = curwin->w_cursor;		    /* remember where we started */
      old_start = old_end;
+ #ifdef FEAT_VISUAL
+     if (!VIsual_active || *p_sel == 'e')
+ #endif
+ 	decl(&old_end);			    /* old_end is inclusive */
  
      /*
       * If we start on "<aaa>" select that block.
*** ../vim-7.1.241/src/version.c	Tue Jan 22 17:49:17 2008
--- src/version.c	Sat Jan 26 21:14:05 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     242,
  /**/

-- 
DENNIS: Oh, very nice. King, eh!  I expect you've got a palace and fine
        clothes and courtiers and plenty of food.  And how d'you get that?  By
        exploiting the workers! By hanging on to outdated imperialist dogma
        which perpetuates the social and economic differences in our society!
                 "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.243 ---
To: vim-dev at vim.org
Subject: Patch 7.1.243
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.243 (after 7.1.240)
Problem:    "U" doesn't work on all text in Visual mode. (Adri Verhoef)
Solution:   Loop over all the lines to be changed.  Add tests for this.
Files:	    src/ops.c, src/testdir/test39.in, src/testdir/test39.ok


*** ../vim-7.1.242/src/ops.c	Tue Jan 22 16:01:25 2008
--- src/ops.c	Mon Feb  4 22:23:22 2008
***************
*** 2197,2203 ****
  #ifdef FEAT_VISUAL
      struct block_def	bd;
  #endif
!     int			did_change;
  
      if (u_save((linenr_T)(oap->start.lnum - 1),
  				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
--- 2197,2203 ----
  #ifdef FEAT_VISUAL
      struct block_def	bd;
  #endif
!     int			did_change = FALSE;
  
      if (u_save((linenr_T)(oap->start.lnum - 1),
  				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
***************
*** 2242,2248 ****
  	else if (!oap->inclusive)
  	    dec(&(oap->end));
  
! 	did_change = swapchars(oap->op_type, &pos, oap->end.col - pos.col + 1);
  	if (did_change)
  	{
  	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
--- 2242,2259 ----
  	else if (!oap->inclusive)
  	    dec(&(oap->end));
  
! 	if (pos.lnum == oap->end.lnum)
! 	    did_change = swapchars(oap->op_type, &pos,
! 						  oap->end.col - pos.col + 1);
! 	else
! 	    for (;;)
! 	    {
! 		did_change |= swapchars(oap->op_type, &pos,
! 				pos.lnum == oap->end.lnum ? oap->end.col + 1:
! 					   (int)STRLEN(ml_get_pos(&pos)));
! 		if (ltoreq(oap->end, pos) || inc(&pos) == -1)
! 		    break;
! 	    }
  	if (did_change)
  	{
  	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
***************
*** 2314,2330 ****
      for (todo = length; todo > 0; --todo)
      {
  # ifdef FEAT_MBYTE
- 	int pos_col = pos->col;
- 
  	if (has_mbyte)
  	    /* we're counting bytes, not characters */
  	    todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1;
  # endif
  	did_change |= swapchar(op_type, pos);
- # ifdef FEAT_MBYTE
- 	/* Changing German sharp s to SS increases the column. */
- 	todo += pos->col - pos_col;
- # endif
  	if (inc(pos) == -1)    /* at end of file */
  	    break;
      }
--- 2325,2335 ----
*** ../vim-7.1.242/src/testdir/test39.in	Sun Jun 13 18:21:09 2004
--- src/testdir/test39.in	Wed Feb  6 13:57:37 2008
***************
*** 1,8 ****
--- 1,10 ----
  
  Test Visual block mode commands
+ And test "U" in Visual mode, also on German sharp S.
  
  STARTTEST
  :so small.vim
+ :so mbyte.vim
  /^abcde
  :" Test shift-right of a block
  jlllljj>wlljlll>
***************
*** 14,20 ****
  Gllllkkklllrq
  :" Test block-change
  G$khhhhhkkcmno
! :$-4,$wq! test.out
  ENDTEST
  
  abcdefghijklm
--- 16,37 ----
  Gllllkkklllrq
  :" Test block-change
  G$khhhhhkkcmno
! :$-4,$w! test.out
! :" gUe must uppercase a whole word, also when ß changes to SS
! Gothe youtußeuu endYpk0wgUe
! :" gUfx must uppercase until x, inclusive.
! O- youßtußexu -0fogUfx
! :" VU must uppercase a whole line
! YpkVU
! :" same, when it's the last line in the buffer
! YPGi111VUddP
! :" Uppercase two lines
! Oblah di
! doh dutVkUj
! :" Uppercase part of two lines
! ddppi333k0i222fyllvjfuUk
! :/^the/,$w >> test.out
! :qa!
  ENDTEST
  
  abcdefghijklm
*** ../vim-7.1.242/src/testdir/test39.ok	Sun Jun 13 18:59:28 2004
--- src/testdir/test39.ok	Tue Feb  5 22:25:38 2008
***************
*** 3,5 ****
--- 3,13 ----
  axyzqqqqef mno        ghijklm
  axyzqqqqefgmnoklm
  abcdqqqqijklm
+ the YOUTUSSEUU end
+ - yOUSSTUSSEXu -
+ THE YOUTUSSEUU END
+ 111THE YOUTUSSEUU END
+ BLAH DI
+ DOH DUT
+ 222the yoUTUSSEUU END
+ 333THE YOUTUßeuu end
*** ../vim-7.1.242/src/version.c	Sat Jan 26 21:15:00 2008
--- src/version.c	Wed Feb  6 14:41:00 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     243,
  /**/

-- 
It's totally unfair to suggest - as many have - that engineers are socially
inept.  Engineers simply have different objectives when it comes to social
interaction.
				(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.244 ---
To: vim-dev at vim.org
Subject: Patch 7.1.244
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.244
Problem:    GUI may have part of the command line cut off.
Solution:   Don't round the number of lines up, always round down.
	    (Tony Houghton, Scott Dillard)
Files:	    src/gui.c


*** ../vim-7.1.243/src/gui.c	Sat Jan 19 15:55:51 2008
--- src/gui.c	Wed Feb  6 16:43:44 2008
***************
*** 1294,1304 ****
      out_flush();
  
      gui.num_cols = (pixel_width - gui_get_base_width()) / gui.char_width;
!     gui.num_rows = (pixel_height - gui_get_base_height()
! #if !defined(FEAT_GUI_PHOTON) && !defined(FEAT_GUI_MSWIN)
! 				    + (gui.char_height / 2)
! #endif
! 					) / gui.char_height;
  
      gui_position_components(pixel_width);
  
--- 1294,1300 ----
      out_flush();
  
      gui.num_cols = (pixel_width - gui_get_base_width()) / gui.char_width;
!     gui.num_rows = (pixel_height - gui_get_base_height()) / gui.char_height;
  
      gui_position_components(pixel_width);
  
*** ../vim-7.1.243/src/version.c	Wed Feb  6 14:43:50 2008
--- src/version.c	Wed Feb  6 17:32:35 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     244,
  /**/

-- 
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.245 ---
To: vim-dev at vim.org
Subject: Patch 7.1.245
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.245
Problem:    Pressing CTRL-\ three times causes Vim to quit.  (Ranganath Rao).
	    Also for f CTRL-\ CTRL-\.
Solution:   When going to cooked mode in mch_delay() set a flag to ignore
	    SIGQUIT.
Files:	    src/os_unix.c


*** ../vim-7.1.244/src/os_unix.c	Sun Jan 13 16:30:23 2008
--- src/os_unix.c	Sun Feb 10 22:07:27 2008
***************
*** 195,200 ****
--- 195,201 ----
  static int	show_shell_mess = TRUE;
  #endif
  static int	deadly_signal = 0;	    /* The signal we caught */
+ static int	in_mch_delay = FALSE;	    /* sleeping in mch_delay() */
  
  static int curr_tmode = TMODE_COOK;	/* contains current terminal mode */
  
***************
*** 538,544 ****
      if (ignoreinput)
      {
  	/* Go to cooked mode without echo, to allow SIGINT interrupting us
! 	 * here */
  	old_tmode = curr_tmode;
  	if (curr_tmode == TMODE_RAW)
  	    settmode(TMODE_SLEEP);
--- 539,547 ----
      if (ignoreinput)
      {
  	/* Go to cooked mode without echo, to allow SIGINT interrupting us
! 	 * here.  But we don't want QUIT to kill us (CTRL-\ used in a
! 	 * shell may produce SIGQUIT). */
! 	in_mch_delay = TRUE;
  	old_tmode = curr_tmode;
  	if (curr_tmode == TMODE_RAW)
  	    settmode(TMODE_SLEEP);
***************
*** 602,607 ****
--- 605,611 ----
  #endif
  
  	settmode(old_tmode);
+ 	in_mch_delay = FALSE;
      }
      else
  	WaitForChar(msec);
***************
*** 922,927 ****
--- 926,939 ----
  #endif
  
  #ifdef SIGHASARG
+ # ifdef SIGQUIT
+     /* While in mch_delay() we go to cooked mode to allow a CTRL-C to
+      * interrupt us.  But in cooked mode we may also get SIGQUIT, e.g., when
+      * pressing CTRL-\, but we don't want Vim to exit then. */
+     if (in_mch_delay && sigarg == SIGQUIT)
+ 	SIGRETURN;
+ # endif
+ 
      /* When SIGHUP, SIGQUIT, etc. are blocked: postpone the effect and return
       * here.  This avoids that a non-reentrant function is interrupted, e.g.,
       * free().  Calling free() again may then cause a crash. */
*** ../vim-7.1.244/src/version.c	Wed Feb  6 17:33:19 2008
--- src/version.c	Sun Feb 10 22:04:09 2008
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     245,
  /**/

-- 
Me?  A skeptic?  I trust you have proof.

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

vim-7.1-ada.patch:

--- NEW FILE vim-7.1-ada.patch ---
diff -urN vim71/runtime/autoload/adacomplete.vim vim71_ada/runtime/autoload/adacomplete.vim
--- vim71/runtime/autoload/adacomplete.vim	2007-05-05 19:34:16.000000000 +0200
+++ vim71_ada/runtime/autoload/adacomplete.vim	2008-01-16 16:46:40.000000000 +0100
@@ -1,13 +1,13 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada omnicompletion file
 "     Language:	Ada (2005)
-"	   $Id: adacomplete.vim,v 1.1 2007/05/05 17:34:16 vimboss Exp $
+"	   $Id: adacomplete.vim 825 2007-12-09 13:34:03Z krischik $
 "   Maintainer:	Martin Krischik
-"      $Author: vimboss $
-"	 $Date: 2007/05/05 17:34:16 $
-"      Version: 4.2
-"    $Revision: 1.1 $
-"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
+"      $Author: krischik $
+"	 $Date: 2007-12-09 14:34:03 +0100 (So, 09 Dez 2007) $
+"      Version: 4.5
+"    $Revision: 825 $
+"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/adacomplete.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		26.05.2006 MK improved search for begin of word.
 "		16.07.2006 MK Ada-Mode as vim-ball
diff -urN vim71/runtime/autoload/ada.vim vim71_ada/runtime/autoload/ada.vim
--- vim71/runtime/autoload/ada.vim	2007-05-05 20:02:22.000000000 +0200
+++ vim71_ada/runtime/autoload/ada.vim	2008-01-16 16:46:40.000000000 +0100
@@ -1,14 +1,16 @@
 "------------------------------------------------------------------------------
 "  Description: Perform Ada specific completion & tagging.
 "     Language: Ada (2005)
-"	   $Id: ada.vim,v 1.1 2007/05/05 18:02:22 vimboss Exp $
-"   Maintainer: Martin Krischik
+"	   $Id: ada.vim 774 2007-09-17 09:11:59Z krischik $
+"   Maintainer: Martin Krischik <krischik at users.sourceforge.net>
+"		Taylor Venable <taylor at metasyntax.net>
 "		Neil Bird <neil at fnxweb.com>
-"      $Author: vimboss $
-"	 $Date: 2007/05/05 18:02:22 $
-"      Version: 4.2
-"    $Revision: 1.1 $
-"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $
+"		Ned Okie <nokie at radford.edu>
+"      $Author: krischik $
+"	 $Date: 2007-09-17 11:11:59 +0200 (Mo, 17 Sep 2007) $
+"      Version: 4.5
+"    $Revision: 774 $
+"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/ada.vim $
 "      History: 24.05.2006 MK Unified Headers
 "		26.05.2006 MK ' should not be in iskeyword.
 "		16.07.2006 MK Ada-Mode as vim-ball
@@ -17,6 +19,10 @@
 "		05.11.2006 MK Bram suggested not to use include protection for
 "			      autoload
 "		05.11.2006 MK Bram suggested to save on spaces
+"		08.07.2007 TV fix mapleader problems.
+"	        09.05.2007 MK Session just won't work no matter how much
+"			      tweaking is done
+"		19.09.2007 NO still some mapleader problems
 "    Help Page: ft-ada-functions
 "------------------------------------------------------------------------------
 
@@ -425,7 +431,15 @@
    execute '!ctags --excmd=number ' . l:Filename
 endfunction ada#Create_Tags
 
-function ada#Switch_Session (New_Session)   "{{{1
+" Section: ada#Switch_Session {{{1
+"
+function ada#Switch_Session (New_Session)
+   " 
+   " you should not save to much date into the seession since they will
+   " be sourced
+   "
+   set sessionoptions=buffers,curdir,folds,globals,resize,slash,tabpages,tabpages,unix,winpos,winsize
+
    if a:New_Session != v:this_session
       "
       "  We actualy got a new session - otherwise there
@@ -437,18 +451,23 @@
 
       let v:this_session = a:New_Session
 
-      if filereadable (v:this_session)
-	 execute 'source ' . v:this_session
-      endif
+      "if filereadable (v:this_session)
+	 "execute 'source ' . v:this_session
+      "endif
 
       augroup ada_session
 	 autocmd!
 	 autocmd VimLeavePre * execute 'mksession! ' . v:this_session
       augroup END
+      "
+      "if exists ("g:Tlist_Auto_Open") && g:Tlist_Auto_Open
+	 "TlistOpen
+      "endif
+
    endif
 
    return
-endfunction ada#Switch_Session	 "}}}1
+endfunction ada#Switch_Session	
 
 " Section: GNAT Pretty Printer folding {{{1
 "
@@ -546,18 +565,23 @@
 	\ a:Keys		 .
 	\" <C-O>:" . a:Command . "<CR>"
    else
+      if exists("g:mapleader")
+         let l:leader = g:mapleader
+      else
+         let l:leader = '\'
+      endif
       execute
 	\ "50amenu " .
 	\ "Ada."  . escape(a:Text, ' ') .
-	\ "<Tab>" . escape(g:mapleader . "a" . a:Keys , '\') .
+	\ "<Tab>" . escape(l:leader . "a" . a:Keys , '\') .
 	\ " :"	  . a:Command . "<CR>"
       execute
 	\ "nnoremap <buffer>" .
-	\ escape(g:mapleader . "a" . a:Keys , '\') .
+	\ escape(l:leader . "a" . a:Keys , '\') .
 	\" :" . a:Command
       execute
 	\ "inoremap <buffer>" .
-	\ escape(g:mapleader . "a" . a:Keys , '\') .
+	\ escape(l:leader . "a" . a:Keys , '\') .
 	\" <C-O>:" . a:Command
    endif
    return
@@ -566,10 +590,15 @@
 " Section: ada#Map_Popup {{{2
 "
 function ada#Map_Popup (Text, Keys, Command)
+   if exists("g:mapleader")
+      let l:leader = g:mapleader
+   else
+      let l:leader = '\'
+   endif
    execute
      \ "50amenu " .
      \ "PopUp."   . escape(a:Text, ' ') .
-     \ "<Tab>"	  . escape(g:mapleader . "a" . a:Keys , '\') .
+     \ "<Tab>"	  . escape(l:leader . "a" . a:Keys , '\') .
      \ " :"	  . a:Command . "<CR>"
 
    call ada#Map_Menu (a:Text, a:Keys, a:Command)
diff -urN vim71/runtime/autoload/decada.vim vim71_ada/runtime/autoload/decada.vim
--- vim71/runtime/autoload/decada.vim	2007-05-05 19:25:32.000000000 +0200
+++ vim71_ada/runtime/autoload/decada.vim	2008-01-16 16:46:41.000000000 +0100
@@ -1,14 +1,14 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada/Dec Ada compiler file
 "     Language: Ada (Dec Ada)
-"          $Id: decada.vim,v 1.1 2007/05/05 17:25:32 vimboss Exp $
+"          $Id: decada.vim 774 2007-09-17 09:11:59Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
-"   Maintainer:	Martin Krischik
-"      $Author: vimboss $
-"        $Date: 2007/05/05 17:25:32 $
-"      Version: 4.2
-"    $Revision: 1.1 $
-"     $HeadURL: https://svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $
+"   Maintainer:	Martin Krischik <krischik at users.sourceforge.net>
+"      $Author: krischik $
+"        $Date: 2007-09-17 11:11:59 +0200 (Mo, 17 Sep 2007) $
+"      Version: 4.5
+"    $Revision: 774 $
+"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/autoload/decada.vim $
 "      History: 21.07.2006 MK New Dec Ada
 "               15.10.2006 MK Bram's suggestion for runtime integration
 "               05.11.2006 MK Bram suggested not to use include protection for
@@ -45,7 +45,7 @@
       call ada#Switch_Session (a:1)
    elseif argc() == 0 && strlen (v:servername) > 0
       call ada#Switch_Session (
-	 \ expand('~')[0:-2] . ".vimfiles.session]" .
+	 \ expand('~')[0:-2] . ".vimfiles.session]decada_" .
 	 \ v:servername . ".vim")
    endif
    return
diff -urN vim71/runtime/autoload/gnat.vim vim71_ada/runtime/autoload/gnat.vim
--- vim71/runtime/autoload/gnat.vim	2007-05-05 20:18:20.000000000 +0200
+++ vim71_ada/runtime/autoload/gnat.vim	2008-01-16 16:46:46.000000000 +0100
@@ -1,14 +1,15 @@
 "------------------------------------------------------------------------------
 "  Description: Vim Ada/GNAT compiler file
 "     Language: Ada (GNAT)
-"          $Id: gnat.vim,v 1.1 2007/05/05 18:18:20 vimboss Exp $
+"          $Id: gnat.vim 774 2007-09-17 09:11:59Z krischik $
 "    Copyright: Copyright (C) 2006 Martin Krischik
-"   Maintainer:	Martin Krischik
-"      $Author: vimboss $
-"        $Date: 2007/05/05 18:18:20 $
-"      Version: 4.2
-"    $Revision: 1.1 $
[...6619 lines suppressed...]
+" We won't map "adaAssignment" by default, but we need to map ":=" to
+" something or the "=" inside it will be mislabelled as an operator.
+" Note that in Ada, assignment (:=) is not considered an operator.
+syn match adaAssignment		":="
+
+" Handle the box, <>, specially:
+syn keyword adaSpecial	<>
+
+" Numbers, including floating point, exponents, and alternate bases.
+syn match   adaNumber		"\<\d[0-9_]*\(\.\d[0-9_]*\)\=\([Ee][+-]\=\d[0-9_]*\)\=\>"
+syn match   adaNumber		"\<\d\d\=#\x[0-9A-Fa-f_]*\(\.\x[0-9A-Fa-f_]*\)\=#\([Ee][+-]\=\d[0-9_]*\)\="
+
+" Identify leading numeric signs. In "A-5" the "-" is an operator,
+" but in "A:=-5" the "-" is a sign. This handles "A3+-5" (etc.) correctly.
+" This assumes that if you put a don't put a space after +/- when it's used
+" as an operator, you won't put a space before it either -- which is true
+" in code I've seen.
+syn match adaSign "[[:space:]<>=(,|:;&*/+-][+-]\d"lc=1,hs=s+1,he=e-1,me=e-1
+
+" Labels for the goto statement.
+syn region  adaLabel		start="<<"  end=">>"
+
+" Boolean Constants.
+syn keyword adaBoolean	true false
+
+" Warn people who try to use C/C++ notation erroneously:
+syn match adaError "//"
+syn match adaError "/\*"
+syn match adaError "=="
+
+
+if exists("ada_space_errors")
+  if !exists("ada_no_trail_space_error")
+    syn match   adaSpaceError     excludenl "\s\+$"
+  endif
+  if !exists("ada_no_tab_space_error")
+    syn match   adaSpaceError     " \+\t"me=e-1
+  endif
+endif
+
+" Unless special ("end loop", "end if", etc.), "end" marks the end of a
+" begin, package, task etc. Assiging it to adaEnd.
+syn match adaEnd		"\<end\>"
+
+syn keyword adaPreproc		pragma
+
+syn keyword adaRepeat		exit for loop reverse while
+syn match adaRepeat		"\<end\s\+loop\>"
+
+syn keyword adaStatement	accept delay goto raise requeue return
+syn keyword adaStatement	terminate
+" BUSH-specific statements
+syn keyword adaStatement	cd
+syn keyword adaStatement	clear
+syn keyword adaStatement	env
+syn keyword adaStatement	inkey
+syn keyword adaStatement	jobs
+syn keyword adaStatement	logout
+syn keyword adaStatement	pwd
+syn keyword adaStatement	step
+syn keyword adaStatement	trace
+syn keyword adaStatement	typeset
+syn keyword adaStatement	unset
+syn keyword adaStatement	wait
+syn keyword adaStatement	history
+syn keyword adaStatement	"?"
+syn match adaStatement	"\<abort\>"
+
+" Handle Ada's record keywords.
+" 'record' usually starts a structure, but "with null record;" does not,
+" and 'end record;' ends a structure.  The ordering here is critical -
+" 'record;' matches a "with null record", so make it a keyword (this can
+" match when the 'with' or 'null' is on a previous line).
+" We see the "end" in "end record" before the word record, so we match that
+" pattern as adaStructure (and it won't match the "record;" pattern).
+syn match adaStructure	"\<record\>"
+syn match adaStructure	"\<end\s\+record\>"
+syn match adaKeyword	"\<record;"me=e-1
+
+syn keyword adaStorageClass	abstract access aliased array at constant delta
+syn keyword adaStorageClass	digits limited of private range tagged
+syn keyword adaTypedef		subtype type
+
+" Conditionals. "abort" after "then" is a conditional of its own.
+syn match adaConditional	"\<then\>"
+syn match adaConditional	"\<then\s\+abort\>"
+syn match adaConditional	"\<else\>"
+syn match adaConditional	"\<end\s\+if\>"
+syn match adaConditional	"\<end\s\+case\>"
+syn match adaConditional	"\<end\s\+select\>"
+syn keyword adaConditional	if case select
+syn keyword adaConditional	elsif when
+
+syn keyword adaKeyword		all do exception in is new null out
+syn keyword adaKeyword		separate until
+
+" These keywords begin various constructs, and you _might_ want to
+" highlight them differently.
+syn keyword adaBegin		begin body declare entry function generic
+syn keyword adaBegin		package procedure protected renames task
+
+
+if exists("ada_withuse_ordinary")
+" Don't be fancy. Display "with" and "use" as ordinary keywords in all cases.
+ syn keyword adaKeyword		with use
+else
+ " Highlight "with" and "use" clauses like C's "#include" when they're used
+ " to reference other compilation units; otherwise they're ordinary keywords.
+ " If we have vim 6.0 or later, we'll use its advanced pattern-matching
+ " capabilities so that we won't match leading spaces.
+ syn match adaKeyword	"\<with\>"
+ syn match adaKeyword	"\<use\>"
+ if version < 600
+  syn match adaBeginWith "^\s*\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+  syn match adaSemiWith	";\s*\(\(with\(\s\+type\)\=\)\|\(use\)\)\>"lc=1 contains=adaInc
+ else
+  syn match adaBeginWith "^\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+  syn match adaSemiWith	";\s*\zs\(\(with\(\s\+type\)\=\)\|\(use\)\)\>" contains=adaInc
+ endif
+ syn match adaInc	"\<with\>" contained contains=NONE
+ syn match adaInc	"\<with\s\+type\>" contained contains=NONE
+ syn match adaInc	"\<use\>" contained contains=NONE
+ " Recognize "with null record" as a keyword (even the "record").
+ syn match adaKeyword	"\<with\s\+null\s\+record\>"
+ " Consider generic formal parameters of subprograms and packages as keywords.
+ if version < 600
+  syn match adaKeyword	";\s*with\s\+\(function\|procedure\|package\)\>"
+  syn match adaKeyword	"^\s*with\s\+\(function\|procedure\|package\)\>"
+ else
+  syn match adaKeyword	";\s*\zswith\s\+\(function\|procedure\|package\)\>"
+  syn match adaKeyword	"^\s*\zswith\s\+\(function\|procedure\|package\)\>"
+ endif
+endif
+
+
+" String and character constants.
+syn region  adaString		start=+"+  skip=+""+  end=+"+
+syn match   adaCharacter	"'.'"
+
+" Todo (only highlighted in comments)
+syn keyword adaTodo contained	TODO FIXME XXX
+
+" Comments.
+syn region  adaComment	oneline contains=adaTodo start="--"  end="$"
+
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_ada_syn_inits")
+  if version < 508
+    let did_ada_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  " The default methods for highlighting. Can be overridden later.
+  HiLink adaCharacter	Character
+  HiLink adaComment	Comment
+  HiLink adaConditional	Conditional
+  HiLink adaKeyword	Keyword
+  HiLink adaLabel	Label
+  HiLink adaNumber	Number
+  HiLink adaSign	Number
+  HiLink adaOperator	Operator
+  HiLink adaPreproc	PreProc
+  HiLink adaRepeat	Repeat
+  HiLink adaSpecial	Special
+  HiLink adaStatement	Statement
+  HiLink adaString	String
+  HiLink adaStructure	Structure
+  HiLink adaTodo	Todo
+  HiLink adaType	Type
+  HiLink adaTypedef	Typedef
+  HiLink adaStorageClass	StorageClass
+  HiLink adaBoolean	Boolean
+  HiLink adaException	Exception
+  HiLink adaInc	Include
+  HiLink adaError	Error
+  HiLink adaSpaceError	Error
+  HiLink adaBuiltinType Type
+
+  if exists("ada_begin_preproc")
+   " This is the old default display:
+   HiLink adaBegin	PreProc
+   HiLink adaEnd	PreProc
+  else
+   " This is the new default display:
+   HiLink adaBegin	Keyword
+   HiLink adaEnd	Keyword
+  endif
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "ada"
+
+" vim: ts=8


Index: README.patches
===================================================================
RCS file: /cvs/extras/rpms/vim/F-7/README.patches,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- README.patches	9 Jan 2008 13:13:47 -0000	1.79
+++ README.patches	11 Feb 2008 16:41:46 -0000	1.80
@@ -107,6 +107,7 @@
   5259  7.1.074  crash when using string() on a recursively nested List
   1686  7.1.075  ":let v:statusmsg" reads memory already freed
   2376  7.1.076  a couple more strcpy() with overlapping arguments
+  1551  7.1.077  "can_spell" is used without initializing it
   2678  7.1.078  dropping file name on gvim containing CSI byte doesn't work
   2922  7.1.079  "@" character in 'isfname' doesn't pick up umlauts for latin1
   2960  7.1.080  (extra) Compiler warnings for gvimex.cpp
@@ -242,3 +243,37 @@
   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
+  1491  7.1.212  accessing a byte before a line
+  1750  7.1.213  aborting ":tabedit" from the ATTENTION dialog leaves tab open
+  8399  7.1.214  ":1s/g\n\zs1//" deletes characters from the first line
+  6476  7.1.215  it's difficult to figure out the nesting of syntax items
+  2360  7.1.216  variants of --remote-tab are not mentioned for "vim --help"
+  7103  7.1.217  the "help-tags" tag may be missing from runtime/doc/tags
+  1864  7.1.218  syntax region without "keepend" could be truncated
+ 12134  7.1.219  (after 7.1.215) synstack() doesn't work for one char region
+  3928  7.1.220  cursor may end up on trail byte after ")"
+  1978  7.1.221  when inserting a "(" the following highlighting may be wrong
+  3531  7.1.222  (after 7.1.217) wildcards of ":helptags" are not expanded
+  8138  7.1.223  glob() doesn't handle "'" when 'shell' is "sh" or "bash"
+  2131  7.1.224  "vim -F -o one two" sets 'rightleft' in one window only
+  1767  7.1.225  using unitialized value when XGetWMNormalHints() fails
+  1957  7.1.226  command line completion fails for a file name with a '&' char
+  5595  7.1.227  hang in syntax HL when moving over a ")"
+  1678  7.1.228  with 'foldmethod' "indent" fold can't be closed after "3>>"
+  1758  7.1.229  a fold is closed when backspacing in Insert mode
+  2052  7.1.230  memory leak when executing SourceCmd autocommands
+  8648  7.1.231  when shifting lines the change is acted upon multiple times
+  2002  7.1.232  (after 7.1.207 and 7.1.211) compiler warnings with MSVC
+  3249  7.1.233  crash with Insert mode completion for a user defined command
+  6865  7.1.234  display problems when diff'ing three files
+  5925  7.1.235  pattern matching is slow when using a lot of simple patterns
+ 28992  7.1.236  hang when using complicated pattern and 'hlsearch' or ":match"
+  1704  7.1.237  compiler warning on an Alpha processor in Motif code
+  1801  7.1.238  searchpair() may fail when using 'c' or 'r' flag
+  1639  7.1.239  (after 7.1.233) compiler warning for sprintf() argument
+  5157  7.1.240  "gUe" may stop before the end of the word
+  3093  7.1.241  focus change events not always ignored
+  2262  7.1.242  "cib" doesn't work properly on "(x)"
+  4475  7.1.243  (after 7.1.240) "U" doesn't work on all text in Visual mode
+  1847  7.1.244  GUI may have part of the command line cut off
+  2767  7.1.245  pressing CTRL-\ three times causes Vim to quit


Index: vim.spec
===================================================================
RCS file: /cvs/extras/rpms/vim/F-7/vim.spec,v
retrieving revision 1.169
retrieving revision 1.170
diff -u -r1.169 -r1.170
--- vim.spec	9 Jan 2008 13:13:47 -0000	1.169
+++ vim.spec	11 Feb 2008 16:41:46 -0000	1.170
@@ -1,6 +1,8 @@
 # used for CVS snapshots:
 %define CVSDATE %{nil}
+%if %{?WITH_SELINUX:0}%{!?WITH_SELINUX:1}
 %define WITH_SELINUX 1
+%endif
 %define desktop_file 1
 %if %{desktop_file}
 %define desktop_file_utils_version 0.2.93
@@ -15,7 +17,7 @@
 #used for pre-releases:
 %define beta %{nil}
 %define vimdir vim71%{?beta}
-%define patchlevel 211
+%define patchlevel 245
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
@@ -262,6 +264,37 @@
 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
+Patch212: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.212
+Patch213: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.213
+Patch214: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.214
+Patch215: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.215
+Patch216: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.216
+Patch217: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.217
+Patch218: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.218
+Patch219: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.219
+Patch220: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.220
+Patch221: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.221
+Patch222: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.222
+Patch223: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.223
+Patch224: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.224
+Patch225: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.225
+Patch226: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.226
+Patch227: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.227
+Patch228: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.228
+Patch229: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.229
+Patch230: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.230
+Patch231: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.231
+Patch232: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.232
+Patch233: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.233
+Patch234: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.234
+Patch235: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.235
+Patch236: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.236
+Patch237: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.237
+Patch238: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.238
+Patch239: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.239
+Patch240: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.240
+Patch241: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.241
+Patch242: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.242
 
 Patch3000: vim-7.0-syntax.patch
 Patch3002: vim-7.1-nowarnings.patch
@@ -274,6 +307,8 @@
 Patch3010: vim-7.0-syncolor.patch
 Patch3011: vim-7.0-vimspelltypo.patch
 Patch3012: vim-7.0-specedit.patch
+# Remove this one when the runtime files get updated (#246378):
+Patch3013: vim-7.1-ada.patch
 #
 Patch3100: vim-selinux.patch
 Patch3101: vim-selinux2.patch
@@ -605,6 +640,37 @@
 %patch209 -p0 
 %patch210 -p0 
 %patch211 -p0 
+%patch212 -p0
+%patch213 -p0
+%patch214 -p0
+%patch215 -p0
+%patch216 -p0
+%patch217 -p0
+%patch218 -p0
+%patch219 -p0
+%patch220 -p0
+%patch221 -p0
+%patch222 -p0
+%patch223 -p0
+%patch224 -p0
+%patch225 -p0
+%patch226 -p0
+%patch227 -p0
+%patch228 -p0
+%patch229 -p0
+%patch230 -p0
+%patch231 -p0
+%patch232 -p0
+%patch233 -p0
+%patch234 -p0
+%patch235 -p0
+%patch236 -p0
+%patch237 -p0
+%patch238 -p0
+%patch239 -p0
+%patch240 -p0
+%patch241 -p0
+%patch242 -p0
 
 
 # install spell files
@@ -624,6 +690,7 @@
 %patch3010 -p1
 %patch3011 -p1
 %patch3012 -p1
+%patch3013 -p1
 
 %if %{WITH_SELINUX}
 %patch3100 -p1
@@ -991,8 +1058,31 @@
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
-* Wed Jan 09 2008 Karsten Hopp <karsten at redhat.com> 7.1.211-1
-- rebuild for FC-7
+* Mon Feb 11 2008 Karsten Hopp <karsten at redhat.com> 7.1.245-1
+- patchlevel 245
+
+* Sun Jan 27 2008 Karsten Hopp <karsten at redhat.com> 7.1.242-1
+- patchlevel 242
+
+* Fri Jan 18 2008 Karsten Hopp <karsten at redhat.com> 7.1.233-2
+- silence taglist plugin (#429200)
+
+* Fri Jan 18 2008 Karsten Hopp <karsten at redhat.com> 7.1.233-1
+- patchlevel 233
+- fix ada patch
+
+* Wed Jan 16 2008 Karsten Hopp <karsten at redhat.com> 7.1.230-2
+- add newer ada runtime files to fix bugzilla #246378
+
+* Wed Jan 16 2008 Karsten Hopp <karsten at redhat.com> 7.1.230-1
+- patchlevel 230, fixes memory leak
+
+* Mon Jan 14 2008 Karsten Hopp <karsten at redhat.com> 7.1.228-1
+- patchlevel 228
+- allow overwriting WITH_SELING at build time (#427710)
+
+* Thu Jan 10 2008 Karsten Hopp <karsten at redhat.com> 7.1.214-1
+- patchlevel 214
 
 * Mon Jan 07 2008 Karsten Hopp <karsten at redhat.com> 7.1.211-1
 - patchlevel 211




More information about the fedora-extras-commits mailing list