rpms/vim/F-10 7.2.149, NONE, 1.1 7.2.150, NONE, 1.1 7.2.151, NONE, 1.1 7.2.152, NONE, 1.1 7.2.153, NONE, 1.1 7.2.154, NONE, 1.1 7.2.155, NONE, 1.1 7.2.156, NONE, 1.1 7.2.157, NONE, 1.1 7.2.158, NONE, 1.1 7.2.159, NONE, 1.1 7.2.160, NONE, 1.1 7.2.161, NONE, 1.1 7.2.162, NONE, 1.1 7.2.163, NONE, 1.1 7.2.164, NONE, 1.1 7.2.165, NONE, 1.1 7.2.166, NONE, 1.1 7.2.167, NONE, 1.1 7.2.168, NONE, 1.1 7.2.169, NONE, 1.1 7.2.170, NONE, 1.1 7.2.171, NONE, 1.1 7.2.172, NONE, 1.1 7.2.173, NONE, 1.1 7.2.174, NONE, 1.1 7.2.175, NONE, 1.1 7.2.176, NONE, 1.1 7.2.177, NONE, 1.1 7.2.178, NONE, 1.1 7.2.179, NONE, 1.1 7.2.180, NONE, 1.1 7.2.181, NONE, 1.1 7.2.182, NONE, 1.1 7.2.183, NONE, 1.1 7.2.184, NONE, 1.1 7.2.185, NONE, 1.1 7.2.186, NONE, 1.1 7.2.187, NONE, 1.1 7.2.188, NONE, 1.1 7.2.189, NONE, 1.1 7.2.190, NONE, 1.1 7.2.191, NONE, 1.1 7.2.192, NONE, 1.1 7.2.193, NONE, 1.1 7.2.194, NONE, 1.1 7.2.195, NONE, 1.1 7.2.196, NONE, 1.1 7.2.197, NONE, 1.1 7.2.198, NONE, 1.1 7.2.199, NONE, 1.1 7.2.200, NONE, 1.1 7.2.201, NONE, 1.1 7.2.202, NONE, 1.1 7.2.203, NONE, 1.1 7.2.204, NONE, 1.1 7.2.205, NONE, 1.1 7.2.206, NONE, 1.1 7.2.207, NONE, 1.1 7.2.208, NONE, 1.1 7.2.209, NONE, 1.1 7.2.210, NONE, 1.1 7.2.211, NONE, 1.1 7.2.212, NONE, 1.1 7.2.213, NONE, 1.1 7.2.214, NONE, 1.1 7.2.215, NONE, 1.1 7.2.216, NONE, 1.1 7.2.217, NONE, 1.1 7.2.218, NONE, 1.1 7.2.219, NONE, 1.1 7.2.220, NONE, 1.1 7.2.221, NONE, 1.1 7.2.222, NONE, 1.1 7.2.223, NONE, 1.1 7.2.224, NONE, 1.1 7.2.225, NONE, 1.1 7.2.226, NONE, 1.1 7.2.227, NONE, 1.1 7.2.228, NONE, 1.1 7.2.229, NONE, 1.1 7.2.230, NONE, 1.1 7.2.231, NONE, 1.1 7.2.232, NONE, 1.1 7.2.233, NONE, 1.1 7.2.234, NONE, 1.1 7.2.235, NONE, 1.1 7.2.236, NONE, 1.1 7.2.237, NONE, 1.1 7.2.238, NONE, 1.1 7.2.239, NONE, 1.1 7.2.240, NONE, 1.1 7.2.241, NONE, 1.1 7.2.242, NONE, 1.1 7.2.243, NONE, 1.1 7.2.244, NONE, 1.1 7.2.245, NONE, 1.1 7.2.246, NONE, 1.1 7.2.247, NONE, 1.1 7.2.248, NONE, 1.1 7.2.249, NONE, 1.1 7.2.250, NONE, 1.1 7.2.251, NONE, 1.1 7.2.252, NONE, 1.1 7.2.253, NONE, 1.1 7.2.254, NONE, 1.1 7.2.255, NONE, 1.1 7.2.256, NONE, 1.1 7.2.257, NONE, 1.1 7.2.258, NONE, 1.1 7.2.259, NONE, 1.1 7.2.260, NONE, 1.1 7.2.261, NONE, 1.1 7.2.262, NONE, 1.1 7.2.263, NONE, 1.1 7.2.264, NONE, 1.1 7.2.265, NONE, 1.1 7.2.266, NONE, 1.1 7.2.267, NONE, 1.1 7.2.268, NONE, 1.1 7.2.269, NONE, 1.1 7.2.270, NONE, 1.1 7.2.271, NONE, 1.1 7.2.272, NONE, 1.1 7.2.273, NONE, 1.1 7.2.274, NONE, 1.1 7.2.275, NONE, 1.1 7.2.276, NONE, 1.1 7.2.277, NONE, 1.1 7.2.278, NONE, 1.1 7.2.279, NONE, 1.1 7.2.280, NONE, 1.1 7.2.281, NONE, 1.1 7.2.282, NONE, 1.1 7.2.283, NONE, 1.1 7.2.284, NONE, 1.1 7.2.285, NONE, 1.1 7.2.286, NONE, 1.1 7.2.287, NONE, 1.1 7.2.288, NONE, 1.1 7.2.289, NONE, 1.1 7.2.290, NONE, 1.1 7.2.291, NONE, 1.1 7.2.292, NONE, 1.1 7.2.293, NONE, 1.1 7.2.294, NONE, 1.1 7.2.295, NONE, 1.1 7.2.296, NONE, 1.1 7.2.297, NONE, 1.1 7.2.298, NONE, 1.1 7.2.299, NONE, 1.1 7.2.300, NONE, 1.1 7.2.301, NONE, 1.1 7.2.302, NONE, 1.1 7.2.303, NONE, 1.1 7.2.304, NONE, 1.1 7.2.305, NONE, 1.1 7.2.306, NONE, 1.1 7.2.307, NONE, 1.1 7.2.308, NONE, 1.1 7.2.309, NONE, 1.1 7.2.310, NONE, 1.1 7.2.311, NONE, 1.1 7.2.312, NONE, 1.1 7.2.313, NONE, 1.1 7.2.314, NONE, 1.1 7.2.315, NONE, 1.1 vim-7.2-elinks-parameter-518791.patch, NONE, 1.1 vim-7.2-httpfiletype-499123.patch, NONE, 1.1 vim72-rh514717.patch, NONE, 1.1 gvim.desktop, 1.7, 1.8 vim-7.2-fstabsyntax.patch, 1.1, 1.2 vim.spec, 1.228, 1.229 vimrc, 1.20, 1.21

Karsten Hopp karsten at fedoraproject.org
Thu Dec 3 14:10:03 UTC 2009


Author: karsten

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

Modified Files:
	gvim.desktop vim-7.2-fstabsyntax.patch vim.spec vimrc 
Added Files:
	7.2.149 7.2.150 7.2.151 7.2.152 7.2.153 7.2.154 7.2.155 
	7.2.156 7.2.157 7.2.158 7.2.159 7.2.160 7.2.161 7.2.162 
	7.2.163 7.2.164 7.2.165 7.2.166 7.2.167 7.2.168 7.2.169 
	7.2.170 7.2.171 7.2.172 7.2.173 7.2.174 7.2.175 7.2.176 
	7.2.177 7.2.178 7.2.179 7.2.180 7.2.181 7.2.182 7.2.183 
	7.2.184 7.2.185 7.2.186 7.2.187 7.2.188 7.2.189 7.2.190 
	7.2.191 7.2.192 7.2.193 7.2.194 7.2.195 7.2.196 7.2.197 
	7.2.198 7.2.199 7.2.200 7.2.201 7.2.202 7.2.203 7.2.204 
	7.2.205 7.2.206 7.2.207 7.2.208 7.2.209 7.2.210 7.2.211 
	7.2.212 7.2.213 7.2.214 7.2.215 7.2.216 7.2.217 7.2.218 
	7.2.219 7.2.220 7.2.221 7.2.222 7.2.223 7.2.224 7.2.225 
	7.2.226 7.2.227 7.2.228 7.2.229 7.2.230 7.2.231 7.2.232 
	7.2.233 7.2.234 7.2.235 7.2.236 7.2.237 7.2.238 7.2.239 
	7.2.240 7.2.241 7.2.242 7.2.243 7.2.244 7.2.245 7.2.246 
	7.2.247 7.2.248 7.2.249 7.2.250 7.2.251 7.2.252 7.2.253 
	7.2.254 7.2.255 7.2.256 7.2.257 7.2.258 7.2.259 7.2.260 
	7.2.261 7.2.262 7.2.263 7.2.264 7.2.265 7.2.266 7.2.267 
	7.2.268 7.2.269 7.2.270 7.2.271 7.2.272 7.2.273 7.2.274 
	7.2.275 7.2.276 7.2.277 7.2.278 7.2.279 7.2.280 7.2.281 
	7.2.282 7.2.283 7.2.284 7.2.285 7.2.286 7.2.287 7.2.288 
	7.2.289 7.2.290 7.2.291 7.2.292 7.2.293 7.2.294 7.2.295 
	7.2.296 7.2.297 7.2.298 7.2.299 7.2.300 7.2.301 7.2.302 
	7.2.303 7.2.304 7.2.305 7.2.306 7.2.307 7.2.308 7.2.309 
	7.2.310 7.2.311 7.2.312 7.2.313 7.2.314 7.2.315 
	vim-7.2-elinks-parameter-518791.patch 
	vim-7.2-httpfiletype-499123.patch vim72-rh514717.patch 
Log Message:
- patchlevel 315
- fix vimrc location in man page (#456992)
- correct syntax highlighting of httpd config files in /etc/httpd (#499123)
- Buildrequire ruby, ruby-devel (#503872)
- Remove check for static gravity (#510307)
- sort tags file (#517725)
- use one gvim to open multiple file selections from nautilus (#519265)
- use elinks -source instead of elinks -dump (#518791)
- add ext4 keyword to /etc/fstab syntax highlighting (#498290)




--- NEW FILE 7.2.149 ---
To: vim-dev at vim.org
Subject: Patch 7.2.149
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.149
Problem:    Using return value of function that doesn't return a value results
	    in reading uninitialized memory.
Solution:   Set the default to return zero.  Make cursor() return -1 on
	    failure.  Let complete() return an empty string in case of an
	    error.  (partly by Dominique Pelle)
Files:	    runtime/doc/eval.txt, src/eval.c


*** ../vim-7.2.148/runtime/doc/eval.txt	Tue Dec  9 10:56:50 2008
--- runtime/doc/eval.txt	Sun Mar 22 14:28:49 2009
***************
*** 2414,2419 ****
--- 2419,2425 ----
  		When 'virtualedit' is used {off} specifies the offset in
  		screen columns from the start of the character.  E.g., a
  		position within a <Tab> or after the last character.
+ 		Returns 0 when the position could be set, -1 otherwise.
  
  
  deepcopy({expr}[, {noref}])				*deepcopy()* *E698*
***************
*** 4516,4521 ****
--- 4526,4532 ----
  		should also work to move files across file systems.  The
  		result is a Number, which is 0 if the file was renamed
  		successfully, and non-zero when the renaming failed.
+ 		NOTE: If {to} exists it is overwritten without warning.
  		This function is not available in the |sandbox|.
  
  repeat({expr}, {count})					*repeat()*
*** ../vim-7.2.148/src/eval.c	Wed Feb  4 16:25:53 2009
--- src/eval.c	Sun Mar 22 20:45:18 2009
***************
*** 1285,1291 ****
--- 1285,1293 ----
      typval_T	tv;
      char_u	*retval;
      garray_T	ga;
+ #ifdef FEAT_FLOAT
      char_u	numbuf[NUMBUFLEN];
+ #endif
  
      if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
  	retval = NULL;
***************
*** 8018,8024 ****
      /* execute the function if no errors detected and executing */
      if (evaluate && error == ERROR_NONE)
      {
! 	rettv->v_type = VAR_NUMBER;	/* default is number rettv */
  	error = ERROR_UNKNOWN;
  
  	if (!builtin_function(fname))
--- 8020,8027 ----
      /* execute the function if no errors detected and executing */
      if (evaluate && error == ERROR_NONE)
      {
! 	rettv->v_type = VAR_NUMBER;	/* default rettv is number zero */
! 	rettv->vval.v_number = 0;
  	error = ERROR_UNKNOWN;
  
  	if (!builtin_function(fname))
***************
*** 8268,8274 ****
  		return;
  	    li = l->lv_first;
  	}
- 	rettv->vval.v_number = 0;	/* Default: Success */
  	for (;;)
  	{
  	    if (l == NULL)
--- 8271,8276 ----
***************
*** 8728,8734 ****
      int		dummy;
      dict_T	*selfdict = NULL;
  
-     rettv->vval.v_number = 0;
      if (argvars[1].v_type != VAR_LIST)
      {
  	EMSG(_(e_listreq));
--- 8730,8735 ----
***************
*** 9036,9048 ****
      if (buttons == NULL || *buttons == NUL)
  	buttons = (char_u *)_("&Ok");
  
!     if (error)
! 	rettv->vval.v_number = 0;
!     else
  	rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
  								   def, NULL);
- #else
-     rettv->vval.v_number = 0;
  #endif
  }
  
--- 9037,9045 ----
      if (buttons == NULL || *buttons == NUL)
  	buttons = (char_u *)_("&Ok");
  
!     if (!error)
  	rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
  								   def, NULL);
  #endif
  }
  
***************
*** 9181,9195 ****
      }
  
      rettv->vval.v_number = cs_connection(num, dbpath, prepend);
- #else
-     rettv->vval.v_number = 0;
  #endif
  }
  
  /*
   * "cursor(lnum, col)" function
   *
!  * Moves the cursor to the specified line and column
   */
  /*ARGSUSED*/
      static void
--- 9178,9191 ----
      }
  
      rettv->vval.v_number = cs_connection(num, dbpath, prepend);
  #endif
  }
  
  /*
   * "cursor(lnum, col)" function
   *
!  * Moves the cursor to the specified line and column.
!  * Returns 0 when the position could be set, -1 otherwise.
   */
  /*ARGSUSED*/
      static void
***************
*** 9202,9207 ****
--- 9198,9204 ----
      long	coladd = 0;
  #endif
  
+     rettv->vval.v_number = -1;
      if (argvars[1].v_type == VAR_UNKNOWN)
      {
  	pos_T	    pos;
***************
*** 9246,9251 ****
--- 9243,9249 ----
  #endif
  
      curwin->w_set_curswant = TRUE;
+     rettv->vval.v_number = 0;
  }
  
  /*
***************
*** 9291,9298 ****
  {
  #ifdef FEAT_AUTOCMD
      rettv->vval.v_number = did_filetype;
- #else
-     rettv->vval.v_number = 0;
  #endif
  }
  
--- 9289,9294 ----
***************
*** 9605,9611 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST)
      {
  	list_T		*l1, *l2;
--- 9601,9606 ----
***************
*** 9733,9739 ****
      if (check_secure())
  	return;
  
-     rettv->vval.v_number = 0;
      keys = get_tv_string(&argvars[0]);
      if (*keys != NUL)
      {
--- 9728,9733 ----
***************
*** 9901,9907 ****
      char_u	*ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
      int		save_did_emsg;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type == VAR_LIST)
      {
  	if ((l = argvars[0].vval.v_list) == NULL
--- 9895,9900 ----
***************
*** 10084,10091 ****
  	else
  	    rettv->vval.v_number = (varnumber_T)f;
      }
-     else
- 	rettv->vval.v_number = 0;
  }
  
  /*
--- 10077,10082 ----
***************
*** 10219,10227 ****
      lnum = get_tv_lnum(argvars);
      if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count)
  	rettv->vval.v_number = foldLevel(lnum);
-     else
  #endif
- 	rettv->vval.v_number = 0;
  }
  
  /*
--- 10210,10216 ----
***************
*** 10337,10343 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
-     rettv->vval.v_number = 0;
  #ifdef FEAT_GUI
      if (gui.in_use)
  	gui_mch_set_foreground();
--- 10326,10331 ----
***************
*** 10359,10365 ****
  {
      char_u	*s;
  
-     rettv->vval.v_number = 0;
      s = get_tv_string(&argvars[0]);
      if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
  	EMSG2(_(e_invarg2), s);
--- 10347,10352 ----
***************
*** 10429,10437 ****
  
      if (tv == NULL)
      {
! 	if (argvars[2].v_type == VAR_UNKNOWN)
! 	    rettv->vval.v_number = 0;
! 	else
  	    copy_tv(&argvars[2], rettv);
      }
      else
--- 10416,10422 ----
  
      if (tv == NULL)
      {
! 	if (argvars[2].v_type != VAR_UNKNOWN)
  	    copy_tv(&argvars[2], rettv);
      }
      else
***************
*** 10456,10468 ****
  {
      char_u	*p;
  
!     if (retlist)
!     {
! 	if (rettv_list_alloc(rettv) == FAIL)
! 	    return;
!     }
!     else
! 	rettv->vval.v_number = 0;
  
      if (buf == NULL || buf->b_ml.ml_mfp == NULL || start < 0)
  	return;
--- 10441,10448 ----
  {
      char_u	*p;
  
!     if (retlist && rettv_list_alloc(rettv) == FAIL)
! 	return;
  
      if (buf == NULL || buf->b_ml.ml_mfp == NULL || start < 0)
  	return;
***************
*** 11009,11016 ****
      dict_T	*dict;
      matchitem_T	*cur = curwin->w_match_head;
  
-     rettv->vval.v_number = 0;
- 
      if (rettv_list_alloc(rettv) == OK)
      {
  	while (cur != NULL)
--- 10989,10994 ----
***************
*** 11089,11095 ****
      win_T	*wp;
  #endif
  
-     rettv->vval.v_number = 0;
  #ifdef FEAT_QUICKFIX
      if (rettv_list_alloc(rettv) == OK)
      {
--- 11067,11072 ----
***************
*** 11935,11941 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type != VAR_DICT)
      {
  	EMSG(_(e_dictreq));
--- 11912,11917 ----
***************
*** 12052,12059 ****
  	n = del_history_entry(get_histtype(str),
  				      get_tv_string_buf(&argvars[1], buf));
      rettv->vval.v_number = n;
- #else
-     rettv->vval.v_number = 0;
  #endif
  }
  
--- 12028,12033 ----
***************
*** 12415,12421 ****
      int		selected;
      int		mouse_used;
  
-     rettv->vval.v_number = 0;
  #ifdef NO_CONSOLE_INPUT
      /* While starting up, there is no place to enter text. */
      if (no_console_input())
--- 12389,12394 ----
***************
*** 12464,12470 ****
  	--ga_userinput.ga_len;
  	restore_typeahead((tasave_T *)(ga_userinput.ga_data)
  						       + ga_userinput.ga_len);
! 	rettv->vval.v_number = 0; /* OK */
      }
      else if (p_verbose > 1)
      {
--- 12437,12443 ----
  	--ga_userinput.ga_len;
  	restore_typeahead((tasave_T *)(ga_userinput.ga_data)
  						       + ga_userinput.ga_len);
! 	/* default return is zero == OK */
      }
      else if (p_verbose > 1)
      {
***************
*** 12488,12494 ****
  	save_typeahead((tasave_T *)(ga_userinput.ga_data)
  						       + ga_userinput.ga_len);
  	++ga_userinput.ga_len;
! 	rettv->vval.v_number = 0; /* OK */
      }
      else
  	rettv->vval.v_number = 1; /* Failed */
--- 12461,12467 ----
  	save_typeahead((tasave_T *)(ga_userinput.ga_data)
  						       + ga_userinput.ga_len);
  	++ga_userinput.ga_len;
! 	/* default return is zero == OK */
      }
      else
  	rettv->vval.v_number = 1; /* Failed */
***************
*** 12522,12528 ****
      list_T	*l;
      int		error = FALSE;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type != VAR_LIST)
  	EMSG2(_(e_listarg), "insert()");
      else if ((l = argvars[0].vval.v_list) != NULL
--- 12495,12500 ----
***************
*** 12641,12647 ****
      dict_T	*d;
      int		todo;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type != VAR_DICT)
      {
  	EMSG(_(e_dictreq));
--- 12613,12618 ----
***************
*** 12729,12735 ****
      garray_T	ga;
      char_u	*sep;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type != VAR_LIST)
      {
  	EMSG(_(e_listreq));
--- 12700,12705 ----
***************
*** 12827,12835 ****
  #endif
  
      rettv->v_type = type;
!     if (type == VAR_NUMBER)
! 	rettv->vval.v_number = 0;
!     else
  	rettv->vval.v_string = NULL;
  
      if (check_restricted() || check_secure())
--- 12797,12803 ----
  #endif
  
      rettv->v_type = type;
!     if (type != VAR_NUMBER)
  	rettv->vval.v_string = NULL;
  
      if (check_restricted() || check_secure())
***************
*** 13770,13776 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
-     rettv->vval.v_number = 0;
  #ifdef FEAT_INS_EXPAND
      if (pum_visible())
  	rettv->vval.v_number = 1;
--- 13738,13743 ----
***************
*** 13804,13810 ****
  	    stride = get_tv_number_chk(&argvars[2], &error);
      }
  
-     rettv->vval.v_number = 0;
      if (error)
  	return;		/* type error; errmsg already given */
      if (stride == 0)
--- 13771,13776 ----
***************
*** 14193,14199 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
-     rettv->vval.v_number = 0;
  #ifdef FEAT_CLIENTSERVER
  # ifdef WIN32
      /* On Win32 it's done in this application. */
--- 14159,14164 ----
***************
*** 14249,14255 ****
  	rettv->vval.v_number = (s != NULL);
      }
  # else
-     rettv->vval.v_number = 0;
      if (check_connection() == FAIL)
  	return;
  
--- 14214,14219 ----
***************
*** 14338,14344 ****
      dict_T	*d;
      dictitem_T	*di;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type == VAR_DICT)
      {
  	if (argvars[2].v_type != VAR_UNKNOWN)
--- 14302,14307 ----
***************
*** 14696,14702 ****
      list_T	*l;
      listitem_T	*li, *ni;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type != VAR_LIST)
  	EMSG2(_(e_listarg), "reverse()");
      else if ((l = argvars[0].vval.v_list) != NULL
--- 14659,14664 ----
***************
*** 15048,15055 ****
      int		lnum = 0;
      int		col = 0;
  
-     rettv->vval.v_number = 0;
- 
      if (rettv_list_alloc(rettv) == FAIL)
  	return;
  
--- 15010,15015 ----
***************
*** 15236,15243 ****
      int		n;
      int		flags = 0;
  
-     rettv->vval.v_number = 0;
- 
      if (rettv_list_alloc(rettv) == FAIL)
  	return;
  
--- 15196,15201 ----
***************
*** 15323,15330 ****
      typval_T	*varp;
      char_u	nbuf[NUMBUFLEN];
  
-     rettv->vval.v_number = 0;
- 
      if (check_restricted() || check_secure())
  	return;
      (void)get_tv_number(&argvars[0]);	    /* issue errmsg if type error */
--- 15281,15286 ----
***************
*** 15404,15410 ****
      else
  	line = get_tv_string_chk(&argvars[1]);
  
!     rettv->vval.v_number = 0;		/* OK */
      for (;;)
      {
  	if (l != NULL)
--- 15360,15366 ----
      else
  	line = get_tv_string_chk(&argvars[1]);
  
!     /* default result is zero == OK */
      for (;;)
      {
  	if (l != NULL)
***************
*** 15717,15722 ****
--- 15673,15679 ----
  /*
   * "setwinvar()" and "settabwinvar()" functions
   */
+ /*ARGSUSED*/
      static void
  setwinvar(argvars, rettv, off)
      typval_T	*argvars;
***************
*** 15733,15740 ****
      char_u	nbuf[NUMBUFLEN];
      tabpage_T	*tp;
  
-     rettv->vval.v_number = 0;
- 
      if (check_restricted() || check_secure())
  	return;
  
--- 15690,15695 ----
***************
*** 15947,15953 ****
      long	len;
      long	i;
  
-     rettv->vval.v_number = 0;
      if (argvars[0].v_type != VAR_LIST)
  	EMSG2(_(e_listarg), "sort()");
      else
--- 15902,15907 ----
***************
*** 16870,16878 ****
      typval_T	*argvars;
      typval_T	*rettv;
  {
! #ifndef FEAT_WINDOWS
!     rettv->vval.v_number = 0;
! #else
      tabpage_T	*tp;
      win_T	*wp = NULL;
  
--- 16824,16830 ----
      typval_T	*argvars;
      typval_T	*rettv;
  {
! #ifdef FEAT_WINDOWS
      tabpage_T	*tp;
      win_T	*wp = NULL;
  
***************
*** 16884,16902 ****
  	if (tp != NULL)
  	    wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
      }
!     if (wp == NULL)
! 	rettv->vval.v_number = 0;
!     else
      {
! 	if (rettv_list_alloc(rettv) == FAIL)
! 	    rettv->vval.v_number = 0;
! 	else
! 	{
! 	    for (; wp != NULL; wp = wp->w_next)
! 		if (list_append_number(rettv->vval.v_list,
  						wp->w_buffer->b_fnum) == FAIL)
! 		    break;
! 	}
      }
  #endif
  }
--- 16836,16847 ----
  	if (tp != NULL)
  	    wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
      }
!     if (wp != NULL && rettv_list_alloc(rettv) != FAIL)
      {
! 	for (; wp != NULL; wp = wp->w_next)
! 	    if (list_append_number(rettv->vval.v_list,
  						wp->w_buffer->b_fnum) == FAIL)
! 		break;
      }
  #endif
  }
***************
*** 17024,17033 ****
      int		first;
  
      if (rettv_list_alloc(rettv) == FAIL)
-     {
- 	rettv->vval.v_number = 0;
  	return;
-     }
  
      for (first = TRUE; ; first = FALSE)
  	if (get_tagfname(&tn, first, fname) == FAIL
--- 16969,16975 ----
***************
*** 17401,17408 ****
      /* A non-zero number or non-empty string argument: reset mode. */
      if (non_zero_arg(&argvars[0]))
  	curbuf->b_visual_mode_eval = NUL;
- #else
-     rettv->vval.v_number = 0; /* return anything, it won't work anyway */
  #endif
  }
  
--- 17343,17348 ----
*** ../vim-7.2.148/src/version.c	Wed Mar 18 19:07:09 2009
--- src/version.c	Wed Apr 22 12:44:05 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     149,
  /**/


-- 
WOMAN:   Well, 'ow did you become king then?
ARTHUR:  The Lady of the Lake, [angels sing] her arm clad in the purest
         shimmering samite, held aloft Excalibur from the bosom of the water
         signifying by Divine Providence that I, Arthur, was to carry
         Excalibur.  [singing stops] That is why I am your king!
                                  The Quest for the Holy Grail (Monty Python)

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


--- NEW FILE 7.2.150 ---
To: vim-dev at vim.org
Subject: Patch 7.2.150 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Note: I haven't tested this myself, since I don't have a compiler that
works for this code.

Patch 7.2.150 (extra)
Problem:    Can't use tab pages from VisVim.
Solution:   Add tab page support to VisVim. (Adam Slater)
Files:	    src/VisVim/Commands.cpp, src/VisVim/Resource.h,
	    src/VisVim/VisVim.rc


*** ../vim-7.2.149/src/VisVim/Commands.cpp	Thu May 10 20:45:34 2007
--- src/VisVim/Commands.cpp	Mon Mar  2 00:52:15 2009
***************
*** 20,39 ****
  
  static BOOL g_bEnableVim = TRUE;	// Vim enabled
  static BOOL g_bDevStudioEditor = FALSE;	// Open file in Dev Studio editor simultaneously
  static int g_ChangeDir = CD_NONE;	// CD after file open?
  
! static void VimSetEnableState (BOOL bEnableState);
! static BOOL VimOpenFile (BSTR& FileName, long LineNr);
! static DISPID VimGetDispatchId (COleAutomationControl& VimOle, char* Method);
! static void VimErrDiag (COleAutomationControl& VimOle);
! static void VimChangeDir (COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName);
! static void DebugMsg (char* Msg, char* Arg = NULL);
  
  
  /////////////////////////////////////////////////////////////////////////////
  // CCommands
  
! CCommands::CCommands ()
  {
  	// m_pApplication == NULL; M$ Code generation bug!!!
  	m_pApplication = NULL;
--- 20,40 ----
  
  static BOOL g_bEnableVim = TRUE;	// Vim enabled
  static BOOL g_bDevStudioEditor = FALSE;	// Open file in Dev Studio editor simultaneously
+ static BOOL g_bNewTabs = FALSE;
  static int g_ChangeDir = CD_NONE;	// CD after file open?
  
! static void VimSetEnableState(BOOL bEnableState);
! static BOOL VimOpenFile(BSTR& FileName, long LineNr);
! static DISPID VimGetDispatchId(COleAutomationControl& VimOle, char* Method);
! static void VimErrDiag(COleAutomationControl& VimOle);
! static void VimChangeDir(COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName);
! static void DebugMsg(char* Msg, char* Arg = NULL);
  
  
  /////////////////////////////////////////////////////////////////////////////
  // CCommands
  
! CCommands::CCommands()
  {
  	// m_pApplication == NULL; M$ Code generation bug!!!
  	m_pApplication = NULL;
***************
*** 41,57 ****
  	m_pDebuggerEventsObj = NULL;
  }
  
! CCommands::~CCommands ()
  {
! 	ASSERT (m_pApplication != NULL);
  	if (m_pApplication)
  	{
! 		m_pApplication->Release ();
  		m_pApplication = NULL;
  	}
  }
  
! void CCommands::SetApplicationObject (IApplication * pApplication)
  {
  	// This function assumes pApplication has already been AddRef'd
  	// for us, which CDSAddIn did in it's QueryInterface call
--- 42,58 ----
  	m_pDebuggerEventsObj = NULL;
  }
  
! CCommands::~CCommands()
  {
! 	ASSERT(m_pApplication != NULL);
  	if (m_pApplication)
  	{
! 		m_pApplication->Release();
  		m_pApplication = NULL;
  	}
  }
  
! void CCommands::SetApplicationObject(IApplication * pApplication)
  {
  	// This function assumes pApplication has already been AddRef'd
  	// for us, which CDSAddIn did in it's QueryInterface call
***************
*** 61,115 ****
  		return;
  
  	// Create Application event handlers
! 	XApplicationEventsObj::CreateInstance (&m_pApplicationEventsObj);
  	if (! m_pApplicationEventsObj)
  	{
! 		ReportInternalError ("XApplicationEventsObj::CreateInstance");
  		return;
  	}
! 	m_pApplicationEventsObj->AddRef ();
! 	m_pApplicationEventsObj->Connect (m_pApplication);
  	m_pApplicationEventsObj->m_pCommands = this;
  
  #ifdef NEVER
  	// Create Debugger event handler
  	CComPtr < IDispatch > pDebugger;
! 	if (SUCCEEDED (m_pApplication->get_Debugger (&pDebugger))
  	    && pDebugger != NULL)
  	{
! 		XDebuggerEventsObj::CreateInstance (&m_pDebuggerEventsObj);
! 		m_pDebuggerEventsObj->AddRef ();
! 		m_pDebuggerEventsObj->Connect (pDebugger);
  		m_pDebuggerEventsObj->m_pCommands = this;
  	}
  #endif
  
  	// Get settings from registry HKEY_CURRENT_USER\Software\Vim\VisVim
! 	HKEY hAppKey = GetAppKey ("Vim");
  	if (hAppKey)
  	{
! 		HKEY hSectionKey = GetSectionKey (hAppKey, "VisVim");
  		if (hSectionKey)
  		{
! 			g_bEnableVim = GetRegistryInt (hSectionKey, "EnableVim",
  						       g_bEnableVim);
! 			g_bDevStudioEditor = GetRegistryInt(hSectionKey,"DevStudioEditor",
! 							    g_bDevStudioEditor);
! 			g_ChangeDir = GetRegistryInt (hSectionKey, "ChangeDir",
  						      g_ChangeDir);
! 			RegCloseKey (hSectionKey);
  		}
! 		RegCloseKey (hAppKey);
  	}
  }
  
! void CCommands::UnadviseFromEvents ()
  {
! 	ASSERT (m_pApplicationEventsObj != NULL);
  	if (m_pApplicationEventsObj)
  	{
! 		m_pApplicationEventsObj->Disconnect (m_pApplication);
! 		m_pApplicationEventsObj->Release ();
  		m_pApplicationEventsObj = NULL;
  	}
  
--- 62,118 ----
  		return;
  
  	// Create Application event handlers
! 	XApplicationEventsObj::CreateInstance(&m_pApplicationEventsObj);
  	if (! m_pApplicationEventsObj)
  	{
! 		ReportInternalError("XApplicationEventsObj::CreateInstance");
  		return;
  	}
! 	m_pApplicationEventsObj->AddRef();
! 	m_pApplicationEventsObj->Connect(m_pApplication);
  	m_pApplicationEventsObj->m_pCommands = this;
  
  #ifdef NEVER
  	// Create Debugger event handler
  	CComPtr < IDispatch > pDebugger;
! 	if (SUCCEEDED(m_pApplication->get_Debugger(&pDebugger))
  	    && pDebugger != NULL)
  	{
! 		XDebuggerEventsObj::CreateInstance(&m_pDebuggerEventsObj);
! 		m_pDebuggerEventsObj->AddRef();
! 		m_pDebuggerEventsObj->Connect(pDebugger);
  		m_pDebuggerEventsObj->m_pCommands = this;
  	}
  #endif
  
  	// Get settings from registry HKEY_CURRENT_USER\Software\Vim\VisVim
! 	HKEY hAppKey = GetAppKey("Vim");
  	if (hAppKey)
  	{
! 		HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim");
  		if (hSectionKey)
  		{
! 			g_bEnableVim = GetRegistryInt(hSectionKey, "EnableVim",
  						       g_bEnableVim);
! 			g_bDevStudioEditor = GetRegistryInt(hSectionKey,
! 					"DevStudioEditor", g_bDevStudioEditor);
! 			g_bNewTabs = GetRegistryInt(hSectionKey, "NewTabs",
! 						    g_bNewTabs);
! 			g_ChangeDir = GetRegistryInt(hSectionKey, "ChangeDir",
  						      g_ChangeDir);
! 			RegCloseKey(hSectionKey);
  		}
! 		RegCloseKey(hAppKey);
  	}
  }
  
! void CCommands::UnadviseFromEvents()
  {
! 	ASSERT(m_pApplicationEventsObj != NULL);
  	if (m_pApplicationEventsObj)
  	{
! 		m_pApplicationEventsObj->Disconnect(m_pApplication);
! 		m_pApplicationEventsObj->Release();
  		m_pApplicationEventsObj = NULL;
  	}
  
***************
*** 121,130 ****
  		// unadvise from its events (thus the VERIFY_OK below--see
  		// stdafx.h).
  		CComPtr < IDispatch > pDebugger;
! 		VERIFY_OK (m_pApplication->get_Debugger (&pDebugger));
! 		ASSERT (pDebugger != NULL);
! 		m_pDebuggerEventsObj->Disconnect (pDebugger);
! 		m_pDebuggerEventsObj->Release ();
  		m_pDebuggerEventsObj = NULL;
  	}
  #endif
--- 124,133 ----
  		// unadvise from its events (thus the VERIFY_OK below--see
  		// stdafx.h).
  		CComPtr < IDispatch > pDebugger;
! 		VERIFY_OK(m_pApplication->get_Debugger(&pDebugger));
! 		ASSERT(pDebugger != NULL);
! 		m_pDebuggerEventsObj->Disconnect(pDebugger);
! 		m_pDebuggerEventsObj->Release();
  		m_pDebuggerEventsObj = NULL;
  	}
  #endif
***************
*** 136,156 ****
  
  // Application events
  
! HRESULT CCommands::XApplicationEvents::BeforeBuildStart ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::BuildFinish (long nNumErrors, long nNumWarnings)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::BeforeApplicationShutDown ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
--- 139,159 ----
  
  // Application events
  
! HRESULT CCommands::XApplicationEvents::BeforeBuildStart()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::BuildFinish(long nNumErrors, long nNumWarnings)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::BeforeApplicationShutDown()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
***************
*** 158,166 ****
  // is done.
  // Vim gets called from here.
  //
! HRESULT CCommands::XApplicationEvents::DocumentOpen (IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  
  	if (! g_bEnableVim)
  		// Vim not enabled or empty command line entered
--- 161,169 ----
  // is done.
  // Vim gets called from here.
  //
! HRESULT CCommands::XApplicationEvents::DocumentOpen(IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  
  	if (! g_bEnableVim)
  		// Vim not enabled or empty command line entered
***************
*** 169,175 ****
  	// First get the current file name and line number
  
  	// Get the document object
! 	CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc (theDocument);
  	if (! pDoc)
  		return S_OK;
  
--- 172,178 ----
  	// First get the current file name and line number
  
  	// Get the document object
! 	CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(theDocument);
  	if (! pDoc)
  		return S_OK;
  
***************
*** 177,202 ****
  	long LineNr = -1;
  
  	// Get the document name
! 	if (FAILED (pDoc->get_FullName (&FileName)))
  		return S_OK;
  
  	LPDISPATCH pDispSel;
  
  	// Get a selection object dispatch pointer
! 	if (SUCCEEDED (pDoc->get_Selection (&pDispSel)))
  	{
  		// Get the selection object
! 		CComQIPtr < ITextSelection, &IID_ITextSelection > pSel (pDispSel);
  
  		if (pSel)
  			// Get the selection line number
! 			pSel->get_CurrentLine (&LineNr);
  
! 		pDispSel->Release ();
  	}
  
  	// Open the file in Vim and position to the current line
! 	if (VimOpenFile (FileName, LineNr))
  	{
  		if (! g_bDevStudioEditor)
  		{
--- 180,205 ----
  	long LineNr = -1;
  
  	// Get the document name
! 	if (FAILED(pDoc->get_FullName(&FileName)))
  		return S_OK;
  
  	LPDISPATCH pDispSel;
  
  	// Get a selection object dispatch pointer
! 	if (SUCCEEDED(pDoc->get_Selection(&pDispSel)))
  	{
  		// Get the selection object
! 		CComQIPtr < ITextSelection, &IID_ITextSelection > pSel(pDispSel);
  
  		if (pSel)
  			// Get the selection line number
! 			pSel->get_CurrentLine(&LineNr);
  
! 		pDispSel->Release();
  	}
  
  	// Open the file in Vim and position to the current line
! 	if (VimOpenFile(FileName, LineNr))
  	{
  		if (! g_bDevStudioEditor)
  		{
***************
*** 204,233 ****
  			CComVariant vSaveChanges = dsSaveChangesPrompt;
  			DsSaveStatus Saved;
  
! 			pDoc->Close (vSaveChanges, &Saved);
  		}
  	}
  
  	// We're done here
! 	SysFreeString (FileName);
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::BeforeDocumentClose (IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::DocumentSave (IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::NewDocument (IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  
  	if (! g_bEnableVim)
  		// Vim not enabled or empty command line entered
--- 207,236 ----
  			CComVariant vSaveChanges = dsSaveChangesPrompt;
  			DsSaveStatus Saved;
  
! 			pDoc->Close(vSaveChanges, &Saved);
  		}
  	}
  
  	// We're done here
! 	SysFreeString(FileName);
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::BeforeDocumentClose(IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::DocumentSave(IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::NewDocument(IDispatch * theDocument)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  
  	if (! g_bEnableVim)
  		// Vim not enabled or empty command line entered
***************
*** 235,253 ****
  
  	// First get the current file name and line number
  
! 	CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc (theDocument);
  	if (! pDoc)
  		return S_OK;
  
  	BSTR FileName;
  	HRESULT hr;
  
! 	hr = pDoc->get_FullName (&FileName);
! 	if (FAILED (hr))
  		return S_OK;
  
  	// Open the file in Vim and position to the current line
! 	if (VimOpenFile (FileName, 0))
  	{
  		if (! g_bDevStudioEditor)
  		{
--- 238,256 ----
  
  	// First get the current file name and line number
  
! 	CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(theDocument);
  	if (! pDoc)
  		return S_OK;
  
  	BSTR FileName;
  	HRESULT hr;
  
! 	hr = pDoc->get_FullName(&FileName);
! 	if (FAILED(hr))
  		return S_OK;
  
  	// Open the file in Vim and position to the current line
! 	if (VimOpenFile(FileName, 0))
  	{
  		if (! g_bDevStudioEditor)
  		{
***************
*** 255,303 ****
  			CComVariant vSaveChanges = dsSaveChangesPrompt;
  			DsSaveStatus Saved;
  
! 			pDoc->Close (vSaveChanges, &Saved);
  		}
  	}
  
! 	SysFreeString (FileName);
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WindowActivate (IDispatch * theWindow)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WindowDeactivate (IDispatch * theWindow)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WorkspaceOpen ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WorkspaceClose ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::NewWorkspace ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
  // Debugger event
  
! HRESULT CCommands::XDebuggerEvents::BreakpointHit (IDispatch * pBreakpoint)
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  	return S_OK;
  }
  
--- 258,306 ----
  			CComVariant vSaveChanges = dsSaveChangesPrompt;
  			DsSaveStatus Saved;
  
! 			pDoc->Close(vSaveChanges, &Saved);
  		}
  	}
  
! 	SysFreeString(FileName);
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WindowActivate(IDispatch * theWindow)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WindowDeactivate(IDispatch * theWindow)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WorkspaceOpen()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::WorkspaceClose()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
! HRESULT CCommands::XApplicationEvents::NewWorkspace()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
  // Debugger event
  
! HRESULT CCommands::XDebuggerEvents::BreakpointHit(IDispatch * pBreakpoint)
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  	return S_OK;
  }
  
***************
*** 308,324 ****
  class CMainDialog : public CDialog
  {
      public:
! 	CMainDialog (CWnd * pParent = NULL);	// Standard constructor
  
  	//{{AFX_DATA(CMainDialog)
  	enum { IDD = IDD_ADDINMAIN };
  	int	m_ChangeDir;
  	BOOL	m_bDevStudioEditor;
  	//}}AFX_DATA
  
  	//{{AFX_VIRTUAL(CMainDialog)
      protected:
! 	virtual void DoDataExchange (CDataExchange * pDX);	// DDX/DDV support
  	//}}AFX_VIRTUAL
  
      protected:
--- 311,328 ----
  class CMainDialog : public CDialog
  {
      public:
! 	CMainDialog(CWnd * pParent = NULL);	// Standard constructor
  
  	//{{AFX_DATA(CMainDialog)
  	enum { IDD = IDD_ADDINMAIN };
  	int	m_ChangeDir;
  	BOOL	m_bDevStudioEditor;
+ 	BOOL	m_bNewTabs;
  	//}}AFX_DATA
  
  	//{{AFX_VIRTUAL(CMainDialog)
      protected:
! 	virtual void DoDataExchange(CDataExchange * pDX);	// DDX/DDV support
  	//}}AFX_VIRTUAL
  
      protected:
***************
*** 326,425 ****
  	afx_msg void OnEnable();
  	afx_msg void OnDisable();
  	//}}AFX_MSG
! 	DECLARE_MESSAGE_MAP ()
  };
  
! CMainDialog::CMainDialog (CWnd * pParent /* =NULL */ )
! 	: CDialog (CMainDialog::IDD, pParent)
  {
  	//{{AFX_DATA_INIT(CMainDialog)
  	m_ChangeDir = -1;
  	m_bDevStudioEditor = FALSE;
  	//}}AFX_DATA_INIT
  }
  
! void CMainDialog::DoDataExchange (CDataExchange * pDX)
  {
! 	CDialog::DoDataExchange (pDX);
  	//{{AFX_DATA_MAP(CMainDialog)
  	DDX_Radio(pDX, IDC_CD_SOURCE_PATH, m_ChangeDir);
! 	DDX_Check (pDX, IDC_DEVSTUDIO_EDITOR, m_bDevStudioEditor);
  	//}}AFX_DATA_MAP
  }
  
! BEGIN_MESSAGE_MAP (CMainDialog, CDialog)
  	//{{AFX_MSG_MAP(CMainDialog)
  	//}}AFX_MSG_MAP
! END_MESSAGE_MAP ()
  
  
  /////////////////////////////////////////////////////////////////////////////
  // CCommands methods
  
! STDMETHODIMP CCommands::VisVimDialog ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  
  	// Use m_pApplication to access the Developer Studio Application
  	// object,
  	// and VERIFY_OK to see error strings in DEBUG builds of your add-in
  	// (see stdafx.h)
  
! 	VERIFY_OK (m_pApplication->EnableModeless (VARIANT_FALSE));
  
  	CMainDialog Dlg;
  
  	Dlg.m_bDevStudioEditor = g_bDevStudioEditor;
  	Dlg.m_ChangeDir = g_ChangeDir;
! 	if (Dlg.DoModal () == IDOK)
  	{
  		g_bDevStudioEditor = Dlg.m_bDevStudioEditor;
  		g_ChangeDir = Dlg.m_ChangeDir;
  
  		// Save settings to registry HKEY_CURRENT_USER\Software\Vim\VisVim
! 		HKEY hAppKey = GetAppKey ("Vim");
  		if (hAppKey)
  		{
! 			HKEY hSectionKey = GetSectionKey (hAppKey, "VisVim");
  			if (hSectionKey)
  			{
! 				WriteRegistryInt (hSectionKey, "DevStudioEditor",
  						  g_bDevStudioEditor);
! 				WriteRegistryInt (hSectionKey, "ChangeDir", g_ChangeDir);
! 				RegCloseKey (hSectionKey);
  			}
! 			RegCloseKey (hAppKey);
  		}
  	}
  
! 	VERIFY_OK (m_pApplication->EnableModeless (VARIANT_TRUE));
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimEnable ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
! 	VimSetEnableState (true);
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimDisable ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
! 	VimSetEnableState (false);
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimToggle ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
! 	VimSetEnableState (! g_bEnableVim);
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimLoad ()
  {
! 	AFX_MANAGE_STATE (AfxGetStaticModuleState ());
  
  	// Use m_pApplication to access the Developer Studio Application object,
  	// and VERIFY_OK to see error strings in DEBUG builds of your add-in
--- 330,435 ----
  	afx_msg void OnEnable();
  	afx_msg void OnDisable();
  	//}}AFX_MSG
! 	DECLARE_MESSAGE_MAP()
  };
  
! CMainDialog::CMainDialog(CWnd * pParent /* =NULL */ )
! 	: CDialog(CMainDialog::IDD, pParent)
  {
  	//{{AFX_DATA_INIT(CMainDialog)
  	m_ChangeDir = -1;
  	m_bDevStudioEditor = FALSE;
+ 	m_bNewTabs = FALSE;
  	//}}AFX_DATA_INIT
  }
  
! void CMainDialog::DoDataExchange(CDataExchange * pDX)
  {
! 	CDialog::DoDataExchange(pDX);
  	//{{AFX_DATA_MAP(CMainDialog)
  	DDX_Radio(pDX, IDC_CD_SOURCE_PATH, m_ChangeDir);
! 	DDX_Check(pDX, IDC_DEVSTUDIO_EDITOR, m_bDevStudioEditor);
! 	DDX_Check(pDX, IDC_NEW_TABS, m_bNewTabs);
  	//}}AFX_DATA_MAP
  }
  
! BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
  	//{{AFX_MSG_MAP(CMainDialog)
  	//}}AFX_MSG_MAP
! END_MESSAGE_MAP()
  
  
  /////////////////////////////////////////////////////////////////////////////
  // CCommands methods
  
! STDMETHODIMP CCommands::VisVimDialog()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  
  	// Use m_pApplication to access the Developer Studio Application
  	// object,
  	// and VERIFY_OK to see error strings in DEBUG builds of your add-in
  	// (see stdafx.h)
  
! 	VERIFY_OK(m_pApplication->EnableModeless(VARIANT_FALSE));
  
  	CMainDialog Dlg;
  
  	Dlg.m_bDevStudioEditor = g_bDevStudioEditor;
+ 	Dlg.m_bNewTabs = g_bNewTabs;
  	Dlg.m_ChangeDir = g_ChangeDir;
! 	if (Dlg.DoModal() == IDOK)
  	{
  		g_bDevStudioEditor = Dlg.m_bDevStudioEditor;
+ 		g_bNewTabs = Dlg.m_bNewTabs;
  		g_ChangeDir = Dlg.m_ChangeDir;
  
  		// Save settings to registry HKEY_CURRENT_USER\Software\Vim\VisVim
! 		HKEY hAppKey = GetAppKey("Vim");
  		if (hAppKey)
  		{
! 			HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim");
  			if (hSectionKey)
  			{
! 				WriteRegistryInt(hSectionKey, "DevStudioEditor",
  						  g_bDevStudioEditor);
! 				WriteRegistryInt(hSectionKey, "NewTabs",
! 						  g_bNewTabs);
! 				WriteRegistryInt(hSectionKey, "ChangeDir", g_ChangeDir);
! 				RegCloseKey(hSectionKey);
  			}
! 			RegCloseKey(hAppKey);
  		}
  	}
  
! 	VERIFY_OK(m_pApplication->EnableModeless(VARIANT_TRUE));
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimEnable()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
! 	VimSetEnableState(true);
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimDisable()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
! 	VimSetEnableState(false);
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimToggle()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
! 	VimSetEnableState(! g_bEnableVim);
  	return S_OK;
  }
  
! STDMETHODIMP CCommands::VisVimLoad()
  {
! 	AFX_MANAGE_STATE(AfxGetStaticModuleState());
  
  	// Use m_pApplication to access the Developer Studio Application object,
  	// and VERIFY_OK to see error strings in DEBUG builds of your add-in
***************
*** 430,436 ****
  	CComPtr < IDispatch > pDispDoc, pDispSel;
  
  	// Get a document object dispatch pointer
! 	VERIFY_OK (m_pApplication->get_ActiveDocument (&pDispDoc));
  	if (! pDispDoc)
  		return S_OK;
  
--- 440,446 ----
  	CComPtr < IDispatch > pDispDoc, pDispSel;
  
  	// Get a document object dispatch pointer
! 	VERIFY_OK(m_pApplication->get_ActiveDocument(&pDispDoc));
  	if (! pDispDoc)
  		return S_OK;
  
***************
*** 438,467 ****
  	long LineNr = -1;
  
  	// Get the document object
! 	CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc (pDispDoc);
  
  	if (! pDoc)
  		return S_OK;
  
  	// Get the document name
! 	if (FAILED (pDoc->get_FullName (&FileName)))
  		return S_OK;
  
  	// Get a selection object dispatch pointer
! 	if (SUCCEEDED (pDoc->get_Selection (&pDispSel)))
  	{
  		// Get the selection object
! 		CComQIPtr < ITextSelection, &IID_ITextSelection > pSel (pDispSel);
  
  		if (pSel)
  			// Get the selection line number
! 			pSel->get_CurrentLine (&LineNr);
  	}
  
  	// Open the file in Vim
! 	VimOpenFile (FileName, LineNr);
  
! 	SysFreeString (FileName);
  	return S_OK;
  }
  
--- 448,477 ----
  	long LineNr = -1;
  
  	// Get the document object
! 	CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(pDispDoc);
  
  	if (! pDoc)
  		return S_OK;
  
  	// Get the document name
! 	if (FAILED(pDoc->get_FullName(&FileName)))
  		return S_OK;
  
  	// Get a selection object dispatch pointer
! 	if (SUCCEEDED(pDoc->get_Selection(&pDispSel)))
  	{
  		// Get the selection object
! 		CComQIPtr < ITextSelection, &IID_ITextSelection > pSel(pDispSel);
  
  		if (pSel)
  			// Get the selection line number
! 			pSel->get_CurrentLine(&LineNr);
  	}
  
  	// Open the file in Vim
! 	VimOpenFile(FileName, LineNr);
  
! 	SysFreeString(FileName);
  	return S_OK;
  }
  
***************
*** 472,487 ****
  
  // Set the enable state and save to registry
  //
! static void VimSetEnableState (BOOL bEnableState)
  {
  	g_bEnableVim = bEnableState;
! 	HKEY hAppKey = GetAppKey ("Vim");
  	if (hAppKey)
  	{
! 		HKEY hSectionKey = GetSectionKey (hAppKey, "VisVim");
  		if (hSectionKey)
! 			WriteRegistryInt (hSectionKey, "EnableVim", g_bEnableVim);
! 		RegCloseKey (hAppKey);
  	}
  }
  
--- 482,497 ----
  
  // Set the enable state and save to registry
  //
! static void VimSetEnableState(BOOL bEnableState)
  {
  	g_bEnableVim = bEnableState;
! 	HKEY hAppKey = GetAppKey("Vim");
  	if (hAppKey)
  	{
! 		HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim");
  		if (hSectionKey)
! 			WriteRegistryInt(hSectionKey, "EnableVim", g_bEnableVim);
! 		RegCloseKey(hAppKey);
  	}
  }
  
***************
*** 490,496 ****
  // letter.
  // 'LineNr' must contain a valid line number or 0, e. g. for a new file
  //
! static BOOL VimOpenFile (BSTR& FileName, long LineNr)
  {
  
  	// OLE automation object for com. with Vim
--- 500,506 ----
  // letter.
  // 'LineNr' must contain a valid line number or 0, e. g. for a new file
  //
! static BOOL VimOpenFile(BSTR& FileName, long LineNr)
  {
  
  	// OLE automation object for com. with Vim
***************
*** 507,513 ****
  	// Get a dispatch id for the SendKeys method of Vim;
  	// enables connection to Vim if necessary
  	DISPID DispatchId;
! 	DispatchId = VimGetDispatchId (VimOle, "SendKeys");
  	if (! DispatchId)
  		// OLE error, can't obtain dispatch id
  		goto OleError;
--- 517,523 ----
  	// Get a dispatch id for the SendKeys method of Vim;
  	// enables connection to Vim if necessary
  	DISPID DispatchId;
! 	DispatchId = VimGetDispatchId(VimOle, "SendKeys");
  	if (! DispatchId)
  		// OLE error, can't obtain dispatch id
  		goto OleError;
***************
*** 525,544 ****
  #ifdef SINGLE_WINDOW
  	// Update the current file in Vim if it has been modified.
  	// Disabled, because it could write the file when you don't want to.
! 	sprintf (VimCmd + 2, ":up\n");
  #endif
! 	if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
  		goto OleError;
  
  	// Change Vim working directory to where the file is if desired
  	if (g_ChangeDir != CD_NONE)
! 		VimChangeDir (VimOle, DispatchId, FileName);
  
  	// Make Vim open the file.
  	// In the filename convert all \ to /, put a \ before a space.
! 	sprintf(VimCmd, ":drop ");
  	sprintf(FileNameTmp, "%S", (char *)FileName);
- 	s = VimCmd + 6;
  	for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
  									  ++p)
  		if (*p == '\\')
--- 535,562 ----
  #ifdef SINGLE_WINDOW
  	// Update the current file in Vim if it has been modified.
  	// Disabled, because it could write the file when you don't want to.
! 	sprintf(VimCmd + 2, ":up\n");
  #endif
! 	if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)))
  		goto OleError;
  
  	// Change Vim working directory to where the file is if desired
  	if (g_ChangeDir != CD_NONE)
! 		VimChangeDir(VimOle, DispatchId, FileName);
  
  	// Make Vim open the file.
  	// In the filename convert all \ to /, put a \ before a space.
! 	if (g_bNewTabs)
! 	{
! 		sprintf(VimCmd, ":tab drop ");
! 		s = VimCmd + 11;
! 	}
! 	else
! 	{
! 		sprintf(VimCmd, ":drop ");
! 		s = VimCmd + 6;
! 	}
  	sprintf(FileNameTmp, "%S", (char *)FileName);
  	for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
  									  ++p)
  		if (*p == '\\')
***************
*** 552,571 ****
  	*s++ = '\n';
  	*s = '\0';
  
! 	if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
  		goto OleError;
  
  	if (LineNr > 0)
  	{
  		// Goto line
! 		sprintf (VimCmd, ":%d\n", LineNr);
! 		if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
  			goto OleError;
  	}
  
  	// Make Vim come to the foreground
! 	if (! VimOle.Method ("SetForeground"))
! 		VimOle.ErrDiag ();
  
  	// We're done
  	return true;
--- 570,589 ----
  	*s++ = '\n';
  	*s = '\0';
  
! 	if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)))
  		goto OleError;
  
  	if (LineNr > 0)
  	{
  		// Goto line
! 		sprintf(VimCmd, ":%d\n", LineNr);
! 		if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)))
  			goto OleError;
  	}
  
  	// Make Vim come to the foreground
! 	if (! VimOle.Method("SetForeground"))
! 		VimOle.ErrDiag();
  
  	// We're done
  	return true;
***************
*** 573,579 ****
      OleError:
  	// There was an OLE error
  	// Check if it's the "unknown class string" error
! 	VimErrDiag (VimOle);
  	return false;
  }
  
--- 591,597 ----
      OleError:
  	// There was an OLE error
  	// Check if it's the "unknown class string" error
! 	VimErrDiag(VimOle);
  	return false;
  }
  
***************
*** 581,598 ****
  // Create the Vim OLE object if necessary
  // Returns a valid dispatch id or null on error
  //
! static DISPID VimGetDispatchId (COleAutomationControl& VimOle, char* Method)
  {
  	// Initialize Vim OLE connection if not already done
! 	if (! VimOle.IsCreated ())
  	{
! 		if (! VimOle.CreateObject ("Vim.Application"))
  			return NULL;
  	}
  
  	// Get the dispatch id for the SendKeys method.
  	// By doing this, we are checking if Vim is still there...
! 	DISPID DispatchId = VimOle.GetDispatchId ("SendKeys");
  	if (! DispatchId)
  	{
  		// We can't get a dispatch id.
--- 599,616 ----
  // Create the Vim OLE object if necessary
  // Returns a valid dispatch id or null on error
  //
! static DISPID VimGetDispatchId(COleAutomationControl& VimOle, char* Method)
  {
  	// Initialize Vim OLE connection if not already done
! 	if (! VimOle.IsCreated())
  	{
! 		if (! VimOle.CreateObject("Vim.Application"))
  			return NULL;
  	}
  
  	// Get the dispatch id for the SendKeys method.
  	// By doing this, we are checking if Vim is still there...
! 	DISPID DispatchId = VimOle.GetDispatchId("SendKeys");
  	if (! DispatchId)
  	{
  		// We can't get a dispatch id.
***************
*** 604,615 ****
  		// should not be kept long enough to allow the user to terminate Vim
  		// to avoid memory corruption (why the heck is there no system garbage
  		// collection for those damned OLE memory chunks???).
! 		VimOle.DeleteObject ();
! 		if (! VimOle.CreateObject ("Vim.Application"))
  			// If this create fails, it's time for an error msg
  			return NULL;
  
! 		if (! (DispatchId = VimOle.GetDispatchId ("SendKeys")))
  			// There is something wrong...
  			return NULL;
  	}
--- 622,633 ----
  		// should not be kept long enough to allow the user to terminate Vim
  		// to avoid memory corruption (why the heck is there no system garbage
  		// collection for those damned OLE memory chunks???).
! 		VimOle.DeleteObject();
! 		if (! VimOle.CreateObject("Vim.Application"))
  			// If this create fails, it's time for an error msg
  			return NULL;
  
! 		if (! (DispatchId = VimOle.GetDispatchId("SendKeys")))
  			// There is something wrong...
  			return NULL;
  	}
***************
*** 620,639 ****
  // Output an error message for an OLE error
  // Check on the classstring error, which probably means Vim wasn't registered.
  //
! static void VimErrDiag (COleAutomationControl& VimOle)
  {
! 	SCODE sc = GetScode (VimOle.GetResult ());
  	if (sc == CO_E_CLASSSTRING)
  	{
  		char Buf[256];
! 		sprintf (Buf, "There is no registered OLE automation server named "
  			 "\"Vim.Application\".\n"
  			 "Use the OLE-enabled version of Vim with VisVim and "
  			 "make sure to register Vim by running \"vim -register\".");
! 		MessageBox (NULL, Buf, "OLE Error", MB_OK);
  	}
  	else
! 		VimOle.ErrDiag ();
  }
  
  // Change directory to the directory the file 'FileName' is in or it's parent
--- 638,657 ----
  // Output an error message for an OLE error
  // Check on the classstring error, which probably means Vim wasn't registered.
  //
! static void VimErrDiag(COleAutomationControl& VimOle)
  {
! 	SCODE sc = GetScode(VimOle.GetResult());
  	if (sc == CO_E_CLASSSTRING)
  	{
  		char Buf[256];
! 		sprintf(Buf, "There is no registered OLE automation server named "
  			 "\"Vim.Application\".\n"
  			 "Use the OLE-enabled version of Vim with VisVim and "
  			 "make sure to register Vim by running \"vim -register\".");
! 		MessageBox(NULL, Buf, "OLE Error", MB_OK);
  	}
  	else
! 		VimOle.ErrDiag();
  }
  
  // Change directory to the directory the file 'FileName' is in or it's parent
***************
*** 644,650 ****
  //	CD_SOURCE_PATH
  //	CD_SOURCE_PARENT
  //
! static void VimChangeDir (COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName)
  {
  	// Do a :cd first
  
--- 662,668 ----
  //	CD_SOURCE_PATH
  //	CD_SOURCE_PARENT
  //
! static void VimChangeDir(COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName)
  {
  	// Do a :cd first
  
***************
*** 655,661 ****
  	char DirUnix[_MAX_DIR * 2];
  	char *s, *t;
  
! 	_splitpath (StrFileName, Drive, Dir, NULL, NULL);
  
  	// Convert to Unix path name format, escape spaces.
  	t = DirUnix;
--- 673,679 ----
  	char DirUnix[_MAX_DIR * 2];
  	char *s, *t;
  
! 	_splitpath(StrFileName, Drive, Dir, NULL, NULL);
  
  	// Convert to Unix path name format, escape spaces.
  	t = DirUnix;
***************
*** 676,694 ****
  	OLECHAR Buf[MAX_OLE_STR];
  	char VimCmd[MAX_OLE_STR];
  
! 	sprintf (VimCmd, ":cd %s%s%s\n", Drive, DirUnix,
  		 g_ChangeDir == CD_SOURCE_PARENT && DirUnix[1] ? ".." : "");
! 	VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf));
  }
  
  #ifdef _DEBUG
  // Print out a debug message
  //
! static void DebugMsg (char* Msg, char* Arg)
  {
  	char Buf[400];
! 	sprintf (Buf, Msg, Arg);
! 	AfxMessageBox (Buf);
  }
  #endif
- 
--- 694,711 ----
  	OLECHAR Buf[MAX_OLE_STR];
  	char VimCmd[MAX_OLE_STR];
  
! 	sprintf(VimCmd, ":cd %s%s%s\n", Drive, DirUnix,
  		 g_ChangeDir == CD_SOURCE_PARENT && DirUnix[1] ? ".." : "");
! 	VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf));
  }
  
  #ifdef _DEBUG
  // Print out a debug message
  //
! static void DebugMsg(char* Msg, char* Arg)
  {
  	char Buf[400];
! 	sprintf(Buf, Msg, Arg);
! 	AfxMessageBox(Buf);
  }
  #endif
*** ../vim-7.2.149/src/VisVim/Resource.h	Sun Jun 13 19:17:32 2004
--- src/VisVim/Resource.h	Mon Mar  2 00:39:21 2009
***************
*** 16,21 ****
--- 16,22 ----
  #define IDC_CD_SOURCE_PATH		1001
  #define IDC_CD_SOURCE_PARENT		1002
  #define IDC_CD_NONE			1003
+ #define IDC_NEW_TABS			1004
  
  // Next default values for new objects
  //
*** ../vim-7.2.149/src/VisVim/VisVim.rc	Sun Jun 13 19:38:03 2004
--- src/VisVim/VisVim.rc	Mon Mar  2 00:40:19 2009
***************
*** 122,127 ****
--- 122,130 ----
      CONTROL         "&Open file in DevStudio editor simultaneously",
                      IDC_DEVSTUDIO_EDITOR,"Button",BS_AUTOCHECKBOX | WS_GROUP | 
                      WS_TABSTOP,7,7,153,10
+     CONTROL         "Open files in new tabs",
+                     IDC_NEW_TABS,"Button",BS_AUTOCHECKBOX | WS_GROUP | 
+                     WS_TABSTOP,7,21,153,10
      GROUPBOX        "Current directory",IDC_STATIC,7,35,164,58,WS_GROUP
      CONTROL         "Set to &source file path",IDC_CD_SOURCE_PATH,"Button",
                      BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,17,49,85,10
*** ../vim-7.2.149/src/version.c	Wed Apr 22 12:53:31 2009
--- src/version.c	Wed Apr 22 13:04:32 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     150,
  /**/

-- 
A poem:                read aloud:

<> !*''#               Waka waka bang splat tick tick hash,
^"`$$-                 Caret quote back-tick dollar dollar dash,
!*=@$_                 Bang splat equal at dollar under-score,
%*<> ~#4               Percent splat waka waka tilde number four,
&[]../                 Ampersand bracket bracket dot dot slash,
|{,,SYSTEM HALTED      Vertical-bar curly-bracket comma comma CRASH.

Fred Bremmer and Steve Kroese (Calvin College & Seminary of Grand Rapids, MI.)

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


--- NEW FILE 7.2.151 ---
To: vim-dev at vim.org
Subject: Patch 7.2.151
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.151
Problem:    ":hist a" doesn't work like ":hist all" as the docs suggest.
Solution:   Make ":hist a" and ":hist al" work. (Dominique Pelle)
Files:	    src/ex_getln.c


*** ../vim-7.2.150/src/ex_getln.c	Wed Mar 18 12:50:58 2009
--- src/ex_getln.c	Sun Apr 12 13:36:06 2009
***************
*** 5686,5692 ****
  	histype1 = get_histtype(arg);
  	if (histype1 == -1)
  	{
! 	    if (STRICMP(arg, "all") == 0)
  	    {
  		histype1 = 0;
  		histype2 = HIST_COUNT-1;
--- 5686,5692 ----
  	histype1 = get_histtype(arg);
  	if (histype1 == -1)
  	{
! 	    if (STRNICMP(arg, "all", STRLEN(arg)) == 0)
  	    {
  		histype1 = 0;
  		histype2 = HIST_COUNT-1;
*** ../vim-7.2.150/src/version.c	Wed Apr 22 13:06:11 2009
--- src/version.c	Wed Apr 22 13:49:41 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     151,
  /**/

-- 
I'm sure that I asked CBuilder to do a "full" install.  Looks like I got
a "fool" install, instead.		Charles E Campbell, Jr, PhD


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


--- NEW FILE 7.2.152 ---
To: vim-dev at vim.org
Subject: Patch 7.2.152
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.152
Problem:    When using "silent echo x" inside ":redir" a next echo may start
	    halfway the line. (Tony Mechelynck, Dennis Benzinger)
Solution:   Reset msg_col after redirecting silently.
Files:	    src/ex_docmd.c, src/message.c, src/proto/message.pro


*** ../vim-7.2.151/src/ex_docmd.c	Wed Mar 18 12:50:58 2009
--- src/ex_docmd.c	Wed Apr 22 11:57:49 2009
***************
*** 2699,2704 ****
--- 2699,2709 ----
  	/* Restore msg_scroll, it's set by file I/O commands, even when no
  	 * message is actually displayed. */
  	msg_scroll = save_msg_scroll;
+ 
+ 	/* "silent reg" or "silent echo x" inside "redir" leaves msg_col
+ 	 * somewhere in the line.  Put it back in the first column. */
+ 	if (redirecting())
+ 	    msg_col = 0;
      }
  
  #ifdef HAVE_SANDBOX
*** ../vim-7.2.151/src/message.c	Tue Feb 24 04:36:50 2009
--- src/message.c	Sun Apr 12 14:08:25 2009
***************
*** 3023,3033 ****
      if (*p_vfile != NUL)
  	verbose_write(s, maxlen);
  
!     if (redir_fd != NULL
! #ifdef FEAT_EVAL
! 			  || redir_reg || redir_vname
! #endif
! 				       )
      {
  	/* If the string doesn't start with CR or NL, go to msg_col */
  	if (*s != '\n' && *s != '\r')
--- 3023,3029 ----
      if (*p_vfile != NUL)
  	verbose_write(s, maxlen);
  
!     if (redirecting())
      {
  	/* If the string doesn't start with CR or NL, go to msg_col */
  	if (*s != '\n' && *s != '\r')
***************
*** 3074,3079 ****
--- 3070,3085 ----
      }
  }
  
+     int
+ redirecting()
+ {
+     return redir_fd != NULL
+ #ifdef FEAT_EVAL
+ 			  || redir_reg || redir_vname
+ #endif
+ 				       ;
+ }
+ 
  /*
   * Before giving verbose message.
   * Must always be called paired with verbose_leave()!
*** ../vim-7.2.151/src/proto/message.pro	Sat May  5 19:35:34 2007
--- src/proto/message.pro	Sun Apr 12 14:08:50 2009
***************
*** 54,59 ****
--- 54,60 ----
  void msg_clr_cmdline __ARGS((void));
  int msg_end __ARGS((void));
  void msg_check __ARGS((void));
+ int redirecting __ARGS((void));
  void verbose_enter __ARGS((void));
  void verbose_leave __ARGS((void));
  void verbose_enter_scroll __ARGS((void));
*** ../vim-7.2.151/src/version.c	Wed Apr 22 13:50:14 2009
--- src/version.c	Wed Apr 22 14:40:22 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     152,
  /**/

-- 
Q: How does a UNIX Guru pick up a girl?
A: look; grep; which; eval; nice; uname; talk; date;

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


--- NEW FILE 7.2.153 ---
To: vim-dev at vim.org
Subject: Patch 7.2.153
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.153
Problem:    Memory leak for ":recover empty_dir/".
Solution:   Free files[] when it becomes empty. (Dominique Pelle)
Files:	    src/memline.c


*** ../vim-7.2.152/src/memline.c	Sun Jul 13 19:40:43 2008
--- src/memline.c	Wed Apr 22 11:48:35 2009
***************
*** 1554,1563 ****
  	    for (i = 0; i < num_files; ++i)
  		if (fullpathcmp(p, files[i], TRUE) & FPC_SAME)
  		{
  		    vim_free(files[i]);
! 		    --num_files;
! 		    for ( ; i < num_files; ++i)
! 			files[i] = files[i + 1];
  		}
  	}
  	if (nr > 0)
--- 1554,1568 ----
  	    for (i = 0; i < num_files; ++i)
  		if (fullpathcmp(p, files[i], TRUE) & FPC_SAME)
  		{
+ 		    /* Remove the name from files[i].  Move further entries
+ 		     * down.  When the array becomes empty free it here, since
+ 		     * FreeWild() won't be called below. */
  		    vim_free(files[i]);
! 		    if (--num_files == 0)
! 			vim_free(files);
! 		    else
! 			for ( ; i < num_files; ++i)
! 			    files[i] = files[i + 1];
  		}
  	}
  	if (nr > 0)
***************
*** 3522,3528 ****
  	    if (errno == EINVAL || errno == ENOENT)
  	    {
  		/* Found non-symlink or not existing file, stop here.
! 		 * When at the first level use the unmodifed name, skip the
  		 * call to vim_FullName(). */
  		if (depth == 1)
  		    return FAIL;
--- 3527,3533 ----
  	    if (errno == EINVAL || errno == ENOENT)
  	    {
  		/* Found non-symlink or not existing file, stop here.
! 		 * When at the first level use the unmodified name, skip the
  		 * call to vim_FullName(). */
  		if (depth == 1)
  		    return FAIL;
***************
*** 4560,4566 ****
  			buf->b_ml.ml_chunksize + curix,
  			(buf->b_ml.ml_usedchunks - curix) *
  			sizeof(chunksize_T));
! 	    /* Compute length of first half of lines in the splitted chunk */
  	    size = 0;
  	    linecnt = 0;
  	    while (curline < buf->b_ml.ml_line_count
--- 4568,4574 ----
  			buf->b_ml.ml_chunksize + curix,
  			(buf->b_ml.ml_usedchunks - curix) *
  			sizeof(chunksize_T));
! 	    /* Compute length of first half of lines in the split chunk */
  	    size = 0;
  	    linecnt = 0;
  	    while (curline < buf->b_ml.ml_line_count
*** ../vim-7.2.152/src/version.c	Wed Apr 22 14:42:26 2009
--- src/version.c	Wed Apr 22 15:34:18 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     153,
  /**/

-- 
Windows
M!uqoms

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


--- NEW FILE 7.2.154 ---
To: vim-dev at vim.org
Subject: Patch 7.2.154
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.154 (after 7.2.132)
Problem:    ":cd" is still possible in a SwapExists autocmd.
Solution:   Set allbuf_lock in do_swapexists().
Files:	    src/memline.c


*** ../vim-7.2.153/src/memline.c	Wed Apr 22 15:37:12 2009
--- src/memline.c	Wed Apr 22 15:54:48 2009
***************
*** 3771,3778 ****
      set_vim_var_string(VV_SWAPCHOICE, NULL, -1);
  
      /* Trigger SwapExists autocommands with <afile> set to the file being
!      * edited. */
      apply_autocmds(EVENT_SWAPEXISTS, buf->b_fname, NULL, FALSE, NULL);
  
      set_vim_var_string(VV_SWAPNAME, NULL, -1);
  
--- 3771,3780 ----
      set_vim_var_string(VV_SWAPCHOICE, NULL, -1);
  
      /* Trigger SwapExists autocommands with <afile> set to the file being
!      * edited.  Disallow changing directory here. */
!     ++allbuf_lock;
      apply_autocmds(EVENT_SWAPEXISTS, buf->b_fname, NULL, FALSE, NULL);
+     --allbuf_lock;
  
      set_vim_var_string(VV_SWAPNAME, NULL, -1);
  
***************
*** 3798,3803 ****
--- 3800,3806 ----
   *
   * Note: If BASENAMELEN is not correct, you will get error messages for
   *	 not being able to open the swapfile
+  * Note: May trigger SwapExists autocmd, pointers may change!
   */
      static char_u *
  findswapname(buf, dirp, old_fname)
*** ../vim-7.2.153/src/version.c	Wed Apr 22 15:37:12 2009
--- src/version.c	Wed Apr 22 15:55:48 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     154,
  /**/

-- 
ARTHUR:  Be quiet!
DENNIS:  Well you can't expect to wield supreme executive power just 'cause
         some watery tart threw a sword at you!
ARTHUR:  Shut up!
DENNIS:  I mean, if I went around sayin' I was an empereror just because some
         moistened bint had lobbed a scimitar at me they'd put me away!
                                  The Quest for the Holy Grail (Monty Python)

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


--- NEW FILE 7.2.155 ---
To: vim-dev at vim.org
Subject: Patch 7.2.155
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.155
Problem:    Memory leak in ":function /pat".
Solution:   Free the memory. (Dominique Pelle)
Files:	    src/eval.c


*** ../vim-7.2.154/src/eval.c	Wed Apr 22 12:53:31 2009
--- src/eval.c	Wed Apr 22 16:04:34 2009
***************
*** 19720,19725 ****
--- 19720,19726 ----
  			    list_func_head(fp, FALSE);
  		    }
  		}
+ 		vim_free(regmatch.regprog);
  	    }
  	}
  	if (*p == '/')
*** ../vim-7.2.154/src/version.c	Wed Apr 22 15:56:27 2009
--- src/version.c	Wed Apr 22 16:07:27 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     155,
  /**/

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

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


--- NEW FILE 7.2.156 ---
To: vim-dev at vim.org
Subject: Patch 7.2.156
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.156 (after 7.2.143)
Problem:    No completion for :scscope and :lcscope commands.
Solution:   Implement the completion. (Dominique Pelle)
Files:	    src/if_cscope.c, src/ex_docmd.c, src/proto/if_cscope.pro


*** ../vim-7.2.155/src/if_cscope.c	Wed Mar 18 14:30:46 2009
--- src/if_cscope.c	Wed Apr 22 11:57:49 2009
***************
*** 98,103 ****
--- 98,104 ----
  static enum
  {
      EXP_CSCOPE_SUBCMD,	/* expand ":cscope" sub-commands */
+     EXP_SCSCOPE_SUBCMD,	/* expand ":scscope" sub-commands */
      EXP_CSCOPE_FIND,	/* expand ":cscope find" arguments */
      EXP_CSCOPE_KILL	/* expand ":cscope kill" arguments */
  } expand_what;
***************
*** 112,123 ****
--- 113,135 ----
      expand_T	*xp;
      int		idx;
  {
+     int		current_idx;
+     int		i;
+ 
      switch (expand_what)
      {
      case EXP_CSCOPE_SUBCMD:
  	/* Complete with sub-commands of ":cscope":
  	 * add, find, help, kill, reset, show */
  	return (char_u *)cs_cmds[idx].name;
+     case EXP_SCSCOPE_SUBCMD:
+ 	/* Complete with sub-commands of ":scscope": same sub-commands as
+ 	 * ":cscope" but skip commands which don't support split windows */
+ 	for (i = 0, current_idx = 0; cs_cmds[i].name != NULL; i++)
+ 	    if (cs_cmds[i].cansplit)
+ 		if (current_idx++ == idx)
+ 		    break;
+ 	return (char_u *)cs_cmds[i].name;
      case EXP_CSCOPE_FIND:
  	{
  	    const char *query_type[] =
***************
*** 133,147 ****
  	}
      case EXP_CSCOPE_KILL:
  	{
- 	    int			i;
- 	    int			current_idx = 0;
  	    static char_u	connection[2];
  
  	    /* ":cscope kill" accepts connection numbers or partial names of
  	     * the pathname of the cscope database as argument.  Only complete
  	     * with connection numbers. -1 can also be used to kill all
  	     * connections. */
! 	    for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	    {
  		if (csinfo[i].fname == NULL)
  		    continue;
--- 145,157 ----
  	}
      case EXP_CSCOPE_KILL:
  	{
  	    static char_u	connection[2];
  
  	    /* ":cscope kill" accepts connection numbers or partial names of
  	     * the pathname of the cscope database as argument.  Only complete
  	     * with connection numbers. -1 can also be used to kill all
  	     * connections. */
! 	    for (i = 0, current_idx = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	    {
  		if (csinfo[i].fname == NULL)
  		    continue;
***************
*** 165,180 ****
   * Handle command line completion for :cscope command.
   */
      void
! set_context_in_cscope_cmd(xp, arg)
      expand_T	*xp;
      char_u	*arg;
  {
      char_u	*p;
  
      /* Default: expand subcommands */
      xp->xp_context = EXPAND_CSCOPE;
-     expand_what = EXP_CSCOPE_SUBCMD;
      xp->xp_pattern = arg;
  
      /* (part of) subcommand already typed */
      if (*arg != NUL)
--- 175,192 ----
   * Handle command line completion for :cscope command.
   */
      void
! set_context_in_cscope_cmd(xp, arg, cmdidx)
      expand_T	*xp;
      char_u	*arg;
+     cmdidx_T	cmdidx;
  {
      char_u	*p;
  
      /* Default: expand subcommands */
      xp->xp_context = EXPAND_CSCOPE;
      xp->xp_pattern = arg;
+     expand_what = (cmdidx == CMD_scscope)
+ 			? EXP_SCSCOPE_SUBCMD : EXP_CSCOPE_SUBCMD;
  
      /* (part of) subcommand already typed */
      if (*arg != NUL)
*** ../vim-7.2.155/src/ex_docmd.c	Wed Apr 22 14:42:26 2009
--- src/ex_docmd.c	Wed Apr 22 11:57:49 2009
***************
*** 3690,3696 ****
  	    break;
  #ifdef FEAT_CSCOPE
  	case CMD_cscope:
! 	    set_context_in_cscope_cmd(xp, arg);
  	    break;
  #endif
  #ifdef FEAT_LISTCMDS
--- 3690,3698 ----
  	    break;
  #ifdef FEAT_CSCOPE
  	case CMD_cscope:
! 	case CMD_lcscope:
! 	case CMD_scscope:
! 	    set_context_in_cscope_cmd(xp, arg, ea.cmdidx);
  	    break;
  #endif
  #ifdef FEAT_LISTCMDS
*** ../vim-7.2.155/src/proto/if_cscope.pro	Wed Mar 18 12:50:58 2009
--- src/proto/if_cscope.pro	Wed Apr 22 11:57:49 2009
***************
*** 1,6 ****
  /* if_cscope.c */
  char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
! void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg));
  void do_cscope __ARGS((exarg_T *eap));
  void do_scscope __ARGS((exarg_T *eap));
  void do_cstag __ARGS((exarg_T *eap));
--- 1,6 ----
  /* if_cscope.c */
  char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
! void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg, cmdidx_T cmdidx));
  void do_cscope __ARGS((exarg_T *eap));
  void do_scscope __ARGS((exarg_T *eap));
  void do_cstag __ARGS((exarg_T *eap));
*** ../vim-7.2.155/src/version.c	Wed Apr 22 16:07:57 2009
--- src/version.c	Wed Apr 22 16:21:43 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     156,
  /**/

-- 
ARTHUR:  Shut up!  Will you shut up!
DENNIS:  Ah, now we see the violence inherent in the system.
ARTHUR:  Shut up!
DENNIS:  Oh!  Come and see the violence inherent in the system!
         HELP! HELP!  I'm being repressed!
                                  The Quest for the Holy Grail (Monty Python)

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


--- NEW FILE 7.2.157 ---
To: vim-dev at vim.org
Subject: Patch 7.2.157
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.157
Problem:    Illegal memory access when searching in path.
Solution:   Avoid looking at a byte after end of a string. (Dominique Pelle)
Files:	    src/search.c


*** ../vim-7.2.156/src/search.c	Fri Jul 18 12:05:58 2008
--- src/search.c	Wed Apr 22 12:26:19 2009
***************
*** 2327,2334 ****
  		    for (col = pos.col; check_prevcol(linep, col, '\\', &col);)
  			bslcnt++;
  		}
! 		/* Only accept a match when 'M' is in 'cpo' or when ecaping is
! 		 * what we expect. */
  		if (cpo_bsl || (bslcnt & 1) == match_escaped)
  		{
  		    if (c == initc)
--- 2336,2343 ----
  		    for (col = pos.col; check_prevcol(linep, col, '\\', &col);)
  			bslcnt++;
  		}
! 		/* Only accept a match when 'M' is in 'cpo' or when escaping
! 		 * is what we expect. */
  		if (cpo_bsl || (bslcnt & 1) == match_escaped)
  		{
  		    if (c == initc)
***************
*** 4663,4669 ****
  			    msg_putchar('\n');	    /* cursor below last one */
  			    if (!got_int)	    /* don't display if 'q'
  						       typed at "--more--"
! 						       mesage */
  			    {
  				msg_home_replace_hl(new_fname);
  				MSG_PUTS(_(" (includes previously listed match)"));
--- 4672,4678 ----
  			    msg_putchar('\n');	    /* cursor below last one */
  			    if (!got_int)	    /* don't display if 'q'
  						       typed at "--more--"
! 						       message */
  			    {
  				msg_home_replace_hl(new_fname);
  				MSG_PUTS(_(" (includes previously listed match)"));
***************
*** 4975,4981 ****
  					    || IObuff[i-2] == '!'))))
  				IObuff[i++] = ' ';
  			}
! 			/* copy as much as posible of the new word */
  			if (p - aux >= IOSIZE - i)
  			    p = aux + IOSIZE - i - 1;
  			STRNCPY(IObuff + i, aux, p - aux);
--- 4984,4990 ----
  					    || IObuff[i-2] == '!'))))
  				IObuff[i++] = ' ';
  			}
! 			/* copy as much as possible of the new word */
  			if (p - aux >= IOSIZE - i)
  			    p = aux + IOSIZE - i - 1;
  			STRNCPY(IObuff + i, aux, p - aux);
***************
*** 5010,5016 ****
  		    if (did_show)
  			msg_putchar('\n');	/* cursor below last one */
  		    if (!got_int)		/* don't display if 'q' typed
! 						    at "--more--" mesage */
  			msg_home_replace_hl(curr_fname);
  		    prev_fname = curr_fname;
  		}
--- 5019,5025 ----
  		    if (did_show)
  			msg_putchar('\n');	/* cursor below last one */
  		    if (!got_int)		/* don't display if 'q' typed
! 						    at "--more--" message */
  			msg_home_replace_hl(curr_fname);
  		    prev_fname = curr_fname;
  		}
***************
*** 5092,5098 ****
  		}
  		if (action != ACTION_SHOW)
  		{
! 		    curwin->w_cursor.col = (colnr_T) (startp - line);
  		    curwin->w_set_curswant = TRUE;
  		}
  
--- 5101,5107 ----
  		}
  		if (action != ACTION_SHOW)
  		{
! 		    curwin->w_cursor.col = (colnr_T)(startp - line);
  		    curwin->w_set_curswant = TRUE;
  		}
  
***************
*** 5119,5125 ****
  		    && action == ACTION_EXPAND
  		    && !(compl_cont_status & CONT_SOL)
  #endif
! 		    && *(p = startp + 1))
  		goto search_line;
  	}
  	line_breakcheck();
--- 5128,5135 ----
  		    && action == ACTION_EXPAND
  		    && !(compl_cont_status & CONT_SOL)
  #endif
! 		    && *startp != NUL
! 		    && *(p = startp + 1) != NUL)
  		goto search_line;
  	}
  	line_breakcheck();
*** ../vim-7.2.156/src/version.c	Wed Apr 22 16:22:44 2009
--- src/version.c	Wed Apr 22 16:39:59 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     157,
  /**/


-- 
ARTHUR:  Bloody peasant!
DENNIS:  Oh, what a give away.  Did you hear that, did you hear that, eh?
         That's what I'm on about -- did you see him repressing me, you saw it
         didn't you?
                                  The Quest for the Holy Grail (Monty Python)

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


--- NEW FILE 7.2.158 ---
To: vim-dev at vim.org
Subject: Patch 7.2.158
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.158
Problem:    Warnings from VisualC compiler.
Solution:   Add type casts. (George Reilly)
Files:	    src/ops.c


*** ../vim-7.2.157/src/ops.c	Wed Mar 11 16:26:01 2009
--- src/ops.c	Wed Apr 22 13:01:46 2009
***************
*** 495,504 ****
  	block_space_width = non_white_col - oap->start_vcol;
  	/* We will shift by "total" or "block_space_width", whichever is less.
  	 */
! 	shift_amount = (block_space_width < total? block_space_width: total);
  
  	/* The column to which we will shift the text.  */
! 	destination_col = non_white_col - shift_amount;
  
  	/* Now let's find out how much of the beginning of the line we can
  	 * reuse without modification.  */
--- 495,505 ----
  	block_space_width = non_white_col - oap->start_vcol;
  	/* We will shift by "total" or "block_space_width", whichever is less.
  	 */
! 	shift_amount = (block_space_width < (size_t)total
! 					 ? block_space_width : (size_t)total);
  
  	/* The column to which we will shift the text.  */
! 	destination_col = (colnr_T)(non_white_col - shift_amount);
  
  	/* Now let's find out how much of the beginning of the line we can
  	 * reuse without modification.  */
*** ../vim-7.2.157/src/version.c	Wed Apr 22 16:42:24 2009
--- src/version.c	Wed Apr 22 17:42:19 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     158,
  /**/

-- 
ARTHUR:        What?
BLACK KNIGHT:  None shall pass.
ARTHUR:        I have no quarrel with you, good Sir knight, but I must cross
               this bridge.
BLACK KNIGHT:  Then you shall die.
                                  The Quest for the Holy Grail (Monty Python)

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


--- NEW FILE 7.2.159 ---
To: vim-dev at vim.org
Subject: Patch 7.2.159
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.159
Problem:    When $x_includes ends up being "NONE" configure fails.
Solution:   Check for $x_includes not to be "NONE" (Rainer)
Files:	    src/auto/configure, src/configure.in


*** ../vim-7.2.158/src/auto/configure	Mon Mar  2 02:44:54 2009
--- src/auto/configure	Wed Apr 22 14:37:24 2009
***************
*** 15519,15525 ****
  if test "$enable_multibyte" = "yes"; then
    cflags_save=$CFLAGS
    ldflags_save=$LDFLAGS
!   if test -n "$x_includes" ; then
      CFLAGS="$CFLAGS -I$x_includes"
      LDFLAGS="$X_LIBS $LDFLAGS -lX11"
      { $as_echo "$as_me:$LINENO: checking whether X_LOCALE needed" >&5
--- 15519,15525 ----
  if test "$enable_multibyte" = "yes"; then
    cflags_save=$CFLAGS
    ldflags_save=$LDFLAGS
!   if test "x$x_includes" != "xNONE" ; then
      CFLAGS="$CFLAGS -I$x_includes"
      LDFLAGS="$X_LIBS $LDFLAGS -lX11"
      { $as_echo "$as_me:$LINENO: checking whether X_LOCALE needed" >&5
*** ../vim-7.2.158/src/configure.in	Mon Mar  2 02:44:54 2009
--- src/configure.in	Wed Apr 22 14:35:57 2009
***************
*** 2952,2958 ****
  if test "$enable_multibyte" = "yes"; then
    cflags_save=$CFLAGS
    ldflags_save=$LDFLAGS
!   if test -n "$x_includes" ; then
      CFLAGS="$CFLAGS -I$x_includes"
      LDFLAGS="$X_LIBS $LDFLAGS -lX11"
      AC_MSG_CHECKING(whether X_LOCALE needed)
--- 2952,2958 ----
  if test "$enable_multibyte" = "yes"; then
    cflags_save=$CFLAGS
    ldflags_save=$LDFLAGS
!   if test "x$x_includes" != "xNONE" ; then
      CFLAGS="$CFLAGS -I$x_includes"
      LDFLAGS="$X_LIBS $LDFLAGS -lX11"
      AC_MSG_CHECKING(whether X_LOCALE needed)
*** ../vim-7.2.158/src/version.c	Wed Apr 22 17:42:53 2009
--- src/version.c	Wed Apr 22 17:49:50 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     159,
  /**/

-- 
"Hegel was right when he said that we learn from history that man can
never learn anything from history."       (George Bernard Shaw)

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


--- NEW FILE 7.2.160 ---
To: vim-dev at vim.org
Subject: Patch 7.2.160
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.160
Problem:    Search pattern not freed on exit when 'rightleft' set.
Solution:   Free mr_pattern_alloced.
Files:	    src/search.c


*** ../vim-7.2.159/src/search.c	Wed Apr 22 16:42:24 2009
--- src/search.c	Wed Apr 22 12:26:19 2009
***************
*** 345,350 ****
--- 345,359 ----
  {
      vim_free(spats[0].pat);
      vim_free(spats[1].pat);
+ 
+ # ifdef FEAT_RIGHTLEFT
+     if (mr_pattern_alloced)
+     {
+         vim_free(mr_pattern);
+         mr_pattern_alloced = FALSE;
+         mr_pattern = NULL;
+     }
+ # endif
  }
  #endif
  
*** ../vim-7.2.159/src/version.c	Wed Apr 22 17:50:53 2009
--- src/version.c	Wed Apr 22 18:42:25 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     160,
  /**/

-- 
    f y cn rd ths thn y cn hv grt jb n cmptr prgrmmng

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


--- NEW FILE 7.2.161 ---
To: vim-dev at vim.org
Subject: Patch 7.2.161
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.161
Problem:    Folds messed up in other tab page. (Vlad Irnov)
Solution:   Instead of going over all windows in current tab page go over all
	    windows in all tab pages.  Also free memory for location lists in
	    other tab pages when exiting. (Lech Lorens)
Files:	    src/fileio.c, src/mark.c, src/misc1.c, src/misc2.c


*** ../vim-7.2.160/src/fileio.c	Wed Mar 18 15:40:03 2009
--- src/fileio.c	Wed Apr 22 15:46:35 2009
***************
*** 6846,6855 ****
  #endif
  #ifdef FEAT_FOLDING
  	{
! 	    win_T *wp;
  
  	    /* Update folds unless they are defined manually. */
! 	    FOR_ALL_WINDOWS(wp)
  		if (wp->w_buffer == curwin->w_buffer
  			&& !foldmethodIsManual(wp))
  		    foldUpdateAll(wp);
--- 6846,6856 ----
  #endif
  #ifdef FEAT_FOLDING
  	{
! 	    win_T	*wp;
! 	    tabpage_T	*tp;
  
  	    /* Update folds unless they are defined manually. */
! 	    FOR_ALL_TAB_WINDOWS(tp, wp)
  		if (wp->w_buffer == curwin->w_buffer
  			&& !foldmethodIsManual(wp))
  		    foldUpdateAll(wp);
*** ../vim-7.2.160/src/mark.c	Sun Nov  9 13:43:25 2008
--- src/mark.c	Wed Apr 22 17:32:29 2009
***************
*** 1023,1028 ****
--- 1023,1031 ----
      int		fnum = curbuf->b_fnum;
      linenr_T	*lp;
      win_T	*win;
+ #ifdef FEAT_WINDOWS
+     tabpage_T	*tab;
+ #endif
  
      if (line2 < line1 && amount_after == 0L)	    /* nothing to do */
  	return;
***************
*** 1064,1070 ****
  	/* quickfix marks */
  	qf_mark_adjust(NULL, line1, line2, amount, amount_after);
  	/* location lists */
! 	FOR_ALL_WINDOWS(win)
  	    qf_mark_adjust(win, line1, line2, amount, amount_after);
  #endif
  
--- 1067,1073 ----
  	/* quickfix marks */
  	qf_mark_adjust(NULL, line1, line2, amount, amount_after);
  	/* location lists */
! 	FOR_ALL_TAB_WINDOWS(tab, win)
  	    qf_mark_adjust(win, line1, line2, amount, amount_after);
  #endif
  
***************
*** 1086,1092 ****
      /*
       * Adjust items in all windows related to the current buffer.
       */
!     FOR_ALL_WINDOWS(win)
      {
  #ifdef FEAT_JUMPLIST
  	if (!cmdmod.lockmarks)
--- 1089,1095 ----
      /*
       * Adjust items in all windows related to the current buffer.
       */
!     FOR_ALL_TAB_WINDOWS(tab, win)
      {
  #ifdef FEAT_JUMPLIST
  	if (!cmdmod.lockmarks)
*** ../vim-7.2.160/src/misc1.c	Wed Mar 18 15:40:03 2009
--- src/misc1.c	Wed Apr 22 17:32:46 2009
***************
*** 2717,2722 ****
--- 2717,2725 ----
      long	xtra;
  {
      win_T	*wp;
+ #ifdef FEAT_WINDOWS
+     tabpage_T	*tp;
+ #endif
      int		i;
  #ifdef FEAT_JUMPLIST
      int		cols;
***************
*** 2769,2775 ****
  		    curbuf->b_changelistlen = JUMPLISTSIZE - 1;
  		    mch_memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
  					  sizeof(pos_T) * (JUMPLISTSIZE - 1));
! 		    FOR_ALL_WINDOWS(wp)
  		    {
  			/* Correct position in changelist for other windows on
  			 * this buffer. */
--- 2772,2778 ----
  		    curbuf->b_changelistlen = JUMPLISTSIZE - 1;
  		    mch_memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
  					  sizeof(pos_T) * (JUMPLISTSIZE - 1));
! 		    FOR_ALL_TAB_WINDOWS(tp, wp)
  		    {
  			/* Correct position in changelist for other windows on
  			 * this buffer. */
***************
*** 2777,2783 ****
  			    --wp->w_changelistidx;
  		    }
  		}
! 		FOR_ALL_WINDOWS(wp)
  		{
  		    /* For other windows, if the position in the changelist is
  		     * at the end it stays at the end. */
--- 2780,2786 ----
  			    --wp->w_changelistidx;
  		    }
  		}
! 		FOR_ALL_TAB_WINDOWS(tp, wp)
  		{
  		    /* For other windows, if the position in the changelist is
  		     * at the end it stays at the end. */
***************
*** 2796,2802 ****
  #endif
      }
  
!     FOR_ALL_WINDOWS(wp)
      {
  	if (wp->w_buffer == curbuf)
  	{
--- 2799,2805 ----
  #endif
      }
  
!     FOR_ALL_TAB_WINDOWS(tp, wp)
      {
  	if (wp->w_buffer == curbuf)
  	{
*** ../vim-7.2.160/src/misc2.c	Wed Mar 11 17:27:46 2009
--- src/misc2.c	Wed Apr 22 15:46:35 2009
***************
*** 1075,1085 ****
  
  #ifdef FEAT_QUICKFIX
      {
! 	win_T	*win;
  
  	qf_free_all(NULL);
  	/* Free all location lists */
! 	FOR_ALL_WINDOWS(win)
  	    qf_free_all(win);
      }
  #endif
--- 1075,1086 ----
  
  #ifdef FEAT_QUICKFIX
      {
! 	win_T	    *win;
! 	tabpage_T   *tab;
  
  	qf_free_all(NULL);
  	/* Free all location lists */
! 	FOR_ALL_TAB_WINDOWS(tab, win)
  	    qf_free_all(win);
      }
  #endif
*** ../vim-7.2.160/src/version.c	Wed Apr 22 18:43:06 2009
--- src/version.c	Wed Apr 29 10:59:01 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     161,
  /**/

-- 
CONCORDE:  Quickly, sir, come this way!
LAUNCELOT: No!  It's not right for my idiom.  I must escape more  ... more ...
CONCORDE:  Dramatically, sir?
LAUNCELOT: Dramatically.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.162 ---
To: vim-dev at vim.org
Subject: Patch 7.2.162
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.162
Problem:    The quickfix window may get wrong filetype.
Solution:   Do not detect the filetype for the quickfix window. (Lech Lorens)
Files:	    src/quickfix.c


*** ../vim-7.2.161/src/quickfix.c	Sun Feb 22 02:36:36 2009
--- src/quickfix.c	Wed Apr 22 17:34:57 2009
***************
*** 2346,2352 ****
  	    set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
  								   OPT_LOCAL);
  	    set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
! 	    set_option_value((char_u *)"diff", 0L, NULL, OPT_LOCAL);
  	}
  
  	/* Only set the height when still in the same tab page and there is no
--- 2346,2358 ----
  	    set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
  								   OPT_LOCAL);
  	    set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
! #ifdef FEAT_DIFF
! 	    curwin->w_p_diff = FALSE;
! #endif
! #ifdef FEAT_FOLDING
! 	    set_option_value((char_u *)"fdm", 0L, (char_u *)"manual",
! 								   OPT_LOCAL);
! #endif
  	}
  
  	/* Only set the height when still in the same tab page and there is no
***************
*** 2607,2616 ****
--- 2613,2624 ----
      curbuf->b_p_ma = FALSE;
  
  #ifdef FEAT_AUTOCMD
+     keep_filetype = TRUE;		/* don't detect 'filetype' */
      apply_autocmds(EVENT_BUFREADPOST, (char_u *)"quickfix", NULL,
  							       FALSE, curbuf);
      apply_autocmds(EVENT_BUFWINENTER, (char_u *)"quickfix", NULL,
  							       FALSE, curbuf);
+     keep_filetype = FALSE;
  #endif
  
      /* make sure it will be redrawn */
*** ../vim-7.2.161/src/version.c	Wed Apr 29 11:00:09 2009
--- src/version.c	Wed Apr 29 11:49:09 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     162,
  /**/

-- 
Yesterday is history.
Tomorrow is a mystery.
Today is a gift.
That's why it is called 'present'.

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


--- NEW FILE 7.2.163 ---
To: vim-dev at vim.org
Subject: Patch 7.2.163
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.163
Problem:    The command line window may get folding.
Solution:   Default to no/manual folding. (Lech Lorens)
Files:	    src/ex_getln.c


*** ../vim-7.2.162/src/ex_getln.c	Wed Apr 22 13:50:14 2009
--- src/ex_getln.c	Wed Apr 22 16:12:54 2009
***************
*** 6073,6078 ****
--- 6073,6081 ----
      set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
      set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
      curbuf->b_p_ma = TRUE;
+ #ifdef FEAT_FOLDING
+     curwin->w_p_fen = FALSE;
+ #endif
  # ifdef FEAT_RIGHTLEFT
      curwin->w_p_rl = cmdmsg_rl;
      cmdmsg_rl = FALSE;
*** ../vim-7.2.162/src/version.c	Wed Apr 29 11:49:57 2009
--- src/version.c	Wed Apr 29 12:02:56 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     163,
  /**/

-- 
   [SIR LAUNCELOT runs back up the stairs, grabs a rope
   of the wall and swings out over the heads of the CROWD in a
   swashbuckling manner towards a large window.  He stops just short
   of the window and is left swing pathetically back and forth.]
LAUNCELOT: Excuse me ... could somebody give me a push ...
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.164 ---
To: vim-dev at vim.org
Subject: Patch 7.2.164
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.164
Problem:    When 'showbreak' is set the size of the Visual block may be
	    reported wrong. (Eduardo Daudt Flach)
Solution:   Temporarily make 'sbr' empty.
Files:	    src/normal.c, src/ops.c


*** ../vim-7.2.163/src/normal.c	Sat Feb 21 20:27:00 2009
--- src/normal.c	Wed Apr 22 18:30:20 2009
***************
*** 3709,3721 ****
  #ifdef FEAT_VISUAL
      if (VIsual_active && !char_avail())
      {
! 	int		i = lt(VIsual, curwin->w_cursor);
  	long		lines;
  	colnr_T		leftcol, rightcol;
  	linenr_T	top, bot;
  
  	/* Show the size of the Visual area. */
! 	if (i)
  	{
  	    top = VIsual.lnum;
  	    bot = curwin->w_cursor.lnum;
--- 3709,3721 ----
  #ifdef FEAT_VISUAL
      if (VIsual_active && !char_avail())
      {
! 	int		cursor_bot = lt(VIsual, curwin->w_cursor);
  	long		lines;
  	colnr_T		leftcol, rightcol;
  	linenr_T	top, bot;
  
  	/* Show the size of the Visual area. */
! 	if (cursor_bot)
  	{
  	    top = VIsual.lnum;
  	    bot = curwin->w_cursor.lnum;
***************
*** 3734,3747 ****
  
  	if (VIsual_mode == Ctrl_V)
  	{
  	    getvcols(curwin, &curwin->w_cursor, &VIsual, &leftcol, &rightcol);
  	    sprintf((char *)showcmd_buf, "%ldx%ld", lines,
  					      (long)(rightcol - leftcol + 1));
  	}
  	else if (VIsual_mode == 'V' || VIsual.lnum != curwin->w_cursor.lnum)
  	    sprintf((char *)showcmd_buf, "%ld", lines);
  	else
! 	    sprintf((char *)showcmd_buf, "%ld", (long)(i
  		    ? curwin->w_cursor.col - VIsual.col
  		    : VIsual.col - curwin->w_cursor.col) + (*p_sel != 'e'));
  	showcmd_buf[SHOWCMD_COLS] = NUL;	/* truncate */
--- 3734,3756 ----
  
  	if (VIsual_mode == Ctrl_V)
  	{
+ #ifdef FEAT_LINEBREAK
+ 	    char_u *saved_sbr = p_sbr;
+ 
+ 	    /* Make 'sbr' empty for a moment to get the correct size. */
+ 	    p_sbr = empty_option;
+ #endif
  	    getvcols(curwin, &curwin->w_cursor, &VIsual, &leftcol, &rightcol);
+ #ifdef FEAT_LINEBREAK
+ 	    p_sbr = saved_sbr;
+ #endif
  	    sprintf((char *)showcmd_buf, "%ldx%ld", lines,
  					      (long)(rightcol - leftcol + 1));
  	}
  	else if (VIsual_mode == 'V' || VIsual.lnum != curwin->w_cursor.lnum)
  	    sprintf((char *)showcmd_buf, "%ld", lines);
  	else
! 	    sprintf((char *)showcmd_buf, "%ld", (long)(cursor_bot
  		    ? curwin->w_cursor.col - VIsual.col
  		    : VIsual.col - curwin->w_cursor.col) + (*p_sel != 'e'));
  	showcmd_buf[SHOWCMD_COLS] = NUL;	/* truncate */
*** ../vim-7.2.163/src/ops.c	Wed Apr 22 17:42:53 2009
--- src/ops.c	Wed Apr 22 18:30:07 2009
***************
*** 392,398 ****
      colnr_T		ws_vcol;
      int			i = 0, j = 0;
      int			len;
- 
  #ifdef FEAT_RIGHTLEFT
      int			old_p_ri = p_ri;
  
--- 392,397 ----
***************
*** 6284,6294 ****
--- 6283,6302 ----
  
  	    if (VIsual_mode == Ctrl_V)
  	    {
+ #ifdef FEAT_LINEBREAK
+ 		char_u * saved_sbr = p_sbr;
+ 
+ 		/* Make 'sbr' empty for a moment to get the correct size. */
+ 		p_sbr = empty_option;
+ #endif
  		oparg.is_VIsual = 1;
  		oparg.block_mode = TRUE;
  		oparg.op_type = OP_NOP;
  		getvcols(curwin, &min_pos, &max_pos,
  					  &oparg.start_vcol, &oparg.end_vcol);
+ #ifdef FEAT_LINEBREAK
+ 		p_sbr = saved_sbr;
+ #endif
  		if (curwin->w_curswant == MAXCOL)
  		    oparg.end_vcol = MAXCOL;
  		/* Swap the start, end vcol if needed */
*** ../vim-7.2.163/src/version.c	Wed Apr 29 12:03:35 2009
--- src/version.c	Wed Apr 29 17:38:05 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     164,
  /**/

-- 
There are 10 kinds of people: Those who understand binary and those who don't.

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


--- NEW FILE 7.2.165 ---
To: vim-dev at vim.org
Subject: Patch 7.2.165
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.165
Problem:    The argument for the FuncUndefined autocmd event is expanded like
	    a file name.
Solution:   Don't try expanding it. (Wang Xu)
Files:	    src/fileio.c


*** ../vim-7.2.164/src/fileio.c	Wed Apr 29 11:00:09 2009
--- src/fileio.c	Wed Apr 29 18:01:06 2009
***************
*** 8785,8793 ****
      else
      {
  	sfname = vim_strsave(fname);
! 	/* Don't try expanding FileType, Syntax, WindowID or QuickFixCmd* */
  	if (event == EVENT_FILETYPE
  		|| event == EVENT_SYNTAX
  		|| event == EVENT_REMOTEREPLY
  		|| event == EVENT_SPELLFILEMISSING
  		|| event == EVENT_QUICKFIXCMDPRE
--- 8785,8795 ----
      else
      {
  	sfname = vim_strsave(fname);
! 	/* Don't try expanding FileType, Syntax, FuncUndefined, WindowID or
! 	 * QuickFixCmd* */
  	if (event == EVENT_FILETYPE
  		|| event == EVENT_SYNTAX
+ 		|| event == EVENT_FUNCUNDEFINED
  		|| event == EVENT_REMOTEREPLY
  		|| event == EVENT_SPELLFILEMISSING
  		|| event == EVENT_QUICKFIXCMDPRE
*** ../vim-7.2.164/src/version.c	Wed Apr 29 17:39:17 2009
--- src/version.c	Wed Apr 29 18:00:43 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     165,
  /**/

-- 
Be nice to your kids...  they'll be the ones choosing your nursing home.

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


--- NEW FILE 7.2.166 ---
To: vim-dev at vim.org
Subject: Patch 7.2.166
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.166
Problem:    No completion for ":sign" command.
Solution:   Add ":sign" completion. (Dominique Pelle)
Files:	    src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/vim.h,
	    src/proto/ex_cmds.pro


*** ../vim-7.2.165/src/ex_cmds.c	Tue Feb 24 04:28:40 2009
--- src/ex_cmds.c	Wed Apr 29 17:08:27 2009
***************
*** 6543,6562 ****
  static void sign_list_defined __ARGS((sign_T *sp));
  static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
  
! /*
!  * ":sign" command
!  */
!     void
! ex_sign(eap)
!     exarg_T	*eap;
! {
!     char_u	*arg = eap->arg;
!     char_u	*p;
!     int		idx;
!     sign_T	*sp;
!     sign_T	*sp_prev;
!     buf_T	*buf;
!     static char	*cmds[] = {
  			"define",
  #define SIGNCMD_DEFINE	0
  			"undefine",
--- 6543,6549 ----
  static void sign_list_defined __ARGS((sign_T *sp));
  static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
  
! static char *cmds[] = {
  			"define",
  #define SIGNCMD_DEFINE	0
  			"undefine",
***************
*** 6569,6590 ****
  #define SIGNCMD_UNPLACE	4
  			"jump",
  #define SIGNCMD_JUMP	5
  #define SIGNCMD_LAST	6
!     };
  
      /* Parse the subcommand. */
      p = skiptowhite(arg);
!     if (*p != NUL)
! 	*p++ = NUL;
!     for (idx = 0; ; ++idx)
      {
! 	if (idx == SIGNCMD_LAST)
! 	{
! 	    EMSG2(_("E160: Unknown sign command: %s"), arg);
! 	    return;
! 	}
! 	if (STRCMP(arg, cmds[idx]) == 0)
! 	    break;
      }
      arg = skipwhite(p);
  
--- 6556,6606 ----
  #define SIGNCMD_UNPLACE	4
  			"jump",
  #define SIGNCMD_JUMP	5
+ 			NULL
  #define SIGNCMD_LAST	6
! };
! 
! /*
!  * Find index of a ":sign" subcmd from its name.
!  * "*end_cmd" must be writable.
!  */
!     static int
! sign_cmd_idx(begin_cmd, end_cmd)
!     char	*begin_cmd;	/* begin of sign subcmd */
!     char	*end_cmd;	/* just after sign subcmd */
! {
!     int		idx;
!     char	save = *end_cmd;
! 
!     *end_cmd = NUL;
!     for (idx = 0; ; ++idx)
! 	if (cmds[idx] == NULL || STRCMP(begin_cmd, cmds[idx]) == 0)
! 	    break;
!     *end_cmd = save;
!     return idx;
! }
! 
! /*
!  * ":sign" command
!  */
!     void
! ex_sign(eap)
!     exarg_T	*eap;
! {
!     char_u	*arg = eap->arg;
!     char_u	*p;
!     int		idx;
!     sign_T	*sp;
!     sign_T	*sp_prev;
!     buf_T	*buf;
  
      /* Parse the subcommand. */
      p = skiptowhite(arg);
!     idx = sign_cmd_idx(arg, p);
!     if (idx == SIGNCMD_LAST)
      {
! 	EMSG2(_("E160: Unknown sign command: %s"), arg);
! 	return;
      }
      arg = skipwhite(p);
  
***************
*** 7110,7115 ****
--- 7126,7311 ----
  }
  #endif
  
+ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+ static enum
+ {
+     EXP_SUBCMD,		/* expand :sign sub-commands */
+     EXP_DEFINE,		/* expand :sign define {name} args */
+     EXP_PLACE,		/* expand :sign place {id} args */
+     EXP_UNPLACE,	/* expand :sign unplace" */
+     EXP_SIGN_NAMES	/* expand with name of placed signs */
+ } expand_what;
+ 
+ /*
+  * Function given to ExpandGeneric() to obtain the sign command
+  * expansion.
+  */
+ /*ARGSUSED*/
+     char_u *
+ get_sign_name(xp, idx)
+     expand_T	*xp;
+     int		idx;
+ {
+     sign_T	*sp;
+     int		current_idx;
+ 
+     switch (expand_what)
+     {
+     case EXP_SUBCMD:
+ 	return (char_u *)cmds[idx];
+     case EXP_DEFINE:
+ 	{
+ 	    char *define_arg[] =
+ 	    {
+ 		"icon=", "linehl=", "text=", "texthl=", NULL
+ 	    };
+ 	    return (char_u *)define_arg[idx];
+ 	}
+     case EXP_PLACE:
+ 	{
+ 	    char *place_arg[] =
+ 	    {
+ 		"line=", "name=", "file=", "buffer=", NULL
+ 	    };
+ 	    return (char_u *)place_arg[idx];
+ 	}
+     case EXP_UNPLACE:
+ 	{
+ 	    char *unplace_arg[] = { "file=", "buffer=", NULL };
+ 	    return (char_u *)unplace_arg[idx];
+ 	}
+     case EXP_SIGN_NAMES:
+ 	/* Complete with name of signs already defined */
+ 	current_idx = 0;
+ 	for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+ 	    if (current_idx++ == idx)
+ 		return sp->sn_name;
+ 	return NULL;
+     default:
+ 	return NULL;
+     }
+ }
+ 
+ /*
+  * Handle command line completion for :sign command.
+  */
+     void
+ set_context_in_sign_cmd(xp, arg)
+     expand_T	*xp;
+     char_u	*arg;
+ {
+     char_u	*p;
+     char_u	*end_subcmd;
+     char_u	*last;
+     int		cmd_idx;
+     char_u	*begin_subcmd_args;
+ 
+     /* Default: expand subcommands. */
+     xp->xp_context = EXPAND_SIGN;
+     expand_what = EXP_SUBCMD;
+     xp->xp_pattern = arg;
+ 
+     end_subcmd = skiptowhite(arg);
+     if (*end_subcmd == NUL)
+ 	/* expand subcmd name
+ 	 * :sign {subcmd}<CTRL-D>*/
+ 	return;
+ 
+     cmd_idx = sign_cmd_idx(arg, end_subcmd);
+ 
+     /* :sign {subcmd} {subcmd_args}
+      *                |
+      *                begin_subcmd_args */
+     begin_subcmd_args = skipwhite(end_subcmd);
+     p = skiptowhite(begin_subcmd_args);
+     if (*p == NUL)
+     {
+ 	/*
+ 	 * Expand first argument of subcmd when possible.
+ 	 * For ":jump {id}" and ":unplace {id}", we could
+ 	 * possibly expand the ids of all signs already placed.
+ 	 */
+ 	xp->xp_pattern = begin_subcmd_args;
+ 	switch (cmd_idx)
+ 	{
+ 	    case SIGNCMD_LIST:
+ 	    case SIGNCMD_UNDEFINE:
+ 		/* :sign list <CTRL-D>
+ 		 * :sign undefine <CTRL-D> */
+ 		expand_what = EXP_SIGN_NAMES;
+ 		break;
+ 	    default:
+ 		xp->xp_context = EXPAND_NOTHING;
+ 	}
+ 	return;
+     }
+ 
+     /* expand last argument of subcmd */
+ 
+     /* :sign define {name} {args}...
+      *              |
+      *              p */
+ 
+     /* Loop until reaching last argument. */
+     do
+     {
+ 	p = skipwhite(p);
+ 	last = p;
+ 	p = skiptowhite(p);
+     } while (*p != NUL);
+ 
+     p = vim_strchr(last, '=');
+ 
+     /* :sign define {name} {args}... {last}=
+      *                               |     |
+      *                            last     p */
+     if (p == NUL)
+     {
+ 	/* Expand last argument name (before equal sign). */
+ 	xp->xp_pattern = last;
+ 	switch (cmd_idx)
+ 	{
+ 	    case SIGNCMD_DEFINE:
+ 		expand_what = EXP_DEFINE;
+ 		break;
+ 	    case SIGNCMD_PLACE:
+ 		expand_what = EXP_PLACE;
+ 		break;
+ 	    case SIGNCMD_JUMP:
+ 	    case SIGNCMD_UNPLACE:
+ 		expand_what = EXP_UNPLACE;
+ 		break;
+ 	    default:
+ 		xp->xp_context = EXPAND_NOTHING;
+ 	}
+     }
+     else
+     {
+ 	/* Expand last argument value (after equal sign). */
+ 	xp->xp_pattern = p + 1;
+ 	switch (cmd_idx)
+ 	{
+ 	    case SIGNCMD_DEFINE:
+ 		if (STRNCMP(last, "texthl", p - last) == 0 ||
+ 		    STRNCMP(last, "linehl", p - last) == 0)
+ 		    xp->xp_context = EXPAND_HIGHLIGHT;
+ 		else if (STRNCMP(last, "icon", p - last) == 0)
+ 		    xp->xp_context = EXPAND_FILES;
+ 		else
+ 		    xp->xp_context = EXPAND_NOTHING;
+ 		break;
+ 	    case SIGNCMD_PLACE:
+ 		if (STRNCMP(last, "name", p - last) == 0)
+ 		    expand_what = EXP_SIGN_NAMES;
+ 		else
+ 		    xp->xp_context = EXPAND_NOTHING;
+ 		break;
+ 	    default:
+ 		xp->xp_context = EXPAND_NOTHING;
+ 	}
+     }
+ }
+ #endif
  #endif
  
  #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
*** ../vim-7.2.165/src/ex_docmd.c	Wed Apr 22 16:22:44 2009
--- src/ex_docmd.c	Wed Apr 29 17:05:23 2009
***************
*** 3695,3700 ****
--- 3695,3705 ----
  	    set_context_in_cscope_cmd(xp, arg, ea.cmdidx);
  	    break;
  #endif
+ #ifdef FEAT_SIGNS
+ 	case CMD_sign:
+ 	    set_context_in_sign_cmd(xp, arg);
+ 	    break;
+ #endif
  #ifdef FEAT_LISTCMDS
  	case CMD_bdelete:
  	case CMD_bwipeout:
***************
*** 5218,5223 ****
--- 5223,5231 ----
      {EXPAND_MENUS, "menu"},
      {EXPAND_SETTINGS, "option"},
      {EXPAND_SHELLCMD, "shellcmd"},
+ #if defined(FEAT_SIGNS)
+     {EXPAND_SIGN, "sign"},
+ #endif
      {EXPAND_TAGS, "tag"},
      {EXPAND_TAGS_LISTFILES, "tag_listfiles"},
      {EXPAND_USER_VARS, "var"},
*** ../vim-7.2.165/src/ex_getln.c	Wed Apr 29 12:03:35 2009
--- src/ex_getln.c	Wed Apr 29 12:51:42 2009
***************
*** 325,331 ****
  #endif
  
  #ifdef FEAT_DIGRAPHS
!     do_digraph(-1);		/* init digraph typahead */
  #endif
  
      /*
--- 325,331 ----
  #endif
  
  #ifdef FEAT_DIGRAPHS
!     do_digraph(-1);		/* init digraph typeahead */
  #endif
  
      /*
***************
*** 4521,4526 ****
--- 4521,4529 ----
  #ifdef FEAT_CSCOPE
  	    {EXPAND_CSCOPE, get_cscope_name, TRUE},
  #endif
+ #ifdef FEAT_SIGNS
+ 	    {EXPAND_SIGN, get_sign_name, TRUE},
+ #endif
  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
  	&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
  	    {EXPAND_LANGUAGE, get_lang_arg, TRUE},
*** ../vim-7.2.165/src/vim.h	Wed Mar 18 12:50:58 2009
--- src/vim.h	Wed Apr 29 12:51:42 2009
***************
*** 709,714 ****
--- 709,715 ----
  #define EXPAND_USER_LIST	31
  #define EXPAND_SHELLCMD		32
  #define EXPAND_CSCOPE		33
+ #define EXPAND_SIGN		34
  
  /* Values for exmode_active (0 is no exmode) */
  #define EXMODE_NORMAL		1
*** ../vim-7.2.165/src/proto/ex_cmds.pro	Tue Feb 24 04:28:40 2009
--- src/proto/ex_cmds.pro	Wed Apr 29 17:10:29 2009
***************
*** 40,46 ****
  int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
  void write_viminfo_sub_string __ARGS((FILE *fp));
  void free_old_sub __ARGS((void));
- void free_signs __ARGS((void));
  int prepare_tagpreview __ARGS((int undo_sync));
  void ex_help __ARGS((exarg_T *eap));
  char_u *check_help_lang __ARGS((char_u *arg));
--- 40,45 ----
***************
*** 56,60 ****
--- 55,62 ----
  char_u *sign_get_text __ARGS((int typenr));
  void *sign_get_image __ARGS((int typenr));
  char_u *sign_typenr2name __ARGS((int typenr));
+ void free_signs __ARGS((void));
+ char_u *get_sign_name __ARGS((expand_T *xp, int idx));
+ void set_context_in_sign_cmd __ARGS((expand_T *xp, char_u *arg));
  void ex_drop __ARGS((exarg_T *eap));
  /* vim: set ft=c : */
*** ../vim-7.2.165/src/version.c	Wed Apr 29 18:01:23 2009
--- src/version.c	Wed Apr 29 18:43:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     166,
  /**/

-- 
Did you ever stop to think...  and forget to start again?
                                  -- Steven Wright

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


--- NEW FILE 7.2.167 ---
To: vim-dev at vim.org
Subject: Patch 7.2.167
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.167
Problem:    Splint doesn't work well for checking the code.
Solution:   Add splint arguments in the Makefile.  Exclude some code from
	    splint that it can't handle.  Tune splint arguments to give
	    reasonable errors.  Add a filter for removing false warnings from
	    splint output.  Many small changes to avoid warnings.  More to
	    follow...
Files:	    Filelist, src/Makefile, src/buffer.c, src/charset.c,
	    src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c,
	    src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h,
	    src/proto/buffer.pro, src/proto/edit.pro, src/screen.c,
	    src/structs.h

*** ../vim-7.2.166/Filelist	2008-09-20 16:26:10.000000000 +0200
--- Filelist	2009-05-05 21:45:49.000000000 +0200
***************
*** 139,144 ****
--- 139,145 ----
  		src/INSTALL \
  		src/INSTALLx.txt \
  		src/Makefile \
+ 		src/cleanlint.vim \
  		src/auto/configure \
  		src/config.aap.in \
  		src/config.h.in \
***************
*** 683,691 ****
  		runtime/spell/??/main.aap \
  		runtime/spell/yi/README.txt \
  		runtime/spell/main.aap \
- 		runtime/spell/cleanadd.vim \
  		runtime/spell/*.vim \
- 		runtime/spell/fixdup \
  
  # generic language files, binary
  LANG_GEN_BIN = \
--- 684,690 ----
*** ../vim-7.2.166/src/Makefile	2009-04-29 18:44:45.000000000 +0200
--- src/Makefile	2009-05-06 00:23:15.000000000 +0200
***************
*** 551,557 ****
  # }}}
  
  # LINT - for running lint
! LINT_OPTIONS = -beprxzF
  
  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
  # Might not work with GUI or Perl.
--- 551,562 ----
  # }}}
  
  # LINT - for running lint
! #  For standard lint
! #LINT = lint
! #LINT_OPTIONS = -beprxzF
! #  For splint  (see cleanlint.vim for filtering the output)
! LINT = splint
! LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
  
  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
  # Might not work with GUI or Perl.
***************
*** 1259,1274 ****
  #     This is for cproto 3 patchlevel 8 or below
  #     __inline, __attribute__ and __extension__ are not recognized by cproto
  #     G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h.
! NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \
! 	  -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \
! 	  -D__extension__= -D__restrict="" \
! 	  -D__gnuc_va_list=char -D__builtin_va_list=char
  
  #
! #     This is for cproto 3 patchlevel 9 or above (currently 4.6)
  #     __inline and __attribute__ are now recognized by cproto
  #     -D"foo()=" is not supported by all compilers so do not use it
! # NO_ATTR=
  #
  #     maybe the "/usr/bin/cc -E" has to be adjusted for some systems
  # This is for cproto 3.5 patchlevel 3:
--- 1264,1279 ----
  #     This is for cproto 3 patchlevel 8 or below
  #     __inline, __attribute__ and __extension__ are not recognized by cproto
  #     G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h.
! #NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \
! #	  -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \
! #	  -D__extension__= -D__restrict="" \
! #	  -D__gnuc_va_list=char -D__builtin_va_list=char
  
  #
! #     This is for cproto 3 patchlevel 9 or above (currently 4.6, 4.7g)
  #     __inline and __attribute__ are now recognized by cproto
  #     -D"foo()=" is not supported by all compilers so do not use it
! NO_ATTR=
  #
  #     maybe the "/usr/bin/cc -E" has to be adjusted for some systems
  # This is for cproto 3.5 patchlevel 3:
***************
*** 1432,1437 ****
--- 1437,1443 ----
  	$(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC) $(NETBEANS_SRC)
  #LINT_SRC = $(SRC)
  #LINT_SRC = $(ALL_SRC)
+ #LINT_SRC = $(BASIC_SRC)
  
  OBJ = \
  	objects/buffer.o \
***************
*** 2272,2283 ****
  
  # Run lint.  Clean up the *.ln files that are sometimes left behind.
  lint:
! 	lint $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
  	-rm -f *.ln
  
  # Check dosinst.c with lint.
  lintinstall:
! 	lint $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
  	-rm -f dosinst.ln
  
  ###########################################################################
--- 2279,2290 ----
  
  # Run lint.  Clean up the *.ln files that are sometimes left behind.
  lint:
! 	$(LINT) $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
  	-rm -f *.ln
  
  # Check dosinst.c with lint.
  lintinstall:
! 	$(LINT) $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
  	-rm -f dosinst.ln
  
  ###########################################################################
*** ../vim-7.2.166/src/buffer.c	2009-02-22 00:01:42.000000000 +0100
--- src/buffer.c	2009-05-13 12:25:29.000000000 +0200
***************
*** 44,49 ****
--- 44,50 ----
  #ifdef FEAT_TITLE
  static int	ti_change __ARGS((char_u *str, char_u **last));
  #endif
+ static int	append_arg_number __ARGS((win_T *wp, char_u *buf, int buflen, int add_file));
  static void	free_buffer __ARGS((buf_T *));
  static void	free_buffer_stuff __ARGS((buf_T *buf, int free_options));
  static void	clear_wininfo __ARGS((buf_T *buf));
***************
*** 1453,1465 ****
  
  #ifdef FEAT_KEYMAP
      if (curbuf->b_kmap_state & KEYMAP_INIT)
! 	keymap_init();
  #endif
  #ifdef FEAT_SPELL
      /* May need to set the spell language.  Can only do this after the buffer
       * has been properly setup. */
      if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
! 	did_set_spelllang(curbuf);
  #endif
  
      redraw_later(NOT_VALID);
--- 1454,1466 ----
  
  #ifdef FEAT_KEYMAP
      if (curbuf->b_kmap_state & KEYMAP_INIT)
! 	(void)keymap_init();
  #endif
  #ifdef FEAT_SPELL
      /* May need to set the spell language.  Can only do this after the buffer
       * has been properly setup. */
      if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
! 	(void)did_set_spelllang(curbuf);
  #endif
  
      redraw_later(NOT_VALID);
***************
*** 2516,2522 ****
      buf_T	*buf;
  {
      wininfo_T	*wip;
!     static pos_T no_position = {1, 0};
  
      wip = find_wininfo(buf, FALSE);
      if (wip != NULL)
--- 2517,2523 ----
      buf_T	*buf;
  {
      wininfo_T	*wip;
!     static pos_T no_position = INIT_POS_T(1, 0, 0);
  
      wip = find_wininfo(buf, FALSE);
      if (wip != NULL)
***************
*** 2577,2584 ****
  	{
  	    IObuff[len++] = ' ';
  	} while (--i > 0 && len < IOSIZE - 18);
! 	vim_snprintf((char *)IObuff + len, IOSIZE - len, _("line %ld"),
! 		buf == curbuf ? curwin->w_cursor.lnum
  					       : (long)buflist_findlnum(buf));
  	msg_outtrans(IObuff);
  	out_flush();	    /* output one line at a time */
--- 2578,2585 ----
  	{
  	    IObuff[len++] = ' ';
  	} while (--i > 0 && len < IOSIZE - 18);
! 	vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len),
! 		_("line %ld"), buf == curbuf ? curwin->w_cursor.lnum
  					       : (long)buflist_findlnum(buf));
  	msg_outtrans(IObuff);
  	out_flush();	    /* output one line at a time */
***************
*** 2967,2973 ****
  
      if (fullname > 1)	    /* 2 CTRL-G: include buffer number */
      {
! 	sprintf((char *)buffer, "buf %d: ", curbuf->b_fnum);
  	p = buffer + STRLEN(buffer);
      }
      else
--- 2968,2974 ----
  
      if (fullname > 1)	    /* 2 CTRL-G: include buffer number */
      {
! 	vim_snprintf((char *)buffer, IOSIZE, "buf %d: ", curbuf->b_fnum);
  	p = buffer + STRLEN(buffer);
      }
      else
***************
*** 3041,3051 ****
  		(long)curbuf->b_ml.ml_line_count,
  		n);
  	validate_virtcol();
! 	col_print(buffer + STRLEN(buffer),
  		   (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
      }
  
!     (void)append_arg_number(curwin, buffer, !shortmess(SHM_FILE), IOSIZE);
  
      if (dont_truncate)
      {
--- 3042,3053 ----
  		(long)curbuf->b_ml.ml_line_count,
  		n);
  	validate_virtcol();
! 	len = STRLEN(buffer);
! 	col_print(buffer + len, IOSIZE - len,
  		   (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
      }
  
!     (void)append_arg_number(curwin, buffer, IOSIZE, !shortmess(SHM_FILE));
  
      if (dont_truncate)
      {
***************
*** 3073,3087 ****
  }
  
      void
! col_print(buf, col, vcol)
      char_u  *buf;
      int	    col;
      int	    vcol;
  {
      if (col == vcol)
! 	sprintf((char *)buf, "%d", col);
      else
! 	sprintf((char *)buf, "%d-%d", col, vcol);
  }
  
  #if defined(FEAT_TITLE) || defined(PROTO)
--- 3075,3090 ----
  }
  
      void
! col_print(buf, buflen, col, vcol)
      char_u  *buf;
+     size_t  buflen;
      int	    col;
      int	    vcol;
  {
      if (col == vcol)
! 	vim_snprintf((char *)buf, buflen, "%d", col);
      else
! 	vim_snprintf((char *)buf, buflen, "%d-%d", col, vcol);
  }
  
  #if defined(FEAT_TITLE) || defined(PROTO)
***************
*** 3194,3211 ****
  		if (p == buf + off)
  		    /* must be a help buffer */
  		    vim_strncpy(buf + off, (char_u *)_("help"),
! 							    IOSIZE - off - 1);
  		else
  		    *p = NUL;
  
  		/* translate unprintable chars */
  		p = transstr(buf + off);
! 		vim_strncpy(buf + off, p, IOSIZE - off - 1);
  		vim_free(p);
  		STRCAT(buf, ")");
  	    }
  
! 	    append_arg_number(curwin, buf, FALSE, IOSIZE);
  
  #if defined(FEAT_CLIENTSERVER)
  	    if (serverName != NULL)
--- 3197,3214 ----
  		if (p == buf + off)
  		    /* must be a help buffer */
  		    vim_strncpy(buf + off, (char_u *)_("help"),
! 						  (size_t)(IOSIZE - off - 1));
  		else
  		    *p = NUL;
  
  		/* translate unprintable chars */
  		p = transstr(buf + off);
! 		vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1));
  		vim_free(p);
  		STRCAT(buf, ")");
  	    }
  
! 	    append_arg_number(curwin, buf, IOSIZE, FALSE);
  
  #if defined(FEAT_CLIENTSERVER)
  	    if (serverName != NULL)
***************
*** 3520,3526 ****
  		    n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
  
  		*t = '<';
! 		mch_memmove(t + 1, t + n, p - (t + n));
  		p = p - n + 1;
  #ifdef FEAT_MBYTE
  		/* Fill up space left over by half a double-wide char. */
--- 3523,3529 ----
  		    n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
  
  		*t = '<';
! 		mch_memmove(t + 1, t + n, (size_t)(p - (t + n)));
  		p = p - n + 1;
  #ifdef FEAT_MBYTE
  		/* Fill up space left over by half a double-wide char. */
***************
*** 3550,3556 ****
  		else
  		{
  		    /* fill by inserting characters */
! 		    mch_memmove(t + n - l, t, p - t);
  		    l = n - l;
  		    if (p + l >= out + outlen)
  			l = (long)((out + outlen) - p - 1);
--- 3553,3559 ----
  		else
  		{
  		    /* fill by inserting characters */
! 		    mch_memmove(t + n - l, t, (size_t)(p - t));
  		    l = n - l;
  		    if (p + l >= out + outlen)
  			l = (long)((out + outlen) - p - 1);
***************
*** 3686,3692 ****
  	    p = t;
  
  #ifdef FEAT_EVAL
! 	    sprintf((char *)tmp, "%d", curbuf->b_fnum);
  	    set_internal_string_var((char_u *)"actual_curbuf", tmp);
  
  	    o_curbuf = curbuf;
--- 3689,3695 ----
  	    p = t;
  
  #ifdef FEAT_EVAL
! 	    vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum);
  	    set_internal_string_var((char_u *)"actual_curbuf", tmp);
  
  	    o_curbuf = curbuf;
***************
*** 3753,3765 ****
  
  	case STL_ALTPERCENT:
  	    str = tmp;
! 	    get_rel_pos(wp, str);
  	    break;
  
  	case STL_ARGLISTSTAT:
  	    fillable = FALSE;
  	    tmp[0] = 0;
! 	    if (append_arg_number(wp, tmp, FALSE, (int)sizeof(tmp)))
  		str = tmp;
  	    break;
  
--- 3756,3768 ----
  
  	case STL_ALTPERCENT:
  	    str = tmp;
! 	    get_rel_pos(wp, str, TMPLEN);
  	    break;
  
  	case STL_ARGLISTSTAT:
  	    fillable = FALSE;
  	    tmp[0] = 0;
! 	    if (append_arg_number(wp, tmp, (int)sizeof(tmp), FALSE))
  		str = tmp;
  	    break;
  
***************
*** 3794,3800 ****
  	case STL_BYTEVAL_X:
  	    base = 'X';
  	case STL_BYTEVAL:
! 	    if (wp->w_cursor.col > STRLEN(linecont))
  		num = 0;
  	    else
  	    {
--- 3797,3803 ----
  	case STL_BYTEVAL_X:
  	    base = 'X';
  	case STL_BYTEVAL:
! 	    if (wp->w_cursor.col > (colnr_T)STRLEN(linecont))
  		num = 0;
  	    else
  	    {
***************
*** 3967,3973 ****
  	    if (zeropad)
  		*t++ = '0';
  	    *t++ = '*';
! 	    *t++ = nbase == 16 ? base : (nbase == 8 ? 'o' : 'd');
  	    *t = 0;
  
  	    for (n = num, l = 1; n >= nbase; n /= nbase)
--- 3970,3976 ----
  	    if (zeropad)
  		*t++ = '0';
  	    *t++ = '*';
! 	    *t++ = nbase == 16 ? base : (char_u)(nbase == 8 ? 'o' : 'd');
  	    *t = 0;
  
  	    for (n = num, l = 1; n >= nbase; n /= nbase)
***************
*** 4160,4172 ****
  #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
  	    || defined(FEAT_GUI_TABLINE) || defined(PROTO)
  /*
!  * Get relative cursor position in window into "str[]", in the form 99%, using
!  * "Top", "Bot" or "All" when appropriate.
   */
      void
! get_rel_pos(wp, str)
      win_T	*wp;
!     char_u	*str;
  {
      long	above; /* number of lines above window */
      long	below; /* number of lines below window */
--- 4163,4176 ----
  #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
  	    || defined(FEAT_GUI_TABLINE) || defined(PROTO)
  /*
!  * Get relative cursor position in window into "buf[buflen]", in the form 99%,
!  * using "Top", "Bot" or "All" when appropriate.
   */
      void
! get_rel_pos(wp, buf, buflen)
      win_T	*wp;
!     char_u	*buf;
!     int		buflen;
  {
      long	above; /* number of lines above window */
      long	below; /* number of lines below window */
***************
*** 4177,4210 ****
  #endif
      below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
      if (below <= 0)
! 	STRCPY(str, above == 0 ? _("All") : _("Bot"));
      else if (above <= 0)
! 	STRCPY(str, _("Top"));
      else
! 	sprintf((char *)str, "%2d%%", above > 1000000L
  				    ? (int)(above / ((above + below) / 100L))
  				    : (int)(above * 100L / (above + below)));
  }
  #endif
  
  /*
!  * Append (file 2 of 8) to 'buf', if editing more than one file.
   * Return TRUE if it was appended.
   */
!     int
! append_arg_number(wp, buf, add_file, maxlen)
      win_T	*wp;
      char_u	*buf;
      int		add_file;	/* Add "file" before the arg number */
-     int		maxlen;		/* maximum nr of chars in buf or zero*/
  {
      char_u	*p;
  
      if (ARGCOUNT <= 1)		/* nothing to do */
  	return FALSE;
  
!     p = buf + STRLEN(buf);		/* go to the end of the buffer */
!     if (maxlen && p - buf + 35 >= maxlen) /* getting too long */
  	return FALSE;
      *p++ = ' ';
      *p++ = '(';
--- 4181,4215 ----
  #endif
      below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
      if (below <= 0)
! 	vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")),
! 							(size_t)(buflen - 1));
      else if (above <= 0)
! 	vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1));
      else
! 	vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L
  				    ? (int)(above / ((above + below) / 100L))
  				    : (int)(above * 100L / (above + below)));
  }
  #endif
  
  /*
!  * Append (file 2 of 8) to "buf[buflen]", if editing more than one file.
   * Return TRUE if it was appended.
   */
!     static int
! append_arg_number(wp, buf, buflen, add_file)
      win_T	*wp;
      char_u	*buf;
+     int		buflen;
      int		add_file;	/* Add "file" before the arg number */
  {
      char_u	*p;
  
      if (ARGCOUNT <= 1)		/* nothing to do */
  	return FALSE;
  
!     p = buf + STRLEN(buf);	/* go to the end of the buffer */
!     if (p - buf + 35 >= buflen)	/* getting too long */
  	return FALSE;
      *p++ = ' ';
      *p++ = '(';
***************
*** 4213,4219 ****
  	STRCPY(p, "file ");
  	p += 5;
      }
!     sprintf((char *)p, wp->w_arg_idx_invalid ? "(%d) of %d)"
  				  : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
      return TRUE;
  }
--- 4218,4225 ----
  	STRCPY(p, "file ");
  	p += 5;
      }
!     vim_snprintf((char *)p, (size_t)(buflen - (p - buf)),
! 		wp->w_arg_idx_invalid ? "(%d) of %d)"
  				  : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
      return TRUE;
  }
***************
*** 4996,5002 ****
  	if (tab != NULL)
  	{
  	    *tab++ = '\0';
! 	    col = atoi((char *)tab);
  	    tab = vim_strrchr(xline, '\t');
  	    if (tab != NULL)
  	    {
--- 5002,5008 ----
  	if (tab != NULL)
  	{
  	    *tab++ = '\0';
! 	    col = (colnr_T)atoi((char *)tab);
  	    tab = vim_strrchr(xline, '\t');
  	    if (tab != NULL)
  	    {
***************
*** 5034,5039 ****
--- 5040,5046 ----
  #endif
      char_u	*line;
      int		max_buffers;
+     size_t	len;
  
      if (find_viminfo_parameter('%') == NULL)
  	return;
***************
*** 5042,5048 ****
      max_buffers = get_viminfo_parameter('%');
  
      /* Allocate room for the file name, lnum and col. */
!     line = alloc(MAXPATHL + 40);
      if (line == NULL)
  	return;
  
--- 5049,5056 ----
      max_buffers = get_viminfo_parameter('%');
  
      /* Allocate room for the file name, lnum and col. */
! #define LINE_BUF_LEN (MAXPATHL + 40)
!     line = alloc(LINE_BUF_LEN);
      if (line == NULL)
  	return;
  
***************
*** 5068,5074 ****
  	    break;
  	putc('%', fp);
  	home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
! 	sprintf((char *)line + STRLEN(line), "\t%ld\t%d",
  			(long)buf->b_last_cursor.lnum,
  			buf->b_last_cursor.col);
  	viminfo_writestring(fp, line);
--- 5076,5083 ----
  	    break;
  	putc('%', fp);
  	home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
! 	len = STRLEN(line);
! 	vim_snprintf((char *)line + len, len - LINE_BUF_LEN, "\t%ld\t%d",
  			(long)buf->b_last_cursor.lnum,
  			buf->b_last_cursor.col);
  	viminfo_writestring(fp, line);
***************
*** 5226,5232 ****
      return;
  }
  
!     int
  buf_change_sign_type(buf, markId, typenr)
      buf_T	*buf;		/* buffer to store sign in */
      int		markId;		/* sign ID */
--- 5235,5241 ----
      return;
  }
  
!     linenr_T
  buf_change_sign_type(buf, markId, typenr)
      buf_T	*buf;		/* buffer to store sign in */
      int		markId;		/* sign ID */
***************
*** 5243,5252 ****
  	}
      }
  
!     return 0;
  }
  
!     int_u
  buf_getsigntype(buf, lnum, type)
      buf_T	*buf;
      linenr_T	lnum;
--- 5252,5261 ----
  	}
      }
  
!     return (linenr_T)0;
  }
  
!     int
  buf_getsigntype(buf, lnum, type)
      buf_T	*buf;
      linenr_T	lnum;
*** ../vim-7.2.166/src/charset.c	2008-07-24 21:30:44.000000000 +0200
--- src/charset.c	2009-05-05 18:17:11.000000000 +0200
***************
*** 17,23 ****
  static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
  #endif
  
! static int nr2hex __ARGS((int c));
  
  static int    chartab_initialized = FALSE;
  
--- 17,23 ----
  static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
  #endif
  
! static unsigned nr2hex __ARGS((unsigned c));
  
  static int    chartab_initialized = FALSE;
  
***************
*** 664,670 ****
      }
  #endif
      buf[++i] = nr2hex((unsigned)c >> 4);
!     buf[++i] = nr2hex(c);
      buf[++i] = '>';
      buf[++i] = NUL;
  }
--- 664,670 ----
      }
  #endif
      buf[++i] = nr2hex((unsigned)c >> 4);
!     buf[++i] = nr2hex((unsigned)c);
      buf[++i] = '>';
      buf[++i] = NUL;
  }
***************
*** 674,682 ****
   * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
   * function key 1.
   */
!     static int
  nr2hex(c)
!     int		c;
  {
      if ((c & 0xf) <= 9)
  	return (c & 0xf) + '0';
--- 674,682 ----
   * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
   * function key 1.
   */
!     static unsigned
  nr2hex(c)
!     unsigned	c;
  {
      if ((c & 0xf) <= 9)
  	return (c & 0xf) + '0';
***************
*** 884,890 ****
      if (c >= 0x100)
      {
  	if (enc_dbcs != 0)
! 	    return dbcs_class((unsigned)c >> 8, c & 0xff) >= 2;
  	if (enc_utf8)
  	    return utf_class(c) >= 2;
      }
--- 884,890 ----
      if (c >= 0x100)
      {
  	if (enc_dbcs != 0)
! 	    return dbcs_class((unsigned)c >> 8, (unsigned)(c & 0xff)) >= 2;
  	if (enc_utf8)
  	    return utf_class(c) >= 2;
      }
***************
*** 1090,1096 ****
  	 */
  	numberextra = win_col_off(wp);
  	col2 = col;
! 	colmax = W_WIDTH(wp) - numberextra;
  	if (col >= colmax)
  	{
  	    n = colmax + win_col_off2(wp);
--- 1090,1096 ----
  	 */
  	numberextra = win_col_off(wp);
  	col2 = col;
! 	colmax = (colnr_T)(W_WIDTH(wp) - numberextra);
  	if (col >= colmax)
  	{
  	    n = colmax + win_col_off2(wp);
***************
*** 1201,1217 ****
      win_T	*wp;
      colnr_T	vcol;
  {
!     colnr_T	width1;		/* width of first line (after line number) */
!     colnr_T	width2;		/* width of further lines */
  
  #ifdef FEAT_VERTSPLIT
      if (wp->w_width == 0)	/* there is no border */
  	return FALSE;
  #endif
      width1 = W_WIDTH(wp) - win_col_off(wp);
!     if (vcol < width1 - 1)
  	return FALSE;
!     if (vcol == width1 - 1)
  	return TRUE;
      width2 = width1 + win_col_off2(wp);
      return ((vcol - width1) % width2 == width2 - 1);
--- 1201,1217 ----
      win_T	*wp;
      colnr_T	vcol;
  {
!     int		width1;		/* width of first line (after line number) */
!     int		width2;		/* width of further lines */
  
  #ifdef FEAT_VERTSPLIT
      if (wp->w_width == 0)	/* there is no border */
  	return FALSE;
  #endif
      width1 = W_WIDTH(wp) - win_col_off(wp);
!     if ((int)vcol < width1 - 1)
  	return FALSE;
!     if ((int)vcol == width1 - 1)
  	return TRUE;
      width2 = width1 + win_col_off2(wp);
      return ((vcol - width1) % width2 == width2 - 1);
***************
*** 1396,1408 ****
  # ifdef FEAT_MBYTE
  	/* Cannot put the cursor on part of a wide character. */
  	ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
! 	if (pos->col < STRLEN(ptr))
  	{
  	    int c = (*mb_ptr2char)(ptr + pos->col);
  
  	    if (c != TAB && vim_isprintc(c))
  	    {
! 		endadd = char2cells(c) - 1;
  		if (coladd > endadd)	/* past end of line */
  		    endadd = 0;
  		else
--- 1396,1408 ----
  # ifdef FEAT_MBYTE
  	/* Cannot put the cursor on part of a wide character. */
  	ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
! 	if (pos->col < (colnr_T)STRLEN(ptr))
  	{
  	    int c = (*mb_ptr2char)(ptr + pos->col);
  
  	    if (c != TAB && vim_isprintc(c))
  	    {
! 		endadd = (colnr_T)(char2cells(c) - 1);
  		if (coladd > endadd)	/* past end of line */
  		    endadd = 0;
  		else
*** ../vim-7.2.166/src/cleanlint.vim	2009-05-13 12:08:12.000000000 +0200
--- src/cleanlint.vim	2009-05-05 21:34:01.000000000 +0200
***************
*** 0 ****
--- 1,27 ----
+ " Vim tool: Filter output of splint
+ "
+ " Maintainer:	Bram Moolenaar <Bram at vim.org>
+ " Last Change:	2009 May 05
+ 
+ " Usage: redirect output of "make lint" to a file, edit that file with Vim and
+ " :call CleanLint()
+ " This deletes irrelevant messages.  What remains might be valid warnings.
+ 
+ fun! CleanLint()
+   g/^  Types are incompatible/lockmarks d
+   g/Assignment of dev_t to __dev_t:/lockmarks d
+   g/Assignment of __dev_t to dev_t:/lockmarks d
+   g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
+   g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
+   g/Assignment of char to char_u: /lockmarks d
+   g/Assignment of unsigned int to int: /lockmarks d
+   g/Assignment of colnr_T to int: /lockmarks d
+   g/Assignment of int to char_u: /lockmarks d
+   g/Function .* expects arg . to be wint_t gets int: /lockmarks d
+   g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
+   g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
+   g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
+   g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
+   g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
+   g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
+ endfun
*** ../vim-7.2.166/src/digraph.c	2008-06-25 00:26:41.000000000 +0200
--- src/digraph.c	2009-05-05 20:32:43.000000000 +0200
***************
*** 32,38 ****
  static void printdigraph __ARGS((digr_T *));
  
  /* digraphs added by the user */
! static garray_T	user_digraphs = {0, 0, sizeof(digr_T), 10, NULL};
  
  /*
   * Note: Characters marked with XX are not included literally, because some
--- 32,38 ----
  static void printdigraph __ARGS((digr_T *));
  
  /* digraphs added by the user */
! static garray_T	user_digraphs = {0, 0, (int)sizeof(digr_T), 10, NULL};
  
  /*
   * Note: Characters marked with XX are not included literally, because some
***************
*** 2371,2380 ****
  	}
  	else
  #endif
! 	    *p++ = dp->result;
  	if (char2cells(dp->result) == 1)
  	    *p++ = ' ';
! 	sprintf((char *)p, " %3d", dp->result);
  	msg_outtrans(buf);
      }
  }
--- 2371,2380 ----
  	}
  	else
  #endif
! 	    *p++ = (char_u)dp->result;
  	if (char2cells(dp->result) == 1)
  	    *p++ = ' ';
! 	vim_snprintf((char *)p, sizeof(buf) - (p - buf), " %3d", dp->result);
  	msg_outtrans(buf);
      }
  }
***************
*** 2395,2401 ****
  static void keymap_unload __ARGS((void));
  
  /*
!  * Set up key mapping tables for the 'keymap' option
   */
      char_u *
  keymap_init()
--- 2395,2404 ----
  static void keymap_unload __ARGS((void));
  
  /*
!  * Set up key mapping tables for the 'keymap' option.
!  * Returns NULL if OK, an error message for failure.  This only needs to be
!  * used when setting the option, not later when the value has already been
!  * checked.
   */
      char_u *
  keymap_init()
***************
*** 2412,2436 ****
      else
      {
  	char_u	*buf;
  
  	/* Source the keymap file.  It will contain a ":loadkeymap" command
  	 * which will call ex_loadkeymap() below. */
! 	buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap)
  # ifdef FEAT_MBYTE
! 						       + STRLEN(p_enc)
  # endif
! 						       + 14));
  	if (buf == NULL)
  	    return e_outofmem;
  
  # ifdef FEAT_MBYTE
  	/* try finding "keymap/'keymap'_'encoding'.vim"  in 'runtimepath' */
! 	sprintf((char *)buf, "keymap/%s_%s.vim", curbuf->b_p_keymap, p_enc);
  	if (source_runtime(buf, FALSE) == FAIL)
  # endif
  	{
  	    /* try finding "keymap/'keymap'.vim" in 'runtimepath'  */
! 	    sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap);
  	    if (source_runtime(buf, FALSE) == FAIL)
  	    {
  		vim_free(buf);
--- 2415,2443 ----
      else
      {
  	char_u	*buf;
+ 	size_t  buflen;
  
  	/* Source the keymap file.  It will contain a ":loadkeymap" command
  	 * which will call ex_loadkeymap() below. */
! 	buflen = STRLEN(curbuf->b_p_keymap)
  # ifdef FEAT_MBYTE
! 					   + STRLEN(p_enc)
  # endif
! 						       + 14;
! 	buf = alloc((unsigned)buflen);
  	if (buf == NULL)
  	    return e_outofmem;
  
  # ifdef FEAT_MBYTE
  	/* try finding "keymap/'keymap'_'encoding'.vim"  in 'runtimepath' */
! 	vim_snprintf((char *)buf, buflen, "keymap/%s_%s.vim",
! 						   curbuf->b_p_keymap, p_enc);
  	if (source_runtime(buf, FALSE) == FAIL)
  # endif
  	{
  	    /* try finding "keymap/'keymap'.vim" in 'runtimepath'  */
! 	    vim_snprintf((char *)buf, buflen, "keymap/%s.vim",
! 							  curbuf->b_p_keymap);
  	    if (source_runtime(buf, FALSE) == FAIL)
  	    {
  		vim_free(buf);
*** ../vim-7.2.166/src/edit.c	2009-02-21 20:27:00.000000000 +0100
--- src/edit.c	2009-05-05 21:14:50.000000000 +0200
***************
*** 57,63 ****
      N_(" Keyword Local completion (^N^P)"),
  };
  
! static char_u e_hitend[] = N_("Hit end of paragraph");
  
  /*
   * Structure used to store one match for insert completion.
--- 57,63 ----
      N_(" Keyword Local completion (^N^P)"),
  };
  
! static char e_hitend[] = N_("Hit end of paragraph");
  
  /*
   * Structure used to store one match for insert completion.
***************
*** 69,75 ****
--- 69,79 ----
      compl_T	*cp_prev;
      char_u	*cp_str;	/* matched text */
      char	cp_icase;	/* TRUE or FALSE: ignore case */
+ #ifdef S_SPLINT_S  /* splint can't handle array of pointers */
+     char_u	**cp_text;	/* text for the menu */
+ #else
      char_u	*(cp_text[CPT_COUNT]);	/* text for the menu */
+ #endif
      char_u	*cp_fname;	/* file containing the match, allocated when
  				 * cp_flags has FREE_FNAME */
      int		cp_flags;	/* ORIGINAL_TEXT, CONT_S_IPOS or FREE_FNAME */
***************
*** 306,312 ****
      int		c = 0;
      char_u	*ptr;
      int		lastc;
!     colnr_T	mincol;
      static linenr_T o_lnum = 0;
      int		i;
      int		did_backspace = TRUE;	    /* previous char was backspace */
--- 310,316 ----
      int		c = 0;
      char_u	*ptr;
      int		lastc;
!     int		mincol;
      static linenr_T o_lnum = 0;
      int		i;
      int		did_backspace = TRUE;	    /* previous char was backspace */
***************
*** 387,393 ****
  	if (startln)
  	    Insstart.col = 0;
      }
!     Insstart_textlen = linetabsize(ml_get_curline());
      Insstart_blank_vcol = MAXCOL;
      if (!did_ai)
  	ai_col = 0;
--- 391,397 ----
  	if (startln)
  	    Insstart.col = 0;
      }
!     Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
      Insstart_blank_vcol = MAXCOL;
      if (!did_ai)
  	ai_col = 0;
***************
*** 653,659 ****
  	    mincol = curwin->w_wcol;
  	    validate_cursor_col();
  
! 	    if ((int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts
  		    && curwin->w_wrow == W_WINROW(curwin)
  						 + curwin->w_height - 1 - p_so
  		    && (curwin->w_cursor.lnum != curwin->w_topline
--- 657,663 ----
  	    mincol = curwin->w_wcol;
  	    validate_cursor_col();
  
! 	    if ((int)curwin->w_wcol < mincol - curbuf->b_p_ts
  		    && curwin->w_wrow == W_WINROW(curwin)
  						 + curwin->w_height - 1 - p_so
  		    && (curwin->w_cursor.lnum != curwin->w_topline
***************
*** 1773,1779 ****
  	 * Compute the screen column where the cursor should be.
  	 */
  	vcol = get_indent() - vcol;
! 	curwin->w_virtcol = (vcol < 0) ? 0 : vcol;
  
  	/*
  	 * Advance the cursor until we reach the right screen column.
--- 1777,1783 ----
  	 * Compute the screen column where the cursor should be.
  	 */
  	vcol = get_indent() - vcol;
! 	curwin->w_virtcol = (colnr_T)((vcol < 0) ? 0 : vcol);
  
  	/*
  	 * Advance the cursor until we reach the right screen column.
***************
*** 1800,1808 ****
  	 */
  	if (vcol != (int)curwin->w_virtcol)
  	{
! 	    curwin->w_cursor.col = new_cursor_col;
  	    i = (int)curwin->w_virtcol - vcol;
! 	    ptr = alloc(i + 1);
  	    if (ptr != NULL)
  	    {
  		new_cursor_col += i;
--- 1804,1812 ----
  	 */
  	if (vcol != (int)curwin->w_virtcol)
  	{
! 	    curwin->w_cursor.col = (colnr_T)new_cursor_col;
  	    i = (int)curwin->w_virtcol - vcol;
! 	    ptr = alloc((unsigned)(i + 1));
  	    if (ptr != NULL)
  	    {
  		new_cursor_col += i;
***************
*** 1826,1832 ****
      if (new_cursor_col <= 0)
  	curwin->w_cursor.col = 0;
      else
! 	curwin->w_cursor.col = new_cursor_col;
      curwin->w_set_curswant = TRUE;
      changed_cline_bef_curs();
  
--- 1830,1836 ----
      if (new_cursor_col <= 0)
  	curwin->w_cursor.col = 0;
      else
! 	curwin->w_cursor.col = (colnr_T)new_cursor_col;
      curwin->w_set_curswant = TRUE;
      changed_cline_bef_curs();
  
***************
*** 1966,1972 ****
  #ifdef FEAT_MBYTE
      if (enc_utf8 && limit_col >= 0)
      {
! 	int ecol = curwin->w_cursor.col + 1;
  
  	/* Make sure the cursor is at the start of a character, but
  	 * skip forward again when going too far back because of a
--- 1970,1976 ----
  #ifdef FEAT_MBYTE
      if (enc_utf8 && limit_col >= 0)
      {
! 	colnr_T ecol = curwin->w_cursor.col + 1;
  
  	/* Make sure the cursor is at the start of a character, but
  	 * skip forward again when going too far back because of a
***************
*** 1982,1988 ****
  	}
  	if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
  	    return FALSE;
! 	del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
      }
      else
  #endif
--- 1986,1992 ----
  	}
  	if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
  	    return FALSE;
! 	del_bytes((long)((int)ecol - curwin->w_cursor.col), FALSE, TRUE);
      }
      else
  #endif
***************
*** 2201,2207 ****
  	    actual_compl_length = compl_length;
  
  	/* Allocate wide character array for the completion and fill it. */
! 	wca = (int *)alloc(actual_len * sizeof(int));
  	if (wca != NULL)
  	{
  	    p = str;
--- 2205,2211 ----
  	    actual_compl_length = compl_length;
  
  	/* Allocate wide character array for the completion and fill it. */
! 	wca = (int *)alloc((unsigned)(actual_len * sizeof(int)));
  	if (wca != NULL)
  	{
  	    p = str;
***************
*** 2580,2586 ****
   */
      void
  set_completion(startcol, list)
!     int	    startcol;
      list_T  *list;
  {
      /* If already doing completions stop it. */
--- 2584,2590 ----
   */
      void
  set_completion(startcol, list)
!     colnr_T startcol;
      list_T  *list;
  {
      /* If already doing completions stop it. */
***************
*** 2591,2600 ****
      if (stop_arrow() == FAIL)
  	return;
  
!     if (startcol > (int)curwin->w_cursor.col)
  	startcol = curwin->w_cursor.col;
      compl_col = startcol;
!     compl_length = curwin->w_cursor.col - startcol;
      /* compl_pattern doesn't need to be set */
      compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
      if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
--- 2595,2604 ----
      if (stop_arrow() == FAIL)
  	return;
  
!     if (startcol > curwin->w_cursor.col)
  	startcol = curwin->w_cursor.col;
      compl_col = startcol;
!     compl_length = (int)curwin->w_cursor.col - (int)startcol;
      /* compl_pattern doesn't need to be set */
      compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
      if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
***************
*** 2860,2866 ****
      regmatch_T	regmatch;
      char_u	**files;
      int		count;
-     int		i;
      int		save_p_scs;
      int		dir = compl_direction;
  
--- 2864,2869 ----
***************
*** 2892,2908 ****
      if (ctrl_x_mode == CTRL_X_WHOLE_LINE)
      {
  	char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
  
  	if (pat_esc == NULL)
  	    goto theend;
! 	i = (int)STRLEN(pat_esc) + 10;
! 	ptr = alloc(i);
  	if (ptr == NULL)
  	{
  	    vim_free(pat_esc);
  	    goto theend;
  	}
! 	vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc);
  	regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
  	vim_free(pat_esc);
  	vim_free(ptr);
--- 2895,2912 ----
      if (ctrl_x_mode == CTRL_X_WHOLE_LINE)
      {
  	char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
+ 	size_t len;
  
  	if (pat_esc == NULL)
  	    goto theend;
! 	len = STRLEN(pat_esc) + 10;
! 	ptr = alloc((unsigned)len);
  	if (ptr == NULL)
  	{
  	    vim_free(pat_esc);
  	    goto theend;
  	}
! 	vim_snprintf((char *)ptr, len, "^\\s*\\zs\\V%s", pat_esc);
  	regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
  	vim_free(pat_esc);
  	vim_free(ptr);
***************
*** 2993,2999 ****
  	{
  	    vim_snprintf((char *)IObuff, IOSIZE,
  			      _("Scanning dictionary: %s"), (char *)files[i]);
! 	    msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  	}
  
  	if (fp != NULL)
--- 2997,3003 ----
  	{
  	    vim_snprintf((char *)IObuff, IOSIZE,
  			      _("Scanning dictionary: %s"), (char *)files[i]);
! 	    (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  	}
  
  	if (fp != NULL)
***************
*** 3311,3317 ****
      static int
  ins_compl_len()
  {
!     int off = curwin->w_cursor.col - compl_col;
  
      if (off < 0)
  	return 0;
--- 3315,3321 ----
      static int
  ins_compl_len()
  {
!     int off = (int)curwin->w_cursor.col - (int)compl_col;
  
      if (off < 0)
  	return 0;
***************
*** 3347,3353 ****
  
      vim_free(compl_leader);
      compl_leader = vim_strnsave(ml_get_curline() + compl_col,
! 					    curwin->w_cursor.col - compl_col);
      if (compl_leader != NULL)
  	ins_compl_new_leader();
  }
--- 3351,3357 ----
  
      vim_free(compl_leader);
      compl_leader = vim_strnsave(ml_get_curline() + compl_col,
! 				     (int)(curwin->w_cursor.col - compl_col));
      if (compl_leader != NULL)
  	ins_compl_new_leader();
  }
***************
*** 3395,3401 ****
  ins_compl_addfrommatch()
  {
      char_u	*p;
!     int		len = curwin->w_cursor.col - compl_col;
      int		c;
      compl_T	*cp;
  
--- 3399,3405 ----
  ins_compl_addfrommatch()
  {
      char_u	*p;
!     int		len = (int)curwin->w_cursor.col - (int)compl_col;
      int		c;
      compl_T	*cp;
  
***************
*** 3961,3967 ****
  			    : ins_buf->b_sfname == NULL
  				? (char *)ins_buf->b_fname
  				: (char *)ins_buf->b_sfname);
! 		msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  	    }
  	    else if (*e_cpt == NUL)
  		break;
--- 3965,3971 ----
  			    : ins_buf->b_sfname == NULL
  				? (char *)ins_buf->b_fname
  				: (char *)ins_buf->b_sfname);
! 		(void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  	    }
  	    else if (*e_cpt == NUL)
  		break;
***************
*** 3991,3997 ****
  		{
  		    type = CTRL_X_TAGS;
  		    sprintf((char*)IObuff, _("Scanning tags."));
! 		    msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  		}
  		else
  		    type = -1;
--- 3995,4001 ----
  		{
  		    type = CTRL_X_TAGS;
  		    sprintf((char*)IObuff, _("Scanning tags."));
! 		    (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  		}
  		else
  		    type = -1;
***************
*** 6320,6326 ****
  	    ins_need_undo = FALSE;
  	}
  	Insstart = curwin->w_cursor;	/* new insertion starts here */
! 	Insstart_textlen = linetabsize(ml_get_curline());
  	ai_col = 0;
  #ifdef FEAT_VREPLACE
  	if (State & VREPLACE_FLAG)
--- 6324,6330 ----
  	    ins_need_undo = FALSE;
  	}
  	Insstart = curwin->w_cursor;	/* new insertion starts here */
! 	Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
  	ai_col = 0;
  #ifdef FEAT_VREPLACE
  	if (State & VREPLACE_FLAG)
*** ../vim-7.2.166/src/ex_cmds.c	2009-04-29 18:44:38.000000000 +0200
--- src/ex_cmds.c	2009-05-05 17:55:40.000000000 +0200
***************
*** 1789,1795 ****
  	 * overwrite a user's viminfo file after a "su root", with a
  	 * viminfo file that the user can't read.
  	 */
! 	st_old.st_dev = 0;
  	st_old.st_ino = 0;
  	st_old.st_mode = 0600;
  	if (mch_stat((char *)fname, &st_old) == 0
--- 1789,1795 ----
  	 * overwrite a user's viminfo file after a "su root", with a
  	 * viminfo file that the user can't read.
  	 */
! 	st_old.st_dev = (dev_t)0;
  	st_old.st_ino = 0;
  	st_old.st_mode = 0600;
  	if (mch_stat((char *)fname, &st_old) == 0
***************
*** 3715,3721 ****
      /* If the window options were changed may need to set the spell language.
       * Can only do this after the buffer has been properly setup. */
      if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
! 	did_set_spelllang(curbuf);
  #endif
  
      if (command == NULL)
--- 3715,3721 ----
      /* If the window options were changed may need to set the spell language.
       * Can only do this after the buffer has been properly setup. */
      if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
! 	(void)did_set_spelllang(curbuf);
  #endif
  
      if (command == NULL)
***************
*** 3788,3794 ****
  
  #ifdef FEAT_KEYMAP
      if (curbuf->b_kmap_state & KEYMAP_INIT)
! 	keymap_init();
  #endif
  
      --RedrawingDisabled;
--- 3788,3794 ----
  
  #ifdef FEAT_KEYMAP
      if (curbuf->b_kmap_state & KEYMAP_INIT)
! 	(void)keymap_init();
  #endif
  
      --RedrawingDisabled;
*** ../vim-7.2.166/src/globals.h	2009-03-05 03:13:51.000000000 +0100
--- src/globals.h	2009-05-09 21:14:49.000000000 +0200
***************
*** 524,530 ****
  EXTERN win_T	*prevwin INIT(= NULL);	/* previous window */
  # define W_NEXT(wp) ((wp)->w_next)
  # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
! #define FOR_ALL_TAB_WINDOWS(tp, wp) \
      for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
  	for ((wp) = ((tp) == curtab) \
  		? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
--- 524,530 ----
  EXTERN win_T	*prevwin INIT(= NULL);	/* previous window */
  # define W_NEXT(wp) ((wp)->w_next)
  # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
! # define FOR_ALL_TAB_WINDOWS(tp, wp) \
      for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
  	for ((wp) = ((tp) == curtab) \
  		? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
***************
*** 718,724 ****
  
  EXTERN pos_T	saved_cursor		/* w_cursor before formatting text. */
  # ifdef DO_INIT
! 	= INIT_POS_T
  # endif
  	;
  
--- 718,724 ----
  
  EXTERN pos_T	saved_cursor		/* w_cursor before formatting text. */
  # ifdef DO_INIT
! 	= INIT_POS_T(0, 0, 0)
  # endif
  	;
  
***************
*** 1039,1045 ****
  EXTERN int	did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
  EXTERN pos_T	last_cursormoved	    /* for CursorMoved event */
  # ifdef DO_INIT
! 			= INIT_POS_T
  # endif
  			;
  #endif
--- 1039,1045 ----
  EXTERN int	did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
  EXTERN pos_T	last_cursormoved	    /* for CursorMoved event */
  # ifdef DO_INIT
! 			= INIT_POS_T(0, 0, 0)
  # endif
  			;
  #endif
*** ../vim-7.2.166/src/ops.c	2009-04-29 17:39:17.000000000 +0200
--- src/ops.c	2009-05-13 12:41:02.000000000 +0200
***************
*** 6400,6406 ****
  	    {
  		getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
  								&max_pos.col);
! 		sprintf((char *)buf1, _("%ld Cols; "),
  			(long)(oparg.end_vcol - oparg.start_vcol + 1));
  	    }
  	    else
--- 6400,6406 ----
  	    {
  		getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
  								&max_pos.col);
! 		vim_snprintf((char *)buf1, sizeof(buf1), _("%ld Cols; "),
  			(long)(oparg.end_vcol - oparg.start_vcol + 1));
  	    }
  	    else
***************
*** 6408,6420 ****
  
  	    if (char_count_cursor == byte_count_cursor
  						  && char_count == byte_count)
! 		sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"),
  			buf1, line_count_selected,
  			(long)curbuf->b_ml.ml_line_count,
  			word_count_cursor, word_count,
  			byte_count_cursor, byte_count);
  	    else
! 		sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
  			buf1, line_count_selected,
  			(long)curbuf->b_ml.ml_line_count,
  			word_count_cursor, word_count,
--- 6408,6422 ----
  
  	    if (char_count_cursor == byte_count_cursor
  						  && char_count == byte_count)
! 		vim_snprintf((char *)IObuff, IOSIZE,
! 			_("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"),
  			buf1, line_count_selected,
  			(long)curbuf->b_ml.ml_line_count,
  			word_count_cursor, word_count,
  			byte_count_cursor, byte_count);
  	    else
! 		vim_snprintf((char *)IObuff, IOSIZE,
! 			_("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
  			buf1, line_count_selected,
  			(long)curbuf->b_ml.ml_line_count,
  			word_count_cursor, word_count,
***************
*** 6426,6445 ****
  	{
  	    p = ml_get_curline();
  	    validate_virtcol();
! 	    col_print(buf1, (int)curwin->w_cursor.col + 1,
  		    (int)curwin->w_virtcol + 1);
! 	    col_print(buf2, (int)STRLEN(p), linetabsize(p));
  
  	    if (char_count_cursor == byte_count_cursor
  		    && char_count == byte_count)
! 		sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"),
  		    (char *)buf1, (char *)buf2,
  		    (long)curwin->w_cursor.lnum,
  		    (long)curbuf->b_ml.ml_line_count,
  		    word_count_cursor, word_count,
  		    byte_count_cursor, byte_count);
  	    else
! 		sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
  		    (char *)buf1, (char *)buf2,
  		    (long)curwin->w_cursor.lnum,
  		    (long)curbuf->b_ml.ml_line_count,
--- 6428,6449 ----
  	{
  	    p = ml_get_curline();
  	    validate_virtcol();
! 	    col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1,
  		    (int)curwin->w_virtcol + 1);
! 	    col_print(buf2, sizeof(buf2), (int)STRLEN(p), linetabsize(p));
  
  	    if (char_count_cursor == byte_count_cursor
  		    && char_count == byte_count)
! 		vim_snprintf((char *)IObuff, IOSIZE,
! 		    _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"),
  		    (char *)buf1, (char *)buf2,
  		    (long)curwin->w_cursor.lnum,
  		    (long)curbuf->b_ml.ml_line_count,
  		    word_count_cursor, word_count,
  		    byte_count_cursor, byte_count);
  	    else
! 		vim_snprintf((char *)IObuff, IOSIZE,
! 		    _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
  		    (char *)buf1, (char *)buf2,
  		    (long)curwin->w_cursor.lnum,
  		    (long)curbuf->b_ml.ml_line_count,
*** ../vim-7.2.166/src/os_unix.c	2009-03-02 02:44:54.000000000 +0100
--- src/os_unix.c	2009-05-05 17:35:58.000000000 +0200
***************
*** 199,205 ****
  #endif
  
  #ifndef SIG_ERR
! # define SIG_ERR	((RETSIGTYPE (*)())-1)
  #endif
  
  /* volatile because it is used in signal handler sig_winch(). */
--- 199,207 ----
  #endif
  
  #ifndef SIG_ERR
! # ifndef S_SPLINT_S
! #  define SIG_ERR	((RETSIGTYPE (*)())-1)
! # endif
  #endif
  
  /* volatile because it is used in signal handler sig_winch(). */
***************
*** 441,447 ****
  
  #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
  # ifdef HAVE_SYS_RESOURCE_H
! #  include <sys/resource.h>
  # endif
  # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
  #  include <sys/sysctl.h>
--- 443,451 ----
  
  #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
  # ifdef HAVE_SYS_RESOURCE_H
! #  ifndef S_SPLINT_S  /* splint crashes on bits/resource.h */
! #   include <sys/resource.h>
! #  endif
  # endif
  # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
  #  include <sys/sysctl.h>
*** ../vim-7.2.166/src/os_unix.h	2008-06-20 18:06:36.000000000 +0200
--- src/os_unix.h	2009-05-05 17:07:45.000000000 +0200
***************
*** 53,59 ****
  #endif
  
  #ifdef HAVE_UNISTD_H
! # include <unistd.h>
  #endif
  
  #ifdef HAVE_LIBC_H
--- 53,61 ----
  #endif
  
  #ifdef HAVE_UNISTD_H
! # ifndef S_SPLINT_S  /* splint crashes on bits/confname.h */
! #  include <unistd.h>
! # endif
  #endif
  
  #ifdef HAVE_LIBC_H
*** ../vim-7.2.166/src/proto/buffer.pro	2008-11-15 14:10:23.000000000 +0100
--- src/proto/buffer.pro	2009-05-13 12:23:41.000000000 +0200
***************
*** 37,49 ****
  int otherfile __ARGS((char_u *ffname));
  void buf_setino __ARGS((buf_T *buf));
  void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
! void col_print __ARGS((char_u *buf, int col, int vcol));
  void maketitle __ARGS((void));
  void resettitle __ARGS((void));
  void free_titles __ARGS((void));
  int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
! void get_rel_pos __ARGS((win_T *wp, char_u *str));
! int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
  char_u *fix_fname __ARGS((char_u *fname));
  void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
  char_u *alist_name __ARGS((aentry_T *aep));
--- 37,48 ----
  int otherfile __ARGS((char_u *ffname));
  void buf_setino __ARGS((buf_T *buf));
  void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
! void col_print __ARGS((char_u *buf, size_t buflen, int col, int vcol));
  void maketitle __ARGS((void));
  void resettitle __ARGS((void));
  void free_titles __ARGS((void));
  int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
! void get_rel_pos __ARGS((win_T *wp, char_u *buf, int buflen));
  char_u *fix_fname __ARGS((char_u *fname));
  void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
  char_u *alist_name __ARGS((aentry_T *aep));
***************
*** 54,61 ****
  void write_viminfo_bufferlist __ARGS((FILE *fp));
  char *buf_spname __ARGS((buf_T *buf));
  void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
! int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
! int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
  linenr_T buf_delsign __ARGS((buf_T *buf, int id));
  int buf_findsign __ARGS((buf_T *buf, int id));
  int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
--- 53,60 ----
  void write_viminfo_bufferlist __ARGS((FILE *fp));
  char *buf_spname __ARGS((buf_T *buf));
  void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
! linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
! int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
  linenr_T buf_delsign __ARGS((buf_T *buf, int id));
  int buf_findsign __ARGS((buf_T *buf, int id));
  int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
*** ../vim-7.2.166/src/proto/edit.pro	2008-01-16 20:03:13.000000000 +0100
--- src/proto/edit.pro	2009-05-05 20:51:56.000000000 +0200
***************
*** 8,14 ****
  void backspace_until_column __ARGS((int col));
  int vim_is_ctrl_x_key __ARGS((int c));
  int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
! void set_completion __ARGS((int startcol, list_T *list));
  void ins_compl_show_pum __ARGS((void));
  char_u *find_word_start __ARGS((char_u *ptr));
  char_u *find_word_end __ARGS((char_u *ptr));
--- 8,14 ----
  void backspace_until_column __ARGS((int col));
  int vim_is_ctrl_x_key __ARGS((int c));
  int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
! void set_completion __ARGS((colnr_T startcol, list_T *list));
  void ins_compl_show_pum __ARGS((void));
  char_u *find_word_start __ARGS((char_u *ptr));
  char_u *find_word_end __ARGS((char_u *ptr));
*** ../vim-7.2.166/src/screen.c	2009-03-18 19:07:09.000000000 +0100
--- src/screen.c	2009-05-05 17:42:45.000000000 +0200
***************
*** 9481,9493 ****
      win_T	*wp;
      int		always;
  {
!     char_u	buffer[70];
      int		row;
      int		fillchar;
      int		attr;
      int		empty_line = FALSE;
      colnr_T	virtcol;
      int		i;
      int		o;
  #ifdef FEAT_VERTSPLIT
      int		this_ru_col;
--- 9481,9495 ----
      win_T	*wp;
      int		always;
  {
! #define RULER_BUF_LEN 70
!     char_u	buffer[RULER_BUF_LEN];
      int		row;
      int		fillchar;
      int		attr;
      int		empty_line = FALSE;
      colnr_T	virtcol;
      int		i;
+     size_t	len;
      int		o;
  #ifdef FEAT_VERTSPLIT
      int		this_ru_col;
***************
*** 9602,9612 ****
  	 * Some sprintfs return the length, some return a pointer.
  	 * To avoid portability problems we use strlen() here.
  	 */
! 	sprintf((char *)buffer, "%ld,",
  		(wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
  		    ? 0L
  		    : (long)(wp->w_cursor.lnum));
! 	col_print(buffer + STRLEN(buffer),
  			empty_line ? 0 : (int)wp->w_cursor.col + 1,
  			(int)virtcol + 1);
  
--- 9604,9615 ----
  	 * Some sprintfs return the length, some return a pointer.
  	 * To avoid portability problems we use strlen() here.
  	 */
! 	vim_snprintf((char *)buffer, RULER_BUF_LEN, "%ld,",
  		(wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
  		    ? 0L
  		    : (long)(wp->w_cursor.lnum));
! 	len = STRLEN(buffer);
! 	col_print(buffer + len, RULER_BUF_LEN - len,
  			empty_line ? 0 : (int)wp->w_cursor.col + 1,
  			(int)virtcol + 1);
  
***************
*** 9616,9622 ****
  	 * screen up on some terminals).
  	 */
  	i = (int)STRLEN(buffer);
! 	get_rel_pos(wp, buffer + i + 1);
  	o = i + vim_strsize(buffer + i + 1);
  #ifdef FEAT_WINDOWS
  	if (wp->w_status_height == 0)	/* can't use last char of screen */
--- 9619,9625 ----
  	 * screen up on some terminals).
  	 */
  	i = (int)STRLEN(buffer);
! 	get_rel_pos(wp, buffer + i + 1, RULER_BUF_LEN - i - 1);
  	o = i + vim_strsize(buffer + i + 1);
  #ifdef FEAT_WINDOWS
  	if (wp->w_status_height == 0)	/* can't use last char of screen */
***************
*** 9643,9649 ****
  		    buffer[i++] = fillchar;
  		++o;
  	    }
! 	    get_rel_pos(wp, buffer + i);
  	}
  	/* Truncate at window boundary. */
  #ifdef FEAT_MBYTE
--- 9646,9652 ----
  		    buffer[i++] = fillchar;
  		++o;
  	    }
! 	    get_rel_pos(wp, buffer + i, RULER_BUF_LEN - i);
  	}
  	/* Truncate at window boundary. */
  #ifdef FEAT_MBYTE
*** ../vim-7.2.166/src/structs.h	2008-11-15 16:05:30.000000000 +0100
--- src/structs.h	2009-05-05 18:20:36.000000000 +0200
***************
*** 33,41 ****
  } pos_T;
  
  #ifdef FEAT_VIRTUALEDIT
! # define INIT_POS_T {0, 0, 0}
  #else
! # define INIT_POS_T {0, 0}
  #endif
  
  /*
--- 33,41 ----
  } pos_T;
  
  #ifdef FEAT_VIRTUALEDIT
! # define INIT_POS_T(l, c, ca) {l, c, ca}
  #else
! # define INIT_POS_T(l, c, ca) {l, c}
  #endif
  
  /*
***************
*** 1166,1172 ****
      char_u	*b_fname;	/* current file name */
  
  #ifdef UNIX
!     int		b_dev;		/* device number (-1 if not set) */
      ino_t	b_ino;		/* inode number */
  #endif
  #ifdef FEAT_CW_EDITOR
--- 1166,1172 ----
      char_u	*b_fname;	/* current file name */
  
  #ifdef UNIX
!     dev_t	b_dev;		/* device number (-1 if not set) */
      ino_t	b_ino;		/* inode number */
  #endif
  #ifdef FEAT_CW_EDITOR
***************
*** 1645,1651 ****
--- 1645,1655 ----
  #endif
  #ifdef FEAT_DIFF
      diff_T	    *tp_first_diff;
+ # ifdef S_SPLINT_S  /* splint doesn't understand the array of pointers */
+     buf_T	    **tp_diffbuf;
+ # else
      buf_T	    *(tp_diffbuf[DB_COUNT]);
+ # endif
      int		    tp_diff_invalid;	/* list of diffs is outdated */
  #endif
      frame_T	    *tp_snapshot;    /* window layout snapshot */
*** ../vim-7.2.166/src/version.c	2009-04-29 18:44:38.000000000 +0200
--- src/version.c	2009-05-13 12:06:36.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     167,
  /**/

-- 
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.2.168 ---
To: vim-dev at vim.org
Subject: Patch 7.2.168
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.168
Problem:    When no ctags program can be found, "make tags" attempts to
	    execute the first C file.
Solution:   Default to "ctags" when no ctags program can be found.
Files:	    src/configure.in, src/auto/configure


*** ../vim-7.2.167/src/configure.in	2009-04-22 17:50:53.000000000 +0200
--- src/configure.in	2009-05-05 17:46:45.000000000 +0200
***************
*** 2968,2974 ****
  dnl Link with xpg4, it is said to make Korean locale working
  AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
  
! dnl Check how we can run ctags
  dnl --version for Exuberant ctags (preferred)
  dnl       Add --fields=+S to get function signatures for omni completion.
  dnl -t for typedefs (many ctags have this)
--- 2968,2974 ----
  dnl Link with xpg4, it is said to make Korean locale working
  AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
  
! dnl Check how we can run ctags.  Default to "ctags" when nothing works.
  dnl --version for Exuberant ctags (preferred)
  dnl       Add --fields=+S to get function signatures for omni completion.
  dnl -t for typedefs (many ctags have this)
***************
*** 2980,2985 ****
--- 2980,2986 ----
  if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
    TAGPRG="ctags -I INIT+ --fields=+S"
  else
+   TAGPRG="ctags"
    (eval etags	   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
    (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
    (eval ctags	   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
*** ../vim-7.2.167/src/auto/configure	2009-04-22 17:50:53.000000000 +0200
--- src/auto/configure	2009-05-13 14:38:10.000000000 +0200
***************
*** 15707,15712 ****
--- 15723,15729 ----
  if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
    TAGPRG="ctags -I INIT+ --fields=+S"
  else
+   TAGPRG="ctags"
    (eval etags	   /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags"
    (eval etags -c   /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags -c"
    (eval ctags	   /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="ctags"
*** ../vim-7.2.167/src/version.c	2009-05-13 12:46:36.000000000 +0200
--- src/version.c	2009-05-13 14:46:35.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     168,
  /**/

-- 
Zen Microsystems: we're the om in .commmmmmmmm

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


--- NEW FILE 7.2.169 ---
To: vim-dev at vim.org
Subject: Patch 7.2.169
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.169
Problem:    Splint complains about a lot of things.
Solution:   Add type casts, #ifdefs and other changes to avoid warnings.
	    Change colnr_T from unsigned to int.  Avoids mistakes with
	    subtracting columns.
Files:	    src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c,
	    src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro,
	    src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h,
	    src/term.h, src/vim.h


*** ../vim-7.2.168/src/cleanlint.vim	2009-05-13 12:46:36.000000000 +0200
--- src/cleanlint.vim	2009-05-13 18:03:11.000000000 +0200
***************
*** 1,27 ****
  " Vim tool: Filter output of splint
  "
  " Maintainer:	Bram Moolenaar <Bram at vim.org>
! " Last Change:	2009 May 05
  
  " Usage: redirect output of "make lint" to a file, edit that file with Vim and
  " :call CleanLint()
  " This deletes irrelevant messages.  What remains might be valid warnings.
  
  fun! CleanLint()
-   g/^  Types are incompatible/lockmarks d
    g/Assignment of dev_t to __dev_t:/lockmarks d
    g/Assignment of __dev_t to dev_t:/lockmarks d
    g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
!   g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
    g/Assignment of char to char_u: /lockmarks d
    g/Assignment of unsigned int to int: /lockmarks d
!   g/Assignment of colnr_T to int: /lockmarks d
    g/Assignment of int to char_u: /lockmarks d
    g/Function .* expects arg . to be wint_t gets int: /lockmarks d
!   g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
    g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
    g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
    g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
    g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
    g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
  endfun
--- 1,32 ----
  " Vim tool: Filter output of splint
  "
  " Maintainer:	Bram Moolenaar <Bram at vim.org>
! " Last Change:	2009 May 13
  
  " Usage: redirect output of "make lint" to a file, edit that file with Vim and
  " :call CleanLint()
  " This deletes irrelevant messages.  What remains might be valid warnings.
  
  fun! CleanLint()
    g/Assignment of dev_t to __dev_t:/lockmarks d
    g/Assignment of __dev_t to dev_t:/lockmarks d
    g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
!   g/Operands of == have incompatible types (char_u, int): /lockmarks d
    g/Assignment of char to char_u: /lockmarks d
    g/Assignment of unsigned int to int: /lockmarks d
!   g/Assignment of int to unsigned int: /lockmarks d
!   g/Assignment of unsigned int to long int: /lockmarks d
    g/Assignment of int to char_u: /lockmarks d
    g/Function .* expects arg . to be wint_t gets int: /lockmarks d
!   g/Function .* expects arg . to be size_t gets int: /lockmarks d
!   g/Initial value of .* is type char, expects char_u: /lockmarks d
!   g/^ex_cmds.h:.* Function types are inconsistent. Parameter 1 is implicitly temp, but unqualified in assigned function:/lockmarks d
!   g/^ex_docmd.c:.* nospec_str/lockmarks d
    g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
    g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
+   g/^  Types are incompatible/lockmarks d
    g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
    g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
    g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
+   g+ A variable is declared but never used. Use /. at unused@./ in front of declaration to suppress message.+lockmarks d
  endfun
*** ../vim-7.2.168/src/diff.c	2009-03-11 12:45:44.000000000 +0100
--- src/diff.c	2009-05-13 16:16:11.000000000 +0200
***************
*** 827,832 ****
--- 827,833 ----
      char_u	*tmp_diff;
  {
      char_u	*cmd;
+     size_t	len;
  
  #ifdef FEAT_EVAL
      if (*p_dex != NUL)
***************
*** 835,842 ****
      else
  #endif
      {
! 	cmd = alloc((unsigned)(STRLEN(tmp_orig) + STRLEN(tmp_new)
! 				+ STRLEN(tmp_diff) + STRLEN(p_srr) + 27));
  	if (cmd != NULL)
  	{
  	    /* We don't want $DIFF_OPTIONS to get in the way. */
--- 836,844 ----
      else
  #endif
      {
! 	len = STRLEN(tmp_orig) + STRLEN(tmp_new)
! 				      + STRLEN(tmp_diff) + STRLEN(p_srr) + 27;
! 	cmd = alloc((unsigned)len);
  	if (cmd != NULL)
  	{
  	    /* We don't want $DIFF_OPTIONS to get in the way. */
***************
*** 846,852 ****
  	    /* Build the diff command and execute it.  Always use -a, binary
  	     * differences are of no use.  Ignore errors, diff returns
  	     * non-zero when differences have been found. */
! 	    sprintf((char *)cmd, "diff %s%s%s%s%s %s",
  		    diff_a_works == FALSE ? "" : "-a ",
  #if defined(MSWIN) || defined(MSDOS)
  		    diff_bin_works == TRUE ? "--binary " : "",
--- 848,854 ----
  	    /* Build the diff command and execute it.  Always use -a, binary
  	     * differences are of no use.  Ignore errors, diff returns
  	     * non-zero when differences have been found. */
! 	    vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s %s",
  		    diff_a_works == FALSE ? "" : "-a ",
  #if defined(MSWIN) || defined(MSDOS)
  		    diff_bin_works == TRUE ? "--binary " : "",
***************
*** 856,862 ****
  		    (diff_flags & DIFF_IWHITE) ? "-b " : "",
  		    (diff_flags & DIFF_ICASE) ? "-i " : "",
  		    tmp_orig, tmp_new);
! 	    append_redir(cmd, p_srr, tmp_diff);
  #ifdef FEAT_AUTOCMD
  	    block_autocmds();	/* Avoid ShellCmdPost stuff */
  #endif
--- 858,864 ----
  		    (diff_flags & DIFF_IWHITE) ? "-b " : "",
  		    (diff_flags & DIFF_ICASE) ? "-i " : "",
  		    tmp_orig, tmp_new);
! 	    append_redir(cmd, (int)len, p_srr, tmp_diff);
  #ifdef FEAT_AUTOCMD
  	    block_autocmds();	/* Avoid ShellCmdPost stuff */
  #endif
***************
*** 881,886 ****
--- 883,889 ----
      char_u	*tmp_orig;	/* name of original temp file */
      char_u	*tmp_new;	/* name of patched temp file */
      char_u	*buf = NULL;
+     size_t	buflen;
      win_T	*old_curwin = curwin;
      char_u	*newname = NULL;	/* name of patched file buffer */
  #ifdef UNIX
***************
*** 920,930 ****
      /* Get the absolute path of the patchfile, changing directory below. */
      fullname = FullName_save(eap->arg, FALSE);
  #endif
!     buf = alloc((unsigned)(STRLEN(tmp_orig) + (
  # ifdef UNIX
  		    fullname != NULL ? STRLEN(fullname) :
  # endif
! 		    STRLEN(eap->arg)) + STRLEN(tmp_new) + 16));
      if (buf == NULL)
  	goto theend;
  
--- 923,934 ----
      /* Get the absolute path of the patchfile, changing directory below. */
      fullname = FullName_save(eap->arg, FALSE);
  #endif
!     buflen = STRLEN(tmp_orig) + (
  # ifdef UNIX
  		    fullname != NULL ? STRLEN(fullname) :
  # endif
! 		    STRLEN(eap->arg)) + STRLEN(tmp_new) + 16;
!     buf = alloc((unsigned)buflen);
      if (buf == NULL)
  	goto theend;
  
***************
*** 961,967 ****
      {
  	/* Build the patch command and execute it.  Ignore errors.  Switch to
  	 * cooked mode to allow the user to respond to prompts. */
! 	sprintf((char *)buf, "patch -o %s %s < \"%s\"", tmp_new, tmp_orig,
  # ifdef UNIX
  		fullname != NULL ? fullname :
  # endif
--- 965,972 ----
      {
  	/* Build the patch command and execute it.  Ignore errors.  Switch to
  	 * cooked mode to allow the user to respond to prompts. */
! 	vim_snprintf((char *)buf, buflen, "patch -o %s %s < \"%s\"",
! 		tmp_new, tmp_orig,
  # ifdef UNIX
  		fullname != NULL ? fullname :
  # endif
*** ../vim-7.2.168/src/edit.c	2009-05-13 12:46:36.000000000 +0200
--- src/edit.c	2009-05-13 18:29:21.000000000 +0200
***************
*** 169,175 ****
  static int  ins_compl_key2count __ARGS((int c));
  static int  ins_compl_use_match __ARGS((int c));
  static int  ins_complete __ARGS((int c));
! static int  quote_meta __ARGS((char_u *dest, char_u *str, int len));
  #endif /* FEAT_INS_EXPAND */
  
  #define BACKSPACE_CHAR		    1
--- 169,175 ----
  static int  ins_compl_key2count __ARGS((int c));
  static int  ins_compl_use_match __ARGS((int c));
  static int  ins_complete __ARGS((int c));
! static unsigned  quote_meta __ARGS((char_u *dest, char_u *str, int len));
  #endif /* FEAT_INS_EXPAND */
  
  #define BACKSPACE_CHAR		    1
***************
*** 757,763 ****
  		 * there is nothing to add, CTRL-L works like CTRL-P then. */
  		if (c == Ctrl_L
  			&& (ctrl_x_mode != CTRL_X_WHOLE_LINE
! 			    || STRLEN(compl_shown_match->cp_str)
  					  > curwin->w_cursor.col - compl_col))
  		{
  		    ins_compl_addfrommatch();
--- 757,763 ----
  		 * there is nothing to add, CTRL-L works like CTRL-P then. */
  		if (c == Ctrl_L
  			&& (ctrl_x_mode != CTRL_X_WHOLE_LINE
! 			    || (int)STRLEN(compl_shown_match->cp_str)
  					  > curwin->w_cursor.col - compl_col))
  		{
  		    ins_compl_addfrommatch();
***************
*** 3837,3843 ****
--- 3837,3847 ----
      char_u	*word;
      int		icase = FALSE;
      int		adup = FALSE;
+ #ifdef S_SPLINT_S  /* splint doesn't parse array of pointers correctly */
+     char_u	**cptext;
+ #else
      char_u	*(cptext[CPT_COUNT]);
+ #endif
  
      if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
      {
***************
*** 3994,4000 ****
  		else if (*e_cpt == ']' || *e_cpt == 't')
  		{
  		    type = CTRL_X_TAGS;
! 		    sprintf((char*)IObuff, _("Scanning tags."));
  		    (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  		}
  		else
--- 3998,4004 ----
  		else if (*e_cpt == ']' || *e_cpt == 't')
  		{
  		    type = CTRL_X_TAGS;
! 		    vim_snprintf((char *)IObuff, IOSIZE, _("Scanning tags."));
  		    (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  		}
  		else
***************
*** 4093,4099 ****
  	case CTRL_X_SPELL:
  #ifdef FEAT_SPELL
  	    num_matches = expand_spelling(first_match_pos.lnum,
! 				 first_match_pos.col, compl_pattern, &matches);
  	    if (num_matches > 0)
  		ins_compl_add_matches(num_matches, matches, p_ic);
  #endif
--- 4097,4103 ----
  	case CTRL_X_SPELL:
  #ifdef FEAT_SPELL
  	    num_matches = expand_spelling(first_match_pos.lnum,
! 						     compl_pattern, &matches);
  	    if (num_matches > 0)
  		ins_compl_add_matches(num_matches, matches, p_ic);
  #endif
***************
*** 4803,4812 ****
  	    {
  		char_u	    *prefix = (char_u *)"\\<";
  
! 		/* we need 3 extra chars, 1 for the NUL and
! 		 * 2 >= strlen(prefix)	-- Acevedo */
  		compl_pattern = alloc(quote_meta(NULL, line + compl_col,
! 							   compl_length) + 3);
  		if (compl_pattern == NULL)
  		    return FAIL;
  		if (!vim_iswordp(line + compl_col)
--- 4807,4815 ----
  	    {
  		char_u	    *prefix = (char_u *)"\\<";
  
! 		/* we need up to 2 extra chars for the prefix */
  		compl_pattern = alloc(quote_meta(NULL, line + compl_col,
! 							   compl_length) + 2);
  		if (compl_pattern == NULL)
  		    return FAIL;
  		if (!vim_iswordp(line + compl_col)
***************
*** 4881,4887 ****
  		else
  		{
  		    compl_pattern = alloc(quote_meta(NULL, line + compl_col,
! 							   compl_length) + 3);
  		    if (compl_pattern == NULL)
  			return FAIL;
  		    STRCPY((char *)compl_pattern, "\\<");
--- 4884,4890 ----
  		else
  		{
  		    compl_pattern = alloc(quote_meta(NULL, line + compl_col,
! 							   compl_length) + 2);
  		    if (compl_pattern == NULL)
  			return FAIL;
  		    STRCPY((char *)compl_pattern, "\\<");
***************
*** 4963,4969 ****
  	    if (col < 0)
  		col = curs_col;
  	    compl_col = col;
! 	    if ((colnr_T)compl_col > curs_col)
  		compl_col = curs_col;
  
  	    /* Setup variables for completion.  Need to obtain "line" again,
--- 4966,4972 ----
  	    if (col < 0)
  		col = curs_col;
  	    compl_col = col;
! 	    if (compl_col > curs_col)
  		compl_col = curs_col;
  
  	    /* Setup variables for completion.  Need to obtain "line" again,
***************
*** 5236,5250 ****
   * a backslash) the metachars, and dest would be NUL terminated.
   * Returns the length (needed) of dest
   */
!     static int
  quote_meta(dest, src, len)
      char_u	*dest;
      char_u	*src;
      int		len;
  {
!     int	m;
  
!     for (m = len; --len >= 0; src++)
      {
  	switch (*src)
  	{
--- 5239,5253 ----
   * a backslash) the metachars, and dest would be NUL terminated.
   * Returns the length (needed) of dest
   */
!     static unsigned
  quote_meta(dest, src, len)
      char_u	*dest;
      char_u	*src;
      int		len;
  {
!     unsigned	m = (unsigned)len + 1;  /* one extra for the NUL */
  
!     for ( ; --len >= 0; src++)
      {
  	switch (*src)
  	{
***************
*** 6073,6079 ****
       * in 'formatoptions' and there is a single character before the cursor.
       * Otherwise the line would be broken and when typing another non-white
       * next they are not joined back together. */
!     wasatend = (pos.col == STRLEN(old));
      if (*old != NUL && !trailblank && wasatend)
      {
  	dec_cursor();
--- 6076,6082 ----
       * in 'formatoptions' and there is a single character before the cursor.
       * Otherwise the line would be broken and when typing another non-white
       * next they are not joined back together. */
!     wasatend = (pos.col == (colnr_T)STRLEN(old));
      if (*old != NUL && !trailblank && wasatend)
      {
  	dec_cursor();
***************
*** 6250,6256 ****
       * three digits. */
      if (VIM_ISDIGIT(c))
      {
! 	sprintf((char *)buf, "%03d", c);
  	AppendToRedobuff(buf);
      }
      else
--- 6253,6259 ----
       * three digits. */
      if (VIM_ISDIGIT(c))
      {
! 	vim_snprintf((char *)buf, sizeof(buf), "%03d", c);
  	AppendToRedobuff(buf);
      }
      else
***************
*** 6453,6462 ****
  	     * deleted characters. */
  	    if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
  	    {
! 		cc = (int)STRLEN(ml_get_curline());
! 		if (VIsual.col > (colnr_T)cc)
  		{
! 		    VIsual.col = cc;
  # ifdef FEAT_VIRTUALEDIT
  		    VIsual.coladd = 0;
  # endif
--- 6457,6467 ----
  	     * deleted characters. */
  	    if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
  	    {
! 		int len = (int)STRLEN(ml_get_curline());
! 
! 		if (VIsual.col > len)
  		{
! 		    VIsual.col = len;
  # ifdef FEAT_VIRTUALEDIT
  		    VIsual.coladd = 0;
  # endif
***************
*** 8315,8320 ****
--- 8320,8326 ----
      linenr_T	lnum;
      int		cc;
      int		temp = 0;	    /* init for GCC */
+     colnr_T	save_col;
      colnr_T	mincol;
      int		did_backspace = FALSE;
      int		in_indent;
***************
*** 8472,8484 ****
  		 */
  		while (cc > 0)
  		{
! 		    temp = curwin->w_cursor.col;
  #ifdef FEAT_MBYTE
  		    mb_replace_pop_ins(cc);
  #else
  		    ins_char(cc);
  #endif
! 		    curwin->w_cursor.col = temp;
  		    cc = replace_pop();
  		}
  		/* restore the characters that NL replaced */
--- 8478,8490 ----
  		 */
  		while (cc > 0)
  		{
! 		    save_col = curwin->w_cursor.col;
  #ifdef FEAT_MBYTE
  		    mb_replace_pop_ins(cc);
  #else
  		    ins_char(cc);
  #endif
! 		    curwin->w_cursor.col = save_col;
  		    cc = replace_pop();
  		}
  		/* restore the characters that NL replaced */
***************
*** 8510,8520 ****
  #endif
  			    )
  	{
! 	    temp = curwin->w_cursor.col;
  	    beginline(BL_WHITE);
  	    if (curwin->w_cursor.col < (colnr_T)temp)
  		mincol = curwin->w_cursor.col;
! 	    curwin->w_cursor.col = temp;
  	}
  
  	/*
--- 8516,8526 ----
  #endif
  			    )
  	{
! 	    save_col = curwin->w_cursor.col;
  	    beginline(BL_WHITE);
  	    if (curwin->w_cursor.col < (colnr_T)temp)
  		mincol = curwin->w_cursor.col;
! 	    curwin->w_cursor.col = save_col;
  	}
  
  	/*
*** ../vim-7.2.168/src/ex_cmds.c	2009-05-13 12:46:36.000000000 +0200
--- src/ex_cmds.c	2009-05-13 18:24:18.000000000 +0200
***************
*** 87,99 ****
  			       ))
  	{
  	    transchar_nonprint(buf3, c);
! 	    sprintf(buf1, "  <%s>", (char *)buf3);
  	}
  	else
  	    buf1[0] = NUL;
  #ifndef EBCDIC
  	if (c >= 0x80)
! 	    sprintf(buf2, "  <M-%s>", transchar(c & 0x7f));
  	else
  #endif
  	    buf2[0] = NUL;
--- 87,100 ----
  			       ))
  	{
  	    transchar_nonprint(buf3, c);
! 	    vim_snprintf(buf1, sizeof(buf1), "  <%s>", (char *)buf3);
  	}
  	else
  	    buf1[0] = NUL;
  #ifndef EBCDIC
  	if (c >= 0x80)
! 	    vim_snprintf(buf2, sizeof(buf2), "  <M-%s>",
! 						 (char *)transchar(c & 0x7f));
  	else
  #endif
  	    buf2[0] = NUL;
***************
*** 358,364 ****
      linenr_T	lnum;
      long	maxlen = 0;
      sorti_T	*nrs;
!     size_t	count = eap->line2 - eap->line1 + 1;
      size_t	i;
      char_u	*p;
      char_u	*s;
--- 359,365 ----
      linenr_T	lnum;
      long	maxlen = 0;
      sorti_T	*nrs;
!     size_t	count = (size_t)(eap->line2 - eap->line1 + 1);
      size_t	i;
      char_u	*p;
      char_u	*s;
***************
*** 957,963 ****
  	    }
  	    len += (int)STRLEN(prevcmd);
  	}
! 	if ((t = alloc(len)) == NULL)
  	{
  	    vim_free(newcmd);
  	    return;
--- 958,964 ----
  	    }
  	    len += (int)STRLEN(prevcmd);
  	}
! 	if ((t = alloc((unsigned)len)) == NULL)
  	{
  	    vim_free(newcmd);
  	    return;
***************
*** 1548,1554 ****
       * redirecting input and/or output.
       */
      if (itmp != NULL || otmp != NULL)
! 	sprintf((char *)buf, "(%s)", (char *)cmd);
      else
  	STRCPY(buf, cmd);
      if (itmp != NULL)
--- 1549,1555 ----
       * redirecting input and/or output.
       */
      if (itmp != NULL || otmp != NULL)
! 	vim_snprintf((char *)buf, len, "(%s)", (char *)cmd);
      else
  	STRCPY(buf, cmd);
      if (itmp != NULL)
***************
*** 1597,1633 ****
      }
  #endif
      if (otmp != NULL)
! 	append_redir(buf, p_srr, otmp);
  
      return buf;
  }
  
  /*
!  * Append output redirection for file "fname" to the end of string buffer "buf"
   * Works with the 'shellredir' and 'shellpipe' options.
   * The caller should make sure that there is enough room:
   *	STRLEN(opt) + STRLEN(fname) + 3
   */
      void
! append_redir(buf, opt, fname)
      char_u	*buf;
      char_u	*opt;
      char_u	*fname;
  {
      char_u	*p;
  
!     buf += STRLEN(buf);
      /* find "%s", skipping "%%" */
      for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
  	if (p[1] == 's')
  	    break;
      if (p != NULL)
      {
! 	*buf = ' '; /* not really needed? Not with sh, ksh or bash */
! 	sprintf((char *)buf + 1, (char *)opt, (char *)fname);
      }
      else
! 	sprintf((char *)buf,
  #ifdef FEAT_QUICKFIX
  # ifndef RISCOS
  		opt != p_sp ? " %s%s" :
--- 1598,1638 ----
      }
  #endif
      if (otmp != NULL)
! 	append_redir(buf, (int)len, p_srr, otmp);
  
      return buf;
  }
  
  /*
!  * Append output redirection for file "fname" to the end of string buffer
!  * "buf[buflen]"
   * Works with the 'shellredir' and 'shellpipe' options.
   * The caller should make sure that there is enough room:
   *	STRLEN(opt) + STRLEN(fname) + 3
   */
      void
! append_redir(buf, buflen, opt, fname)
      char_u	*buf;
+     int		buflen;
      char_u	*opt;
      char_u	*fname;
  {
      char_u	*p;
+     char_u	*end;
  
!     end = buf + STRLEN(buf);
      /* find "%s", skipping "%%" */
      for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
  	if (p[1] == 's')
  	    break;
      if (p != NULL)
      {
! 	*end = ' '; /* not really needed? Not with sh, ksh or bash */
! 	vim_snprintf((char *)end + 1, (size_t)(buflen - (end + 1 - buf)),
! 						  (char *)opt, (char *)fname);
      }
      else
! 	vim_snprintf((char *)end, (size_t)(buflen - (end - buf)),
  #ifdef FEAT_QUICKFIX
  # ifndef RISCOS
  		opt != p_sp ? " %s%s" :
***************
*** 2390,2396 ****
  
      if (curwin->w_p_nu || use_number)
      {
! 	sprintf((char *)numbuf, "%*ld ", number_width(curwin), (long)lnum);
  	msg_puts_attr(numbuf, hl_attr(HLF_N));	/* Highlight line nrs */
      }
      msg_prt_line(ml_get(lnum), list);
--- 2395,2402 ----
  
      if (curwin->w_p_nu || use_number)
      {
! 	vim_snprintf((char *)numbuf, sizeof(numbuf),
! 				   "%*ld ", number_width(curwin), (long)lnum);
  	msg_puts_attr(numbuf, hl_attr(HLF_N));	/* Highlight line nrs */
      }
      msg_prt_line(ml_get(lnum), list);
***************
*** 4486,4492 ****
  	    char_u	*p1;
  	    int		did_sub = FALSE;
  	    int		lastone;
! 	    unsigned	len, needed_len;
  	    long	nmatch_tl = 0;	/* nr of lines matched below lnum */
  	    int		do_again;	/* do it again after joining lines */
  	    int		skip_match = FALSE;
--- 4492,4498 ----
  	    char_u	*p1;
  	    int		did_sub = FALSE;
  	    int		lastone;
! 	    int		len, copy_len, needed_len;
  	    long	nmatch_tl = 0;	/* nr of lines matched below lnum */
  	    int		do_again;	/* do it again after joining lines */
  	    int		skip_match = FALSE;
***************
*** 4631,4636 ****
--- 4637,4644 ----
  
  		if (do_ask)
  		{
+ 		    int typed;
+ 
  		    /* change State to CONFIRM, so that the mouse works
  		     * properly */
  		    save_State = State;
***************
*** 4669,4675 ****
  			    resp = getexmodeline('?', NULL, 0);
  			    if (resp != NULL)
  			    {
! 				i = *resp;
  				vim_free(resp);
  			    }
  			}
--- 4677,4683 ----
  			    resp = getexmodeline('?', NULL, 0);
  			    if (resp != NULL)
  			    {
! 				typed = *resp;
  				vim_free(resp);
  			    }
  			}
***************
*** 4721,4727 ****
  #endif
  			    ++no_mapping;	/* don't map this key */
  			    ++allow_keys;	/* allow special keys */
! 			    i = plain_vgetc();
  			    --allow_keys;
  			    --no_mapping;
  
--- 4729,4735 ----
  #endif
  			    ++no_mapping;	/* don't map this key */
  			    ++allow_keys;	/* allow special keys */
! 			    typed = plain_vgetc();
  			    --allow_keys;
  			    --no_mapping;
  
***************
*** 4732,4766 ****
  			}
  
  			need_wait_return = FALSE; /* no hit-return prompt */
! 			if (i == 'q' || i == ESC || i == Ctrl_C
  #ifdef UNIX
! 				|| i == intr_char
  #endif
  				)
  			{
  			    got_quit = TRUE;
  			    break;
  			}
! 			if (i == 'n')
  			    break;
! 			if (i == 'y')
  			    break;
! 			if (i == 'l')
  			{
  			    /* last: replace and then stop */
  			    do_all = FALSE;
  			    line2 = lnum;
  			    break;
  			}
! 			if (i == 'a')
  			{
  			    do_ask = FALSE;
  			    break;
  			}
  #ifdef FEAT_INS_EXPAND
! 			if (i == Ctrl_E)
  			    scrollup_clamp();
! 			else if (i == Ctrl_Y)
  			    scrolldown_clamp();
  #endif
  		    }
--- 4740,4774 ----
  			}
  
  			need_wait_return = FALSE; /* no hit-return prompt */
! 			if (typed == 'q' || typed == ESC || typed == Ctrl_C
  #ifdef UNIX
! 				|| typed == intr_char
  #endif
  				)
  			{
  			    got_quit = TRUE;
  			    break;
  			}
! 			if (typed == 'n')
  			    break;
! 			if (typed == 'y')
  			    break;
! 			if (typed == 'l')
  			{
  			    /* last: replace and then stop */
  			    do_all = FALSE;
  			    line2 = lnum;
  			    break;
  			}
! 			if (typed == 'a')
  			{
  			    do_ask = FALSE;
  			    break;
  			}
  #ifdef FEAT_INS_EXPAND
! 			if (typed == Ctrl_E)
  			    scrollup_clamp();
! 			else if (typed == Ctrl_Y)
  			    scrolldown_clamp();
  #endif
  		    }
***************
*** 4771,4777 ****
  		    if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
  			--no_u_sync;
  
! 		    if (i == 'n')
  		    {
  			/* For a multi-line match, put matchcol at the NUL at
  			 * the end of the line and set nmatch to one, so that
--- 4779,4785 ----
  		    if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
  			--no_u_sync;
  
! 		    if (typed == 'n')
  		    {
  			/* For a multi-line match, put matchcol at the NUL at
  			 * the end of the line and set nmatch to one, so that
***************
*** 4822,4830 ****
  		    p1 = ml_get(sub_firstlnum + nmatch - 1);
  		    nmatch_tl += nmatch - 1;
  		}
! 		i = regmatch.startpos[0].col - copycol;
! 		needed_len = i + ((unsigned)STRLEN(p1) - regmatch.endpos[0].col)
! 								 + sublen + 1;
  		if (new_start == NULL)
  		{
  		    /*
--- 4830,4838 ----
  		    p1 = ml_get(sub_firstlnum + nmatch - 1);
  		    nmatch_tl += nmatch - 1;
  		}
! 		copy_len = regmatch.startpos[0].col - copycol;
! 		needed_len = copy_len + ((unsigned)STRLEN(p1)
! 				       - regmatch.endpos[0].col) + sublen + 1;
  		if (new_start == NULL)
  		{
  		    /*
***************
*** 4847,4853 ****
  		     */
  		    len = (unsigned)STRLEN(new_start);
  		    needed_len += len;
! 		    if (needed_len > new_start_len)
  		    {
  			new_start_len = needed_len + 50;
  			if ((p1 = alloc_check(new_start_len)) == NULL)
--- 4855,4861 ----
  		     */
  		    len = (unsigned)STRLEN(new_start);
  		    needed_len += len;
! 		    if (needed_len > (int)new_start_len)
  		    {
  			new_start_len = needed_len + 50;
  			if ((p1 = alloc_check(new_start_len)) == NULL)
***************
*** 4865,4872 ****
  		/*
  		 * copy the text up to the part that matched
  		 */
! 		mch_memmove(new_end, sub_firstline + copycol, (size_t)i);
! 		new_end += i;
  
  		(void)vim_regsub_multi(&regmatch,
  				    sub_firstlnum - regmatch.startpos[0].lnum,
--- 4873,4880 ----
  		/*
  		 * copy the text up to the part that matched
  		 */
! 		mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
! 		new_end += copy_len;
  
  		(void)vim_regsub_multi(&regmatch,
  				    sub_firstlnum - regmatch.startpos[0].lnum,
***************
*** 5768,5773 ****
--- 5776,5785 ----
  {
      char_u	*s, *d;
      int		i;
+ #ifdef S_SPLINT_S  /* splint doesn't understand array of pointers */
+     static char **mtable;
+     static char **rtable;
+ #else
      static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
  			       "/*", "/\\*", "\"*", "**",
  			       "/\\(\\)",
***************
*** 5782,5787 ****
--- 5794,5800 ----
  			       "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
  			       "\\[count]", "\\[quotex]", "\\[range]",
  			       "\\[pattern]", "\\\\bar", "/\\\\%\\$"};
+ #endif
      int flags;
  
      d = IObuff;		    /* assume IObuff is long enough! */
***************
*** 5790,5796 ****
       * Recognize a few exceptions to the rule.	Some strings that contain '*'
       * with "star".  Otherwise '*' is recognized as a wildcard.
       */
!     for (i = sizeof(mtable) / sizeof(char *); --i >= 0; )
  	if (STRCMP(arg, mtable[i]) == 0)
  	{
  	    STRCPY(d, rtable[i]);
--- 5803,5809 ----
       * Recognize a few exceptions to the rule.	Some strings that contain '*'
       * with "star".  Otherwise '*' is recognized as a wildcard.
       */
!     for (i = (int)(sizeof(mtable) / sizeof(char *)); --i >= 0; )
  	if (STRCMP(arg, mtable[i]) == 0)
  	{
  	    STRCPY(d, rtable[i]);
*** ../vim-7.2.168/src/ex_cmds2.c	2009-02-05 20:47:14.000000000 +0100
--- src/ex_cmds2.c	2009-05-13 16:22:33.000000000 +0200
***************
*** 3373,3379 ****
  	    p = skipwhite(sp->nextline);
  	    if (*p != '\\')
  		break;
! 	    s = alloc((int)(STRLEN(line) + STRLEN(p)));
  	    if (s == NULL)	/* out of memory */
  		break;
  	    STRCPY(s, line);
--- 3373,3379 ----
  	    p = skipwhite(sp->nextline);
  	    if (*p != '\\')
  		break;
! 	    s = alloc((unsigned)(STRLEN(line) + STRLEN(p)));
  	    if (s == NULL)	/* out of memory */
  		break;
  	    STRCPY(s, line);
*** ../vim-7.2.168/src/ex_docmd.c	2009-04-29 18:44:38.000000000 +0200
--- src/ex_docmd.c	2009-05-13 17:56:44.000000000 +0200
***************
*** 2737,2743 ****
      int		i;
  
      for (i = 0; cmd[i] != NUL; ++i)
! 	if (cmd[i] != (*pp)[i])
  	    break;
      if (i >= len && !isalpha((*pp)[i]))
      {
--- 2737,2743 ----
      int		i;
  
      for (i = 0; cmd[i] != NUL; ++i)
! 	if (((char_u *)cmd)[i] != (*pp)[i])
  	    break;
      if (i >= len && !isalpha((*pp)[i]))
      {
***************
*** 2803,2809 ****
  	    /* Check for ":dl", ":dell", etc. to ":deletel": that's
  	     * :delete with the 'l' flag.  Same for 'p'. */
  	    for (i = 0; i < len; ++i)
! 		if (eap->cmd[i] != "delete"[i])
  		    break;
  	    if (i == len - 1)
  	    {
--- 2803,2809 ----
  	    /* Check for ":dl", ":dell", etc. to ":deletel": that's
  	     * :delete with the 'l' flag.  Same for 'p'. */
  	    for (i = 0; i < len; ++i)
! 		if (eap->cmd[i] != ((char_u *)"delete")[i])
  		    break;
  	    if (i == len - 1)
  	    {
***************
*** 3823,3829 ****
      char_u	*cmd;
      int		*ctx;	/* pointer to xp_context or NULL */
  {
!     int		delim;
  
      while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
      {
--- 3823,3829 ----
      char_u	*cmd;
      int		*ctx;	/* pointer to xp_context or NULL */
  {
!     unsigned	delim;
  
      while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
      {
***************
*** 9417,9423 ****
  {
      int		len;
      int		i;
!     static char *(spec_str[]) = {
  		    "%",
  #define SPEC_PERC   0
  		    "#",
--- 9417,9429 ----
  {
      int		len;
      int		i;
! #ifdef S_SPLINT_S  /* splint can't handle array of pointers */
!     static char **spec_str;
!     static char *(nospec_str[])
! #else
!     static char *(spec_str[])
! #endif
! 	= {
  		    "%",
  #define SPEC_PERC   0
  		    "#",
***************
*** 9443,9451 ****
  # define SPEC_CLIENT 9
  #endif
      };
- #define SPEC_COUNT  (sizeof(spec_str) / sizeof(char *))
  
!     for (i = 0; i < SPEC_COUNT; ++i)
      {
  	len = (int)STRLEN(spec_str[i]);
  	if (STRNCMP(src, spec_str[i], len) == 0)
--- 9449,9456 ----
  # define SPEC_CLIENT 9
  #endif
      };
  
!     for (i = 0; i < (int)(sizeof(spec_str) / sizeof(char *)); ++i)
      {
  	len = (int)STRLEN(spec_str[i]);
  	if (STRNCMP(src, spec_str[i], len) == 0)
***************
*** 9796,9802 ****
  	}
  
  	/* allocate memory */
! 	retval = alloc(len + 1);
  	if (retval == NULL)
  	    break;
      }
--- 9801,9807 ----
  	}
  
  	/* allocate memory */
! 	retval = alloc((unsigned)len + 1);
  	if (retval == NULL)
  	    break;
      }
*** ../vim-7.2.168/src/proto/ex_cmds.pro	2009-04-29 18:44:38.000000000 +0200
--- src/proto/ex_cmds.pro	2009-05-13 15:53:39.000000000 +0200
***************
*** 9,15 ****
  void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
  void do_shell __ARGS((char_u *cmd, int flags));
  char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
! void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
  int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
  int read_viminfo __ARGS((char_u *file, int flags));
  void write_viminfo __ARGS((char_u *file, int forceit));
--- 9,15 ----
  void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
  void do_shell __ARGS((char_u *cmd, int flags));
  char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
! void append_redir __ARGS((char_u *buf, int buflen, char_u *opt, char_u *fname));
  int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
  int read_viminfo __ARGS((char_u *file, int flags));
  void write_viminfo __ARGS((char_u *file, int forceit));
*** ../vim-7.2.168/src/proto/spell.pro	2007-05-05 19:19:19.000000000 +0200
--- src/proto/spell.pro	2009-05-13 16:43:13.000000000 +0200
***************
*** 22,26 ****
  char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
  int spell_word_start __ARGS((int startcol));
  void spell_expand_check_cap __ARGS((colnr_T col));
! int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
  /* vim: set ft=c : */
--- 22,26 ----
  char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
  int spell_word_start __ARGS((int startcol));
  void spell_expand_check_cap __ARGS((colnr_T col));
! int expand_spelling __ARGS((linenr_T lnum, char_u *pat, char_u ***matchp));
  /* vim: set ft=c : */
*** ../vim-7.2.168/src/quickfix.c	2009-04-29 11:49:57.000000000 +0200
--- src/quickfix.c	2009-05-13 15:53:18.000000000 +0200
***************
*** 2774,2780 ****
      sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
  							       (char *)p_shq);
      if (*p_sp != NUL)
! 	append_redir(cmd, p_sp, fname);
      /*
       * Output a newline if there's something else than the :make command that
       * was typed (in which case the cursor is in column 0).
--- 2774,2780 ----
      sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
  							       (char *)p_shq);
      if (*p_sp != NUL)
! 	append_redir(cmd, len, p_sp, fname);
      /*
       * Output a newline if there's something else than the :make command that
       * was typed (in which case the cursor is in column 0).
*** ../vim-7.2.168/src/spell.c	2009-02-11 17:57:43.000000000 +0100
--- src/spell.c	2009-05-13 16:31:15.000000000 +0200
***************
*** 16151,16161 ****
   * Returns the number of matches.  The matches are in "matchp[]", array of
   * allocated strings.
   */
- /*ARGSUSED*/
      int
! expand_spelling(lnum, col, pat, matchp)
      linenr_T	lnum;
-     int		col;
      char_u	*pat;
      char_u	***matchp;
  {
--- 16151,16159 ----
   * Returns the number of matches.  The matches are in "matchp[]", array of
   * allocated strings.
   */
      int
! expand_spelling(lnum, pat, matchp)
      linenr_T	lnum;
      char_u	*pat;
      char_u	***matchp;
  {
*** ../vim-7.2.168/src/structs.h	2009-05-13 12:46:36.000000000 +0200
--- src/structs.h	2009-05-13 16:45:51.000000000 +0200
***************
*** 16,22 ****
   */
  #if defined(SASC) && SASC < 658
  typedef long		linenr_T;
! typedef unsigned	colnr_T;
  typedef unsigned short	short_u;
  #endif
  
--- 16,22 ----
   */
  #if defined(SASC) && SASC < 658
  typedef long		linenr_T;
! typedef int		colnr_T;
  typedef unsigned short	short_u;
  #endif
  
*** ../vim-7.2.168/src/term.h	2005-03-16 10:53:56.000000000 +0100
--- src/term.h	2009-05-13 17:27:41.000000000 +0200
***************
*** 96,102 ****
--- 96,106 ----
   * - there should be code in term.c to obtain the value from the termcap
   */
  
+ #ifdef S_SPLINT_S  /* splint doesn't understand array of pointers */
+ extern char_u **term_strings;    /* current terminal strings */
+ #else
  extern char_u *(term_strings[]);    /* current terminal strings */
+ #endif
  
  /*
   * strings used for terminal
*** ../vim-7.2.168/src/vim.h	2009-04-29 18:44:38.000000000 +0200
--- src/vim.h	2009-05-13 16:45:39.000000000 +0200
***************
*** 1460,1467 ****
  # define PERROR(msg)		    perror(msg)
  #endif
  
! typedef long	    linenr_T;		/* line number type */
! typedef unsigned    colnr_T;		/* column number type */
  typedef unsigned short disptick_T;	/* display tick type */
  
  #define MAXLNUM (0x7fffffffL)		/* maximum (invalid) line number */
--- 1460,1467 ----
  # define PERROR(msg)		    perror(msg)
  #endif
  
! typedef long	linenr_T;		/* line number type */
! typedef int	colnr_T;		/* column number type */
  typedef unsigned short disptick_T;	/* display tick type */
  
  #define MAXLNUM (0x7fffffffL)		/* maximum (invalid) line number */
*** ../vim-7.2.168/src/version.c	2009-05-13 14:48:55.000000000 +0200
--- src/version.c	2009-05-13 18:44:28.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     169,
  /**/

-- 
Females are strictly forbidden to appear unshaven in public.
		[real standing law in New Mexico, United States of America]

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


--- NEW FILE 7.2.170 ---
To: vim-dev at vim.org
Subject: Patch 7.2.170
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.170
Problem:    Using b_dev while it was not set. (Dominique Pelle)
Solution:   Add the b_dev_valid flag.
Files:	    src/buffer.c, src/fileio.c, src/structs.h


*** ../vim-7.2.169/src/buffer.c	2009-05-13 12:46:36.000000000 +0200
--- src/buffer.c	2009-05-13 20:23:51.000000000 +0200
***************
*** 1678,1686 ****
      buf->b_fname = buf->b_sfname;
  #ifdef UNIX
      if (st.st_dev == (dev_T)-1)
! 	buf->b_dev = -1;
      else
      {
  	buf->b_dev = st.st_dev;
  	buf->b_ino = st.st_ino;
      }
--- 1678,1687 ----
      buf->b_fname = buf->b_sfname;
  #ifdef UNIX
      if (st.st_dev == (dev_T)-1)
! 	buf->b_dev_valid = FALSE;
      else
      {
+ 	buf->b_dev_valid = TRUE;
  	buf->b_dev = st.st_dev;
  	buf->b_ino = st.st_ino;
      }
***************
*** 2693,2701 ****
      buf->b_fname = buf->b_sfname;
  #ifdef UNIX
      if (st.st_dev == (dev_T)-1)
! 	buf->b_dev = -1;
      else
      {
  	buf->b_dev = st.st_dev;
  	buf->b_ino = st.st_ino;
      }
--- 2694,2703 ----
      buf->b_fname = buf->b_sfname;
  #ifdef UNIX
      if (st.st_dev == (dev_T)-1)
! 	buf->b_dev_valid = FALSE;
      else
      {
+ 	buf->b_dev_valid = TRUE;
  	buf->b_dev = st.st_dev;
  	buf->b_ino = st.st_ino;
      }
***************
*** 2889,2895 ****
  	/* If no struct stat given, get it now */
  	if (stp == NULL)
  	{
! 	    if (buf->b_dev < 0 || mch_stat((char *)ffname, &st) < 0)
  		st.st_dev = (dev_T)-1;
  	    stp = &st;
  	}
--- 2891,2897 ----
  	/* If no struct stat given, get it now */
  	if (stp == NULL)
  	{
! 	    if (!buf->b_dev_valid || mch_stat((char *)ffname, &st) < 0)
  		st.st_dev = (dev_T)-1;
  	    stp = &st;
  	}
***************
*** 2926,2936 ****
  
      if (buf->b_fname != NULL && mch_stat((char *)buf->b_fname, &st) >= 0)
      {
  	buf->b_dev = st.st_dev;
  	buf->b_ino = st.st_ino;
      }
      else
! 	buf->b_dev = -1;
  }
  
  /*
--- 2928,2939 ----
  
      if (buf->b_fname != NULL && mch_stat((char *)buf->b_fname, &st) >= 0)
      {
+ 	buf->b_dev_valid = TRUE;
  	buf->b_dev = st.st_dev;
  	buf->b_ino = st.st_ino;
      }
      else
! 	buf->b_dev_valid = FALSE;
  }
  
  /*
***************
*** 2941,2947 ****
      buf_T	*buf;
      struct stat *stp;
  {
!     return (buf->b_dev >= 0
  	    && stp->st_dev == buf->b_dev
  	    && stp->st_ino == buf->b_ino);
  }
--- 2944,2950 ----
      buf_T	*buf;
      struct stat *stp;
  {
!     return (buf->b_dev_valid
  	    && stp->st_dev == buf->b_dev
  	    && stp->st_ino == buf->b_ino);
  }
*** ../vim-7.2.169/src/fileio.c	2009-04-29 18:01:23.000000000 +0200
--- src/fileio.c	2009-05-13 20:24:08.000000000 +0200
***************
*** 4416,4422 ****
  # endif
  	buf_setino(buf);
      }
!     else if (buf->b_dev < 0)
  	/* Set the inode when creating a new file. */
  	buf_setino(buf);
  #endif
--- 4416,4422 ----
  # endif
  	buf_setino(buf);
      }
!     else if (!buf->b_dev_valid)
  	/* Set the inode when creating a new file. */
  	buf_setino(buf);
  #endif
*** ../vim-7.2.169/src/structs.h	2009-05-13 18:54:14.000000000 +0200
--- src/structs.h	2009-05-13 20:24:54.000000000 +0200
***************
*** 1166,1172 ****
      char_u	*b_fname;	/* current file name */
  
  #ifdef UNIX
!     dev_t	b_dev;		/* device number (-1 if not set) */
      ino_t	b_ino;		/* inode number */
  #endif
  #ifdef FEAT_CW_EDITOR
--- 1166,1173 ----
      char_u	*b_fname;	/* current file name */
  
  #ifdef UNIX
!     int		b_dev_valid;	/* TRUE when b_dev has a valid number */
!     dev_t	b_dev;		/* device number */
      ino_t	b_ino;		/* inode number */
  #endif
  #ifdef FEAT_CW_EDITOR
*** ../vim-7.2.169/src/version.c	2009-05-13 18:54:14.000000000 +0200
--- src/version.c	2009-05-13 20:43:22.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     170,
  /**/

-- 
A special cleaning ordinance bans housewives from hiding dirt and dust under a
rug in a dwelling.
		[real standing law in Pennsylvania, United States of America]

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


--- NEW FILE 7.2.171 ---
To: vim-dev at vim.org
Subject: Patch 7.2.171
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.171 (after 7.2.169)
Problem:    Compiler warnings. (Tony Mechelynck)
Solution:   Add function prototype. (Patrick Texier)  Init variable.
Files:	    src/ex_cmds.c


*** ../vim-7.2.170/src/ex_cmds.c	2009-05-13 18:54:14.000000000 +0200
--- src/ex_cmds.c	2009-05-14 21:11:01.000000000 +0200
***************
*** 4637,4643 ****
  
  		if (do_ask)
  		{
! 		    int typed;
  
  		    /* change State to CONFIRM, so that the mouse works
  		     * properly */
--- 4635,4641 ----
  
  		if (do_ask)
  		{
! 		    int typed = 0;
  
  		    /* change State to CONFIRM, so that the mouse works
  		     * properly */
***************
*** 6553,6558 ****
--- 6549,6555 ----
  static sign_T	*first_sign = NULL;
  static int	last_sign_typenr = MAX_TYPENR;	/* is decremented */
  
+ static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd));
  static void sign_list_defined __ARGS((sign_T *sp));
  static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
  
***************
*** 6579,6586 ****
   */
      static int
  sign_cmd_idx(begin_cmd, end_cmd)
!     char	*begin_cmd;	/* begin of sign subcmd */
!     char	*end_cmd;	/* just after sign subcmd */
  {
      int		idx;
      char	save = *end_cmd;
--- 6576,6583 ----
   */
      static int
  sign_cmd_idx(begin_cmd, end_cmd)
!     char_u	*begin_cmd;	/* begin of sign subcmd */
!     char_u	*end_cmd;	/* just after sign subcmd */
  {
      int		idx;
      char	save = *end_cmd;
*** ../vim-7.2.170/src/version.c	2009-05-13 20:47:07.000000000 +0200
--- src/version.c	2009-05-14 21:49:22.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     171,
  /**/

-- 
Living on Earth includes an annual free trip around the Sun.

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


--- NEW FILE 7.2.172 ---
To: vim-dev at vim.org
Subject: Patch 7.2.172 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.172 (extra)
Problem:    Compiler warning.
Solution:   Adjust function prototype. (Patrick Texier)
Files:	    src/os_mswin.c


*** ../vim-7.2.171/src/os_mswin.c	2009-01-22 21:49:21.000000000 +0100
--- src/os_mswin.c	2009-05-14 20:54:32.000000000 +0200
***************
*** 1227,1234 ****
   * Wait for another process to Close the Clipboard.
   * Returns TRUE for success.
   */
!     int
! vim_open_clipboard()
  {
      int delay = 10;
  
--- 1227,1234 ----
   * Wait for another process to Close the Clipboard.
   * Returns TRUE for success.
   */
!     static int
! vim_open_clipboard(void)
  {
      int delay = 10;
  
*** ../vim-7.2.171/src/version.c	2009-05-14 21:51:06.000000000 +0200
--- src/version.c	2009-05-14 21:59:45.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     172,
  /**/

-- 
FROG: How you English say:  I one more time, mac, I unclog my nose towards
      you, sons of a window-dresser,  so, you think you could out-clever us
      French fellows with your silly knees-bent creeping about advancing
      behaviour.  (blows a raspberry) I wave my private parts at your aunties,
      you brightly-coloured, mealy-templed, cranberry-smelling, electric
      donkey-bottom biters.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.173 ---
To: vim-dev at vim.org
Subject: Patch 7.2.173
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.173
Problem:    Without lint there is no check for unused function arguments.
Solution:   Use gcc -Wunused-parameter instead of lint.  For a few files add
	    attributes to arguments that are known not to be used.
Files:	    src/auto/configure, src/buffer.c, src/charset.c, src/diff.c,
	    src/configure.in, src/config.h.in, src/edit.c, src/ex_cmds.c,
	    src/ex_cmds2.c, src/version.c, src/vim.h


*** ../vim-7.2.172/src/auto/configure	2009-05-13 14:48:55.000000000 +0200
--- src/auto/configure	2009-05-14 22:08:12.000000000 +0200
***************
*** 10362,10367 ****
--- 10372,10427 ----
  
  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
  
+ { $as_echo "$as_me:$LINENO: checking whether __attribute__((unused)) is allowed" >&5
+ $as_echo_n "checking whether __attribute__((unused)) is allowed... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ #include <stdio.h>
+ int
+ main ()
+ {
+ int x __attribute__((unused));
+   ;
+   return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_compile") 2>conftest.er1
+   ac_status=$?
+   grep -v '^ *+' conftest.er1 >conftest.err
+   rm -f conftest.er1
+   cat conftest.err >&5
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && {
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then
+   { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }; cat >>confdefs.h <<\_ACEOF
+ #define HAVE_ATTRIBUTE_UNUSED 1
+ _ACEOF
+ 
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	{ $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ 
  if test "${ac_cv_header_elf_h+set}" = set; then
    { $as_echo "$as_me:$LINENO: checking for elf.h" >&5
  $as_echo_n "checking for elf.h... " >&6; }
*** ../vim-7.2.172/src/buffer.c	2009-05-13 20:47:07.000000000 +0200
--- src/buffer.c	2009-05-14 21:34:06.000000000 +0200
***************
*** 512,523 ****
   * buf_freeall() - free all things allocated for a buffer that are related to
   * the file.
   */
- /*ARGSUSED*/
      void
  buf_freeall(buf, del_buf, wipe_buf)
      buf_T	*buf;
!     int		del_buf;	/* buffer is going to be deleted */
!     int		wipe_buf;	/* buffer is going to be wiped out */
  {
  #ifdef FEAT_AUTOCMD
      int		is_curbuf = (buf == curbuf);
--- 512,522 ----
   * buf_freeall() - free all things allocated for a buffer that are related to
   * the file.
   */
      void
  buf_freeall(buf, del_buf, wipe_buf)
      buf_T	*buf;
!     int		del_buf UNUSED;	    /* buffer is going to be deleted */
!     int		wipe_buf UNUSED;    /* buffer is going to be wiped out */
  {
  #ifdef FEAT_AUTOCMD
      int		is_curbuf = (buf == curbuf);
***************
*** 2437,2447 ****
   * another tab page.
   * Returns NULL when there isn't any info.
   */
- /*ARGSUSED*/
      static wininfo_T *
  find_wininfo(buf, skip_diff_buffer)
      buf_T	*buf;
!     int		skip_diff_buffer;
  {
      wininfo_T	*wip;
  
--- 2436,2445 ----
   * another tab page.
   * Returns NULL when there isn't any info.
   */
      static wininfo_T *
  find_wininfo(buf, skip_diff_buffer)
      buf_T	*buf;
!     int		skip_diff_buffer UNUSED;
  {
      wininfo_T	*wip;
  
***************
*** 4278,4287 ****
   * Make "ffname" a full file name, set "sfname" to "ffname" if not NULL.
   * "ffname" becomes a pointer to allocated memory (or NULL).
   */
- /*ARGSUSED*/
      void
  fname_expand(buf, ffname, sfname)
!     buf_T	*buf;
      char_u	**ffname;
      char_u	**sfname;
  {
--- 4276,4284 ----
   * Make "ffname" a full file name, set "sfname" to "ffname" if not NULL.
   * "ffname" becomes a pointer to allocated memory (or NULL).
   */
      void
  fname_expand(buf, ffname, sfname)
!     buf_T	*buf UNUSED;
      char_u	**ffname;
      char_u	**sfname;
  {
***************
*** 5577,5587 ****
   * this buffer.  Call this to wipe out a temp buffer that does not contain any
   * marks.
   */
- /*ARGSUSED*/
      void
  wipe_buffer(buf, aucmd)
      buf_T	*buf;
!     int		aucmd;	    /* When TRUE trigger autocommands. */
  {
      if (buf->b_fnum == top_file_num - 1)
  	--top_file_num;
--- 5574,5583 ----
   * this buffer.  Call this to wipe out a temp buffer that does not contain any
   * marks.
   */
      void
  wipe_buffer(buf, aucmd)
      buf_T	*buf;
!     int		aucmd UNUSED;	    /* When TRUE trigger autocommands. */
  {
      if (buf->b_fnum == top_file_num - 1)
  	--top_file_num;
*** ../vim-7.2.172/src/charset.c	2009-05-13 14:10:46.000000000 +0200
--- src/charset.c	2009-05-14 21:34:30.000000000 +0200
***************
*** 1026,1038 ****
   * string at start of line.  Warning: *headp is only set if it's a non-zero
   * value, init to 0 before calling.
   */
- /*ARGSUSED*/
      int
  win_lbr_chartabsize(wp, s, col, headp)
      win_T	*wp;
      char_u	*s;
      colnr_T	col;
!     int		*headp;
  {
  #ifdef FEAT_LINEBREAK
      int		c;
--- 1026,1037 ----
   * string at start of line.  Warning: *headp is only set if it's a non-zero
   * value, init to 0 before calling.
   */
      int
  win_lbr_chartabsize(wp, s, col, headp)
      win_T	*wp;
      char_u	*s;
      colnr_T	col;
!     int		*headp UNUSED;
  {
  #ifdef FEAT_LINEBREAK
      int		c;
*** ../vim-7.2.172/src/diff.c	2009-05-13 18:54:14.000000000 +0200
--- src/diff.c	2009-05-14 21:24:59.000000000 +0200
***************
*** 652,661 ****
   * The buffers are written to a file, also for unmodified buffers (the file
   * could have been produced by autocommands, e.g. the netrw plugin).
   */
- /*ARGSUSED*/
      void
  ex_diffupdate(eap)
!     exarg_T	*eap;	    /* can be NULL, it's not used */
  {
      buf_T	*buf;
      int		idx_orig;
--- 652,660 ----
   * The buffers are written to a file, also for unmodified buffers (the file
   * could have been produced by autocommands, e.g. the netrw plugin).
   */
      void
  ex_diffupdate(eap)
!     exarg_T	*eap UNUSED;	    /* can be NULL */
  {
      buf_T	*buf;
      int		idx_orig;
***************
*** 1094,1103 ****
  /*
   * Set options to show difs for the current window.
   */
- /*ARGSUSED*/
      void
  ex_diffthis(eap)
!     exarg_T	*eap;
  {
      /* Set 'diff', 'scrollbind' on and 'wrap' off. */
      diff_win_options(curwin, TRUE);
--- 1093,1101 ----
  /*
   * Set options to show difs for the current window.
   */
      void
  ex_diffthis(eap)
!     exarg_T	*eap UNUSED;
  {
      /* Set 'diff', 'scrollbind' on and 'wrap' off. */
      diff_win_options(curwin, TRUE);
*** ../vim-7.2.172/src/configure.in	2009-05-13 14:48:55.000000000 +0200
--- src/configure.in	2009-05-14 22:08:06.000000000 +0200
***************
*** 2067,2072 ****
--- 2067,2077 ----
  	AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
  	AC_MSG_RESULT(no))
  
+ AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
+ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
+ 	AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
+ 	AC_MSG_RESULT(no))
+ 
  dnl Checks for header files.
  AC_CHECK_HEADER(elf.h, HAS_ELF=1)
  dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
*** ../vim-7.2.172/src/config.h.in	2009-03-02 02:44:54.000000000 +0100
--- src/config.h.in	2009-05-14 21:15:02.000000000 +0200
***************
*** 30,35 ****
--- 30,38 ----
  /* Define when __DATE__ " " __TIME__ can be used */
  #undef HAVE_DATE_TIME
  
+ /* Define when __attribute__((unused)) can be used */
+ #undef HAVE_ATTRIBUTE_UNUSED
+ 
  /* defined always when using configure */
  #undef UNIX
  
*** ../vim-7.2.172/src/edit.c	2009-05-13 18:54:14.000000000 +0200
--- src/edit.c	2009-05-14 21:35:08.000000000 +0200
***************
*** 1447,1456 ****
   * Only redraw when there are no characters available.  This speeds up
   * inserting sequences of characters (e.g., for CTRL-R).
   */
- /*ARGSUSED*/
      static void
  ins_redraw(ready)
!     int		ready;	    /* not busy with something */
  {
      if (!char_avail())
      {
--- 1447,1455 ----
   * Only redraw when there are no characters available.  This speeds up
   * inserting sequences of characters (e.g., for CTRL-R).
   */
      static void
  ins_redraw(ready)
!     int		ready UNUSED;	    /* not busy with something */
  {
      if (!char_avail())
      {
***************
*** 1962,1971 ****
   * Only matters when there are composing characters.
   * Return TRUE when something was deleted.
   */
- /*ARGSUSED*/
     static int
  del_char_after_col(limit_col)
!     int limit_col;
  {
  #ifdef FEAT_MBYTE
      if (enc_utf8 && limit_col >= 0)
--- 1961,1969 ----
   * Only matters when there are composing characters.
   * Return TRUE when something was deleted.
   */
     static int
  del_char_after_col(limit_col)
!     int limit_col UNUSED;
  {
  #ifdef FEAT_MBYTE
      if (enc_utf8 && limit_col >= 0)
*** ../vim-7.2.172/src/ex_cmds.c	2009-05-14 21:51:06.000000000 +0200
--- src/ex_cmds.c	2009-05-14 21:11:01.000000000 +0200
***************
*** 43,52 ****
  /*
   * ":ascii" and "ga".
   */
- /*ARGSUSED*/
      void
  do_ascii(eap)
!     exarg_T	*eap;
  {
      int		c;
      int		cval;
--- 43,51 ----
  /*
   * ":ascii" and "ga".
   */
      void
  do_ascii(eap)
!     exarg_T	*eap UNUSED;
  {
      int		c;
      int		cval;
***************
*** 2373,2382 ****
   *   ^?		^H
   * not ^?	^?
   */
- /*ARGSUSED*/
      void
  do_fixdel(eap)
!     exarg_T	*eap;
  {
      char_u  *p;
  
--- 2372,2380 ----
   *   ^?		^H
   * not ^?	^?
   */
      void
  do_fixdel(eap)
!     exarg_T	*eap UNUSED;
  {
      char_u  *p;
  
***************
*** 6127,6136 ****
  /*
   * ":exusage"
   */
- /*ARGSUSED*/
      void
  ex_exusage(eap)
!     exarg_T	*eap;
  {
      do_cmdline_cmd((char_u *)"help ex-cmd-index");
  }
--- 6125,6133 ----
  /*
   * ":exusage"
   */
      void
  ex_exusage(eap)
!     exarg_T	*eap UNUSED;
  {
      do_cmdline_cmd((char_u *)"help ex-cmd-index");
  }
***************
*** 6138,6147 ****
  /*
   * ":viusage"
   */
- /*ARGSUSED*/
      void
  ex_viusage(eap)
!     exarg_T	*eap;
  {
      do_cmdline_cmd((char_u *)"help normal-index");
  }
--- 6135,6143 ----
  /*
   * ":viusage"
   */
      void
  ex_viusage(eap)
!     exarg_T	*eap UNUSED;
  {
      do_cmdline_cmd((char_u *)"help normal-index");
  }
***************
*** 7154,7163 ****
   * Function given to ExpandGeneric() to obtain the sign command
   * expansion.
   */
- /*ARGSUSED*/
      char_u *
  get_sign_name(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      sign_T	*sp;
--- 7150,7158 ----
   * Function given to ExpandGeneric() to obtain the sign command
   * expansion.
   */
      char_u *
  get_sign_name(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      sign_T	*sp;
*** ../vim-7.2.172/src/ex_cmds2.c	2009-05-13 18:54:14.000000000 +0200
--- src/ex_cmds2.c	2009-05-14 21:35:40.000000000 +0200
***************
*** 680,689 ****
  /*
   * ":breaklist".
   */
- /*ARGSUSED*/
      void
  ex_breaklist(eap)
!     exarg_T	*eap;
  {
      struct debuggy *bp;
      int		i;
--- 680,688 ----
  /*
   * ":breaklist".
   */
      void
  ex_breaklist(eap)
!     exarg_T	*eap UNUSED;
  {
      struct debuggy *bp;
      int		i;
***************
*** 1342,1355 ****
  /*
   * return TRUE if buffer was changed and cannot be abandoned.
   */
- /*ARGSUSED*/
      int
  check_changed(buf, checkaw, mult_win, forceit, allbuf)
      buf_T	*buf;
      int		checkaw;	/* do autowrite if buffer was changed */
      int		mult_win;	/* check also when several wins for the buf */
      int		forceit;
!     int		allbuf;		/* may write all buffers */
  {
      if (       !forceit
  	    && bufIsChanged(buf)
--- 1341,1353 ----
  /*
   * return TRUE if buffer was changed and cannot be abandoned.
   */
      int
  check_changed(buf, checkaw, mult_win, forceit, allbuf)
      buf_T	*buf;
      int		checkaw;	/* do autowrite if buffer was changed */
      int		mult_win;	/* check also when several wins for the buf */
      int		forceit;
!     int		allbuf UNUSED;	/* may write all buffers */
  {
      if (       !forceit
  	    && bufIsChanged(buf)
***************
*** 1759,1770 ****
   *
   * Return FAIL for failure, OK otherwise.
   */
- /*ARGSUSED*/
      static int
  do_arglist(str, what, after)
      char_u	*str;
!     int		what;
!     int		after;		/* 0 means before first one */
  {
      garray_T	new_ga;
      int		exp_count;
--- 1757,1767 ----
   *
   * Return FAIL for failure, OK otherwise.
   */
      static int
  do_arglist(str, what, after)
      char_u	*str;
!     int		what UNUSED;
!     int		after UNUSED;		/* 0 means before first one */
  {
      garray_T	new_ga;
      int		exp_count;
***************
*** 2549,2559 ****
  
  static void source_callback __ARGS((char_u *fname, void *cookie));
  
- /*ARGSUSED*/
      static void
  source_callback(fname, cookie)
      char_u	*fname;
!     void	*cookie;
  {
      (void)do_source(fname, FALSE, DOSO_NONE);
  }
--- 2546,2555 ----
  
  static void source_callback __ARGS((char_u *fname, void *cookie));
  
      static void
  source_callback(fname, cookie)
      char_u	*fname;
!     void	*cookie UNUSED;
  {
      (void)do_source(fname, FALSE, DOSO_NONE);
  }
***************
*** 2680,2689 ****
  /*
   * ":options"
   */
- /*ARGSUSED*/
      void
  ex_options(eap)
!     exarg_T	*eap;
  {
      cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
  }
--- 2676,2684 ----
  /*
   * ":options"
   */
      void
  ex_options(eap)
!     exarg_T	*eap UNUSED;
  {
      cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
  }
***************
*** 3190,3199 ****
  /*
   * ":scriptnames"
   */
- /*ARGSUSED*/
      void
  ex_scriptnames(eap)
!     exarg_T	*eap;
  {
      int i;
  
--- 3185,3193 ----
  /*
   * ":scriptnames"
   */
      void
  ex_scriptnames(eap)
!     exarg_T	*eap UNUSED;
  {
      int i;
  
***************
*** 3317,3328 ****
   * Return a pointer to the line in allocated memory.
   * Return NULL for end-of-file or some error.
   */
- /* ARGSUSED */
      char_u *
  getsourceline(c, cookie, indent)
!     int		c;		/* not used */
      void	*cookie;
!     int		indent;		/* not used */
  {
      struct source_cookie *sp = (struct source_cookie *)cookie;
      char_u		*line;
--- 3311,3321 ----
   * Return a pointer to the line in allocated memory.
   * Return NULL for end-of-file or some error.
   */
      char_u *
  getsourceline(c, cookie, indent)
!     int		c UNUSED;
      void	*cookie;
!     int		indent UNUSED;
  {
      struct source_cookie *sp = (struct source_cookie *)cookie;
      char_u		*line;
***************
*** 3649,3658 ****
   * ":scriptencoding": Set encoding conversion for a sourced script.
   * Without the multi-byte feature it's simply ignored.
   */
- /*ARGSUSED*/
      void
  ex_scriptencoding(eap)
!     exarg_T	*eap;
  {
  #ifdef FEAT_MBYTE
      struct source_cookie	*sp;
--- 3642,3650 ----
   * ":scriptencoding": Set encoding conversion for a sourced script.
   * Without the multi-byte feature it's simply ignored.
   */
      void
  ex_scriptencoding(eap)
!     exarg_T	*eap UNUSED;
  {
  #ifdef FEAT_MBYTE
      struct source_cookie	*sp;
***************
*** 4101,4110 ****
   * Function given to ExpandGeneric() to obtain the possible arguments of the
   * ":language" command.
   */
- /*ARGSUSED*/
      char_u *
  get_lang_arg(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      if (idx == 0)
--- 4093,4101 ----
   * Function given to ExpandGeneric() to obtain the possible arguments of the
   * ":language" command.
   */
      char_u *
  get_lang_arg(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      if (idx == 0)
*** ../vim-7.2.172/src/version.c	2009-05-14 22:00:37.000000000 +0200
--- src/version.c	2009-05-14 22:14:51.000000000 +0200
***************
*** 1623,1632 ****
  /*
   * ":intro": clear screen, display intro screen and wait for return.
   */
- /*ARGSUSED*/
      void
  ex_intro(eap)
!     exarg_T	*eap;
  {
      screenclear();
      intro_message(TRUE);
--- 1625,1633 ----
  /*
   * ":intro": clear screen, display intro screen and wait for return.
   */
      void
  ex_intro(eap)
!     exarg_T	*eap UNUSED;
  {
      screenclear();
      intro_message(TRUE);
*** ../vim-7.2.172/src/vim.h	2009-05-13 18:54:14.000000000 +0200
--- src/vim.h	2009-05-14 21:17:51.000000000 +0200
***************
*** 262,267 ****
--- 262,275 ----
  # define __PARMS(x) __ARGS(x)
  #endif
  
+ /* Mark unused function arguments with UNUSED, so that gcc -Wunused-parameter
+  * can be used to check for mistakes. */
+ #ifdef HAVE_ATTRIBUTE_UNUSED
+ # define UNUSED __attribute__((unused))
+ #else
+ # define UNUSED
+ #endif
+ 
  /* if we're compiling in C++ (currently only KVim), the system
   * headers must have the correct prototypes or nothing will build.
   * conversely, our prototypes might clash due to throw() specifiers and
*** ../vim-7.2.172/src/version.c	2009-05-14 22:00:37.000000000 +0200
--- src/version.c	2009-05-14 22:14:51.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     173,
  /**/

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

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


--- NEW FILE 7.2.174 ---
To: vim-dev at vim.org
Subject: Patch 7.2.174
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.174
Problem:    Too many warnings from gcc -Wextra.
Solution:   Change initializer.  Add UNUSED.  Add type casts.
Files:      src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c,
            src/ex_getln.c, src/fileio.c, getchar.c, globals.h, main.c,
            memline.c, message.c, src/misc1.c, src/move.c, src/normal.c,
            src/option.c, src/os_unix.c, src/os_unix.h, src/regexp.c,
            src/search.c, src/tag.c


*** ../vim-7.2.173/src/edit.c	2009-05-14 22:19:19.000000000 +0200
--- src/edit.c	2009-05-15 21:06:07.000000000 +0200
***************
*** 8991,8997 ****
  	foldOpenCursor();
  #endif
      undisplay_dollar();
!     if (gchar_cursor() != NUL || virtual_active()
  	    )
      {
  	start_arrow(&curwin->w_cursor);
--- 8992,9001 ----
  	foldOpenCursor();
  #endif
      undisplay_dollar();
!     if (gchar_cursor() != NUL
! #ifdef FEAT_VIRTUALEDIT
! 	    || virtual_active()
! #endif
  	    )
      {
  	start_arrow(&curwin->w_cursor);
*** ../vim-7.2.173/src/eval.c	2009-04-22 16:07:57.000000000 +0200
--- src/eval.c	2009-05-15 21:18:08.000000000 +0200
***************
*** 8303,8312 ****
  /*
   * "argc()" function
   */
- /* ARGSUSED */
      static void
  f_argc(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
      rettv->vval.v_number = ARGCOUNT;
--- 8303,8311 ----
  /*
   * "argc()" function
   */
      static void
  f_argc(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
      rettv->vval.v_number = ARGCOUNT;
***************
*** 8315,8324 ****
  /*
   * "argidx()" function
   */
- /* ARGSUSED */
      static void
  f_argidx(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
      rettv->vval.v_number = curwin->w_arg_idx;
--- 8314,8322 ----
  /*
   * "argidx()" function
   */
      static void
  f_argidx(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
      rettv->vval.v_number = curwin->w_arg_idx;
***************
*** 8396,8405 ****
  /*
   * "browse(save, title, initdir, default)" function
   */
- /* ARGSUSED */
      static void
  f_browse(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
  #ifdef FEAT_BROWSE
--- 8394,8402 ----
  /*
   * "browse(save, title, initdir, default)" function
   */
      static void
  f_browse(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
  #ifdef FEAT_BROWSE
***************
*** 8431,8440 ****
  /*
   * "browsedir(title, initdir)" function
   */
- /* ARGSUSED */
      static void
  f_browsedir(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
  #ifdef FEAT_BROWSE
--- 8428,8436 ----
  /*
   * "browsedir(title, initdir)" function
   */
      static void
  f_browsedir(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
  #ifdef FEAT_BROWSE
***************
*** 8801,8810 ****
  /*
   * "changenr()" function
   */
- /*ARGSUSED*/
      static void
  f_changenr(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
      rettv->vval.v_number = curbuf->b_u_seq_cur;
--- 8797,8805 ----
  /*
   * "changenr()" function
   */
      static void
  f_changenr(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
      rettv->vval.v_number = curbuf->b_u_seq_cur;
***************
*** 8854,8863 ****
  /*
   * "clearmatches()" function
   */
- /*ARGSUSED*/
      static void
  f_clearmatches(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
  #ifdef FEAT_SEARCH_EXTRA
--- 8849,8857 ----
  /*
   * "clearmatches()" function
   */
      static void
  f_clearmatches(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
  #ifdef FEAT_SEARCH_EXTRA
*** ../vim-7.2.173/src/ex_cmds.c	2009-05-14 22:19:19.000000000 +0200
--- src/ex_cmds.c	2009-05-15 20:42:18.000000000 +0200
***************
*** 4040,4047 ****
--- 4040,4049 ----
  	bigness = curwin->w_height;
      else if (firstwin == lastwin)
  	bigness = curwin->w_p_scr * 2;
+ #ifdef FEAT_WINDOWS
      else
  	bigness = curwin->w_height - 3;
+ #endif
      if (bigness < 1)
  	bigness = 1;
  
*** ../vim-7.2.173/src/ex_docmd.c	2009-05-13 18:54:14.000000000 +0200
--- src/ex_docmd.c	2009-05-15 20:47:58.000000000 +0200
***************
*** 1578,1588 ****
   * If "fgetline" is get_loop_line(), return TRUE if the getline it uses equals
   * "func".  * Otherwise return TRUE when "fgetline" equals "func".
   */
- /*ARGSUSED*/
      int
  getline_equal(fgetline, cookie, func)
      char_u	*(*fgetline) __ARGS((int, void *, int));
!     void	*cookie;		/* argument for fgetline() */
      char_u	*(*func) __ARGS((int, void *, int));
  {
  #ifdef FEAT_EVAL
--- 1578,1587 ----
   * If "fgetline" is get_loop_line(), return TRUE if the getline it uses equals
   * "func".  * Otherwise return TRUE when "fgetline" equals "func".
   */
      int
  getline_equal(fgetline, cookie, func)
      char_u	*(*fgetline) __ARGS((int, void *, int));
!     void	*cookie UNUSED;		/* argument for fgetline() */
      char_u	*(*func) __ARGS((int, void *, int));
  {
  #ifdef FEAT_EVAL
***************
*** 1610,1619 ****
   * If "fgetline" is get_loop_line(), return the cookie used by the original
   * getline function.  Otherwise return "cookie".
   */
- /*ARGSUSED*/
      void *
  getline_cookie(fgetline, cookie)
!     char_u	*(*fgetline) __ARGS((int, void *, int));
      void	*cookie;		/* argument for fgetline() */
  {
  # ifdef FEAT_EVAL
--- 1609,1617 ----
   * If "fgetline" is get_loop_line(), return the cookie used by the original
   * getline function.  Otherwise return "cookie".
   */
      void *
  getline_cookie(fgetline, cookie)
!     char_u	*(*fgetline) __ARGS((int, void *, int)) UNUSED;
      void	*cookie;		/* argument for fgetline() */
  {
  # ifdef FEAT_EVAL
***************
*** 2754,2764 ****
   * "full" is set to TRUE if the whole command name matched.
   * Returns NULL for an ambiguous user command.
   */
- /*ARGSUSED*/
      static char_u *
  find_command(eap, full)
      exarg_T	*eap;
!     int		*full;
  {
      int		len;
      char_u	*p;
--- 2752,2761 ----
   * "full" is set to TRUE if the whole command name matched.
   * Returns NULL for an ambiguous user command.
   */
      static char_u *
  find_command(eap, full)
      exarg_T	*eap;
!     int		*full UNUSED;
  {
      int		len;
      char_u	*p;
***************
*** 5053,5062 ****
  /*
   * Function given to ExpandGeneric() to obtain the list of command names.
   */
- /*ARGSUSED*/
      char_u *
  get_command_name(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      if (idx >= (int)CMD_SIZE)
--- 5050,5058 ----
  /*
   * Function given to ExpandGeneric() to obtain the list of command names.
   */
      char_u *
  get_command_name(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      if (idx >= (int)CMD_SIZE)
***************
*** 5573,5582 ****
   * ":comclear"
   * Clear all user commands, global and for current buffer.
   */
- /*ARGSUSED*/
      void
  ex_comclear(eap)
!     exarg_T	*eap;
  {
      uc_clear(&ucmds);
      uc_clear(&curbuf->b_ucmds);
--- 5569,5577 ----
   * ":comclear"
   * Clear all user commands, global and for current buffer.
   */
      void
  ex_comclear(eap)
!     exarg_T	*eap UNUSED;
  {
      uc_clear(&ucmds);
      uc_clear(&curbuf->b_ucmds);
***************
*** 6072,6081 ****
  /*
   * Function given to ExpandGeneric() to obtain the list of user command names.
   */
- /*ARGSUSED*/
      char_u *
  get_user_commands(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      if (idx < curbuf->b_ucmds.ga_len)
--- 6067,6075 ----
  /*
   * Function given to ExpandGeneric() to obtain the list of user command names.
   */
      char_u *
  get_user_commands(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      if (idx < curbuf->b_ucmds.ga_len)
***************
*** 6090,6099 ****
   * Function given to ExpandGeneric() to obtain the list of user command
   * attributes.
   */
- /*ARGSUSED*/
      char_u *
  get_user_cmd_flags(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      static char *user_cmd_flags[] =
--- 6084,6092 ----
   * Function given to ExpandGeneric() to obtain the list of user command
   * attributes.
   */
      char_u *
  get_user_cmd_flags(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      static char *user_cmd_flags[] =
***************
*** 6108,6117 ****
  /*
   * Function given to ExpandGeneric() to obtain the list of values for -nargs.
   */
- /*ARGSUSED*/
      char_u *
  get_user_cmd_nargs(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      static char *user_cmd_nargs[] = {"0", "1", "*", "?", "+"};
--- 6101,6109 ----
  /*
   * Function given to ExpandGeneric() to obtain the list of values for -nargs.
   */
      char_u *
  get_user_cmd_nargs(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      static char *user_cmd_nargs[] = {"0", "1", "*", "?", "+"};
***************
*** 6124,6133 ****
  /*
   * Function given to ExpandGeneric() to obtain the list of values for -complete.
   */
- /*ARGSUSED*/
      char_u *
  get_user_cmd_complete(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      return (char_u *)command_complete[idx].name;
--- 6116,6124 ----
  /*
   * Function given to ExpandGeneric() to obtain the list of values for -complete.
   */
      char_u *
  get_user_cmd_complete(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      return (char_u *)command_complete[idx].name;
***************
*** 6305,6314 ****
  /*
   * ":cquit".
   */
- /*ARGSUSED*/
      static void
  ex_cquit(eap)
!     exarg_T	*eap;
  {
      getout(1);	/* this does not always pass on the exit code to the Manx
  		   compiler. why? */
--- 6296,6304 ----
  /*
   * ":cquit".
   */
      static void
  ex_cquit(eap)
!     exarg_T	*eap UNUSED;
  {
      getout(1);	/* this does not always pass on the exit code to the Manx
  		   compiler. why? */
***************
*** 6750,6759 ****
  /*
   * ":shell".
   */
- /*ARGSUSED*/
      static void
  ex_shell(eap)
!     exarg_T	*eap;
  {
      do_shell(NULL, 0);
  }
--- 6740,6748 ----
  /*
   * ":shell".
   */
      static void
  ex_shell(eap)
!     exarg_T	*eap UNUSED;
  {
      do_shell(NULL, 0);
  }
***************
*** 7057,7066 ****
  /*
   * ":preserve".
   */
- /*ARGSUSED*/
      static void
  ex_preserve(eap)
!     exarg_T	*eap;
  {
      curbuf->b_flags |= BF_PRESERVED;
      ml_preserve(curbuf, TRUE);
--- 7046,7054 ----
  /*
   * ":preserve".
   */
      static void
  ex_preserve(eap)
!     exarg_T	*eap UNUSED;
  {
      curbuf->b_flags |= BF_PRESERVED;
      ml_preserve(curbuf, TRUE);
***************
*** 7292,7301 ****
  /*
   * :tabs command: List tabs and their contents.
   */
- /*ARGSUSED*/
      static void
  ex_tabs(eap)
!     exarg_T	*eap;
  {
      tabpage_T	*tp;
      win_T	*wp;
--- 7280,7288 ----
  /*
   * :tabs command: List tabs and their contents.
   */
      static void
  ex_tabs(eap)
!     exarg_T	*eap UNUSED;
  {
      tabpage_T	*tp;
      win_T	*wp;
***************
*** 7482,7488 ****
  /*
   * ":edit <file>" command and alikes.
   */
- /*ARGSUSED*/
      void
  do_exedit(eap, old_curwin)
      exarg_T	*eap;
--- 7469,7474 ----
***************
*** 7694,7703 ****
  }
  #endif
  
- /*ARGSUSED*/
      static void
  ex_swapname(eap)
!     exarg_T	*eap;
  {
      if (curbuf->b_ml.ml_mfp == NULL || curbuf->b_ml.ml_mfp->mf_fname == NULL)
  	MSG(_("No swap file"));
--- 7680,7688 ----
  }
  #endif
  
      static void
  ex_swapname(eap)
!     exarg_T	*eap UNUSED;
  {
      if (curbuf->b_ml.ml_mfp == NULL || curbuf->b_ml.ml_mfp->mf_fname == NULL)
  	MSG(_("No swap file"));
***************
*** 7710,7719 ****
   * offset.
   * (1998-11-02 16:21:01  R. Edward Ralston <eralston at computer.org>)
   */
- /*ARGSUSED*/
      static void
  ex_syncbind(eap)
!     exarg_T	*eap;
  {
  #ifdef FEAT_SCROLLBIND
      win_T	*wp;
--- 7695,7703 ----
   * offset.
   * (1998-11-02 16:21:01  R. Edward Ralston <eralston at computer.org>)
   */
      static void
  ex_syncbind(eap)
!     exarg_T	*eap UNUSED;
  {
  #ifdef FEAT_SCROLLBIND
      win_T	*wp;
***************
*** 7983,7992 ****
  /*
   * ":pwd".
   */
- /*ARGSUSED*/
      static void
  ex_pwd(eap)
!     exarg_T	*eap;
  {
      if (mch_dirname(NameBuff, MAXPATHL) == OK)
      {
--- 7967,7975 ----
  /*
   * ":pwd".
   */
      static void
  ex_pwd(eap)
!     exarg_T	*eap UNUSED;
  {
      if (mch_dirname(NameBuff, MAXPATHL) == OK)
      {
***************
*** 8417,8426 ****
  /*
   * ":undo".
   */
- /*ARGSUSED*/
      static void
  ex_undo(eap)
!     exarg_T	*eap;
  {
      if (eap->addr_count == 1)	    /* :undo 123 */
  	undo_time(eap->line2, FALSE, TRUE);
--- 8400,8408 ----
  /*
   * ":undo".
   */
      static void
  ex_undo(eap)
!     exarg_T	*eap UNUSED;
  {
      if (eap->addr_count == 1)	    /* :undo 123 */
  	undo_time(eap->line2, FALSE, TRUE);
***************
*** 8431,8440 ****
  /*
   * ":redo".
   */
- /*ARGSUSED*/
      static void
  ex_redo(eap)
!     exarg_T	*eap;
  {
      u_redo(1);
  }
--- 8413,8421 ----
  /*
   * ":redo".
   */
      static void
  ex_redo(eap)
!     exarg_T	*eap UNUSED;
  {
      u_redo(1);
  }
***************
*** 8442,8448 ****
  /*
   * ":earlier" and ":later".
   */
- /*ARGSUSED*/
      static void
  ex_later(eap)
      exarg_T	*eap;
--- 8423,8428 ----
***************
*** 8627,8636 ****
  /*
   * ":redrawstatus": force redraw of status line(s)
   */
- /*ARGSUSED*/
      static void
  ex_redrawstatus(eap)
!     exarg_T	*eap;
  {
  #if defined(FEAT_WINDOWS)
      int		r = RedrawingDisabled;
--- 8607,8615 ----
  /*
   * ":redrawstatus": force redraw of status line(s)
   */
      static void
  ex_redrawstatus(eap)
!     exarg_T	*eap UNUSED;
  {
  #if defined(FEAT_WINDOWS)
      int		r = RedrawingDisabled;
***************
*** 8891,8901 ****
  
  #if ((defined(FEAT_SESSION) || defined(FEAT_EVAL)) && defined(vim_mkdir)) \
  	|| defined(PROTO)
- /*ARGSUSED*/
      int
  vim_mkdir_emsg(name, prot)
      char_u	*name;
!     int		prot;
  {
      if (vim_mkdir(name, prot) != 0)
      {
--- 8870,8879 ----
  
  #if ((defined(FEAT_SESSION) || defined(FEAT_EVAL)) && defined(vim_mkdir)) \
  	|| defined(PROTO)
      int
  vim_mkdir_emsg(name, prot)
      char_u	*name;
!     int		prot UNUSED;
  {
      if (vim_mkdir(name, prot) != 0)
      {
***************
*** 10968,10977 ****
  }
  #endif
  
- /*ARGSUSED*/
      static void
  ex_digraphs(eap)
!     exarg_T	*eap;
  {
  #ifdef FEAT_DIGRAPHS
      if (*eap->arg != NUL)
--- 10946,10954 ----
  }
  #endif
  
      static void
  ex_digraphs(eap)
!     exarg_T	*eap UNUSED;
  {
  #ifdef FEAT_DIGRAPHS
      if (*eap->arg != NUL)
***************
*** 11005,11014 ****
  /*
   * ":nohlsearch"
   */
- /*ARGSUSED*/
      static void
  ex_nohlsearch(eap)
!     exarg_T	*eap;
  {
      no_hlsearch = TRUE;
      redraw_all_later(SOME_VALID);
--- 10982,10990 ----
  /*
   * ":nohlsearch"
   */
      static void
  ex_nohlsearch(eap)
!     exarg_T	*eap UNUSED;
  {
      no_hlsearch = TRUE;
      redraw_all_later(SOME_VALID);
***************
*** 11087,11096 ****
  /*
   * ":X": Get crypt key
   */
- /*ARGSUSED*/
      static void
  ex_X(eap)
!     exarg_T	*eap;
  {
      (void)get_crypt_key(TRUE, TRUE);
  }
--- 11063,11071 ----
  /*
   * ":X": Get crypt key
   */
      static void
  ex_X(eap)
!     exarg_T	*eap UNUSED;
  {
      (void)get_crypt_key(TRUE, TRUE);
  }
*** ../vim-7.2.173/src/ex_getln.c	2009-04-29 18:44:38.000000000 +0200
--- src/ex_getln.c	2009-05-15 20:49:22.000000000 +0200
***************
*** 140,150 ****
   * Return pointer to allocated string if there is a commandline, NULL
   * otherwise.
   */
- /*ARGSUSED*/
      char_u *
  getcmdline(firstc, count, indent)
      int		firstc;
!     long	count;		/* only used for incremental search */
      int		indent;		/* indent for inside conditionals */
  {
      int		c;
--- 140,149 ----
   * Return pointer to allocated string if there is a commandline, NULL
   * otherwise.
   */
      char_u *
  getcmdline(firstc, count, indent)
      int		firstc;
!     long	count UNUSED;	/* only used for incremental search */
      int		indent;		/* indent for inside conditionals */
  {
      int		c;
***************
*** 2113,2123 ****
  /*
   * Get an Ex command line for the ":" command.
   */
- /* ARGSUSED */
      char_u *
! getexline(c, dummy, indent)
      int		c;		/* normally ':', NUL for ":append" */
!     void	*dummy;		/* cookie not used */
      int		indent;		/* indent for inside conditionals */
  {
      /* When executing a register, remove ':' that's in front of each line. */
--- 2112,2121 ----
  /*
   * Get an Ex command line for the ":" command.
   */
      char_u *
! getexline(c, cookie, indent)
      int		c;		/* normally ':', NUL for ":append" */
!     void	*cookie UNUSED;
      int		indent;		/* indent for inside conditionals */
  {
      /* When executing a register, remove ':' that's in front of each line. */
***************
*** 2132,2143 ****
   * mappings or abbreviations.
   * Returns a string in allocated memory or NULL.
   */
- /* ARGSUSED */
      char_u *
! getexmodeline(promptc, dummy, indent)
      int		promptc;	/* normally ':', NUL for ":append" and '?' for
  				   :s prompt */
!     void	*dummy;		/* cookie not used */
      int		indent;		/* indent for inside conditionals */
  {
      garray_T	line_ga;
--- 2130,2140 ----
   * mappings or abbreviations.
   * Returns a string in allocated memory or NULL.
   */
      char_u *
! getexmodeline(promptc, cookie, indent)
      int		promptc;	/* normally ':', NUL for ":append" and '?' for
  				   :s prompt */
!     void	*cookie UNUSED;
      int		indent;		/* indent for inside conditionals */
  {
      garray_T	line_ga;
***************
*** 3832,3842 ****
   * Returns EXPAND_NOTHING when the character that triggered expansion should
   * be inserted like a normal character.
   */
- /*ARGSUSED*/
      static int
  showmatches(xp, wildmenu)
      expand_T	*xp;
!     int		wildmenu;
  {
  #define L_SHOWFILE(m) (showtail ? sm_gettail(files_found[m]) : files_found[m])
      int		num_files;
--- 3829,3838 ----
   * Returns EXPAND_NOTHING when the character that triggered expansion should
   * be inserted like a normal character.
   */
      static int
  showmatches(xp, wildmenu)
      expand_T	*xp;
!     int		wildmenu UNUSED;
  {
  #define L_SHOWFILE(m) (showtail ? sm_gettail(files_found[m]) : files_found[m])
      int		num_files;
*** ../vim-7.2.173/src/fileio.c	2009-05-13 20:47:07.000000000 +0200
--- src/fileio.c	2009-05-15 20:52:40.000000000 +0200
***************
*** 3498,3504 ****
  		    if (mch_stat((char *)IObuff, &st) < 0
  			    || st.st_uid != st_old.st_uid
  			    || st.st_gid != st_old.st_gid
! 			    || st.st_mode != perm)
  			backup_copy = TRUE;
  # endif
  		    /* Close the file before removing it, on MS-Windows we
--- 3498,3504 ----
  		    if (mch_stat((char *)IObuff, &st) < 0
  			    || st.st_uid != st_old.st_uid
  			    || st.st_gid != st_old.st_gid
! 			    || (long)st.st_mode != perm)
  			backup_copy = TRUE;
  # endif
  		    /* Close the file before removing it, on MS-Windows we
***************
*** 5963,5969 ****
  	else if (*ext == '.')
  #endif
  	{
! 	    if (s - ptr > (size_t)8)
  	    {
  		s = ptr + 8;
  		*s = '\0';
--- 5971,5977 ----
  	else if (*ext == '.')
  #endif
  	{
! 	    if ((size_t)(s - ptr) > (size_t)8)
  	    {
  		s = ptr + 8;
  		*s = '\0';
***************
*** 6460,6470 ****
   * return 2 if a message has been displayed.
   * return 0 otherwise.
   */
- /*ARGSUSED*/
      int
  buf_check_timestamp(buf, focus)
      buf_T	*buf;
!     int		focus;		/* called for GUI focus event */
  {
      struct stat	st;
      int		stat_res;
--- 6468,6477 ----
   * return 2 if a message has been displayed.
   * return 0 otherwise.
   */
      int
  buf_check_timestamp(buf, focus)
      buf_T	*buf;
!     int		focus UNUSED;	/* called for GUI focus event */
  {
      struct stat	st;
      int		stat_res;
***************
*** 6868,6879 ****
      /* Careful: autocommands may have made "buf" invalid! */
  }
  
- /*ARGSUSED*/
      void
  buf_store_time(buf, st, fname)
      buf_T	*buf;
      struct stat	*st;
!     char_u	*fname;
  {
      buf->b_mtime = (long)st->st_mtime;
      buf->b_orig_size = (size_t)st->st_size;
--- 6875,6885 ----
      /* Careful: autocommands may have made "buf" invalid! */
  }
  
      void
  buf_store_time(buf, st, fname)
      buf_T	*buf;
      struct stat	*st;
!     char_u	*fname UNUSED;
  {
      buf->b_mtime = (long)st->st_mtime;
      buf->b_orig_size = (size_t)st->st_size;
***************
*** 6936,6945 ****
   * The returned pointer is to allocated memory.
   * The returned pointer is NULL if no valid name was found.
   */
- /*ARGSUSED*/
      char_u  *
  vim_tempname(extra_char)
!     int	    extra_char;	    /* character to use in the name instead of '?' */
  {
  #ifdef USE_TMPNAM
      char_u	itmp[L_tmpnam];	/* use tmpnam() */
--- 6942,6950 ----
   * The returned pointer is to allocated memory.
   * The returned pointer is NULL if no valid name was found.
   */
      char_u  *
  vim_tempname(extra_char)
!     int	    extra_char UNUSED;  /* char to use in the name instead of '?' */
  {
  #ifdef USE_TMPNAM
      char_u	itmp[L_tmpnam];	/* use tmpnam() */
***************
*** 6968,6974 ****
  	/*
  	 * Try the entries in TEMPDIRNAMES to create the temp directory.
  	 */
! 	for (i = 0; i < sizeof(tempdirs) / sizeof(char *); ++i)
  	{
  	    /* expand $TMP, leave room for "/v1100000/999999999" */
  	    expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
--- 6973,6979 ----
  	/*
  	 * Try the entries in TEMPDIRNAMES to create the temp directory.
  	 */
! 	for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
  	{
  	    /* expand $TMP, leave room for "/v1100000/999999999" */
  	    expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
***************
*** 9588,9600 ****
   *
   * Returns NULL when out of memory.
   */
- /*ARGSUSED*/
      char_u *
  file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash)
      char_u	*pat;
      char_u	*pat_end;	/* first char after pattern or NULL */
      char	*allow_dirs;	/* Result passed back out in here */
!     int		no_bslash;	/* Don't use a backward slash as pathsep */
  {
      int		size;
      char_u	*endp;
--- 9593,9604 ----
   *
   * Returns NULL when out of memory.
   */
      char_u *
  file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash)
      char_u	*pat;
      char_u	*pat_end;	/* first char after pattern or NULL */
      char	*allow_dirs;	/* Result passed back out in here */
!     int		no_bslash UNUSED; /* Don't use a backward slash as pathsep */
  {
      int		size;
      char_u	*endp;
*** ../vim-7.2.173/src/misc1.c	2009-04-29 11:00:09.000000000 +0200
--- src/misc1.c	2009-05-15 20:59:08.000000000 +0200
***************
*** 2188,2199 ****
   *
   * return FAIL for failure, OK otherwise
   */
- /*ARGSUSED*/
      int
  del_bytes(count, fixpos_arg, use_delcombine)
      long	count;
      int		fixpos_arg;
!     int		use_delcombine;	    /* 'delcombine' option applies */
  {
      char_u	*oldp, *newp;
      colnr_T	oldlen;
--- 2188,2198 ----
   *
   * return FAIL for failure, OK otherwise
   */
      int
  del_bytes(count, fixpos_arg, use_delcombine)
      long	count;
      int		fixpos_arg;
!     int		use_delcombine UNUSED;	    /* 'delcombine' option applies */
  {
      char_u	*oldp, *newp;
      colnr_T	oldlen;
*** ../vim-7.2.173/src/move.c	2008-11-15 16:05:30.000000000 +0100
--- src/move.c	2009-05-15 21:00:06.000000000 +0200
***************
*** 1238,1248 ****
  /*
   * Scroll the current window down by "line_count" logical lines.  "CTRL-Y"
   */
- /*ARGSUSED*/
      void
  scrolldown(line_count, byfold)
      long	line_count;
!     int		byfold;		/* TRUE: count a closed fold as one line */
  {
      long	done = 0;	/* total # of physical lines done */
      int		wrow;
--- 1238,1247 ----
  /*
   * Scroll the current window down by "line_count" logical lines.  "CTRL-Y"
   */
      void
  scrolldown(line_count, byfold)
      long	line_count;
!     int		byfold UNUSED;	/* TRUE: count a closed fold as one line */
  {
      long	done = 0;	/* total # of physical lines done */
      int		wrow;
***************
*** 1349,1359 ****
  /*
   * Scroll the current window up by "line_count" logical lines.  "CTRL-E"
   */
- /*ARGSUSED*/
      void
  scrollup(line_count, byfold)
      long	line_count;
!     int		byfold;		/* TRUE: count a closed fold as one line */
  {
  #if defined(FEAT_FOLDING) || defined(FEAT_DIFF)
      linenr_T	lnum;
--- 1348,1357 ----
  /*
   * Scroll the current window up by "line_count" logical lines.  "CTRL-E"
   */
      void
  scrollup(line_count, byfold)
      long	line_count;
!     int		byfold UNUSED;	/* TRUE: count a closed fold as one line */
  {
  #if defined(FEAT_FOLDING) || defined(FEAT_DIFF)
      linenr_T	lnum;
*** ../vim-7.2.173/src/normal.c	2009-04-29 17:39:17.000000000 +0200
--- src/normal.c	2009-05-15 21:08:07.000000000 +0200
***************
*** 493,506 ****
      int		i;
  
      /* Fill the index table with a one to one relation. */
!     for (i = 0; i < NV_CMDS_SIZE; ++i)
  	nv_cmd_idx[i] = i;
  
      /* Sort the commands by the command character.  */
      qsort((void *)&nv_cmd_idx, (size_t)NV_CMDS_SIZE, sizeof(short), nv_compare);
  
      /* Find the first entry that can't be indexed by the command character. */
!     for (i = 0; i < NV_CMDS_SIZE; ++i)
  	if (i != nv_cmds[nv_cmd_idx[i]].cmd_char)
  	    break;
      nv_max_linear = i - 1;
--- 493,506 ----
      int		i;
  
      /* Fill the index table with a one to one relation. */
!     for (i = 0; i < (int)NV_CMDS_SIZE; ++i)
  	nv_cmd_idx[i] = i;
  
      /* Sort the commands by the command character.  */
      qsort((void *)&nv_cmd_idx, (size_t)NV_CMDS_SIZE, sizeof(short), nv_compare);
  
      /* Find the first entry that can't be indexed by the command character. */
!     for (i = 0; i < (int)NV_CMDS_SIZE; ++i)
  	if (i != nv_cmds[nv_cmd_idx[i]].cmd_char)
  	    break;
      nv_max_linear = i - 1;
***************
*** 561,571 ****
  /*
   * Execute a command in Normal mode.
   */
- /*ARGSUSED*/
      void
  normal_cmd(oap, toplevel)
      oparg_T	*oap;
!     int		toplevel;		/* TRUE when called from main() */
  {
      cmdarg_T	ca;			/* command arguments */
      int		c;
--- 561,570 ----
  /*
   * Execute a command in Normal mode.
   */
      void
  normal_cmd(oap, toplevel)
      oparg_T	*oap;
!     int		toplevel UNUSED;	/* TRUE when called from main() */
  {
      cmdarg_T	ca;			/* command arguments */
      int		c;
***************
*** 2188,2197 ****
  /*
   * Handle the "g@" operator: call 'operatorfunc'.
   */
- /*ARGSUSED*/
      static void
  op_function(oap)
!     oparg_T	*oap;
  {
  #ifdef FEAT_EVAL
      char_u	*(argv[1]);
--- 2187,2195 ----
  /*
   * Handle the "g@" operator: call 'operatorfunc'.
   */
      static void
  op_function(oap)
!     oparg_T	*oap UNUSED;
  {
  #ifdef FEAT_EVAL
      char_u	*(argv[1]);
***************
*** 4100,4109 ****
   * Command character that doesn't do anything, but unlike nv_ignore() does
   * start edit().  Used for "startinsert" executed while starting up.
   */
- /*ARGSUSED */
      static void
  nv_nop(cap)
!     cmdarg_T	*cap;
  {
  }
  
--- 4098,4106 ----
   * Command character that doesn't do anything, but unlike nv_ignore() does
   * start edit().  Used for "startinsert" executed while starting up.
   */
      static void
  nv_nop(cap)
!     cmdarg_T	*cap UNUSED;
  {
  }
  
***************
*** 5241,5247 ****
  	if (cap->oap->op_type != OP_NOP
  		&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
  		    || cap->oap->start.col >
! 					 STRLEN(ml_get(cap->oap->start.lnum))))
  	    clearopbeep(cap->oap);
      }
  }
--- 5238,5244 ----
  	if (cap->oap->op_type != OP_NOP
  		&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
  		    || cap->oap->start.col >
! 			       (colnr_T)STRLEN(ml_get(cap->oap->start.lnum))))
  	    clearopbeep(cap->oap);
      }
  }
***************
*** 5816,5822 ****
      for (n = cap->count1; n > 0; --n)
      {
  	if ((!PAST_LINE && oneright() == FAIL)
! 		|| (PAST_LINE && *ml_get_cursor() == NUL))
  	{
  	    /*
  	     *	  <Space> wraps to next line if 'whichwrap' has 's'.
--- 5813,5822 ----
      for (n = cap->count1; n > 0; --n)
      {
  	if ((!PAST_LINE && oneright() == FAIL)
! #ifdef FEAT_VISUAL
! 		|| (PAST_LINE && *ml_get_cursor() == NUL)
! #endif
! 		)
  	{
  	    /*
  	     *	  <Space> wraps to next line if 'whichwrap' has 's'.
*** ../vim-7.2.173/src/option.c	2009-03-18 15:40:03.000000000 +0100
--- src/option.c	2009-05-15 21:08:50.000000000 +0200
***************
*** 5302,5315 ****
   * When "set_sid" is zero set the scriptID to current_SID.  When "set_sid" is
   * SID_NONE don't set the scriptID.  Otherwise set the scriptID to "set_sid".
   */
- /*ARGSUSED*/
      void
  set_string_option_direct(name, opt_idx, val, opt_flags, set_sid)
      char_u	*name;
      int		opt_idx;
      char_u	*val;
      int		opt_flags;	/* OPT_FREE, OPT_LOCAL and/or OPT_GLOBAL */
!     int		set_sid;
  {
      char_u	*s;
      char_u	**varp;
--- 5302,5314 ----
   * When "set_sid" is zero set the scriptID to current_SID.  When "set_sid" is
   * SID_NONE don't set the scriptID.  Otherwise set the scriptID to "set_sid".
   */
      void
  set_string_option_direct(name, opt_idx, val, opt_flags, set_sid)
      char_u	*name;
      int		opt_idx;
      char_u	*val;
      int		opt_flags;	/* OPT_FREE, OPT_LOCAL and/or OPT_GLOBAL */
!     int		set_sid UNUSED;
  {
      char_u	*s;
      char_u	**varp;
***************
*** 9357,9366 ****
  /*
   * Check for NULL pointers in a winopt_T and replace them with empty_option.
   */
- /*ARGSUSED*/
      void
  check_winopt(wop)
!     winopt_T	*wop;
  {
  #ifdef FEAT_FOLDING
      check_string_option(&wop->wo_fdi);
--- 9356,9364 ----
  /*
   * Check for NULL pointers in a winopt_T and replace them with empty_option.
   */
      void
  check_winopt(wop)
!     winopt_T	*wop UNUSED;
  {
  #ifdef FEAT_FOLDING
      check_string_option(&wop->wo_fdi);
***************
*** 9382,9391 ****
  /*
   * Free the allocated memory inside a winopt_T.
   */
- /*ARGSUSED*/
      void
  clear_winopt(wop)
!     winopt_T	*wop;
  {
  #ifdef FEAT_FOLDING
      clear_string_option(&wop->wo_fdi);
--- 9380,9388 ----
  /*
   * Free the allocated memory inside a winopt_T.
   */
      void
  clear_winopt(wop)
!     winopt_T	*wop UNUSED;
  {
  #ifdef FEAT_FOLDING
      clear_string_option(&wop->wo_fdi);
*** ../vim-7.2.173/src/os_unix.c	2009-05-13 12:46:36.000000000 +0200
--- src/os_unix.c	2009-05-15 21:13:43.000000000 +0200
***************
*** 458,467 ****
   * Return total amount of memory available in Kbyte.
   * Doesn't change when memory has been allocated.
   */
- /* ARGSUSED */
      long_u
  mch_total_mem(special)
!     int special;
  {
  # ifdef __EMX__
      return ulimit(3, 0L) >> 10;   /* always 32MB? */
--- 458,466 ----
   * Return total amount of memory available in Kbyte.
   * Doesn't change when memory has been allocated.
   */
      long_u
  mch_total_mem(special)
!     int special UNUSED;
  {
  # ifdef __EMX__
      return ulimit(3, 0L) >> 10;   /* always 32MB? */
***************
*** 815,821 ****
   * Let me try it with a few tricky defines from my own osdef.h	(jw).
   */
  #if defined(SIGWINCH)
- /* ARGSUSED */
      static RETSIGTYPE
  sig_winch SIGDEFARG(sigarg)
  {
--- 814,819 ----
***************
*** 1355,1365 ****
  /*
   * Check_win checks whether we have an interactive stdout.
   */
- /* ARGSUSED */
      int
  mch_check_win(argc, argv)
!     int	    argc;
!     char    **argv;
  {
  #ifdef OS2
      /*
--- 1353,1362 ----
  /*
   * Check_win checks whether we have an interactive stdout.
   */
      int
  mch_check_win(argc, argv)
!     int	    argc UNUSED;
!     char    **argv UNUSED;
  {
  #ifdef OS2
      /*
***************
*** 2467,2473 ****
      }
  
      /* Catch file names which are too long. */
!     if (retval == FAIL || STRLEN(buf) + STRLEN(fname) >= len)
  	return FAIL;
  
      /* Do not append ".", "/dir/." is equal to "/dir". */
--- 2464,2470 ----
      }
  
      /* Catch file names which are too long. */
!     if (retval == FAIL || (int)(STRLEN(buf) + STRLEN(fname)) >= len)
  	return FAIL;
  
      /* Do not append ".", "/dir/." is equal to "/dir". */
***************
*** 2686,2692 ****
   */
      vim_acl_T
  mch_get_acl(fname)
!     char_u	*fname;
  {
      vim_acl_T	ret = NULL;
  #ifdef HAVE_POSIX_ACL
--- 2683,2689 ----
   */
      vim_acl_T
  mch_get_acl(fname)
!     char_u	*fname UNUSED;
  {
      vim_acl_T	ret = NULL;
  #ifdef HAVE_POSIX_ACL
***************
*** 2746,2752 ****
   */
      void
  mch_set_acl(fname, aclent)
!     char_u	*fname;
      vim_acl_T	aclent;
  {
      if (aclent == NULL)
--- 2743,2749 ----
   */
      void
  mch_set_acl(fname, aclent)
!     char_u	*fname UNUSED;
      vim_acl_T	aclent;
  {
      if (aclent == NULL)
***************
*** 2789,2798 ****
  /*
   * Set hidden flag for "name".
   */
- /* ARGSUSED */
      void
  mch_hide(name)
!     char_u	*name;
  {
      /* can't hide a file */
  }
--- 2786,2794 ----
  /*
   * Set hidden flag for "name".
   */
      void
  mch_hide(name)
!     char_u	*name UNUSED;
  {
      /* can't hide a file */
  }
***************
*** 3481,3490 ****
  /*
   * set screen mode, always fails.
   */
- /* ARGSUSED */
      int
  mch_screenmode(arg)
!     char_u   *arg;
  {
      EMSG(_(e_screenmode));
      return FAIL;
--- 3477,3485 ----
  /*
   * set screen mode, always fails.
   */
      int
  mch_screenmode(arg)
!     char_u   *arg UNUSED;
  {
      EMSG(_(e_screenmode));
      return FAIL;
***************
*** 4189,4197 ****
  			    {
  				s = vim_strchr(lp + written, NL);
  				len = write(toshell_fd, (char *)lp + written,
! 					   s == NULL ? l : s - (lp + written));
  			    }
! 			    if (len == l)
  			    {
  				/* Finished a line, add a NL, unless this line
  				 * should not have one. */
--- 4184,4193 ----
  			    {
  				s = vim_strchr(lp + written, NL);
  				len = write(toshell_fd, (char *)lp + written,
! 					   s == NULL ? l
! 					      : (size_t)(s - (lp + written)));
  			    }
! 			    if (len == (int)l)
  			    {
  				/* Finished a line, add a NL, unless this line
  				 * should not have one. */
***************
*** 4746,4752 ****
   * Returns also, when a request from Sniff is waiting -- toni.
   * Or when a Linux GPM mouse event is waiting.
   */
- /* ARGSUSED */
  #if defined(__BEOS__)
      int
  #else
--- 4742,4747 ----
***************
*** 4755,4761 ****
  RealWaitForChar(fd, msec, check_for_gpm)
      int		fd;
      long	msec;
!     int		*check_for_gpm;
  {
      int		ret;
  #if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
--- 4750,4756 ----
  RealWaitForChar(fd, msec, check_for_gpm)
      int		fd;
      long	msec;
!     int		*check_for_gpm UNUSED;
  {
      int		ret;
  #if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
***************
*** 5572,5578 ****
      i = fread((char *)buffer, 1, len, fd);
      fclose(fd);
      mch_remove(tempname);
!     if (i != len)
      {
  	/* unexpected read error */
  	EMSG2(_(e_notread), tempname);
--- 5567,5573 ----
      i = fread((char *)buffer, 1, len, fd);
      fclose(fd);
      mch_remove(tempname);
!     if (i != (int)len)
      {
  	/* unexpected read error */
  	EMSG2(_(e_notread), tempname);
***************
*** 5633,5639 ****
  	if (shell_style == STYLE_PRINT && !did_find_nul)
  	{
  	    /* If there is a NUL, set did_find_nul, else set check_spaces */
! 	    if (len && (int)STRLEN(buffer) < len - 1)
  		did_find_nul = TRUE;
  	    else
  		check_spaces = TRUE;
--- 5628,5634 ----
  	if (shell_style == STYLE_PRINT && !did_find_nul)
  	{
  	    /* If there is a NUL, set did_find_nul, else set check_spaces */
! 	    if (len && (int)STRLEN(buffer) < (int)len - 1)
  		did_find_nul = TRUE;
  	    else
  		check_spaces = TRUE;
*** ../vim-7.2.173/src/os_unix.h	2009-05-13 12:46:36.000000000 +0200
--- src/os_unix.h	2009-05-15 21:10:31.000000000 +0200
***************
*** 126,132 ****
  #  define SIGDUMMYARG	0, 0, (struct sigcontext *)0
  # else
  #  define SIGPROTOARG	(int)
! #  define SIGDEFARG(s)	(s) int s;
  #  define SIGDUMMYARG	0
  # endif
  #else
--- 126,132 ----
  #  define SIGDUMMYARG	0, 0, (struct sigcontext *)0
  # else
  #  define SIGPROTOARG	(int)
! #  define SIGDEFARG(s)	(s) int s UNUSED;
  #  define SIGDUMMYARG	0
  # endif
  #else
*** ../vim-7.2.173/src/regexp.c	2009-02-21 22:03:06.000000000 +0100
--- src/regexp.c	2009-05-15 21:14:18.000000000 +0200
***************
*** 471,477 ****
  
      if ((*pp)[1] == ':')
      {
! 	for (i = 0; i < sizeof(class_names) / sizeof(*class_names); ++i)
  	    if (STRNCMP(*pp + 2, class_names[i], STRLEN(class_names[i])) == 0)
  	    {
  		*pp += STRLEN(class_names[i]) + 2;
--- 471,477 ----
  
      if ((*pp)[1] == ':')
      {
! 	for (i = 0; i < (int)(sizeof(class_names) / sizeof(*class_names)); ++i)
  	    if (STRNCMP(*pp + 2, class_names[i], STRLEN(class_names[i])) == 0)
  	    {
  		*pp += STRLEN(class_names[i]) + 2;
***************
*** 3362,3373 ****
   * 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;
--- 3362,3372 ----
   * 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, tm)
      char_u	*line;
      colnr_T	col;		/* column to start looking for match */
!     proftime_T	*tm UNUSED;	/* timeout limit or NULL */
  {
      regprog_T	*prog;
      char_u	*s;
*** ../vim-7.2.173/src/search.c	2009-04-22 18:43:06.000000000 +0200
--- src/search.c	2009-05-15 21:16:36.000000000 +0200
***************
*** 522,528 ****
   * When FEAT_EVAL is defined, returns the index of the first matching
   * subpattern plus one; one if there was none.
   */
- /*ARGSUSED*/
      int
  searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum, tm)
      win_T	*win;		/* window to search in; can be NULL for a
--- 522,527 ----
***************
*** 535,541 ****
      int		options;
      int		pat_use;	/* which pattern to use when "pat" is empty */
      linenr_T	stop_lnum;	/* stop after this line number when != 0 */
!     proftime_T	*tm;		/* timeout limit or NULL */
  {
      int		found;
      linenr_T	lnum;		/* no init to shut up Apollo cc */
--- 534,540 ----
      int		options;
      int		pat_use;	/* which pattern to use when "pat" is empty */
      linenr_T	stop_lnum;	/* stop after this line number when != 0 */
!     proftime_T	*tm UNUSED;	/* timeout limit or NULL */
  {
      int		found;
      linenr_T	lnum;		/* no init to shut up Apollo cc */
***************
*** 554,561 ****
      int		save_called_emsg = called_emsg;
  #ifdef FEAT_SEARCH_EXTRA
      int		break_loop = FALSE;
- #else
- # define break_loop FALSE
  #endif
  
      if (search_regcomp(pat, RE_SEARCH, pat_use,
--- 553,558 ----
***************
*** 940,946 ****
  	     * twice.
  	     */
  	    if (!p_ws || stop_lnum != 0 || got_int || called_emsg
! 					       || break_loop || found || loop)
  		break;
  
  	    /*
--- 937,946 ----
  	     * twice.
  	     */
  	    if (!p_ws || stop_lnum != 0 || got_int || called_emsg
! #ifdef FEAT_SEARCH_EXTRA
! 					       || break_loop
! #endif
! 					       || found || loop)
  		break;
  
  	    /*
***************
*** 958,964 ****
  		give_warning((char_u *)_(dir == BACKWARD
  					  ? top_bot_msg : bot_top_msg), TRUE);
  	}
! 	if (got_int || called_emsg || break_loop)
  	    break;
      }
      while (--count > 0 && found);   /* stop after count matches or no match */
--- 958,968 ----
  		give_warning((char_u *)_(dir == BACKWARD
  					  ? top_bot_msg : bot_top_msg), TRUE);
  	}
! 	if (got_int || called_emsg
! #ifdef FEAT_SEARCH_EXTRA
! 		|| break_loop
! #endif
! 		)
  	    break;
      }
      while (--count > 0 && found);   /* stop after count matches or no match */
*** ../vim-7.2.173/src/tag.c	2009-02-23 00:53:35.000000000 +0100
--- src/tag.c	2009-05-15 21:16:59.000000000 +0200
***************
*** 1105,1114 ****
  /*
   * Print the tag stack
   */
- /*ARGSUSED*/
      void
  do_tags(eap)
!     exarg_T	*eap;
  {
      int		i;
      char_u	*name;
--- 1105,1113 ----
  /*
   * Print the tag stack
   */
      void
  do_tags(eap)
!     exarg_T	*eap UNUSED;
  {
      int		i;
      char_u	*name;
***************
*** 2530,2540 ****
   * Callback function for finding all "tags" and "tags-??" files in
   * 'runtimepath' doc directories.
   */
- /*ARGSUSED*/
      static void
  found_tagfile_cb(fname, cookie)
      char_u	*fname;
!     void	*cookie;
  {
      if (ga_grow(&tag_fnames, 1) == OK)
  	((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] =
--- 2529,2538 ----
   * Callback function for finding all "tags" and "tags-??" files in
   * 'runtimepath' doc directories.
   */
      static void
  found_tagfile_cb(fname, cookie)
      char_u	*fname;
!     void	*cookie UNUSED;
  {
      if (ga_grow(&tag_fnames, 1) == OK)
  	((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] =
*** ../vim-7.2.173/src/version.c	2009-05-14 22:19:19.000000000 +0200
--- src/version.c	2009-05-15 21:21:44.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     174,
  /**/

-- 
TERRY GILLIAM PLAYED: PATSY (ARTHUR'S TRUSTY STEED), THE GREEN KNIGHT
                      SOOTHSAYER, BRIDGEKEEPER, SIR GAWAIN (THE FIRST TO BE
                      KILLED BY THE RABBIT)
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.175 ---
To: vim-dev at vim.org
Subject: Patch 7.2.175
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.175
Problem:    Compiler warning in OpenBSD.
Solution:   Add type cast for NULL. (Dasn)
Files:	    src/if_cscope.c


*** ../vim-7.2.174/src/if_cscope.c	2009-04-22 16:22:44.000000000 +0200
--- src/if_cscope.c	2009-05-16 16:15:03.000000000 +0200
***************
*** 994,1000 ****
  	vim_free(ppath);
  
  #if defined(UNIX)
! 	if (execl("/bin/sh", "sh", "-c", cmd, NULL) == -1)
  	    PERROR(_("cs_create_connection exec failed"));
  
  	exit(127);
--- 994,1000 ----
  	vim_free(ppath);
  
  #if defined(UNIX)
! 	if (execl("/bin/sh", "sh", "-c", cmd, (char *)NULL) == -1)
  	    PERROR(_("cs_create_connection exec failed"));
  
  	exit(127);
*** ../vim-7.2.174/src/version.c	2009-05-15 21:31:11.000000000 +0200
--- src/version.c	2009-05-16 16:13:15.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     175,
  /**/

-- 
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.2.176 ---
To: vim-dev at vim.org
Subject: Patch 7.2.176
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.176
Problem:    Exceptions for splint are not useful.
Solution:   Remove the S_SPLINT_S ifdefs.
Files:	    src/edit.c, src/ex_cmds.c, src/ex_docmd.c, src/os_unix.c,
	    src/os_unix.h, src/os_unixx.h, src/structs.h, src/term.h


*** ../vim-7.2.175/src/edit.c	2009-05-15 21:31:11.000000000 +0200
--- src/edit.c	2009-05-16 16:18:35.000000000 +0200
***************
*** 69,79 ****
      compl_T	*cp_prev;
      char_u	*cp_str;	/* matched text */
      char	cp_icase;	/* TRUE or FALSE: ignore case */
- #ifdef S_SPLINT_S  /* splint can't handle array of pointers */
-     char_u	**cp_text;	/* text for the menu */
- #else
      char_u	*(cp_text[CPT_COUNT]);	/* text for the menu */
- #endif
      char_u	*cp_fname;	/* file containing the match, allocated when
  				 * cp_flags has FREE_FNAME */
      int		cp_flags;	/* ORIGINAL_TEXT, CONT_S_IPOS or FREE_FNAME */
--- 69,75 ----
***************
*** 3835,3845 ****
      char_u	*word;
      int		icase = FALSE;
      int		adup = FALSE;
- #ifdef S_SPLINT_S  /* splint doesn't parse array of pointers correctly */
-     char_u	**cptext;
- #else
      char_u	*(cptext[CPT_COUNT]);
- #endif
  
      if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
      {
--- 3831,3837 ----
*** ../vim-7.2.175/src/ex_cmds.c	2009-05-15 21:31:11.000000000 +0200
--- src/ex_cmds.c	2009-05-16 16:18:56.000000000 +0200
***************
*** 5776,5785 ****
  {
      char_u	*s, *d;
      int		i;
- #ifdef S_SPLINT_S  /* splint doesn't understand array of pointers */
-     static char **mtable;
-     static char **rtable;
- #else
      static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
  			       "/*", "/\\*", "\"*", "**",
  			       "/\\(\\)",
--- 5776,5781 ----
***************
*** 5794,5800 ****
  			       "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
  			       "\\[count]", "\\[quotex]", "\\[range]",
  			       "\\[pattern]", "\\\\bar", "/\\\\%\\$"};
- #endif
      int flags;
  
      d = IObuff;		    /* assume IObuff is long enough! */
--- 5790,5795 ----
*** ../vim-7.2.175/src/ex_docmd.c	2009-05-15 21:31:11.000000000 +0200
--- src/ex_docmd.c	2009-05-16 16:19:26.000000000 +0200
***************
*** 9395,9407 ****
  {
      int		len;
      int		i;
! #ifdef S_SPLINT_S  /* splint can't handle array of pointers */
!     static char **spec_str;
!     static char *(nospec_str[])
! #else
!     static char *(spec_str[])
! #endif
! 	= {
  		    "%",
  #define SPEC_PERC   0
  		    "#",
--- 9395,9401 ----
  {
      int		len;
      int		i;
!     static char *(spec_str[]) = {
  		    "%",
  #define SPEC_PERC   0
  		    "#",
*** ../vim-7.2.175/src/os_unix.c	2009-05-15 21:31:11.000000000 +0200
--- src/os_unix.c	2009-05-16 16:20:00.000000000 +0200
***************
*** 199,207 ****
  #endif
  
  #ifndef SIG_ERR
! # ifndef S_SPLINT_S
! #  define SIG_ERR	((RETSIGTYPE (*)())-1)
! # endif
  #endif
  
  /* volatile because it is used in signal handler sig_winch(). */
--- 199,205 ----
  #endif
  
  #ifndef SIG_ERR
! # define SIG_ERR	((RETSIGTYPE (*)())-1)
  #endif
  
  /* volatile because it is used in signal handler sig_winch(). */
***************
*** 443,451 ****
  
  #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
  # ifdef HAVE_SYS_RESOURCE_H
! #  ifndef S_SPLINT_S  /* splint crashes on bits/resource.h */
! #   include <sys/resource.h>
! #  endif
  # endif
  # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
  #  include <sys/sysctl.h>
--- 441,447 ----
  
  #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
  # ifdef HAVE_SYS_RESOURCE_H
! #  include <sys/resource.h>
  # endif
  # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
  #  include <sys/sysctl.h>
*** ../vim-7.2.175/src/os_unix.h	2009-05-15 21:31:11.000000000 +0200
--- src/os_unix.h	2009-05-16 16:17:22.000000000 +0200
***************
*** 53,61 ****
  #endif
  
  #ifdef HAVE_UNISTD_H
! # ifndef S_SPLINT_S  /* splint crashes on bits/confname.h */
! #  include <unistd.h>
! # endif
  #endif
  
  #ifdef HAVE_LIBC_H
--- 53,59 ----
  #endif
  
  #ifdef HAVE_UNISTD_H
! # include <unistd.h>
  #endif
  
  #ifdef HAVE_LIBC_H
*** ../vim-7.2.175/src/structs.h	2009-05-13 20:47:07.000000000 +0200
--- src/structs.h	2009-05-16 16:17:51.000000000 +0200
***************
*** 1646,1656 ****
  #endif
  #ifdef FEAT_DIFF
      diff_T	    *tp_first_diff;
- # ifdef S_SPLINT_S  /* splint doesn't understand the array of pointers */
-     buf_T	    **tp_diffbuf;
- # else
      buf_T	    *(tp_diffbuf[DB_COUNT]);
- # endif
      int		    tp_diff_invalid;	/* list of diffs is outdated */
  #endif
      frame_T	    *tp_snapshot;    /* window layout snapshot */
--- 1646,1652 ----
*** ../vim-7.2.175/src/term.h	2009-05-13 18:54:14.000000000 +0200
--- src/term.h	2009-05-16 16:20:06.000000000 +0200
***************
*** 96,106 ****
   * - there should be code in term.c to obtain the value from the termcap
   */
  
- #ifdef S_SPLINT_S  /* splint doesn't understand array of pointers */
- extern char_u **term_strings;    /* current terminal strings */
- #else
  extern char_u *(term_strings[]);    /* current terminal strings */
- #endif
  
  /*
   * strings used for terminal
--- 96,102 ----
*** ../vim-7.2.175/src/version.c	2009-05-16 16:15:39.000000000 +0200
--- src/version.c	2009-05-16 16:34:10.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     176,
  /**/

-- 
Corn oil comes from corn and olive oil comes from olives, so where
does baby oil come from?

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


--- NEW FILE 7.2.177 ---
To: vim-dev at vim.org
Subject: Patch 7.2.177
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.177
Problem:    Compiler warnings when using -Wextra
Solution:   Add UNUSED and type casts.
Files:	    src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c,
	    src/fileio.c, src/hardcopy.c, src/if_cscope.c, src/if_xcmdsrv.c,
	    src/farsi.c, src/mark.c, src/menu.c


*** ../vim-7.2.176/src/eval.c	2009-05-15 21:31:11.000000000 +0200
--- src/eval.c	2009-05-16 16:58:30.000000000 +0200
***************
*** 3772,3778 ****
   * Function given to ExpandGeneric() to obtain the list of user defined
   * (global/buffer/window/built-in) variable names.
   */
- /*ARGSUSED*/
      char_u *
  get_user_var_name(xp, idx)
      expand_T	*xp;
--- 3772,3777 ----
***************
*** 7787,7793 ****
   * Function given to ExpandGeneric() to obtain the list of internal or
   * user defined variable or function names.
   */
- /*ARGSUSED*/
      char_u *
  get_expr_name(xp, idx)
      expand_T	*xp;
--- 7786,7791 ----
***************
*** 8655,8664 ****
  /*
   * "byte2line(byte)" function
   */
- /*ARGSUSED*/
      static void
  f_byte2line(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
  #ifndef FEAT_BYTEOFF
--- 8653,8661 ----
  /*
   * "byte2line(byte)" function
   */
      static void
  f_byte2line(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
  #ifndef FEAT_BYTEOFF
***************
*** 8678,8684 ****
  /*
   * "byteidx()" function
   */
- /*ARGSUSED*/
      static void
  f_byteidx(argvars, rettv)
      typval_T	*argvars;
--- 8675,8680 ----
***************
*** 8852,8858 ****
      static void
  f_clearmatches(argvars, rettv)
      typval_T	*argvars UNUSED;
!     typval_T	*rettv;
  {
  #ifdef FEAT_SEARCH_EXTRA
      clear_matches(curwin);
--- 8848,8854 ----
      static void
  f_clearmatches(argvars, rettv)
      typval_T	*argvars UNUSED;
!     typval_T	*rettv UNUSED;
  {
  #ifdef FEAT_SEARCH_EXTRA
      clear_matches(curwin);
***************
*** 8916,8926 ****
  /*
   * "complete()" function
   */
- /*ARGSUSED*/
      static void
  f_complete(argvars, rettv)
      typval_T	*argvars;
!     typval_T	*rettv;
  {
      int	    startcol;
  
--- 8912,8921 ----
  /*
   * "complete()" function
   */
      static void
  f_complete(argvars, rettv)
      typval_T	*argvars;
!     typval_T	*rettv UNUSED;
  {
      int	    startcol;
  
***************
*** 8951,8957 ****
  /*
   * "complete_add()" function
   */
- /*ARGSUSED*/
      static void
  f_complete_add(argvars, rettv)
      typval_T	*argvars;
--- 8946,8951 ----
***************
*** 8963,8972 ****
  /*
   * "complete_check()" function
   */
- /*ARGSUSED*/
      static void
  f_complete_check(argvars, rettv)
!     typval_T	*argvars;
      typval_T	*rettv;
  {
      int		saved = RedrawingDisabled;
--- 8957,8965 ----
  /*
   * "complete_check()" function
   */
      static void
  f_complete_check(argvars, rettv)
!     typval_T	*argvars UNUSED;
      typval_T	*rettv;
  {
      int		saved = RedrawingDisabled;
***************
*** 8981,8991 ****
  /*
   * "confirm(message, buttons[, default [, type]])" function
   */
- /*ARGSUSED*/
      static void
  f_confirm(argvars, rettv)
!     typval_T	*argvars;
!     typval_T	*rettv;
  {
  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
      char_u	*message;
--- 8974,8983 ----
  /*
   * "confirm(message, buttons[, default [, type]])" function
   */
      static void
  f_confirm(argvars, rettv)
!     typval_T	*argvars UNUSED;
!     typval_T	*rettv UNUSED;
  {
  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
      char_u	*message;
***************
*** 9150,9160 ****
   *
   * Checks the existence of a cscope connection.
   */
- /*ARGSUSED*/
      static void
  f_cscope_connection(argvars, rettv)
!     typval_T	*argvars;
!     typval_T	*rettv;
  {
  #ifdef FEAT_CSCOPE
      int		num = 0;
--- 9142,9151 ----
   *
   * Checks the existence of a cscope connection.
   */
      static void
  f_cscope_connection(argvars, rettv)
!     typval_T	*argvars UNUSED;
!     typval_T	*rettv UNUSED;
  {
  #ifdef FEAT_CSCOPE
      int		num = 0;
***************
*** 9181,9187 ****
   * Moves the cursor to the specified line and column.
   * Returns 0 when the position could be set, -1 otherwise.
   */
- /*ARGSUSED*/
      static void
[...2327 lines suppressed...]
  
      if (!curwin->w_cursor.col && p_ri)
--- 595,602 ----
  {
      int	tempc;
  
!     if (curwin->w_cursor.col != 0 &&
! 	(curwin->w_cursor.col + 1 == (colnr_T)STRLEN(ml_get_curline())))
  	return;
  
      if (!curwin->w_cursor.col && p_ri)
***************
*** 663,670 ****
  {
      int	tempc;
  
!     if (!curwin->w_cursor.col &&
! 	(curwin->w_cursor.col+1 == STRLEN(ml_get_curline())))
  	return;
  
      if (!curwin->w_cursor.col && p_ri)
--- 664,671 ----
  {
      int	tempc;
  
!     if (curwin->w_cursor.col != 0 &&
! 	(curwin->w_cursor.col + 1 == (colnr_T)STRLEN(ml_get_curline())))
  	return;
  
      if (!curwin->w_cursor.col && p_ri)
*** ../vim-7.2.176/src/mark.c	2009-04-29 11:00:09.000000000 +0200
--- src/mark.c	2009-05-16 17:14:56.000000000 +0200
***************
*** 884,893 ****
  /*
   * print the jumplist
   */
- /*ARGSUSED*/
      void
  ex_jumps(eap)
!     exarg_T	*eap;
  {
      int		i;
      char_u	*name;
--- 884,892 ----
  /*
   * print the jumplist
   */
      void
  ex_jumps(eap)
!     exarg_T	*eap UNUSED;
  {
      int		i;
      char_u	*name;
***************
*** 933,942 ****
  /*
   * print the changelist
   */
- /*ARGSUSED*/
      void
  ex_changes(eap)
!     exarg_T	*eap;
  {
      int		i;
      char_u	*name;
--- 932,940 ----
  /*
   * print the changelist
   */
      void
  ex_changes(eap)
!     exarg_T	*eap UNUSED;
  {
      int		i;
      char_u	*name;
*** ../vim-7.2.176/src/menu.c	2008-08-17 23:43:53.000000000 +0200
--- src/menu.c	2009-05-16 17:19:57.000000000 +0200
***************
*** 231,237 ****
  		if (skipdigits(menu_path + 7) == p)
  		{
  		    menuarg.iconidx = atoi((char *)menu_path + 7);
! 		    if (menuarg.iconidx >= TOOLBAR_NAME_COUNT)
  			menuarg.iconidx = -1;
  		    else
  			menuarg.icon_builtin = TRUE;
--- 231,237 ----
  		if (skipdigits(menu_path + 7) == p)
  		{
  		    menuarg.iconidx = atoi((char *)menu_path + 7);
! 		    if (menuarg.iconidx >= (int)TOOLBAR_NAME_COUNT)
  			menuarg.iconidx = -1;
  		    else
  			menuarg.icon_builtin = TRUE;
***************
*** 239,245 ****
  	    }
  	    else
  	    {
! 		for (i = 0; i < TOOLBAR_NAME_COUNT; ++i)
  		    if (STRNCMP(toolbar_names[i], menu_path, p - menu_path)
  									 == 0)
  		    {
--- 239,245 ----
  	    }
  	    else
  	    {
! 		for (i = 0; i < (int)TOOLBAR_NAME_COUNT; ++i)
  		    if (STRNCMP(toolbar_names[i], menu_path, p - menu_path)
  									 == 0)
  		    {
***************
*** 1341,1350 ****
   * Function given to ExpandGeneric() to obtain the list of (sub)menus (not
   * entries).
   */
- /*ARGSUSED*/
      char_u *
  get_menu_name(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      static vimmenu_T	*menu = NULL;
--- 1341,1349 ----
   * Function given to ExpandGeneric() to obtain the list of (sub)menus (not
   * entries).
   */
      char_u *
  get_menu_name(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      static vimmenu_T	*menu = NULL;
***************
*** 1378,1387 ****
   * Function given to ExpandGeneric() to obtain the list of menus and menu
   * entries.
   */
- /*ARGSUSED*/
      char_u *
  get_menu_names(xp, idx)
!     expand_T	*xp;
      int		idx;
  {
      static vimmenu_T	*menu = NULL;
--- 1377,1385 ----
   * Function given to ExpandGeneric() to obtain the list of menus and menu
   * entries.
   */
      char_u *
  get_menu_names(xp, idx)
!     expand_T	*xp UNUSED;
      int		idx;
  {
      static vimmenu_T	*menu = NULL;
***************
*** 1739,1748 ****
  /*
   * Return TRUE if the menu is the tearoff menu.
   */
- /*ARGSUSED*/
      static int
  menu_is_tearoff(name)
!     char_u *name;
  {
  #ifdef FEAT_GUI
      return (STRCMP(name, TEAR_STRING) == 0);
--- 1737,1745 ----
  /*
   * Return TRUE if the menu is the tearoff menu.
   */
      static int
  menu_is_tearoff(name)
!     char_u *name UNUSED;
  {
  #ifdef FEAT_GUI
      return (STRCMP(name, TEAR_STRING) == 0);
*** ../vim-7.2.176/src/version.c	2009-05-16 16:36:25.000000000 +0200
--- src/version.c	2009-05-16 17:22:08.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     177,
  /**/

-- 
(letter from Mark to Mike, about the film's probable certificate)
      For an 'A' we would have to: Lose as many shits as possible; Take Jesus
      Christ out, if possible; Loose "I fart in your general direction"; Lose
      "the oral sex"; Lose "oh, fuck off"; Lose "We make castanets out of your
      testicles"
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.178 ---
To: vim-dev at vim.org
Subject: Patch 7.2.178
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.178
Problem:    Using negative value for device number might not work.
Solution:   Use a separate flag for whether ffv_dev was set.
Files:	    src/misc2.c


*** ../vim-7.2.177/src/misc2.c	2009-04-29 11:00:09.000000000 +0200
--- src/misc2.c	2009-05-16 21:05:10.000000000 +0200
***************
*** 2841,2847 ****
  get_key_name(i)
      int	    i;
  {
!     if (i >= KEY_NAMES_TABLE_LEN)
  	return NULL;
      return  key_names_table[i].name;
  }
--- 2841,2847 ----
  get_key_name(i)
      int	    i;
  {
!     if (i >= (int)KEY_NAMES_TABLE_LEN)
  	return NULL;
      return  key_names_table[i].name;
  }
***************
*** 3869,3875 ****
       * use filename.
       */
  #ifdef UNIX
!     int			ffv_dev;	/* device number (-1 if not set) */
      ino_t		ffv_ino;	/* inode number */
  #endif
      /* The memory for this struct is allocated according to the length of
--- 3869,3876 ----
       * use filename.
       */
  #ifdef UNIX
!     int			ffv_dev_valid;	/* ffv_dev and ffv_ino were set */
!     dev_t		ffv_dev;	/* device number */
      ino_t		ffv_ino;	/* inode number */
  #endif
      /* The memory for this struct is allocated according to the length of
***************
*** 4059,4071 ****
   * This function silently ignores a few errors, vim_findfile() will have
   * limited functionality then.
   */
- /*ARGSUSED*/
      void *
  vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
  					   search_ctx_arg, tagfile, rel_fname)
      char_u	*path;
      char_u	*filename;
!     char_u	*stopdirs;
      int		level;
      int		free_visited;
      int		find_what;
--- 4060,4071 ----
   * This function silently ignores a few errors, vim_findfile() will have
   * limited functionality then.
   */
      void *
  vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
  					   search_ctx_arg, tagfile, rel_fname)
      char_u	*path;
      char_u	*filename;
!     char_u	*stopdirs UNUSED;
      int		level;
      int		free_visited;
      int		find_what;
***************
*** 5063,5072 ****
      {
  	if (
  #ifdef UNIX
! 		!url
! 		    ? (vp->ffv_dev == st.st_dev
! 			&& vp->ffv_ino == st.st_ino)
! 		    :
  #endif
  		fnamecmp(vp->ffv_fname, ff_expand_buffer) == 0
  	   )
--- 5063,5071 ----
      {
  	if (
  #ifdef UNIX
! 		!url ? (vp->ffv_dev_valid && vp->ffv_dev == st.st_dev
! 						  && vp->ffv_ino == st.st_ino)
! 		     :
  #endif
  		fnamecmp(vp->ffv_fname, ff_expand_buffer) == 0
  	   )
***************
*** 5091,5104 ****
  #ifdef UNIX
  	if (!url)
  	{
  	    vp->ffv_ino = st.st_ino;
  	    vp->ffv_dev = st.st_dev;
  	    vp->ffv_fname[0] = NUL;
  	}
  	else
  	{
! 	    vp->ffv_ino = 0;
! 	    vp->ffv_dev = -1;
  #endif
  	    STRCPY(vp->ffv_fname, ff_expand_buffer);
  #ifdef UNIX
--- 5090,5103 ----
  #ifdef UNIX
  	if (!url)
  	{
+ 	    vp->ffv_dev_valid = TRUE;
  	    vp->ffv_ino = st.st_ino;
  	    vp->ffv_dev = st.st_dev;
  	    vp->ffv_fname[0] = NUL;
  	}
  	else
  	{
! 	    vp->ffv_dev_valid = FALSE;
  #endif
  	    STRCPY(vp->ffv_fname, ff_expand_buffer);
  #ifdef UNIX
*** ../vim-7.2.177/src/version.c	2009-05-16 17:29:37.000000000 +0200
--- src/version.c	2009-05-16 21:00:15.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     178,
  /**/

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

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


--- NEW FILE 7.2.179 ---
To: vim-dev at vim.org
Subject: Patch 7.2.179
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.179
Problem:    Using negative value for device number might not work.
Solution:   Use a separate flag for whether sn_dev was set.
Files:	    src/ex_cmds2.c


*** ../vim-7.2.178/src/ex_cmds2.c	2009-05-14 22:19:19.000000000 +0200
--- src/ex_cmds2.c	2009-05-16 21:13:29.000000000 +0200
***************
*** 28,34 ****
  {
      char_u	*sn_name;
  # ifdef UNIX
!     int		sn_dev;
      ino_t	sn_ino;
  # endif
  # ifdef FEAT_PROFILE
--- 28,35 ----
  {
      char_u	*sn_name;
  # ifdef UNIX
!     int		sn_dev_valid;
!     dev_t	sn_dev;
      ino_t	sn_ino;
  # endif
  # ifdef FEAT_PROFILE
***************
*** 3049,3055 ****
  		    /* Compare dev/ino when possible, it catches symbolic
  		     * links.  Also compare file names, the inode may change
  		     * when the file was edited. */
! 		    ((stat_ok && si->sn_dev != -1)
  			&& (si->sn_dev == st.st_dev
  			    && si->sn_ino == st.st_ino)) ||
  # endif
--- 3050,3056 ----
  		    /* Compare dev/ino when possible, it catches symbolic
  		     * links.  Also compare file names, the inode may change
  		     * when the file was edited. */
! 		    ((stat_ok && si->sn_dev_valid)
  			&& (si->sn_dev == st.st_dev
  			    && si->sn_ino == st.st_ino)) ||
  # endif
***************
*** 3076,3086 ****
  # ifdef UNIX
  	if (stat_ok)
  	{
  	    si->sn_dev = st.st_dev;
  	    si->sn_ino = st.st_ino;
  	}
  	else
! 	    si->sn_dev = -1;
  # endif
  
  	/* Allocate the local script variables to use for this script. */
--- 3077,3088 ----
  # ifdef UNIX
  	if (stat_ok)
  	{
+ 	    si->sn_dev_valid = TRUE;
  	    si->sn_dev = st.st_dev;
  	    si->sn_ino = st.st_ino;
  	}
  	else
! 	    si->sn_dev_valid = FALSE;
  # endif
  
  	/* Allocate the local script variables to use for this script. */
*** ../vim-7.2.178/src/version.c	2009-05-16 21:06:36.000000000 +0200
--- src/version.c	2009-05-16 21:15:08.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     179,
  /**/

-- 
(letter from Mark to Mike, about the film's probable certificate)
      I would like to get back to the Censor and agree to lose the shits, take
      the odd Jesus Christ out and lose Oh fuck off, but to retain 'fart in
      your general direction', 'castanets of your testicles' and 'oral sex'
      and ask him for an 'A' rating on that basis.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.180 ---
To: vim-dev at vim.org
Subject: Patch 7.2.180
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.180
Problem:    Some more compiler warnings when using gcc -Wextra.
Solution:   Add UNUSED and type casts.
Files:	    src/buffer.c, src/ex_cmds.c, src/macros.h, src/main.c,
	    src/menu.c, src/message.c, src/misc1.c, src/mbyte.c,
	    src/normal.c, src/option.c, src/os_unix.c, src/quickfix.c,
	    src/screen.c, src/search.c, src/spell.c, src/syntax.c, src/tag.c,
	    src/term.c, src/ui.c


*** ../vim-7.2.179/src/buffer.c	2009-05-14 22:19:19.000000000 +0200
--- src/buffer.c	2009-05-16 22:21:41.000000000 +0200
***************
*** 2025,2037 ****
   * Return fnum of the found buffer.
   * Return < 0 for error.
   */
- /*ARGSUSED*/
      int
  buflist_findpat(pattern, pattern_end, unlisted, diffmode)
      char_u	*pattern;
      char_u	*pattern_end;	/* pointer to first char after pattern */
      int		unlisted;	/* find unlisted buffers */
!     int		diffmode;	/* find diff-mode buffers only */
  {
      buf_T	*buf;
      regprog_T	*prog;
--- 2025,2036 ----
   * Return fnum of the found buffer.
   * Return < 0 for error.
   */
      int
  buflist_findpat(pattern, pattern_end, unlisted, diffmode)
      char_u	*pattern;
      char_u	*pattern_end;	/* pointer to first char after pattern */
      int		unlisted;	/* find unlisted buffers */
!     int		diffmode UNUSED; /* find diff-mode buffers only */
  {
      buf_T	*buf;
      regprog_T	*prog;
***************
*** 2539,2545 ****
  /*
   * List all know file names (for :files and :buffers command).
   */
- /*ARGSUSED*/
      void
  buflist_list(eap)
      exarg_T	*eap;
--- 2538,2543 ----
***************
*** 3346,3359 ****
   * If maxwidth is not zero, the string will be filled at any middle marker
   * or truncated if too long, fillchar is used for all whitespace.
   */
- /*ARGSUSED*/
      int
  build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
      win_T	*wp;
      char_u	*out;		/* buffer to write into != NameBuff */
      size_t	outlen;		/* length of out[] */
      char_u	*fmt;
!     int		use_sandbox;	/* "fmt" was set insecurely, use sandbox */
      int		fillchar;
      int		maxwidth;
      struct stl_hlrec *hltab;	/* return: HL attributes (can be NULL) */
--- 3344,3356 ----
   * If maxwidth is not zero, the string will be filled at any middle marker
   * or truncated if too long, fillchar is used for all whitespace.
   */
      int
  build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
      win_T	*wp;
      char_u	*out;		/* buffer to write into != NameBuff */
      size_t	outlen;		/* length of out[] */
      char_u	*fmt;
!     int		use_sandbox UNUSED; /* "fmt" was set insecurely, use sandbox */
      int		fillchar;
      int		maxwidth;
      struct stl_hlrec *hltab;	/* return: HL attributes (can be NULL) */
*** ../vim-7.2.179/src/ex_cmds.c	2009-05-16 16:36:25.000000000 +0200
--- src/ex_cmds.c	2009-05-16 22:22:46.000000000 +0200
***************
*** 2255,2266 ****
   *
   * Return the string in allocated memory (NULL when out of memory).
   */
- /*ARGSUSED*/
      char_u *
  viminfo_readstring(virp, off, convert)
      vir_T	*virp;
      int		off;		    /* offset for virp->vir_line */
!     int		convert;	    /* convert the string */
  {
      char_u	*retval;
      char_u	*s, *d;
--- 2255,2265 ----
   *
   * Return the string in allocated memory (NULL when out of memory).
   */
      char_u *
  viminfo_readstring(virp, off, convert)
      vir_T	*virp;
      int		off;		    /* offset for virp->vir_line */
!     int		convert UNUSED;	    /* convert the string */
  {
      char_u	*retval;
      char_u	*s, *d;
***************
*** 2736,2742 ****
   * May set eap->forceit if a dialog says it's OK to overwrite.
   * Return OK if it's OK, FAIL if it is not.
   */
- /*ARGSUSED*/
      static int
  check_overwrite(eap, buf, fname, ffname, other)
      exarg_T	*eap;
--- 2735,2740 ----
*** ../vim-7.2.179/src/macros.h	2009-02-21 20:27:00.000000000 +0100
--- src/macros.h	2009-05-16 21:52:56.000000000 +0200
***************
*** 284,290 ****
  # define mb_cptr2len(p)	    (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p))
  
  # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++
! # define MB_CHARLEN(p)	    (has_mbyte ? mb_charlen(p) : STRLEN(p))
  # define PTR2CHAR(p)	    (has_mbyte ? mb_ptr2char(p) : (int)*(p))
  #else
  # define mb_ptr_adv(p)		++p
--- 284,290 ----
  # define mb_cptr2len(p)	    (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p))
  
  # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++
! # define MB_CHARLEN(p)	    (has_mbyte ? mb_charlen(p) : (int)STRLEN(p))
  # define PTR2CHAR(p)	    (has_mbyte ? mb_ptr2char(p) : (int)*(p))
  #else
  # define mb_ptr_adv(p)		++p
*** ../vim-7.2.179/src/main.c	2008-11-28 21:26:50.000000000 +0100
--- src/main.c	2009-05-16 22:25:59.000000000 +0200
***************
*** 1505,1514 ****
   *
   * Also find the --server... arguments and --socketid and --windowid
   */
- /*ARGSUSED*/
      static void
  early_arg_scan(parmp)
!     mparm_T	*parmp;
  {
  #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
  	|| !defined(FEAT_NETBEANS_INTG)
--- 1505,1513 ----
   *
   * Also find the --server... arguments and --socketid and --windowid
   */
      static void
  early_arg_scan(parmp)
!     mparm_T	*parmp UNUSED;
  {
  #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
  	|| !defined(FEAT_NETBEANS_INTG)
***************
*** 2380,2389 ****
   * Create the requested number of windows and edit buffers in them.
   * Also does recovery if "recoverymode" set.
   */
- /*ARGSUSED*/
      static void
  create_windows(parmp)
!     mparm_T	*parmp;
  {
  #ifdef FEAT_WINDOWS
      int		dorewind;
--- 2379,2387 ----
   * Create the requested number of windows and edit buffers in them.
   * Also does recovery if "recoverymode" set.
   */
      static void
  create_windows(parmp)
!     mparm_T	*parmp UNUSED;
  {
  #ifdef FEAT_WINDOWS
      int		dorewind;
***************
*** 3851,3860 ****
   * return an allocated string.  Otherwise return "data".
   * "*tofree" is set to the result when it needs to be freed later.
   */
- /*ARGSUSED*/
      char_u *
[...6121 lines suppressed...]
*** ../vim-7.2.179/src/ui.c	2008-11-28 21:26:50.000000000 +0100
--- src/ui.c	2009-05-16 22:33:55.000000000 +0200
***************
*** 320,329 ****
   * The gui_set_shellsize() or mch_set_shellsize() function will try to set the
   * new size.  If this is not possible, it will adjust Rows and Columns.
   */
- /*ARGSUSED*/
      void
  ui_set_shellsize(mustset)
!     int		mustset;	/* set by the user */
  {
  #ifdef FEAT_GUI
      if (gui.in_use)
--- 320,328 ----
   * The gui_set_shellsize() or mch_set_shellsize() function will try to set the
   * new size.  If this is not possible, it will adjust Rows and Columns.
   */
      void
  ui_set_shellsize(mustset)
!     int		mustset UNUSED;	/* set by the user */
  {
  #ifdef FEAT_GUI
      if (gui.in_use)
***************
*** 1127,1136 ****
   * available for pasting.
   * When "both" is TRUE also copy to the '+' register.
   */
- /*ARGSUSED*/
      void
  clip_copy_modeless_selection(both)
!     int		both;
  {
      char_u	*buffer;
      char_u	*bufp;
--- 1126,1134 ----
   * available for pasting.
   * When "both" is TRUE also copy to the '+' register.
   */
      void
  clip_copy_modeless_selection(both)
!     int		both UNUSED;
  {
      char_u	*buffer;
      char_u	*bufp;
***************
*** 1701,1710 ****
      return (int)maxlen;
  }
  
- /*ARGSUSED*/
      void
  fill_input_buf(exit_on_error)
!     int	exit_on_error;
  {
  #if defined(UNIX) || defined(OS2) || defined(VMS) || defined(MACOS_X_UNIX)
      int		len;
--- 1699,1707 ----
      return (int)maxlen;
  }
  
      void
  fill_input_buf(exit_on_error)
!     int	exit_on_error UNUSED;
  {
  #if defined(UNIX) || defined(OS2) || defined(VMS) || defined(MACOS_X_UNIX)
      int		len;
***************
*** 1992,2002 ****
  
  static void  clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
  
- /* ARGSUSED */
      static void
  clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
  			      format)
!     Widget	w;
      XtPointer	success;
      Atom	*sel_atom;
      Atom	*type;
--- 1989,1998 ----
  
  static void  clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
  
      static void
  clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
  			      format)
!     Widget	w UNUSED;
      XtPointer	success;
      Atom	*sel_atom;
      Atom	*type;
***************
*** 2202,2211 ****
  
  static Boolean	clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
  
- /* ARGSUSED */
      static Boolean
  clip_x11_convert_selection_cb(w, sel_atom, target, type, value, length, format)
!     Widget	w;
      Atom	*sel_atom;
      Atom	*target;
      Atom	*type;
--- 2198,2206 ----
  
  static Boolean	clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
  
      static Boolean
  clip_x11_convert_selection_cb(w, sel_atom, target, type, value, length, format)
!     Widget	w UNUSED;
      Atom	*sel_atom;
      Atom	*target;
      Atom	*type;
***************
*** 2332,2341 ****
  
  static void  clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
  
- /* ARGSUSED */
      static void
  clip_x11_lose_ownership_cb(w, sel_atom)
!     Widget  w;
      Atom    *sel_atom;
  {
      if (*sel_atom == clip_plus.sel_atom)
--- 2327,2335 ----
  
  static void  clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
  
      static void
  clip_x11_lose_ownership_cb(w, sel_atom)
!     Widget  w UNUSED;
      Atom    *sel_atom;
  {
      if (*sel_atom == clip_plus.sel_atom)
***************
*** 2368,2377 ****
   * Send the current selection to the clipboard.  Do nothing for X because we
   * will fill in the selection only when requested by another app.
   */
- /*ARGSUSED*/
      void
  clip_x11_set_selection(cbd)
!     VimClipboard *cbd;
  {
  }
  #endif
--- 2362,2370 ----
   * Send the current selection to the clipboard.  Do nothing for X because we
   * will fill in the selection only when requested by another app.
   */
      void
  clip_x11_set_selection(cbd)
!     VimClipboard *cbd UNUSED;
  {
  }
  #endif
***************
*** 2922,2932 ****
   * Find the window at screen position "*rowp" and "*colp".  The positions are
   * updated to become relative to the top-left of the window.
   */
- /*ARGSUSED*/
      win_T *
  mouse_find_win(rowp, colp)
      int		*rowp;
!     int		*colp;
  {
      frame_T	*fp;
  
--- 2915,2924 ----
   * Find the window at screen position "*rowp" and "*colp".  The positions are
   * updated to become relative to the top-left of the window.
   */
      win_T *
  mouse_find_win(rowp, colp)
      int		*rowp;
!     int		*colp UNUSED;
  {
      frame_T	*fp;
  
*** ../vim-7.2.179/src/version.c	2009-05-16 21:16:12.000000000 +0200
--- src/version.c	2009-05-17 13:06:38.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     180,
  /**/

-- 
Wi n0t trei a h0liday in Sweden thi yer?
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.181 ---
To: vim-dev at vim.org
Subject: Patch 7.2.181
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.181
Problem:    Some more compiler warnings when using gcc -Wextra.
Solution:   Add UNUSED and type casts.
Files:	    src/if_mzsch.c, src/gui.c, src/gui_gtk.c, src/gui_gtk_x11.c,
	    src/gui_gtk_f.c, src/gui_beval.c, src/netbeans.c


*** ../vim-7.2.180/src/if_mzsch.c	2007-07-06 19:43:08.000000000 +0200
--- src/if_mzsch.c	2009-05-16 22:24:18.000000000 +0200
***************
*** 667,679 ****
      static void CALLBACK
  timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
  # elif defined(FEAT_GUI_GTK)
- /*ARGSUSED*/
      static gint
! timer_proc(gpointer data)
  # elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
- /* ARGSUSED */
      static void
! timer_proc(XtPointer timed_out, XtIntervalId *interval_id)
  # elif defined(FEAT_GUI_MAC)
      pascal void
  timer_proc(EventLoopTimerRef theTimer, void *userData)
--- 667,677 ----
      static void CALLBACK
  timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
  # elif defined(FEAT_GUI_GTK)
      static gint
! timer_proc(gpointer data UNUSED)
  # elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
      static void
! timer_proc(XtPointer timed_out UNUSED, XtIntervalId *interval_id UNUSED)
  # elif defined(FEAT_GUI_MAC)
      pascal void
  timer_proc(EventLoopTimerRef theTimer, void *userData)
*** ../vim-7.2.180/src/gui.c	2008-12-03 18:50:09.000000000 +0100
--- src/gui.c	2009-05-17 15:52:18.000000000 +0200
***************
*** 678,688 ****
   * Return OK when able to set the font.  When it failed FAIL is returned and
   * the fonts are unchanged.
   */
- /*ARGSUSED*/
      int
  gui_init_font(font_list, fontset)
      char_u	*font_list;
!     int		fontset;
  {
  #define FONTLEN 320
      char_u	font_name[FONTLEN];
--- 678,687 ----
   * Return OK when able to set the font.  When it failed FAIL is returned and
   * the fonts are unchanged.
   */
      int
  gui_init_font(font_list, fontset)
      char_u	*font_list;
!     int		fontset UNUSED;
  {
  #define FONTLEN 320
      char_u	font_name[FONTLEN];
***************
*** 1138,1147 ****
   * Position the various GUI components (text area, menu).  The vertical
   * scrollbars are NOT handled here.  See gui_update_scrollbars().
   */
- /*ARGSUSED*/
      static void
  gui_position_components(total_width)
!     int	    total_width;
  {
      int	    text_area_x;
      int	    text_area_y;
--- 1137,1145 ----
   * Position the various GUI components (text area, menu).  The vertical
   * scrollbars are NOT handled here.  See gui_update_scrollbars().
   */
      static void
  gui_position_components(total_width)
!     int	    total_width UNUSED;
  {
      int	    text_area_x;
      int	    text_area_y;
***************
*** 1374,1383 ****
   * If "fit_to_display" is TRUE then the size may be reduced to fit the window
   * on the screen.
   */
- /*ARGSUSED*/
      void
  gui_set_shellsize(mustset, fit_to_display, direction)
!     int		mustset;		/* set by the user */
      int		fit_to_display;
      int		direction;		/* RESIZE_HOR, RESIZE_VER */
  {
--- 1372,1380 ----
   * If "fit_to_display" is TRUE then the size may be reduced to fit the window
   * on the screen.
   */
      void
  gui_set_shellsize(mustset, fit_to_display, direction)
!     int		mustset UNUSED;		/* set by the user */
      int		fit_to_display;
      int		direction;		/* RESIZE_HOR, RESIZE_VER */
  {
***************
*** 3120,3126 ****
   * If "oldval" is not NULL, "oldval" is the previous value, the new value is
   * in p_go.
   */
- /*ARGSUSED*/
      void
  gui_init_which_components(oldval)
      char_u	*oldval;
--- 3117,3122 ----
***************
*** 4411,4417 ****
      if (curwin->w_p_wrap)
  	return FALSE;
  
!     if (curwin->w_leftcol == scrollbar_value)
  	return FALSE;
  
      curwin->w_leftcol = (colnr_T)scrollbar_value;
--- 4407,4413 ----
      if (curwin->w_p_wrap)
  	return FALSE;
  
!     if ((long_u)curwin->w_leftcol == scrollbar_value)
  	return FALSE;
  
      curwin->w_leftcol = (colnr_T)scrollbar_value;
***************
*** 4424,4430 ****
  	    && longest_lnum < curwin->w_botline
  	    && !virtual_active())
      {
! 	if (scrollbar_value > scroll_line_len(curwin->w_cursor.lnum))
  	{
  	    curwin->w_cursor.lnum = longest_lnum;
  	    curwin->w_cursor.col = 0;
--- 4420,4426 ----
  	    && longest_lnum < curwin->w_botline
  	    && !virtual_active())
      {
! 	if (scrollbar_value > (long_u)scroll_line_len(curwin->w_cursor.lnum))
  	{
  	    curwin->w_cursor.lnum = longest_lnum;
  	    curwin->w_cursor.col = 0;
***************
*** 4670,4676 ****
  /*
   * Find window where the mouse pointer "y" coordinate is in.
   */
- /*ARGSUSED*/
      static win_T *
  xy2win(x, y)
      int		x;
--- 4666,4671 ----
***************
*** 5124,5130 ****
   * of dropped files, they will be freed in this function, and caller can't use
   * fnames after call this function.
   */
- /*ARGSUSED*/
      void
  gui_handle_drop(x, y, modifiers, fnames, count)
      int		x;
--- 5119,5124 ----
*** ../vim-7.2.180/src/gui_gtk.c	2008-07-31 22:29:28.000000000 +0200
--- src/gui_gtk.c	2009-05-17 16:06:30.000000000 +0200
***************
*** 285,298 ****
      return image;
  }
  
- /*ARGSUSED*/
      static gint
! toolbar_button_focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
! {
!     /* When we're in a GtkPlug, we don't have window focus events, only widget focus.
!      * To emulate stand-alone gvim, if a button gets focus (e.g., <Tab> into GtkPlug)
!      * immediately pass it to mainwin.
!      */
      if (gtk_socket_id != 0)
  	gtk_widget_grab_focus(gui.drawarea);
  
--- 285,298 ----
      return image;
  }
  
      static gint
! toolbar_button_focus_in_event(GtkWidget *widget UNUSED,
! 			      GdkEventFocus *event UNUSED,
! 			      gpointer data UNUSED)
! {
!     /* When we're in a GtkPlug, we don't have window focus events, only widget
!      * focus.  To emulate stand-alone gvim, if a button gets focus (e.g.,
!      * <Tab> into GtkPlug) immediately pass it to mainwin. */
      if (gtk_socket_id != 0)
  	gtk_widget_grab_focus(gui.drawarea);
  
***************
*** 585,593 ****
      gtk_menu_prepend(GTK_MENU(menu->submenu_id), menu->tearoff_handle);
  }
  
- /*ARGSUSED*/
      static void
! menu_item_activate(GtkWidget *widget, gpointer data)
  {
      gui_menu_cb((vimmenu_T *)data);
  
--- 585,592 ----
      gtk_menu_prepend(GTK_MENU(menu->submenu_id), menu->tearoff_handle);
  }
  
      static void
! menu_item_activate(GtkWidget *widget UNUSED, gpointer data)
  {
      gui_menu_cb((vimmenu_T *)data);
  
***************
*** 1202,1210 ****
  #endif
  
  #ifndef USE_FILE_CHOOSER
- /*ARGSUSED*/
      static void
! browse_ok_cb(GtkWidget *widget, gpointer cbdata)
  {
      gui_T *vw = (gui_T *)cbdata;
  
--- 1201,1208 ----
  #endif
  
  #ifndef USE_FILE_CHOOSER
      static void
! browse_ok_cb(GtkWidget *widget UNUSED, gpointer cbdata)
  {
      gui_T *vw = (gui_T *)cbdata;
  
***************
*** 1218,1226 ****
  	gtk_main_quit();
  }
  
- /*ARGSUSED*/
      static void
! browse_cancel_cb(GtkWidget *widget, gpointer cbdata)
  {
      gui_T *vw = (gui_T *)cbdata;
  
--- 1216,1223 ----
  	gtk_main_quit();
  }
  
      static void
! browse_cancel_cb(GtkWidget *widget UNUSED, gpointer cbdata)
  {
      gui_T *vw = (gui_T *)cbdata;
  
***************
*** 1234,1242 ****
  	gtk_main_quit();
  }
  
- /*ARGSUSED*/
      static gboolean
! browse_destroy_cb(GtkWidget * widget)
  {
      if (gui.browse_fname != NULL)
      {
--- 1231,1238 ----
  	gtk_main_quit();
  }
  
      static gboolean
! browse_destroy_cb(GtkWidget *widget UNUSED)
  {
      if (gui.browse_fname != NULL)
      {
***************
*** 1262,1275 ****
   * initdir			initial directory, NULL for current dir
   * filter			not used (file name filter)
   */
- /*ARGSUSED*/
      char_u *
! gui_mch_browse(int saving,
  	       char_u *title,
  	       char_u *dflt,
! 	       char_u *ext,
  	       char_u *initdir,
! 	       char_u *filter)
  {
  #ifdef USE_FILE_CHOOSER
      GtkWidget		*fc;
--- 1258,1270 ----
   * initdir			initial directory, NULL for current dir
   * filter			not used (file name filter)
   */
      char_u *
! gui_mch_browse(int saving UNUSED,
  	       char_u *title,
  	       char_u *dflt,
! 	       char_u *ext UNUSED,
  	       char_u *initdir,
! 	       char_u *filter UNUSED)
  {
  #ifdef USE_FILE_CHOOSER
      GtkWidget		*fc;
***************
*** 1377,1383 ****
   * dflt				default name
   * initdir			initial directory, NULL for current dir
   */
- /*ARGSUSED*/
      char_u *
  gui_mch_browsedir(
  	       char_u *title,
--- 1372,1377 ----
***************
*** 1460,1466 ****
  }
  
  # ifdef FEAT_GUI_GNOME
- /* ARGSUSED */
      static int
  gui_gnome_dialog( int	type,
  		char_u	*title,
--- 1454,1459 ----
***************
*** 1611,1617 ****
      GtkWidget	*dialog;
  } CancelData;
  
- /* ARGSUSED */
      static void
  dlg_button_clicked(GtkWidget * widget, ButtonData *data)
  {
--- 1604,1609 ----
***************
*** 1622,1628 ****
  /*
   * This makes the Escape key equivalent to the cancel button.
   */
- /*ARGSUSED*/
      static int
  dlg_key_press_event(GtkWidget *widget, GdkEventKey *event, CancelData *data)
  {
--- 1614,1619 ----
***************
*** 1655,1661 ****
  	gtk_main_quit();
  }
  
- /* ARGSUSED */
      int
  gui_mch_dialog(	int	type,		/* type of dialog */
  		char_u	*title,		/* title of dialog */
--- 1646,1651 ----
***************
*** 2215,2221 ****
      GtkDialog	*dialog;	    /* Widget of the dialog */
  } DialogInfo;
  
- /*ARGSUSED2*/
      static gboolean
  dialog_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
  {
--- 2205,2210 ----
***************
*** 2398,2411 ****
   * Note: The push_in output argument seems to affect scrolling of huge
   * menus that don't fit on the screen.	Leave it at the default for now.
   */
- /*ARGSUSED0*/
      static void
! popup_menu_position_func(GtkMenu *menu,
  			 gint *x, gint *y,
  # ifdef HAVE_GTK2
! 			 gboolean *push_in,
  # endif
! 			 gpointer user_data)
  {
      gdk_window_get_origin(gui.drawarea->window, x, y);
  
--- 2387,2399 ----
   * Note: The push_in output argument seems to affect scrolling of huge
   * menus that don't fit on the screen.	Leave it at the default for now.
   */
      static void
! popup_menu_position_func(GtkMenu *menu UNUSED,
  			 gint *x, gint *y,
  # ifdef HAVE_GTK2
! 			 gboolean *push_in UNUSED,
  # endif
! 			 gpointer user_data UNUSED)
  {
      gdk_window_get_origin(gui.drawarea->window, x, y);
  
***************
*** 2464,2476 ****
      GtkWidget *all;	/* 'Replace All' action button */
  } SharedFindReplace;
  
! static SharedFindReplace find_widgets = { NULL, };
! static SharedFindReplace repl_widgets = { NULL, };
  
- /* ARGSUSED */
      static int
  find_key_press_event(
! 		GtkWidget	*widget,
  		GdkEventKey	*event,
  		SharedFindReplace *frdp)
  {
--- 2452,2463 ----
      GtkWidget *all;	/* 'Replace All' action button */
  } SharedFindReplace;
  
! static SharedFindReplace find_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
! static SharedFindReplace repl_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
  
      static int
  find_key_press_event(
! 		GtkWidget	*widget UNUSED,
  		GdkEventKey	*event,
  		SharedFindReplace *frdp)
  {
***************
*** 2962,2970 ****
  /*
   * Callback for actions of the find and replace dialogs
   */
- /*ARGSUSED*/
      static void
! find_replace_cb(GtkWidget *widget, gpointer data)
  {
      int			flags;
      char_u		*find_text;
--- 2949,2956 ----
  /*
   * Callback for actions of the find and replace dialogs
   */
      static void
! find_replace_cb(GtkWidget *widget UNUSED, gpointer data)
  {
      int			flags;
      char_u		*find_text;
***************
*** 3010,3018 ****
  }
  
  /* our usual callback function */
- /*ARGSUSED*/
      static void
! entry_activate_cb(GtkWidget *widget, gpointer data)
  {
      gtk_widget_grab_focus(GTK_WIDGET(data));
  }
--- 2996,3003 ----
  }
  
  /* our usual callback function */
      static void
! entry_activate_cb(GtkWidget *widget UNUSED, gpointer data)
  {
      gtk_widget_grab_focus(GTK_WIDGET(data));
  }
***************
*** 3055,3064 ****
  /*
   * ":helpfind"
   */
- /*ARGSUSED*/
      void
  ex_helpfind(eap)
!     exarg_T	*eap;
  {
      /* This will fail when menus are not loaded.  Well, it's only for
       * backwards compatibility anyway. */
--- 3040,3048 ----
  /*
   * ":helpfind"
   */
      void
  ex_helpfind(eap)
!     exarg_T	*eap UNUSED;
  {
      /* This will fail when menus are not loaded.  Well, it's only for
       * backwards compatibility anyway. */
*** ../vim-7.2.180/src/gui_gtk_x11.c	2008-11-28 21:26:50.000000000 +0100
--- src/gui_gtk_x11.c	2009-05-17 15:53:02.000000000 +0200
***************
*** 619,627 ****
   * Doesn't seem possible, since check_copy_area() relies on
   * this information.  --danielk
   */
- /*ARGSUSED*/
      static gint
! visibility_event(GtkWidget *widget, GdkEventVisibility *event, gpointer data)
  {
      gui.visibility = event->state;
      /*
--- 625,634 ----
   * Doesn't seem possible, since check_copy_area() relies on
   * this information.  --danielk
   */
      static gint
! visibility_event(GtkWidget *widget UNUSED,
! 		 GdkEventVisibility *event,
! 		 gpointer data UNUSED)
  {
      gui.visibility = event->state;
      /*
***************
*** 638,646 ****
  /*
   * Redraw the corresponding portions of the screen.
   */
- /*ARGSUSED*/
      static gint
! expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
  {
      /* Skip this when the GUI isn't set up yet, will redraw later. */
      if (gui.starting)
--- 645,654 ----
  /*
   * Redraw the corresponding portions of the screen.
   */
      static gint
! expose_event(GtkWidget *widget UNUSED,
! 	     GdkEventExpose *event,
! 	     gpointer data UNUSED)
  {
      /* Skip this when the GUI isn't set up yet, will redraw later. */
      if (gui.starting)
***************
*** 668,676 ****
  /*
   * Handle changes to the "Comm" property
   */
- /*ARGSUSED2*/
      static gint
! property_event(GtkWidget *widget, GdkEventProperty *event, gpointer data)
  {
      if (event->type == GDK_PROPERTY_NOTIFY
  	    && event->state == (int)GDK_PROPERTY_NEW_VALUE
--- 676,685 ----
  /*
   * Handle changes to the "Comm" property
   */
      static gint
! property_event(GtkWidget *widget,
! 	       GdkEventProperty *event,
! 	       gpointer data UNUSED)
  {
      if (event->type == GDK_PROPERTY_NOTIFY
  	    && event->state == (int)GDK_PROPERTY_NEW_VALUE
***************
*** 740,748 ****
      blink_state = BLINK_NONE;
  }
  
- /*ARGSUSED*/
      static gint
! blink_cb(gpointer data)
  {
      if (blink_state == BLINK_ON)
      {
--- 749,756 ----
      blink_state = BLINK_NONE;
  }
  
      static gint
! blink_cb(gpointer data UNUSED)
  {
      if (blink_state == BLINK_ON)
      {
***************
*** 781,789 ****
      }
  }
  
- /*ARGSUSED*/
      static gint
! enter_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
  {
      if (blink_state == BLINK_NONE)
  	gui_mch_start_blink();
--- 789,798 ----
      }
  }
  
      static gint
! enter_notify_event(GtkWidget *widget UNUSED,
! 		   GdkEventCrossing *event UNUSED,
! 		   gpointer data UNUSED)
  {
      if (blink_state == BLINK_NONE)
  	gui_mch_start_blink();
***************
*** 795,803 ****
      return FALSE;
  }
  
- /*ARGSUSED*/
      static gint
! leave_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
  {
      if (blink_state != BLINK_NONE)
  	gui_mch_stop_blink();
--- 804,813 ----
      return FALSE;
  }
  
      static gint
! leave_notify_event(GtkWidget *widget UNUSED,
! 		   GdkEventCrossing *event UNUSED,
! 		   gpointer data UNUSED)
  {
      if (blink_state != BLINK_NONE)
  	gui_mch_stop_blink();
***************
*** 805,813 ****
      return FALSE;
  }
  
- /*ARGSUSED*/
      static gint
! focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
  {
      gui_focus_change(TRUE);
  
--- 815,824 ----
      return FALSE;
  }
  
      static gint
! focus_in_event(GtkWidget *widget,
! 	       GdkEventFocus *event UNUSED,
! 	       gpointer data UNUSED)
  {
      gui_focus_change(TRUE);
  
***************
*** 826,834 ****
      return TRUE;
  }
  
- /*ARGSUSED*/
      static gint
! focus_out_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
  {
      gui_focus_change(FALSE);
  
--- 837,846 ----
      return TRUE;
  }
  
      static gint
! focus_out_event(GtkWidget *widget UNUSED,
! 	        GdkEventFocus *event UNUSED,
! 		gpointer data UNUSED)
  {
      gui_focus_change(FALSE);
  
***************
*** 956,964 ****
  /*
   * Main keyboard handler:
   */
- /*ARGSUSED*/
      static gint
! key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
  {
  #ifdef HAVE_GTK2
      /* 256 bytes is way over the top, but for safety let's reduce it only
--- 968,977 ----
  /*
   * Main keyboard handler:
   */
      static gint
! key_press_event(GtkWidget *widget UNUSED,
! 		GdkEventKey *event,
! 		gpointer data UNUSED)
  {
  #ifdef HAVE_GTK2
      /* 256 bytes is way over the top, but for safety let's reduce it only
***************
*** 1225,1233 ****
  }
  
  #if defined(FEAT_XIM) && defined(HAVE_GTK2)
- /*ARGSUSED0*/
      static gboolean
! key_release_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
  {
      /*
       * GTK+ 2 input methods may do fancy stuff on key release events too.
--- 1238,1247 ----
  }
  
  #if defined(FEAT_XIM) && defined(HAVE_GTK2)
      static gboolean
! key_release_event(GtkWidget *widget UNUSED,
! 		  GdkEventKey *event,
! 		  gpointer data UNUSED)
  {
      /*
       * GTK+ 2 input methods may do fancy stuff on key release events too.
***************
*** 1243,1253 ****
   * Selection handlers:
   */
  
- /*ARGSUSED*/
      static gint
! selection_clear_event(GtkWidget		*widget,
  		      GdkEventSelection	*event,
! 		      gpointer		user_data)
  {
      if (event->selection == clip_plus.gtk_sel_atom)
  	clip_lose_selection(&clip_plus);
--- 1257,1266 ----
   * Selection handlers:
   */
  
      static gint
! selection_clear_event(GtkWidget		*widget UNUSED,
  		      GdkEventSelection	*event,
! 		      gpointer		user_data UNUSED)
  {
      if (event->selection == clip_plus.gtk_sel_atom)
  	clip_lose_selection(&clip_plus);
***************
*** 1265,1276 ****
  #define RS_FAIL	2	/* selection_received_cb() called and failed */
  static int received_selection = RS_NONE;
  
- /*ARGSUSED*/
      static void
! selection_received_cb(GtkWidget		*widget,
  		      GtkSelectionData	*data,
! 		      guint		time_,
! 		      gpointer		user_data)
  {
      VimClipboard    *cbd;
      char_u	    *text;
--- 1278,1288 ----
  #define RS_FAIL	2	/* selection_received_cb() called and failed */
  static int received_selection = RS_NONE;
  
      static void
! selection_received_cb(GtkWidget		*widget UNUSED,
  		      GtkSelectionData	*data,
! 		      guint		time_ UNUSED,
! 		      gpointer		user_data UNUSED)
  {
      VimClipboard    *cbd;
      char_u	    *text;
***************
*** 1414,1426 ****
   * Prepare our selection data for passing it to the external selection
   * client.
   */
- /*ARGSUSED*/
      static void
! selection_get_cb(GtkWidget	    *widget,
  		 GtkSelectionData   *selection_data,
  		 guint		    info,
! 		 guint		    time_,
! 		 gpointer	    user_data)
  {
      char_u	    *string;
      char_u	    *tmpbuf;
--- 1426,1437 ----
   * Prepare our selection data for passing it to the external selection
   * client.
   */
      static void
! selection_get_cb(GtkWidget	    *widget UNUSED,
  		 GtkSelectionData   *selection_data,
  		 guint		    info,
! 		 guint		    time_ UNUSED,
! 		 gpointer	    user_data UNUSED)
  {
      char_u	    *string;
      char_u	    *tmpbuf;
***************
*** 1678,1684 ****
  
  	offshoot = dx > dy ? dx : dy;
  
! 	/* Make a linearly declaying timer delay with a threshold of 5 at a
  	 * distance of 127 pixels from the main window.
  	 *
  	 * One could think endlessly about the most ergonomic variant here.
--- 1689,1695 ----
  
  	offshoot = dx > dy ? dx : dy;
  
! 	/* Make a linearly decaying timer delay with a threshold of 5 at a
  	 * distance of 127 pixels from the main window.
  	 *
  	 * One could think endlessly about the most ergonomic variant here.
***************
*** 1707,1715 ****
  /*
   * Timer used to recognize multiple clicks of the mouse button.
   */
- /*ARGSUSED0*/
      static gint
! motion_repeat_timer_cb(gpointer data)
  {
      int		    x;
      int		    y;
--- 1718,1725 ----
  /*
   * Timer used to recognize multiple clicks of the mouse button.
   */
      static gint
! motion_repeat_timer_cb(gpointer data UNUSED)
  {
      int		    x;
      int		    y;
***************
*** 1749,1757 ****
      return FALSE;
  }
  
- /*ARGSUSED2*/
      static gint
! motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data)
  {
      if (event->is_hint)
      {
--- 1759,1768 ----
      return FALSE;
  }
  
      static gint
! motion_notify_event(GtkWidget *widget,
! 		    GdkEventMotion *event,
! 		    gpointer data UNUSED)
  {
      if (event->is_hint)
      {
***************
*** 1777,1785 ****
   * by our own timeout mechanism instead of the one provided by GTK+ itself.
   * This is due to the way the generic VIM code is recognizing multiple clicks.
   */
- /*ARGSUSED2*/
      static gint
! button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
  {
      int button;
      int repeated_click = FALSE;
--- 1788,1797 ----
   * by our own timeout mechanism instead of the one provided by GTK+ itself.
   * This is due to the way the generic VIM code is recognizing multiple clicks.
   */
      static gint
! button_press_event(GtkWidget *widget,
! 		   GdkEventButton *event,
! 		   gpointer data UNUSED)
  {
      int button;
      int repeated_click = FALSE;
***************
*** 1855,1863 ****
   * GTK+ 2 doesn't handle mouse buttons 4, 5, 6 and 7 the same way as GTK+ 1.
   * Instead, it abstracts scrolling via the new GdkEventScroll.
   */
- /*ARGSUSED2*/
      static gboolean
! scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data)
  {
      int	    button;
      int_u   vim_modifiers;
--- 1867,1876 ----
   * GTK+ 2 doesn't handle mouse buttons 4, 5, 6 and 7 the same way as GTK+ 1.
   * Instead, it abstracts scrolling via the new GdkEventScroll.
   */
      static gboolean
! scroll_event(GtkWidget *widget,
! 	     GdkEventScroll *event,
! 	     gpointer data UNUSED)
  {
      int	    button;
      int_u   vim_modifiers;
***************
*** 1896,1904 ****
  #endif /* HAVE_GTK2 */
  
  
- /*ARGSUSED*/
      static gint
! button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
  {
      int x, y;
      int_u vim_modifiers;
--- 1909,1918 ----
  #endif /* HAVE_GTK2 */
  
  
      static gint
! button_release_event(GtkWidget *widget UNUSED,
! 		     GdkEventButton *event,
! 		     gpointer data UNUSED)
  {
      int x, y;
      int_u vim_modifiers;
***************
*** 2100,2106 ****
  /*
   * DND receiver.
   */
- /*ARGSUSED2*/
      static void
  drag_data_received_cb(GtkWidget		*widget,
  		      GdkDragContext	*context,
--- 2114,2119 ----
***************
*** 2109,2115 ****
  		      GtkSelectionData	*data,
  		      guint		info,
  		      guint		time_,
! 		      gpointer		user_data)
  {
      GdkModifierType state;
  
--- 2122,2128 ----
  		      GtkSelectionData	*data,
  		      guint		info,
  		      guint		time_,
! 		      gpointer		user_data UNUSED)
  {
      GdkModifierType state;
  
***************
*** 2143,2149 ****
   * be abandoned and pop up a dialog asking the user for confirmation if
   * necessary.
   */
- /*ARGSUSED0*/
      static void
  sm_client_check_changed_any(GnomeClient	    *client,
  			    gint	    key,
--- 2156,2161 ----
***************
*** 2251,2257 ****
   * for confirmation if necessary.  Save the current editing session and tell
   * the session manager how to restart Vim.
   */
- /*ARGSUSED1*/
      static gboolean
  sm_client_save_yourself(GnomeClient	    *client,
  			gint		    phase,
--- 2263,2268 ----
***************
*** 2339,2345 ****
   * here since "save_yourself" has been emitted before (unless serious trouble
   * is happening).
   */
- /*ARGSUSED0*/
      static void
  sm_client_die(GnomeClient *client, gpointer data)
  {
--- 2350,2355 ----
***************
*** 2379,2388 ****
  /*
   * GTK tells us that XSMP needs attention
   */
- /*ARGSUSED*/
      static gboolean
  local_xsmp_handle_requests(source, condition, data)
!     GIOChannel		*source;
      GIOCondition	condition;
      gpointer		data;
  {
--- 2389,2397 ----
  /*
   * GTK tells us that XSMP needs attention
   */
      static gboolean
  local_xsmp_handle_requests(source, condition, data)
!     GIOChannel		*source UNUSED;
      GIOCondition	condition;
      gpointer		data;
  {
***************
*** 2480,2495 ****
   * WM_SAVE_YOURSELF hack it actually stores the session...  And yes,
   * it should work with KDE as well.
   */
- /*ARGSUSED1*/
      static GdkFilterReturn
! global_event_filter(GdkXEvent *xev, GdkEvent *event, gpointer data)
  {
      XEvent *xevent = (XEvent *)xev;
  
      if (xevent != NULL
  	    && xevent->type == ClientMessage
  	    && xevent->xclient.message_type == GET_X_ATOM(wm_protocols_atom)
! 	    && xevent->xclient.data.l[0] == GET_X_ATOM(save_yourself_atom))
      {
  	out_flush();
  	ml_sync_all(FALSE, FALSE); /* preserve all swap files */
--- 2489,2506 ----
   * WM_SAVE_YOURSELF hack it actually stores the session...  And yes,
   * it should work with KDE as well.
   */
      static GdkFilterReturn
! global_event_filter(GdkXEvent *xev,
! 		    GdkEvent *event UNUSED,
! 		    gpointer data UNUSED)
  {
      XEvent *xevent = (XEvent *)xev;
  
      if (xevent != NULL
  	    && xevent->type == ClientMessage
  	    && xevent->xclient.message_type == GET_X_ATOM(wm_protocols_atom)
! 	    && (long_u)xevent->xclient.data.l[0]
! 					    == GET_X_ATOM(save_yourself_atom))
      {
  	out_flush();
  	ml_sync_all(FALSE, FALSE); /* preserve all swap files */
***************
*** 2512,2518 ****
  /*
   * GDK handler for X ClientMessage events.
   */
- /*ARGSUSED2*/
      static GdkFilterReturn
  gdk_wm_protocols_filter(GdkXEvent *xev, GdkEvent *event, gpointer data)
  {
--- 2523,2528 ----
***************
*** 2558,2566 ****
  /*
   * Setup the window icon & xcmdsrv comm after the main window has been realized.
   */
- /*ARGSUSED*/
      static void
! mainwin_realize(GtkWidget *widget, gpointer data)
  {
  /* If you get an error message here, you still need to unpack the runtime
   * archive! */
--- 2568,2575 ----
  /*
   * Setup the window icon & xcmdsrv comm after the main window has been realized.
   */
      static void
! mainwin_realize(GtkWidget *widget UNUSED, gpointer data UNUSED)
  {
  /* If you get an error message here, you still need to unpack the runtime
   * archive! */
***************
*** 2712,2722 ****
  }
  
  #ifdef HAVE_GTK_MULTIHEAD
- /*ARGSUSED1*/
      static void
  mainwin_screen_changed_cb(GtkWidget  *widget,
! 			  GdkScreen  *previous_screen,
! 			  gpointer   data)
  {
      if (!gtk_widget_has_screen(widget))
  	return;
--- 2721,2730 ----
  }
  
  #ifdef HAVE_GTK_MULTIHEAD
      static void
  mainwin_screen_changed_cb(GtkWidget  *widget,
! 			  GdkScreen  *previous_screen UNUSED,
! 			  gpointer   data UNUSED)
  {
      if (!gtk_widget_has_screen(widget))
  	return;
***************
*** 2757,2765 ****
   * Don't try to set any VIM scrollbar sizes anywhere here. I'm relying on the
   * fact that the main VIM engine doesn't take them into account anywhere.
   */
- /*ARGSUSED1*/
      static void
! drawarea_realize_cb(GtkWidget *widget, gpointer data)
  {
      GtkWidget *sbar;
  
--- 2765,2772 ----
   * Don't try to set any VIM scrollbar sizes anywhere here. I'm relying on the
   * fact that the main VIM engine doesn't take them into account anywhere.
   */
      static void
! drawarea_realize_cb(GtkWidget *widget, gpointer data UNUSED)
  {
      GtkWidget *sbar;
  
***************
*** 2789,2797 ****
  /*
   * Properly clean up on shutdown.
   */
- /*ARGSUSED0*/
      static void
! drawarea_unrealize_cb(GtkWidget *widget, gpointer data)
  {
      /* Don't write messages to the GUI anymore */
      full_screen = FALSE;
--- 2796,2803 ----
  /*
   * Properly clean up on shutdown.
   */
      static void
! drawarea_unrealize_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
  {
      /* Don't write messages to the GUI anymore */
      full_screen = FALSE;
***************
*** 2827,2837 ****
  #endif
  }
  
- /*ARGSUSED0*/
      static void
! drawarea_style_set_cb(GtkWidget	*widget,
! 		      GtkStyle	*previous_style,
! 		      gpointer	data)
  {
      gui_mch_new_colors();
  }
--- 2833,2842 ----
  #endif
  }
  
      static void
! drawarea_style_set_cb(GtkWidget	*widget UNUSED,
! 		      GtkStyle	*previous_style UNUSED,
! 		      gpointer	data UNUSED)
  {
      gui_mch_new_colors();
  }
***************
*** 2840,2848 ****
   * Callback routine for the "delete_event" signal on the toplevel window.
   * Tries to vim gracefully, or refuses to exit with changed buffers.
   */
- /*ARGSUSED*/
      static gint
! delete_event_cb(GtkWidget *widget, GdkEventAny *event, gpointer data)
  {
      gui_shell_closed();
      return TRUE;
--- 2845,2854 ----
   * Callback routine for the "delete_event" signal on the toplevel window.
   * Tries to vim gracefully, or refuses to exit with changed buffers.
   */
      static gint
! delete_event_cb(GtkWidget *widget UNUSED,
! 		GdkEventAny *event UNUSED,
! 		gpointer data UNUSED)
  {
      gui_shell_closed();
      return TRUE;
***************
*** 2964,2970 ****
  
      /* At start-up, don't try to set the hints until the initial
       * values have been used (those that dictate our initial size)
!      * Let forced (i.e., correct) values thruogh always.
       */
      if (!(force_width && force_height)  &&  init_window_hints_state > 0)
      {
--- 2970,2976 ----
  
      /* At start-up, don't try to set the hints until the initial
       * values have been used (those that dictate our initial size)
!      * Let forced (i.e., correct) values through always.
       */
      if (!(force_width && force_height)  &&  init_window_hints_state > 0)
      {
***************
*** 3142,3150 ****
  /*
   * Handle selecting an item in the tab line popup menu.
   */
- /*ARGSUSED*/
      static void
! tabline_menu_handler(GtkMenuItem *item, gpointer user_data)
  {
      /* Add the string cmd into input buffer */
      send_tabline_menu_event(clicked_page, (int)(long)user_data);
--- 3148,3155 ----
  /*
   * Handle selecting an item in the tab line popup menu.
   */
      static void
! tabline_menu_handler(GtkMenuItem *item UNUSED, gpointer user_data)
  {
      /* Add the string cmd into input buffer */
      send_tabline_menu_event(clicked_page, (int)(long)user_data);
***************
*** 3244,3256 ****
  /*
   * Handle selecting one of the tabs.
   */
- /*ARGSUSED*/
      static void
  on_select_tab(
! 	GtkNotebook	*notebook,
! 	GtkNotebookPage *page,
  	gint		idx,
! 	gpointer	data)
  {
      if (!ignore_tabline_evt)
      {
--- 3249,3260 ----
  /*
   * Handle selecting one of the tabs.
   */
      static void
  on_select_tab(
! 	GtkNotebook	*notebook UNUSED,
! 	GtkNotebookPage *page UNUSED,
  	gint		idx,
! 	gpointer	data UNUSED)
  {
      if (!ignore_tabline_evt)
      {
***************
*** 3784,3790 ****
  #endif
  
      if (gtk_socket_id != 0)
! 	/* make sure keybord input can go to the drawarea */
  	GTK_WIDGET_SET_FLAGS(gui.drawarea, GTK_CAN_FOCUS);
  
      /*
--- 3788,3794 ----
  #endif
  
      if (gtk_socket_id != 0)
! 	/* make sure keyboard input can go to the drawarea */
  	GTK_WIDGET_SET_FLAGS(gui.drawarea, GTK_CAN_FOCUS);
  
      /*
***************
*** 3922,3931 ****
  /*
   * This signal informs us about the need to rearrange our sub-widgets.
   */
- /*ARGSUSED*/
      static gint
! form_configure_event(GtkWidget *widget, GdkEventConfigure *event,
! 		     gpointer data)
  {
      int usable_height = event->height;
  
--- 3926,3935 ----
  /*
   * This signal informs us about the need to rearrange our sub-widgets.
   */
      static gint
! form_configure_event(GtkWidget *widget UNUSED,
! 		     GdkEventConfigure *event,
! 		     gpointer data UNUSED)
  {
      int usable_height = event->height;
  
***************
*** 3948,3956 ****
   * We can't do much more here than to trying to preserve what had been done,
   * since the window is already inevitably going away.
   */
- /*ARGSUSED0*/
      static void
! mainwin_destroy_cb(GtkObject *object, gpointer data)
  {
      /* Don't write messages to the GUI anymore */
      full_screen = FALSE;
--- 3952,3959 ----
   * We can't do much more here than to trying to preserve what had been done,
   * since the window is already inevitably going away.
   */
      static void
! mainwin_destroy_cb(GtkObject *object UNUSED, gpointer data UNUSED)
  {
      /* Don't write messages to the GUI anymore */
      full_screen = FALSE;
***************
*** 3980,3988 ****
   * scrollbar init.), actually do the standard hinst and stop the timer.
   * We'll not let the default hints be set while this timer's active.
   */
- /*ARGSUSED*/
      static gboolean
! check_startup_plug_hints(gpointer data)
  {
      if (init_window_hints_state == 1)
      {
--- 3983,3990 ----
   * scrollbar init.), actually do the standard hinst and stop the timer.
   * We'll not let the default hints be set while this timer's active.
   */
      static gboolean
! check_startup_plug_hints(gpointer data UNUSED)
  {
      if (init_window_hints_state == 1)
      {
***************
*** 4055,4061 ****
  	    Columns = w;
  	if (mask & HeightValue)
  	{
! 	    if (p_window > h - 1 || !option_was_set((char_u *)"window"))
  		p_window = h - 1;
  	    Rows = h;
  	}
--- 4057,4063 ----
  	    Columns = w;
  	if (mask & HeightValue)
  	{
! 	    if (p_window > (long)h - 1 || !option_was_set((char_u *)"window"))
  		p_window = h - 1;
  	    Rows = h;
  	}
***************
*** 4229,4237 ****
  }
  
  
- /*ARGSUSED0*/
      void
! gui_mch_exit(int rc)
  {
      if (gui.mainwin != NULL)
  	gtk_widget_destroy(gui.mainwin);
--- 4231,4238 ----
  }
  
  
      void
! gui_mch_exit(int rc UNUSED)
  {
      if (gui.mainwin != NULL)
  	gtk_widget_destroy(gui.mainwin);
***************
*** 4286,4292 ****
   * report the new size through form_configure_event().  That caused the window
   * layout to be messed up.
   */
- /*ARGSUSED0*/
      static gboolean
  force_shell_resize_idle(gpointer data)
  {
--- 4287,4292 ----
***************
*** 4314,4325 ****
  /*
   * Set the windows size.
   */
- /*ARGSUSED2*/
      void
  gui_mch_set_shellsize(int width, int height,
! 		      int min_width,  int min_height,
! 		      int base_width, int base_height,
! 		      int direction)
  {
  #ifndef HAVE_GTK2
      /* Hack: When the form already is at the desired size, the window might
--- 4314,4324 ----
  /*
   * Set the windows size.
   */
      void
  gui_mch_set_shellsize(int width, int height,
! 		      int min_width UNUSED,  int min_height UNUSED,
! 		      int base_width UNUSED, int base_height UNUSED,
! 		      int direction UNUSED)
  {
  #ifndef HAVE_GTK2
      /* Hack: When the form already is at the desired size, the window might
***************
*** 4413,4421 ****
  }
  
  #if defined(FEAT_TITLE) || defined(PROTO)
- /*ARGSUSED*/
      void
! gui_mch_settitle(char_u *title, char_u *icon)
  {
  # ifdef HAVE_GTK2
      if (title != NULL && output_conv.vc_type != CONV_NONE)
--- 4412,4419 ----
  }
  
  #if defined(FEAT_TITLE) || defined(PROTO)
      void
! gui_mch_settitle(char_u *title, char_u *icon UNUSED)
  {
  # ifdef HAVE_GTK2
      if (title != NULL && output_conv.vc_type != CONV_NONE)
***************
*** 4493,4499 ****
   * Get a font structure for highlighting.
   * "cbdata" is a pointer to the global gui structure.
   */
- /*ARGSUSED*/
      static void
  font_sel_ok(GtkWidget *wgt, gpointer cbdata)
  {
--- 4491,4496 ----
***************
*** 4509,4515 ****
  	gtk_main_quit();
  }
  
- /*ARGSUSED*/
      static void
  font_sel_cancel(GtkWidget *wgt, gpointer cbdata)
  {
--- 4506,4511 ----
***************
*** 4520,4526 ****
  	gtk_main_quit();
  }
  
- /*ARGSUSED*/
      static void
  font_sel_destroy(GtkWidget *wgt, gpointer cbdata)
  {
--- 4516,4521 ----
***************
*** 4620,4626 ****
  /*
   * Try to load the requested fontset.
   */
- /*ARGSUSED2*/
      GuiFontset
  gui_mch_get_fontset(char_u *name, int report_error, int fixed_width)
  {
--- 4615,4620 ----
***************
*** 4863,4869 ****
      styled_font[1] = &gui.ital_font;
      styled_font[2] = &gui.boldital_font;
  
!     /* First free whatever was freviously there. */
      for (i = 0; i < 3; ++i)
  	if (*styled_font[i])
  	{
--- 4857,4863 ----
      styled_font[1] = &gui.ital_font;
      styled_font[2] = &gui.boldital_font;
  
!     /* First free whatever was previously there. */
      for (i = 0; i < 3; ++i)
  	if (*styled_font[i])
  	{
***************
*** 5012,5020 ****
   * Initialize Vim to use the font or fontset with the given name.
   * Return FAIL if the font could not be loaded, OK otherwise.
   */
- /*ARGSUSED1*/
      int
! gui_mch_init_font(char_u *font_name, int fontset)
  {
  #ifdef HAVE_GTK2
      PangoFontDescription    *font_desc;
--- 5006,5013 ----
   * Initialize Vim to use the font or fontset with the given name.
   * Return FAIL if the font could not be loaded, OK otherwise.
   */
      int
! gui_mch_init_font(char_u *font_name, int fontset UNUSED)
  {
  #ifdef HAVE_GTK2
      PangoFontDescription    *font_desc;
***************
*** 5326,5334 ****
  /*
   * Return the name of font "font" in allocated memory.
   */
- /*ARGSUSED*/
      char_u *
! gui_mch_get_fontname(GuiFont font, char_u *name)
  {
  # ifdef HAVE_GTK2
      if (font != NOFONT)
--- 5319,5326 ----
  /*
   * Return the name of font "font" in allocated memory.
   */
      char_u *
! gui_mch_get_fontname(GuiFont font, char_u *name UNUSED)
  {
  # ifdef HAVE_GTK2
      if (font != NOFONT)
***************
*** 5732,5738 ****
  {
      int			i;
      int			offset;
!     const static int	val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
      int			y = FILL_Y(row + 1) - 1;
  
      /* Undercurl: draw curl at the bottom of the character cell. */
--- 5724,5730 ----
  {
      int			i;
      int			offset;
!     static const int	val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
      int			y = FILL_Y(row + 1) - 1;
  
      /* Undercurl: draw curl at the bottom of the character cell. */
***************
*** 6402,6408 ****
  /*
   * Callback function, used when data is available on the SNiFF connection.
   */
- /* ARGSUSED */
      static void
  sniff_request_cb(
      gpointer	data,
--- 6394,6399 ----
***************
*** 6711,6719 ****
  /*
   * Disown the selection.
   */
- /*ARGSUSED*/
      void
! clip_mch_lose_selection(VimClipboard *cbd)
  {
      /* WEIRD: when using NULL to actually disown the selection, we lose the
       * selection the first time we own it. */
--- 6702,6709 ----
  /*
   * Disown the selection.
   */
      void
! clip_mch_lose_selection(VimClipboard *cbd UNUSED)
  {
      /* WEIRD: when using NULL to actually disown the selection, we lose the
       * selection the first time we own it. */
***************
*** 6741,6749 ****
   * Send the current selection to the clipboard.  Do nothing for X because we
   * will fill in the selection only when requested by another app.
   */
- /*ARGSUSED*/
      void
! clip_mch_set_selection(VimClipboard *cbd)
  {
  }
  
--- 6731,6738 ----
   * Send the current selection to the clipboard.  Do nothing for X because we
   * will fill in the selection only when requested by another app.
   */
      void
! clip_mch_set_selection(VimClipboard *cbd UNUSED)
  {
  }
  
***************
*** 6950,6956 ****
  	    else
  		id &= ~1;	/* they are always even (why?) */
  	}
! 	else if (shape < sizeof(mshape_ids) / sizeof(int))
  	    id = mshape_ids[shape];
  	else
  	    return;
--- 6939,6945 ----
  	    else
  		id &= ~1;	/* they are always even (why?) */
  	}
! 	else if (shape < (int)(sizeof(mshape_ids) / sizeof(int)))
  	    id = mshape_ids[shape];
  	else
  	    return;
*** ../vim-7.2.180/src/gui_gtk_f.c	2007-05-10 19:50:33.000000000 +0200
--- src/gui_gtk_f.c	2009-05-17 15:48:51.000000000 +0200
***************
*** 227,240 ****
  
      if (!form_type)
      {
! 	GtkTypeInfo form_info =
! 	{
! 	    "GtkForm",
! 	    sizeof(GtkForm),
! 	    sizeof(GtkFormClass),
! 	    (GtkClassInitFunc) gtk_form_class_init,
! 	    (GtkObjectInitFunc) gtk_form_init
! 	};
  
  	form_type = gtk_type_unique(GTK_TYPE_CONTAINER, &form_info);
      }
--- 227,239 ----
  
      if (!form_type)
      {
! 	GtkTypeInfo form_info;
! 
! 	form_info.type_name = "GtkForm";
! 	form_info.object_size = sizeof(GtkForm);
! 	form_info.class_size = sizeof(GtkFormClass);
! 	form_info.class_init_func = (GtkClassInitFunc)gtk_form_class_init;
! 	form_info.object_init_func = (GtkObjectInitFunc)gtk_form_init;
  
  	form_type = gtk_type_unique(GTK_TYPE_CONTAINER, &form_info);
      }
***************
*** 611,620 ****
      }
  }
  
- /*ARGSUSED1*/
      static void
  gtk_form_forall(GtkContainer	*container,
! 		gboolean	include_internals,
  		GtkCallback	callback,
  		gpointer	callback_data)
  {
--- 610,618 ----
      }
  }
  
      static void
  gtk_form_forall(GtkContainer	*container,
! 		gboolean	include_internals UNUSED,
  		GtkCallback	callback,
  		gpointer	callback_data)
  {
***************
*** 786,794 ****
   * them or discards them, depending on whether we are obscured
   * or not.
   */
- /*ARGSUSED1*/
      static GdkFilterReturn
! gtk_form_filter(GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
  {
      XEvent *xevent;
      GtkForm *form;
--- 784,791 ----
   * them or discards them, depending on whether we are obscured
   * or not.
   */
      static GdkFilterReturn
! gtk_form_filter(GdkXEvent *gdk_xevent, GdkEvent *event UNUSED, gpointer data)
  {
      XEvent *xevent;
      GtkForm *form;
***************
*** 821,829 ****
   * there is no corresponding event in GTK, so we have
   * to get the events from a filter
   */
- /*ARGSUSED1*/
      static GdkFilterReturn
! gtk_form_main_filter(GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
  {
      XEvent *xevent;
      GtkForm *form;
--- 818,827 ----
   * there is no corresponding event in GTK, so we have
   * to get the events from a filter
   */
      static GdkFilterReturn
! gtk_form_main_filter(GdkXEvent *gdk_xevent,
! 		     GdkEvent *event UNUSED,
! 		     gpointer data)
  {
      XEvent *xevent;
      GtkForm *form;
***************
*** 911,919 ****
  #endif
  }
  
- /*ARGSUSED0*/
      static void
! gtk_form_child_map(GtkWidget *widget, gpointer user_data)
  {
      GtkFormChild *child;
  
--- 909,916 ----
  #endif
  }
  
      static void
! gtk_form_child_map(GtkWidget *widget UNUSED, gpointer user_data)
  {
      GtkFormChild *child;
  
***************
*** 923,931 ****
      gdk_window_show(child->window);
  }
  
- /*ARGSUSED0*/
      static void
! gtk_form_child_unmap(GtkWidget *widget, gpointer user_data)
  {
      GtkFormChild *child;
  
--- 920,927 ----
      gdk_window_show(child->window);
  }
  
      static void
! gtk_form_child_unmap(GtkWidget *widget UNUSED, gpointer user_data)
  {
      GtkFormChild *child;
  
*** ../vim-7.2.180/src/gui_beval.c	2009-03-18 12:20:35.000000000 +0100
--- src/gui_beval.c	2009-05-17 15:53:22.000000000 +0200
***************
*** 15,21 ****
  /*
   * Common code, invoked when the mouse is resting for a moment.
   */
- /*ARGSUSED*/
      void
  general_beval_cb(beval, state)
      BalloonEval *beval;
--- 15,20 ----
***************
*** 551,559 ****
      return FALSE; /* continue emission */
  }
  
- /*ARGSUSED*/
      static gint
! mainwin_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
  {
      BalloonEval *beval = (BalloonEval *)data;
  
--- 550,557 ----
      return FALSE; /* continue emission */
  }
  
      static gint
! mainwin_event_cb(GtkWidget *widget UNUSED, GdkEvent *event, gpointer data)
  {
      BalloonEval *beval = (BalloonEval *)data;
  
***************
*** 663,671 ****
      return FALSE; /* don't call me again */
  }
  
- /*ARGSUSED2*/
      static gint
! balloon_expose_event_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
  {
      gtk_paint_flat_box(widget->style, widget->window,
  		       GTK_STATE_NORMAL, GTK_SHADOW_OUT,
--- 661,670 ----
      return FALSE; /* don't call me again */
  }
  
      static gint
! balloon_expose_event_cb(GtkWidget *widget,
! 			GdkEventExpose *event,
! 			gpointer data UNUSED)
  {
      gtk_paint_flat_box(widget->style, widget->window,
  		       GTK_STATE_NORMAL, GTK_SHADOW_OUT,
***************
*** 676,682 ****
  }
  
  # ifndef HAVE_GTK2
- /*ARGSUSED2*/
      static void
  balloon_draw_cb(GtkWidget *widget, GdkRectangle *area, gpointer data)
  {
--- 675,680 ----
***************
*** 726,732 ****
  /*
   * The X event handler. All it does is call the real event handler.
   */
- /*ARGSUSED*/
      static void
  pointerEventEH(w, client_data, event, unused)
      Widget	w;
--- 724,729 ----
***************
*** 877,883 ****
      }
  }
  
- /*ARGSUSED*/
      static void
  timerRoutine(dx, id)
      XtPointer	    dx;
--- 874,879 ----
*** ../vim-7.2.180/src/netbeans.c	2009-02-21 22:12:43.000000000 +0100
--- src/netbeans.c	2009-05-17 15:51:14.000000000 +0200
***************
*** 700,706 ****
  /*
   * Read and process a command from netbeans.
   */
- /*ARGSUSED*/
  #if defined(FEAT_GUI_W32) || defined(PROTO)
  /* Use this one when generating prototypes, the others are static. */
      void
--- 700,705 ----
***************
*** 708,719 ****
  #else
  # ifdef FEAT_GUI_MOTIF
      static void
! messageFromNetbeans(XtPointer clientData, int *unused1, XtInputId *unused2)
  # endif
  # ifdef FEAT_GUI_GTK
      static void
! messageFromNetbeans(gpointer clientData, gint unused1,
! 						    GdkInputCondition unused2)
  # endif
  #endif
  {
--- 707,721 ----
  #else
  # ifdef FEAT_GUI_MOTIF
      static void
! messageFromNetbeans(XtPointer clientData UNUSED
! 		    int *unused1 UNUSED,
! 		    XtInputId *unused2 UNUSED)
  # endif
  # ifdef FEAT_GUI_GTK
      static void
! messageFromNetbeans(gpointer clientData UNUSED,
! 		    gint unused1 UNUSED,
! 		    GdkInputCondition unused2 UNUSED)
  # endif
  #endif
  {
***************
*** 1585,1591 ****
--- 1587,1595 ----
  			    buf_delsign(buf->bufp, id);
  			}
  			else
+ 			{
  			    nbdebug(("    No sign on line %d\n", i));
+ 			}
  		    }
  
  		    nbdebug(("    Deleting lines %d through %d\n", del_from_lnum, del_to_lnum));
***************
*** 2144,2150 ****
--- 2148,2156 ----
  #endif
  	    }
  	    else
+ 	    {
  		nbdebug(("    BAD POSITION in setDot: %s\n", s));
+ 	    }
  
  	    /* gui_update_cursor(TRUE, FALSE); */
  	    /* update_curbuf(NOT_VALID); */
***************
*** 2744,2754 ****
   * cursor and sends it to the debugger for evaluation.  The debugger should
   * respond with a showBalloon command when there is a useful result.
   */
- /*ARGSUSED*/
      void
  netbeans_beval_cb(
  	BalloonEval	*beval,
! 	int		 state)
  {
      win_T	*wp;
      char_u	*text;
--- 2750,2759 ----
   * cursor and sends it to the debugger for evaluation.  The debugger should
   * respond with a showBalloon command when there is a useful result.
   */
      void
  netbeans_beval_cb(
  	BalloonEval	*beval,
! 	int		 state UNUSED)
  {
      win_T	*wp;
      char_u	*text;
***************
*** 3061,3069 ****
  /*
   * Send netbeans an unmodufied command.
   */
- /*ARGSUSED*/
      void
! netbeans_unmodified(buf_T *bufp)
  {
  #if 0
      char_u	buf[128];
--- 3066,3073 ----
  /*
   * Send netbeans an unmodufied command.
   */
      void
! netbeans_unmodified(buf_T *bufp UNUSED)
  {
  #if 0
      char_u	buf[128];
***************
*** 3370,3382 ****
   * buf->signmapused[]	maps buffer-local annotation IDs to an index in
   *			globalsignmap[].
   */
- /*ARGSUSED*/
      static void
  addsigntype(
      nbbuf_T	*buf,
      int		typeNum,
      char_u	*typeName,
!     char_u	*tooltip,
      char_u	*glyphFile,
      int		use_fg,
      int		fg,
--- 3374,3385 ----
   * buf->signmapused[]	maps buffer-local annotation IDs to an index in
   *			globalsignmap[].
   */
      static void
  addsigntype(
      nbbuf_T	*buf,
      int		typeNum,
      char_u	*typeName,
!     char_u	*tooltip UNUSED,
      char_u	*glyphFile,
      int		use_fg,
      int		fg,
*** ../vim-7.2.180/src/version.c	2009-05-17 13:30:58.000000000 +0200
--- src/version.c	2009-05-17 16:07:26.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     181,
  /**/

-- 
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.2.182 ---
To: vim-dev at vim.org
Subject: Patch 7.2.182
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.182 (after 7.2.181)
Problem:    Compilation problems after previous patch for Motif.  Gvim with
	    GTK crashes on startup.
Solution:   Add comma.  Init form structure to zeroes.
Files:	    src/netbeans.c, src/gui_gtk_f.c


*** ../vim-7.2.181/src/netbeans.c	2009-05-17 16:23:20.000000000 +0200
--- src/netbeans.c	2009-05-17 22:34:11.000000000 +0200
***************
*** 707,713 ****
  #else
  # ifdef FEAT_GUI_MOTIF
      static void
! messageFromNetbeans(XtPointer clientData UNUSED
  		    int *unused1 UNUSED,
  		    XtInputId *unused2 UNUSED)
  # endif
--- 707,713 ----
  #else
  # ifdef FEAT_GUI_MOTIF
      static void
! messageFromNetbeans(XtPointer clientData UNUSED,
  		    int *unused1 UNUSED,
  		    XtInputId *unused2 UNUSED)
  # endif
*** ../vim-7.2.181/src/gui_gtk_f.c	2009-05-17 16:23:20.000000000 +0200
--- src/gui_gtk_f.c	2009-05-17 23:20:41.000000000 +0200
***************
*** 229,234 ****
--- 229,235 ----
      {
  	GtkTypeInfo form_info;
  
+ 	vim_memset(&form_info, 0, sizeof(form_info));
  	form_info.type_name = "GtkForm";
  	form_info.object_size = sizeof(GtkForm);
  	form_info.class_size = sizeof(GtkFormClass);
*** ../vim-7.2.181/src/version.c	2009-05-17 16:23:20.000000000 +0200
--- src/version.c	2009-05-17 23:21:41.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     182,
  /**/

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

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


--- NEW FILE 7.2.183 ---
To: vim-dev at vim.org
Subject: Patch 7.2.183
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.183
Problem:    Configure problem for sys/sysctl.h on OpenBSD. (Dasn)
Solution:   Add separate check for this header file.  Also switch to newer
	    version of autoconf.
Files:	    src/auto/configure, src/configure.in


*** ../vim-7.2.182/src/auto/configure	2009-05-14 22:19:19.000000000 +0200
--- src/auto/configure	2009-05-16 13:32:16.000000000 +0200
***************
*** 1,6 ****
  #! /bin/sh
  # Guess values for system-dependent variables and create Makefiles.
! # Generated by GNU Autoconf 2.62.
  #
  # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
  # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
--- 1,6 ----
  #! /bin/sh
  # Guess values for system-dependent variables and create Makefiles.
! # Generated by GNU Autoconf 2.63.
  #
  # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
  # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
***************
*** 635,772 ****
  # include <unistd.h>
  #endif"
  
! ac_subst_vars='SHELL
! PATH_SEPARATOR
! PACKAGE_NAME
! PACKAGE_TARNAME
! PACKAGE_VERSION
! PACKAGE_STRING
! PACKAGE_BUGREPORT
! exec_prefix
! prefix
! program_transform_name
! bindir
! sbindir
! libexecdir
! datarootdir
! datadir
! sysconfdir
! sharedstatedir
! localstatedir
! includedir
! oldincludedir
! docdir
! infodir
! htmldir
! dvidir
! pdfdir
! psdir
! libdir
! localedir
! mandir
! DEFS
! ECHO_C
! ECHO_N
! ECHO_T
! LIBS
! build_alias
! host_alias
! target_alias
! SET_MAKE
! CC
! CFLAGS
! LDFLAGS
! CPPFLAGS
! ac_ct_CC
! EXEEXT
! OBJEXT
! CPP
! GREP
! EGREP
! AWK
! STRIP
! CPP_MM
! OS_EXTRA_SRC
! OS_EXTRA_OBJ
! VIMNAME
! EXNAME
! VIEWNAME
! line_break
! dovimdiff
! dogvimdiff
! compiledby
! vi_cv_path_mzscheme
! MZSCHEME_SRC
! MZSCHEME_OBJ
! MZSCHEME_PRO
! MZSCHEME_LIBS
! MZSCHEME_CFLAGS
! vi_cv_path_perl
! vi_cv_perllib
! shrpenv
! PERL_SRC
! PERL_OBJ
! PERL_PRO
! PERL_CFLAGS
! PERL_LIBS
! vi_cv_path_python
! PYTHON_CONFDIR
! PYTHON_LIBS
! PYTHON_GETPATH_CFLAGS
! PYTHON_CFLAGS
! PYTHON_SRC
! PYTHON_OBJ
! vi_cv_path_tcl
! TCL_SRC
! TCL_OBJ
! TCL_PRO
! TCL_CFLAGS
! TCL_LIBS
! vi_cv_path_ruby
! RUBY_SRC
! RUBY_OBJ
! RUBY_PRO
! RUBY_CFLAGS
! RUBY_LIBS
! WORKSHOP_SRC
! WORKSHOP_OBJ
! NETBEANS_SRC
! NETBEANS_OBJ
! SNIFF_SRC
! SNIFF_OBJ
! xmkmfpath
! XMKMF
! X_CFLAGS
! X_PRE_LIBS
! X_LIBS
! X_EXTRA_LIBS
! X_LIB
! GTK_CONFIG
! GTK12_CONFIG
! PKG_CONFIG
! GTK_CFLAGS
! GTK_LIBS
! GTK_LIBNAME
! GNOME_LIBS
! GNOME_LIBDIR
! GNOME_INCLUDEDIR
! GNOME_CONFIG
! MOTIF_LIBNAME
! NARROW_PROTO
! GUI_INC_LOC
! GUI_LIB_LOC
! GUITYPE
! GUI_X_LIBS
! HANGULIN_SRC
! HANGULIN_OBJ
! TAGPRG
! INSTALL_LANGS
! INSTALL_TOOL_LANGS
! MSGFMT
! MAKEMO
! DEPEND_CFLAGS_FILTER
  LIBOBJS
! LTLIBOBJS'
  ac_subst_files=''
  ac_user_opts='
  enable_option_checking
--- 635,772 ----
  # include <unistd.h>
  #endif"
  
! ac_subst_vars='LTLIBOBJS
  LIBOBJS
! DEPEND_CFLAGS_FILTER
! MAKEMO
! MSGFMT
! INSTALL_TOOL_LANGS
! INSTALL_LANGS
! TAGPRG
! HANGULIN_OBJ
! HANGULIN_SRC
! GUI_X_LIBS
! GUITYPE
! GUI_LIB_LOC
! GUI_INC_LOC
! NARROW_PROTO
! MOTIF_LIBNAME
! GNOME_CONFIG
! GNOME_INCLUDEDIR
! GNOME_LIBDIR
! GNOME_LIBS
! GTK_LIBNAME
! GTK_LIBS
! GTK_CFLAGS
! PKG_CONFIG
! GTK12_CONFIG
! GTK_CONFIG
! X_LIB
! X_EXTRA_LIBS
! X_LIBS
! X_PRE_LIBS
! X_CFLAGS
! XMKMF
! xmkmfpath
! SNIFF_OBJ
! SNIFF_SRC
! NETBEANS_OBJ
! NETBEANS_SRC
! WORKSHOP_OBJ
! WORKSHOP_SRC
! RUBY_LIBS
! RUBY_CFLAGS
! RUBY_PRO
! RUBY_OBJ
! RUBY_SRC
! vi_cv_path_ruby
! TCL_LIBS
! TCL_CFLAGS
! TCL_PRO
! TCL_OBJ
! TCL_SRC
! vi_cv_path_tcl
! PYTHON_OBJ
! PYTHON_SRC
! PYTHON_CFLAGS
! PYTHON_GETPATH_CFLAGS
! PYTHON_LIBS
! PYTHON_CONFDIR
! vi_cv_path_python
! PERL_LIBS
! PERL_CFLAGS
! PERL_PRO
! PERL_OBJ
! PERL_SRC
! shrpenv
! vi_cv_perllib
! vi_cv_path_perl
! MZSCHEME_CFLAGS
! MZSCHEME_LIBS
! MZSCHEME_PRO
! MZSCHEME_OBJ
! MZSCHEME_SRC
! vi_cv_path_mzscheme
! compiledby
! dogvimdiff
! dovimdiff
! line_break
! VIEWNAME
! EXNAME
! VIMNAME
! OS_EXTRA_OBJ
! OS_EXTRA_SRC
! CPP_MM
! STRIP
! AWK
! EGREP
! GREP
! CPP
! OBJEXT
! EXEEXT
! ac_ct_CC
! CPPFLAGS
! LDFLAGS
! CFLAGS
! CC
! SET_MAKE
! target_alias
! host_alias
! build_alias
! LIBS
! ECHO_T
! ECHO_N
! ECHO_C
! DEFS
! mandir
! localedir
! libdir
! psdir
! pdfdir
! dvidir
! htmldir
! infodir
! docdir
! oldincludedir
! includedir
! localstatedir
! sharedstatedir
! sysconfdir
! datadir
! datarootdir
! libexecdir
! sbindir
! bindir
! program_transform_name
! prefix
! exec_prefix
! PACKAGE_BUGREPORT
! PACKAGE_STRING
! PACKAGE_VERSION
! PACKAGE_TARNAME
! PACKAGE_NAME
! PATH_SEPARATOR
! SHELL'
  ac_subst_files=''
  ac_user_opts='
  enable_option_checking
***************
*** 1253,1261 ****
  if test -n "$ac_unrecognized_opts"; then
    case $enable_option_checking in
      no) ;;
!     fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2
     { (exit 1); exit 1; }; } ;;
!     *)     $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;;
    esac
  fi
  
--- 1253,1261 ----
  if test -n "$ac_unrecognized_opts"; then
    case $enable_option_checking in
      no) ;;
!     fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
     { (exit 1); exit 1; }; } ;;
!     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
    esac
  fi
  
***************
*** 1308,1314 ****
  ac_pwd=`pwd` && test -n "$ac_pwd" &&
  ac_ls_di=`ls -di .` &&
  ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
!   { $as_echo "$as_me: error: Working directory cannot be determined" >&2
     { (exit 1); exit 1; }; }
  test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
    { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
--- 1308,1314 ----
  ac_pwd=`pwd` && test -n "$ac_pwd" &&
  ac_ls_di=`ls -di .` &&
  ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
!   { $as_echo "$as_me: error: working directory cannot be determined" >&2
     { (exit 1); exit 1; }; }
  test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
    { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
***************
*** 1587,1593 ****
  if $ac_init_version; then
    cat <<\_ACEOF
  configure
! generated by GNU Autoconf 2.62
  
  Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
  2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
--- 1587,1593 ----
  if $ac_init_version; then
    cat <<\_ACEOF
  configure
! generated by GNU Autoconf 2.63
  
  Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
  2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
***************
*** 1601,1607 ****
  running configure, to aid debugging if configure makes a mistake.
  
  It was created by $as_me, which was
! generated by GNU Autoconf 2.62.  Invocation command line was
  
    $ $0 $@
  
--- 1601,1607 ----
  running configure, to aid debugging if configure makes a mistake.
  
  It was created by $as_me, which was
! generated by GNU Autoconf 2.63.  Invocation command line was
  
    $ $0 $@
  
***************
*** 1724,1731 ****
      case $ac_val in #(
      *${as_nl}*)
        case $ac_var in #(
!       *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
! $as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
        esac
        case $ac_var in #(
        _ | IFS | as_nl) ;; #(
--- 1724,1731 ----
      case $ac_val in #(
      *${as_nl}*)
        case $ac_var in #(
!       *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
! $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
        esac
        case $ac_var in #(
        _ | IFS | as_nl) ;; #(
***************
*** 1928,1933 ****
--- 1928,1935 ----
    fi
  done
  if $ac_cache_corrupted; then
+   { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
    { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
  $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
    { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
***************
*** 2084,2095 ****
    else
      case $cross_compiling:$ac_tool_warned in
  yes:)
! { $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
! whose name does not start with the host triplet.  If you think this
! configuration is useful to you, please write to autoconf at gnu.org." >&5
! $as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
! whose name does not start with the host triplet.  If you think this
! configuration is useful to you, please write to autoconf at gnu.org." >&2;}
  ac_tool_warned=yes ;;
  esac
      CC=$ac_ct_CC
--- 2086,2093 ----
    else
      case $cross_compiling:$ac_tool_warned in
  yes:)
! { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
! $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
  ac_tool_warned=yes ;;
  esac
      CC=$ac_ct_CC
***************
*** 2288,2299 ****
    else
      case $cross_compiling:$ac_tool_warned in
  yes:)
! { $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
! whose name does not start with the host triplet.  If you think this
! configuration is useful to you, please write to autoconf at gnu.org." >&5
! $as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
! whose name does not start with the host triplet.  If you think this
! configuration is useful to you, please write to autoconf at gnu.org." >&2;}
  ac_tool_warned=yes ;;
  esac
      CC=$ac_ct_CC
--- 2286,2293 ----
    else
      case $cross_compiling:$ac_tool_warned in
  yes:)
! { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
! $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
  ac_tool_warned=yes ;;
  esac
      CC=$ac_ct_CC
***************
*** 2303,2313 ****
  fi
  
  
! test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: no acceptable C compiler found in \$PATH
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }
  
  # Provide some information about the compiler.
  $as_echo "$as_me:$LINENO: checking for C compiler version" >&5
--- 2297,2309 ----
  fi
  
  
! test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
! { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: no acceptable C compiler found in \$PATH
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }; }
  
  # Provide some information about the compiler.
  $as_echo "$as_me:$LINENO: checking for C compiler version" >&5
***************
*** 2437,2447 ****
    $as_echo "$as_me: failed program was:" >&5
  sed 's/^/| /' conftest.$ac_ext >&5
  
  { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: C compiler cannot create executables
  See \`config.log' for more details." >&2;}
!    { (exit 77); exit 77; }; }
  fi
  
  ac_exeext=$ac_cv_exeext
--- 2433,2445 ----
    $as_echo "$as_me: failed program was:" >&5
  sed 's/^/| /' conftest.$ac_ext >&5
  
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: C compiler cannot create executables
  See \`config.log' for more details." >&2;}
!    { (exit 77); exit 77; }; }; }
  fi
  
  ac_exeext=$ac_cv_exeext
***************
*** 2469,2481 ****
      if test "$cross_compiling" = maybe; then
  	cross_compiling=yes
      else
! 	{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
  If you meant to cross compile, use \`--host'.
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: cannot run C compiled programs.
  If you meant to cross compile, use \`--host'.
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }
      fi
    fi
  fi
--- 2467,2481 ----
      if test "$cross_compiling" = maybe; then
  	cross_compiling=yes
      else
! 	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
! { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
  If you meant to cross compile, use \`--host'.
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: cannot run C compiled programs.
  If you meant to cross compile, use \`--host'.
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }; }
      fi
    fi
  fi
***************
*** 2518,2528 ****
    esac
  done
  else
!   { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }
  fi
  
  rm -f conftest$ac_cv_exeext
--- 2518,2530 ----
    esac
  done
  else
!   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
! { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }; }
  fi
  
  rm -f conftest$ac_cv_exeext
***************
*** 2576,2586 ****
    $as_echo "$as_me: failed program was:" >&5
  sed 's/^/| /' conftest.$ac_ext >&5
  
  { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }
  fi
  
  rm -f conftest.$ac_cv_objext conftest.$ac_ext
--- 2578,2590 ----
    $as_echo "$as_me: failed program was:" >&5
  sed 's/^/| /' conftest.$ac_ext >&5
  
+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
  { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }; }
  fi
  
  rm -f conftest.$ac_cv_objext conftest.$ac_ext
***************
*** 3148,3158 ****
  if $ac_preproc_ok; then
    :
  else
!   { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }
  fi
  
  ac_ext=c
--- 3152,3164 ----
  if $ac_preproc_ok; then
    :
  else
!   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
! { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
  See \`config.log' for more details." >&5
  $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
  See \`config.log' for more details." >&2;}
!    { (exit 1); exit 1; }; }; }
  fi
  
  ac_ext=c
***************
*** 4016,4023 ****
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 4022,4030 ----
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 4154,4160 ****
  $as_echo "$ac_cv_header_Carbon_Carbon_h" >&6; }
  
  fi
! if test $ac_cv_header_Carbon_Carbon_h = yes; then
    CARBON=yes
  fi
  
--- 4161,4167 ----
  $as_echo "$ac_cv_header_Carbon_Carbon_h" >&6; }
  
  fi
! if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then
    CARBON=yes
  fi
  
***************
*** 4484,4490 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
  $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
! if test $ac_cv_lib_selinux_is_selinux_enabled = yes; then
    LIBS="$LIBS -lselinux"
  	   cat >>confdefs.h <<\_ACEOF
  #define HAVE_SELINUX 1
--- 4491,4497 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
  $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
! if test "x$ac_cv_lib_selinux_is_selinux_enabled" = x""yes; then
    LIBS="$LIBS -lselinux"
  	   cat >>confdefs.h <<\_ACEOF
  #define HAVE_SELINUX 1
***************
*** 5891,5897 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
  $as_echo "$ac_cv_lib_socket_socket" >&6; }
! if test $ac_cv_lib_socket_socket = yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBSOCKET 1
  _ACEOF
--- 5898,5904 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
  $as_echo "$ac_cv_lib_socket_socket" >&6; }
! if test "x$ac_cv_lib_socket_socket" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBSOCKET 1
  _ACEOF
***************
*** 5966,5972 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
  $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
! if test $ac_cv_lib_nsl_gethostbyname = yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBNSL 1
  _ACEOF
--- 5973,5979 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
  $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
! if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBNSL 1
  _ACEOF
***************
*** 6203,6210 ****
    have_x=disabled
  else
    case $x_includes,$x_libraries in #(
!     *\'*) { { $as_echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
! $as_echo "$as_me: error: Cannot use X directory names containing '" >&2;}
     { (exit 1); exit 1; }; };; #(
      *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
    $as_echo_n "(cached) " >&6
--- 6210,6217 ----
    have_x=disabled
  else
    case $x_includes,$x_libraries in #(
!     *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
! $as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
     { (exit 1); exit 1; }; };; #(
      *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
    $as_echo_n "(cached) " >&6
***************
*** 6242,6248 ****
  	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
      esac
      case $ac_im_usrlibdir in
! 	/usr/lib | /lib) ;;
  	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
      esac
    fi
--- 6249,6255 ----
  	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
      esac
      case $ac_im_usrlibdir in
! 	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
  	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
      esac
    fi
***************
*** 6682,6688 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
  $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
! if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
  fi
  
--- 6689,6695 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
  $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
! if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
  fi
  
***************
*** 6752,6758 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
  $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
! if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
  fi
  
--- 6759,6765 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
  $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
! if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
  fi
  
***************
*** 6924,6930 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
  $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
! if test $ac_cv_lib_nsl_gethostbyname = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
  fi
  
--- 6931,6937 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
  $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
! if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
  fi
  
***************
*** 6994,7000 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
  $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
! if test $ac_cv_lib_bsd_gethostbyname = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
  fi
  
--- 7001,7007 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
  $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
! if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
  fi
  
***************
*** 7160,7166 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
  $as_echo "$ac_cv_lib_socket_connect" >&6; }
! if test $ac_cv_lib_socket_connect = yes; then
    X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
  fi
  
--- 7167,7173 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
  $as_echo "$ac_cv_lib_socket_connect" >&6; }
! if test "x$ac_cv_lib_socket_connect" = x""yes; then
    X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
  fi
  
***************
*** 7319,7325 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
  $as_echo "$ac_cv_lib_posix_remove" >&6; }
! if test $ac_cv_lib_posix_remove = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
  fi
  
--- 7326,7332 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
  $as_echo "$ac_cv_lib_posix_remove" >&6; }
! if test "x$ac_cv_lib_posix_remove" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
  fi
  
***************
*** 7478,7484 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
  $as_echo "$ac_cv_lib_ipc_shmat" >&6; }
! if test $ac_cv_lib_ipc_shmat = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
  fi
  
--- 7485,7491 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
  $as_echo "$ac_cv_lib_ipc_shmat" >&6; }
! if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
  fi
  
***************
*** 7559,7565 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
  $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
! if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
    X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
  fi
  
--- 7566,7572 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
  $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
! if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
    X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
  fi
  
***************
*** 7727,7733 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5
  $as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; }
! if test $ac_cv_lib_Xdmcp__XdmcpAuthDoIt = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"
  fi
  
--- 7734,7740 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5
  $as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; }
! if test "x$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"
  fi
  
***************
*** 7797,7803 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceOpenConnection" >&5
  $as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; }
! if test $ac_cv_lib_ICE_IceOpenConnection = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"
  fi
  
--- 7804,7810 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceOpenConnection" >&5
  $as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; }
! if test "x$ac_cv_lib_ICE_IceOpenConnection" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"
  fi
  
***************
*** 7868,7874 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5
  $as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; }
! if test $ac_cv_lib_Xpm_XpmCreatePixmapFromData = yes; then
    X_PRE_LIBS="$X_PRE_LIBS -lXpm"
  fi
  
--- 7875,7881 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5
  $as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; }
! if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = x""yes; then
    X_PRE_LIBS="$X_PRE_LIBS -lXpm"
  fi
  
***************
*** 9251,9257 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
  $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
! if test $ac_cv_lib_Xext_XShapeQueryExtension = yes; then
    GUI_X_LIBS="-lXext"
  fi
  
--- 9258,9264 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
  $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
! if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = x""yes; then
    GUI_X_LIBS="-lXext"
  fi
  
***************
*** 9320,9326 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_w_wslen" >&5
  $as_echo "$ac_cv_lib_w_wslen" >&6; }
! if test $ac_cv_lib_w_wslen = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"
  fi
  
--- 9327,9333 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_w_wslen" >&5
  $as_echo "$ac_cv_lib_w_wslen" >&6; }
! if test "x$ac_cv_lib_w_wslen" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"
  fi
  
***************
*** 9389,9395 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlsym" >&5
  $as_echo "$ac_cv_lib_dl_dlsym" >&6; }
! if test $ac_cv_lib_dl_dlsym = yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"
  fi
  
--- 9396,9402 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlsym" >&5
  $as_echo "$ac_cv_lib_dl_dlsym" >&6; }
! if test "x$ac_cv_lib_dl_dlsym" = x""yes; then
    X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"
  fi
  
***************
*** 9458,9464 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5
  $as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; }
! if test $ac_cv_lib_Xmu_XmuCreateStippledPixmap = yes; then
    GUI_X_LIBS="-lXmu $GUI_X_LIBS"
  fi
  
--- 9465,9471 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5
  $as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; }
! if test "x$ac_cv_lib_Xmu_XmuCreateStippledPixmap" = x""yes; then
    GUI_X_LIBS="-lXmu $GUI_X_LIBS"
  fi
  
***************
*** 9528,9534 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_XpEndJob" >&5
  $as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; }
! if test $ac_cv_lib_Xp_XpEndJob = yes; then
    GUI_X_LIBS="-lXp $GUI_X_LIBS"
  fi
  
--- 9535,9541 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_XpEndJob" >&5
  $as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; }
! if test "x$ac_cv_lib_Xp_XpEndJob" = x""yes; then
    GUI_X_LIBS="-lXp $GUI_X_LIBS"
  fi
  
***************
*** 9699,9706 ****
  $as_echo "$ac_res" >&6; }
  
  fi
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 9706,9714 ----
  $as_echo "$ac_res" >&6; }
  
  fi
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 9852,9859 ****
  $as_echo "$ac_res" >&6; }
  
  fi
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 9860,9868 ----
  $as_echo "$ac_res" >&6; }
  
  fi
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 10098,10105 ****
  $as_echo "$ac_res" >&6; }
  
  fi
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 10107,10115 ----
  $as_echo "$ac_res" >&6; }
  
  fi
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 10539,10545 ****
  $as_echo "$ac_cv_header_elf_h" >&6; }
  
  fi
! if test $ac_cv_header_elf_h = yes; then
    HAS_ELF=1
  fi
  
--- 10549,10555 ----
  $as_echo "$ac_cv_header_elf_h" >&6; }
  
  fi
! if test "x$ac_cv_header_elf_h" = x""yes; then
    HAS_ELF=1
  fi
  
***************
*** 10605,10611 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_elf_main" >&5
  $as_echo "$ac_cv_lib_elf_main" >&6; }
! if test $ac_cv_lib_elf_main = yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBELF 1
  _ACEOF
--- 10615,10621 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_elf_main" >&5
  $as_echo "$ac_cv_lib_elf_main" >&6; }
! if test "x$ac_cv_lib_elf_main" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBELF 1
  _ACEOF
***************
*** 10679,10686 ****
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
  _ACEOF
--- 10689,10697 ----
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
  _ACEOF
***************
*** 10966,10972 ****
  
  
  
- 
  for ac_header in stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
  	termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
  	iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
--- 10977,10982 ----
***************
*** 10974,10980 ****
  	sys/stream.h termios.h libc.h sys/statfs.h \
  	poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
  	libgen.h util/debug.h util/msg18n.h frame.h \
! 	sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h
  do
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
  if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
--- 10984,10990 ----
  	sys/stream.h termios.h libc.h sys/statfs.h \
  	poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
  	libgen.h util/debug.h util/msg18n.h frame.h \
! 	sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h
  do
  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
  if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
***************
*** 11108,11115 ****
  $as_echo "$ac_res" >&6; }
  
  fi
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 11118,11126 ----
  $as_echo "$ac_res" >&6; }
  
  fi
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 11172,11179 ****
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 11183,11256 ----
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
!   cat >>confdefs.h <<_ACEOF
! #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
! _ACEOF
! 
! fi
! 
! done
! 
! 
! 
! for ac_header in sys/sysctl.h
! do
! as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
! { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
! $as_echo_n "checking for $ac_header... " >&6; }
! if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
!   $as_echo_n "(cached) " >&6
! else
!   cat >conftest.$ac_ext <<_ACEOF
! /* confdefs.h.  */
! _ACEOF
! cat confdefs.h >>conftest.$ac_ext
! cat >>conftest.$ac_ext <<_ACEOF
! /* end confdefs.h.  */
! #if defined HAVE_SYS_PARAM_H
! #  include <sys/param.h>
! #endif
! 
! #include <$ac_header>
! _ACEOF
! rm -f conftest.$ac_objext
! if { (ac_try="$ac_compile"
! case "(($ac_try" in
!   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
!   *) ac_try_echo=$ac_try;;
! esac
! eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
! $as_echo "$ac_try_echo") >&5
!   (eval "$ac_compile") 2>conftest.er1
!   ac_status=$?
!   grep -v '^ *+' conftest.er1 >conftest.err
!   rm -f conftest.er1
!   cat conftest.err >&5
!   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
!   (exit $ac_status); } && {
! 	 test -z "$ac_c_werror_flag" ||
! 	 test ! -s conftest.err
!        } && test -s conftest.$ac_objext; then
!   eval "$as_ac_Header=yes"
! else
!   $as_echo "$as_me: failed program was:" >&5
! sed 's/^/| /' conftest.$ac_ext >&5
! 
! 	eval "$as_ac_Header=no"
! fi
! 
! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
! fi
! ac_res=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
! 	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
! $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 11372,11379 ****
  $as_echo "$ac_res" >&6; }
  
  fi
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 11449,11457 ----
  $as_echo "$ac_res" >&6; }
  
  fi
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 11770,11776 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
  $as_echo "$ac_cv_type_mode_t" >&6; }
! if test $ac_cv_type_mode_t = yes; then
    :
  else
  
--- 11848,11854 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
  $as_echo "$ac_cv_type_mode_t" >&6; }
! if test "x$ac_cv_type_mode_t" = x""yes; then
    :
  else
  
***************
*** 11874,11880 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
  $as_echo "$ac_cv_type_off_t" >&6; }
! if test $ac_cv_type_off_t = yes; then
    :
  else
  
--- 11952,11958 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
  $as_echo "$ac_cv_type_off_t" >&6; }
! if test "x$ac_cv_type_off_t" = x""yes; then
    :
  else
  
***************
*** 11978,11984 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
  $as_echo "$ac_cv_type_pid_t" >&6; }
! if test $ac_cv_type_pid_t = yes; then
    :
  else
  
--- 12056,12062 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
  $as_echo "$ac_cv_type_pid_t" >&6; }
! if test "x$ac_cv_type_pid_t" = x""yes; then
    :
  else
  
***************
*** 12082,12088 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
  $as_echo "$ac_cv_type_size_t" >&6; }
! if test $ac_cv_type_size_t = yes; then
    :
  else
  
--- 12160,12166 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
  $as_echo "$ac_cv_type_size_t" >&6; }
! if test "x$ac_cv_type_size_t" = x""yes; then
    :
  else
  
***************
*** 12286,12292 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_ino_t" >&5
  $as_echo "$ac_cv_type_ino_t" >&6; }
! if test $ac_cv_type_ino_t = yes; then
    :
  else
  
--- 12364,12370 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_ino_t" >&5
  $as_echo "$ac_cv_type_ino_t" >&6; }
! if test "x$ac_cv_type_ino_t" = x""yes; then
    :
  else
  
***************
*** 12390,12396 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_dev_t" >&5
  $as_echo "$ac_cv_type_dev_t" >&6; }
! if test $ac_cv_type_dev_t = yes; then
    :
  else
  
--- 12468,12474 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_type_dev_t" >&5
  $as_echo "$ac_cv_type_dev_t" >&6; }
! if test "x$ac_cv_type_dev_t" = x""yes; then
    :
  else
  
***************
*** 12680,12687 ****
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! if test `eval 'as_val=${'$as_ac_Lib'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1
  _ACEOF
--- 12758,12766 ----
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_Lib'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1
  _ACEOF
***************
*** 13929,13936 ****
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! if test `eval 'as_val=${'$as_ac_var'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
  _ACEOF
--- 14008,14016 ----
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_var'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
  _ACEOF
***************
*** 14313,14319 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_strtod" >&5
  $as_echo "$ac_cv_lib_m_strtod" >&6; }
! if test $ac_cv_lib_m_strtod = yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBM 1
  _ACEOF
--- 14393,14399 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_strtod" >&5
  $as_echo "$ac_cv_lib_m_strtod" >&6; }
! if test "x$ac_cv_lib_m_strtod" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define HAVE_LIBM 1
  _ACEOF
***************
*** 14473,14479 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix1e_acl_get_file" >&5
  $as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; }
! if test $ac_cv_lib_posix1e_acl_get_file = yes; then
    LIBS="$LIBS -lposix1e"
  else
    { $as_echo "$as_me:$LINENO: checking for acl_get_file in -lacl" >&5
--- 14553,14559 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix1e_acl_get_file" >&5
  $as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; }
! if test "x$ac_cv_lib_posix1e_acl_get_file" = x""yes; then
    LIBS="$LIBS -lposix1e"
  else
    { $as_echo "$as_me:$LINENO: checking for acl_get_file in -lacl" >&5
***************
*** 14541,14547 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_acl_acl_get_file" >&5
  $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
! if test $ac_cv_lib_acl_acl_get_file = yes; then
    LIBS="$LIBS -lacl"
  		  { $as_echo "$as_me:$LINENO: checking for fgetxattr in -lattr" >&5
  $as_echo_n "checking for fgetxattr in -lattr... " >&6; }
--- 14621,14627 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_acl_acl_get_file" >&5
  $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
! if test "x$ac_cv_lib_acl_acl_get_file" = x""yes; then
    LIBS="$LIBS -lacl"
  		  { $as_echo "$as_me:$LINENO: checking for fgetxattr in -lattr" >&5
  $as_echo_n "checking for fgetxattr in -lattr... " >&6; }
***************
*** 14608,14614 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_attr_fgetxattr" >&5
  $as_echo "$ac_cv_lib_attr_fgetxattr" >&6; }
! if test $ac_cv_lib_attr_fgetxattr = yes; then
    LIBS="$LIBS -lattr"
  fi
  
--- 14688,14694 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_attr_fgetxattr" >&5
  $as_echo "$ac_cv_lib_attr_fgetxattr" >&6; }
! if test "x$ac_cv_lib_attr_fgetxattr" = x""yes; then
    LIBS="$LIBS -lattr"
  fi
  
***************
*** 15746,15752 ****
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5
  $as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; }
! if test $ac_cv_lib_xpg4__xpg4_setrunelocale = yes; then
    LIBS="$LIBS -lxpg4"
  fi
  
--- 15826,15832 ----
  fi
  { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5
  $as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; }
! if test "x$ac_cv_lib_xpg4__xpg4_setrunelocale" = x""yes; then
    LIBS="$LIBS -lxpg4"
  fi
  
***************
*** 16045,16052 ****
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! if test `eval 'as_val=${'$as_ac_var'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
  _ACEOF
--- 16125,16133 ----
  		 $as_echo "$as_val"'`
  	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
  $as_echo "$ac_res" >&6; }
! as_val=`eval 'as_val=${'$as_ac_var'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
  _ACEOF
***************
*** 16246,16252 ****
  $as_echo "$ac_cv_header_dlfcn_h" >&6; }
  
  fi
! if test $ac_cv_header_dlfcn_h = yes; then
    DLL=dlfcn.h
  else
    if test "${ac_cv_header_dl_h+set}" = set; then
--- 16327,16333 ----
  $as_echo "$ac_cv_header_dlfcn_h" >&6; }
  
  fi
! if test "x$ac_cv_header_dlfcn_h" = x""yes; then
    DLL=dlfcn.h
  else
    if test "${ac_cv_header_dl_h+set}" = set; then
***************
*** 16376,16382 ****
  $as_echo "$ac_cv_header_dl_h" >&6; }
  
  fi
! if test $ac_cv_header_dl_h = yes; then
    DLL=dl.h
  fi
  
--- 16457,16463 ----
  $as_echo "$ac_cv_header_dl_h" >&6; }
  
  fi
! if test "x$ac_cv_header_dl_h" = x""yes; then
    DLL=dl.h
  fi
  
***************
*** 16895,16902 ****
  $as_echo "$ac_res" >&6; }
  
  fi
! if test `eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'` = yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
--- 16976,16984 ----
  $as_echo "$ac_res" >&6; }
  
  fi
! as_val=`eval 'as_val=${'$as_ac_Header'}
! 		 $as_echo "$as_val"'`
!    if test "x$as_val" = x""yes; then
    cat >>confdefs.h <<_ACEOF
  #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
  _ACEOF
***************
*** 16986,16993 ****
      case $ac_val in #(
      *${as_nl}*)
        case $ac_var in #(
!       *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
! $as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
        esac
        case $ac_var in #(
        _ | IFS | as_nl) ;; #(
--- 17068,17075 ----
      case $ac_val in #(
      *${as_nl}*)
        case $ac_var in #(
!       *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
! $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
        esac
        case $ac_var in #(
        _ | IFS | as_nl) ;; #(
***************
*** 17379,17385 ****
  # values after options handling.
  ac_log="
  This file was extended by $as_me, which was
! generated by GNU Autoconf 2.62.  Invocation command line was
  
    CONFIG_FILES    = $CONFIG_FILES
    CONFIG_HEADERS  = $CONFIG_HEADERS
--- 17461,17467 ----
  # values after options handling.
  ac_log="
  This file was extended by $as_me, which was
! generated by GNU Autoconf 2.63.  Invocation command line was
  
    CONFIG_FILES    = $CONFIG_FILES
    CONFIG_HEADERS  = $CONFIG_HEADERS
***************
*** 17392,17397 ****
--- 17474,17488 ----
  
  _ACEOF
  
+ case $ac_config_files in *"
+ "*) set x $ac_config_files; shift; ac_config_files=$*;;
+ esac
+ 
+ case $ac_config_headers in *"
+ "*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+ esac
+ 
+ 
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  # Files that config.status was made for.
  config_files="$ac_config_files"
***************
*** 17404,17419 ****
  \`$as_me' instantiates files from templates according to the
  current configuration.
  
! Usage: $0 [OPTIONS] [FILE]...
  
    -h, --help       print this help, then exit
    -V, --version    print version number and configuration settings, then exit
!   -q, --quiet      do not print progress messages
    -d, --debug      don't remove temporary files
        --recheck    update $as_me by reconfiguring in the same conditions
!   --file=FILE[:TEMPLATE]
                     instantiate the configuration file FILE
!   --header=FILE[:TEMPLATE]
                     instantiate the configuration header FILE
  
  Configuration files:
--- 17495,17511 ----
  \`$as_me' instantiates files from templates according to the
  current configuration.
  
! Usage: $0 [OPTION]... [FILE]...
  
    -h, --help       print this help, then exit
    -V, --version    print version number and configuration settings, then exit
!   -q, --quiet, --silent
!                    do not print progress messages
    -d, --debug      don't remove temporary files
        --recheck    update $as_me by reconfiguring in the same conditions
!       --file=FILE[:TEMPLATE]
                     instantiate the configuration file FILE
!       --header=FILE[:TEMPLATE]
                     instantiate the configuration header FILE
  
  Configuration files:
***************
*** 17428,17434 ****
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  ac_cs_version="\\
  config.status
! configured by $0, generated by GNU Autoconf 2.62,
    with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
  
  Copyright (C) 2008 Free Software Foundation, Inc.
--- 17520,17526 ----
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  ac_cs_version="\\
  config.status
! configured by $0, generated by GNU Autoconf 2.63,
    with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
  
  Copyright (C) 2008 Free Software Foundation, Inc.
***************
*** 17625,17631 ****
  $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
     { (exit 1); exit 1; }; }
  
!   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then
      break
    elif $ac_last_try; then
      { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
--- 17717,17724 ----
  $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
     { (exit 1); exit 1; }; }
  
!   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
!   if test $ac_delim_n = $ac_delim_num; then
      break
    elif $ac_last_try; then
      { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
***************
*** 17830,17838 ****
    }
    split(mac1, mac2, "(") #)
    macro = mac2[1]
    if (D_is_set[macro]) {
      # Preserve the white space surrounding the "#".
-     prefix = substr(line, 1, index(line, defundef) - 1)
      print prefix "define", macro P[macro] D[macro]
      next
    } else {
--- 17923,17931 ----
    }
    split(mac1, mac2, "(") #)
    macro = mac2[1]
+   prefix = substr(line, 1, index(line, defundef) - 1)
    if (D_is_set[macro]) {
      # Preserve the white space surrounding the "#".
      print prefix "define", macro P[macro] D[macro]
      next
    } else {
***************
*** 17840,17846 ****
      # in the case of _POSIX_SOURCE, which is predefined and required
      # on some systems where configure will not decide to define it.
      if (defundef == "undef") {
!       print "/*", line, "*/"
        next
      }
    }
--- 17933,17939 ----
      # in the case of _POSIX_SOURCE, which is predefined and required
      # on some systems where configure will not decide to define it.
      if (defundef == "undef") {
!       print "/*", prefix defundef, macro, "*/"
        next
      }
    }
***************
*** 17864,17871 ****
    esac
    case $ac_mode$ac_tag in
    :[FHL]*:*);;
!   :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
! $as_echo "$as_me: error: Invalid tag $ac_tag." >&2;}
     { (exit 1); exit 1; }; };;
    :[FH]-) ac_tag=-:-;;
    :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
--- 17957,17964 ----
    esac
    case $ac_mode$ac_tag in
    :[FHL]*:*);;
!   :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
! $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
     { (exit 1); exit 1; }; };;
    :[FH]-) ac_tag=-:-;;
    :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
***************
*** 18183,18190 ****
    $ac_cs_success || { (exit 1); exit 1; }
  fi
  if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
!   { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5
! $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;}
  fi
  
  
--- 18276,18283 ----
    $ac_cs_success || { (exit 1); exit 1; }
  fi
  if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
!   { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
! $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
  fi
  
  
*** ../vim-7.2.182/src/configure.in	2009-05-14 22:19:19.000000000 +0200
--- src/configure.in	2009-05-16 13:32:00.000000000 +0200
***************
*** 2100,2106 ****
  	sys/stream.h termios.h libc.h sys/statfs.h \
  	poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
  	libgen.h util/debug.h util/msg18n.h frame.h \
! 	sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
  
  dnl sys/ptem.h depends on sys/stream.h on Solaris
  AC_CHECK_HEADERS(sys/ptem.h, [], [],
--- 2100,2106 ----
  	sys/stream.h termios.h libc.h sys/statfs.h \
  	poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
  	libgen.h util/debug.h util/msg18n.h frame.h \
! 	sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
  
  dnl sys/ptem.h depends on sys/stream.h on Solaris
  AC_CHECK_HEADERS(sys/ptem.h, [], [],
***************
*** 2108,2113 ****
--- 2108,2119 ----
  #  include <sys/stream.h>
  #endif])
  
+ dnl sys/sysctl.h depends on sys/param.h on OpenBSD
+ AC_CHECK_HEADERS(sys/sysctl.h, [], [],
+ [#if defined HAVE_SYS_PARAM_H
+ #  include <sys/param.h>
+ #endif])
+ 
  
  dnl pthread_np.h may exist but can only be used after including pthread.h
  AC_MSG_CHECKING([for pthread_np.h])
*** ../vim-7.2.182/src/version.c	2009-05-17 23:25:16.000000000 +0200
--- src/version.c	2009-05-21 15:16:01.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     183,
  /**/

-- 
CART DRIVER: Bring out your dead!
   There are legs stick out of windows and doors.  Two MEN are fighting in the
   mud - covered from head to foot in it.  Another MAN is on his hands in
   knees shovelling mud into his mouth.  We just catch sight of a MAN falling
   into a well.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.184 ---
To: vim-dev at vim.org
Subject: Patch 7.2.184
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.184
Problem:    Some more compiler warnings when using gcc -Wextra.
Solution:   Add UNUSED and type casts.  Autoconf check for wchar_t.
Files:	    src/auto/configure, src/config.h.in, src/configure.in,
	    src/gui_athena.c, src/gui_x11.c, src/gui.c, src/gui_beval.c,
	    src/gui_at_sb.c, src/gui_at_fs.c, src/gui_motif.c,
	    src/gui_xmdlg.c, src/gui_xmebw.c, src/if_python.c, src/window.c,
	    src/workshop.c


*** ../vim-7.2.183/src/auto/configure	2009-05-21 15:19:59.000000000 +0200
--- src/auto/configure	2009-05-21 16:05:01.000000000 +0200
***************
*** 7977,7982 ****
--- 7977,8058 ----
  
      LDFLAGS="$ac_save_LDFLAGS"
  
+     { $as_echo "$as_me:$LINENO: checking size of wchar_t is 2 bytes" >&5
+ $as_echo_n "checking size of wchar_t is 2 bytes... " >&6; }
+     if test "${ac_cv_small_wchar_t+set}" = set; then
+   $as_echo_n "(cached) " >&6
+ else
+   if test "$cross_compiling" = yes; then
+   { { $as_echo "$as_me:$LINENO: error: failed to compile test program" >&5
+ $as_echo "$as_me: error: failed to compile test program" >&2;}
+    { (exit 1); exit 1; }; }
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ 
+ #include <X11/Xlib.h>
+ #if STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #endif
+ 		main()
+ 		{
+ 		  if (sizeof(wchar_t) <= 2)
+ 		    exit(1);
+ 		  exit(0);
+ 		}
+ _ACEOF
+ rm -f conftest$ac_exeext
+ if { (ac_try="$ac_link"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_link") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+   { (case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_try") 2>&5
+   ac_status=$?
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; }; then
+   ac_cv_small_wchar_t="no"
+ else
+   $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ ( exit $ac_status )
+ ac_cv_small_wchar_t="yes"
+ fi
+ rm -rf conftest.dSYM
+ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
+ 
+ 
+ fi
+ 
+     { $as_echo "$as_me:$LINENO: result: $ac_cv_small_wchar_t" >&5
+ $as_echo "$ac_cv_small_wchar_t" >&6; }
+     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
+       cat >>confdefs.h <<\_ACEOF
+ #define SMALL_WCHAR_T 1
+ _ACEOF
+ 
+     fi
+ 
    fi
  fi
  
***************
*** 15417,15423 ****
  
  
  
- 
  bcopy_test_prog='
  #include "confdefs.h"
  #ifdef HAVE_STRING_H
--- 15493,15498 ----
*** ../vim-7.2.183/src/config.h.in	2009-05-14 22:19:19.000000000 +0200
--- src/config.h.in	2009-05-21 15:44:24.000000000 +0200
***************
*** 39,44 ****
--- 39,47 ----
  /* Defined to the size of an int */
  #undef SIZEOF_INT
  
+ /* Define when wchar_t is only 2 bytes. */
+ #undef SMALL_WCHAR_T
+ 
  /*
   * If we cannot trust one of the following from the libraries, we use our
   * own safe but probably slower vim_memmove().
*** ../vim-7.2.183/src/configure.in	2009-05-21 15:19:59.000000000 +0200
--- src/configure.in	2009-05-21 16:04:56.000000000 +0200
***************
*** 1193,1198 ****
--- 1193,1220 ----
  
      LDFLAGS="$ac_save_LDFLAGS"
  
+     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
+     AC_CACHE_VAL(ac_cv_small_wchar_t,
+ 	[AC_TRY_RUN([
+ #include <X11/Xlib.h>
+ #if STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #endif
+ 		main()
+ 		{
+ 		  if (sizeof(wchar_t) <= 2)
+ 		    exit(1);
+ 		  exit(0);
+ 		}],
+ 		ac_cv_small_wchar_t="no",
+ 		ac_cv_small_wchar_t="yes",
+ 		AC_MSG_ERROR(failed to compile test program))])
+     AC_MSG_RESULT($ac_cv_small_wchar_t)
+     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
+       AC_DEFINE(SMALL_WCHAR_T)
+     fi
+ 
    fi
  fi
  
***************
*** 2881,2887 ****
  AC_MSG_RESULT($ac_cv_sizeof_int)
  AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
  
- 
  dnl Check for memmove() before bcopy(), makes memmove() be used when both are
  dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
  
--- 2903,2908 ----
*** ../vim-7.2.183/src/gui_athena.c	2008-06-24 23:00:51.000000000 +0200
--- src/gui_athena.c	2009-05-21 16:39:43.000000000 +0200
***************
*** 86,95 ****
   * Scrollbar callback (XtNjumpProc) for when the scrollbar is dragged with the
   * left or middle mouse button.
   */
- /* ARGSUSED */
      static void
  gui_athena_scroll_cb_jump(w, client_data, call_data)
!     Widget	w;
      XtPointer	client_data, call_data;
  {
      scrollbar_T *sb, *sb_info;
--- 86,94 ----
   * Scrollbar callback (XtNjumpProc) for when the scrollbar is dragged with the
   * left or middle mouse button.
   */
      static void
  gui_athena_scroll_cb_jump(w, client_data, call_data)
!     Widget	w UNUSED;
      XtPointer	client_data, call_data;
  {
      scrollbar_T *sb, *sb_info;
***************
*** 122,131 ****
[...3247 lines suppressed...]
! 	char	*filename)
  {
  #ifdef WSDEBUG_TRACE
      if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
--- 262,270 ----
      load_window(filename, lineno);
  }
  
      void
  workshop_front_file(
! 	char	*filename UNUSED)
  {
  #ifdef WSDEBUG_TRACE
      if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
***************
*** 538,546 ****
   * breakpoints have moved when a program has been recompiled and
   * reloaded into dbx.
   */
- /*ARGSUSED*/
      void
! workshop_moved_marks(char *filename)
  {
  #ifdef WSDEBUG_TRACE
      if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
--- 536,543 ----
   * breakpoints have moved when a program has been recompiled and
   * reloaded into dbx.
   */
      void
! workshop_moved_marks(char *filename UNUSED)
  {
  #ifdef WSDEBUG_TRACE
      if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
***************
*** 575,585 ****
      return (int)h;
  }
  
- /*ARGSUSED*/
      void
  workshop_footer_message(
! 	char		*message,
! 	int		 severity)	/* severity is currently unused */
  {
  #ifdef WSDEBUG_TRACE
      if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
--- 572,581 ----
      return (int)h;
  }
  
      void
  workshop_footer_message(
! 	char	*message,
! 	int	severity UNUSED)	/* severity is currently unused */
  {
  #ifdef WSDEBUG_TRACE
      if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
***************
*** 687,701 ****
   * command. The globals curMenuName and curMenuPriority contain the name and
   * priority of the parent menu tree.
   */
- /*ARGSUSED*/
      void
  workshop_menu_item(
  	char		*label,
  	char		*verb,
! 	char		*accelerator,
  	char		*acceleratorText,
! 	char		*name,
! 	char		*filepos,
  	char		*sensitive)
  {
      char		 cbuf[BUFSIZ];
--- 683,696 ----
   * command. The globals curMenuName and curMenuPriority contain the name and
   * priority of the parent menu tree.
   */
      void
  workshop_menu_item(
  	char		*label,
  	char		*verb,
! 	char		*accelerator UNUSED,
  	char		*acceleratorText,
! 	char		*name UNUSED,
! 	char		*filepos UNUSED,
  	char		*sensitive)
  {
      char		 cbuf[BUFSIZ];
***************
*** 810,822 ****
      workshopInitDone = True;
  }
  
- /*ARGSUSED*/
      void
  workshop_toolbar_button(
  	char	*label,
  	char	*verb,
! 	char	*senseVerb,
! 	char	*filepos,
  	char	*help,
  	char	*sense,
  	char	*file,
--- 805,816 ----
      workshopInitDone = True;
  }
  
      void
  workshop_toolbar_button(
  	char	*label,
  	char	*verb,
! 	char	*senseVerb UNUSED,
! 	char	*filepos UNUSED,
  	char	*help,
  	char	*sense,
  	char	*file,
***************
*** 968,974 ****
  	    if (strcmp(option, "syntax") == 0)
  		vim_snprintf(cbuf, sizeof(cbuf), "syntax %s", value);
  	    else if (strcmp(option, "savefiles") == 0)
! 		; /* XXX - Not yet implemented */
  	    break;
  
  	case 'l':
--- 962,970 ----
  	    if (strcmp(option, "syntax") == 0)
  		vim_snprintf(cbuf, sizeof(cbuf), "syntax %s", value);
  	    else if (strcmp(option, "savefiles") == 0)
! 	    {
! 		/* XXX - Not yet implemented */
! 	    }
  	    break;
  
  	case 'l':
***************
*** 1098,1107 ****
  /*
   * A button in the toolbar has been pushed.
   */
- /*ARGSUSED*/
      int
  workshop_get_positions(
! 	void		*clientData,	/* unused */
  	char	       **filename,	/* output data */
  	int		*curLine,	/* output data */
  	int		*curCol,	/* output data */
--- 1094,1102 ----
  /*
   * A button in the toolbar has been pushed.
   */
      int
  workshop_get_positions(
! 	void		*clientData UNUSED,
  	char	       **filename,	/* output data */
  	int		*curLine,	/* output data */
  	int		*curCol,	/* output data */
***************
*** 1526,1534 ****
  	return NULL;
  }
  
- /*ARGSUSED*/
      void
! workshop_save_sensitivity(char *filename)
  {
  }
  
--- 1521,1528 ----
  	return NULL;
  }
  
      void
! workshop_save_sensitivity(char *filename UNUSED)
  {
  }
  
*** ../vim-7.2.183/src/version.c	2009-05-21 15:19:59.000000000 +0200
--- src/version.c	2009-05-21 23:19:40.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     184,
  /**/

-- 
CART DRIVER: Bring out your dead!
LARGE MAN:   Here's one!
CART DRIVER: Ninepence.
BODY:        I'm not dead!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.185 ---
To: vim-dev at vim.org
Subject: Patch 7.2.185
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.185
Problem:    Some more compiler warnings when using gcc -Wextra.
Solution:   Add UNUSED and type casts.
Files:	    src/Makefile, src/if_tlc.c, src/if_ruby.c


*** ../vim-7.2.184/src/Makefile	2009-05-21 23:25:47.000000000 +0200
--- src/Makefile	2009-05-22 18:18:44.000000000 +0200
***************
*** 105,112 ****
  # 4. "make test"  {{{1
  #	This is optional.  This will run Vim scripts on a number of test
  #	files, and compare the produced output with the expected output.
! #	If all is well, you will get the "ALL DONE" message in the end.  See
! #	below (search for "/^test").
  #
  # 5. "make install"  {{{1
  #	If the new Vim seems to be working OK you can install it and the
--- 105,112 ----
  # 4. "make test"  {{{1
  #	This is optional.  This will run Vim scripts on a number of test
  #	files, and compare the produced output with the expected output.
! #	If all is well, you will get the "ALL DONE" message in the end.  If a
! #	test fails you get "TEST FAILURE".  See below (search for "/^test").
  #
  # 5. "make install"  {{{1
  #	If the new Vim seems to be working OK you can install it and the
***************
*** 533,538 ****
--- 533,543 ----
  #CFLAGS = -g -DDEBUG -Wall -Wshadow -Wmissing-prototypes
  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
  
+ # Use this with GCC to check for mistakes, unused arguments, etc.
+ #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code
+ #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+ #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code
+ 
  # EFENCE - Electric-Fence malloc debugging: catches memory accesses beyond
  # allocated memory (and makes every malloc()/free() very slow).
  # Electric Fence is free (search ftp sites).
***************
*** 551,562 ****
  # }}}
  
  # LINT - for running lint
! #  For standard lint
! #LINT = lint
! #LINT_OPTIONS = -beprxzF
! #  For splint  (see cleanlint.vim for filtering the output)
! LINT = splint
! LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
  
  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
  # Might not work with GUI or Perl.
--- 556,568 ----
  # }}}
  
  # LINT - for running lint
! #  For standard Unix lint
! LINT = lint
! LINT_OPTIONS = -beprxzF
! #  For splint
! #  It doesn't work well, crashes on include files and non-ascii characters.
! #LINT = splint
! #LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
  
  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
  # Might not work with GUI or Perl.
***************
*** 1743,1749 ****
  # messages.  Don't worry about that.
  # If there is a real error, there will be a difference between "test.out" and
  # a "test99.ok" file.
! # If everything is alright, the final message will be "ALL DONE".
  #
  test check:
  	$(MAKE) -f Makefile $(VIMTARGET)
--- 1749,1756 ----
  # messages.  Don't worry about that.
  # If there is a real error, there will be a difference between "test.out" and
  # a "test99.ok" file.
! # If everything is alright, the final message will be "ALL DONE".  If not you
! # get "TEST FAILURE".
  #
  test check:
  	$(MAKE) -f Makefile $(VIMTARGET)
***************
*** 2427,2433 ****
  	$(CCC) -o $@ if_xcmdsrv.c
  
  objects/if_mzsch.o: if_mzsch.c
! 	$(CCC) -o $@ if_mzsch.c
  
  objects/if_perl.o: auto/if_perl.c
  	$(CCC) -o $@ auto/if_perl.c
--- 2434,2440 ----
  	$(CCC) -o $@ if_xcmdsrv.c
  
  objects/if_mzsch.o: if_mzsch.c
! 	$(CCC) -o $@ $(MZSCHEME_CFLAGS_EXTRA) if_mzsch.c
  
  objects/if_perl.o: auto/if_perl.c
  	$(CCC) -o $@ auto/if_perl.c
***************
*** 2436,2442 ****
  	$(CCC) -o $@ if_perlsfio.c
  
  objects/if_python.o: if_python.c
! 	$(CCC) -o $@ if_python.c
  
  objects/if_ruby.o: if_ruby.c
  	$(CCC) -o $@ if_ruby.c
--- 2443,2449 ----
  	$(CCC) -o $@ if_perlsfio.c
  
  objects/if_python.o: if_python.c
! 	$(CCC) -o $@ $(PYTHON_CFLAGS_EXTRA) if_python.c
  
  objects/if_ruby.o: if_ruby.c
  	$(CCC) -o $@ if_ruby.c
*** ../vim-7.2.184/src/if_ruby.c	2007-09-13 15:00:49.000000000 +0200
--- src/if_ruby.c	2009-05-22 15:32:04.000000000 +0200
***************
*** 492,498 ****
      }
  }
  
! static VALUE vim_message(VALUE self, VALUE str)
  {
      char *buff, *p;
  
--- 492,498 ----
      }
  }
  
! static VALUE vim_message(VALUE self UNUSED, VALUE str)
  {
      char *buff, *p;
  
***************
*** 505,524 ****
      return Qnil;
  }
  
! static VALUE vim_set_option(VALUE self, VALUE str)
  {
      do_set((char_u *)STR2CSTR(str), 0);
      update_screen(NOT_VALID);
      return Qnil;
  }
  
! static VALUE vim_command(VALUE self, VALUE str)
  {
      do_cmdline_cmd((char_u *)STR2CSTR(str));
      return Qnil;
  }
  
! static VALUE vim_evaluate(VALUE self, VALUE str)
  {
  #ifdef FEAT_EVAL
      char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
--- 505,524 ----
      return Qnil;
  }
  
! static VALUE vim_set_option(VALUE self UNUSED, VALUE str)
  {
      do_set((char_u *)STR2CSTR(str), 0);
      update_screen(NOT_VALID);
      return Qnil;
  }
  
! static VALUE vim_command(VALUE self UNUSED, VALUE str)
  {
      do_cmdline_cmd((char_u *)STR2CSTR(str));
      return Qnil;
  }
  
! static VALUE vim_evaluate(VALUE self UNUSED, VALUE str)
  {
  #ifdef FEAT_EVAL
      char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
***************
*** 580,586 ****
      return INT2NUM(n);
  }
  
! static VALUE buffer_s_aref(VALUE self, VALUE num)
  {
      buf_T *b;
      int n = NUM2INT(num);
--- 580,586 ----
      return INT2NUM(n);
  }
  
! static VALUE buffer_s_aref(VALUE self UNUSED, VALUE num)
  {
      buf_T *b;
      int n = NUM2INT(num);
***************
*** 629,635 ****
--- 629,637 ----
  	return line ? rb_str_new2(line) : Qnil;
      }
      rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ #ifndef __GNUC__
      return Qnil; /* For stop warning */
+ #endif
  }
  
  static VALUE buffer_aref(VALUE self, VALUE num)
***************
*** 668,674 ****
--- 670,678 ----
      else
      {
  	rb_raise(rb_eIndexError, "index %d out of buffer", n);
+ #ifndef __GNUC__
  	return Qnil; /* For stop warning */
+ #endif
      }
      return str;
  }
***************
*** 789,795 ****
      return get_buffer_line(curbuf, curwin->w_cursor.lnum);
  }
  
! static VALUE set_current_line(VALUE self, VALUE str)
  {
      return set_buffer_line(curbuf, curwin->w_cursor.lnum, str);
  }
--- 793,799 ----
      return get_buffer_line(curbuf, curwin->w_cursor.lnum);
  }
  
! static VALUE set_current_line(VALUE self UNUSED, VALUE str)
  {
      return set_buffer_line(curbuf, curwin->w_cursor.lnum, str);
  }
***************
*** 815,821 ****
  #endif
  }
  
! static VALUE window_s_aref(VALUE self, VALUE num)
  {
      win_T *w;
      int n = NUM2INT(num);
--- 819,825 ----
  #endif
  }
  
! static VALUE window_s_aref(VALUE self UNUSED, VALUE num)
  {
      win_T *w;
      int n = NUM2INT(num);
***************
*** 897,903 ****
      return Qnil;
  }
  
! static VALUE f_p(int argc, VALUE *argv, VALUE self)
  {
      int i;
      VALUE str = rb_str_new("", 0);
--- 901,907 ----
      return Qnil;
  }
  
! static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED)
  {
      int i;
      VALUE str = rb_str_new("", 0);
*** ../vim-7.2.184/src/version.c	2009-05-21 23:25:38.000000000 +0200
--- src/version.c	2009-05-22 18:18:58.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     185,
  /**/

-- 
BODY:        I'm not dead!
CART DRIVER: 'Ere.  He says he's not dead.
LARGE MAN:   Yes he is.
BODY:        I'm not!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.186 ---
To: vim-dev at vim.org
Subject: Patch 7.2.186
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.186
Problem:    Some more compiler warnings when using gcc -Wextra.
Solution:   Now with the intended if_tcl.c changes.
Files:	    src/if_tcl.c


*** ../vim-7.2.185/src/if_tcl.c	2007-05-10 20:55:34.000000000 +0200
--- src/if_tcl.c	2009-05-22 15:29:53.000000000 +0200
***************
*** 290,299 ****
   */
  #define TCL_EXIT	5
  
- /* ARGSUSED */
      static int
  exitcmd(dummy, interp, objc, objv)
!     ClientData dummy;
      Tcl_Interp *interp;
      int objc;
      Tcl_Obj *CONST objv[];
--- 290,298 ----
   */
  #define TCL_EXIT	5
  
      static int
  exitcmd(dummy, interp, objc, objv)
!     ClientData dummy UNUSED;
      Tcl_Interp *interp;
      int objc;
      Tcl_Obj *CONST objv[];
***************
*** 315,324 ****
      return TCL_ERROR;
  }
  
- /* ARGSUSED */
      static int
  catchcmd(dummy, interp, objc, objv)
!     ClientData	dummy;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
--- 314,322 ----
      return TCL_ERROR;
  }
  
      static int
  catchcmd(dummy, interp, objc, objv)
!     ClientData	dummy UNUSED;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
***************
*** 356,365 ****
  /*
   *  "::vim::beep" - what Vi[m] does best :-)
   */
- /* ARGSUSED */
      static int
  beepcmd(dummy, interp, objc, objv)
!     ClientData dummy;
      Tcl_Interp *interp;
      int objc;
      Tcl_Obj *CONST objv[];
--- 354,362 ----
  /*
   *  "::vim::beep" - what Vi[m] does best :-)
   */
      static int
  beepcmd(dummy, interp, objc, objv)
!     ClientData dummy UNUSED;
      Tcl_Interp *interp;
      int objc;
      Tcl_Obj *CONST objv[];
***************
*** 378,387 ****
   *  "::vim::buffer {N}" - create buffer command for buffer N.
   *  "::vim::buffer new" - create a new buffer (not implemented)
   */
- /* ARGSUSED */
      static int
  buffercmd(dummy, interp, objc, objv)
!     ClientData dummy;
      Tcl_Interp *interp;
      int objc;
      Tcl_Obj *CONST objv[];
--- 375,383 ----
   *  "::vim::buffer {N}" - create buffer command for buffer N.
   *  "::vim::buffer new" - create a new buffer (not implemented)
   */
      static int
  buffercmd(dummy, interp, objc, objv)
!     ClientData dummy UNUSED;
      Tcl_Interp *interp;
      int objc;
      Tcl_Obj *CONST objv[];
***************
*** 475,484 ****
  /*
   * "::vim::window list" - create list of window commands.
   */
- /* ARGSUSED */
      static int
  windowcmd(dummy, interp, objc, objv)
!     ClientData	dummy;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
--- 471,479 ----
  /*
   * "::vim::window list" - create list of window commands.
   */
      static int
  windowcmd(dummy, interp, objc, objv)
!     ClientData	dummy UNUSED;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
***************
*** 1130,1139 ****
  }
  
  
- /* ARGSUSED */
      static int
  commandcmd(dummy, interp, objc, objv)
!     ClientData	dummy;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
--- 1125,1133 ----
  }
  
  
      static int
  commandcmd(dummy, interp, objc, objv)
!     ClientData	dummy UNUSED;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
***************
*** 1145,1154 ****
      return err;
  }
  
- /* ARGSUSED */
      static int
  optioncmd(dummy, interp, objc, objv)
!     ClientData	dummy;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
--- 1139,1147 ----
      return err;
  }
  
      static int
  optioncmd(dummy, interp, objc, objv)
!     ClientData	dummy UNUSED;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
***************
*** 1160,1169 ****
      return err;
  }
  
- /* ARGSUSED */
      static int
  exprcmd(dummy, interp, objc, objv)
!     ClientData	dummy;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
--- 1153,1161 ----
      return err;
  }
  
      static int
  exprcmd(dummy, interp, objc, objv)
!     ClientData	dummy UNUSED;
      Tcl_Interp	*interp;
      int		objc;
      Tcl_Obj	*CONST objv[];
***************
*** 1584,1594 ****
      I/O Channel
  ********************************************/
  
- /* ARGSUSED */
      static int
  channel_close(instance, interp)
      ClientData	instance;
!     Tcl_Interp	*interp;
  {
      int		err = 0;
  
--- 1576,1585 ----
      I/O Channel
  ********************************************/
  
      static int
  channel_close(instance, interp)
      ClientData	instance;
!     Tcl_Interp	*interp UNUSED;
  {
      int		err = 0;
  
***************
*** 1602,1613 ****
      return err;
  }
  
- /* ARGSUSED */
      static int
  channel_input(instance, buf, bufsiz, errptr)
!     ClientData	instance;
!     char	*buf;
!     int		bufsiz;
      int		*errptr;
  {
  
--- 1593,1603 ----
      return err;
  }
  
      static int
  channel_input(instance, buf, bufsiz, errptr)
!     ClientData	instance UNUSED;
!     char	*buf UNUSED;
!     int		bufsiz UNUSED;
      int		*errptr;
  {
  
***************
*** 1659,1679 ****
      return result;
  }
  
- /* ARGSUSED */
      static void
  channel_watch(instance, mask)
!     ClientData	instance;
!     int		mask;
  {
      Tcl_SetErrno(EINVAL);
  }
  
- /* ARGSUSED */
      static int
  channel_gethandle(instance, direction, handleptr)
!     ClientData	instance;
!     int		direction;
!     ClientData	*handleptr;
  {
      Tcl_SetErrno(EINVAL);
      return EINVAL;
--- 1649,1667 ----
      return result;
  }
  
      static void
  channel_watch(instance, mask)
!     ClientData	instance UNUSED;
!     int		mask UNUSED;
  {
      Tcl_SetErrno(EINVAL);
  }
  
      static int
  channel_gethandle(instance, direction, handleptr)
!     ClientData	instance UNUSED;
!     int		direction UNUSED;
!     ClientData	*handleptr UNUSED;
  {
      Tcl_SetErrno(EINVAL);
      return EINVAL;
***************
*** 1691,1697 ****
      NULL,   /* set option */
      NULL,   /* get option */
      channel_watch,
!     channel_gethandle
  };
  
  /**********************************
--- 1679,1692 ----
      NULL,   /* set option */
      NULL,   /* get option */
      channel_watch,
!     channel_gethandle,
!     NULL,
!     NULL,
!     NULL,
!     NULL,
!     NULL,
!     NULL,
!     NULL
  };
  
  /**********************************
*** ../vim-7.2.185/src/version.c	2009-05-22 18:20:23.000000000 +0200
--- src/version.c	2009-05-22 21:07:21.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     186,
  /**/

-- 
ARTHUR: Old woman!
DENNIS: Man!
ARTHUR: Man.  I'm sorry.  Old man, What knight live in that castle over there?
DENNIS: I'm thirty-seven.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.187 ---
To: vim-dev at vim.org
Subject: Patch 7.2.187
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.187 (after 7.2.186)
Problem:    Doesn't build with older versions of TCL. (Yongwei Wu)
Solution:   Add #ifdefs. (Dominique Pelle)
Files:	    src/if_tcl.c


*** ../vim-7.2.186/src/if_tcl.c	2009-05-22 21:07:45.000000000 +0200
--- src/if_tcl.c	2009-05-23 14:23:51.000000000 +0200
***************
*** 161,167 ****
  # endif
  
  /*
!  * Declare HANDLE for perl.dll and function pointers.
   */
  static HANDLE hTclLib = NULL;
  Tcl_Interp* (*dll_Tcl_CreateInterp)();
--- 161,167 ----
  # endif
  
  /*
!  * Declare HANDLE for tcl.dll and function pointers.
   */
  static HANDLE hTclLib = NULL;
  Tcl_Interp* (*dll_Tcl_CreateInterp)();
***************
*** 182,188 ****
   * Make all runtime-links of tcl.
   *
   * 1. Get module handle using LoadLibraryEx.
!  * 2. Get pointer to perl function by GetProcAddress.
   * 3. Repeat 2, until get all functions will be used.
   *
   * Parameter 'libname' provides name of DLL.
--- 182,188 ----
   * Make all runtime-links of tcl.
   *
   * 1. Get module handle using LoadLibraryEx.
!  * 2. Get pointer to tcl function by GetProcAddress.
   * 3. Repeat 2, until get all functions will be used.
   *
   * Parameter 'libname' provides name of DLL.
***************
*** 1670,1692 ****
  
  static Tcl_ChannelType channel_type =
  {
!     "vimmessage",
!     NULL,   /* blockmode */
!     channel_close,
!     channel_input,
!     channel_output,
!     NULL,   /* seek */
!     NULL,   /* set option */
!     NULL,   /* get option */
!     channel_watch,
!     channel_gethandle,
!     NULL,
!     NULL,
!     NULL,
!     NULL,
!     NULL,
!     NULL,
!     NULL
  };
  
  /**********************************
--- 1670,1700 ----
  
  static Tcl_ChannelType channel_type =
  {
!     "vimmessage",	/* typeName */
!     NULL,		/* version */
!     channel_close,	/* closeProc */
!     channel_input,	/* inputProc */
!     channel_output,	/* outputProc */
!     NULL,		/* seekProc */
!     NULL,		/* setOptionProc */
!     NULL,		/* getOptionProc */
!     channel_watch,	/* watchProc */
!     channel_gethandle,	/* getHandleProc */
!     NULL,		/* close2Proc */
!     NULL,		/* blockModeProc */
! #ifdef TCL_CHANNEL_VERSION_2
!     NULL,		/* flushProc */
!     NULL,		/* handlerProc */
! #endif
! #ifdef TCL_CHANNEL_VERSION_3
!     NULL,		/* wideSeekProc */
! #endif
! #ifdef TCL_CHANNEL_VERSION_4
!     NULL,		/* threadActionProc */
! #endif
! #ifdef TCL_CHANNEL_VERSION_5
!     NULL		/* truncateProc */
! #endif
  };
  
  /**********************************
*** ../vim-7.2.186/src/version.c	2009-05-22 21:07:45.000000000 +0200
--- src/version.c	2009-05-23 14:25:04.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     187,
  /**/

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

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


--- NEW FILE 7.2.188 ---
To: vim-dev at vim.org
Subject: Patch 7.2.188
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.188
Problem:    Crash with specific use of function calls. (Meikel Brandmeyer)
Solution:   Make sure the items referenced by a function call are not freed
	    twice.  (based on patch from Nico Weber)
Files:	    src/eval.c


*** ../vim-7.2.187/src/eval.c	2009-05-16 17:29:37.000000000 +0200
--- src/eval.c	2009-05-22 20:04:22.000000000 +0200
***************
*** 129,136 ****
--- 129,139 ----
  /*
   * When recursively copying lists and dicts we need to remember which ones we
   * have done to avoid endless recursiveness.  This unique ID is used for that.
+  * The last bit is used for previous_funccal, ignored when comparing.
   */
  static int current_copyID = 0;
+ #define COPYID_INC 2
+ #define COPYID_MASK (~0x1)
  
  /*
   * Array to hold the hashtab with variables local to each sourced script.
***************
*** 439,444 ****
--- 442,448 ----
  static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
  static char_u *list2string __ARGS((typval_T *tv, int copyID));
  static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID));
+ static int free_unref_items __ARGS((int copyID));
  static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
  static void set_ref_in_list __ARGS((list_T *l, int copyID));
  static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
***************
*** 6494,6507 ****
      int
  garbage_collect()
  {
!     dict_T	*dd;
!     list_T	*ll;
!     int		copyID = ++current_copyID;
      buf_T	*buf;
      win_T	*wp;
      int		i;
      funccall_T	*fc, **pfc;
!     int		did_free = FALSE;
  #ifdef FEAT_WINDOWS
      tabpage_T	*tp;
  #endif
--- 6498,6510 ----
      int
  garbage_collect()
  {
!     int		copyID;
      buf_T	*buf;
      win_T	*wp;
      int		i;
      funccall_T	*fc, **pfc;
!     int		did_free;
!     int		did_free_funccal = FALSE;
  #ifdef FEAT_WINDOWS
      tabpage_T	*tp;
  #endif
***************
*** 6511,6520 ****
--- 6514,6538 ----
      may_garbage_collect = FALSE;
      garbage_collect_at_exit = FALSE;
  
+     /* We advance by two because we add one for items referenced through
+      * previous_funccal. */
+     current_copyID += COPYID_INC;
+     copyID = current_copyID;
+ 
      /*
       * 1. Go through all accessible variables and mark all lists and dicts
       *    with copyID.
       */
+ 
+     /* Don't free variables in the previous_funccal list unless they are only
+      * referenced through previous_funccal.  This must be first, because if
+      * the item is referenced elsewhere it must not be freed. */
+     for (fc = previous_funccal; fc != NULL; fc = fc->caller)
+     {
+ 	set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
+ 	set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID + 1);
+     }
+ 
      /* script-local variables */
      for (i = 1; i <= ga_scripts.ga_len; ++i)
  	set_ref_in_ht(&SCRIPT_VARS(i), copyID);
***************
*** 6546,6556 ****
      /* v: vars */
      set_ref_in_ht(&vimvarht, copyID);
  
      /*
!      * 2. Go through the list of dicts and free items without the copyID.
       */
      for (dd = first_dict; dd != NULL; )
! 	if (dd->dv_copyID != copyID)
  	{
  	    /* Free the Dictionary and ordinary items it contains, but don't
  	     * recurse into Lists and Dictionaries, they will be in the list
--- 6564,6610 ----
      /* v: vars */
      set_ref_in_ht(&vimvarht, copyID);
  
+     /* Free lists and dictionaries that are not referenced. */
+     did_free = free_unref_items(copyID);
+ 
+     /* check if any funccal can be freed now */
+     for (pfc = &previous_funccal; *pfc != NULL; )
+     {
+ 	if (can_free_funccal(*pfc, copyID))
+ 	{
+ 	    fc = *pfc;
+ 	    *pfc = fc->caller;
+ 	    free_funccal(fc, TRUE);
+ 	    did_free = TRUE;
+ 	    did_free_funccal = TRUE;
+ 	}
+ 	else
+ 	    pfc = &(*pfc)->caller;
+     }
+     if (did_free_funccal)
+ 	/* When a funccal was freed some more items might be garbage
+ 	 * collected, so run again. */
+ 	(void)garbage_collect();
+ 
+     return did_free;
+ }
+ 
+ /*
+  * Free lists and dictionaries that are no longer referenced.
+  */
+     static int
+ free_unref_items(copyID)
+     int copyID;
+ {
+     dict_T	*dd;
+     list_T	*ll;
+     int		did_free = FALSE;
+ 
      /*
!      * Go through the list of dicts and free items without the copyID.
       */
      for (dd = first_dict; dd != NULL; )
! 	if ((dd->dv_copyID & COPYID_MASK) != (copyID & COPYID_MASK))
  	{
  	    /* Free the Dictionary and ordinary items it contains, but don't
  	     * recurse into Lists and Dictionaries, they will be in the list
***************
*** 6565,6576 ****
  	    dd = dd->dv_used_next;
  
      /*
!      * 3. Go through the list of lists and free items without the copyID.
!      *    But don't free a list that has a watcher (used in a for loop), these
!      *    are not referenced anywhere.
       */
      for (ll = first_list; ll != NULL; )
! 	if (ll->lv_copyID != copyID && ll->lv_watch == NULL)
  	{
  	    /* Free the List and ordinary items it contains, but don't recurse
  	     * into Lists and Dictionaries, they will be in the list of dicts
--- 6619,6631 ----
  	    dd = dd->dv_used_next;
  
      /*
!      * Go through the list of lists and free items without the copyID.
!      * But don't free a list that has a watcher (used in a for loop), these
!      * are not referenced anywhere.
       */
      for (ll = first_list; ll != NULL; )
! 	if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
! 						      && ll->lv_watch == NULL)
  	{
  	    /* Free the List and ordinary items it contains, but don't recurse
  	     * into Lists and Dictionaries, they will be in the list of dicts
***************
*** 6584,6603 ****
  	else
  	    ll = ll->lv_used_next;
  
-     /* check if any funccal can be freed now */
-     for (pfc = &previous_funccal; *pfc != NULL; )
-     {
- 	if (can_free_funccal(*pfc, copyID))
- 	{
- 	    fc = *pfc;
- 	    *pfc = fc->caller;
- 	    free_funccal(fc, TRUE);
- 	    did_free = TRUE;
- 	}
- 	else
- 	    pfc = &(*pfc)->caller;
-     }
- 
      return did_free;
  }
  
--- 6639,6644 ----
***************
*** 18842,18847 ****
--- 18883,18889 ----
  {
      hash_init(&dict->dv_hashtab);
      dict->dv_refcount = DO_NOT_FREE_CNT;
+     dict->dv_copyID = 0;
      dict_var->di_tv.vval.v_dict = dict;
      dict_var->di_tv.v_type = VAR_DICT;
      dict_var->di_tv.v_lock = VAR_FIXED;
***************
*** 21294,21301 ****
      current_funccal = fc->caller;
      --depth;
  
!     /* if the a:000 list and the a: dict are not referenced we can free the
!      * funccall_T and what's in it. */
      if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
  	    && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
  	    && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
--- 21336,21343 ----
      current_funccal = fc->caller;
      --depth;
  
!     /* If the a:000 list and the l: and a: dicts are not referenced we can
!      * free the funccall_T and what's in it. */
      if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
  	    && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
  	    && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
***************
*** 21334,21340 ****
  
  /*
   * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywhere.
   */
      static int
  can_free_funccal(fc, copyID)
--- 21376,21382 ----
  
  /*
   * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywhere that is in use.
   */
      static int
  can_free_funccal(fc, copyID)
*** ../vim-7.2.187/src/version.c	2009-05-23 14:27:43.000000000 +0200
--- src/version.c	2009-05-24 13:20:49.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     188,
  /**/

-- 
ARTHUR:    ... and I am your king ....
OLD WOMAN: Ooooh!  I didn't know we had a king.  I thought we were an
           autonomous collective ...
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.189 ---
To: vim-dev at vim.org
Subject: Patch 7.2.189
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.189
Problem:    Possible hang for deleting auto-indent. (Dominique Pelle)
Solution:   Make sure the position is not beyond the end of the line.
Files:	    src/edit.c


*** ../vim-7.2.188/src/edit.c	2009-05-16 16:36:25.000000000 +0200
--- src/edit.c	2009-05-26 10:53:05.000000000 +0200
***************
*** 6420,6432 ****
  
  	/* If we just did an auto-indent, remove the white space from the end
  	 * of the line, and put the cursor back.
! 	 * Do this when ESC was used or moving the cursor up/down. */
  	if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
! 			&& curwin->w_cursor.lnum != end_insert_pos->lnum)))
  	{
  	    pos_T	tpos = curwin->w_cursor;
  
  	    curwin->w_cursor = *end_insert_pos;
  	    for (;;)
  	    {
  		if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
--- 6420,6436 ----
  
  	/* If we just did an auto-indent, remove the white space from the end
  	 * of the line, and put the cursor back.
! 	 * Do this when ESC was used or moving the cursor up/down.
! 	 * Check for the old position still being valid, just in case the text
! 	 * got changed unexpectedly. */
  	if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
! 			&& curwin->w_cursor.lnum != end_insert_pos->lnum))
! 		&& end_insert_pos->lnum <= curbuf->b_ml.ml_line_count)
  	{
  	    pos_T	tpos = curwin->w_cursor;
  
  	    curwin->w_cursor = *end_insert_pos;
+ 	    check_cursor_col();  /* make sure it is not past the line */
  	    for (;;)
  	    {
  		if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
***************
*** 6434,6440 ****
  		cc = gchar_cursor();
  		if (!vim_iswhite(cc))
  		    break;
! 		(void)del_char(TRUE);
  	    }
  	    if (curwin->w_cursor.lnum != tpos.lnum)
  		curwin->w_cursor = tpos;
--- 6438,6445 ----
  		cc = gchar_cursor();
  		if (!vim_iswhite(cc))
  		    break;
! 		if (del_char(TRUE) == FAIL)
! 		    break;  /* should not happen */
  	    }
  	    if (curwin->w_cursor.lnum != tpos.lnum)
  		curwin->w_cursor = tpos;
*** ../vim-7.2.188/src/version.c	2009-05-24 13:40:17.000000000 +0200
--- src/version.c	2009-05-26 10:50:53.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     189,
  /**/

-- 
FIRST VILLAGER: We have found a witch.  May we burn her?
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.190 ---
To: vim-dev at vim.org
Subject: Patch 7.2.190
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.190
Problem:    The register executed by @@ isn't restored.
Solution:   Mark the executable register in the viminfo file.
Files:	    src/ops.c


*** ../vim-7.2.189/src/ops.c	2009-05-13 12:46:36.000000000 +0200
--- src/ops.c	2009-05-26 18:05:23.000000000 +0200
***************
*** 1143,1148 ****
--- 1143,1150 ----
      return OK;
  }
  
+ static int execreg_lastc = NUL;
+ 
  /*
   * execute a yank register: copy it into the stuff buffer
   *
***************
*** 1155,1161 ****
      int	    addcr;		/* always add '\n' to end of line */
      int	    silent;		/* set "silent" flag in typeahead buffer */
  {
-     static int	lastc = NUL;
      long	i;
      char_u	*p;
      int		retval = OK;
--- 1157,1162 ----
***************
*** 1163,1174 ****
  
      if (regname == '@')			/* repeat previous one */
      {
! 	if (lastc == NUL)
  	{
  	    EMSG(_("E748: No previously used register"));
  	    return FAIL;
  	}
! 	regname = lastc;
      }
  					/* check for valid regname */
      if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE))
--- 1164,1175 ----
  
      if (regname == '@')			/* repeat previous one */
      {
! 	if (execreg_lastc == NUL)
  	{
  	    EMSG(_("E748: No previously used register"));
  	    return FAIL;
  	}
! 	regname = execreg_lastc;
      }
  					/* check for valid regname */
      if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE))
***************
*** 1176,1182 ****
  	emsg_invreg(regname);
  	return FAIL;
      }
!     lastc = regname;
  
  #ifdef FEAT_CLIPBOARD
      regname = may_get_selection(regname);
--- 1177,1183 ----
  	emsg_invreg(regname);
  	return FAIL;
      }
!     execreg_lastc = regname;
  
  #ifdef FEAT_CLIPBOARD
      regname = may_get_selection(regname);
***************
*** 5337,5347 ****
--- 5338,5351 ----
  
      /* We only get here (hopefully) if line[0] == '"' */
      str = virp->vir_line + 1;
+ 
+     /* If the line starts with "" this is the y_previous register. */
      if (*str == '"')
      {
  	set_prev = TRUE;
  	str++;
      }
+ 
      if (!ASCII_ISALNUM(*str) && *str != '-')
      {
  	if (viminfo_error("E577: ", _("Illegal register name"), virp->vir_line))
***************
*** 5351,5356 ****
--- 5355,5368 ----
      get_yank_register(*str++, FALSE);
      if (!force && y_current->y_array != NULL)
  	do_it = FALSE;
+ 
+     if (*str == '@')
+     {
+ 	/* "x@: register x used for @@ */
+ 	if (force || execreg_lastc == NUL)
+ 	    execreg_lastc = str[-1];
+     }
+ 
      size = 0;
      limit = 100;	/* Optimized for registers containing <= 100 lines */
      if (do_it)
***************
*** 5360,5366 ****
  	vim_free(y_current->y_array);
  	array = y_current->y_array =
  		       (char_u **)alloc((unsigned)(limit * sizeof(char_u *)));
! 	str = skipwhite(str);
  	if (STRNCMP(str, "CHAR", 4) == 0)
  	    y_current->y_type = MCHAR;
  #ifdef FEAT_VISUAL
--- 5372,5378 ----
  	vim_free(y_current->y_array);
  	array = y_current->y_array =
  		       (char_u **)alloc((unsigned)(limit * sizeof(char_u *)));
! 	str = skipwhite(skiptowhite(str));
  	if (STRNCMP(str, "CHAR", 4) == 0)
  	    y_current->y_type = MCHAR;
  #ifdef FEAT_VISUAL
***************
*** 5443,5448 ****
--- 5455,5461 ----
      max_kbyte = get_viminfo_parameter('s');
      if (max_kbyte == 0)
  	return;
+ 
      for (i = 0; i < NUM_REGISTERS; i++)
      {
  	if (y_regs[i].y_array == NULL)
***************
*** 5497,5503 ****
  	if (y_previous == &y_regs[i])
  	    fprintf(fp, "\"");
  	c = get_register_name(i);
! 	fprintf(fp, "\"%c\t%s\t%d\n", c, type,
  #ifdef FEAT_VISUAL
  		    (int)y_regs[i].y_width
  #else
--- 5510,5519 ----
  	if (y_previous == &y_regs[i])
  	    fprintf(fp, "\"");
  	c = get_register_name(i);
! 	fprintf(fp, "\"%c", c);
! 	if (c == execreg_lastc)
! 	    fprintf(fp, "@");
! 	fprintf(fp, "\t%s\t%d\n", type,
  #ifdef FEAT_VISUAL
  		    (int)y_regs[i].y_width
  #else
*** ../vim-7.2.189/src/version.c	2009-05-26 11:01:43.000000000 +0200
--- src/version.c	2009-05-26 18:10:13.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     190,
  /**/

-- 
If you had to identify, in one word, the reason why the
human race has not achieved, and never will achieve, its
full potential, that word would be "meetings."

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


--- NEW FILE 7.2.191 ---
To: vim-dev at vim.org
Subject: Patch 7.2.191
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.191
Problem:    Mzscheme interface doesn't work on Ubuntu.
Solution:   Change autoconf rules.  Define missing macro.  Some changes to
	    avoid gcc warnings.  Remove per-buffer namespace. (Sergey Khorev)
Files:	    runtime/doc/if_mzsch.txt, src/Makefile, src/Make_ming.mak,
	    src/Make_mvc.mak, src/auto/configure, src/configure.in,
	    src/config.mk.in, src/eval.c, src/if_mzsch.c, src/if_mzsch.h,
	    src/main.c, src/proto/if_mzsch.pro


*** ../vim-7.2.190/runtime/doc/if_mzsch.txt	2008-08-09 19:36:48.000000000 +0200
--- runtime/doc/if_mzsch.txt	2009-05-26 18:49:53.000000000 +0200
***************
*** 1,4 ****
! *if_mzsch.txt*  For Vim version 7.2.  Last change: 2008 Jun 28
  
  
  		  VIM REFERENCE MANUAL    by Sergey Khorev
--- 1,4 ----
! *if_mzsch.txt*  For Vim version 7.2.  Last change: 2009 May 26
  
  
  		  VIM REFERENCE MANUAL    by Sergey Khorev
***************
*** 42,51 ****
  
  							*:mzfile* *:mzf*
  :[range]mzf[ile] {file}	Execute the MzScheme script in {file}.  {not in Vi}
- 			All statements are executed in the namespace of the
- 			buffer that was current during :mzfile start.
- 			If you want to access other namespaces, use
- 			'parameterize'.
  
  All of these commands do essentially the same thing - they execute a piece of
  MzScheme code, with the "current range" set to the given line
--- 42,47 ----
***************
*** 54,61 ****
  In the case of :mzscheme, the code to execute is in the command-line.
  In the case of :mzfile, the code to execute is the contents of the given file.
  
- Each buffer has its own MzScheme namespace. Global namespace is bound to
- the "global-namespace" value from the 'vimext' module.
  MzScheme interface defines exception exn:vim, derived from exn.
  It is raised for various Vim errors.
  
--- 50,55 ----
***************
*** 79,118 ****
  e.g.: >
  	:mzscheme (require (prefix vim- vimext))
  <
! All the examples below assume this naming scheme.  Note that you need to do
! this again for every buffer.
  
- The auto-instantiation can be achieved with autocommands, e.g. you can put
- something like this in your .vimrc (EOFs should not have indentation): >
-     function s:MzRequire()
- 	if has("mzscheme")
- 	    :mz << EOF
- 	    (require (prefix vim- vimext))
- 	    (let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
- 	      (when (and buf (not (eq? buf (vim-curr-buff))))
- 		(parameterize ((current-namespace (vim-get-buff-namespace buf)))
- 		  (namespace-attach-module vim-global-namespace 'vimext)
- 		  (namespace-require '(prefix vim vimext)))))
-     EOF
- 	endif
-     endfunction
- 
-     function s:MzStartup()
- 	if has("mzscheme")
- 	    au BufNew,BufNewFile,BufAdd,BufReadPre * :call s:MzRequire()
- 	    :mz << EOF
- 	    (current-library-collection-paths
- 		(cons
- 		    (build-path (find-system-path 'addon-dir) (version) "collects")
- 		    (current-library-collection-paths)))
-     EOF
- 	endif
-     endfunction
- 
-     call s:MzStartup()
- <
- 
- The global namespace just instantiated this module with the prefix "vimext:".
  							*mzscheme-sandbox*
  When executed in the |sandbox|, access to some filesystem and Vim interface
  procedures is restricted.
--- 73,80 ----
  e.g.: >
  	:mzscheme (require (prefix vim- vimext))
  <
! All the examples below assume this naming scheme. 
  
  							*mzscheme-sandbox*
  When executed in the |sandbox|, access to some filesystem and Vim interface
  procedures is restricted.
***************
*** 121,135 ****
  2. Examples						*mzscheme-examples*
  >
  	:mzscheme (display "Hello")
  	:mzscheme (vim-set-buff-line 10 "This is line #10")
  <
  Inline script usage: >
  	function! <SID>SetFirstLine()
  	    :mz << EOF
  	    (display "!!!")
  	    (vim-set-buff-line 1 "This is line #1")
  	    (vim-beep)
! 	    EOF
  	endfunction
  
  	nmap <F9> :call <SID>SetFirstLine() <CR>
--- 83,102 ----
  2. Examples						*mzscheme-examples*
  >
  	:mzscheme (display "Hello")
+ 	:mz (display (string-append "Using MzScheme version " (version)))
+ 	:mzscheme (require (prefix vim- vimext)) ; for MzScheme < 4.x
+ 	:mzscheme (require (prefix-in vim- 'vimext)) ; MzScheme 4.x
  	:mzscheme (vim-set-buff-line 10 "This is line #10")
  <
  Inline script usage: >
  	function! <SID>SetFirstLine()
  	    :mz << EOF
  	    (display "!!!")
+ 	    (require (prefix vim- vimext))
+ 	    ; for newer versions (require (prefix-in vim- 'vimext))
  	    (vim-set-buff-line 1 "This is line #1")
  	    (vim-beep)
! 	EOF
  	endfunction
  
  	nmap <F9> :call <SID>SetFirstLine() <CR>
***************
*** 137,153 ****
  File execution: >
  	:mzfile supascript.scm
  <
! Accessing the current buffer namespace from an MzScheme program running in
! another buffer within |:mzfile|-executed script : >
! 	; Move to the window below
! 	(vim-command "wincmd j")
! 	; execute in the context of buffer, to which window belongs
! 	; assume that buffer has 'textstring' defined
! 	(parameterize ((current-namespace
! 			(vim-get-buff-namespace (vim-curr-buff))))
! 	 (eval '(vim-set-buff-line 1 textstring)))
! <
  
  ==============================================================================
  3. Threads						*mzscheme-threads*
  
--- 104,136 ----
  File execution: >
  	:mzfile supascript.scm
  <
! Vim exception handling: >
! 	:mz << EOF
! 	(require (prefix vim- vimext))
! 	; for newer versions (require (prefix-in vim- 'vimext))
! 	(with-handlers
! 	  ([exn:vim? (lambda (e) (display (exn-message e)))])
! 	  (vim-eval "nonsense-string"))
! 	EOF
! <
! Auto-instantiation of vimext module (can be placed in your |vimrc|): >
!     function! MzRequire()
! 	:redir => l:mzversion
! 	:mz (version)
! 	:redir END
! 	if strpart(l:mzversion, 1, 1) < "4"
! 	    " MzScheme versions < 4.x:
! 	    :mz (require (prefix vim- vimext))
! 	else
! 	    " newer versions:
! 	    :mz (require (prefix-in vim- 'vimext))
! 	endif
!     endfunction
  
+     if has("mzscheme")
+ 	silent call MzRequire()
+     endif
+ <
  ==============================================================================
  3. Threads						*mzscheme-threads*
  
***************
[...3306 lines suppressed...]
       */
--- 3035,3040 ----
***************
*** 2653,2675 ****
  }
  
      static void
! make_modules(Scheme_Env *env)
  {
!     int		i;
!     Scheme_Env	*mod;
! 
!     mod = scheme_primitive_module(scheme_intern_symbol("vimext"), env);
      /* all prims made closed so they can access their own names */
!     for (i = 0; i < sizeof(prims)/sizeof(prims[0]); i++)
      {
  	Vim_Prim *prim = prims + i;
! 	scheme_add_global(prim->name,
! 		scheme_make_closed_prim_w_arity(prim->prim, prim, prim->name,
! 		    prim->mina, prim->maxa),
! 		mod);
      }
-     scheme_add_global("global-namespace", (Scheme_Object *)environment, mod);
      scheme_finish_primitive_module(mod);
  }
  
  #ifdef HAVE_SANDBOX
--- 3092,3126 ----
  }
  
      static void
! make_modules()
  {
!     int		    i;
!     Scheme_Env	    *mod = NULL;
!     Scheme_Object   *vimext_symbol = NULL;
!     Scheme_Object   *closed_prim = NULL;
! 
!     MZ_GC_DECL_REG(3);
!     MZ_GC_VAR_IN_REG(0, mod);
!     MZ_GC_VAR_IN_REG(1, vimext_symbol);
!     MZ_GC_VAR_IN_REG(2, closed_prim);
!     MZ_GC_REG();
! 
!     vimext_symbol = scheme_intern_symbol("vimext");
!     MZ_GC_CHECK();
!     mod = scheme_primitive_module(vimext_symbol, environment);
!     MZ_GC_CHECK();
      /* all prims made closed so they can access their own names */
!     for (i = 0; i < (int)(sizeof(prims)/sizeof(prims[0])); i++)
      {
  	Vim_Prim *prim = prims + i;
! 	closed_prim = scheme_make_closed_prim_w_arity(prim->prim, prim, prim->name,
! 			    prim->mina, prim->maxa);
! 	scheme_add_global(prim->name, closed_prim, mod);
! 	MZ_GC_CHECK();
      }
      scheme_finish_primitive_module(mod);
+     MZ_GC_CHECK();
+     MZ_GC_UNREG();
  }
  
  #ifdef HAVE_SANDBOX
***************
*** 2697,2717 ****
--- 3148,3172 ----
  	{
  	    MZ_REGISTER_STATIC(M_write);
  	    M_write = scheme_intern_symbol("write");
+ 	    MZ_GC_CHECK();
  	}
  	if (M_read == NULL)
  	{
  	    MZ_REGISTER_STATIC(M_read);
  	    M_read = scheme_intern_symbol("read");
+ 	    MZ_GC_CHECK();
  	}
  	if (M_execute == NULL)
  	{
  	    MZ_REGISTER_STATIC(M_execute);
  	    M_execute = scheme_intern_symbol("execute");
+ 	    MZ_GC_CHECK();
  	}
  	if (M_delete == NULL)
  	{
  	    MZ_REGISTER_STATIC(M_delete);
  	    M_delete = scheme_intern_symbol("delete");
+ 	    MZ_GC_CHECK();
  	}
  
  	while (!SCHEME_NULLP(requested_access))
*** ../vim-7.2.190/src/if_mzsch.h	2006-03-24 23:43:11.000000000 +0100
--- src/if_mzsch.h	2009-05-26 19:08:21.000000000 +0200
***************
*** 11,16 ****
--- 11,17 ----
  
  /* #ifdef needed for "make depend" */
  #ifdef FEAT_MZSCHEME
+ # include <schvers.h>
  # include <scheme.h>
  #endif
  
***************
*** 46,49 ****
--- 47,77 ----
  # define scheme_byte_string_to_char_string(obj) (obj)
  #endif
  
+ /* Precise GC macros */
+ #ifndef MZ_GC_DECL_REG
+ # define MZ_GC_DECL_REG(size)            /* empty */
+ #endif
+ #ifndef MZ_GC_VAR_IN_REG
+ # define MZ_GC_VAR_IN_REG(x, v)          /* empty */
+ #endif
+ #ifndef MZ_GC_ARRAY_VAR_IN_REG
+ # define MZ_GC_ARRAY_VAR_IN_REG(x, v, l) /* empty */
+ #endif
+ #ifndef MZ_GC_REG
+ # define MZ_GC_REG()                     /* empty */
+ #endif
+ #ifndef MZ_GC_UNREG
+ # define MZ_GC_UNREG()                   /* empty */
+ #endif
+ 
+ #ifdef MZSCHEME_FORCE_GC
+ /*
+  * force garbage collection to check all references are registered
+  * seg faults will indicate not registered refs
+  */
+ # define MZ_GC_CHECK() scheme_collect_garbage();
+ #else
+ # define MZ_GC_CHECK()			/* empty */
+ #endif
+ 
  #endif /* _IF_MZSCH_H_ */
*** ../vim-7.2.190/src/main.c	2009-05-17 13:30:58.000000000 +0200
--- src/main.c	2009-05-26 19:09:01.000000000 +0200
***************
*** 935,942 ****
--- 935,948 ----
  
      /*
       * Call the main command loop.  This never returns.
+      * For embedded MzScheme the main_loop will be called by Scheme
+      * for proper stack tracking
       */
+ #ifndef FEAT_MZSCHEME
      main_loop(FALSE, FALSE);
+ #else
+     mzscheme_main();
+ #endif
  
      return 0;
  }
*** ../vim-7.2.190/src/proto/if_mzsch.pro	2004-07-12 17:51:52.000000000 +0200
--- src/proto/if_mzsch.pro	2009-05-26 19:09:55.000000000 +0200
***************
*** 15,24 ****
  void *mzvim_eval_string __ARGS((char_u *str));
  struct Scheme_Object *mzvim_apply __ARGS((struct Scheme_Object *, int argc,
      struct Scheme_Object **));
! int mzthreads_allowed (void);
! #ifdef FEAT_GUI_KDE
! void timer_proc (void);
! void mzscheme_kde_start_timer (void);
! void mzscheme_kde_stop_timer (void);
! #endif
  /* vim: set ft=c : */
--- 15,20 ----
  void *mzvim_eval_string __ARGS((char_u *str));
  struct Scheme_Object *mzvim_apply __ARGS((struct Scheme_Object *, int argc,
      struct Scheme_Object **));
! int mzthreads_allowed __ARGS((void));
! void mzscheme_main __ARGS((void));
  /* vim: set ft=c : */
*** ../vim-7.2.190/src/version.c	2009-05-26 18:12:13.000000000 +0200
--- src/version.c	2009-05-26 22:52:53.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     191,
  /**/

-- 
Scientists decoded the first message from an alien civilization:
        SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR
SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT
YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER
STAR SYSTEMS.  WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE
ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS
MAXIMUM!  IT REALLY WORKS!

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


--- NEW FILE 7.2.192 ---
To: vim-dev at vim.org
Subject: Patch 7.2.192
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.192 (after 7.2.188)
Problem:    Still a crash in the garbage collector for a very rare situation.
Solution:   Make sure current_copyID is always incremented correctly. (Kent
	    Sibilev)
Files:	    src/eval.c


*** ../vim-7.2.191/src/eval.c	2009-05-26 22:58:43.000000000 +0200
--- src/eval.c	2009-05-29 21:13:47.000000000 +0200
***************
*** 6526,6532 ****
  
      /* Don't free variables in the previous_funccal list unless they are only
       * referenced through previous_funccal.  This must be first, because if
!      * the item is referenced elsewhere it must not be freed. */
      for (fc = previous_funccal; fc != NULL; fc = fc->caller)
      {
  	set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
--- 6526,6532 ----
  
      /* Don't free variables in the previous_funccal list unless they are only
       * referenced through previous_funccal.  This must be first, because if
!      * the item is referenced elsewhere the funccal must not be freed. */
      for (fc = previous_funccal; fc != NULL; fc = fc->caller)
      {
  	set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
***************
*** 6564,6573 ****
      /* v: vars */
      set_ref_in_ht(&vimvarht, copyID);
  
!     /* Free lists and dictionaries that are not referenced. */
      did_free = free_unref_items(copyID);
  
!     /* check if any funccal can be freed now */
      for (pfc = &previous_funccal; *pfc != NULL; )
      {
  	if (can_free_funccal(*pfc, copyID))
--- 6564,6577 ----
      /* v: vars */
      set_ref_in_ht(&vimvarht, copyID);
  
!     /*
!      * 2. Free lists and dictionaries that are not referenced.
!      */
      did_free = free_unref_items(copyID);
  
!     /*
!      * 3. Check if any funccal can be freed now.
!      */
      for (pfc = &previous_funccal; *pfc != NULL; )
      {
  	if (can_free_funccal(*pfc, copyID))
***************
*** 9286,9292 ****
      if (noref < 0 || noref > 1)
  	EMSG(_(e_invarg));
      else
! 	item_copy(&argvars[0], rettv, TRUE, noref == 0 ? ++current_copyID : 0);
  }
  
  /*
--- 9290,9299 ----
      if (noref < 0 || noref > 1)
  	EMSG(_(e_invarg));
      else
!     {
! 	current_copyID += COPYID_INC;
! 	item_copy(&argvars[0], rettv, TRUE, noref == 0 ? current_copyID : 0);
!     }
  }
  
  /*
***************
*** 18966,18972 ****
      char_u	*s;
      char_u	numbuf[NUMBUFLEN];
  
!     s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID);
      list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
  					 s == NULL ? (char_u *)"" : s, first);
      vim_free(tofree);
--- 18973,18980 ----
      char_u	*s;
      char_u	numbuf[NUMBUFLEN];
  
!     current_copyID += COPYID_INC;
!     s = echo_string(&v->di_tv, &tofree, numbuf, current_copyID);
      list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
  					 s == NULL ? (char_u *)"" : s, first);
      vim_free(tofree);
***************
*** 19401,19407 ****
  	    }
  	    else if (eap->cmdidx == CMD_echo)
  		msg_puts_attr((char_u *)" ", echo_attr);
! 	    p = echo_string(&rettv, &tofree, numbuf, ++current_copyID);
  	    if (p != NULL)
  		for ( ; *p != NUL && !got_int; ++p)
  		{
--- 19409,19416 ----
  	    }
  	    else if (eap->cmdidx == CMD_echo)
  		msg_puts_attr((char_u *)" ", echo_attr);
! 	    current_copyID += COPYID_INC;
! 	    p = echo_string(&rettv, &tofree, numbuf, current_copyID);
  	    if (p != NULL)
  		for ( ; *p != NUL && !got_int; ++p)
  		{
*** ../vim-7.2.191/src/version.c	2009-05-26 22:58:43.000000000 +0200
--- src/version.c	2009-06-03 13:21:20.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     192,
  /**/

-- 
Imagine a world without hypothetical situations.

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


--- NEW FILE 7.2.193 ---
To: vim-dev at vim.org
Subject: Patch 7.2.193
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.193
Problem:    Warning for uninitialized values.
Solution:   Initialize all the struct items.
Files:	    src/eval.c


*** ../vim-7.2.192/src/eval.c	2009-06-03 13:22:22.000000000 +0200
--- src/eval.c	2009-05-29 21:13:47.000000000 +0200
***************
*** 286,292 ****
  #define VV_RO		2	/* read-only */
  #define VV_RO_SBX	4	/* read-only in the sandbox */
  
! #define VV_NAME(s, t)	s, {{t}}, {0}
  
  static struct vimvar
  {
--- 286,292 ----
  #define VV_RO		2	/* read-only */
  #define VV_RO_SBX	4	/* read-only in the sandbox */
  
! #define VV_NAME(s, t)	s, {{t, 0, {0}}, 0, {0}}, {0}
  
  static struct vimvar
  {
*** ../vim-7.2.192/src/version.c	2009-06-03 13:22:23.000000000 +0200
--- src/version.c	2009-06-03 14:25:18.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     193,
  /**/

-- 
No engineer can take a shower without wondering if some sort of Teflon coating
would make showering unnecessary.
				(Scott Adams - The Dilbert principle)

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


--- NEW FILE 7.2.194 ---
To: vim-dev at vim.org
Subject: Patch 7.2.194 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.194 (extra)
Problem:    MSVC: rem commands are echoed.
Solution:   Add commands to switch off echo. (Wang Xu)
Files:	    src/msvc2008.bat


*** ../vim-7.2.193/src/msvc2008.bat	2008-06-24 22:55:23.000000000 +0200
--- src/msvc2008.bat	2009-04-29 18:05:11.000000000 +0200
***************
*** 1,5 ****
--- 1,7 ----
+ @echo off
  rem To be used on MS-Windows for Visual C++ 2008 Express Edition
  rem   aka Microsoft Visual Studio 9.0.
  rem See INSTALLpc.txt for information.
+ @echo on
  
  call "%VS90COMNTOOLS%%vsvars32.bat"
*** ../vim-7.2.193/src/version.c	2009-06-03 14:25:47.000000000 +0200
--- src/version.c	2009-06-03 15:04:30.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     194,
  /**/

-- 
I used to be indecisive, now I'm not sure.

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


--- NEW FILE 7.2.195 ---
To: vim-dev at vim.org
Subject: Patch 7.2.195
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.195
Problem:    Leaking memory for the command Vim was started with.
Solution:   Remember the pointer and free it.
Files:	    src/gui_gtk_x11.c


*** ../vim-7.2.194/src/gui_gtk_x11.c	2009-05-17 16:23:20.000000000 +0200
--- src/gui_gtk_x11.c	2009-06-03 12:44:31.000000000 +0200
***************
*** 412,417 ****
--- 412,418 ----
  #endif
  #if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
  static const char *restart_command = NULL;
+ static       char *abs_restart_command = NULL;
  #endif
  static int found_iconic_arg = FALSE;
  
***************
*** 449,456 ****
  	char_u buf[MAXPATHL];
  
  	if (mch_FullName((char_u *)argv[0], buf, (int)sizeof(buf), TRUE) == OK)
! 	    /* Tiny leak; doesn't matter, and usually we don't even get here */
! 	    restart_command = (char *)vim_strsave(buf);
      }
  #endif
  
--- 450,459 ----
  	char_u buf[MAXPATHL];
  
  	if (mch_FullName((char_u *)argv[0], buf, (int)sizeof(buf), TRUE) == OK)
! 	{
! 	    abs_restart_command = (char *)vim_strsave(buf);
! 	    restart_command = abs_restart_command;
! 	}
      }
  #endif
  
***************
*** 611,616 ****
--- 614,622 ----
  gui_mch_free_all()
  {
      vim_free(gui_argv);
+ #if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+     vim_free(abs_restart_command);
+ #endif
  }
  #endif
  
*** ../vim-7.2.194/src/version.c	2009-06-03 15:05:05.000000000 +0200
--- src/version.c	2009-06-03 16:19:00.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     195,
  /**/

-- 
I think that you'll agree that engineers are very effective in their social
interactions.  It's the "normal" people who are nuts.
				(Scott Adams - The Dilbert principle)

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


--- NEW FILE 7.2.196 ---
To: vim-dev at vim.org
Subject: Patch 7.2.196
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.196 (after 7.2.167)
Problem:    Turns out splint doesn't work well enough to be usable.
Solution:   Remove splint support.
Files:	    Filelist, src/cleanlint.vim


*** ../vim-7.2.195/Filelist	2009-05-13 12:46:36.000000000 +0200
--- Filelist	2009-05-21 14:42:46.000000000 +0200
***************
*** 139,145 ****
  		src/INSTALL \
  		src/INSTALLx.txt \
  		src/Makefile \
- 		src/cleanlint.vim \
  		src/auto/configure \
  		src/config.aap.in \
  		src/config.h.in \
--- 139,144 ----
*** ../vim-7.2.195/src/cleanlint.vim	2009-05-13 18:54:14.000000000 +0200
--- src/cleanlint.vim	1970-01-01 01:00:00.000000000 +0100
***************
*** 1,32 ****
- " Vim tool: Filter output of splint
- "
- " Maintainer:	Bram Moolenaar <Bram at vim.org>
- " Last Change:	2009 May 13
- 
- " Usage: redirect output of "make lint" to a file, edit that file with Vim and
- " :call CleanLint()
- " This deletes irrelevant messages.  What remains might be valid warnings.
- 
- fun! CleanLint()
-   g/Assignment of dev_t to __dev_t:/lockmarks d
-   g/Assignment of __dev_t to dev_t:/lockmarks d
-   g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
-   g/Operands of == have incompatible types (char_u, int): /lockmarks d
-   g/Assignment of char to char_u: /lockmarks d
-   g/Assignment of unsigned int to int: /lockmarks d
-   g/Assignment of int to unsigned int: /lockmarks d
-   g/Assignment of unsigned int to long int: /lockmarks d
-   g/Assignment of int to char_u: /lockmarks d
-   g/Function .* expects arg . to be wint_t gets int: /lockmarks d
-   g/Function .* expects arg . to be size_t gets int: /lockmarks d
-   g/Initial value of .* is type char, expects char_u: /lockmarks d
-   g/^ex_cmds.h:.* Function types are inconsistent. Parameter 1 is implicitly temp, but unqualified in assigned function:/lockmarks d
-   g/^ex_docmd.c:.* nospec_str/lockmarks d
-   g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
-   g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
-   g/^  Types are incompatible/lockmarks d
-   g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
-   g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
-   g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
-   g+ A variable is declared but never used. Use /. at unused@./ in front of declaration to suppress message.+lockmarks d
- endfun
--- 0 ----
*** ../vim-7.2.195/src/version.c	2009-06-03 16:20:09.000000000 +0200
--- src/version.c	2009-06-03 22:04:31.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     196,
  /**/

-- 
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.2.197 ---
To: vim-dev at vim.org
Subject: Patch 7.2.197
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.197
Problem:    Warning for uninitialized values.
Solution:   Initialize all the struct items of typebuf.
Files:	    src/globals.h


*** ../vim-7.2.196/src/globals.h	2009-05-13 12:46:36.000000000 +0200
--- src/globals.h	2009-06-10 15:52:18.000000000 +0200
***************
*** 960,966 ****
  		    ;
  EXTERN typebuf_T typebuf		/* typeahead buffer */
  #ifdef DO_INIT
! 		    = {NULL, NULL}
  #endif
  		    ;
  #ifdef FEAT_EX_EXTRA
--- 967,973 ----
  		    ;
  EXTERN typebuf_T typebuf		/* typeahead buffer */
  #ifdef DO_INIT
! 		    = {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}
  #endif
  		    ;
  #ifdef FEAT_EX_EXTRA
*** ../vim-7.2.196/src/version.c	2009-06-03 22:07:38.000000000 +0200
--- src/version.c	2009-06-10 18:14:58.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     197,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
18. Your wife drapes a blond wig over your monitor to remind you of what she
    looks like.

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


--- NEW FILE 7.2.198 ---
To: vim-dev at vim.org
Subject: Patch 7.2.198
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.198
Problem:    Size of buffer used for tgetent() may be too small.
Solution:   Use the largest known size everywhere.
Files:	    src/vim.h


*** ../vim-7.2.197/src/vim.h	2009-05-14 22:19:19.000000000 +0200
--- src/vim.h	2009-06-07 20:37:48.000000000 +0200
***************
*** 1345,1355 ****
  # define MSG_BUF_CLEN  MSG_BUF_LEN	    /* cell length */
  #endif
  
! #if defined(AMIGA) || defined(__linux__) || defined(__QNX__) || defined(__CYGWIN32__) || defined(_AIX)
! # define TBUFSZ 2048		/* buffer size for termcap entry */
! #else
! # define TBUFSZ 1024		/* buffer size for termcap entry */
! #endif
  
  /*
   * Maximum length of key sequence to be mapped.
--- 1345,1355 ----
  # define MSG_BUF_CLEN  MSG_BUF_LEN	    /* cell length */
  #endif
  
! /* Size of the buffer used for tgetent().  Unfortunately this is largely
!  * undocumented, some systems use 1024.  Using a buffer that is too small
!  * causes a buffer overrun and a crash.  Use the maximum known value to stay
!  * on the safe side. */
! #define TBUFSZ 2048		/* buffer size for termcap entry */
  
  /*
   * Maximum length of key sequence to be mapped.
*** ../vim-7.2.197/src/version.c	2009-06-10 18:15:49.000000000 +0200
--- src/version.c	2009-06-16 11:06:45.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     198,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
7. Finish all your sentences with "in accordance with the prophecy".

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


--- NEW FILE 7.2.199 ---
To: vim-dev at vim.org
Subject: Patch 7.2.199
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.199
Problem:    Strange character in comment.
Solution:   Change to "message". (Yongwei Wu)
Files:      src/term.c


*** ../vim-7.2.198/src/term.c	2009-05-17 13:30:58.000000000 +0200
--- src/term.c	2009-06-16 11:16:17.000000000 +0200
***************
*** 5555,5561 ****
   * respects the current B/k/< settings of 'cpoption'.
   *
   * This function is called when expanding mappings/abbreviations on the
!  * command-line, and for building the "Ambiguous mapping..." error messæge.
   *
   * It uses a growarray to build the translation string since the
   * latter can be wider than the original description. The caller has to
--- 5555,5561 ----
   * respects the current B/k/< settings of 'cpoption'.
   *
   * This function is called when expanding mappings/abbreviations on the
!  * command-line, and for building the "Ambiguous mapping..." error message.
   *
   * It uses a growarray to build the translation string since the
   * latter can be wider than the original description. The caller has to
*** ../vim-7.2.198/src/version.c	2009-06-16 11:08:13.000000000 +0200
--- src/version.c	2009-06-16 14:31:03.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     199,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
10. Ask people what sex they are. Laugh hysterically after they answer.

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


--- NEW FILE 7.2.200 ---
To: vim-dev at vim.org
Subject: Patch 7.2.200
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.200
Problem:    Reading past end of string when navigating the menu bar or
	    resizing the window.
Solution:   Add and use mb_ptr2len_len(). (partly by Dominique Pelle)
	    Also add mb_ptr2cells_len() to prevent more trouble.
Files:	    src/gui_gtk_x11.c, src/os_unix.c, src/globals.h, src/mbyte.c,
	    src/proto/mbyte.pro


*** ../vim-7.2.199/src/gui_gtk_x11.c	2009-06-03 16:20:09.000000000 +0200
--- src/gui_gtk_x11.c	2009-06-16 14:44:19.000000000 +0200
***************
*** 6077,6088 ****
  # ifdef FEAT_MBYTE
  	    if (enc_utf8)
  	    {
! 		c = utf_ptr2char(p);
  		if (c >= 0x10000)	/* show chars > 0xffff as ? */
  		    c = 0xbf;
  		buf[textlen].byte1 = c >> 8;
  		buf[textlen].byte2 = c;
! 		p += utf_ptr2len(p);
  		width += utf_char2cells(c);
  	    }
  	    else
--- 6135,6149 ----
  # ifdef FEAT_MBYTE
  	    if (enc_utf8)
  	    {
! 		int pcc[MAX_MCO];
! 
! 		/* TODO: use the composing characters */
! 		c = utfc_ptr2char_len(p, &pcc, len - (p - s));
  		if (c >= 0x10000)	/* show chars > 0xffff as ? */
  		    c = 0xbf;
  		buf[textlen].byte1 = c >> 8;
  		buf[textlen].byte2 = c;
! 		p += utfc_ptr2len_len(p, len - (p - s));
  		width += utf_char2cells(c);
  	    }
  	    else
***************
*** 6106,6113 ****
  	if (has_mbyte)
  	{
  	    width = 0;
! 	    for (p = s; p < s + len; p += (*mb_ptr2len)(p))
! 		width += (*mb_ptr2cells)(p);
  	}
  	else
  # endif
--- 6167,6174 ----
  	if (has_mbyte)
  	{
  	    width = 0;
! 	    for (p = s; p < s + len; p += (*mb_ptr2len_len)(p, len - (p - s)))
! 		width += (*mb_ptr2cells_len)(p, len - (p - s));
  	}
  	else
  # endif
*** ../vim-7.2.199/src/os_unix.c	2009-05-17 13:30:58.000000000 +0200
--- src/os_unix.c	2009-06-03 12:35:59.000000000 +0200
***************
*** 4305,4311 ****
  				ta_buf[i] = '\n';
  # ifdef FEAT_MBYTE
  			    if (has_mbyte)
! 				i += (*mb_ptr2len)(ta_buf + i) - 1;
  # endif
  			}
  
--- 4305,4312 ----
  				ta_buf[i] = '\n';
  # ifdef FEAT_MBYTE
  			    if (has_mbyte)
! 				i += (*mb_ptr2len_len)(ta_buf + i,
! 							ta_len + len - i) - 1;
  # endif
  			}
  
*** ../vim-7.2.199/src/globals.h	2009-06-10 18:15:49.000000000 +0200
--- src/globals.h	2009-06-12 21:10:30.000000000 +0200
***************
*** 810,820 ****
--- 815,828 ----
   */
  /* length of char in bytes, including following composing chars */
  EXTERN int (*mb_ptr2len) __ARGS((char_u *p)) INIT(= latin_ptr2len);
+ /* idem, with limit on string length */
+ EXTERN int (*mb_ptr2len_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2len_len);
  /* byte length of char */
  EXTERN int (*mb_char2len) __ARGS((int c)) INIT(= latin_char2len);
  /* convert char to bytes, return the length */
  EXTERN int (*mb_char2bytes) __ARGS((int c, char_u *buf)) INIT(= latin_char2bytes);
  EXTERN int (*mb_ptr2cells) __ARGS((char_u *p)) INIT(= latin_ptr2cells);
+ EXTERN int (*mb_ptr2cells_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2cells_len);
  EXTERN int (*mb_char2cells) __ARGS((int c)) INIT(= latin_char2cells);
  EXTERN int (*mb_off2cells) __ARGS((unsigned off, unsigned max_off)) INIT(= latin_off2cells);
  EXTERN int (*mb_ptr2char) __ARGS((char_u *p)) INIT(= latin_ptr2char);
*** ../vim-7.2.199/src/mbyte.c	2009-05-17 13:30:58.000000000 +0200
--- src/mbyte.c	2009-06-16 15:01:30.000000000 +0200
***************
*** 127,133 ****
--- 127,136 ----
  static int dbcs_char2len __ARGS((int c));
  static int dbcs_char2bytes __ARGS((int c, char_u *buf));
  static int dbcs_ptr2len __ARGS((char_u *p));
+ static int dbcs_ptr2len_len __ARGS((char_u *p, int size));
+ static int utf_ptr2cells_len __ARGS((char_u *p, int size));
  static int dbcs_char2cells __ARGS((int c));
+ static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
  static int dbcs_ptr2char __ARGS((char_u *p));
  
  /* Lookup table to quickly get the length in bytes of a UTF-8 character from
***************
*** 606,614 ****
--- 609,619 ----
      if (enc_utf8)
      {
  	mb_ptr2len = utfc_ptr2len;
+ 	mb_ptr2len_len = utfc_ptr2len_len;
  	mb_char2len = utf_char2len;
  	mb_char2bytes = utf_char2bytes;
  	mb_ptr2cells = utf_ptr2cells;
+ 	mb_ptr2cells_len = utf_ptr2cells_len;
  	mb_char2cells = utf_char2cells;
  	mb_off2cells = utf_off2cells;
  	mb_ptr2char = utf_ptr2char;
***************
*** 617,625 ****
--- 622,632 ----
      else if (enc_dbcs != 0)
      {
  	mb_ptr2len = dbcs_ptr2len;
+ 	mb_ptr2len_len = dbcs_ptr2len_len;
  	mb_char2len = dbcs_char2len;
  	mb_char2bytes = dbcs_char2bytes;
  	mb_ptr2cells = dbcs_ptr2cells;
+ 	mb_ptr2cells_len = dbcs_ptr2cells_len;
  	mb_char2cells = dbcs_char2cells;
  	mb_off2cells = dbcs_off2cells;
  	mb_ptr2char = dbcs_ptr2char;
***************
*** 628,636 ****
--- 635,645 ----
      else
      {
  	mb_ptr2len = latin_ptr2len;
+ 	mb_ptr2len_len = latin_ptr2len_len;
  	mb_char2len = latin_char2len;
  	mb_char2bytes = latin_char2bytes;
  	mb_ptr2cells = latin_ptr2cells;
+ 	mb_ptr2cells_len = latin_ptr2cells_len;
  	mb_char2cells = latin_char2cells;
  	mb_off2cells = latin_off2cells;
  	mb_ptr2char = latin_ptr2char;
***************
*** 1069,1075 ****
   * Get byte length of character at "*p" but stop at a NUL.
   * For UTF-8 this includes following composing characters.
   * Returns 0 when *p is NUL.
-  *
   */
      int
  latin_ptr2len(p)
--- 1078,1083 ----
***************
*** 1091,1096 ****
--- 1099,1138 ----
      return len;
  }
  
+ /*
+  * mb_ptr2len_len() function pointer.
+  * Like mb_ptr2len(), but limit to read "size" bytes.
+  * Returns 0 for an empty string.
+  * Returns 1 for an illegal char or an incomplete byte sequence.
+  */
+     int
+ latin_ptr2len_len(p, size)
+     char_u	*p;
+     int		size;
+ {
+     if (size < 1 || *p == NUL)
+ 	return 0;
+     return 1;
+ }
+ 
+     static int
+ dbcs_ptr2len_len(p, size)
+     char_u	*p;
+     int		size;
+ {
+     int		len;
+ 
+     if (size < 1 || *p == NUL)
+ 	return 0;
+     if (size == 1)
+ 	return 1;
+     /* Check that second byte is not missing. */
+     len = MB_BYTE2LEN(*p);
+     if (len == 2 && p[1] == NUL)
+ 	len = 1;
+     return len;
+ }
+ 
  struct interval
  {
      unsigned short first;
***************
*** 1287,1292 ****
--- 1329,1383 ----
  }
  
  /*
+  * mb_ptr2cells_len() function pointer.
+  * Like mb_ptr2cells(), but limit string length to "size".
+  * For an empty string or truncated character returns 1.
+  */
+     int
+ latin_ptr2cells_len(p, size)
+     char_u	*p UNUSED;
+     int		size UNUSED;
+ {
+     return 1;
+ }
+ 
+     static int
+ utf_ptr2cells_len(p, size)
+     char_u	*p;
+     int		size;
+ {
+     int		c;
+ 
+     /* Need to convert to a wide character. */
+     if (size > 0 && *p >= 0x80)
+     {
+ 	if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
+ 	    return 1;
+ 	c = utf_ptr2char(p);
+ 	/* An illegal byte is displayed as <xx>. */
+ 	if (utf_ptr2len(p) == 1 || c == NUL)
+ 	    return 4;
+ 	/* If the char is ASCII it must be an overlong sequence. */
+ 	if (c < 0x80)
+ 	    return char2cells(c);
+ 	return utf_char2cells(c);
+     }
+     return 1;
+ }
+ 
+     static int
+ dbcs_ptr2cells_len(p, size)
+     char_u	*p;
+     int		size;
+ {
+     /* Number of cells is equal to number of bytes, except for euc-jp when
+      * the first byte is 0x8e. */
+     if (size <= 1 || (enc_dbcs == DBCS_JPNU && *p == 0x8e))
+ 	return 1;
+     return MB_BYTE2LEN(*p);
+ }
+ 
+ /*
   * mb_char2cells() function pointer.
   * Return the number of display cells character "c" occupies.
   * Only takes care of multi-byte chars, not "^C" and such.
***************
*** 1716,1721 ****
--- 1807,1813 ----
  /*
   * Return the number of bytes the UTF-8 encoding of the character at "p[size]"
   * takes.  This includes following composing characters.
+  * Returns 0 for an empty string.
   * Returns 1 for an illegal char or an incomplete byte sequence.
   */
      int
***************
*** 1728,1734 ****
      int		prevlen;
  #endif
  
!     if (*p == NUL)
  	return 0;
      if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) /* be quick for ASCII */
  	return 1;
--- 1820,1826 ----
      int		prevlen;
  #endif
  
!     if (size < 1 || *p == NUL)
  	return 0;
      if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) /* be quick for ASCII */
  	return 1;
*** ../vim-7.2.199/src/proto/mbyte.pro	2008-07-13 19:34:19.000000000 +0200
--- src/proto/mbyte.pro	2009-06-16 14:58:39.000000000 +0200
***************
*** 7,16 ****
--- 7,18 ----
  int latin_char2len __ARGS((int c));
  int latin_char2bytes __ARGS((int c, char_u *buf));
  int latin_ptr2len __ARGS((char_u *p));
+ int latin_ptr2len_len __ARGS((char_u *p, int size));
  int utf_char2cells __ARGS((int c));
  int latin_ptr2cells __ARGS((char_u *p));
  int utf_ptr2cells __ARGS((char_u *p));
  int dbcs_ptr2cells __ARGS((char_u *p));
+ int latin_ptr2cells_len __ARGS((char_u *p, int size));
  int latin_char2cells __ARGS((int c));
  int latin_off2cells __ARGS((unsigned off, unsigned max_off));
  int dbcs_off2cells __ARGS((unsigned off, unsigned max_off));
***************
*** 85,90 ****
--- 87,93 ----
  int preedit_get_status __ARGS((void));
  int im_is_preediting __ARGS((void));
  int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
+ int convert_setup_ext __ARGS((vimconv_T *vcp, char_u *from, int from_unicode_is_utf8, char_u *to, int to_unicode_is_utf8));
  int convert_input __ARGS((char_u *ptr, int len, int maxlen));
  int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
  char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
*** ../vim-7.2.199/src/version.c	2009-06-16 14:31:56.000000000 +0200
--- src/version.c	2009-06-16 14:37:38.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     200,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
12. Sing along at the opera.

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


--- NEW FILE 7.2.201 ---
To: vim-dev at vim.org
Subject: Patch 7.2.201
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.201
Problem:    Cannot copy/paste HTML to/from Firefox via the clipboard.
Solution:   Implement this for GTK.  Add the "html" value to 'clipboard'.
Files:	    runtime/doc/options.txt, src/globals.h, src/gui_gtk_x11.c,
	    src/mbyte.c, src/proto/mbyte.pro, src/option.c


*** ../vim-7.2.200/runtime/doc/options.txt	2009-02-21 20:27:00.000000000 +0100
--- runtime/doc/options.txt	2009-06-12 22:25:22.000000000 +0200
***************
*** 1443,1448 ****
--- 1444,1457 ----
  	autoselectml	Like "autoselect", but for the modeless selection
  			only.  Compare to the 'A' flag in 'guioptions'.
  
+ 	html		When the clipboard contains HTML, use this when
+ 			pasting.  When putting text on the clipboard, mark it
+ 			as HTML.  This works to copy rendered HTML from
+ 			Firefox, paste it as raw HTML in Vim, select the HTML
+ 			in Vim and paste it in a rich edit box in Firefox.
+ 			Only supported for GTK version 2 and later.
+ 			Only available with the |+multi_byte| feature.
+ 
  	exclude:{pattern}
  			Defines a pattern that is matched against the name of
  			the terminal 'term'.  If there is a match, no
*** ../vim-7.2.200/src/globals.h	2009-06-16 15:12:11.000000000 +0200
--- src/globals.h	2009-06-12 21:10:30.000000000 +0200
***************
*** 509,514 ****
--- 509,515 ----
  EXTERN int	clip_unnamed INIT(= FALSE);
  EXTERN int	clip_autoselect INIT(= FALSE);
  EXTERN int	clip_autoselectml INIT(= FALSE);
+ EXTERN int	clip_html INIT(= FALSE);
  EXTERN regprog_T *clip_exclude_prog INIT(= NULL);
  #endif
  
*** ../vim-7.2.200/src/gui_gtk_x11.c	2009-06-16 15:12:11.000000000 +0200
--- src/gui_gtk_x11.c	2009-06-16 14:44:19.000000000 +0200
***************
*** 107,112 ****
--- 107,113 ----
      TARGET_UTF8_STRING,
      TARGET_STRING,
      TARGET_COMPOUND_TEXT,
+     TARGET_HTML,
      TARGET_TEXT,
      TARGET_TEXT_URI_LIST,
      TARGET_TEXT_PLAIN,
***************
*** 123,128 ****
--- 124,130 ----
      {VIMENC_ATOM_NAME,	0, TARGET_VIMENC},
      {VIM_ATOM_NAME,	0, TARGET_VIM},
  #ifdef FEAT_MBYTE
+     {"text/html",	0, TARGET_HTML},
      {"UTF8_STRING",	0, TARGET_UTF8_STRING},
  #endif
      {"COMPOUND_TEXT",	0, TARGET_COMPOUND_TEXT},
***************
*** 140,145 ****
--- 142,148 ----
  {
      {"text/uri-list",	0, TARGET_TEXT_URI_LIST},
  # ifdef FEAT_MBYTE
+     {"text/html",	0, TARGET_HTML},
      {"UTF8_STRING",	0, TARGET_UTF8_STRING},
  # endif
      {"STRING",		0, TARGET_STRING},
***************
*** 178,183 ****
--- 181,187 ----
   * Atoms used to control/reference X11 selections.
   */
  #ifdef FEAT_MBYTE
+ static GdkAtom html_atom = GDK_NONE;
  static GdkAtom utf8_string_atom = GDK_NONE;
  #endif
  #ifndef HAVE_GTK2
***************
*** 1364,1369 ****
--- 1368,1391 ----
  	    else
  		text = tmpbuf_utf8;
  	}
+ 	else if (len >= 2 && text[0] == 0xff && text[1] == 0xfe)
+ 	{
+ 	    vimconv_T conv;
+ 
+ 	    /* UTF-16, we get this for HTML */
+ 	    conv.vc_type = CONV_NONE;
+ 	    convert_setup_ext(&conv, (char_u *)"utf-16le", FALSE, p_enc, TRUE);
+ 
+ 	    if (conv.vc_type != CONV_NONE)
+ 	    {
+ 		text += 2;
+ 		len -= 2;
+ 		tmpbuf = string_convert(&conv, text, &len);
+ 		convert_setup(&conv, NULL, NULL);
+ 	    }
+ 	    if (tmpbuf != NULL)
+ 		text = tmpbuf;
+ 	}
      }
  #else /* !HAVE_GTK2 */
  # ifdef FEAT_MBYTE
***************
*** 1451,1456 ****
--- 1473,1479 ----
  
      if (info != (guint)TARGET_STRING
  #ifdef FEAT_MBYTE
+ 	    && (!clip_html || info != (guint)TARGET_HTML)
  	    && info != (guint)TARGET_UTF8_STRING
  	    && info != (guint)TARGET_VIMENC
  #endif
***************
*** 1486,1491 ****
--- 1509,1548 ----
      }
  
  #ifdef FEAT_MBYTE
+     else if (info == (guint)TARGET_HTML)
+     {
+ 	vimconv_T conv;
+ 
+ 	/* Since we get utf-16, we probably should set it as well. */
+ 	conv.vc_type = CONV_NONE;
+ 	convert_setup_ext(&conv, p_enc, TRUE, (char_u *)"utf-16le", FALSE);
+ 	if (conv.vc_type != CONV_NONE)
+ 	{
+ 	    tmpbuf = string_convert(&conv, string, &length);
+ 	    convert_setup(&conv, NULL, NULL);
+ 	    vim_free(string);
+ 	    string = tmpbuf;
+ 	}
+ 
+ 	/* Prepend the BOM: "fffe" */
+ 	if (string != NULL)
+ 	{
+ 	    tmpbuf = alloc(length + 2);
+ 	    tmpbuf[0] = 0xff;
+ 	    tmpbuf[1] = 0xfe;
+ 	    mch_memmove(tmpbuf + 2, string, (size_t)length);
+ 	    vim_free(string);
+ 	    string = tmpbuf;
+ 	    length += 2;
+ 
+ 	    selection_data->type = selection_data->target;
+ 	    selection_data->format = 16;	/* 16 bits per char */
+ 	    gtk_selection_data_set(selection_data, html_atom, 16,
+ 							      string, length);
+ 	    vim_free(string);
+ 	}
+ 	return;
+     }
      else if (info == (guint)TARGET_VIMENC)
      {
  	int l = STRLEN(p_enc);
***************
*** 3464,3469 ****
--- 3521,3527 ----
  
      /* Initialise atoms */
  #ifdef FEAT_MBYTE
+     html_atom = gdk_atom_intern("text/html", FALSE);
      utf8_string_atom = gdk_atom_intern("UTF8_STRING", FALSE);
  #endif
  #ifndef HAVE_GTK2
***************
*** 6665,6670 ****
--- 6723,6732 ----
  
      for (i = 0; i < N_SELECTION_TARGETS; ++i)
      {
+ #ifdef FEAT_MBYTE
+ 	if (!clip_html && selection_targets[i].info == TARGET_HTML)
+ 	    continue;
+ #endif
  	received_selection = RS_NONE;
  	target = gdk_atom_intern(selection_targets[i].target, FALSE);
  
*** ../vim-7.2.200/src/mbyte.c	2009-06-16 15:12:11.000000000 +0200
--- src/mbyte.c	2009-06-16 15:01:30.000000000 +0200
***************
*** 3265,3271 ****
  
  # if defined(USE_ICONV) || defined(PROTO)
  
! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen, int *unconvlenp));
  
  /*
   * Call iconv_open() with a check if iconv() works properly (there are broken
--- 3265,3271 ----
  
  # if defined(USE_ICONV) || defined(PROTO)
  
! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen, int *unconvlenp, int *resultlenp));
  
  /*
   * Call iconv_open() with a check if iconv() works properly (there are broken
***************
*** 3326,3338 ****
   * If "unconvlenp" is not NULL handle the string ending in an incomplete
   * sequence and set "*unconvlenp" to the length of it.
   * Returns the converted string in allocated memory.  NULL for an error.
   */
      static char_u *
! iconv_string(vcp, str, slen, unconvlenp)
      vimconv_T	*vcp;
      char_u	*str;
      int		slen;
      int		*unconvlenp;
  {
      const char	*from;
      size_t	fromlen;
--- 3326,3340 ----
   * If "unconvlenp" is not NULL handle the string ending in an incomplete
   * sequence and set "*unconvlenp" to the length of it.
   * Returns the converted string in allocated memory.  NULL for an error.
+  * If resultlenp is not NULL, sets it to the result length in bytes.
   */
      static char_u *
! iconv_string(vcp, str, slen, unconvlenp, resultlenp)
      vimconv_T	*vcp;
      char_u	*str;
      int		slen;
      int		*unconvlenp;
+     int		*resultlenp;
  {
      const char	*from;
      size_t	fromlen;
***************
*** 3418,3423 ****
--- 3420,3428 ----
  	/* Not enough room or skipping illegal sequence. */
  	done = to - (char *)result;
      }
+ 
+     if (resultlenp != NULL)
+ 	*resultlenp = (int)(to - (char *)result);
      return result;
  }
  
***************
*** 5837,5844 ****
--- 5842,5866 ----
      char_u	*from;
      char_u	*to;
  {
+     return convert_setup_ext(vcp, from, TRUE, to, TRUE);
+ }
+ 
+ /*
+  * As convert_setup(), but only when from_unicode_is_utf8 is TRUE will all
+  * "from" unicode charsets be considered utf-8.  Same for "to".
+  */
+     int
+ convert_setup_ext(vcp, from, from_unicode_is_utf8, to, to_unicode_is_utf8)
+     vimconv_T	*vcp;
+     char_u	*from;
+     int		from_unicode_is_utf8;
+     char_u	*to;
+     int		to_unicode_is_utf8;
+ {
      int		from_prop;
      int		to_prop;
+     int		from_is_utf8;
+     int		to_is_utf8;
  
      /* Reset to no conversion. */
  # ifdef USE_ICONV
***************
*** 5856,5892 ****
  
      from_prop = enc_canon_props(from);
      to_prop = enc_canon_props(to);
!     if ((from_prop & ENC_LATIN1) && (to_prop & ENC_UNICODE))
      {
  	/* Internal latin1 -> utf-8 conversion. */
  	vcp->vc_type = CONV_TO_UTF8;
  	vcp->vc_factor = 2;	/* up to twice as long */
      }
!     else if ((from_prop & ENC_LATIN9) && (to_prop & ENC_UNICODE))
      {
  	/* Internal latin9 -> utf-8 conversion. */
  	vcp->vc_type = CONV_9_TO_UTF8;
  	vcp->vc_factor = 3;	/* up to three as long (euro sign) */
      }
!     else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN1))
      {
  	/* Internal utf-8 -> latin1 conversion. */
  	vcp->vc_type = CONV_TO_LATIN1;
      }
!     else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN9))
      {
  	/* Internal utf-8 -> latin9 conversion. */
  	vcp->vc_type = CONV_TO_LATIN9;
      }
  #ifdef WIN3264
      /* Win32-specific codepage <-> codepage conversion without iconv. */
!     else if (((from_prop & ENC_UNICODE) || encname2codepage(from) > 0)
! 	    && ((to_prop & ENC_UNICODE) || encname2codepage(to) > 0))
      {
  	vcp->vc_type = CONV_CODEPAGE;
  	vcp->vc_factor = 2;	/* up to twice as long */
! 	vcp->vc_cpfrom = (from_prop & ENC_UNICODE) ? 0 : encname2codepage(from);
! 	vcp->vc_cpto = (to_prop & ENC_UNICODE) ? 0 : encname2codepage(to);
      }
  #endif
  #ifdef MACOS_X
--- 5878,5923 ----
  
      from_prop = enc_canon_props(from);
      to_prop = enc_canon_props(to);
!     if (from_unicode_is_utf8)
! 	from_is_utf8 = from_prop & ENC_UNICODE;
!     else
! 	from_is_utf8 = from_prop == ENC_UNICODE;
!     if (to_unicode_is_utf8)
! 	to_is_utf8 = to_prop & ENC_UNICODE;
!     else
! 	to_is_utf8 = to_prop == ENC_UNICODE;
! 
!     if ((from_prop & ENC_LATIN1) && to_is_utf8)
      {
  	/* Internal latin1 -> utf-8 conversion. */
  	vcp->vc_type = CONV_TO_UTF8;
  	vcp->vc_factor = 2;	/* up to twice as long */
      }
!     else if ((from_prop & ENC_LATIN9) && to_is_utf8)
      {
  	/* Internal latin9 -> utf-8 conversion. */
  	vcp->vc_type = CONV_9_TO_UTF8;
  	vcp->vc_factor = 3;	/* up to three as long (euro sign) */
      }
!     else if (from_is_utf8 && (to_prop & ENC_LATIN1))
      {
  	/* Internal utf-8 -> latin1 conversion. */
  	vcp->vc_type = CONV_TO_LATIN1;
      }
!     else if (from_is_utf8 && (to_prop & ENC_LATIN9))
      {
  	/* Internal utf-8 -> latin9 conversion. */
  	vcp->vc_type = CONV_TO_LATIN9;
      }
  #ifdef WIN3264
      /* Win32-specific codepage <-> codepage conversion without iconv. */
!     else if ((from_is_utf8 || encname2codepage(from) > 0)
! 	    && (to_is_utf8 || encname2codepage(to) > 0))
      {
  	vcp->vc_type = CONV_CODEPAGE;
  	vcp->vc_factor = 2;	/* up to twice as long */
! 	vcp->vc_cpfrom = from_is_utf8 ? 0 : encname2codepage(from);
! 	vcp->vc_cpto = to_is_utf8 ? 0 : encname2codepage(to);
      }
  #endif
  #ifdef MACOS_X
***************
*** 5894,5900 ****
      {
  	vcp->vc_type = CONV_MAC_LATIN1;
      }
!     else if ((from_prop & ENC_MACROMAN) && (to_prop & ENC_UNICODE))
      {
  	vcp->vc_type = CONV_MAC_UTF8;
  	vcp->vc_factor = 2;	/* up to twice as long */
--- 5925,5931 ----
      {
  	vcp->vc_type = CONV_MAC_LATIN1;
      }
!     else if ((from_prop & ENC_MACROMAN) && to_is_utf8)
      {
  	vcp->vc_type = CONV_MAC_UTF8;
  	vcp->vc_factor = 2;	/* up to twice as long */
***************
*** 5903,5909 ****
      {
  	vcp->vc_type = CONV_LATIN1_MAC;
      }
!     else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_MACROMAN))
      {
  	vcp->vc_type = CONV_UTF8_MAC;
      }
--- 5934,5940 ----
      {
  	vcp->vc_type = CONV_LATIN1_MAC;
      }
!     else if (from_is_utf8 && (to_prop & ENC_MACROMAN))
      {
  	vcp->vc_type = CONV_UTF8_MAC;
      }
***************
*** 5913,5920 ****
      {
  	/* Use iconv() for conversion. */
  	vcp->vc_fd = (iconv_t)my_iconv_open(
! 		(to_prop & ENC_UNICODE) ? (char_u *)"utf-8" : to,
! 		(from_prop & ENC_UNICODE) ? (char_u *)"utf-8" : from);
  	if (vcp->vc_fd != (iconv_t)-1)
  	{
  	    vcp->vc_type = CONV_ICONV;
--- 5944,5951 ----
      {
  	/* Use iconv() for conversion. */
  	vcp->vc_fd = (iconv_t)my_iconv_open(
! 		to_is_utf8 ? (char_u *)"utf-8" : to,
! 		from_is_utf8 ? (char_u *)"utf-8" : from);
  	if (vcp->vc_fd != (iconv_t)-1)
  	{
  	    vcp->vc_type = CONV_ICONV;
***************
*** 6170,6178 ****
  
  # ifdef USE_ICONV
  	case CONV_ICONV:	/* conversion with output_conv.vc_fd */
! 	    retval = iconv_string(vcp, ptr, len, unconvlenp);
! 	    if (retval != NULL && lenp != NULL)
! 		*lenp = (int)STRLEN(retval);
  	    break;
  # endif
  # ifdef WIN3264
--- 6201,6207 ----
  
  # ifdef USE_ICONV
  	case CONV_ICONV:	/* conversion with output_conv.vc_fd */
! 	    retval = iconv_string(vcp, ptr, len, unconvlenp, lenp);
  	    break;
  # endif
  # ifdef WIN3264
*** ../vim-7.2.200/src/option.c	2009-05-17 13:30:58.000000000 +0200
--- src/option.c	2009-06-12 21:09:51.000000000 +0200
***************
*** 7024,7029 ****
--- 7024,7030 ----
      int		new_unnamed = FALSE;
      int		new_autoselect = FALSE;
      int		new_autoselectml = FALSE;
+     int		new_html = FALSE;
      regprog_T	*new_exclude_prog = NULL;
      char_u	*errmsg = NULL;
      char_u	*p;
***************
*** 7047,7052 ****
--- 7048,7058 ----
  	    new_autoselectml = TRUE;
  	    p += 12;
  	}
+ 	else if (STRNCMP(p, "html", 4) == 0 && (p[4] == ',' || p[4] == NUL))
+ 	{
+ 	    new_html = TRUE;
+ 	    p += 4;
+ 	}
  	else if (STRNCMP(p, "exclude:", 8) == 0 && new_exclude_prog == NULL)
  	{
  	    p += 8;
***************
*** 7068,7073 ****
--- 7074,7080 ----
  	clip_unnamed = new_unnamed;
  	clip_autoselect = new_autoselect;
  	clip_autoselectml = new_autoselectml;
+ 	clip_html = new_html;
  	vim_free(clip_exclude_prog);
  	clip_exclude_prog = new_exclude_prog;
      }
*** ../vim-7.2.200/src/version.c	2009-06-16 15:12:11.000000000 +0200
--- src/version.c	2009-06-16 15:14:02.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     201,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
13. Go to a poetry recital and ask why the poems don't rhyme.

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


--- NEW FILE 7.2.202 ---
To: vim-dev at vim.org
Subject: Patch 7.2.202
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.202
Problem:    BufWipeout autocommand that edits another buffer causes problems.
Solution:   Check for the situation, give an error and quit the operation.
Files:	    src/fileio.c


*** ../vim-7.2.201/src/fileio.c	2009-05-16 17:29:37.000000000 +0200
--- src/fileio.c	2009-06-11 21:22:37.000000000 +0200
***************
*** 4824,4829 ****
--- 4824,4831 ----
      char_u	*sfname;
  {
  #ifdef FEAT_AUTOCMD
+     buf_T	*buf = curbuf;
+ 
      /* It's like the unnamed buffer is deleted.... */
      if (curbuf->b_p_bl)
  	apply_autocmds(EVENT_BUFDELETE, NULL, NULL, FALSE, curbuf);
***************
*** 4832,4837 ****
--- 4834,4845 ----
      if (aborting())	    /* autocmds may abort script processing */
  	return FAIL;
  # endif
+     if (curbuf != buf)
+     {
+ 	/* We are in another buffer now, don't do the renaming. */
+ 	EMSG(_(e_auchangedbuf));
+ 	return FAIL;
+     }
  #endif
  
      if (setfname(curbuf, fname, sfname, FALSE) == OK)
*** ../vim-7.2.201/src/version.c	2009-06-16 15:23:07.000000000 +0200
--- src/version.c	2009-06-16 15:28:31.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     202,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
14. Put mosquito netting around your work area. Play a tape of jungle
    sounds all day.

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


--- NEW FILE 7.2.203 ---
To: vim-dev at vim.org
Subject: Patch 7.2.203
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.203
Problem:    When reloading a buffer or doing anything else with a buffer that
	    is not displayed in a visible window, autocommands may be applied
	    to the current window, folds messed up, etc.
Solution:   Instead of using the current window for the hidden buffer use a
	    special window, splitting the current one temporarily.
Files:	    src/fileio.c, src/globals.h, src/gui.c, src/if_perl.xs,
	    src/proto/gui.pro, src/proto/window.pro, src/screen.c,
	    src/structs.h, src/window.c


*** ../vim-7.2.202/src/fileio.c	2009-06-16 15:35:46.000000000 +0200
--- src/fileio.c	2009-06-11 21:22:37.000000000 +0200
***************
*** 8365,8371 ****
  
  	    /* Execute the modeline settings, but don't set window-local
  	     * options if we are using the current window for another buffer. */
! 	    do_modelines(aco.save_curwin == NULL ? OPT_NOWIN : 0);
  
  	    /* restore the current window */
  	    aucmd_restbuf(&aco);
--- 8365,8371 ----
  
  	    /* Execute the modeline settings, but don't set window-local
  	     * options if we are using the current window for another buffer. */
! 	    do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
  
  	    /* restore the current window */
  	    aucmd_restbuf(&aco);
***************
*** 8381,8388 ****
  
  /*
   * Prepare for executing autocommands for (hidden) buffer "buf".
!  * Search a window for the current buffer.  Save the cursor position and
!  * screen offset.
   * Set "curbuf" and "curwin" to match "buf".
   * When FEAT_AUTOCMD is not defined another version is used, see below.
   */
--- 8381,8388 ----
  
  /*
   * Prepare for executing autocommands for (hidden) buffer "buf".
!  * Search for a visible window containing the current buffer.  If there isn't
!  * one then use "aucmd_win".
   * Set "curbuf" and "curwin" to match "buf".
   * When FEAT_AUTOCMD is not defined another version is used, see below.
   */
***************
*** 8392,8399 ****
      buf_T	*buf;		/* new curbuf */
  {
      win_T	*win;
! 
!     aco->new_curbuf = buf;
  
      /* Find a window that is for the new buffer */
      if (buf == curbuf)		/* be quick when buf is curbuf */
--- 8392,8400 ----
      buf_T	*buf;		/* new curbuf */
  {
      win_T	*win;
! #ifdef FEAT_WINDOWS
!     int		save_ea;
! #endif
  
      /* Find a window that is for the new buffer */
      if (buf == curbuf)		/* be quick when buf is curbuf */
***************
*** 8407,8448 ****
  	win = NULL;
  #endif
  
!     /*
!      * Prefer to use an existing window for the buffer, it has the least side
!      * effects (esp. if "buf" is curbuf).
!      * Otherwise, use curwin for "buf".  It might make some items in the
!      * window invalid.  At least save the cursor and topline.
!      */
      if (win != NULL)
      {
! 	/* there is a window for "buf", make it the curwin */
! 	aco->save_curwin = curwin;
  	curwin = win;
- 	aco->save_buf = win->w_buffer;
- 	aco->new_curwin = win;
      }
      else
      {
! 	/* there is no window for "buf", use curwin */
! 	aco->save_curwin = NULL;
! 	aco->save_buf = curbuf;
! 	--curbuf->b_nwindows;
  	curwin->w_buffer = buf;
  	++buf->b_nwindows;
  
! 	/* save cursor and topline, set them to safe values */
! 	aco->save_cursor = curwin->w_cursor;
! 	curwin->w_cursor.lnum = 1;
! 	curwin->w_cursor.col = 0;
! 	aco->save_topline = curwin->w_topline;
! 	curwin->w_topline = 1;
! #ifdef FEAT_DIFF
! 	aco->save_topfill = curwin->w_topfill;
! 	curwin->w_topfill = 0;
  #endif
      }
- 
      curbuf = buf;
  }
  
  /*
--- 8408,8460 ----
  	win = NULL;
  #endif
  
!     /* Allocate "aucmd_win" when needed.  If this fails (out of memory) fall
!      * back to using the current window. */
!     if (win == NULL && aucmd_win == NULL)
!     {
! 	win_alloc_aucmd_win();
! 	if (aucmd_win == NULL)
! 	    win = curwin;
!     }
! 
!     aco->save_curwin = curwin;
!     aco->save_curbuf = curbuf;
      if (win != NULL)
      {
! 	/* There is a window for "buf" in the current tab page, make it the
! 	 * curwin.  This is preferred, it has the least side effects (esp. if
! 	 * "buf" is curbuf). */
  	curwin = win;
      }
      else
      {
! 	/* There is no window for "buf", use "aucmd_win".  To minimize the side
! 	 * effects, insert it in a the current tab page.
! 	 * Anything related to a window (e.g., setting folds) may have
! 	 * unexpected results. */
! 	curwin = aucmd_win;
  	curwin->w_buffer = buf;
  	++buf->b_nwindows;
  
! #ifdef FEAT_WINDOWS
! 	/* Split the current window, put the aucmd_win in the upper half. */
! 	make_snapshot(SNAP_AUCMD_IDX);
! 	save_ea = p_ea;
! 	p_ea = FALSE;
! 	(void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
! 	(void)win_comp_pos();   /* recompute window positions */
! 	p_ea = save_ea;
! #endif
! 	/* set cursor and topline to safe values */
! 	curwin_init();
! #ifdef FEAT_VERTSPLIT
! 	curwin->w_wincol = 0;
! 	curwin->w_width = Columns;
  #endif
      }
      curbuf = buf;
+     aco->new_curwin = curwin;
+     aco->new_curbuf = curbuf;
  }
  
  /*
***************
*** 8454,8474 ****
  aucmd_restbuf(aco)
      aco_save_T	*aco;		/* structure holding saved values */
  {
!     if (aco->save_curwin != NULL)
      {
  	/* restore curwin */
  #ifdef FEAT_WINDOWS
  	if (win_valid(aco->save_curwin))
  #endif
  	{
! 	    /* restore the buffer which was previously edited by curwin, if
! 	     * it's still the same window and it's valid */
  	    if (curwin == aco->new_curwin
! 		    && buf_valid(aco->save_buf)
! 		    && aco->save_buf->b_ml.ml_mfp != NULL)
  	    {
  		--curbuf->b_nwindows;
! 		curbuf = aco->save_buf;
  		curwin->w_buffer = curbuf;
  		++curbuf->b_nwindows;
  	    }
--- 8466,8551 ----
  aucmd_restbuf(aco)
      aco_save_T	*aco;		/* structure holding saved values */
  {
! #ifdef FEAT_WINDOWS
!     int dummy;
! #endif
! 
!     if (aco->new_curwin == aucmd_win)
!     {
! 	--curbuf->b_nwindows;
! #ifdef FEAT_WINDOWS
! 	/* Find "aucmd_win", it can't be closed, but it may be in another tab
! 	 * page. */
! 	if (curwin != aucmd_win)
! 	{
! 	    tabpage_T	*tp;
! 	    win_T	*wp;
! 
! 	    FOR_ALL_TAB_WINDOWS(tp, wp)
! 	    {
! 		if (wp == aucmd_win)
! 		{
! 		    if (tp != curtab)
! 			goto_tabpage_tp(tp);
! 		    win_goto(aucmd_win);
! 		    break;
! 		}
! 	    }
! 	}
! 
! 	/* Remove the window and frame from the tree of frames. */
! 	(void)winframe_remove(curwin, &dummy, NULL);
! 	win_remove(curwin, NULL);
! 	last_status(FALSE);	    /* may need to remove last status line */
! 	restore_snapshot(SNAP_AUCMD_IDX, FALSE);
! 	(void)win_comp_pos();   /* recompute window positions */
! 
! 	if (win_valid(aco->save_curwin))
! 	    curwin = aco->save_curwin;
! 	else
! 	    /* Hmm, original window disappeared.  Just use the first one. */
! 	    curwin = firstwin;
! # ifdef FEAT_EVAL
! 	vars_clear(&aucmd_win->w_vars.dv_hashtab);  /* free all w: variables */
! # endif
! #else
! 	curwin = aco->save_curwin;
! #endif
! 	curbuf = curwin->w_buffer;
! 
! 	/* the buffer contents may have changed */
! 	check_cursor();
! 	if (curwin->w_topline > curbuf->b_ml.ml_line_count)
! 	{
! 	    curwin->w_topline = curbuf->b_ml.ml_line_count;
! #ifdef FEAT_DIFF
! 	    curwin->w_topfill = 0;
! #endif
! 	}
! #if defined(FEAT_GUI)
! 	/* Hide the scrollbars from the aucmd_win and update. */
! 	gui_mch_enable_scrollbar(&aucmd_win->w_scrollbars[SBAR_LEFT], FALSE);
! 	gui_mch_enable_scrollbar(&aucmd_win->w_scrollbars[SBAR_RIGHT], FALSE);
! 	gui_may_update_scrollbars();
! #endif
!     }
!     else
      {
  	/* restore curwin */
  #ifdef FEAT_WINDOWS
  	if (win_valid(aco->save_curwin))
  #endif
  	{
! 	    /* Restore the buffer which was previously edited by curwin, if
! 	     * it was chagned, we are still the same window and the buffer is
! 	     * valid. */
  	    if (curwin == aco->new_curwin
! 		    && curbuf != aco->new_curbuf
! 		    && buf_valid(aco->new_curbuf)
! 		    && aco->new_curbuf->b_ml.ml_mfp != NULL)
  	    {
  		--curbuf->b_nwindows;
! 		curbuf = aco->new_curbuf;
  		curwin->w_buffer = curbuf;
  		++curbuf->b_nwindows;
  	    }
***************
*** 8477,8510 ****
  	    curbuf = curwin->w_buffer;
  	}
      }
-     else
-     {
- 	/* restore buffer for curwin if it still exists and is loaded */
- 	if (buf_valid(aco->save_buf) && aco->save_buf->b_ml.ml_mfp != NULL)
- 	{
- 	    --curbuf->b_nwindows;
- 	    curbuf = aco->save_buf;
- 	    curwin->w_buffer = curbuf;
- 	    ++curbuf->b_nwindows;
- 	    curwin->w_cursor = aco->save_cursor;
- 	    check_cursor();
- 	    /* check topline < line_count, in case lines got deleted */
- 	    if (aco->save_topline <= curbuf->b_ml.ml_line_count)
- 	    {
- 		curwin->w_topline = aco->save_topline;
- #ifdef FEAT_DIFF
- 		curwin->w_topfill = aco->save_topfill;
- #endif
- 	    }
- 	    else
- 	    {
- 		curwin->w_topline = curbuf->b_ml.ml_line_count;
- #ifdef FEAT_DIFF
- 		curwin->w_topfill = 0;
- #endif
- 	    }
- 	}
-     }
  }
  
  static int	autocmd_nested = FALSE;
--- 8554,8559 ----
***************
*** 9419,9427 ****
      aco_save_T	*aco;		/* structure to save values in */
      buf_T	*buf;		/* new curbuf */
  {
!     aco->save_buf = curbuf;
      curbuf = buf;
      curwin->w_buffer = buf;
  }
  
  /*
--- 9468,9478 ----
      aco_save_T	*aco;		/* structure to save values in */
      buf_T	*buf;		/* new curbuf */
  {
!     aco->save_curbuf = curbuf;
!     --curbuf->b_nwindows;
      curbuf = buf;
      curwin->w_buffer = buf;
+     ++curbuf->b_nwindows;
  }
  
  /*
***************
*** 9432,9439 ****
  aucmd_restbuf(aco)
      aco_save_T	*aco;		/* structure holding saved values */
  {
!     curbuf = aco->save_buf;
      curwin->w_buffer = curbuf;
  }
  
  #endif	/* FEAT_AUTOCMD */
--- 9483,9492 ----
  aucmd_restbuf(aco)
      aco_save_T	*aco;		/* structure holding saved values */
  {
!     --curbuf->b_nwindows;
!     curbuf = aco->save_curbuf;
      curwin->w_buffer = curbuf;
+     ++curbuf->b_nwindows;
  }
  
  #endif	/* FEAT_AUTOCMD */
*** ../vim-7.2.202/src/globals.h	2009-06-16 15:23:07.000000000 +0200
--- src/globals.h	2009-06-12 21:10:30.000000000 +0200
***************
*** 539,544 ****
--- 539,548 ----
  
  EXTERN win_T	*curwin;	/* currently active window */
  
+ #ifdef FEAT_AUTOCMD
+ EXTERN win_T	*aucmd_win;	/* window used in aucmd_prepbuf() */
+ #endif
+ 
  /*
   * The window layout is kept in a tree of frames.  topframe points to the top
   * of the tree.
*** ../vim-7.2.202/src/gui.c	2009-05-21 23:25:38.000000000 +0200
--- src/gui.c	2009-06-11 20:58:05.000000000 +0200
***************
*** 3879,3884 ****
--- 3879,3899 ----
   * Scrollbar stuff:
   */
  
+ /*
+  * Called when something in the window layout has changed.
+  */
+     void
+ gui_may_update_scrollbars()
+ {
+     if (gui.in_use && starting == 0)
+     {
+ 	out_flush();
+ 	gui_init_which_components(NULL);
+ 	gui_update_scrollbars(TRUE);
+     }
+     need_mouse_correct = TRUE;
+ }
+ 
      void
  gui_update_scrollbars(force)
      int		force;	    /* Force all scrollbars to get updated */
*** ../vim-7.2.202/src/if_perl.xs	2008-12-03 13:18:16.000000000 +0100
--- src/if_perl.xs	2009-06-03 17:52:51.000000000 +0200
***************
*** 1234,1240 ****
  		    {
  			ml_delete(lnum, 0);
  			deleted_lines_mark(lnum, 1L);
! 			if (aco.save_buf == curbuf)
  			    check_cursor();
  		    }
  
--- 1236,1242 ----
  		    {
  			ml_delete(lnum, 0);
  			deleted_lines_mark(lnum, 1L);
! 			if (aco.save_curbuf == curbuf)
  			    check_cursor();
  		    }
  
*** ../vim-7.2.202/src/proto/gui.pro	2007-05-05 19:42:19.000000000 +0200
--- src/proto/gui.pro	2009-06-11 20:58:08.000000000 +0200
***************
*** 43,48 ****
--- 43,49 ----
  void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
  scrollbar_T *gui_find_scrollbar __ARGS((long ident));
  void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
+ void gui_may_update_scrollbars __ARGS((void));
  void gui_update_scrollbars __ARGS((int force));
  int gui_do_scroll __ARGS((void));
  int gui_do_horiz_scroll __ARGS((void));
*** ../vim-7.2.202/src/proto/window.pro	2007-07-26 22:57:45.000000000 +0200
--- src/proto/window.pro	2009-06-10 21:20:39.000000000 +0200
***************
*** 1,6 ****
--- 1,7 ----
  /* window.c */
  void do_window __ARGS((int nchar, long Prenum, int xchar));
  int win_split __ARGS((int size, int flags));
+ int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
  int win_valid __ARGS((win_T *win));
  int win_count __ARGS((void));
  int make_windows __ARGS((int count, int vertical));
***************
*** 10,18 ****
--- 11,21 ----
  void win_close __ARGS((win_T *win, int free_buf));
  void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
  void win_free_all __ARGS((void));
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
  void close_others __ARGS((int message, int forceit));
  void curwin_init __ARGS((void));
  int win_alloc_first __ARGS((void));
+ void win_alloc_aucmd_win __ARGS((void));
  void win_init_size __ARGS((void));
  void free_tabpage __ARGS((tabpage_T *tp));
  int win_new_tabpage __ARGS((int after));
***************
*** 30,35 ****
--- 33,40 ----
  void win_enter __ARGS((win_T *wp, int undo_sync));
  win_T *buf_jump_open_win __ARGS((buf_T *buf));
  win_T *buf_jump_open_tab __ARGS((buf_T *buf));
+ void win_append __ARGS((win_T *after, win_T *wp));
+ void win_remove __ARGS((win_T *wp, tabpage_T *tp));
  int win_alloc_lines __ARGS((win_T *wp));
  void win_free_lsize __ARGS((win_T *wp));
  void shell_new_rows __ARGS((void));
***************
*** 58,63 ****
--- 63,70 ----
  int min_rows __ARGS((void));
  int only_one_window __ARGS((void));
  void check_lnums __ARGS((int do_curwin));
+ void make_snapshot __ARGS((int idx));
+ void restore_snapshot __ARGS((int idx, int close_curwin));
  int win_hasvertsplit __ARGS((void));
  int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id));
  int match_delete __ARGS((win_T *wp, int id, int perr));
*** ../vim-7.2.202/src/screen.c	2009-05-17 13:30:58.000000000 +0200
--- src/screen.c	2009-06-10 16:41:45.000000000 +0200
***************
*** 7495,7500 ****
--- 7495,7504 ----
  #endif
  	}
      }
+ #ifdef FEAT_AUTOCMD
+     if (aucmd_win != NULL && win_alloc_lines(aucmd_win) == FAIL)
+ 	outofmem = TRUE;
+ #endif
  #ifdef FEAT_WINDOWS
  give_up:
  #endif
*** ../vim-7.2.202/src/structs.h	2009-05-16 16:36:25.000000000 +0200
--- src/structs.h	2009-06-13 12:51:56.000000000 +0200
***************
*** 1621,1626 ****
--- 1621,1634 ----
  };
  #endif
  
+ #define SNAP_HELP_IDX	0
+ #ifdef FEAT_AUTOCMD
+ # define SNAP_AUCMD_IDX 1
+ # define SNAP_COUNT	2
+ #else
+ # define SNAP_COUNT	1
+ #endif
+ 
  /*
   * Tab pages point to the top frame of each tab page.
   * Note: Most values are NOT valid for the current tab page!  Use "curwin",
***************
*** 1649,1655 ****
      buf_T	    *(tp_diffbuf[DB_COUNT]);
      int		    tp_diff_invalid;	/* list of diffs is outdated */
  #endif
!     frame_T	    *tp_snapshot;    /* window layout snapshot */
  #ifdef FEAT_EVAL
      dictitem_T	    tp_winvar;	    /* variable for "t:" Dictionary */
      dict_T	    tp_vars;	    /* internal variables, local to tab page */
--- 1657,1663 ----
      buf_T	    *(tp_diffbuf[DB_COUNT]);
      int		    tp_diff_invalid;	/* list of diffs is outdated */
  #endif
!     frame_T	    *(tp_snapshot[SNAP_COUNT]);  /* window layout snapshots */
  #ifdef FEAT_EVAL
      dictitem_T	    tp_winvar;	    /* variable for "t:" Dictionary */
      dict_T	    tp_vars;	    /* internal variables, local to tab page */
***************
*** 2276,2291 ****
   */
  typedef struct
  {
!     buf_T	*save_buf;	/* saved curbuf */
  #ifdef FEAT_AUTOCMD
!     buf_T	*new_curbuf;	/* buffer to be used */
!     win_T	*save_curwin;	/* saved curwin, NULL if it didn't change */
!     win_T	*new_curwin;	/* new curwin if save_curwin != NULL */
!     pos_T	save_cursor;	/* saved cursor pos of save_curwin */
!     linenr_T	save_topline;	/* saved topline of save_curwin */
! # ifdef FEAT_DIFF
!     int		save_topfill;	/* saved topfill of save_curwin */
! # endif
  #endif
  } aco_save_T;
  
--- 2284,2294 ----
   */
  typedef struct
  {
!     buf_T	*save_curbuf;	/* saved curbuf */
  #ifdef FEAT_AUTOCMD
!     win_T	*save_curwin;	/* saved curwin */
!     win_T	*new_curwin;	/* new curwin */
!     buf_T	*new_curbuf;	/* new curbuf */
  #endif
  } aco_save_T;
  
*** ../vim-7.2.202/src/window.c	2009-05-21 23:25:38.000000000 +0200
--- src/window.c	2009-06-12 22:29:33.000000000 +0200
***************
*** 11,18 ****
  
  static int path_is_url __ARGS((char_u *p));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
- static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
  static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
  static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
  static void frame_setheight __ARGS((frame_T *curfrp, int height));
  #ifdef FEAT_VERTSPLIT
--- 11,18 ----
  
  static int path_is_url __ARGS((char_u *p));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
  static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
+ static void win_init_some __ARGS((win_T *newp, win_T *oldp));
  static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
  static void frame_setheight __ARGS((frame_T *curfrp, int height));
  #ifdef FEAT_VERTSPLIT
***************
*** 23,30 ****
  static void win_totop __ARGS((int size, int flags));
  static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
  static int last_window __ARGS((void));
  static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
- static win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
  static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
  static tabpage_T *alt_tabpage __ARGS((void));
  static win_T *frame2win __ARGS((frame_T *frp));
--- 23,30 ----
  static void win_totop __ARGS((int size, int flags));
  static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
  static int last_window __ARGS((void));
+ static int one_window __ARGS((void));
  static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
  static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
  static tabpage_T *alt_tabpage __ARGS((void));
  static win_T *frame2win __ARGS((frame_T *frp));
***************
*** 41,46 ****
--- 41,47 ----
  #endif
  #endif
  static int win_alloc_firstwin __ARGS((win_T *oldwin));
+ static void new_frame __ARGS((win_T *wp));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
  static tabpage_T *alloc_tabpage __ARGS((void));
  static int leave_tabpage __ARGS((buf_T *new_curbuf));
***************
*** 49,56 ****
  static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin));
  static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin));
  static void win_free __ARGS((win_T *wp, tabpage_T *tp));
- static void win_append __ARGS((win_T *, win_T *));
- static void win_remove __ARGS((win_T *, tabpage_T *tp));
  static void frame_append __ARGS((frame_T *after, frame_T *frp));
  static void frame_insert __ARGS((frame_T *before, frame_T *frp));
  static void frame_remove __ARGS((frame_T *frp));
--- 50,55 ----
***************
*** 62,78 ****
  static void frame_add_height __ARGS((frame_T *frp, int n));
  static void last_status_rec __ARGS((frame_T *fr, int statusline));
  
- static void make_snapshot __ARGS((void));
  static void make_snapshot_rec __ARGS((frame_T *fr, frame_T **frp));
! static void clear_snapshot __ARGS((tabpage_T *tp));
  static void clear_snapshot_rec __ARGS((frame_T *fr));
- static void restore_snapshot __ARGS((int close_curwin));
  static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
  static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
  
  #endif /* FEAT_WINDOWS */
  
! static win_T *win_alloc __ARGS((win_T *after));
  static void win_new_height __ARGS((win_T *, int));
  
  #define URL_SLASH	1		/* path_is_url() has found "://" */
--- 61,75 ----
  static void frame_add_height __ARGS((frame_T *frp, int n));
  static void last_status_rec __ARGS((frame_T *fr, int statusline));
  
  static void make_snapshot_rec __ARGS((frame_T *fr, frame_T **frp));
! static void clear_snapshot __ARGS((tabpage_T *tp, int idx));
  static void clear_snapshot_rec __ARGS((frame_T *fr));
  static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
  static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
  
  #endif /* FEAT_WINDOWS */
  
! static win_T *win_alloc __ARGS((win_T *after, int hidden));
  static void win_new_height __ARGS((win_T *, int));
  
  #define URL_SLASH	1		/* path_is_url() has found "://" */
***************
*** 259,265 ****
  /* cursor to previous window with wrap around */
      case 'W':
  		CHECK_CMDWIN
! 		if (lastwin == firstwin && Prenum != 1)	/* just one window */
  		    beep_flush();
  		else
  		{
--- 256,262 ----
  /* cursor to previous window with wrap around */
      case 'W':
  		CHECK_CMDWIN
! 		if (firstwin == lastwin && Prenum != 1)	/* just one window */
  		    beep_flush();
  		else
  		{
***************
*** 343,349 ****
  
  /* move window to new tab page */
      case 'T':
! 		if (firstwin == lastwin)
  		    MSG(_(m_onlyone));
  		else
  		{
--- 340,346 ----
  
  /* move window to new tab page */
      case 'T':
! 		if (one_window())
  		    MSG(_(m_onlyone));
  		else
  		{
***************
*** 679,687 ****
      /* When creating the help window make a snapshot of the window layout.
       * Otherwise clear the snapshot, it's now invalid. */
      if (flags & WSP_HELP)
! 	make_snapshot();
      else
! 	clear_snapshot(curtab);
  
      return win_split_ins(size, flags, NULL, 0);
  }
--- 676,684 ----
      /* When creating the help window make a snapshot of the window layout.
       * Otherwise clear the snapshot, it's now invalid. */
      if (flags & WSP_HELP)
! 	make_snapshot(SNAP_HELP_IDX);
      else
! 	clear_snapshot(curtab, SNAP_HELP_IDX);
  
      return win_split_ins(size, flags, NULL, 0);
  }
***************
*** 692,698 ****
   * top/left/right/bottom.
   * return FAIL for failure, OK otherwise
   */
!     static int
  win_split_ins(size, flags, newwin, dir)
      int		size;
      int		flags;
--- 689,695 ----
   * top/left/right/bottom.
   * return FAIL for failure, OK otherwise
   */
!     int
  win_split_ins(size, flags, newwin, dir)
      int		size;
      int		flags;
***************
*** 893,906 ****
      {
  	/* new window below/right of current one */
  	if (newwin == NULL)
! 	    wp = win_alloc(oldwin);
  	else
  	    win_append(oldwin, wp);
      }
      else
      {
  	if (newwin == NULL)
! 	    wp = win_alloc(oldwin->w_prev);
  	else
  	    win_append(oldwin->w_prev, wp);
      }
--- 890,903 ----
      {
  	/* new window below/right of current one */
  	if (newwin == NULL)
! 	    wp = win_alloc(oldwin, FALSE);
  	else
  	    win_append(oldwin, wp);
      }
      else
      {
  	if (newwin == NULL)
! 	    wp = win_alloc(oldwin->w_prev, FALSE);
  	else
  	    win_append(oldwin->w_prev, wp);
      }
***************
*** 910,915 ****
--- 907,919 ----
  	if (wp == NULL)
  	    return FAIL;
  
+ 	new_frame(wp);
+ 	if (wp->w_frame == NULL)
+ 	{
+ 	    win_free(wp, NULL);
+ 	    return FAIL;
+ 	}
+ 
  	/* make the contents of the new window the same as the current one */
  	win_init(wp, curwin, flags);
      }
***************
*** 970,982 ****
      }
  
      if (newwin == NULL)
!     {
! 	/* Create a frame for the new window. */
! 	frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
! 	frp->fr_layout = FR_LEAF;
! 	frp->fr_win = wp;
! 	wp->w_frame = frp;
!     }
      else
  	frp = newwin->w_frame;
      frp->fr_parent = curfrp->fr_parent;
--- 974,980 ----
      }
  
      if (newwin == NULL)
! 	frp = wp->w_frame;
      else
  	frp = newwin->w_frame;
      frp->fr_parent = curfrp->fr_parent;
***************
*** 1156,1161 ****
--- 1154,1160 ----
      return OK;
  }
  
+ 
  /*
   * Initialize window "newp" from window "oldp".
   * Used when splitting a window and when creating a new tab page.
***************
*** 1204,1217 ****
      if (oldp->w_localdir != NULL)
  	newp->w_localdir = vim_strsave(oldp->w_localdir);
  
!     /* Use the same argument list. */
!     newp->w_alist = oldp->w_alist;
!     ++newp->w_alist->al_refcount;
!     newp->w_arg_idx = oldp->w_arg_idx;
! 
!     /*
!      * copy tagstack and options from existing window
!      */
      for (i = 0; i < oldp->w_tagstacklen; i++)
      {
  	newp->w_tagstack[i] = oldp->w_tagstack[i];
--- 1203,1209 ----
      if (oldp->w_localdir != NULL)
  	newp->w_localdir = vim_strsave(oldp->w_localdir);
  
!     /* copy tagstack and folds */
      for (i = 0; i < oldp->w_tagstacklen; i++)
      {
  	newp->w_tagstack[i] = oldp->w_tagstack[i];
***************
*** 1221,1230 ****
      }
      newp->w_tagstackidx = oldp->w_tagstackidx;
      newp->w_tagstacklen = oldp->w_tagstacklen;
-     win_copy_options(oldp, newp);
  # ifdef FEAT_FOLDING
      copyFoldingState(oldp, newp);
  # endif
  }
  
  #endif /* FEAT_WINDOWS */
--- 1213,1241 ----
      }
      newp->w_tagstackidx = oldp->w_tagstackidx;
      newp->w_tagstacklen = oldp->w_tagstacklen;
  # ifdef FEAT_FOLDING
      copyFoldingState(oldp, newp);
  # endif
+ 
+     win_init_some(newp, oldp);
+ }
+ 
+ /*
+  * Initialize window "newp" from window"old".
+  * Only the essential things are copied.
+  */
+     static void
+ win_init_some(newp, oldp)
+     win_T	*newp;
+     win_T	*oldp;
+ {
+     /* Use the same argument list. */
+     newp->w_alist = oldp->w_alist;
+     ++newp->w_alist->al_refcount;
+     newp->w_arg_idx = oldp->w_arg_idx;
+ 
+     /* copy options from existing window */
+     win_copy_options(oldp, newp);
  }
  
  #endif /* FEAT_WINDOWS */
***************
*** 1565,1579 ****
  #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
      /* When 'guioptions' includes 'L' or 'R' may have to remove or add
       * scrollbars.  Have to update them anyway. */
!     if (gui.in_use)
!     {
! 	out_flush();
! 	gui_init_which_components(NULL);
! 	gui_update_scrollbars(TRUE);
!     }
!     need_mouse_correct = TRUE;
  #endif
- 
  }
  
  /*
--- 1576,1583 ----
  #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
      /* When 'guioptions' includes 'L' or 'R' may have to remove or add
       * scrollbars.  Have to update them anyway. */
!     gui_may_update_scrollbars();
  #endif
  }
  
  /*
***************
*** 2048,2060 ****
  }
  
  /*
!  * Return TRUE if the current window is the only window that exists.
   * Returns FALSE if there is a window, possibly in another tab page.
   */
      static int
  last_window()
  {
!     return (lastwin == firstwin && first_tabpage->tp_next == NULL);
  }
  
  /*
--- 2052,2091 ----
  }
  
  /*
!  * Return TRUE if the current window is the only window that exists (ignoring
!  * "aucmd_win").
   * Returns FALSE if there is a window, possibly in another tab page.
   */
      static int
  last_window()
  {
!     return (one_window() && first_tabpage->tp_next == NULL);
! }
! 
! /*
!  * Return TRUE if there is only one window other than "aucmd_win" in the
!  * current tab page.
!  */
!     static int
! one_window()
! {
! #ifdef FEAT_AUTOCMD
!     win_T	*wp;
!     int		seen_one = FALSE;
! 
!     FOR_ALL_WINDOWS(wp)
!     {
! 	if (wp != aucmd_win)
! 	{
! 	    if (seen_one)
! 		return FALSE;
! 	    seen_one = TRUE;
! 	}
!     }
!     return TRUE;
! #else
!     return firstwin == lastwin;
! #endif
  }
  
  /*
***************
*** 2083,2088 ****
--- 2114,2132 ----
  	return;
      }
  
+ #ifdef FEAT_AUTOCMD
+     if (win == aucmd_win)
+     {
+ 	EMSG(_("E813: Cannot close autocmd window"));
+ 	return;
+     }
+     if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
+     {
+ 	EMSG(_("E814: Cannot close window, only autocmd window would remain"));
+ 	return;
+     }
+ #endif
+ 
      /*
       * When closing the last window in a tab page first go to another tab
       * page and then close the window and the tab page.  This avoids that
***************
*** 2112,2118 ****
      if (win->w_buffer->b_help)
  	help_window = TRUE;
      else
! 	clear_snapshot(curtab);
  
  #ifdef FEAT_AUTOCMD
      if (win == curwin)
--- 2156,2162 ----
      if (win->w_buffer->b_help)
  	help_window = TRUE;
      else
! 	clear_snapshot(curtab, SNAP_HELP_IDX);
  
  #ifdef FEAT_AUTOCMD
      if (win == curwin)
***************
*** 2229,2235 ****
      /* After closing the help window, try restoring the window layout from
       * before it was opened. */
      if (help_window)
! 	restore_snapshot(close_curwin);
  
  #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
      /* When 'guioptions' includes 'L' or 'R' may have to remove scrollbars. */
--- 2273,2279 ----
      /* After closing the help window, try restoring the window layout from
       * before it was opened. */
      if (help_window)
! 	restore_snapshot(SNAP_HELP_IDX, close_curwin);
  
  #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
      /* When 'guioptions' includes 'L' or 'R' may have to remove scrollbars. */
***************
*** 2344,2349 ****
--- 2388,2401 ----
  
      while (firstwin != NULL)
  	(void)win_free_mem(firstwin, &dummy, NULL);
+ 
+ # ifdef FEAT_AUTOCMD
+     if (aucmd_win != NULL)
+     {
+ 	(void)win_free_mem(aucmd_win, &dummy, NULL);
+ 	aucmd_win = NULL;
+     }
+ # endif
  }
  #endif
  
***************
*** 2351,2357 ****
   * Remove a window and its frame from the tree of frames.
   * Returns a pointer to the window that got the freed up space.
   */
!     static win_T *
  winframe_remove(win, dirp, tp)
      win_T	*win;
      int		*dirp UNUSED;	/* set to 'v' or 'h' for direction if 'ea' */
--- 2403,2409 ----
   * Remove a window and its frame from the tree of frames.
   * Returns a pointer to the window that got the freed up space.
   */
!     win_T *
  winframe_remove(win, dirp, tp)
      win_T	*win;
      int		*dirp UNUSED;	/* set to 'v' or 'h' for direction if 'ea' */
***************
*** 3090,3096 ****
      win_T	*nextwp;
      int		r;
  
!     if (lastwin == firstwin)
      {
  	if (message
  #ifdef FEAT_AUTOCMD
--- 3142,3148 ----
      win_T	*nextwp;
      int		r;
  
!     if (one_window())
      {
  	if (message
  #ifdef FEAT_AUTOCMD
***************
*** 3194,3202 ****
--- 3246,3275 ----
      first_tabpage->tp_topframe = topframe;
      curtab = first_tabpage;
  #endif
+ 
      return OK;
  }
  
+ #if defined(FEAT_AUTOCMD) || defined(PROTO)
+ /*
+  * Init "aucmd_win".  This can only be done after the first
+  * window is fully initialized, thus it can't be in win_alloc_first().
+  */
+     void
+ win_alloc_aucmd_win()
+ {
+     aucmd_win = win_alloc(NULL, TRUE);
+     if (aucmd_win != NULL)
+     {
+ 	win_init_some(aucmd_win, curwin);
+ # ifdef FEAT_SCROLLBIND
+ 	aucmd_win->w_p_scb = FALSE;
+ # endif
+ 	new_frame(aucmd_win);
+     }
+ }
+ #endif
+ 
  /*
   * Allocate the first window or the first window in a new tab page.
   * When "oldwin" is NULL create an empty buffer for it.
***************
*** 3208,3214 ****
  win_alloc_firstwin(oldwin)
      win_T	*oldwin;
  {
!     curwin = win_alloc(NULL);
      if (oldwin == NULL)
      {
  	/* Very first window, need to create an empty buffer for it and
--- 3281,3287 ----
  win_alloc_firstwin(oldwin)
      win_T	*oldwin;
  {
!     curwin = win_alloc(NULL, FALSE);
      if (oldwin == NULL)
      {
  	/* Very first window, need to create an empty buffer for it and
***************
*** 3236,3256 ****
      }
  #endif
  
!     topframe = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
!     if (topframe == NULL)
  	return FAIL;
!     topframe->fr_layout = FR_LEAF;
  #ifdef FEAT_VERTSPLIT
      topframe->fr_width = Columns;
  #endif
      topframe->fr_height = Rows - p_ch;
      topframe->fr_win = curwin;
-     curwin->w_frame = topframe;
  
      return OK;
  }
  
  /*
   * Initialize the window and frame size to the maximum.
   */
      void
--- 3309,3344 ----
      }
  #endif
  
!     new_frame(curwin);
!     if (curwin->w_frame == NULL)
  	return FAIL;
!     topframe = curwin->w_frame;
  #ifdef FEAT_VERTSPLIT
      topframe->fr_width = Columns;
  #endif
      topframe->fr_height = Rows - p_ch;
      topframe->fr_win = curwin;
  
      return OK;
  }
  
  /*
+  * Create a frame for window "wp".
+  */
+     static void
+ new_frame(win_T *wp)
+ {
+     frame_T *frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+ 
+     wp->w_frame = frp;
+     if (frp != NULL)
+     {
+ 	frp->fr_layout = FR_LEAF;
+ 	frp->fr_win = wp;
+     }
+ }
+ 
+ /*
   * Initialize the window and frame size to the maximum.
   */
      void
***************
*** 3300,3309 ****
  free_tabpage(tp)
      tabpage_T	*tp;
  {
  # ifdef FEAT_DIFF
      diff_clear(tp);
  # endif
!     clear_snapshot(tp);
  #ifdef FEAT_EVAL
      vars_clear(&tp->tp_vars.dv_hashtab);	/* free all t: variables */
  #endif
--- 3388,3400 ----
  free_tabpage(tp)
      tabpage_T	*tp;
  {
+     int idx;
+ 
  # ifdef FEAT_DIFF
      diff_clear(tp);
  # endif
!     for (idx = 0; idx < SNAP_COUNT; ++idx)
! 	clear_snapshot(tp, idx);
  #ifdef FEAT_EVAL
      vars_clear(&tp->tp_vars.dv_hashtab);	/* free all t: variables */
  #endif
***************
*** 3370,3381 ****
  #if defined(FEAT_GUI)
  	/* When 'guioptions' includes 'L' or 'R' may have to remove or add
  	 * scrollbars.  Have to update them anyway. */
! 	if (gui.in_use && starting == 0)
! 	{
! 	    gui_init_which_components(NULL);
! 	    gui_update_scrollbars(TRUE);
! 	}
! 	need_mouse_correct = TRUE;
  #endif
  
  	redraw_all_later(CLEAR);
--- 3461,3467 ----
  #if defined(FEAT_GUI)
  	/* When 'guioptions' includes 'L' or 'R' may have to remove or add
  	 * scrollbars.  Have to update them anyway. */
! 	gui_may_update_scrollbars();
  #endif
  
  	redraw_all_later(CLEAR);
***************
*** 3593,3604 ****
  #if defined(FEAT_GUI)
      /* When 'guioptions' includes 'L' or 'R' may have to remove or add
       * scrollbars.  Have to update them anyway. */
!     if (gui.in_use && starting == 0)
!     {
! 	gui_init_which_components(NULL);
! 	gui_update_scrollbars(TRUE);
!     }
!     need_mouse_correct = TRUE;
  #endif
  
      redraw_all_later(CLEAR);
--- 3679,3685 ----
  #if defined(FEAT_GUI)
      /* When 'guioptions' includes 'L' or 'R' may have to remove or add
       * scrollbars.  Have to update them anyway. */
!     gui_may_update_scrollbars();
  #endif
  
      redraw_all_later(CLEAR);
***************
*** 4150,4160 ****
  #endif
  
  /*
!  * allocate a window structure and link it in the window list
   */
      static win_T *
! win_alloc(after)
      win_T	*after UNUSED;
  {
      win_T	*newwin;
  
--- 4231,4243 ----
  #endif
  
  /*
!  * Allocate a window structure and link it in the window list when "hidden" is
!  * FALSE.
   */
      static win_T *
! win_alloc(after, hidden)
      win_T	*after UNUSED;
+     int		hidden UNUSED;
  {
      win_T	*newwin;
  
***************
*** 4180,4186 ****
  	 * link the window in the window list
  	 */
  #ifdef FEAT_WINDOWS
! 	win_append(after, newwin);
  #endif
  #ifdef FEAT_VERTSPLIT
  	newwin->w_wincol = 0;
--- 4263,4270 ----
  	 * link the window in the window list
  	 */
  #ifdef FEAT_WINDOWS
! 	if (!hidden)
! 	    win_append(after, newwin);
  #endif
  #ifdef FEAT_VERTSPLIT
  	newwin->w_wincol = 0;
***************
*** 4314,4320 ****
  /*
   * Append window "wp" in the window list after window "after".
   */
!     static void
  win_append(after, wp)
      win_T	*after, *wp;
  {
--- 4398,4404 ----
  /*
   * Append window "wp" in the window list after window "after".
   */
!     void
  win_append(after, wp)
      win_T	*after, *wp;
  {
***************
*** 4340,4346 ****
  /*
   * Remove a window from the window list.
   */
!     static void
  win_remove(wp, tp)
      win_T	*wp;
      tabpage_T	*tp;		/* tab page "win" is in, NULL for current */
--- 4424,4430 ----
  /*
   * Remove a window from the window list.
   */
!     void
  win_remove(wp, tp)
      win_T	*wp;
      tabpage_T	*tp;		/* tab page "win" is in, NULL for current */
***************
*** 6040,6045 ****
--- 6124,6130 ----
  /*
   * Return TRUE if there is only one window (in the current tab page), not
   * counting a help or preview window, unless it is the current window.
+  * Does not count "aucmd_win".
   */
      int
  only_one_window()
***************
*** 6053,6063 ****
  	return FALSE;
  
      for (wp = firstwin; wp != NULL; wp = wp->w_next)
! 	if (!((wp->w_buffer->b_help && !curbuf->b_help)
  # ifdef FEAT_QUICKFIX
  		    || wp->w_p_pvw
  # endif
  	     ) || wp == curwin)
  	    ++count;
      return (count <= 1);
  #else
--- 6138,6152 ----
  	return FALSE;
  
      for (wp = firstwin; wp != NULL; wp = wp->w_next)
! 	if ((!((wp->w_buffer->b_help && !curbuf->b_help)
  # ifdef FEAT_QUICKFIX
  		    || wp->w_p_pvw
  # endif
  	     ) || wp == curwin)
+ # ifdef FEAT_AUTOCMD
+ 		&& wp != aucmd_win
+ # endif
+ 	   )
  	    ++count;
      return (count <= 1);
  #else
***************
*** 6112,6122 ****
  /*
   * Create a snapshot of the current frame sizes.
   */
!     static void
! make_snapshot()
  {
!     clear_snapshot(curtab);
!     make_snapshot_rec(topframe, &curtab->tp_snapshot);
  }
  
      static void
--- 6201,6212 ----
  /*
   * Create a snapshot of the current frame sizes.
   */
!     void
! make_snapshot(idx)
!     int idx;
  {
!     clear_snapshot(curtab, idx);
!     make_snapshot_rec(topframe, &curtab->tp_snapshot[idx]);
  }
  
      static void
***************
*** 6144,6154 ****
   * Remove any existing snapshot.
   */
      static void
! clear_snapshot(tp)
      tabpage_T	*tp;
  {
!     clear_snapshot_rec(tp->tp_snapshot);
!     tp->tp_snapshot = NULL;
  }
  
      static void
--- 6234,6245 ----
   * Remove any existing snapshot.
   */
      static void
! clear_snapshot(tp, idx)
      tabpage_T	*tp;
+     int		idx;
  {
!     clear_snapshot_rec(tp->tp_snapshot[idx]);
!     tp->tp_snapshot[idx] = NULL;
  }
  
      static void
***************
*** 6168,6193 ****
   * This is only done if the screen size didn't change and the window layout is
   * still the same.
   */
!     static void
! restore_snapshot(close_curwin)
      int		close_curwin;	    /* closing current window */
  {
      win_T	*wp;
  
!     if (curtab->tp_snapshot != NULL
  # ifdef FEAT_VERTSPLIT
! 	    && curtab->tp_snapshot->fr_width == topframe->fr_width
  # endif
! 	    && curtab->tp_snapshot->fr_height == topframe->fr_height
! 	    && check_snapshot_rec(curtab->tp_snapshot, topframe) == OK)
      {
! 	wp = restore_snapshot_rec(curtab->tp_snapshot, topframe);
  	win_comp_pos();
  	if (wp != NULL && close_curwin)
  	    win_goto(wp);
  	redraw_all_later(CLEAR);
      }
!     clear_snapshot(curtab);
  }
  
  /*
--- 6259,6285 ----
   * This is only done if the screen size didn't change and the window layout is
   * still the same.
   */
!     void
! restore_snapshot(idx, close_curwin)
!     int		idx;
      int		close_curwin;	    /* closing current window */
  {
      win_T	*wp;
  
!     if (curtab->tp_snapshot[idx] != NULL
  # ifdef FEAT_VERTSPLIT
! 	    && curtab->tp_snapshot[idx]->fr_width == topframe->fr_width
  # endif
! 	    && curtab->tp_snapshot[idx]->fr_height == topframe->fr_height
! 	    && check_snapshot_rec(curtab->tp_snapshot[idx], topframe) == OK)
      {
! 	wp = restore_snapshot_rec(curtab->tp_snapshot[idx], topframe);
  	win_comp_pos();
  	if (wp != NULL && close_curwin)
  	    win_goto(wp);
  	redraw_all_later(CLEAR);
      }
!     clear_snapshot(curtab, idx);
  }
  
  /*
*** ../vim-7.2.202/src/version.c	2009-06-16 15:35:46.000000000 +0200
--- src/version.c	2009-06-16 15:37:16.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     203,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
15. Five days in advance, tell your friends you can't attend their
    party because you're not in the mood.

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


--- NEW FILE 7.2.204 ---
To: vim-dev at vim.org
Subject: Patch 7.2.204 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.204 (extra)
Problem:    Win32: Can't build with Visual Studio 2010 beta 1.
Solution:   Fix the makefile. (George Reilly)
Files:	    src/Make_mvc.mak


*** ../vim-7.2.203/src/Make_mvc.mak	2009-05-26 22:58:43.000000000 +0200
--- src/Make_mvc.mak	2009-06-16 16:27:59.000000000 +0200
***************
*** 1,18 ****
  # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
  # and Win64, using the Microsoft Visual C++ compilers. Known to work with
  # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
! # and VC9 (VS2008).
  #
  # To build using other Windows compilers, see INSTALLpc.txt
  #
  # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
! # Python-enabled versions of vim for Win32 platforms.
  #
! # The basic command line to build vim is:
  #
  #	nmake -f Make_mvc.mak
  #
! # This will build the console version of vim with no additional interfaces.
  # To add features, define any of the following:
  #
  #	!!!!  After changing features do "nmake clean" first  !!!!
--- 1,18 ----
  # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
  # and Win64, using the Microsoft Visual C++ compilers. Known to work with
  # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
! # VC9 (VS2008), and VC10 (VS2010).
  #
  # To build using other Windows compilers, see INSTALLpc.txt
  #
  # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
! # Python-enabled versions of Vim for Win32 platforms.
  #
! # The basic command line to build Vim is:
  #
  #	nmake -f Make_mvc.mak
  #
! # This will build the console version of Vim with no additional interfaces.
  # To add features, define any of the following:
  #
  #	!!!!  After changing features do "nmake clean" first  !!!!
***************
*** 358,363 ****
--- 358,366 ----
  !if "$(_NMAKE_VER)" == "9.00.30729.01"
  MSVCVER = 9.0
  !endif
+ !if "$(_NMAKE_VER)" == "10.00.20506.01"
+ MSVCVER = 10.0
+ !endif
  !endif
  
  # Abort bulding VIM if version of VC is unrecognised.
***************
*** 372,378 ****
  !endif
  
  # Convert processor ID to MVC-compatible number
! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0")
  !if "$(CPUNR)" == "i386"
  CPUARG = /G3
  !elseif "$(CPUNR)" == "i486"
--- 375,381 ----
  !endif
  
  # Convert processor ID to MVC-compatible number
! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0")
  !if "$(CPUNR)" == "i386"
  CPUARG = /G3
  !elseif "$(CPUNR)" == "i486"
***************
*** 405,411 ****
  !else # MAXSPEED
  OPTFLAG = /Ox
  !endif
! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
  # Use link time code generation if not worried about size
  !if "$(OPTIMIZE)" != "SPACE"
  OPTFLAG = $(OPTFLAG) /GL
--- 408,414 ----
  !else # MAXSPEED
  OPTFLAG = /Ox
  !endif
! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
  # Use link time code generation if not worried about size
  !if "$(OPTIMIZE)" != "SPACE"
  OPTFLAG = $(OPTFLAG) /GL
***************
*** 793,799 ****
  
  # Report link time code generation progress if used. 
  !ifdef NODEBUG
! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
  !if "$(OPTIMIZE)" != "SPACE"
  LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
  !endif
--- 796,802 ----
  
  # Report link time code generation progress if used. 
  !ifdef NODEBUG
! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
  !if "$(OPTIMIZE)" != "SPACE"
  LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
  !endif
*** ../vim-7.2.203/src/version.c	2009-06-16 16:01:34.000000000 +0200
--- src/version.c	2009-06-16 16:32:41.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     204,
  /**/

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

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


--- NEW FILE 7.2.205 ---
To: vim-dev at vim.org
Subject: Patch 7.2.205 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.205 (extra)
Problem:    Win32: No support for High DPI awarenes.
Solution:   Fix the manifest file. (George Reilly)
Files:	    src/Make_mvc.mak, src/gvim.exe.mnf


*** ../vim-7.2.204/src/Make_mvc.mak	2009-06-16 16:34:12.000000000 +0200
--- src/Make_mvc.mak	2009-06-16 16:36:32.000000000 +0200
***************
*** 1040,1046 ****
  $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
  	$(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
  
! $(OUTDIR)/vim.res:	$(OUTDIR) vim.rc version.h tools.bmp tearoff.bmp \
  		vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
  	$(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
  
--- 1040,1046 ----
  $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
  	$(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
  
! $(OUTDIR)/vim.res:	$(OUTDIR) vim.rc gvim.exe.mnf version.h tools.bmp tearoff.bmp \
  		vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
  	$(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
  
*** ../vim-7.2.204/src/gvim.exe.mnf	2008-08-09 19:37:29.000000000 +0200
--- src/gvim.exe.mnf	2009-06-16 16:36:32.000000000 +0200
***************
*** 1,5 ****
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
! <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
      processorArchitecture="*"
      version="7.2.0.0"
--- 1,5 ----
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
! <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
    <assemblyIdentity
      processorArchitecture="*"
      version="7.2.0.0"
***************
*** 29,32 ****
--- 29,38 ----
        </requestedPrivileges>
      </security>
    </trustInfo>
+   <!-- Vista High DPI aware -->
+   <asmv3:application>
+     <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+       <dpiAware>true</dpiAware>
+     </asmv3:windowsSettings>
+   </asmv3:application>
  </assembly>
*** ../vim-7.2.204/src/version.c	2009-06-16 16:34:12.000000000 +0200
--- src/version.c	2009-06-16 16:43:04.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     205,
  /**/

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

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


--- NEW FILE 7.2.206 ---
To: vim-dev at vim.org
Subject: Patch 7.2.206
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.206
Problem:    Win32: Can't build netbeans interface with Visual Studio 2010.
Solution:   Undefine ECONNREFUSED. (George Reilly)
Files:	    src/netbeans.c


*** ../vim-7.2.205/src/netbeans.c	2009-05-17 23:25:16.000000000 +0200
--- src/netbeans.c	2009-06-16 16:39:17.000000000 +0200
***************
*** 32,37 ****
--- 32,38 ----
  /* WinSock API is separated from C API, thus we can't use read(), write(),
   * errno... */
  # define sock_errno WSAGetLastError()
+ # undef ECONNREFUSED
  # define ECONNREFUSED WSAECONNREFUSED
  # ifdef EINTR
  #  undef EINTR
*** ../vim-7.2.205/src/version.c	2009-06-16 16:45:14.000000000 +0200
--- src/version.c	2009-06-16 16:57:45.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     206,
  /**/

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

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


--- NEW FILE 7.2.207 ---
To: vim-dev at vim.org
Subject: Patch 7.2.207
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.207
Problem:    Using freed memory with ":redrawstatus" when it works recursively.
Solution:   Prevent recursively updating the status line. (partly by Dominique
	    Pelle)
Files:	    src/screen.c


*** ../vim-7.2.206/src/screen.c	2009-06-16 16:01:34.000000000 +0200
--- src/screen.c	2009-06-16 17:04:53.000000000 +0200
***************
*** 5743,5748 ****
--- 5743,5755 ----
      int		fillchar;
      int		attr;
      int		this_ru_col;
+     static int  busy = FALSE;
+ 
+     /* It's possible to get here recursively when 'statusline' (indirectly)
+      * invokes ":redrawstatus".  Simply ignore the call then. */
+     if (busy)
+ 	return;
+     busy = TRUE;
  
      wp->w_redr_status = FALSE;
      if (wp->w_status_height == 0)
***************
*** 5881,5886 ****
--- 5888,5894 ----
  									attr);
      }
  #endif
+     busy = FALSE;
  }
  
  #ifdef FEAT_STL_OPT
*** ../vim-7.2.206/src/version.c	2009-06-16 16:57:53.000000000 +0200
--- src/version.c	2009-06-16 17:21:56.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     207,
  /**/

-- 
In many of the more relaxed civilizations on the Outer Eastern Rim of the
Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the
great "Encyclopedia Galactica" as the standard repository of all knowledge
and wisdom, for though it has many omissions and contains much that is
apocryphal, or at least wildly inaccurate, it scores over the older, more
pedestrian work in two important respects.
First, it is slightly cheaper; and second, it has the words "DON'T PANIC"
inscribed in large friendly letters on its cover.
		-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

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


--- NEW FILE 7.2.208 ---
To: vim-dev at vim.org
Subject: Patch 7.2.208
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.208
Problem:    "set novice" gives an error message, it should be ignored.
Solution:   Don't see "no" in "novice" as unsetting an option.  (Patrick
	    Texier)
Files:	    src/option.c


*** ../vim-7.2.207/src/option.c	2009-06-16 15:23:07.000000000 +0200
--- src/option.c	2009-06-16 17:35:08.000000000 +0200
***************
*** 4006,4012 ****
  	else
  	{
  	    prefix = 1;
! 	    if (STRNCMP(arg, "no", 2) == 0)
  	    {
  		prefix = 0;
  		arg += 2;
--- 4006,4012 ----
  	else
  	{
  	    prefix = 1;
! 	    if (STRNCMP(arg, "no", 2) == 0 && STRNCMP(arg, "novice", 6) != 0)
  	    {
  		prefix = 0;
  		arg += 2;
***************
*** 9757,9763 ****
  	}
  	--p;
      }
!     if (STRNCMP(p, "no", 2) == 0)
      {
  	xp->xp_context = EXPAND_BOOL_SETTINGS;
  	p += 2;
--- 9757,9763 ----
  	}
  	--p;
      }
!     if (STRNCMP(p, "no", 2) == 0 && STRNCMP(p, "novice", 6) != 0)
      {
  	xp->xp_context = EXPAND_BOOL_SETTINGS;
  	p += 2;
*** ../vim-7.2.207/src/version.c	2009-06-16 17:22:38.000000000 +0200
--- src/version.c	2009-06-16 17:50:33.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     208,
  /**/

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

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


--- NEW FILE 7.2.209 ---
To: vim-dev at vim.org
Subject: Patch 7.2.209
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.209
Problem:    For xxd setmode() is undefined on Cygwin.
Solution:   Include io.h. (Dominique Pelle)
Files:	    src/xxd/xxd.c


*** ../vim-7.2.208/src/xxd/xxd.c	2007-12-03 21:32:21.000000000 +0100
--- src/xxd/xxd.c	2009-06-16 18:03:14.000000000 +0200
***************
*** 64,69 ****
--- 64,72 ----
  # define _CRT_SECURE_NO_DEPRECATE
  # define _CRT_NONSTDC_NO_DEPRECATE
  #endif
+ #if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
+ # define CYGWIN
+ #endif
  
  #include <stdio.h>
  #ifdef VAXC
***************
*** 77,83 ****
  #if !defined(OS2) && defined(__EMX__)
  # define OS2
  #endif
! #if defined(MSDOS) || defined(WIN32) || defined(OS2) || defined(__BORLANDC__)
  # include <io.h>	/* for setmode() */
  #else
  # ifdef UNIX
--- 80,87 ----
  #if !defined(OS2) && defined(__EMX__)
  # define OS2
  #endif
! #if defined(MSDOS) || defined(WIN32) || defined(OS2) || defined(__BORLANDC__) \
!   || defined(CYGWIN)
  # include <io.h>	/* for setmode() */
  #else
  # ifdef UNIX
***************
*** 150,158 ****
  # endif
  #endif
  
- #if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
- # define CYGWIN
- #endif
  #if defined(MSDOS) || defined(WIN32) || defined(OS2)
  # define BIN_READ(yes)  ((yes) ? "rb" : "rt")
  # define BIN_WRITE(yes) ((yes) ? "wb" : "wt")
--- 154,159 ----
*** ../vim-7.2.208/src/version.c	2009-06-16 17:50:56.000000000 +0200
--- src/version.c	2009-06-16 18:16:08.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     209,
  /**/

-- 
"So this is it," said Arthur, "we are going to die."
"Yes," said Ford, "except...no!  Wait a minute!"  He suddenly lunged across
the chamber at something behind Arthur's line of vision.  "What's this
switch?" he cried.
"What?   Where?" cried Arthur, twisting around.
"No, I was only fooling," said Ford, "we are going to die after all."
		-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

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


--- NEW FILE 7.2.210 ---
To: vim-dev at vim.org
Subject: Patch 7.2.210
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.210
Problem:    When a file that is being edited has its timestamp updated outside
	    of Vim and ":checktime" is used still get a warning when writing
	    the file. (Matt Mueller)
Solution:   Store the timestamp in b_mtime_read when the timestamp is the only
	    thing that changed.
Files:	    src/fileio.c


*** ../vim-7.2.209/src/fileio.c	2009-06-16 16:01:34.000000000 +0200
--- src/fileio.c	2009-06-20 13:29:41.000000000 +0200
***************
*** 6627,6633 ****
  			mesg = _("W16: Warning: Mode of file \"%s\" has changed since editing started");
  			mesg2 = _("See \":help W16\" for more info.");
  		    }
! 		    /* Else: only timestamp changed, ignored */
  		}
  	    }
  	}
--- 6627,6636 ----
  			mesg = _("W16: Warning: Mode of file \"%s\" has changed since editing started");
  			mesg2 = _("See \":help W16\" for more info.");
  		    }
! 		    else
! 			/* Only timestamp changed, store it to avoid a warning
! 			 * in check_mtime() later. */
! 			buf->b_mtime_read = buf->b_mtime;
  		}
  	    }
  	}
*** ../vim-7.2.209/src/version.c	2009-06-16 18:29:37.000000000 +0200
--- src/version.c	2009-06-24 11:57:08.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     210,
  /**/

-- 
Have you heard about the new Beowulf cluster? It's so fast, it executes
an infinite loop in 6 seconds.

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


--- NEW FILE 7.2.211 ---
To: vim-dev at vim.org
Subject: Patch 7.2.211
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.211
Problem:    Memory leak when expanding a series of file names.
Solution:   Use ga_clear_strings() instead of ga_clear().
Files:	    src/misc1.c


*** ../vim-7.2.210/src/misc1.c	2009-05-17 13:30:58.000000000 +0200
--- src/misc1.c	2009-06-24 16:16:17.000000000 +0200
***************
*** 9193,9199 ****
  		else if (vim_strpbrk(p, (char_u *)"$~") != NULL)
  		{
  		    vim_free(p);
! 		    ga_clear(&ga);
  		    i = mch_expand_wildcards(num_pat, pat, num_file, file,
  								       flags);
  		    recursive = FALSE;
--- 9193,9199 ----
  		else if (vim_strpbrk(p, (char_u *)"$~") != NULL)
  		{
  		    vim_free(p);
! 		    ga_clear_strings(&ga);
  		    i = mch_expand_wildcards(num_pat, pat, num_file, file,
  								       flags);
  		    recursive = FALSE;
*** ../vim-7.2.210/src/version.c	2009-06-24 11:57:53.000000000 +0200
--- src/version.c	2009-06-24 16:24:32.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     211,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
34. You laugh at people with 14400 baud modems.

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


--- NEW FILE 7.2.212 ---
To: vim-dev at vim.org
Subject: Patch 7.2.212 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.212 (extra)
Problem:    Warnings for redefining SIG macros.
Solution:   Don't define them if already defined. (Bjorn Winckler)
Files:	    src/os_mac.h


*** ../vim-7.2.211/src/os_mac.h	2008-06-24 22:27:34.000000000 +0200
--- src/os_mac.h	2009-06-19 21:21:57.000000000 +0200
***************
*** 268,276 ****
   */
  
  #ifdef MACOS_X_UNIX
! # define SIGPROTOARG	(int)
! # define SIGDEFARG(s)	(s) int s;
! # define SIGDUMMYARG	0
  # undef  HAVE_AVAIL_MEM
  # ifndef HAVE_CONFIG_H
  #  define RETSIGTYPE void
--- 268,282 ----
   */
  
  #ifdef MACOS_X_UNIX
! # ifndef SIGPROTOARG
! #  define SIGPROTOARG	(int)
! # endif
! # ifndef SIGDEFARG
! #  define SIGDEFARG(s)	(s) int s UNUSED;
! # endif
! # ifndef SIGDUMMYARG
! #  define SIGDUMMYARG	0
! # endif
  # undef  HAVE_AVAIL_MEM
  # ifndef HAVE_CONFIG_H
  #  define RETSIGTYPE void
*** ../vim-7.2.211/src/version.c	2009-06-24 16:25:23.000000000 +0200
--- src/version.c	2009-06-24 16:40:18.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     212,
  /**/

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

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


--- NEW FILE 7.2.213 ---
To: vim-dev at vim.org
Subject: Patch 7.2.213
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.213
Problem:    Warning for using vsprintf().
Solution:   Use vim_vsnprintf().
Files:	    src/netbeans.c


*** ../vim-7.2.212/src/netbeans.c	2009-06-16 16:57:53.000000000 +0200
--- src/netbeans.c	2009-06-24 11:26:43.000000000 +0200
***************
*** 2586,2592 ****
      va_list ap;
  
      va_start(ap, cmd);
!     vsprintf(buf, cmd, ap);
      va_end(ap);
  
      nbdebug(("    COLONCMD %s\n", buf));
--- 2586,2592 ----
      va_list ap;
  
      va_start(ap, cmd);
!     vim_vsnprintf(buf, sizeof(buf), cmd, ap, NULL);
      va_end(ap);
  
      nbdebug(("    COLONCMD %s\n", buf));
*** ../vim-7.2.212/src/version.c	2009-06-24 16:41:01.000000000 +0200
--- src/version.c	2009-06-24 16:49:06.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     213,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail
    on the way back to bed.

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


--- NEW FILE 7.2.214 ---
To: vim-dev at vim.org
Subject: Patch 7.2.214
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.214
Problem:    Crash with complete function for user command. (Andy Wokula)
Solution:   Avoid using a NULL pointer (Dominique Pelle)
Files:	    src/ex_getln.c


*** ../vim-7.2.213/src/ex_getln.c	2009-05-16 17:29:37.000000000 +0200
--- src/ex_getln.c	2009-06-24 16:57:28.000000000 +0200
***************
*** 4874,4887 ****
      /* Loop over the items in the list. */
      for (li = retlist->lv_first; li != NULL; li = li->li_next)
      {
! 	if (li->li_tv.v_type != VAR_STRING)
! 	    continue;  /* Skip non-string items */
  
  	if (ga_grow(&ga, 1) == FAIL)
  	    break;
  
  	((char_u **)ga.ga_data)[ga.ga_len] =
! 	    vim_strsave(li->li_tv.vval.v_string);
  	++ga.ga_len;
      }
      list_unref(retlist);
--- 4874,4887 ----
      /* Loop over the items in the list. */
      for (li = retlist->lv_first; li != NULL; li = li->li_next)
      {
! 	if (li->li_tv.v_type != VAR_STRING || li->li_tv.vval.v_string == NULL)
! 	    continue;  /* Skip non-string items and empty strings */
  
  	if (ga_grow(&ga, 1) == FAIL)
  	    break;
  
  	((char_u **)ga.ga_data)[ga.ga_len] =
! 					 vim_strsave(li->li_tv.vval.v_string);
  	++ga.ga_len;
      }
      list_unref(retlist);
*** ../vim-7.2.213/src/version.c	2009-06-24 16:49:50.000000000 +0200
--- src/version.c	2009-06-24 17:03:58.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     214,
  /**/

-- 
He who laughs last, thinks slowest.

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


--- NEW FILE 7.2.215 ---
To: vim-dev at vim.org
Subject: Patch 7.2.215
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.215
Problem:    ml_get error when using ":vimgrep".
Solution:   Load the memfile for the hidden buffer before putting it in a
	    window.  Correct the order of splitting the window and filling
	    the window and buffer with data.
Files:	    src/fileio.c, src/proto/window.pro, src/quickfix.c, src/window.c


*** ../vim-7.2.214/src/fileio.c	2009-06-24 11:57:53.000000000 +0200
--- src/fileio.c	2009-06-24 12:53:19.000000000 +0200
***************
*** 710,716 ****
  #endif
  #ifdef UNIX
  	/* Set swap file protection bits after creating it. */
! 	if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
  	    (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
  #endif
      }
--- 710,717 ----
  #endif
  #ifdef UNIX
  	/* Set swap file protection bits after creating it. */
! 	if (swap_mode > 0 && curbuf->b_ml.ml_mfp != NULL
! 			  && curbuf->b_ml.ml_mfp->mf_fname != NULL)
  	    (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
  #endif
      }
***************
*** 8435,8443 ****
  	 * effects, insert it in a the current tab page.
  	 * Anything related to a window (e.g., setting folds) may have
  	 * unexpected results. */
! 	curwin = aucmd_win;
! 	curwin->w_buffer = buf;
  	++buf->b_nwindows;
  
  #ifdef FEAT_WINDOWS
  	/* Split the current window, put the aucmd_win in the upper half. */
--- 8436,8444 ----
  	 * effects, insert it in a the current tab page.
  	 * Anything related to a window (e.g., setting folds) may have
  	 * unexpected results. */
! 	aucmd_win->w_buffer = buf;
  	++buf->b_nwindows;
+ 	win_init_empty(aucmd_win); /* set cursor and topline to safe values */
  
  #ifdef FEAT_WINDOWS
  	/* Split the current window, put the aucmd_win in the upper half. */
***************
*** 8448,8459 ****
  	(void)win_comp_pos();   /* recompute window positions */
  	p_ea = save_ea;
  #endif
! 	/* set cursor and topline to safe values */
! 	curwin_init();
! #ifdef FEAT_VERTSPLIT
! 	curwin->w_wincol = 0;
! 	curwin->w_width = Columns;
! #endif
      }
      curbuf = buf;
      aco->new_curwin = curwin;
--- 8449,8455 ----
  	(void)win_comp_pos();   /* recompute window positions */
  	p_ea = save_ea;
  #endif
! 	curwin = aucmd_win;
      }
      curbuf = buf;
      aco->new_curwin = curwin;
*** ../vim-7.2.214/src/proto/window.pro	2009-06-16 16:01:34.000000000 +0200
--- src/proto/window.pro	2009-06-24 12:53:13.000000000 +0200
***************
*** 14,19 ****
--- 14,20 ----
  win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
  void close_others __ARGS((int message, int forceit));
  void curwin_init __ARGS((void));
+ void win_init_empty __ARGS((win_T *wp));
  int win_alloc_first __ARGS((void));
  void win_alloc_aucmd_win __ARGS((void));
  void win_init_size __ARGS((void));
*** ../vim-7.2.214/src/quickfix.c	2009-05-17 13:30:58.000000000 +0200
--- src/quickfix.c	2009-06-24 15:30:06.000000000 +0200
***************
*** 3411,3424 ****
      /* Init the options. */
      buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
  
!     /* set curwin/curbuf to buf and save a few things */
!     aucmd_prepbuf(&aco, newbuf);
  
!     /* Need to set the filename for autocommands. */
!     (void)setfname(curbuf, fname, NULL, FALSE);
  
-     if (ml_open(curbuf) == OK)
-     {
  	/* Create swap file now to avoid the ATTENTION message. */
  	check_need_swap(TRUE);
  
--- 3411,3425 ----
      /* Init the options. */
      buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
  
!     /* need to open the memfile before putting the buffer in a window */
!     if (ml_open(newbuf) == OK)
!     {
! 	/* set curwin/curbuf to buf and save a few things */
! 	aucmd_prepbuf(&aco, newbuf);
  
! 	/* Need to set the filename for autocommands. */
! 	(void)setfname(curbuf, fname, NULL, FALSE);
  
  	/* Create swap file now to avoid the ATTENTION message. */
  	check_need_swap(TRUE);
  
***************
*** 3441,3450 ****
  		newbuf = curbuf;
  	    }
  	}
-     }
  
!     /* restore curwin/curbuf and a few other things */
!     aucmd_restbuf(&aco);
  
      if (!buf_valid(newbuf))
  	return NULL;
--- 3442,3451 ----
  		newbuf = curbuf;
  	    }
  	}
  
! 	/* restore curwin/curbuf and a few other things */
! 	aucmd_restbuf(&aco);
!     }
  
      if (!buf_valid(newbuf))
  	return NULL;
*** ../vim-7.2.214/src/window.c	2009-06-16 16:01:34.000000000 +0200
--- src/window.c	2009-06-24 14:35:16.000000000 +0200
***************
*** 2354,2366 ****
      frame_T	*frp;
      win_T	*wp;
  
- #ifdef FEAT_FOLDING
-     clearFolding(win);
- #endif
- 
-     /* reduce the reference count to the argument list. */
-     alist_unlink(win->w_alist);
- 
      /* Remove the window and its frame from the tree of frames. */
      frp = win->w_frame;
      wp = winframe_remove(win, dirp, tp);
--- 2354,2359 ----
***************
*** 2386,2394 ****
  	tabpage_close(TRUE);
  # endif
  
-     while (firstwin != NULL)
- 	(void)win_free_mem(firstwin, &dummy, NULL);
- 
  # ifdef FEAT_AUTOCMD
      if (aucmd_win != NULL)
      {
--- 2379,2384 ----
***************
*** 2396,2401 ****
--- 2386,2394 ----
  	aucmd_win = NULL;
      }
  # endif
+ 
+     while (firstwin != NULL)
+ 	(void)win_free_mem(firstwin, &dummy, NULL);
  }
  #endif
  
***************
*** 3204,3230 ****
      void
  curwin_init()
  {
!     redraw_win_later(curwin, NOT_VALID);
!     curwin->w_lines_valid = 0;
!     curwin->w_cursor.lnum = 1;
!     curwin->w_curswant = curwin->w_cursor.col = 0;
  #ifdef FEAT_VIRTUALEDIT
!     curwin->w_cursor.coladd = 0;
  #endif
!     curwin->w_pcmark.lnum = 1;	/* pcmark not cleared but set to line 1 */
!     curwin->w_pcmark.col = 0;
!     curwin->w_prev_pcmark.lnum = 0;
!     curwin->w_prev_pcmark.col = 0;
!     curwin->w_topline = 1;
  #ifdef FEAT_DIFF
!     curwin->w_topfill = 0;
  #endif
!     curwin->w_botline = 2;
  #ifdef FEAT_FKMAP
!     if (curwin->w_p_rl)
! 	curwin->w_farsi = W_CONV + W_R_L;
      else
! 	curwin->w_farsi = W_CONV;
  #endif
  }
  
--- 3197,3230 ----
      void
  curwin_init()
  {
!     win_init_empty(curwin);
! }
! 
!     void
! win_init_empty(wp)
!     win_T *wp;
! {
!     redraw_win_later(wp, NOT_VALID);
!     wp->w_lines_valid = 0;
!     wp->w_cursor.lnum = 1;
!     wp->w_curswant = wp->w_cursor.col = 0;
  #ifdef FEAT_VIRTUALEDIT
!     wp->w_cursor.coladd = 0;
  #endif
!     wp->w_pcmark.lnum = 1;	/* pcmark not cleared but set to line 1 */
!     wp->w_pcmark.col = 0;
!     wp->w_prev_pcmark.lnum = 0;
!     wp->w_prev_pcmark.col = 0;
!     wp->w_topline = 1;
  #ifdef FEAT_DIFF
!     wp->w_topfill = 0;
  #endif
!     wp->w_botline = 2;
  #ifdef FEAT_FKMAP
!     if (wp->w_p_rl)
! 	wp->w_farsi = W_CONV + W_R_L;
      else
! 	wp->w_farsi = W_CONV;
  #endif
  }
  
***************
*** 4325,4330 ****
--- 4325,4337 ----
  {
      int		i;
  
+ #ifdef FEAT_FOLDING
+     clearFolding(wp);
+ #endif
+ 
+     /* reduce the reference count to the argument list. */
+     alist_unlink(wp->w_alist);
+ 
  #ifdef FEAT_AUTOCMD
      /* Don't execute autocommands while the window is halfway being deleted.
       * gui_mch_destroy_scrollbar() may trigger a FocusGained event. */
***************
*** 4387,4393 ****
      }
  #endif /* FEAT_GUI */
  
!     win_remove(wp, tp);
      vim_free(wp);
  
  #ifdef FEAT_AUTOCMD
--- 4394,4403 ----
      }
  #endif /* FEAT_GUI */
  
! #ifdef FEAT_AUTOCMD
!     if (wp != aucmd_win)
! #endif
! 	win_remove(wp, tp);
      vim_free(wp);
  
  #ifdef FEAT_AUTOCMD
*** ../vim-7.2.214/src/version.c	2009-06-24 17:04:40.000000000 +0200
--- src/version.c	2009-06-24 17:27:38.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     215,
  /**/

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

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


--- NEW FILE 7.2.216 ---
To: vim-dev at vim.org
Subject: Patch 7.2.216
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.216
Problem:    Two error messages have the same number E812.
Solution:   Give one message a different number.
Files:	    runtime/doc/autocmd.txt, runtime/doc/if_mzsch.txt, src/if_mzsch.c


*** ../vim-7.2.215/runtime/doc/autocmd.txt	2008-08-09 19:36:46.000000000 +0200
--- runtime/doc/autocmd.txt	2009-06-24 17:49:04.000000000 +0200
***************
*** 335,340 ****
--- 335,342 ----
  				NOTE: When this autocommand is executed, the
  				current buffer "%" may be different from the
  				buffer being deleted "<afile>" and "<abuf>".
+ 				Don't change to another buffer, it will cause
+ 				problems.
  							*BufEnter*
  BufEnter			After entering a buffer.  Useful for setting
  				options for a file type.  Also executed when
***************
*** 397,402 ****
--- 399,406 ----
  				NOTE: When this autocommand is executed, the
  				current buffer "%" may be different from the
  				buffer being unloaded "<afile>".
+ 				Don't change to another buffer, it will cause
+ 				problems.
  							*BufWinEnter*
  BufWinEnter			After a buffer is displayed in a window.  This
  				can be when the buffer is loaded (after
***************
*** 428,433 ****
--- 432,439 ----
  				NOTE: When this autocommand is executed, the
  				current buffer "%" may be different from the
  				buffer being deleted "<afile>".
+ 				Don't change to another buffer, it will cause
+ 				problems.
  						*BufWrite* *BufWritePre*
  BufWrite or BufWritePre		Before writing the whole buffer to a file.
  							*BufWriteCmd*
***************
*** 748,755 ****
  					'a'	abort, like hitting CTRL-C
  				When set to an empty string the user will be
  				asked, as if there was no SwapExists autocmd.
! 				Note: Do not try to change the buffer, the
! 				results are unpredictable.
  							*Syntax*
  Syntax				When the 'syntax' option has been set.  The
  				pattern is matched against the syntax name.
--- 754,763 ----
  					'a'	abort, like hitting CTRL-C
  				When set to an empty string the user will be
  				asked, as if there was no SwapExists autocmd.
! 							*E812*
! 				It is not allowed to change to another buffer,
! 				change a buffer name or change directory
! 				here.
  							*Syntax*
  Syntax				When the 'syntax' option has been set.  The
  				pattern is matched against the syntax name.
*** ../vim-7.2.215/runtime/doc/if_mzsch.txt	2009-05-26 22:58:43.000000000 +0200
--- runtime/doc/if_mzsch.txt	2009-06-24 12:08:20.000000000 +0200
***************
*** 1,4 ****
! *if_mzsch.txt*  For Vim version 7.2.  Last change: 2009 May 26
  
  
  		  VIM REFERENCE MANUAL    by Sergey Khorev
--- 1,4 ----
! *if_mzsch.txt*  For Vim version 7.2.  Last change: 2009 Jun 24
  
  
  		  VIM REFERENCE MANUAL    by Sergey Khorev
***************
*** 231,237 ****
      (set-cursor (line . col) [window])  Set cursor position.
  
  ==============================================================================
! 5. Dynamic loading				    *mzscheme-dynamic* *E812*
  
  On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
  output then includes |+mzscheme/dyn|.
--- 231,237 ----
      (set-cursor (line . col) [window])  Set cursor position.
  
  ==============================================================================
! 5. Dynamic loading				    *mzscheme-dynamic* *E815*
  
  On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
  output then includes |+mzscheme/dyn|.
*** ../vim-7.2.215/src/if_mzsch.c	2009-05-26 22:58:43.000000000 +0200
--- src/if_mzsch.c	2009-06-24 12:08:23.000000000 +0200
***************
*** 1040,1046 ****
  #ifdef DYNAMIC_MZSCHEME
  	if (!mzscheme_enabled(TRUE))
  	{
! 	    EMSG(_("E812: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
  	    return -1;
  	}
  #endif
--- 1040,1046 ----
  #ifdef DYNAMIC_MZSCHEME
  	if (!mzscheme_enabled(TRUE))
  	{
! 	    EMSG(_("E815: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
  	    return -1;
  	}
  #endif
*** ../vim-7.2.215/src/version.c	2009-06-24 17:31:27.000000000 +0200
--- src/version.c	2009-06-24 17:46:56.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     216,
  /**/

-- 
Everyone has a photographic memory. Some don't have film.

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


--- NEW FILE 7.2.217 ---
To: vim-dev at vim.org
Subject: Patch 7.2.217
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.217
Problem:    Running tests with valgrind doesn't work as advertised.
Solution:   Fix the line in the Makefile.
Files:	    src/testdir/Makefile


*** ../vim-7.2.216/src/testdir/Makefile	2009-03-11 16:26:01.000000000 +0100
--- src/testdir/Makefile	2009-06-24 14:59:42.000000000 +0200
***************
*** 4,12 ****
  
  VIMPROG = ../vim
  
! # Uncomment this line for using valgrind.
! # The output goes into a file "valgrind.$PID" (sorry, no test number).
! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --logfile=valgrind
  
  SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
  		test7.out test8.out test9.out test10.out test11.out \
--- 4,14 ----
  
  VIMPROG = ../vim
  
! # Uncomment this line to use valgrind for memory leaks and extra warnings.
! #   The output goes into a file "valgrind.testN"
! #   Vim should be compiled with EXITFREE to avoid false warnings.
! #   This will make testing about 10 times as slow.
! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --log-file=valgrind.$*
  
  SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
  		test7.out test8.out test9.out test10.out test11.out \
*** ../vim-7.2.216/src/version.c	2009-06-24 17:51:01.000000000 +0200
--- src/version.c	2009-06-24 18:07:07.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     217,
  /**/

-- 
A day without sunshine is like, well, night.

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


--- NEW FILE 7.2.218 ---
To: vim-dev at vim.org
Subject: Patch 7.2.218
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.218
Problem:    Cannot build GTK with hangul_input feature. (Dominique Pelle)
Solution:   Adjuste #ifdef.  (SungHyun Nam)
Files:	    src/gui.c


*** ../vim-7.2.217/src/gui.c	2009-06-16 16:01:34.000000000 +0200
--- src/gui.c	2009-06-24 17:45:01.000000000 +0200
***************
*** 959,965 ****
  		guicolor_T fg, bg;
  
  		if (
! # ifdef HAVE_GTK2
  			preedit_get_status()
  # else
  			im_get_status()
--- 959,965 ----
  		guicolor_T fg, bg;
  
  		if (
! # if defined(HAVE_GTK2) && !defined(FEAT_HANGULIN)
  			preedit_get_status()
  # else
  			im_get_status()
*** ../vim-7.2.217/src/version.c	2009-06-24 18:07:55.000000000 +0200
--- src/version.c	2009-06-24 18:31:06.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     218,
  /**/

-- 
The users that I support would double-click on a landmine to find out
what happens.				-- A system administrator

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


--- NEW FILE 7.2.219 ---
To: vim-dev at vim.org
Subject: Patch 7.2.219 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.219 (extra)
Problem:    Photon GUI is outdated.
Solution:   Updates for QNX 6.4.0. (Sean Boudreau)
Files:	    src/gui_photon.c


*** ../vim-7.2.218/src/gui_photon.c	2007-05-10 20:23:35.000000000 +0200
--- src/gui_photon.c	2009-07-01 16:08:36.000000000 +0200
***************
*** 838,844 ****
--- 838,849 ----
      static void
  gui_ph_draw_start( void )
  {
+     PhGC_t *gc;
+ 
+     gc = PgGetGC();
      PgSetRegion( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) );
+     PgClearClippingsCx( gc );
+     PgClearTranslationCx( gc );
  
      PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
      PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) );
***************
*** 2970,2976 ****
      if( vim_font_name == NULL )
      {
  	/* Default font */
! 	vim_font_name = "PC Term";
      }
  
      if( STRCMP( vim_font_name, "*" ) == 0 )
--- 2975,2981 ----
      if( vim_font_name == NULL )
      {
  	/* Default font */
! 	vim_font_name = "PC Terminal";
      }
  
      if( STRCMP( vim_font_name, "*" ) == 0 )
*** ../vim-7.2.218/src/version.c	2009-06-24 18:31:36.000000000 +0200
--- src/version.c	2009-07-01 16:11:34.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     219,
  /**/

-- 
"Oh, no!  NOT the Spanish Inquisition!"
"NOBODY expects the Spanish Inquisition!!!"
				-- Monty Python sketch --
"Oh, no!  NOT another option!"
"EVERYBODY expects another option!!!"
				-- Discussion in vim-dev mailing list --

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


--- NEW FILE 7.2.220 ---
To: vim-dev at vim.org
Subject: Patch 7.2.220
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.220 (after 7.2.215)
Problem:    a BufEnter autocommand that changes directory causes problems.
	    (Ajit Thakkar)
Solution:   Disable autocommands when opening a hidden buffer in a window.
Files:	    src/fileio.c


*** ../vim-7.2.219/src/fileio.c	2009-06-24 17:31:27.000000000 +0200
--- src/fileio.c	2009-07-01 17:02:46.000000000 +0200
***************
*** 8441,8453 ****
  	win_init_empty(aucmd_win); /* set cursor and topline to safe values */
  
  #ifdef FEAT_WINDOWS
! 	/* Split the current window, put the aucmd_win in the upper half. */
  	make_snapshot(SNAP_AUCMD_IDX);
  	save_ea = p_ea;
  	p_ea = FALSE;
  	(void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
  	(void)win_comp_pos();   /* recompute window positions */
  	p_ea = save_ea;
  #endif
  	curwin = aucmd_win;
      }
--- 8441,8456 ----
  	win_init_empty(aucmd_win); /* set cursor and topline to safe values */
  
  #ifdef FEAT_WINDOWS
! 	/* Split the current window, put the aucmd_win in the upper half.
! 	 * We don't want the BufEnter or WinEnter autocommands. */
! 	block_autocmds();
  	make_snapshot(SNAP_AUCMD_IDX);
  	save_ea = p_ea;
  	p_ea = FALSE;
  	(void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
  	(void)win_comp_pos();   /* recompute window positions */
  	p_ea = save_ea;
+ 	unblock_autocmds();
  #endif
  	curwin = aucmd_win;
      }
***************
*** 8474,8480 ****
  	--curbuf->b_nwindows;
  #ifdef FEAT_WINDOWS
  	/* Find "aucmd_win", it can't be closed, but it may be in another tab
! 	 * page. */
  	if (curwin != aucmd_win)
  	{
  	    tabpage_T	*tp;
--- 8477,8484 ----
  	--curbuf->b_nwindows;
  #ifdef FEAT_WINDOWS
  	/* Find "aucmd_win", it can't be closed, but it may be in another tab
! 	 * page. Do not trigger autocommands here. */
! 	block_autocmds();
  	if (curwin != aucmd_win)
  	{
  	    tabpage_T	*tp;
***************
*** 8498,8503 ****
--- 8502,8508 ----
  	last_status(FALSE);	    /* may need to remove last status line */
  	restore_snapshot(SNAP_AUCMD_IDX, FALSE);
  	(void)win_comp_pos();   /* recompute window positions */
+ 	unblock_autocmds();
  
  	if (win_valid(aco->save_curwin))
  	    curwin = aco->save_curwin;
*** ../vim-7.2.219/src/version.c	2009-07-01 16:12:54.000000000 +0200
--- src/version.c	2009-07-01 17:10:22.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     220,
  /**/

-- 
Microsoft is to software what McDonalds is to gourmet cooking

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


--- NEW FILE 7.2.221 ---
To: vim-dev at vim.org
Subject: Patch 7.2.221
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.221
Problem:    X cut_buffer0 text is used as-is, it may be in the wrong encoding.
Solution:   Convert between 'enc' and latin1. (James Vega)
Files:	    src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro,
	    src/ui.c


*** ../vim-7.2.220/src/gui_gtk_x11.c	2009-06-16 15:23:07.000000000 +0200
--- src/gui_gtk_x11.c	2009-07-01 11:55:34.000000000 +0200
***************
*** 6717,6724 ****
  {
      GdkAtom	target;
      unsigned	i;
-     int		nbytes;
-     char_u	*buffer;
      time_t	start;
  
      for (i = 0; i < N_SELECTION_TARGETS; ++i)
--- 6717,6722 ----
***************
*** 6746,6767 ****
      }
  
      /* Final fallback position - use the X CUT_BUFFER0 store */
!     nbytes = 0;
!     buffer = (char_u *)XFetchBuffer(GDK_WINDOW_XDISPLAY(gui.mainwin->window),
! 				    &nbytes, 0);
!     if (nbytes > 0)
!     {
! 	/* Got something */
! 	clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
! 	if (p_verbose > 0)
! 	{
! 	    verbose_enter();
! 	    smsg((char_u *)_("Used CUT_BUFFER0 instead of empty selection"));
! 	    verbose_leave();
! 	}
!     }
!     if (buffer != NULL)
! 	XFree(buffer);
  }
  
  /*
--- 6744,6750 ----
      }
  
      /* Final fallback position - use the X CUT_BUFFER0 store */
!     yank_cut_buffer0(GDK_WINDOW_XDISPLAY(gui.mainwin->window), cbd);
  }
  
  /*
*** ../vim-7.2.220/src/message.c	2009-05-17 13:30:58.000000000 +0200
--- src/message.c	2009-07-01 16:43:08.000000000 +0200
***************
*** 107,113 ****
  }
  
  #if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \
!     || defined(PROTO)
  /*
   * Like msg() but keep it silent when 'verbosefile' is set.
   */
--- 107,113 ----
  }
  
  #if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \
!     || defined(FEAT_GUI_GTK) || defined(PROTO)
  /*
   * Like msg() but keep it silent when 'verbosefile' is set.
   */
*** ../vim-7.2.220/src/ops.c	2009-05-26 18:12:13.000000000 +0200
--- src/ops.c	2009-07-01 12:15:31.000000000 +0200
***************
*** 5591,5596 ****
--- 5591,5619 ----
      if (dpy != NULL && str != NULL && motion_type >= 0
  					       && len < 1024*1024 && len > 0)
      {
+ #ifdef FEAT_MBYTE
+ 	/* The CUT_BUFFER0 is supposed to always contain latin1.  Convert from
+ 	 * 'enc' when it is a multi-byte encoding.  When 'enc' is an 8-bit
+ 	 * encoding conversion usually doesn't work, so keep the text as-is.
+ 	 */
+ 	if (has_mbyte)
+ 	{
+ 	    char_u	*conv_str = str;
+ 	    vimconv_T	vc;
+ 
+ 	    vc.vc_type = CONV_NONE;
+ 	    if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
+ 	    {
+ 		conv_str = string_convert(&vc, str, (int*)&len);
+ 		if (conv_str != NULL)
+ 		{
+ 		    vim_free(str);
+ 		    str = conv_str;
+ 		}
+ 		convert_setup(&vc, NULL, NULL);
+ 	    }
+ 	}
+ #endif
  	XStoreBuffer(dpy, (char *)str, (int)len, 0);
  	XFlush(dpy);
      }
*** ../vim-7.2.220/src/proto/ui.pro	2007-05-05 19:58:49.000000000 +0200
--- src/proto/ui.pro	2009-07-01 11:48:11.000000000 +0200
***************
*** 48,53 ****
--- 48,54 ----
  void open_app_context __ARGS((void));
  void x11_setup_atoms __ARGS((Display *dpy));
  void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
+ void yank_cut_buffer0 __ARGS((Display *dpy, VimClipboard *cbd));
  void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
  int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
  void clip_x11_set_selection __ARGS((VimClipboard *cbd));
*** ../vim-7.2.220/src/ui.c	2009-05-17 13:30:58.000000000 +0200
--- src/ui.c	2009-07-01 15:44:07.000000000 +0200
***************
*** 2104,2111 ****
      Atom	type;
      static int	success;
      int		i;
-     int		nbytes = 0;
-     char_u	*buffer;
      time_t	start_time;
      int		timed_out = FALSE;
  
--- 2104,2109 ----
***************
*** 2185,2199 ****
      }
  
      /* Final fallback position - use the X CUT_BUFFER0 store */
!     buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0);
!     if (nbytes > 0)
!     {
! 	/* Got something */
! 	clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
! 	XFree((void *)buffer);
! 	if (p_verbose > 0)
! 	    verb_msg((char_u *)_("Used CUT_BUFFER0 instead of empty selection"));
!     }
  }
  
  static Boolean	clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
--- 2183,2189 ----
      }
  
      /* Final fallback position - use the X CUT_BUFFER0 store */
!     yank_cut_buffer0(dpy, cbd);
  }
  
  static Boolean	clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
***************
*** 2369,2374 ****
--- 2359,2418 ----
  }
  #endif
  
+ #if defined(FEAT_XCLIPBOARD) || defined(FEAT_GUI_X11) \
+     || defined(FEAT_GUI_GTK) || defined(PROTO)
+ /*
+  * Get the contents of the X CUT_BUFFER0 and put it in "cbd".
+  */
+     void
+ yank_cut_buffer0(dpy, cbd)
+     Display		*dpy;
+     VimClipboard	*cbd;
+ {
+     int		nbytes = 0;
+     char_u	*buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0);
+ 
+     if (nbytes > 0)
+     {
+ #ifdef FEAT_MBYTE
+ 	int  done = FALSE;
+ 
+ 	/* CUT_BUFFER0 is supposed to be always latin1.  Convert to 'enc' when
+ 	 * using a multi-byte encoding.  Conversion between two 8-bit
+ 	 * character sets usually fails and the text might actually be in
+ 	 * 'enc' anyway. */
+ 	if (has_mbyte)
+ 	{
+ 	    char_u	*conv_buf = buffer;
+ 	    vimconv_T	vc;
+ 
+ 	    vc.vc_type = CONV_NONE;
+ 	    if (convert_setup(&vc, (char_u *)"latin1", p_enc) == OK)
+ 	    {
+ 		conv_buf = string_convert(&vc, buffer, &nbytes);
+ 		if (conv_buf != NULL)
+ 		{
+ 		    clip_yank_selection(MCHAR, conv_buf, (long)nbytes, cbd);
+ 		    vim_free(conv_buf);
+ 		    done = TRUE;
+ 		}
+ 		convert_setup(&vc, NULL, NULL);
+ 	    }
+ 	}
+ 	if (!done)  /* use the text without conversion */
+ #endif
+ 	    clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
+ 	XFree((void *)buffer);
+ 	if (p_verbose > 0)
+ 	{
+ 	    verbose_enter();
+ 	    verb_msg((char_u *)_("Used CUT_BUFFER0 instead of empty selection"));
+ 	    verbose_leave();
+ 	}
+     }
+ }
+ #endif
+ 
  #if defined(FEAT_MOUSE) || defined(PROTO)
  
  /*
*** ../vim-7.2.220/src/version.c	2009-07-01 17:11:40.000000000 +0200
--- src/version.c	2009-07-01 17:56:02.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     221,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
40. You tell the cab driver you live at
    http://123.elm.street/house/bluetrim.html
41. You actually try that 123.elm.street address.

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


--- NEW FILE 7.2.222 ---
To: vim-dev at vim.org
Subject: Patch 7.2.222
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.222
Problem:   ":mksession" doesn't work properly with 'acd' set. 
Solution:   Make it work. (Yakov Lerner)
Files:	    src/ex_docmd.c


*** ../vim-7.2.221/src/ex_docmd.c	2009-05-16 17:29:37.000000000 +0200
--- src/ex_docmd.c	2009-07-01 20:18:22.000000000 +0200
***************
*** 8686,8691 ****
--- 8693,8700 ----
      }
  
  #ifdef FEAT_SESSION
+     /* Use the short file name until ":lcd" is used.  We also don't use the
+      * short file name when 'acd' is set, that is checked later. */
      did_lcd = FALSE;
  
      /* ":mkview" or ":mkview 9": generate file name with 'viewdir' */
***************
*** 10573,10578 ****
--- 10582,10590 ----
      if (buf->b_sfname != NULL
  	    && flagp == &ssop_flags
  	    && (ssop_flags & (SSOP_CURDIR | SSOP_SESDIR))
+ #ifdef FEAT_AUTOCHDIR
+ 	    && !p_acd
+ #endif
  	    && !did_lcd)
  	name = buf->b_sfname;
      else
*** ../vim-7.2.221/src/version.c	2009-07-01 18:04:30.000000000 +0200
--- src/version.c	2009-07-01 20:16:19.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     222,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
43. You tell the kids they can't use the computer because "Daddy's got work to
    do" and you don't even have a job.

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


--- NEW FILE 7.2.223 ---
To: vim-dev at vim.org
Subject: Patch 7.2.223
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.223
Problem:    When a script is run with ":silent" it is not able to give warning
	    messages.
Solution:   Add the ":unsilent" command.
Files:	    runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c


*** ../vim-7.2.222/runtime/doc/various.txt	2008-08-09 19:36:54.000000000 +0200
--- runtime/doc/various.txt	2009-07-09 15:52:54.000000000 +0200
***************
*** 508,513 ****
--- 508,524 ----
  			messages though.  Use ":silent" in the command itself
  			to avoid that: ":silent menu .... :silent command".
  
+ 						*:uns* *:unsilent*
+ :uns[ilent] {command}	Execute {command} not silently.  Only makes a
+ 			difference when |:silent| was used to get to this
+ 			command.
+ 			Use this for giving a message even when |:silent| was
+ 			used.  In this example |:silent| is used to avoid the
+ 			message about reading the file and |:unsilent| to be
+ 			able to list the first line of each file. >
+     		:silent argdo unsilent echo expand('%') . ": " . getline(1)
+ <
+ 
  						*:verb* *:verbose*
  :[count]verb[ose] {command}
  			Execute {command} with 'verbose' set to [count].  If
*** ../vim-7.2.222/src/ex_cmds.h	2008-11-09 13:43:25.000000000 +0100
--- src/ex_cmds.h	2009-07-01 18:12:55.000000000 +0200
***************
*** 991,996 ****
--- 991,998 ----
  			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_unmenu,		"unmenu",	ex_menu,
  			BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_unsilent,	"unsilent",	ex_wrongmodifier,
+ 			NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
  EX(CMD_update,		"update",	ex_update,
  			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
  EX(CMD_vglobal,		"vglobal",	ex_global,
*** ../vim-7.2.222/src/ex_docmd.c	2009-07-01 20:18:43.000000000 +0200
--- src/ex_docmd.c	2009-07-09 15:24:03.000000000 +0200
***************
*** 1677,1684 ****
      char_u		*errormsg = NULL;	/* error message */
      exarg_T		ea;			/* Ex command arguments */
      long		verbose_save = -1;
!     int			save_msg_scroll = 0;
!     int			did_silent = 0;
      int			did_esilent = 0;
  #ifdef HAVE_SANDBOX
      int			did_sandbox = FALSE;
--- 1677,1684 ----
      char_u		*errormsg = NULL;	/* error message */
      exarg_T		ea;			/* Ex command arguments */
      long		verbose_save = -1;
!     int			save_msg_scroll = msg_scroll;
!     int			save_msg_silent = -1;
      int			did_esilent = 0;
  #ifdef HAVE_SANDBOX
      int			did_sandbox = FALSE;
***************
*** 1856,1864 ****
  			}
  			if (!checkforcmd(&ea.cmd, "silent", 3))
  			    break;
! 			++did_silent;
  			++msg_silent;
- 			save_msg_scroll = msg_scroll;
  			if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1]))
  			{
  			    /* ":silent!", but not "silent !cmd" */
--- 1856,1864 ----
  			}
  			if (!checkforcmd(&ea.cmd, "silent", 3))
  			    break;
! 			if (save_msg_silent == -1)
! 			    save_msg_silent = msg_silent;
  			++msg_silent;
  			if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1]))
  			{
  			    /* ":silent!", but not "silent !cmd" */
***************
*** 1886,1891 ****
--- 1886,1898 ----
  #endif
  			continue;
  
+ 	    case 'u':	if (!checkforcmd(&ea.cmd, "unsilent", 3))
+ 			    break;
+ 			if (save_msg_silent == -1)
+ 			    save_msg_silent = msg_silent;
+ 			msg_silent = 0;
+ 			continue;
+ 
  	    case 'v':	if (checkforcmd(&ea.cmd, "vertical", 4))
  			{
  #ifdef FEAT_VERTSPLIT
***************
*** 2684,2696 ****
  
      cmdmod = save_cmdmod;
  
!     if (did_silent > 0)
      {
  	/* messages could be enabled for a serious error, need to check if the
  	 * counters don't become negative */
! 	msg_silent -= did_silent;
! 	if (msg_silent < 0)
! 	    msg_silent = 0;
  	emsg_silent -= did_esilent;
  	if (emsg_silent < 0)
  	    emsg_silent = 0;
--- 2691,2702 ----
  
      cmdmod = save_cmdmod;
  
!     if (save_msg_silent != -1)
      {
  	/* messages could be enabled for a serious error, need to check if the
  	 * counters don't become negative */
! 	if (!did_emsg)
! 	    msg_silent = save_msg_silent;
  	emsg_silent -= did_esilent;
  	if (emsg_silent < 0)
  	    emsg_silent = 0;
***************
*** 2987,2992 ****
--- 2993,2999 ----
      {"silent", 3, FALSE},
      {"tab", 3, TRUE},
      {"topleft", 2, FALSE},
+     {"unsilent", 3, FALSE},
      {"verbose", 4, TRUE},
      {"vertical", 4, FALSE},
  };
*** ../vim-7.2.222/src/version.c	2009-07-01 20:18:43.000000000 +0200
--- src/version.c	2009-07-09 15:53:05.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     223,
  /**/

-- 
Q: How many legs does a giraffe have?
A: Eight: two in front, two behind, two on the left and two on the right

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


--- NEW FILE 7.2.224 ---
To: vim-dev at vim.org
Subject: Patch 7.2.224
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.224
Problem:    Crash when using 'completefunc'. (Ingo Karkat)
Solution:   Disallow entering edit() recursively when doing completion.
Files:	    src/edit.c


*** ../vim-7.2.223/src/edit.c	2009-05-26 11:01:43.000000000 +0200
--- src/edit.c	2009-07-09 18:01:49.000000000 +0200
***************
*** 114,119 ****
--- 114,123 ----
   * FALSE the word to be completed must be located. */
  static int	  compl_started = FALSE;
  
+ /* Set when doing something for completion that may call edit() recursively,
+  * which is not allowed. */
+ static int	  compl_busy = FALSE;
+ 
  static int	  compl_matches = 0;
  static char_u	  *compl_pattern = NULL;
  static int	  compl_direction = FORWARD;
***************
*** 346,352 ****
  
  #ifdef FEAT_INS_EXPAND
      /* Don't allow recursive insert mode when busy with completion. */
!     if (compl_started || pum_visible())
      {
  	EMSG(_(e_secure));
  	return FALSE;
--- 350,356 ----
  
  #ifdef FEAT_INS_EXPAND
      /* Don't allow recursive insert mode when busy with completion. */
!     if (compl_started || compl_busy || pum_visible())
      {
  	EMSG(_(e_secure));
  	return FALSE;
***************
*** 1340,1347 ****
--- 1344,1353 ----
  		goto normalchar;
  
  docomplete:
+ 	    compl_busy = TRUE;
  	    if (ins_complete(c) == FAIL)
  		compl_cont_status = 0;
+ 	    compl_busy = FALSE;
  	    break;
  #endif /* FEAT_INS_EXPAND */
  
***************
*** 3172,3177 ****
--- 3178,3184 ----
  	vim_free(match);
      } while (compl_curr_match != NULL && compl_curr_match != compl_first_match);
      compl_first_match = compl_curr_match = NULL;
+     compl_shown_match = NULL;
  }
  
      static void
*** ../vim-7.2.223/src/version.c	2009-07-09 15:55:34.000000000 +0200
--- src/version.c	2009-07-09 18:14:16.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     224,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
77. The phone company asks you to test drive their new PBX system

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


--- NEW FILE 7.2.225 ---
To: vim-dev at vim.org
Subject: Patch 7.2.225
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.225
Problem:    When using ":normal" a saved character may be executed.
Solution:   Also store old_char when saving typeahead.
Files:	    src/getchar.c, src/structs.h


*** ../vim-7.2.224/src/getchar.c	2009-02-22 23:42:08.000000000 +0100
--- src/getchar.c	2009-07-09 18:09:13.000000000 +0200
***************
*** 1309,1314 ****
--- 1309,1317 ----
      return OK;
  }
  
+ static int old_char = -1;	/* character put back by vungetc() */
+ static int old_mod_mask;	/* mod_mask for ungotten character */
+ 
  #if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO)
  
  /*
***************
*** 1323,1328 ****
--- 1326,1335 ----
      if (!tp->typebuf_valid)
  	typebuf = tp->save_typebuf;
  
+     tp->old_char = old_char;
+     tp->old_mod_mask = old_mod_mask;
+     old_char = -1;
+ 
      tp->save_stuffbuff = stuffbuff;
      stuffbuff.bh_first.b_next = NULL;
  # ifdef USE_INPUT_BUF
***************
*** 1344,1349 ****
--- 1351,1359 ----
  	typebuf = tp->save_typebuf;
      }
  
+     old_char = tp->old_char;
+     old_mod_mask = tp->old_mod_mask;
+ 
      free_buff(&stuffbuff);
      stuffbuff = tp->save_stuffbuff;
  # ifdef USE_INPUT_BUF
***************
*** 1499,1507 ****
  #define KL_PART_KEY -1		/* keylen value for incomplete key-code */
  #define KL_PART_MAP -2		/* keylen value for incomplete mapping */
  
- static int old_char = -1;	/* character put back by vungetc() */
- static int old_mod_mask;	/* mod_mask for ungotten character */
- 
  /*
   * Get the next input character.
   * Can return a special key or a multi-byte character.
--- 1509,1514 ----
*** ../vim-7.2.224/src/structs.h	2009-06-16 16:01:34.000000000 +0200
--- src/structs.h	2009-07-09 18:09:20.000000000 +0200
***************
*** 882,887 ****
--- 882,889 ----
  {
      typebuf_T		save_typebuf;
      int			typebuf_valid;	    /* TRUE when save_typebuf valid */
+     int			old_char;
+     int			old_mod_mask;
      struct buffheader	save_stuffbuff;
  #ifdef USE_INPUT_BUF
      char_u		*save_inputbuf;
*** ../vim-7.2.224/src/version.c	2009-07-09 18:15:19.000000000 +0200
--- src/version.c	2009-07-09 18:21:56.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     225,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
78. You find yourself dialing IP numbers on the phone.

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


--- NEW FILE 7.2.226 ---
To: vim-dev at vim.org
Subject: Patch 7.2.226
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.226
Problem:    ml_get error after deleting the last line. (Xavier de Gaye)
Solution:   When adjusting marks a callback may be invoked.  Adjust the cursor
	    position before invoking deleted_lines_mark().
Files:	    src/ex_cmds.c, src/ex_docmd.c, src/if_mzsch.c, src/if_python.c,
	    src/if_perl.xs, src/misc1.c


*** ../vim-7.2.225/src/ex_cmds.c	2009-05-17 13:30:58.000000000 +0200
--- src/ex_cmds.c	2009-07-09 12:56:51.000000000 +0200
***************
*** 4013,4018 ****
--- 4013,4021 ----
  	    break;
  	ml_delete(eap->line1, FALSE);
      }
+ 
+     /* make sure the cursor is not beyond the end of the file now */
+     check_cursor_lnum();
      deleted_lines_mark(eap->line1, (long)(eap->line2 - lnum));
  
      /* ":append" on the line above the deleted lines. */
*** ../vim-7.2.225/src/ex_docmd.c	2009-07-09 15:55:34.000000000 +0200
--- src/ex_docmd.c	2009-07-09 15:24:03.000000000 +0200
***************
*** 7845,7854 ****
  		if (*ml_get(lnum) == NUL && u_savedel(lnum, 1L) == OK)
  		{
  		    ml_delete(lnum, FALSE);
- 		    deleted_lines_mark(lnum, 1L);
  		    if (curwin->w_cursor.lnum > 1
  					     && curwin->w_cursor.lnum >= lnum)
  			--curwin->w_cursor.lnum;
  		}
  	    }
  	    redraw_curbuf_later(VALID);
--- 7845,7854 ----
  		if (*ml_get(lnum) == NUL && u_savedel(lnum, 1L) == OK)
  		{
  		    ml_delete(lnum, FALSE);
  		    if (curwin->w_cursor.lnum > 1
  					     && curwin->w_cursor.lnum >= lnum)
  			--curwin->w_cursor.lnum;
+ 		    deleted_lines_mark(lnum, 1L);
  		}
  	    }
  	    redraw_curbuf_later(VALID);
*** ../vim-7.2.225/src/if_mzsch.c	2009-06-24 17:51:01.000000000 +0200
--- src/if_mzsch.c	2009-07-09 12:59:17.000000000 +0200
***************
*** 2169,2177 ****
  	    curbuf = savebuf;
  	    raise_vim_exn(_("cannot delete line"));
  	}
- 	deleted_lines_mark((linenr_T)n, 1L);
  	if (buf->buf == curwin->w_buffer)
  	    mz_fix_cursor(n, n + 1, -1);
  
  	curbuf = savebuf;
  
--- 2169,2177 ----
  	    curbuf = savebuf;
  	    raise_vim_exn(_("cannot delete line"));
  	}
  	if (buf->buf == curwin->w_buffer)
  	    mz_fix_cursor(n, n + 1, -1);
+ 	deleted_lines_mark((linenr_T)n, 1L);
  
  	curbuf = savebuf;
  
***************
*** 2299,2307 ****
  		    curbuf = savebuf;
  		    raise_vim_exn(_("cannot delete line"));
  		}
- 	    deleted_lines_mark((linenr_T)lo, (long)old_len);
  	    if (buf->buf == curwin->w_buffer)
  		mz_fix_cursor(lo, hi, -old_len);
  	}
  
  	curbuf = savebuf;
--- 2299,2307 ----
  		    curbuf = savebuf;
  		    raise_vim_exn(_("cannot delete line"));
  		}
  	    if (buf->buf == curwin->w_buffer)
  		mz_fix_cursor(lo, hi, -old_len);
+ 	    deleted_lines_mark((linenr_T)lo, (long)old_len);
  	}
  
  	curbuf = savebuf;
*** ../vim-7.2.225/src/if_python.c	2009-05-21 23:25:38.000000000 +0200
--- src/if_python.c	2009-07-09 12:59:45.000000000 +0200
***************
*** 2497,2505 ****
  	    PyErr_SetVim(_("cannot delete line"));
  	else
  	{
- 	    deleted_lines_mark((linenr_T)n, 1L);
  	    if (buf == curwin->w_buffer)
  		py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
  	}
  
  	curbuf = savebuf;
--- 2497,2505 ----
  	    PyErr_SetVim(_("cannot delete line"));
  	else
  	{
  	    if (buf == curwin->w_buffer)
  		py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
+ 	    deleted_lines_mark((linenr_T)n, 1L);
  	}
  
  	curbuf = savebuf;
***************
*** 2596,2605 ****
  		    break;
  		}
  	    }
- 	    deleted_lines_mark((linenr_T)lo, (long)i);
- 
  	    if (buf == curwin->w_buffer)
  		py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
  	}
  
  	curbuf = savebuf;
--- 2596,2604 ----
  		    break;
  		}
  	    }
  	    if (buf == curwin->w_buffer)
  		py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
+ 	    deleted_lines_mark((linenr_T)lo, (long)i);
  	}
  
  	curbuf = savebuf;
*** ../vim-7.2.225/src/if_perl.xs	2009-06-16 16:01:34.000000000 +0200
--- src/if_perl.xs	2009-07-09 13:02:16.000000000 +0200
***************
*** 1233,1241 ****
  		    if (u_savedel(lnum, 1) == OK)
  		    {
  			ml_delete(lnum, 0);
  			deleted_lines_mark(lnum, 1L);
- 			if (aco.save_curbuf == curbuf)
- 			    check_cursor();
  		    }
  
  		    /* restore curwin/curbuf and a few other things */
--- 1235,1242 ----
  		    if (u_savedel(lnum, 1) == OK)
  		    {
  			ml_delete(lnum, 0);
+ 			check_cursor();
  			deleted_lines_mark(lnum, 1L);
  		    }
  
  		    /* restore curwin/curbuf and a few other things */
*** ../vim-7.2.225/src/misc1.c	2009-06-24 16:25:23.000000000 +0200
--- src/misc1.c	2009-07-09 13:00:59.000000000 +0200
***************
*** 2345,2356 ****
      int		undo;		/* if TRUE, prepare for undo */
  {
      long	n;
  
      if (nlines <= 0)
  	return;
  
      /* save the deleted lines for undo */
!     if (undo && u_savedel(curwin->w_cursor.lnum, nlines) == FAIL)
  	return;
  
      for (n = 0; n < nlines; )
--- 2345,2357 ----
      int		undo;		/* if TRUE, prepare for undo */
  {
      long	n;
+     linenr_T	first = curwin->w_cursor.lnum;
  
      if (nlines <= 0)
  	return;
  
      /* save the deleted lines for undo */
!     if (undo && u_savedel(first, nlines) == FAIL)
  	return;
  
      for (n = 0; n < nlines; )
***************
*** 2358,2375 ****
  	if (curbuf->b_ml.ml_flags & ML_EMPTY)	    /* nothing to delete */
  	    break;
  
! 	ml_delete(curwin->w_cursor.lnum, TRUE);
  	++n;
  
  	/* If we delete the last line in the file, stop */
! 	if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
  	    break;
      }
-     /* adjust marks, mark the buffer as changed and prepare for displaying */
-     deleted_lines_mark(curwin->w_cursor.lnum, n);
  
      curwin->w_cursor.col = 0;
      check_cursor_lnum();
  }
  
      int
--- 2359,2379 ----
  	if (curbuf->b_ml.ml_flags & ML_EMPTY)	    /* nothing to delete */
  	    break;
  
! 	ml_delete(first, TRUE);
  	++n;
  
  	/* If we delete the last line in the file, stop */
! 	if (first > curbuf->b_ml.ml_line_count)
  	    break;
      }
  
+     /* Correct the cursor position before calling deleted_lines_mark(), it may
+      * trigger a callback to display the cursor. */
      curwin->w_cursor.col = 0;
      check_cursor_lnum();
+ 
+     /* adjust marks, mark the buffer as changed and prepare for displaying */
+     deleted_lines_mark(first, n);
  }
  
      int
***************
*** 2621,2626 ****
--- 2625,2632 ----
  
  /*
   * Like deleted_lines(), but adjust marks first.
+  * Make sure the cursor is on a valid line before calling, a GUI callback may
+  * be triggered to display the cursor.
   */
      void
  deleted_lines_mark(lnum, count)
*** ../vim-7.2.225/src/version.c	2009-07-09 18:24:24.000000000 +0200
--- src/version.c	2009-07-09 20:01:16.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     226,
  /**/

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

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


--- NEW FILE 7.2.227 ---
To: vim-dev at vim.org
Subject: Patch 7.2.227
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.227
Problem:    When using ":cd" in a script there is no way to track this.
Solution:   Display the directory when 'verbose' is 5 or higher.
Files:	    src/ex_docmd.c


*** ../vim-7.2.226/src/ex_docmd.c	2009-07-09 20:06:30.000000000 +0200
--- src/ex_docmd.c	2009-07-09 15:24:03.000000000 +0200
***************
*** 7964,7970 ****
  	    shorten_fnames(TRUE);
  
  	    /* Echo the new current directory if the command was typed. */
! 	    if (KeyTyped)
  		ex_pwd(eap);
  	}
  	vim_free(tofree);
--- 7964,7970 ----
  	    shorten_fnames(TRUE);
  
  	    /* Echo the new current directory if the command was typed. */
! 	    if (KeyTyped || p_verbose >= 5)
  		ex_pwd(eap);
  	}
  	vim_free(tofree);
*** ../vim-7.2.226/src/version.c	2009-07-09 20:06:30.000000000 +0200
--- src/version.c	2009-07-09 20:13:13.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     227,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
83. Batteries in the TV remote now last for months.

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


--- NEW FILE 7.2.228 ---
To: vim-dev at vim.org
Subject: Patch 7.2.228
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.228
Problem:    Cscope is limited to 8 connections.
Solution:   Allocated the connection array to handle any number of
	    connections. (Dominique Pelle)
Files:	    runtime/doc/if_cscop.txt, src/if_cscope.h, src/if_cscope.c


*** ../vim-7.2.227/runtime/doc/if_cscop.txt	2009-03-18 14:30:46.000000000 +0100
--- runtime/doc/if_cscop.txt	2009-07-09 15:40:48.000000000 +0200
***************
*** 355,367 ****
  The DJGPP-built version from http://cscope.sourceforge.net is known to not
  work with Vim.
  
! There are a couple of hard-coded limitations:
! 
!     1. The maximum number of cscope connections allowed is 8.  Do you
!     really need more?
! 
!     2. Doing a |:tjump| when |:cstag| searches the tag files is not
!     configurable (e.g., you can't do a tselect instead).
  
  ==============================================================================
  6. Suggested usage					*cscope-suggestions*
--- 355,362 ----
  The DJGPP-built version from http://cscope.sourceforge.net is known to not
  work with Vim.
  
! Hard-coded limitation: doing a |:tjump| when |:cstag| searches the tag files
! is not configurable (e.g., you can't do a tselect instead).
  
  ==============================================================================
  6. Suggested usage					*cscope-suggestions*
*** ../vim-7.2.227/src/if_cscope.h	2008-08-25 04:35:13.000000000 +0200
--- src/if_cscope.h	2009-07-09 15:39:32.000000000 +0200
***************
*** 25,31 ****
  
  #define CSCOPE_SUCCESS		0
  #define CSCOPE_FAILURE		-1
- #define CSCOPE_MAX_CONNECTIONS	8   /* you actually need more? */
  
  #define	CSCOPE_DBFILE		"cscope.out"
  #define	CSCOPE_PROMPT		">> "
--- 25,30 ----
*** ../vim-7.2.227/src/if_cscope.c	2009-05-16 17:29:37.000000000 +0200
--- src/if_cscope.c	2009-07-09 15:39:32.000000000 +0200
***************
*** 46,52 ****
  static int	    cs_find __ARGS((exarg_T *eap));
  static int	    cs_find_common __ARGS((char *opt, char *pat, int, int, int));
  static int	    cs_help __ARGS((exarg_T *eap));
- static void	    cs_init __ARGS((void));
  static void	    clear_csinfo __ARGS((int i));
  static int	    cs_insert_filelist __ARGS((char *, char *, char *,
  			struct stat *));
--- 46,51 ----
***************
*** 66,72 ****
  static int	    cs_show __ARGS((exarg_T *eap));
  
  
! static csinfo_T	    csinfo[CSCOPE_MAX_CONNECTIONS];
  static int	    eap_arg_len;    /* length of eap->arg, set in
  				       cs_lookup_cmd() */
  static cscmd_T	    cs_cmds[] =
--- 65,74 ----
  static int	    cs_show __ARGS((exarg_T *eap));
  
  
! static csinfo_T *   csinfo = NULL;
! static int	    csinfo_size = 0;	/* number of items allocated in
! 					   csinfo[] */
! 
  static int	    eap_arg_len;    /* length of eap->arg, set in
  				       cs_lookup_cmd() */
  static cscmd_T	    cs_cmds[] =
***************
*** 144,166 ****
  	}
      case EXP_CSCOPE_KILL:
  	{
! 	    static char_u	connection[2];
  
  	    /* ":cscope kill" accepts connection numbers or partial names of
  	     * the pathname of the cscope database as argument.  Only complete
  	     * with connection numbers. -1 can also be used to kill all
  	     * connections. */
! 	    for (i = 0, current_idx = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	    {
  		if (csinfo[i].fname == NULL)
  		    continue;
  		if (current_idx++ == idx)
  		{
! 		    /* Connection number fits in one character since
! 		     * CSCOPE_MAX_CONNECTIONS is < 10 */
! 		    connection[0] = i + '0';
! 		    connection[1] = NUL;
! 		    return connection;
  		}
  	    }
  	    return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
--- 146,165 ----
  	}
      case EXP_CSCOPE_KILL:
  	{
! 	    static char	connection[5];
  
  	    /* ":cscope kill" accepts connection numbers or partial names of
  	     * the pathname of the cscope database as argument.  Only complete
  	     * with connection numbers. -1 can also be used to kill all
  	     * connections. */
! 	    for (i = 0, current_idx = 0; i < csinfo_size; i++)
  	    {
  		if (csinfo[i].fname == NULL)
  		    continue;
  		if (current_idx++ == idx)
  		{
! 		    vim_snprintf(connection, sizeof(connection), "%d", i);
! 		    return (char_u *)connection;
  		}
  	    }
  	    return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
***************
*** 223,229 ****
  {
      cscmd_T *cmdp;
  
-     cs_init();
      if ((cmdp = cs_lookup_cmd(eap)) == NULL)
      {
  	cs_help(eap);
--- 222,227 ----
***************
*** 284,291 ****
  {
      int ret = FALSE;
  
-     cs_init();
- 
      if (*eap->arg == NUL)
      {
  	(void)EMSG(_("E562: Usage: cstag <ident>"));
--- 282,287 ----
***************
*** 441,447 ****
      if (num < 0 || num > 4 || (num > 0 && !dbpath))
  	return FALSE;
  
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	if (!csinfo[i].fname)
  	    continue;
--- 437,443 ----
      if (num < 0 || num > 4 || (num > 0 && !dbpath))
  	return FALSE;
  
!     for (i = 0; i < csinfo_size; i++)
      {
  	if (!csinfo[i].fname)
  	    continue;
***************
*** 684,690 ****
      short i;
      short cnt = 0;
  
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	if (csinfo[i].fname != NULL)
  	    cnt++;
--- 680,686 ----
      short i;
      short cnt = 0;
  
!     for (i = 0; i < csinfo_size; i++)
      {
  	if (csinfo[i].fname != NULL)
  	    cnt++;
***************
*** 1112,1118 ****
  {
      int i;
      char *cmd;
!     int nummatches[CSCOPE_MAX_CONNECTIONS], totmatches;
  #ifdef FEAT_QUICKFIX
      char cmdletter;
      char *qfpos;
--- 1108,1115 ----
  {
      int i;
      char *cmd;
!     int *nummatches;
!     int totmatches;
  #ifdef FEAT_QUICKFIX
      char cmdletter;
      char *qfpos;
***************
*** 1123,1135 ****
      if (cmd == NULL)
  	return FALSE;
  
      /* send query to all open connections, then count the total number
       * of matches so we can alloc matchesp all in one swell foop
       */
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	nummatches[i] = 0;
      totmatches = 0;
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	if (csinfo[i].fname == NULL || csinfo[i].to_fp == NULL)
  	    continue;
--- 1120,1136 ----
      if (cmd == NULL)
  	return FALSE;
  
+     nummatches = (int *)alloc(sizeof(int)*csinfo_size);
+     if (nummatches == NULL)
+ 	return FALSE;
+ 
      /* send query to all open connections, then count the total number
       * of matches so we can alloc matchesp all in one swell foop
       */
!     for (i = 0; i < csinfo_size; i++)
  	nummatches[i] = 0;
      totmatches = 0;
!     for (i = 0; i < csinfo_size; i++)
      {
  	if (csinfo[i].fname == NULL || csinfo[i].to_fp == NULL)
  	    continue;
***************
*** 1154,1160 ****
--- 1155,1164 ----
  	char *buf;
  
  	if (!verbose)
+ 	{
+ 	    vim_free(nummatches);
  	    return FALSE;
+ 	}
  
  	buf = (char *)alloc((unsigned)(strlen(opt) + strlen(pat) + strlen(nf)));
  	if (buf == NULL)
***************
*** 1165,1170 ****
--- 1169,1175 ----
  	    (void)EMSG(buf);
  	    vim_free(buf);
  	}
+ 	vim_free(nummatches);
  	return FALSE;
      }
  
***************
*** 1217,1222 ****
--- 1222,1228 ----
  		(void)EMSG(buf);
  		vim_free(buf);
  	    }
+ 	    vim_free(nummatches);
  	    return FALSE;
  	}
      }
***************
*** 1264,1269 ****
--- 1270,1276 ----
  	}
  	mch_remove(tmp);
  	vim_free(tmp);
+ 	vim_free(nummatches);
  	return TRUE;
      }
      else
***************
*** 1275,1280 ****
--- 1282,1288 ----
  	/* read output */
  	cs_fill_results((char *)pat, totmatches, nummatches, &matches,
  							 &contexts, &matched);
+ 	vim_free(nummatches);
  	if (matches == NULL)
  	    return FALSE;
  
***************
*** 1328,1353 ****
  } /* cs_help */
  
  
- /*
-  * PRIVATE: cs_init
-  *
-  * initialize cscope structure if not already
-  */
-     static void
- cs_init()
- {
-     short i;
-     static int init_already = FALSE;
- 
-     if (init_already)
- 	return;
- 
-     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
- 	clear_csinfo(i);
- 
-     init_already = TRUE;
- } /* cs_init */
- 
      static void
  clear_csinfo(i)
      int	    i;
--- 1336,1341 ----
***************
*** 1444,1450 ****
  #endif
  
      i = -1; /* can be set to the index of an empty item in csinfo */
!     for (j = 0; j < CSCOPE_MAX_CONNECTIONS; j++)
      {
  	if (csinfo[j].fname != NULL
  #if defined(UNIX)
--- 1432,1438 ----
  #endif
  
      i = -1; /* can be set to the index of an empty item in csinfo */
!     for (j = 0; j < csinfo_size; j++)
      {
  	if (csinfo[j].fname != NULL
  #if defined(UNIX)
***************
*** 1471,1479 ****
  
      if (i == -1)
      {
! 	if (p_csverbose)
! 	    (void)EMSG(_("E569: maximum number of cscope connections reached"));
! 	return -1;
      }
  
      if ((csinfo[i].fname = (char *)alloc((unsigned)strlen(fname)+1)) == NULL)
--- 1459,1483 ----
  
      if (i == -1)
      {
! 	i = csinfo_size;
! 	if (csinfo_size == 0)
! 	{
! 	    /* First time allocation: allocate only 1 connection. It should
! 	     * be enough for most users.  If more is needed, csinfo will be
! 	     * reallocated. */
! 	    csinfo_size = 1;
! 	    csinfo = (csinfo_T *)alloc_clear(sizeof(csinfo_T));
! 	}
! 	else
! 	{
! 	    /* Reallocate space for more connections. */
! 	    csinfo_size *= 2;
! 	    csinfo = vim_realloc(csinfo, sizeof(csinfo_T)*csinfo_size);
! 	}
! 	if (csinfo == NULL)
! 	    return -1;
! 	for (j = csinfo_size/2; j < csinfo_size; j++)
! 	    clear_csinfo(j);
      }
  
      if ((csinfo[i].fname = (char *)alloc((unsigned)strlen(fname)+1)) == NULL)
***************
*** 1580,1594 ****
  	/* It must be part of a name.  We will try to find a match
  	 * within all the names in the csinfo data structure
  	 */
! 	for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	{
  	    if (csinfo[i].fname != NULL && strstr(csinfo[i].fname, stok))
  		break;
  	}
      }
  
!     if ((i >= CSCOPE_MAX_CONNECTIONS || i < -1 || csinfo[i].fname == NULL)
! 	    && i != -1)
      {
  	if (p_csverbose)
  	    (void)EMSG2(_("E261: cscope connection %s not found"), stok);
--- 1584,1597 ----
  	/* It must be part of a name.  We will try to find a match
  	 * within all the names in the csinfo data structure
  	 */
! 	for (i = 0; i < csinfo_size; i++)
  	{
  	    if (csinfo[i].fname != NULL && strstr(csinfo[i].fname, stok))
  		break;
  	}
      }
  
!     if ((i != -1) && (i >= csinfo_size || i < -1 || csinfo[i].fname == NULL))
      {
  	if (p_csverbose)
  	    (void)EMSG2(_("E261: cscope connection %s not found"), stok);
***************
*** 1597,1603 ****
      {
  	if (i == -1)
  	{
! 	    for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	    {
  		if (csinfo[i].fname)
  		    cs_kill_execute(i, csinfo[i].fname);
--- 1600,1606 ----
      {
  	if (i == -1)
  	{
! 	    for (i = 0; i < csinfo_size; i++)
  	    {
  		if (csinfo[i].fname)
  		    cs_kill_execute(i, csinfo[i].fname);
***************
*** 1857,1863 ****
      if (buf == NULL)
  	return;
  
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	if (nummatches_a[i] < 1)
  	    continue;
--- 1860,1866 ----
      if (buf == NULL)
  	return;
  
!     for (i = 0; i < csinfo_size; i++)
      {
  	if (nummatches_a[i] < 1)
  	    continue;
***************
*** 1929,1935 ****
      if ((cntxts = (char **)alloc(sizeof(char *) * totmatches)) == NULL)
  	goto parse_out;
  
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	if (nummatches_a[i] < 1)
  	    continue;
--- 1932,1938 ----
      if ((cntxts = (char **)alloc(sizeof(char *) * totmatches)) == NULL)
  	goto parse_out;
  
!     for (i = 0; i < csinfo_size; i++)
      {
  	if (nummatches_a[i] < 1)
  	    continue;
***************
*** 2383,2392 ****
      int	i;
      char buf[20]; /* for sprintf " (#%d)" */
  
      /* malloc our db and ppath list */
!     dblist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
!     pplist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
!     fllist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
      if (dblist == NULL || pplist == NULL || fllist == NULL)
      {
  	vim_free(dblist);
--- 2386,2398 ----
      int	i;
      char buf[20]; /* for sprintf " (#%d)" */
  
+     if (csinfo_size == 0)
+ 	return CSCOPE_SUCCESS;
+ 
      /* malloc our db and ppath list */
!     dblist = (char **)alloc(csinfo_size * sizeof(char *));
!     pplist = (char **)alloc(csinfo_size * sizeof(char *));
!     fllist = (char **)alloc(csinfo_size * sizeof(char *));
      if (dblist == NULL || pplist == NULL || fllist == NULL)
      {
  	vim_free(dblist);
***************
*** 2395,2401 ****
  	return CSCOPE_FAILURE;
      }
  
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	dblist[i] = csinfo[i].fname;
  	pplist[i] = csinfo[i].ppath;
--- 2401,2407 ----
  	return CSCOPE_FAILURE;
      }
  
!     for (i = 0; i < csinfo_size; i++)
      {
  	dblist[i] = csinfo[i].fname;
  	pplist[i] = csinfo[i].ppath;
***************
*** 2405,2411 ****
      }
  
      /* rebuild the cscope connection list */
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
      {
  	if (dblist[i] != NULL)
  	{
--- 2411,2417 ----
      }
  
      /* rebuild the cscope connection list */
!     for (i = 0; i < csinfo_size; i++)
      {
  	if (dblist[i] != NULL)
  	{
***************
*** 2502,2508 ****
  	MSG_PUTS_ATTR(
  	    _(" # pid    database name                       prepend path\n"),
  	    hl_attr(HLF_T));
! 	for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	{
  	    if (csinfo[i].fname == NULL)
  		continue;
--- 2508,2514 ----
  	MSG_PUTS_ATTR(
  	    _(" # pid    database name                       prepend path\n"),
  	    hl_attr(HLF_T));
! 	for (i = 0; i < csinfo_size; i++)
  	{
  	    if (csinfo[i].fname == NULL)
  		continue;
***************
*** 2531,2538 ****
  {
      int i;
  
!     for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
  	cs_release_csp(i, TRUE);
  }
  
  #endif	/* FEAT_CSCOPE */
--- 2537,2546 ----
  {
      int i;
  
!     for (i = 0; i < csinfo_size; i++)
  	cs_release_csp(i, TRUE);
+     vim_free(csinfo);
+     csinfo_size = 0;
  }
  
  #endif	/* FEAT_CSCOPE */
*** ../vim-7.2.227/src/version.c	2009-07-09 20:13:59.000000000 +0200
--- src/version.c	2009-07-09 21:21:48.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     228,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
84. Books in your bookcase bear the names Bongo, WinSock and Inside OLE

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


--- NEW FILE 7.2.229 ---
To: vim-dev at vim.org
Subject: Patch 7.2.229
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.229
Problem:    Warning for shadowed variable.
Solution:   Rename "wait" to "wait_time".
Files:	    src/os_unix.c


*** ../vim-7.2.228/src/os_unix.c	2009-06-16 15:12:11.000000000 +0200
--- src/os_unix.c	2009-07-09 16:24:14.000000000 +0200
***************
*** 1138,1147 ****
       * to happen).
       */
      {
! 	long wait;
! 	for (wait = 0; !sigcont_received && wait <= 3L; wait++)
  	    /* Loop is not entered most of the time */
! 	    mch_delay(wait, FALSE);
      }
  # endif
  
--- 1138,1147 ----
       * to happen).
       */
      {
! 	long wait_time;
! 	for (wait_time = 0; !sigcont_received && wait_time <= 3L; wait_time++)
  	    /* Loop is not entered most of the time */
! 	    mch_delay(wait_time, FALSE);
      }
  # endif
  
*** ../vim-7.2.228/src/version.c	2009-07-09 21:22:36.000000000 +0200
--- src/version.c	2009-07-14 12:18:21.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     229,
  /**/

-- 
>From "know your smileys":
 :-)	Funny
 |-)	Funny Oriental
 (-:	Funny Australian

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


--- NEW FILE 7.2.230 ---
To: vim-dev at vim.org
Subject: Patch 7.2.230
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.230
Problem:    A few old lint-style ARGUSED comments.
Solution:   Change to the new UNUSED style.
Files:	    src/getchar.c


*** ../vim-7.2.229/src/getchar.c	2009-07-09 18:24:24.000000000 +0200
--- src/getchar.c	2009-07-09 18:09:13.000000000 +0200
***************
*** 3708,3718 ****
   * Clear all mappings or abbreviations.
   * 'abbr' should be FALSE for mappings, TRUE for abbreviations.
   */
- /*ARGSUSED*/
      void
  map_clear(cmdp, arg, forceit, abbr)
      char_u	*cmdp;
!     char_u	*arg;
      int		forceit;
      int		abbr;
  {
--- 3708,3717 ----
   * Clear all mappings or abbreviations.
   * 'abbr' should be FALSE for mappings, TRUE for abbreviations.
   */
      void
  map_clear(cmdp, arg, forceit, abbr)
      char_u	*cmdp;
!     char_u	*arg UNUSED;
      int		forceit;
      int		abbr;
  {
***************
*** 3741,3753 ****
  /*
   * Clear all mappings in "mode".
   */
- /*ARGSUSED*/
      void
  map_clear_int(buf, mode, local, abbr)
!     buf_T	*buf;	    /* buffer for local mappings */
!     int		mode;	    /* mode in which to delete */
!     int		local;	    /* TRUE for buffer-local mappings */
!     int		abbr;	    /* TRUE for abbreviations */
  {
      mapblock_T	*mp, **mpp;
      int		hash;
--- 3740,3751 ----
  /*
   * Clear all mappings in "mode".
   */
      void
  map_clear_int(buf, mode, local, abbr)
!     buf_T	*buf UNUSED;	/* buffer for local mappings */
!     int		mode;		/* mode in which to delete */
!     int		local UNUSED;	/* TRUE for buffer-local mappings */
!     int		abbr;		/* TRUE for abbreviations */
  {
      mapblock_T	*mp, **mpp;
      int		hash;
*** ../vim-7.2.229/src/version.c	2009-07-14 12:20:28.000000000 +0200
--- src/version.c	2009-07-14 13:44:05.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     230,
  /**/

-- 
>From "know your smileys":
 :~)	A man with a tape recorder up his nose

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


--- NEW FILE 7.2.231 ---
To: vim-dev at vim.org
Subject: Patch 7.2.231
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.231
Problem:    Warning for unreacheable code.
Solution:   Add #ifdef.
Files:	    src/if_perl.xs


*** ../vim-7.2.230/src/if_perl.xs	2009-07-09 20:06:30.000000000 +0200
--- src/if_perl.xs	2009-07-09 13:02:16.000000000 +0200
***************
*** 720,728 ****
--- 720,730 ----
  #ifdef HAVE_SANDBOX
      if (sandbox)
      {
+ # ifndef MAKE_TEST  /* avoid a warning for unreachable code */
  	if ((safe = perl_get_sv( "VIM::safe", FALSE )) == NULL || !SvTRUE(safe))
  	    EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
  	else
+ # endif
  	{
  	    PUSHMARK(SP);
  	    XPUSHs(safe);
*** ../vim-7.2.230/src/version.c	2009-07-14 13:44:43.000000000 +0200
--- src/version.c	2009-07-14 16:04:07.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     231,
  /**/

-- 
>From "know your smileys":
 ~#:-(	I just washed my hair, and I can't do nuthin' with it.

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


--- NEW FILE 7.2.232 ---
To: vim-dev at vim.org
Subject: Patch 7.2.232
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.232
Problem:    Cannot debug problems with being in a wrong directory.
Solution:   When 'verbose' is 5 or higher report directory changes.
Files:	    src/os_unix.c, src/os_unix.h, src/proto/os_unix.pro


*** ../vim-7.2.231/src/os_unix.c	2009-07-14 12:20:28.000000000 +0200
--- src/os_unix.c	2009-07-14 17:13:15.000000000 +0200
***************
*** 319,324 ****
--- 319,341 ----
      {-1,	    "Unknown!", FALSE}
  };
  
+     int
+ mch_chdir(path)
+     char *path;
+ {
+     if (p_verbose >= 5)
+     {
+ 	verbose_enter();
+ 	smsg((char_u *)"chdir(%s)", path);
+ 	verbose_leave();
+     }
+ # ifdef VMS
+     return chdir(vms_fixfilename(path));
+ # else
+     return chdir(path);
+ # endif
+ }
+ 
  /*
   * Write s[len] to the screen.
   */
***************
*** 2424,2429 ****
--- 2441,2452 ----
  #ifdef HAVE_FCHDIR
  	    if (fd >= 0)
  	    {
+ 		if (p_verbose >= 5)
+ 		{
+ 		    verbose_enter();
+ 		    MSG("fchdir() to previous dir");
+ 		    verbose_leave();
+ 		}
  		l = fchdir(fd);
  		close(fd);
  	    }
*** ../vim-7.2.231/src/os_unix.h	2009-05-16 16:36:25.000000000 +0200
--- src/os_unix.h	2009-07-14 16:55:05.000000000 +0200
***************
*** 482,492 ****
  # else
  int mch_rename __ARGS((const char *src, const char *dest));
  # endif
- # ifdef VMS
- #  define mch_chdir(s) chdir(vms_fixfilename(s))
- # else
- #  define mch_chdir(s) chdir(s)
- # endif
  # ifndef VMS
  #  ifdef __MVS__
    /* on OS390 Unix getenv() doesn't return a pointer to persistent
--- 482,487 ----
*** ../vim-7.2.231/src/proto/os_unix.pro	2008-06-24 23:58:57.000000000 +0200
--- src/proto/os_unix.pro	2009-07-14 16:58:08.000000000 +0200
***************
*** 1,4 ****
--- 1,5 ----
  /* os_unix.c */
+ int mch_chdir __ARGS((char *path));
  void mch_write __ARGS((char_u *s, int len));
  int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
  int mch_char_avail __ARGS((void));
*** ../vim-7.2.231/src/version.c	2009-07-14 16:05:14.000000000 +0200
--- src/version.c	2009-07-14 17:37:15.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     232,
  /**/

-- 
>From "know your smileys":
 O:-)	Saint

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


--- NEW FILE 7.2.233 ---
To: vim-dev at vim.org
Subject: Patch 7.2.233 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.233 (extra part of 7.2.232)
Problem:    Cannot debug problems with being in a wrong directory.
Solution:   When 'verbose' is 5 or higher report directory changes.
Files:	    src/os_msdos.c, src/os_mswin.c, src/os_riscos.c, src/os_mac.h


*** ../vim-7.2.232/src/os_msdos.c	2008-06-24 23:30:18.000000000 +0200
--- src/os_msdos.c	2009-07-14 16:50:57.000000000 +0200
***************
*** 2039,2044 ****
--- 2039,2050 ----
  {
      if (path[0] == NUL)		    /* just checking... */
  	return 0;
+     if (p_verbose >= 5)
+     {
+ 	verbose_enter();
+ 	smsg((char_u *)"chdir(%s)", path);
+ 	verbose_leave();
+     }
      if (path[1] == ':')		    /* has a drive name */
      {
  	if (change_drive(TOLOWER_ASC(path[0]) - 'a' + 1))
*** ../vim-7.2.232/src/os_mswin.c	2009-05-14 22:00:37.000000000 +0200
--- src/os_mswin.c	2009-07-14 16:53:03.000000000 +0200
***************
*** 653,658 ****
--- 653,664 ----
      if (path[0] == NUL)		/* just checking... */
  	return -1;
  
+     if (p_verbose >= 5)
+     {
+ 	verbose_enter();
+ 	smsg((char_u *)"chdir(%s)", path);
+ 	verbose_leave();
+     }
      if (isalpha(path[0]) && path[1] == ':')	/* has a drive name */
      {
  	/* If we can change to the drive, skip that part of the path.  If we
*** ../vim-7.2.232/src/os_riscos.c	2006-03-07 23:25:50.000000000 +0100
--- src/os_riscos.c	2009-07-14 16:53:35.000000000 +0200
***************
*** 1203,1208 ****
--- 1203,1214 ----
      int	    retval;
      char_u  *new_dir;
  
+     if (p_verbose >= 5)
+     {
+ 	verbose_enter();
+ 	smsg((char_u *)"chdir(%s)", dir);
+ 	verbose_leave();
+     }
      length = strlen(dir);
      if (dir[length - 1] != '.')
  	return chdir(dir);	    /* No trailing dots - nothing to do. */
*** ../vim-7.2.232/src/os_mac.h	2009-06-24 16:41:01.000000000 +0200
--- src/os_mac.h	2009-07-14 16:54:33.000000000 +0200
***************
*** 291,297 ****
  #  define HAVE_SETENV
  #  define HAVE_RENAME
  # endif
- # define mch_chdir(s) chdir(s)
  #endif
  
  #if defined(MACOS_X) && !defined(HAVE_CONFIG_H)
--- 291,296 ----
*** ../vim-7.2.232/src/version.c	2009-07-14 17:38:51.000000000 +0200
--- src/version.c	2009-07-14 18:35:30.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     233,
  /**/

-- 
>From "know your smileys":
 :-O>-o   Smiley American tourist (note big mouth and camera)

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


--- NEW FILE 7.2.234 ---
To: vim-dev at vim.org
Subject: Patch 7.2.234
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.234
Problem:    It is not possible to ignore file names without a suffix.
Solution:   Use an empty entry in 'suffixes' for file names without a dot.
Files:	    runtime/doc/cmdline.txt, src/misc1.c


*** ../vim-7.2.233/runtime/doc/cmdline.txt	2008-11-09 13:43:25.000000000 +0100
--- runtime/doc/cmdline.txt	2009-07-14 13:35:56.000000000 +0200
***************
*** 441,453 ****
  those files with an extension that is in the 'suffixes' option are ignored.
  The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
  in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
! It is impossible to ignore suffixes with two dots.  Examples:
  
    pattern:	files:				match:	~
     test*	test.c test.h test.o		test.c
     test*	test.h test.o			test.h and test.o
     test*	test.i test.h test.c		test.i and test.c
  
  If there is more than one matching file (after ignoring the ones matching
  the 'suffixes' option) the first file name is inserted.  You can see that
  there is only one match when you type 'wildchar' twice and the completed
--- 439,458 ----
  those files with an extension that is in the 'suffixes' option are ignored.
  The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
  in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
! 
! An empty entry, two consecutive commas, match a file name that does not
! contain a ".", thus has no suffix.  This is useful to ignore "prog" and prefer
! "prog.c".
! 
! Examples:
  
    pattern:	files:				match:	~
     test*	test.c test.h test.o		test.c
     test*	test.h test.o			test.h and test.o
     test*	test.i test.h test.c		test.i and test.c
  
+ It is impossible to ignore suffixes with two dots.
+ 
  If there is more than one matching file (after ignoring the ones matching
  the 'suffixes' option) the first file name is inserted.  You can see that
  there is only one match when you type 'wildchar' twice and the completed
*** ../vim-7.2.233/src/misc1.c	2009-07-09 20:06:30.000000000 +0200
--- src/misc1.c	2009-07-14 15:51:55.000000000 +0200
***************
*** 8533,8543 ****
      for (setsuf = p_su; *setsuf; )
      {
  	setsuflen = copy_option_part(&setsuf, suf_buf, MAXSUFLEN, ".,");
! 	if (fnamelen >= setsuflen
! 		&& fnamencmp(suf_buf, fname + fnamelen - setsuflen,
! 					      (size_t)setsuflen) == 0)
! 	    break;
! 	setsuflen = 0;
      }
      return (setsuflen != 0);
  }
--- 8534,8558 ----
      for (setsuf = p_su; *setsuf; )
      {
  	setsuflen = copy_option_part(&setsuf, suf_buf, MAXSUFLEN, ".,");
! 	if (setsuflen == 0)
! 	{
! 	    char_u *tail = gettail(fname);
! 
! 	    /* empty entry: match name without a '.' */
! 	    if (vim_strchr(tail, '.') == NULL)
! 	    {
! 		setsuflen = 1;
! 		break;
! 	    }
! 	}
! 	else
! 	{
! 	    if (fnamelen >= setsuflen
! 		    && fnamencmp(suf_buf, fname + fnamelen - setsuflen,
! 						  (size_t)setsuflen) == 0)
! 		break;
! 	    setsuflen = 0;
! 	}
      }
      return (setsuflen != 0);
  }
*** ../vim-7.2.233/src/version.c	2009-07-14 18:38:09.000000000 +0200
--- src/version.c	2009-07-14 21:38:30.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     234,
  /**/

-- 
How many light bulbs does it take to change a person?

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


--- NEW FILE 7.2.235 ---
To: vim-dev at vim.org
Subject: Patch 7.2.235
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.235
Problem:    Using CTRL-O z= in Insert mode has a delay before redrawing.
Solution:   Reset msg_didout and msg_scroll.
Files:	    src/misc1.c, src/spell.c


*** ../vim-7.2.234/src/misc1.c	2009-07-14 21:40:30.000000000 +0200
--- src/misc1.c	2009-07-14 15:51:55.000000000 +0200
***************
*** 3276,3281 ****
--- 3276,3282 ----
  	cmdline_row = msg_row - 1;
  	need_wait_return = FALSE;
  	msg_didany = FALSE;
+ 	msg_didout = FALSE;
      }
      else
  	cmdline_row = save_cmdline_row;
*** ../vim-7.2.234/src/spell.c	2009-05-17 13:30:58.000000000 +0200
--- src/spell.c	2009-07-14 15:57:55.000000000 +0200
***************
*** 10252,10257 ****
--- 10252,10258 ----
      int		limit;
      int		selected = count;
      int		badlen = 0;
+     int		msg_scroll_save = msg_scroll;
  
      if (no_spell_checking(curwin))
  	return;
***************
*** 10416,10422 ****
  	selected = prompt_for_number(&mouse_used);
  	if (mouse_used)
  	    selected -= lines_left;
! 	lines_left = Rows;	/* avoid more prompt */
      }
  
      if (selected > 0 && selected <= sug.su_ga.ga_len && u_save_cursor() == OK)
--- 10417,10425 ----
  	selected = prompt_for_number(&mouse_used);
  	if (mouse_used)
  	    selected -= lines_left;
! 	lines_left = Rows;		/* avoid more prompt */
! 	/* don't delay for 'smd' in normal_cmd() */
! 	msg_scroll = msg_scroll_save;
      }
  
      if (selected > 0 && selected <= sug.su_ga.ga_len && u_save_cursor() == OK)
***************
*** 10441,10447 ****
  	}
  
  	/* Replace the word. */
! 	p = alloc((unsigned)STRLEN(line) - stp->st_orglen + stp->st_wordlen + 1);
  	if (p != NULL)
  	{
  	    c = (int)(sug.su_badptr - line);
--- 10444,10451 ----
  	}
  
  	/* Replace the word. */
! 	p = alloc((unsigned)STRLEN(line) - stp->st_orglen
! 						       + stp->st_wordlen + 1);
  	if (p != NULL)
  	{
  	    c = (int)(sug.su_badptr - line);
*** ../vim-7.2.234/src/version.c	2009-07-14 21:40:30.000000000 +0200
--- src/version.c	2009-07-22 11:00:34.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     235,
  /**/

-- 
>From "know your smileys":
 |-(	Contact lenses, but has lost them

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


--- NEW FILE 7.2.236 ---
To: vim-dev at vim.org
Subject: Patch 7.2.236
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.236
Problem:    Mac: Compiling with Ruby doesn't always work.
Solution:   In configure filter out the --arch argument (Bjorn Winckler)
Files:	    src/configure.in, src/auto/configure


*** ../vim-7.2.235/src/configure.in	2009-05-26 22:58:43.000000000 +0200
--- src/configure.in	2009-07-14 16:09:34.000000000 +0200
***************
*** 984,990 ****
  	fi
  	rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
  	if test "X$rubyldflags" != "X"; then
! 	  LDFLAGS="$rubyldflags $LDFLAGS"
  	fi
  	RUBY_SRC="if_ruby.c"
  	RUBY_OBJ="objects/if_ruby.o"
--- 984,996 ----
  	fi
  	rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
  	if test "X$rubyldflags" != "X"; then
! 	  dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
! 	  dnl be included if requested by passing --with-mac-arch to
! 	  dnl configure, so strip these flags first (if present)
! 	  rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
! 	  if test "X$rubyldflags" != "X"; then
! 	    LDFLAGS="$rubyldflags $LDFLAGS"
! 	  fi
  	fi
  	RUBY_SRC="if_ruby.c"
  	RUBY_OBJ="objects/if_ruby.o"
*** ../vim-7.2.235/src/auto/configure	2009-05-26 22:58:43.000000000 +0200
--- src/auto/configure	2009-07-14 16:11:58.000000000 +0200
***************
*** 5780,5786 ****
  	fi
  	rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'`
  	if test "X$rubyldflags" != "X"; then
! 	  LDFLAGS="$rubyldflags $LDFLAGS"
  	fi
  	RUBY_SRC="if_ruby.c"
  	RUBY_OBJ="objects/if_ruby.o"
--- 5780,5789 ----
  	fi
  	rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'`
  	if test "X$rubyldflags" != "X"; then
! 	  	  	  	  rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
! 	  if test "X$rubyldflags" != "X"; then
! 	    LDFLAGS="$rubyldflags $LDFLAGS"
! 	  fi
  	fi
  	RUBY_SRC="if_ruby.c"
  	RUBY_OBJ="objects/if_ruby.o"
*** ../vim-7.2.235/src/version.c	2009-07-22 11:03:38.000000000 +0200
--- src/version.c	2009-07-22 11:14:38.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     236,
  /**/

-- 
>From "know your smileys":
 <|-) Chinese
 <|-( Chinese and doesn't like these kind of jokes

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


--- NEW FILE 7.2.237 ---
To: vim-dev at vim.org
Subject: Patch 7.2.237
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.237
Problem:    Crash on exit when window icon not set.
Solution:   Copy terminal name when using it for the icon name.
Files:	    src/os_unix.c


*** ../vim-7.2.236/src/os_unix.c	2009-07-14 17:38:51.000000000 +0200
--- src/os_unix.c	2009-07-14 18:30:04.000000000 +0200
***************
*** 1734,1742 ****
      if (oldicon == NULL && !test_only)
      {
  	if (STRNCMP(T_NAME, "builtin_", 8) == 0)
! 	    oldicon = T_NAME + 8;
  	else
! 	    oldicon = T_NAME;
      }
  
      return retval;
--- 1734,1742 ----
      if (oldicon == NULL && !test_only)
      {
  	if (STRNCMP(T_NAME, "builtin_", 8) == 0)
! 	    oldicon = vim_strsave(T_NAME + 8);
  	else
! 	    oldicon = vim_strsave(T_NAME);
      }
  
      return retval;
***************
*** 1939,1947 ****
      if (!test_only)
      {
  	if (STRNCMP(T_NAME, "builtin_", 8) == 0)
! 	    oldicon = T_NAME + 8;
  	else
! 	    oldicon = T_NAME;
      }
      return FALSE;
  }
--- 1939,1947 ----
      if (!test_only)
      {
  	if (STRNCMP(T_NAME, "builtin_", 8) == 0)
! 	    oldicon = vim_strsave(T_NAME + 8);
  	else
! 	    oldicon = vim_strsave(T_NAME);
      }
      return FALSE;
  }
*** ../vim-7.2.236/src/version.c	2009-07-22 11:16:54.000000000 +0200
--- src/version.c	2009-07-22 13:26:30.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     237,
  /**/

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

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


--- NEW FILE 7.2.238 ---
To: vim-dev at vim.org
Subject: Patch 7.2.238
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.238
Problem:    Leaking memory when setting term to "builtin_dumb".
Solution:   Free memory when resetting term option t_Co.
Files:	    src/option.c, src/proto/option.pro, src/term.c


*** ../vim-7.2.237/src/option.c	2009-06-16 17:50:56.000000000 +0200
--- src/option.c	2009-07-22 12:49:19.000000000 +0200
***************
*** 403,410 ****
  #define P_NUM		0x02	/* the option is numeric */
  #define P_STRING	0x04	/* the option is a string */
  #define P_ALLOCED	0x08	/* the string option is in allocated memory,
! 				    must use vim_free() when assigning new
! 				    value. Not set if default is the same. */
  #define P_EXPAND	0x10	/* environment expansion.  NOTE: P_EXPAND can
  				   never be used for local or hidden options! */
  #define P_NODEFAULT	0x40	/* don't set to default value */
--- 403,411 ----
  #define P_NUM		0x02	/* the option is numeric */
  #define P_STRING	0x04	/* the option is a string */
  #define P_ALLOCED	0x08	/* the string option is in allocated memory,
! 				   must use free_string_option() when
! 				   assigning new value. Not set if default is
! 				   the same. */
  #define P_EXPAND	0x10	/* environment expansion.  NOTE: P_EXPAND can
  				   never be used for local or hidden options! */
  #define P_NODEFAULT	0x40	/* don't set to default value */
***************
*** 8927,8932 ****
--- 8928,8955 ----
  }
  
  /*
+  * Free the string for one term option, if it was allocated.
+  * Set the string to empty_option and clear allocated flag.
+  * "var" points to the option value.
+  */
+     void
+ free_one_termoption(var)
+     char_u *var;
+ {
+     struct vimoption   *p;
+ 
+     for (p = &options[0]; p->fullname != NULL; p++)
+ 	if (p->var == var)
+ 	{
+ 	    if (p->flags & P_ALLOCED)
+ 		free_string_option(*(char_u **)(p->var));
+ 	    *(char_u **)(p->var) = empty_option;
+ 	    p->flags &= ~P_ALLOCED;
+ 	    break;
+ 	}
+ }
+ 
+ /*
   * Set the terminal option defaults to the current value.
   * Used after setting the terminal name.
   */
*** ../vim-7.2.237/src/proto/option.pro	2009-02-21 20:27:00.000000000 +0100
--- src/proto/option.pro	2009-07-22 12:52:31.000000000 +0200
***************
*** 29,34 ****
--- 29,35 ----
  int makefoldset __ARGS((FILE *fd));
  void clear_termoptions __ARGS((void));
  void free_termoptions __ARGS((void));
+ void free_one_termoption __ARGS((char_u *var));
  void set_term_defaults __ARGS((void));
  void comp_col __ARGS((void));
  char_u *get_equalprg __ARGS((void));
*** ../vim-7.2.237/src/term.c	2009-06-16 14:31:56.000000000 +0200
--- src/term.c	2009-07-22 13:19:59.000000000 +0200
***************
*** 2881,2887 ****
  
  	/* if 'Sb' and 'AB' are not defined, reset "Co" */
  	if (*T_CSB == NUL && *T_CAB == NUL)
! 	    T_CCO = empty_option;
  
  	/* Set 'weirdinvert' according to value of 't_xs' */
  	p_wiv = (*T_XS != NUL);
--- 2881,2887 ----
  
  	/* if 'Sb' and 'AB' are not defined, reset "Co" */
  	if (*T_CSB == NUL && *T_CAB == NUL)
! 	    free_one_termoption(T_CCO);
  
  	/* Set 'weirdinvert' according to value of 't_xs' */
  	p_wiv = (*T_XS != NUL);
*** ../vim-7.2.237/src/version.c	2009-07-22 13:27:50.000000000 +0200
--- src/version.c	2009-07-22 14:25:44.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     238,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
95. Only communication in your household is through email.

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


--- NEW FILE 7.2.239 ---
To: vim-dev at vim.org
Subject: Patch 7.2.239
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.239
Problem:    Using :diffpatch twice or when patching fails causes memory
	    corruption and/or a crash.  (Bryan Venteicher)
Solution:   Detect missing output file.  Avoid using non-existing buffer.
Files:	    src/diff.c


*** ../vim-7.2.238/src/diff.c	2009-05-14 22:19:19.000000000 +0200
--- src/diff.c	2009-07-22 16:06:21.000000000 +0200
***************
*** 893,898 ****
--- 893,899 ----
      char_u	*browseFile = NULL;
      int		browse_flag = cmdmod.browse;
  #endif
+     struct stat st;
  
  #ifdef FEAT_BROWSE
      if (cmdmod.browse)
***************
*** 999,1042 ****
      STRCAT(buf, ".rej");
      mch_remove(buf);
  
!     if (curbuf->b_fname != NULL)
      {
! 	newname = vim_strnsave(curbuf->b_fname,
  					  (int)(STRLEN(curbuf->b_fname) + 4));
! 	if (newname != NULL)
! 	    STRCAT(newname, ".new");
!     }
  
  #ifdef FEAT_GUI
!     need_mouse_correct = TRUE;
  #endif
!     /* don't use a new tab page, each tab page has its own diffs */
!     cmdmod.tab = 0;
! 
!     if (win_split(0, (diff_flags & DIFF_VERTICAL) ? WSP_VERT : 0) != FAIL)
!     {
! 	/* Pretend it was a ":split fname" command */
! 	eap->cmdidx = CMD_split;
! 	eap->arg = tmp_new;
! 	do_exedit(eap, old_curwin);
  
! 	if (curwin != old_curwin)		/* split must have worked */
  	{
! 	    /* Set 'diff', 'scrollbind' on and 'wrap' off. */
! 	    diff_win_options(curwin, TRUE);
! 	    diff_win_options(old_curwin, TRUE);
  
! 	    if (newname != NULL)
  	    {
! 		/* do a ":file filename.new" on the patched buffer */
! 		eap->arg = newname;
! 		ex_file(eap);
  
  #ifdef FEAT_AUTOCMD
! 		/* Do filetype detection with the new name. */
! 		if (au_has_group((char_u *)"filetypedetect"))
! 		    do_cmdline_cmd((char_u *)":doau filetypedetect BufRead");
  #endif
  	    }
  	}
      }
--- 1000,1050 ----
      STRCAT(buf, ".rej");
      mch_remove(buf);
  
!     /* Only continue if the output file was created. */
!     if (mch_stat((char *)tmp_new, &st) < 0 || st.st_size == 0)
! 	EMSG(_("E816: Cannot read patch output"));
!     else
      {
! 	if (curbuf->b_fname != NULL)
! 	{
! 	    newname = vim_strnsave(curbuf->b_fname,
  					  (int)(STRLEN(curbuf->b_fname) + 4));
! 	    if (newname != NULL)
! 		STRCAT(newname, ".new");
! 	}
  
  #ifdef FEAT_GUI
! 	need_mouse_correct = TRUE;
  #endif
! 	/* don't use a new tab page, each tab page has its own diffs */
! 	cmdmod.tab = 0;
  
! 	if (win_split(0, (diff_flags & DIFF_VERTICAL) ? WSP_VERT : 0) != FAIL)
  	{
! 	    /* Pretend it was a ":split fname" command */
! 	    eap->cmdidx = CMD_split;
! 	    eap->arg = tmp_new;
! 	    do_exedit(eap, old_curwin);
  
! 	    /* check that split worked and editing tmp_new */
! 	    if (curwin != old_curwin && win_valid(old_curwin))
  	    {
! 		/* Set 'diff', 'scrollbind' on and 'wrap' off. */
! 		diff_win_options(curwin, TRUE);
! 		diff_win_options(old_curwin, TRUE);
! 
! 		if (newname != NULL)
! 		{
! 		    /* do a ":file filename.new" on the patched buffer */
! 		    eap->arg = newname;
! 		    ex_file(eap);
  
  #ifdef FEAT_AUTOCMD
! 		    /* Do filetype detection with the new name. */
! 		    if (au_has_group((char_u *)"filetypedetect"))
! 			do_cmdline_cmd((char_u *)":doau filetypedetect BufRead");
  #endif
+ 		}
  	    }
  	}
      }
*** ../vim-7.2.238/src/version.c	2009-07-22 14:27:33.000000000 +0200
--- src/version.c	2009-07-22 16:21:29.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     239,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
97. Your mother tells you to remember something, and you look for
    a File/Save command.

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


--- NEW FILE 7.2.240 ---
To: vim-dev at vim.org
Subject: Patch 7.2.240
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.240
Problem:    Crash when using find/replace dialog repeatedly. (Michiel
	    Hartsuiker)
Solution:   Avoid doing the operation while busy or recursively.  Also refuse
	    replace when text is locked.
Files:	    src/gui.c


*** ../vim-7.2.239/src/gui.c	2009-06-24 18:31:36.000000000 +0200
--- src/gui.c	2009-07-22 16:54:16.000000000 +0200
***************
*** 5004,5009 ****
--- 5004,5022 ----
      char_u	*p;
      regmatch_T	regmatch;
      int		save_did_emsg = did_emsg;
+     static int  busy = FALSE;
+ 
+     /* When the screen is being updated we should not change buffers and
+      * windows structures, it may cause freed memory to be used.  Also don't
+      * do this recursively (pressing "Find" quickly several times. */
+     if (updating_screen || busy)
+ 	return FALSE;
+ 
+     /* refuse replace when text cannot be changed */
+     if ((type == FRD_REPLACE || type == FRD_REPLACEALL) && text_locked())
+ 	return FALSE;
+ 
+     busy = TRUE;
  
      ga_init2(&ga, 1, 100);
      if (type == FRD_REPLACEALL)
***************
*** 5094,5099 ****
--- 5107,5113 ----
      }
  
      vim_free(ga.ga_data);
+     busy = FALSE;
      return (ga.ga_len > 0);
  }
  
*** ../vim-7.2.239/src/version.c	2009-07-22 16:22:33.000000000 +0200
--- src/version.c	2009-07-29 11:09:13.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     240,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
113. You are asked about a bus schedule, you wonder if it is 16 or 32 bits.

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


--- NEW FILE 7.2.241 ---
To: vim-dev at vim.org
Subject: Patch 7.2.241
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.241
Problem:    When using a combination of ":bufdo" and "doautoall" we may end up
	    in the wrong directory. (Ajit Thakkar)
	    Crash when triggering an autocommand in ":vimgrep".  (Yukihiro
	    Nakadaira)
Solution:   Clear w_localdir and globaldir when using the aucmd_win.
	    Use a separate flag to decide aucmd_win needs to be restored.
Files:	    src/fileio.c, src/globals.h, src/structs.h


*** ../vim-7.2.240/src/fileio.c	2009-07-01 17:11:40.000000000 +0200
--- src/fileio.c	2009-07-22 19:08:55.000000000 +0200
***************
*** 8420,8425 ****
--- 8420,8429 ----
  	if (aucmd_win == NULL)
  	    win = curwin;
      }
+     if (win == NULL && aucmd_win_used)
+ 	/* Strange recursive autocommand, fall back to using the current
+ 	 * window.  Expect a few side effects... */
+ 	win = curwin;
  
      aco->save_curwin = curwin;
      aco->save_curbuf = curbuf;
***************
*** 8428,8433 ****
--- 8432,8438 ----
  	/* There is a window for "buf" in the current tab page, make it the
  	 * curwin.  This is preferred, it has the least side effects (esp. if
  	 * "buf" is curbuf). */
+ 	aco->use_aucmd_win = FALSE;
  	curwin = win;
      }
      else
***************
*** 8436,8444 ****
--- 8441,8460 ----
  	 * effects, insert it in a the current tab page.
  	 * Anything related to a window (e.g., setting folds) may have
  	 * unexpected results. */
+ 	aco->use_aucmd_win = TRUE;
+ 	aucmd_win_used = TRUE;
  	aucmd_win->w_buffer = buf;
  	++buf->b_nwindows;
  	win_init_empty(aucmd_win); /* set cursor and topline to safe values */
+ 	vim_free(aucmd_win->w_localdir);
+ 	aucmd_win->w_localdir = NULL;
+ 
+ 	/* Make sure w_localdir and globaldir are NULL to avoid a chdir() in
+ 	 * win_enter_ext(). */
+ 	aucmd_win->w_localdir = NULL;
+ 	aco->globaldir = globaldir;
+ 	globaldir = NULL;
+ 
  
  #ifdef FEAT_WINDOWS
  	/* Split the current window, put the aucmd_win in the upper half.
***************
*** 8472,8478 ****
      int dummy;
  #endif
  
!     if (aco->new_curwin == aucmd_win)
      {
  	--curbuf->b_nwindows;
  #ifdef FEAT_WINDOWS
--- 8488,8494 ----
      int dummy;
  #endif
  
!     if (aco->use_aucmd_win)
      {
  	--curbuf->b_nwindows;
  #ifdef FEAT_WINDOWS
***************
*** 8499,8504 ****
--- 8515,8521 ----
  	/* Remove the window and frame from the tree of frames. */
  	(void)winframe_remove(curwin, &dummy, NULL);
  	win_remove(curwin, NULL);
+ 	aucmd_win_used = FALSE;
  	last_status(FALSE);	    /* may need to remove last status line */
  	restore_snapshot(SNAP_AUCMD_IDX, FALSE);
  	(void)win_comp_pos();   /* recompute window positions */
***************
*** 8517,8522 ****
--- 8534,8542 ----
  #endif
  	curbuf = curwin->w_buffer;
  
+ 	vim_free(globaldir);
+ 	globaldir = aco->globaldir;
+ 
  	/* the buffer contents may have changed */
  	check_cursor();
  	if (curwin->w_topline > curbuf->b_ml.ml_line_count)
***************
*** 8541,8547 ****
  #endif
  	{
  	    /* Restore the buffer which was previously edited by curwin, if
! 	     * it was chagned, we are still the same window and the buffer is
  	     * valid. */
  	    if (curwin == aco->new_curwin
  		    && curbuf != aco->new_curbuf
--- 8561,8567 ----
  #endif
  	{
  	    /* Restore the buffer which was previously edited by curwin, if
! 	     * it was changed, we are still the same window and the buffer is
  	     * valid. */
  	    if (curwin == aco->new_curwin
  		    && curbuf != aco->new_curbuf
*** ../vim-7.2.240/src/globals.h	2009-06-16 16:01:34.000000000 +0200
--- src/globals.h	2009-07-22 19:50:53.000000000 +0200
***************
*** 541,546 ****
--- 541,547 ----
  
  #ifdef FEAT_AUTOCMD
  EXTERN win_T	*aucmd_win;	/* window used in aucmd_prepbuf() */
+ EXTERN int	aucmd_win_used INIT(= FALSE);	/* aucmd_win is being used */
  #endif
  
  /*
*** ../vim-7.2.240/src/structs.h	2009-07-09 18:24:24.000000000 +0200
--- src/structs.h	2009-07-22 18:58:35.000000000 +0200
***************
*** 2288,2296 ****
--- 2288,2298 ----
  {
      buf_T	*save_curbuf;	/* saved curbuf */
  #ifdef FEAT_AUTOCMD
+     int		use_aucmd_win;	/* using aucmd_win */
      win_T	*save_curwin;	/* saved curwin */
      win_T	*new_curwin;	/* new curwin */
      buf_T	*new_curbuf;	/* new curbuf */
+     char_u	*globaldir;	/* saved value of globaldir */
  #endif
  } aco_save_T;
  
*** ../vim-7.2.240/src/version.c	2009-07-29 11:10:31.000000000 +0200
--- src/version.c	2009-07-29 12:06:31.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     241,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
114. You are counting items, you go "0,1,2,3,4,5,6,7,8,9,A,B,C,D...".

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


--- NEW FILE 7.2.242 ---
To: vim-dev at vim.org
Subject: Patch 7.2.242
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.242
Problem:    Setting 'lazyredraw' causes the cursor column to be recomputed.
	    (Tom Link)
Solution:   Only recompute the cursor column for a boolean option if changes
	    the cursor position.
Files:	    src/option.c


*** ../vim-7.2.241/src/option.c	2009-07-22 14:27:33.000000000 +0200
--- src/option.c	2009-07-29 10:03:39.000000000 +0200
***************
*** 7194,7199 ****
--- 7194,7207 ----
  	compatible_set();
      }
  
+     /* 'list', 'number' */
+     else if ((int *)varp == &curwin->w_p_list
+ 	  || (int *)varp == &curwin->w_p_nu)
+     {
+ 	if (curwin->w_curswant != MAXCOL)
+ 	    curwin->w_set_curswant = TRUE;
+     }
+ 
      else if ((int *)varp == &curbuf->b_p_ro)
      {
  	/* when 'readonly' is reset globally, also reset readonlymode */
***************
*** 7645,7650 ****
--- 7653,7666 ----
  	    curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
  # endif
  	}
+ 	if (curwin->w_curswant != MAXCOL)
+ 	    curwin->w_set_curswant = TRUE;
+     }
+ 
+     else if ((int *)varp == &p_arshape)
+     {
+ 	if (curwin->w_curswant != MAXCOL)
+ 	    curwin->w_set_curswant = TRUE;
      }
  #endif
  
***************
*** 7655,7662 ****
      options[opt_idx].flags |= P_WAS_SET;
  
      comp_col();			    /* in case 'ruler' or 'showcmd' changed */
!     if (curwin->w_curswant != MAXCOL)
! 	curwin->w_set_curswant = TRUE;  /* in case 'list' changed */
      check_redraw(options[opt_idx].flags);
  
      return NULL;
--- 7671,7677 ----
      options[opt_idx].flags |= P_WAS_SET;
  
      comp_col();			    /* in case 'ruler' or 'showcmd' changed */
! 
      check_redraw(options[opt_idx].flags);
  
      return NULL;
*** ../vim-7.2.241/src/version.c	2009-07-29 12:09:49.000000000 +0200
--- src/version.c	2009-07-29 15:40:43.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     242,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
117. You are more comfortable typing in html.

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


--- NEW FILE 7.2.243 ---
To: vim-dev at vim.org
Subject: Patch 7.2.243
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.243
Problem:    Memory leak when using :vimgrep and resizing. (Dominique Pelle)
Solution:   Free memory for aucmd_win when resizing and don't allocate it
	    twice.
Files:	    src/screen.c


*** ../vim-7.2.242/src/screen.c	2009-06-16 17:22:38.000000000 +0200
--- src/screen.c	2009-07-29 15:59:37.000000000 +0200
***************
*** 7467,7472 ****
--- 7467,7476 ----
       */
      FOR_ALL_TAB_WINDOWS(tp, wp)
  	win_free_lsize(wp);
+ #ifdef FEAT_AUTOCMD
+     if (aucmd_win != NULL)
+ 	win_free_lsize(aucmd_win);
+ #endif
  
      new_ScreenLines = (schar_T *)lalloc((long_u)(
  			      (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
***************
*** 7504,7510 ****
  	}
      }
  #ifdef FEAT_AUTOCMD
!     if (aucmd_win != NULL && win_alloc_lines(aucmd_win) == FAIL)
  	outofmem = TRUE;
  #endif
  #ifdef FEAT_WINDOWS
--- 7508,7515 ----
  	}
      }
  #ifdef FEAT_AUTOCMD
!     if (aucmd_win != NULL && aucmd_win->w_lines == NULL
! 					&& win_alloc_lines(aucmd_win) == FAIL)
  	outofmem = TRUE;
  #endif
  #ifdef FEAT_WINDOWS
*** ../vim-7.2.242/src/version.c	2009-07-29 15:41:32.000000000 +0200
--- src/version.c	2009-07-29 16:07:47.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     243,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
118. You are on a first-name basis with your ISP's staff.

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


--- NEW FILE 7.2.244 ---
To: vim-dev at vim.org
Subject: Patch 7.2.244
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.244
Problem:    When 'enc' is utf-8 and 'fenc' is latin1, writing a non-latin1
	    character gives a conversion error without any hint what is wrong.
Solution:   When known add the line number to the error message.
Files:	    src/fileio.c


*** ../vim-7.2.243/src/fileio.c	2009-07-29 12:09:49.000000000 +0200
--- src/fileio.c	2009-07-29 17:04:06.000000000 +0200
***************
*** 121,126 ****
--- 121,128 ----
      char_u	*bw_conv_buf;	/* buffer for writing converted chars */
      int		bw_conv_buflen; /* size of bw_conv_buf */
      int		bw_conv_error;	/* set for conversion error */
+     linenr_T	bw_conv_error_lnum;  /* first line with error or zero */
+     linenr_T	bw_start_lnum;  /* line number at start of buffer */
  # ifdef USE_ICONV
      iconv_t	bw_iconv_fd;	/* descriptor for iconv() or -1 */
  # endif
***************
*** 2924,2929 ****
--- 2925,2931 ----
      linenr_T	    lnum;
      long	    nchars;
      char_u	    *errmsg = NULL;
+     int		    errmsg_allocated = FALSE;
      char_u	    *errnum = NULL;
      char_u	    *buffer;
      char_u	    smallbuf[SMBUFSIZE];
***************
*** 2987,2992 ****
--- 2989,2995 ----
      /* must init bw_conv_buf and bw_iconv_fd before jumping to "fail" */
      write_info.bw_conv_buf = NULL;
      write_info.bw_conv_error = FALSE;
+     write_info.bw_conv_error_lnum = 0;
      write_info.bw_restlen = 0;
  # ifdef USE_ICONV
      write_info.bw_iconv_fd = (iconv_t)-1;
***************
*** 4243,4248 ****
--- 4245,4251 ----
  		nchars += write_info.bw_len;
  	}
      }
+     write_info.bw_start_lnum = start;
  #endif
  
      write_info.bw_len = bufsize;
***************
*** 4278,4283 ****
--- 4281,4289 ----
  	    nchars += bufsize;
  	    s = buffer;
  	    len = 0;
+ #ifdef FEAT_MBYTE
+ 	    write_info.bw_start_lnum = lnum;
+ #endif
  	}
  	/* write failed or last line has no EOL: stop here */
  	if (end == 0
***************
*** 4474,4480 ****
  	{
  #ifdef FEAT_MBYTE
  	    if (write_info.bw_conv_error)
! 		errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
  	    else
  #endif
  		if (got_int)
--- 4480,4496 ----
  	{
  #ifdef FEAT_MBYTE
  	    if (write_info.bw_conv_error)
! 	    {
! 		if (write_info.bw_conv_error_lnum == 0)
! 		    errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
! 		else
! 		{
! 		    errmsg_allocated = TRUE;
! 		    errmsg = alloc(300);
! 		    vim_snprintf((char *)errmsg, 300, _("E513: write error, conversion failed in line %ld (make 'fenc' empty to override)"),
! 					 (long)write_info.bw_conv_error_lnum);
! 		}
! 	    }
  	    else
  #endif
  		if (got_int)
***************
*** 4550,4555 ****
--- 4566,4577 ----
  	{
  	    STRCAT(IObuff, _(" CONVERSION ERROR"));
  	    c = TRUE;
+ 	    if (write_info.bw_conv_error_lnum != 0)
+ 	    {
+ 		int l = STRLEN(IObuff);
+ 		vim_snprintf((char *)IObuff + l, IOSIZE - l, _(" in line %ld;"),
+ 			(long)write_info.bw_conv_error_lnum);
+ 	    }
  	}
  	else if (notconverted)
  	{
***************
*** 4746,4751 ****
--- 4768,4775 ----
  	}
  	STRCAT(IObuff, errmsg);
  	emsg(IObuff);
+ 	if (errmsg_allocated)
+ 	    vim_free(errmsg);
  
  	retval = FAIL;
  	if (end == 0)
***************
*** 5105,5111 ****
  			c = buf[wlen];
  		}
  
! 		ip->bw_conv_error |= ucs2bytes(c, &p, flags);
  	    }
  	    if (flags & FIO_LATIN1)
  		len = (int)(p - buf);
--- 5129,5141 ----
  			c = buf[wlen];
  		}
  
! 		if (ucs2bytes(c, &p, flags) && !ip->bw_conv_error)
! 		{
! 		    ip->bw_conv_error = TRUE;
! 		    ip->bw_conv_error_lnum = ip->bw_start_lnum;
! 		}
! 		if (c == NL)
! 		    ++ip->bw_start_lnum;
  	    }
  	    if (flags & FIO_LATIN1)
  		len = (int)(p - buf);
***************
*** 5386,5391 ****
--- 5416,5422 ----
  #ifdef FEAT_MBYTE
  /*
   * Convert a Unicode character to bytes.
+  * Return TRUE for an error, FALSE when it's OK.
   */
      static int
  ucs2bytes(c, pp, flags)
*** ../vim-7.2.243/src/version.c	2009-07-29 16:13:35.000000000 +0200
--- src/version.c	2009-07-29 18:01:27.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     244,
  /**/

-- 
Support your right to bare arms!  Wear short sleeves!

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


--- NEW FILE 7.2.245 ---
To: vim-dev at vim.org
Subject: Patch 7.2.245
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.245
Problem:    When 'enc' is "utf-16" and 'fenc' is "utf-8" writing a file does
	    conversion while none should be done. (Yukihiro Nakadaira) When
	    'fenc' is empty the file is written as utf-8 instead of utf-16.
Solution:   Do proper comparison of encodings, taking into account that all
	    Unicode values for 'enc' use utf-8 internally.
Files:	    src/fileio.c


*** ../vim-7.2.244/src/fileio.c	2009-07-29 18:05:57.000000000 +0200
--- src/fileio.c	2009-07-29 17:04:06.000000000 +0200
***************
*** 134,140 ****
  #ifdef FEAT_MBYTE
  static linenr_T readfile_linenr __ARGS((linenr_T linecnt, char_u *p, char_u *endp));
  static int ucs2bytes __ARGS((unsigned c, char_u **pp, int flags));
! static int same_encoding __ARGS((char_u *a, char_u *b));
  static int get_fio_flags __ARGS((char_u *ptr));
  static char_u *check_for_bom __ARGS((char_u *p, long size, int *lenp, int flags));
  static int make_bom __ARGS((char_u *buf, char_u *name));
--- 134,140 ----
  #ifdef FEAT_MBYTE
  static linenr_T readfile_linenr __ARGS((linenr_T linecnt, char_u *p, char_u *endp));
  static int ucs2bytes __ARGS((unsigned c, char_u **pp, int flags));
! static int need_conversion __ARGS((char_u *fenc));
  static int get_fio_flags __ARGS((char_u *ptr));
  static char_u *check_for_bom __ARGS((char_u *p, long size, int *lenp, int flags));
  static int make_bom __ARGS((char_u *buf, char_u *name));
***************
*** 1043,1055 ****
      }
  
      /*
!      * Conversion is required when the encoding of the file is different
!      * from 'encoding' or 'encoding' is UTF-16, UCS-2 or UCS-4 (requires
!      * conversion to UTF-8).
       */
      fio_flags = 0;
!     converted = (*fenc != NUL && !same_encoding(p_enc, fenc));
!     if (converted || enc_unicode != 0)
      {
  
  	/* "ucs-bom" means we need to check the first bytes of the file
--- 1043,1054 ----
      }
  
      /*
!      * Conversion may be required when the encoding of the file is different
!      * from 'encoding' or 'encoding' is UTF-16, UCS-2 or UCS-4.
       */
      fio_flags = 0;
!     converted = need_conversion(fenc);
!     if (converted)
      {
  
  	/* "ucs-bom" means we need to check the first bytes of the file
***************
*** 3969,3978 ****
  	fenc = buf->b_p_fenc;
  
      /*
!      * The file needs to be converted when 'fileencoding' is set and
!      * 'fileencoding' differs from 'encoding'.
       */
!     converted = (*fenc != NUL && !same_encoding(p_enc, fenc));
  
      /*
       * Check if UTF-8 to UCS-2/4 or Latin1 conversion needs to be done.  Or
--- 3968,3976 ----
  	fenc = buf->b_p_fenc;
  
      /*
!      * Check if the file needs to be converted.
       */
!     converted = need_conversion(fenc);
  
      /*
       * Check if UTF-8 to UCS-2/4 or Latin1 conversion needs to be done.  Or
***************
*** 5502,5521 ****
  }
  
  /*
!  * Return TRUE if "a" and "b" are the same 'encoding'.
!  * Ignores difference between "ansi" and "latin1", "ucs-4" and "ucs-4be", etc.
   */
      static int
! same_encoding(a, b)
!     char_u	*a;
!     char_u	*b;
  {
!     int		f;
  
!     if (STRCMP(a, b) == 0)
! 	return TRUE;
!     f = get_fio_flags(a);
!     return (f != 0 && get_fio_flags(b) == f);
  }
  
  /*
--- 5500,5536 ----
  }
  
  /*
!  * Return TRUE if file encoding "fenc" requires conversion from or to
!  * 'encoding'.
   */
      static int
! need_conversion(fenc)
!     char_u	*fenc;
  {
!     int		same_encoding;
!     int		enc_flags;
!     int		fenc_flags;
  
!     if (*fenc == NUL || STRCMP(p_enc, fenc) == 0)
! 	same_encoding = TRUE;
!     else
!     {
! 	/* Ignore difference between "ansi" and "latin1", "ucs-4" and
! 	 * "ucs-4be", etc. */
! 	enc_flags = get_fio_flags(p_enc);
! 	fenc_flags = get_fio_flags(fenc);
! 	same_encoding = (enc_flags != 0 && fenc_flags == enc_flags);
!     }
!     if (same_encoding)
!     {
! 	/* Specified encoding matches with 'encoding'.  This requires
! 	 * conversion when 'encoding' is Unicode but not UTF-8. */
! 	return enc_unicode != 0;
!     }
! 
!     /* Encodings differ.  However, conversion is not needed when 'enc' is any
!      * Unicode encoding and the file is UTF-8. */
!     return !(enc_utf8 && fenc_flags == FIO_UTF8);
  }
  
  /*
*** ../vim-7.2.244/src/version.c	2009-07-29 18:05:57.000000000 +0200
--- src/version.c	2009-07-29 18:20:08.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     245,
  /**/

-- 
An actual excerpt from a classified section of a city newspaper:
"Illiterate?  Write today for free help!"

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


--- NEW FILE 7.2.246 ---
To: vim-dev at vim.org
Subject: Patch 7.2.246
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.246
Problem:    Cscope home page link is wrong.
Solution:   Update the URL. (Sergey Khorev)
Files:	    runtime/doc/if_cscop.txt


*** ../vim-7.2.245/runtime/doc/if_cscop.txt	2009-07-09 21:22:36.000000000 +0200
--- runtime/doc/if_cscop.txt	2009-09-11 11:19:31.000000000 +0200
***************
*** 481,487 ****
  any problems, suggestions, patches, et al., you have for the usage of
  cscope within Vim to him.
  							*cscope-win32*
! For a cscope version for Win32 see: http://iamphet.nm.ru/cscope/index.html
  
  Win32 support was added by Sergey Khorev <sergey.khorev at gmail.com>.  Contact
  him if you have Win32-specific issues.
--- 481,488 ----
  any problems, suggestions, patches, et al., you have for the usage of
  cscope within Vim to him.
  							*cscope-win32*
! For a cscope version for Win32 see:
! 	http://code.google.com/p/cscope-win32/
  
  Win32 support was added by Sergey Khorev <sergey.khorev at gmail.com>.  Contact
  him if you have Win32-specific issues.
*** ../vim-7.2.245/src/version.c	2009-07-29 18:24:59.000000000 +0200
--- src/version.c	2009-09-11 11:29:02.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     246,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
221. Your wife melts your keyboard in the oven.

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


--- NEW FILE 7.2.247 ---
To: vim-dev at vim.org
Subject: Patch 7.2.247
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.247
Problem:    Mzscheme interface minor problem.
Solution:   Better error message when build fails. (Sergey Khorev)
Files:	    src/if_mzsch.c


*** ../vim-7.2.246/src/if_mzsch.c	2009-07-09 20:06:30.000000000 +0200
--- src/if_mzsch.c	2009-09-11 11:20:39.000000000 +0200
***************
*** 635,642 ****
  #endif /* DYNAMIC_MZSCHEME */
  
  /* need to put it here for dynamic stuff to work */
! #ifdef INCLUDE_MZSCHEME_BASE
  # include "mzscheme_base.c"
  #endif
  
  /*
--- 635,644 ----
  #endif /* DYNAMIC_MZSCHEME */
  
  /* need to put it here for dynamic stuff to work */
! #if defined(INCLUDE_MZSCHEME_BASE)
  # include "mzscheme_base.c"
+ #elif MZSCHEME_VERSION_MAJOR >= 400
+ # error MzScheme 4.x must include mzscheme_base.c, for MinGW32 you need to define MZSCHEME_GENERATE_BASE=yes
  #endif
  
  /*
***************
*** 875,888 ****
  #ifdef INCLUDE_MZSCHEME_BASE
      {
  	/*
! 	 * versions 4.x do not provide Scheme bindings by defaults
  	 * we need to add them explicitly
  	 */
  	Scheme_Object *scheme_base_symbol = NULL;
  	MZ_GC_DECL_REG(1);
  	MZ_GC_VAR_IN_REG(0, scheme_base_symbol);
  	MZ_GC_REG();
! 	/* invoke function from generated and included base.c */
  	declare_modules(environment);
  	scheme_base_symbol = scheme_intern_symbol("scheme/base");
  	MZ_GC_CHECK();
--- 877,890 ----
  #ifdef INCLUDE_MZSCHEME_BASE
      {
  	/*
! 	 * versions 4.x do not provide Scheme bindings by default
  	 * we need to add them explicitly
  	 */
  	Scheme_Object *scheme_base_symbol = NULL;
  	MZ_GC_DECL_REG(1);
  	MZ_GC_VAR_IN_REG(0, scheme_base_symbol);
  	MZ_GC_REG();
! 	/* invoke function from generated and included mzscheme_base.c */
  	declare_modules(environment);
  	scheme_base_symbol = scheme_intern_symbol("scheme/base");
  	MZ_GC_CHECK();
*** ../vim-7.2.246/src/version.c	2009-09-11 11:30:12.000000000 +0200
--- src/version.c	2009-09-11 11:53:59.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     247,
  /**/

-- 
Your fault: core dumped

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


--- NEW FILE 7.2.248 ---
To: vim-dev at vim.org
Subject: Patch 7.2.248 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.248 (extra)
Problem:    Mzscheme interface building minor problems.
Solution:   Update Win32 makefiles. (Sergey Khorev)
Files:	    src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak


*** ../vim-7.2.247/src/Make_cyg.mak	2007-09-30 22:28:48.000000000 +0200
--- src/Make_cyg.mak	2009-09-11 11:23:23.000000000 +0200
***************
*** 212,224 ****
  MZSCHEME_VER = 209_000
  endif
  
  ifeq (yes, $(DYNAMIC_MZSCHEME))
  DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
  else
  ifndef MZSCHEME_DLLS
  MZSCHEME_DLLS = $(MZSCHEME)
  endif
! EXTRA_LIBS += -L$(MZSCHEME_DLLS) -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
  endif
  endif
  
--- 212,245 ----
  MZSCHEME_VER = 209_000
  endif
  
+ ifndef MZSCHEME_PRECISE_GC
+ MZSCHEME_PRECISE_GC=no
+ endif
+ 
+ # for version 4.x we need to generate byte-code for Scheme base
+ ifndef MZSCHEME_GENERATE_BASE
+ MZSCHEME_GENERATE_BASE=no
+ endif
+ 
  ifeq (yes, $(DYNAMIC_MZSCHEME))
  DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
  else
  ifndef MZSCHEME_DLLS
  MZSCHEME_DLLS = $(MZSCHEME)
  endif
! ifeq (yes,$(MZSCHEME_PRECISE_GC))
! MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
! else
! MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
! endif
! EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
! endif
! ifeq (yes,$(MZSCHEME_GENERATE_BASE))
! DEFINES += -DINCLUDE_MZSCHEME_BASE
! MZ_EXTRA_DEP += mzscheme_base.c
! endif
! ifeq (yes,$(MZSCHEME_PRECISE_GC))
! DEFINES += -DMZ_PRECISE_GC
  endif
  endif
  
***************
*** 473,478 ****
--- 494,502 ----
  ifdef PERL
  	-$(DEL) if_perl.c
  endif
+ ifdef MZSCHEME
+ 	-$(DEL) mzscheme_base.c
+ endif
  	-$(DEL) pathdef.c
  	$(MAKE) -C xxd -f Make_cyg.mak clean
  	$(MAKE) -C GvimExt -f Make_ming.mak clean
***************
*** 523,531 ****
--- 547,561 ----
  $(OUTDIR)/netbeans.o:	netbeans.c $(INCL) $(NBDEBUG_DEP)
  	$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
  
+ $(OUTDIR)/if_mzsch.o:	if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
+ 	$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
+ 
  $(OUTDIR)/vimrc.o:	vim.rc version.h gui_w32_rc.h
  	$(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o
  
+ mzscheme_base.c:
+ 	$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
+ 
  pathdef.c: $(INCL)
  ifneq (sh.exe, $(SHELL))
  	@echo creating pathdef.c
*** ../vim-7.2.247/src/Make_ming.mak	2009-05-26 22:58:43.000000000 +0200
--- src/Make_ming.mak	2009-09-11 11:23:28.000000000 +0200
***************
*** 135,141 ****
  ifndef MZSCHEME_DLLS
  MZSCHEME_DLLS=$(MZSCHEME)
  endif
! MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS)
  endif
  
  endif
--- 135,141 ----
  ifndef MZSCHEME_DLLS
  MZSCHEME_DLLS=$(MZSCHEME)
  endif
! MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
  endif
  
  endif
***************
*** 563,568 ****
--- 563,571 ----
  ifdef PERL
  	-$(DEL) if_perl.c
  endif
+ ifdef MZSCHEME
+ 	-$(DEL) mzscheme_base.c
+ endif
  	$(MAKE) -C GvimExt -f Make_ming.mak clean
  	$(MAKE) -C xxd -f Make_cyg.mak clean
  
*** ../vim-7.2.247/src/Make_mvc.mak	2009-06-16 16:45:14.000000000 +0200
--- src/Make_mvc.mak	2009-09-11 11:23:28.000000000 +0200
***************
*** 865,870 ****
--- 865,871 ----
  	- if exist dimm_i.c del dimm_i.c
  	- if exist dimm.tlb del dimm.tlb
  	- if exist dosinst.exe del dosinst.exe
+ 	- if exist mzscheme_base.c del mzscheme_base.c
  	cd xxd
  	$(MAKE) /NOLOGO -f Make_mvc.mak clean
  	cd ..
*** ../vim-7.2.247/src/version.c	2009-09-11 12:20:47.000000000 +0200
--- src/version.c	2009-09-11 12:48:26.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     248,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
222. You send more than 20 personal e-mails a day.

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


--- NEW FILE 7.2.249 ---
To: vim-dev at vim.org
Subject: Patch 7.2.249
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.249
Problem:    The script to check .po files can't handle '%' in plural forms.
Solution:   Remove "Plural-Forms:" from the checked string.
Files:	    src/po/check.vim


*** ../vim-7.2.248/src/po/check.vim	2008-06-09 14:45:38.000000000 +0200
--- src/po/check.vim	2009-09-11 12:37:56.000000000 +0200
***************
*** 23,28 ****
--- 23,31 ----
    " remove '%', not used for formatting.
    let idline = substitute(idline, "'%'", '', 'g')
  
+   " remove '%' used for plural forms.
+   let idline = substitute(idline, '\\nPlural-Forms: .\+;\\n', '', '')
+ 
    " remove everything but % items.
    return substitute(idline, '[^%]*\(%[-+ #''.0-9*]*l\=[dsuxXpoc%]\)\=', '\1', 'g')
  endfunc
*** ../vim-7.2.248/src/version.c	2009-09-11 12:48:56.000000000 +0200
--- src/version.c	2009-09-11 12:59:18.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     249,
  /**/

-- 
If evolution theories are correct, humans will soon grow a third
hand for operating the mouse.

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


--- NEW FILE 7.2.250 ---
To: vim-dev at vim.org
Subject: Patch 7.2.250 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.250 (extra)
Problem:    Possible buffer overflow.
Solution:   Compute the remaining space. (Dominique Pelle)
Files:	    src/GvimExt/gvimext.cpp


*** ../vim-7.2.249/src/GvimExt/gvimext.cpp	2008-07-24 20:51:11.000000000 +0200
--- src/GvimExt/gvimext.cpp	2009-09-11 13:26:27.000000000 +0200
***************
*** 635,641 ****
  	}
  	// Now concatenate
  	strncpy(temp, _("Edit with existing Vim - "), BUFSIZE - 1);
! 	strncat(temp, title, BUFSIZE - 1);
  	InsertMenu(hMenu,
  		indexMenu++,
  		MF_STRING|MF_BYPOSITION,
--- 635,643 ----
  	}
  	// Now concatenate
  	strncpy(temp, _("Edit with existing Vim - "), BUFSIZE - 1);
! 	temp[BUFSIZE - 1] = '\0';
! 	strncat(temp, title, BUFSIZE - 1 - strlen(temp));
! 	temp[BUFSIZE - 1] = '\0';
  	InsertMenu(hMenu,
  		indexMenu++,
  		MF_STRING|MF_BYPOSITION,
*** ../vim-7.2.249/src/version.c	2009-09-11 12:59:57.000000000 +0200
--- src/version.c	2009-09-11 13:23:45.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     250,
  /**/


-- 
hundred-and-one symptoms of being an internet addict:
223. You set up a web-cam as your home's security system.

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


--- NEW FILE 7.2.251 ---
To: vim-dev at vim.org
Subject: Patch 7.2.251
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.251 (after 7.2.044)
Problem:    Compiler adds invalid memory bounds check.
Solution:   Remove _FORTIFY_SOURCE=2 from CFLAGS. (Dominique Pelle)
Files:	    src/auto/configure, src/configure.in


*** ../vim-7.2.250/src/auto/configure	2009-07-22 11:16:54.000000000 +0200
--- src/auto/configure	2009-08-07 14:49:52.000000000 +0200
***************
*** 17135,17141 ****
        { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
  $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
    if test "$gccmajor" -gt "3"; then
!     CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
      { $as_echo "$as_me:$LINENO: result: yes" >&5
  $as_echo "yes" >&6; }
    else
--- 17135,17141 ----
        { $as_echo "$as_me:$LINENO: checking whether we need -D_FORTIFY_SOURCE=1" >&5
  $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
    if test "$gccmajor" -gt "3"; then
!     CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
      { $as_echo "$as_me:$LINENO: result: yes" >&5
  $as_echo "yes" >&6; }
    else
*** ../vim-7.2.250/src/configure.in	2009-07-22 11:16:54.000000000 +0200
--- src/configure.in	2009-08-07 14:49:47.000000000 +0200
***************
*** 3233,3239 ****
    dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
    AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
    if test "$gccmajor" -gt "3"; then
!     CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
      AC_MSG_RESULT(yes)
    else
      AC_MSG_RESULT(no)
--- 3233,3239 ----
    dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
    AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
    if test "$gccmajor" -gt "3"; then
!     CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
      AC_MSG_RESULT(yes)
    else
      AC_MSG_RESULT(no)
*** ../vim-7.2.250/src/version.c	2009-09-11 13:26:38.000000000 +0200
--- src/version.c	2009-09-11 13:43:46.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     251,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
225. You sign up for free subscriptions for all the computer magazines

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


--- NEW FILE 7.2.252 ---
To: vim-dev at vim.org
Subject: Patch 7.2.252
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.252
Problem:    When using a multi-byte 'enc' the 'iskeyword' option cannot
	    contain characters above 128.
Solution:   Use mb_ptr2char_adv().
Files:	    src/charset.c


*** ../vim-7.2.251/src/charset.c	2009-05-14 22:19:19.000000000 +0200
--- src/charset.c	2009-09-09 21:11:46.000000000 +0200
***************
*** 174,179 ****
--- 174,184 ----
  	    if (VIM_ISDIGIT(*p))
  		c = getdigits(&p);
  	    else
+ #ifdef FEAT_MBYTE
+ 		 if (has_mbyte)
+ 		c = mb_ptr2char_adv(&p);
+ 	    else
+ #endif
  		c = *p++;
  	    c2 = -1;
  	    if (*p == '-' && p[1] != NUL)
*** ../vim-7.2.251/src/version.c	2009-09-11 13:44:33.000000000 +0200
--- src/version.c	2009-09-11 14:01:48.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     252,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
226. You sit down at the computer right after dinner and your spouse
     says "See you in the morning."

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


--- NEW FILE 7.2.253 ---
To: vim-dev at vim.org
Subject: Patch 7.2.253
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.253
Problem:    Netbeans interface: getLength always uses current buffer.
Solution:   Use ml_get_buf() instead of ml_get(). (Xavier de Gaye)
Files:	    src/netbeans.c


*** ../vim-7.2.252/src/netbeans.c	2009-06-24 16:49:50.000000000 +0200
--- src/netbeans.c	2009-09-11 13:40:14.000000000 +0200
***************
*** 1499,1505 ****
  		    return FAIL;
  		}
  		first = *pos;
! 		nbdebug(("    FIRST POS: line %d, col %d\n", first.lnum, first.col));
  		pos = off2pos(buf->bufp, off+count-1);
  		if (!pos)
  		{
--- 1499,1506 ----
  		    return FAIL;
  		}
  		first = *pos;
! 		nbdebug(("    FIRST POS: line %d, col %d\n",
! 						      first.lnum, first.col));
  		pos = off2pos(buf->bufp, off+count-1);
  		if (!pos)
  		{
***************
*** 1510,1516 ****
  		    return FAIL;
  		}
  		last = *pos;
! 		nbdebug(("    LAST POS: line %d, col %d\n", last.lnum, last.col));
  		del_from_lnum = first.lnum;
  		del_to_lnum = last.lnum;
  		doupdate = 1;
--- 1511,1518 ----
  		    return FAIL;
  		}
  		last = *pos;
! 		nbdebug(("    LAST POS: line %d, col %d\n",
! 							last.lnum, last.col));
  		del_from_lnum = first.lnum;
  		del_to_lnum = last.lnum;
  		doupdate = 1;
***************
*** 1521,1527 ****
  		next = off2pos(buf->bufp, off + count);
  
  		/* Remove part of the first line. */
! 		if (first.col != 0 || (next != NULL && first.lnum == next->lnum))
  		{
  		    if (first.lnum != last.lnum
  			    || (next != NULL && first.lnum != next->lnum))
--- 1523,1530 ----
  		next = off2pos(buf->bufp, off + count);
  
  		/* Remove part of the first line. */
! 		if (first.col != 0
! 				|| (next != NULL && first.lnum == next->lnum))
  		{
  		    if (first.lnum != last.lnum
  			    || (next != NULL && first.lnum != next->lnum))
***************
*** 1584,1590 ****
  			int id = buf_findsign_id(buf->bufp, (linenr_T)i);
  			if (id > 0)
  			{
! 			    nbdebug(("    Deleting sign %d on line %d\n", id, i));
  			    buf_delsign(buf->bufp, id);
  			}
  			else
--- 1587,1594 ----
  			int id = buf_findsign_id(buf->bufp, (linenr_T)i);
  			if (id > 0)
  			{
! 			    nbdebug(("    Deleting sign %d on line %d\n",
! 								      id, i));
  			    buf_delsign(buf->bufp, id);
  			}
  			else
***************
*** 1593,1599 ****
  			}
  		    }
  
! 		    nbdebug(("    Deleting lines %d through %d\n", del_from_lnum, del_to_lnum));
  		    curwin->w_cursor.lnum = del_from_lnum;
  		    curwin->w_cursor.col = 0;
  		    del_lines(del_to_lnum - del_from_lnum + 1, FALSE);
--- 1597,1604 ----
  			}
  		    }
  
! 		    nbdebug(("    Deleting lines %d through %d\n",
! 						 del_from_lnum, del_to_lnum));
  		    curwin->w_cursor.lnum = del_from_lnum;
  		    curwin->w_cursor.col = 0;
  		    del_lines(del_to_lnum - del_from_lnum + 1, FALSE);
***************
*** 3514,3520 ****
  	    eol_size = 1;
  	for (lnum = 1; lnum <= bufp->b_ml.ml_line_count; ++lnum)
  	{
! 	    char_count += (long)STRLEN(ml_get(lnum)) + eol_size;
  	    /* Check for a CTRL-C every 100000 characters */
  	    if (char_count > last_check)
  	    {
--- 3519,3526 ----
  	    eol_size = 1;
  	for (lnum = 1; lnum <= bufp->b_ml.ml_line_count; ++lnum)
  	{
! 	    char_count += (long)STRLEN(ml_get_buf(bufp, lnum, FALSE))
! 								   + eol_size;
  	    /* Check for a CTRL-C every 100000 characters */
  	    if (char_count > last_check)
  	    {
*** ../vim-7.2.252/src/version.c	2009-09-11 14:02:25.000000000 +0200
--- src/version.c	2009-09-11 14:18:45.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     253,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
227. You sleep next to your monitor.  Or on top of it.

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


--- NEW FILE 7.2.254 ---
To: vim-dev at vim.org
Subject: Patch 7.2.254
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.254
Problem:    Compiler warning for assigning size_t to int.
Solution:   Use size_t for the variable. (George Reilly)
Files:	    src/fileio.c


*** ../vim-7.2.253/src/fileio.c	2009-07-29 18:24:59.000000000 +0200
--- src/fileio.c	2009-09-11 13:46:19.000000000 +0200
***************
*** 4568,4574 ****
  	    c = TRUE;
  	    if (write_info.bw_conv_error_lnum != 0)
  	    {
! 		int l = STRLEN(IObuff);
  		vim_snprintf((char *)IObuff + l, IOSIZE - l, _(" in line %ld;"),
  			(long)write_info.bw_conv_error_lnum);
  	    }
--- 4568,4574 ----
  	    c = TRUE;
  	    if (write_info.bw_conv_error_lnum != 0)
  	    {
! 		size_t l = STRLEN(IObuff);
  		vim_snprintf((char *)IObuff + l, IOSIZE - l, _(" in line %ld;"),
  			(long)write_info.bw_conv_error_lnum);
  	    }
*** ../vim-7.2.253/src/version.c	2009-09-11 14:19:41.000000000 +0200
--- src/version.c	2009-09-11 15:03:42.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     254,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
230. You spend your Friday nights typing away at your keyboard

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


--- NEW FILE 7.2.255 ---
To: vim-dev at vim.org
Subject: Patch 7.2.255
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.255 (after 7.2.242)
Problem:    Setting 'rightleft', 'linebreak' and 'wrap' may cause cursor to be
	    in wrong place.
Solution:   Recompute the cursor column for these options.
Files:	    src/option.c


*** ../vim-7.2.254/src/option.c	2009-07-29 15:41:32.000000000 +0200
--- src/option.c	2009-09-11 13:59:55.000000000 +0200
***************
*** 7430,7435 ****
--- 7430,7437 ----
      {
  	if (curwin->w_p_wrap)
  	    curwin->w_leftcol = 0;
+ 	if (curwin->w_curswant != MAXCOL)
+ 	    curwin->w_set_curswant = TRUE;
      }
  
  #ifdef FEAT_WINDOWS
***************
*** 7664,7669 ****
--- 7666,7687 ----
      }
  #endif
  
+ #ifdef FEAT_LINEBREAK
+     if ((int *)varp == &curwin->w_p_lbr)
+     {
+ 	if (curwin->w_curswant != MAXCOL)
+ 	    curwin->w_set_curswant = TRUE;
+     }
+ #endif
+ 
+ #ifdef FEAT_RIGHTLEFT
+     if ((int *)varp == &curwin->w_p_rl)
+     {
+ 	if (curwin->w_curswant != MAXCOL)
+ 	    curwin->w_set_curswant = TRUE;
+     }
+ #endif
+ 
      /*
       * End of handling side effects for bool options.
       */
*** ../vim-7.2.254/src/version.c	2009-09-11 15:04:13.000000000 +0200
--- src/version.c	2009-09-11 15:19:40.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     255,
  /**/

-- 
A computer without Windows is like a fish without a bicycle.

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


--- NEW FILE 7.2.256 ---
To: vim-dev at vim.org
Subject: Patch 7.2.256
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.256
Problem:    When 'guifont' was not set GTK font dialog doesn't have a default.
	    (Andreas Metzler)
Solution:   Set default to DEFAULT_FONT. (James Vega)
Files:	    src/gui_gtk_x11.c


*** ../vim-7.2.255/src/gui_gtk_x11.c	2009-07-01 18:04:30.000000000 +0200
--- src/gui_gtk_x11.c	2009-09-11 14:21:32.000000000 +0200
***************
*** 4729,4734 ****
--- 4729,4737 ----
      if (oldval != NULL && *oldval != NUL)
  	gtk_font_selection_dialog_set_font_name(
  		GTK_FONT_SELECTION_DIALOG(gui.fontdlg), (char *)oldval);
+     else
+ 	gtk_font_selection_dialog_set_font_name(
+ 		GTK_FONT_SELECTION_DIALOG(gui.fontdlg), DEFAULT_FONT);
  
      if (gui.fontname)
      {
***************
*** 4816,4821 ****
--- 4819,4827 ----
  	if (oldname != oldval)
  	    vim_free(oldname);
      }
+     else
+ 	gtk_font_selection_dialog_set_font_name(
+ 		GTK_FONT_SELECTION_DIALOG(dialog), DEFAULT_FONT);
  
      response = gtk_dialog_run(GTK_DIALOG(dialog));
  
*** ../vim-7.2.255/src/version.c	2009-09-11 15:20:22.000000000 +0200
--- src/version.c	2009-09-11 15:45:36.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     256,
  /**/

-- 
Get a life?  What is the URL where it can be downloaded?

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


--- NEW FILE 7.2.257 ---
To: vim-dev at vim.org
Subject: Patch 7.2.257
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.257
Problem:    With GTK 2.17 lots of assertion error messages.
Solution:   Remove check for static gravity. (Sebastian Droege)
Files:	    src/gui_gtk_f.c


*** ../vim-7.2.256/src/gui_gtk_f.c	2009-05-17 23:25:16.000000000 +0200
--- src/gui_gtk_f.c	2009-09-11 15:15:41.000000000 +0200
***************
*** 860,870 ****
  gtk_form_set_static_gravity(GdkWindow *window, gboolean use_static)
  {
  #ifdef HAVE_GTK2
!     gboolean static_gravity_supported;
! 
!     static_gravity_supported = gdk_window_set_static_gravities(window,
! 							       use_static);
!     g_return_if_fail(static_gravity_supported);
  #else
      XSetWindowAttributes xattributes;
  
--- 860,868 ----
  gtk_form_set_static_gravity(GdkWindow *window, gboolean use_static)
  {
  #ifdef HAVE_GTK2
!     /* We don't check if static gravity is actually supported, because it
!      * results in an annoying assertion error message. */
!     gdk_window_set_static_gravities(window, use_static);
  #else
      XSetWindowAttributes xattributes;
  
*** ../vim-7.2.256/src/version.c	2009-09-11 15:46:20.000000000 +0200
--- src/version.c	2009-09-11 16:16:52.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     257,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
231. You sprinkle Carpet Fresh on the rugs and put your vacuum cleaner
     in the front doorway permanently so it always looks like you are
     actually attempting to do something about that mess that has amassed
     since you discovered the Internet.

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


--- NEW FILE 7.2.258 ---
To: vim-dev at vim.org
Subject: Patch 7.2.258
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.258
Problem:    v:beval_col and b:beval_text are wrong in UTF-8 text. (Tony
	    Mechelynck)
Solution:   Use byte number instead of character number for the column.
Files:	    src/ui.c


*** ../vim-7.2.257/src/ui.c	2009-07-01 18:04:30.000000000 +0200
--- src/ui.c	2009-09-11 16:11:50.000000000 +0200
***************
*** 3055,3072 ****
      int		vcol;
  {
      /* try to advance to the specified column */
-     int		col = 0;
      int		count = 0;
      char_u	*ptr;
  
!     ptr = ml_get_buf(wp->w_buffer, lnum, FALSE);
      while (count <= vcol && *ptr != NUL)
      {
- 	++col;
  	count += win_lbr_chartabsize(wp, ptr, count, NULL);
  	mb_ptr_adv(ptr);
      }
!     return col;
  }
  #endif
  
--- 3055,3071 ----
      int		vcol;
  {
      /* try to advance to the specified column */
      int		count = 0;
      char_u	*ptr;
+     char_u	*start;
  
!     start = ptr = ml_get_buf(wp->w_buffer, lnum, FALSE);
      while (count <= vcol && *ptr != NUL)
      {
  	count += win_lbr_chartabsize(wp, ptr, count, NULL);
  	mb_ptr_adv(ptr);
      }
!     return (int)(ptr - start);
  }
  #endif
  
*** ../vim-7.2.257/src/version.c	2009-09-11 16:17:36.000000000 +0200
--- src/version.c	2009-09-11 16:45:48.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     258,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
232. You start conversations with, "Have you gotten an ISDN line?"

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


--- NEW FILE 7.2.259 ---
To: vim-dev at vim.org
Subject: Patch 7.2.259
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.259
Problem:    exists() doesn't work properly for an empty aucmd group.
Solution:   Change how au_exists() handles a missing pattern.  Also add a
	    test for this. (Bob Hiestand)
Files:	    src/fileio.c, src/testdir/Makefile, src/testdir/test67.in,
	    src/testdir/test67.ok


*** ../vim-7.2.258/src/fileio.c	2009-09-11 15:04:13.000000000 +0200
--- src/fileio.c	2009-09-11 16:37:08.000000000 +0200
***************
*** 9498,9512 ****
      ap = first_autopat[(int)event];
      if (ap == NULL)
  	goto theend;
-     if (pattern == NULL)
-     {
- 	retval = TRUE;
- 	goto theend;
-     }
  
      /* if pattern is "<buffer>", special handling is needed which uses curbuf */
      /* for pattern "<buffer=N>, fnamecmp() will work fine */
!     if (STRICMP(pattern, "<buffer>") == 0)
  	buflocal_buf = curbuf;
  
      /* Check if there is an autocommand with the given pattern. */
--- 9498,9507 ----
      ap = first_autopat[(int)event];
      if (ap == NULL)
  	goto theend;
  
      /* if pattern is "<buffer>", special handling is needed which uses curbuf */
      /* for pattern "<buffer=N>, fnamecmp() will work fine */
!     if (pattern != NULL && STRICMP(pattern, "<buffer>") == 0)
  	buflocal_buf = curbuf;
  
      /* Check if there is an autocommand with the given pattern. */
***************
*** 9515,9523 ****
  	/* For buffer-local autocommands, fnamecmp() works fine. */
  	if (ap->pat != NULL && ap->cmds != NULL
  	    && (group == AUGROUP_ALL || ap->group == group)
! 	    && (buflocal_buf == NULL
! 		 ? fnamecmp(ap->pat, pattern) == 0
! 		 : ap->buflocal_nr == buflocal_buf->b_fnum))
  	{
  	    retval = TRUE;
  	    break;
--- 9510,9519 ----
  	/* For buffer-local autocommands, fnamecmp() works fine. */
  	if (ap->pat != NULL && ap->cmds != NULL
  	    && (group == AUGROUP_ALL || ap->group == group)
! 	    && (pattern == NULL
! 		|| (buflocal_buf == NULL
! 		    ? fnamecmp(ap->pat, pattern) == 0
! 		    : ap->buflocal_nr == buflocal_buf->b_fnum)))
  	{
  	    retval = TRUE;
  	    break;
*** ../vim-7.2.258/src/testdir/Makefile	2009-06-24 18:07:55.000000000 +0200
--- src/testdir/Makefile	2009-09-11 16:31:33.000000000 +0200
***************
*** 22,28 ****
  		test48.out test49.out test51.out test52.out test53.out \
  		test54.out test55.out test56.out test57.out test58.out \
  		test59.out test60.out test61.out test62.out test63.out \
! 		test64.out test65.out test66.out
  
  SCRIPTS_GUI = test16.out
  
--- 22,28 ----
  		test48.out test49.out test51.out test52.out test53.out \
  		test54.out test55.out test56.out test57.out test58.out \
  		test59.out test60.out test61.out test62.out test63.out \
! 		test64.out test65.out test66.out test67.out
  
  SCRIPTS_GUI = test16.out
  
*** ../vim-7.2.258/src/testdir/test67.in	2009-09-11 17:23:47.000000000 +0200
--- src/testdir/test67.in	2009-09-11 16:43:11.000000000 +0200
***************
*** 0 ****
--- 1,33 ----
+ Test that groups and patterns are tested correctly when calling exists() for
+ autocommands.
+ 
+ STARTTEST
+ :so small.vim
+ :let results=[]
+ :augroup auexists
+ :augroup END
+ :call add(results, "##BufEnter: " . exists("##BufEnter"))
+ :call add(results, "#BufEnter: " . exists("#BufEnter"))
+ :au BufEnter * let g:entered=1
+ :call add(results, "#BufEnter: " . exists("#BufEnter"))
+ :call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
+ :augroup auexists
+ :au BufEnter * let g:entered=1
+ :augroup END
+ :call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
+ :call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
+ :au BufEnter *.test let g:entered=1
+ :call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
+ :edit testfile.test
+ :call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
+ :au BufEnter <buffer> let g:entered=1
+ :call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
+ :edit testfile2.test
+ :call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
+ :e test.out
+ :call append(0, results)
+ :$d
+ :w
+ :qa!
+ ENDTEST
+ 
*** ../vim-7.2.258/src/testdir/test67.ok	2009-09-11 17:23:47.000000000 +0200
--- src/testdir/test67.ok	2009-09-11 16:43:15.000000000 +0200
***************
*** 0 ****
--- 1,10 ----
+ ##BufEnter: 1
+ #BufEnter: 0
+ #BufEnter: 1
+ #auexists#BufEnter: 0
+ #auexists#BufEnter: 1
+ #BufEnter#*.test: 0
+ #BufEnter#*.test: 1
+ #BufEnter#<buffer>: 0
+ #BufEnter#<buffer>: 1
+ #BufEnter#<buffer>: 0
*** ../vim-7.2.258/src/version.c	2009-09-11 16:48:06.000000000 +0200
--- src/version.c	2009-09-11 17:23:14.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     259,
  /**/

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

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


--- NEW FILE 7.2.260 ---
To: vim-dev at vim.org
Subject: Patch 7.2.260 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.260 (extra part of 7.2.259)
Problem:    exists() doesn't work properly for empty aucmd group.
Solution:   Change how au_exists() handles a missing pattern.  Also add a
	    test for this. (Bob Hiestand)
Files:	    src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
	    src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
	    src/testdir/Make_vms.mms


*** ../vim-7.2.259/src/testdir/Make_amiga.mak	2009-03-11 16:36:04.000000000 +0100
--- src/testdir/Make_amiga.mak	2009-09-11 16:29:54.000000000 +0200
***************
*** 26,32 ****
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out
  
  .SUFFIXES: .in .out
  
--- 26,32 ----
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out test67.out
  
  .SUFFIXES: .in .out
  
***************
*** 112,114 ****
--- 112,115 ----
  test64.out: test64.in
  test65.out: test65.in
  test66.out: test66.in
+ test67.out: test67.in
*** ../vim-7.2.259/src/testdir/Make_dos.mak	2009-03-11 16:36:04.000000000 +0100
--- src/testdir/Make_dos.mak	2009-09-11 16:30:17.000000000 +0200
***************
*** 26,32 ****
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out
  
  SCRIPTS32 =	test50.out
  
--- 26,32 ----
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out test67.out
  
  SCRIPTS32 =	test50.out
  
*** ../vim-7.2.259/src/testdir/Make_ming.mak	2009-03-11 16:36:04.000000000 +0100
--- src/testdir/Make_ming.mak	2009-09-11 16:30:37.000000000 +0200
***************
*** 45,51 ****
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out
  
  SCRIPTS32 =	test50.out
  
--- 45,51 ----
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out test67.out
  
  SCRIPTS32 =	test50.out
  
*** ../vim-7.2.259/src/testdir/Make_os2.mak	2009-03-11 16:36:04.000000000 +0100
--- src/testdir/Make_os2.mak	2009-09-11 16:30:52.000000000 +0200
***************
*** 26,32 ****
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out
  
  .SUFFIXES: .in .out
  
--- 26,32 ----
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out test67.out
  
  .SUFFIXES: .in .out
  
*** ../vim-7.2.259/src/testdir/Make_vms.mms	2009-03-11 16:36:04.000000000 +0100
--- src/testdir/Make_vms.mms	2009-09-11 16:31:06.000000000 +0200
***************
*** 4,10 ****
  # Authors:	Zoltan Arpadffy, <arpadffy at polarhome.com>
  #		Sandor Kopanyi,  <sandor.kopanyi at mailbox.hu>
  #
! # Last change:  2009 Mar 05
  #
  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  # Edit the lines in the Configuration section below to select.
--- 4,10 ----
  # Authors:	Zoltan Arpadffy, <arpadffy at polarhome.com>
  #		Sandor Kopanyi,  <sandor.kopanyi at mailbox.hu>
  #
! # Last change:  2009 Sep 11
  #
  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  # Edit the lines in the Configuration section below to select.
***************
*** 69,75 ****
  	 test48.out test51.out test53.out test54.out test55.out \
  	 test56.out test57.out test60.out \
  	 test61.out test62.out test63.out test64.out test65.out \
! 	 test66.out
  
  .IFDEF WANT_GUI
  SCRIPT_GUI = test16.out
--- 69,75 ----
  	 test48.out test51.out test53.out test54.out test55.out \
  	 test56.out test57.out test60.out \
  	 test61.out test62.out test63.out test64.out test65.out \
! 	 test66.out test67.out
  
  .IFDEF WANT_GUI
  SCRIPT_GUI = test16.out
*** ../vim-7.2.259/src/version.c	2009-09-11 17:24:01.000000000 +0200
--- src/version.c	2009-09-18 14:57:05.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     260,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
251. You've never seen your closest friends who usually live WAY too far away.

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


--- NEW FILE 7.2.261 ---
To: vim-dev at vim.org
Subject: Patch 7.2.261
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.261
Problem:    When deleting lines with a specific folding configuration E38 may
	    appear. (Shahaf)
Solution:   When adjusting nested folds for deleted lines take into account
	    that they don't start at the top of the enclosing fold.
Files:	    src/fold.c


*** ../vim-7.2.260/src/fold.c	2009-01-06 15:01:58.000000000 +0100
--- src/fold.c	2009-09-18 14:43:23.000000000 +0200
***************
*** 1607,1617 ****
  	    }
  	    else
  	    {
- 		/* 2, 3, or 5: need to correct nested folds too */
- 		foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top,
- 				  line2 - fp->fd_top, amount, amount_after);
  		if (fp->fd_top < top)
  		{
  		    if (last <= line2)
  		    {
  			/* 2. fold contains line1, line2 is below fold */
--- 1607,1617 ----
  	    }
  	    else
  	    {
  		if (fp->fd_top < top)
  		{
+ 		    /* 2 or 3: need to correct nested folds too */
+ 		    foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top,
+ 				  line2 - fp->fd_top, amount, amount_after);
  		    if (last <= line2)
  		    {
  			/* 2. fold contains line1, line2 is below fold */
***************
*** 1628,1634 ****
  		}
  		else
  		{
! 		    /* 5. fold is below line1 and contains line2 */
  		    if (amount == MAXLNUM)
  		    {
  			fp->fd_len -= line2 - fp->fd_top + 1;
--- 1628,1638 ----
  		}
  		else
  		{
! 		    /* 5. fold is below line1 and contains line2; need to
! 		     * correct nested folds too */
! 		    foldMarkAdjustRecurse(&fp->fd_nested, line1 - fp->fd_top,
! 				  line2 - fp->fd_top, amount,
! 				  amount_after + (fp->fd_top - top));
  		    if (amount == MAXLNUM)
  		    {
  			fp->fd_len -= line2 - fp->fd_top + 1;
*** ../vim-7.2.260/src/version.c	2009-09-18 14:58:26.000000000 +0200
--- src/version.c	2009-09-18 15:14:40.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     261,
  /**/

-- 
Emacs is a nice OS - but it lacks a good text editor.
That's why I am using Vim.  --Anonymous

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


--- NEW FILE 7.2.262 ---
To: vim-dev at vim.org
Subject: Patch 7.2.262
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.262
Problem:    When using custom completion for a user command the pattern string
	    goes beyond the cursor position. (Hari Krishna Dara)
Solution:   Truncate the string at the cursor position.
Files:	    src/ex_getln.c, src/structs.h


*** ../vim-7.2.261/src/ex_getln.c	2009-06-24 17:04:40.000000000 +0200
--- src/ex_getln.c	2009-09-18 16:58:16.000000000 +0200
***************
*** 3266,3272 ****
      int		i, j;
      char_u	*p1;
      char_u	*p2;
-     int		oldlen;
      int		difflen;
      int		v;
  
--- 3266,3271 ----
***************
*** 3291,3297 ****
      out_flush();
  
      i = (int)(xp->xp_pattern - ccline.cmdbuff);
!     oldlen = ccline.cmdpos - i;
  
      if (type == WILD_NEXT || type == WILD_PREV)
      {
--- 3290,3296 ----
      out_flush();
  
      i = (int)(xp->xp_pattern - ccline.cmdbuff);
!     xp->xp_pattern_len = ccline.cmdpos - i;
  
      if (type == WILD_NEXT || type == WILD_PREV)
      {
***************
*** 3305,3322 ****
  	/*
  	 * Translate string into pattern and expand it.
  	 */
! 	if ((p1 = addstar(&ccline.cmdbuff[i], oldlen, xp->xp_context)) == NULL)
  	    p2 = NULL;
  	else
  	{
! 	    p2 = ExpandOne(xp, p1, vim_strnsave(&ccline.cmdbuff[i], oldlen),
  		    WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
  							      |options, type);
  	    vim_free(p1);
  	    /* longest match: make sure it is not shorter (happens with :help */
  	    if (p2 != NULL && type == WILD_LONGEST)
  	    {
! 		for (j = 0; j < oldlen; ++j)
  		     if (ccline.cmdbuff[i + j] == '*'
  			     || ccline.cmdbuff[i + j] == '?')
  			 break;
--- 3304,3323 ----
  	/*
  	 * Translate string into pattern and expand it.
  	 */
! 	if ((p1 = addstar(xp->xp_pattern, xp->xp_pattern_len,
! 						     xp->xp_context)) == NULL)
  	    p2 = NULL;
  	else
  	{
! 	    p2 = ExpandOne(xp, p1,
! 			 vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len),
  		    WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
  							      |options, type);
  	    vim_free(p1);
  	    /* longest match: make sure it is not shorter (happens with :help */
  	    if (p2 != NULL && type == WILD_LONGEST)
  	    {
! 		for (j = 0; j < xp->xp_pattern_len; ++j)
  		     if (ccline.cmdbuff[i + j] == '*'
  			     || ccline.cmdbuff[i + j] == '?')
  			 break;
***************
*** 3331,3337 ****
  
      if (p2 != NULL && !got_int)
      {
! 	difflen = (int)STRLEN(p2) - oldlen;
  	if (ccline.cmdlen + difflen > ccline.cmdbufflen - 4)
  	{
  	    v = realloc_cmdbuff(ccline.cmdlen + difflen);
--- 3332,3338 ----
  
      if (p2 != NULL && !got_int)
      {
! 	difflen = (int)STRLEN(p2) - xp->xp_pattern_len;
  	if (ccline.cmdlen + difflen > ccline.cmdbufflen - 4)
  	{
  	    v = realloc_cmdbuff(ccline.cmdlen + difflen);
***************
*** 3620,3625 ****
--- 3621,3627 ----
      expand_T	*xp;
  {
      xp->xp_pattern = NULL;
+     xp->xp_pattern_len = 0;
      xp->xp_backslash = XP_BS_NONE;
  #ifndef BACKSLASH_IN_FILENAME
      xp->xp_shell = FALSE;
***************
*** 4311,4318 ****
      }
  
      /* add star to file name, or convert to regexp if not exp. files. */
!     file_str = addstar(xp->xp_pattern,
! 			   (int)(str + col - xp->xp_pattern), xp->xp_context);
      if (file_str == NULL)
  	return EXPAND_UNSUCCESSFUL;
  
--- 4313,4320 ----
      }
  
      /* add star to file name, or convert to regexp if not exp. files. */
!     xp->xp_pattern_len = (int)(str + col - xp->xp_pattern);
!     file_str = addstar(xp->xp_pattern, xp->xp_pattern_len, xp->xp_context);
      if (file_str == NULL)
  	return EXPAND_UNSUCCESSFUL;
  
***************
*** 4781,4787 ****
  	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. */
--- 4783,4789 ----
  	sprintf((char *)num, "%d", ccline.cmdpos);
  	args[1] = ccline.cmdbuff;
      }
!     args[0] = vim_strnsave(xp->xp_pattern, xp->xp_pattern_len);
      args[2] = num;
  
      /* Save the cmdline, we don't know what the function may do. */
***************
*** 4797,4802 ****
--- 4799,4805 ----
      if (ccline.cmdbuff != NULL)
  	ccline.cmdbuff[ccline.cmdlen] = keep;
  
+     vim_free(args[0]);
      return ret;
  }
  
*** ../vim-7.2.261/src/structs.h	2009-07-29 12:09:49.000000000 +0200
--- src/structs.h	2009-09-18 15:33:15.000000000 +0200
***************
*** 432,437 ****
--- 432,438 ----
  {
      int		xp_context;		/* type of expansion */
      char_u	*xp_pattern;		/* start of item to expand */
+     int		xp_pattern_len;		/* bytes in xp_pattern before cursor */
  #if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
      char_u	*xp_arg;		/* completion function */
      int		xp_scriptID;		/* SID for completion function */
*** ../vim-7.2.261/src/version.c	2009-09-18 15:16:37.000000000 +0200
--- src/version.c	2009-09-18 17:23:20.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     262,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
252. You vote for foreign officials.

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


--- NEW FILE 7.2.263 ---
To: vim-dev at vim.org
Subject: Patch 7.2.263
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.263
Problem:    GTK2: when using the -geom argument with an offset from the right
	    edge and the size is smaller than the default, the Vim window is
	    not positioned properly.
Solution:   Use another function to set the size. (Vitaly Minko)
Files:	    src/gui_gtk_x11.c


*** ../vim-7.2.262/src/gui_gtk_x11.c	2009-09-11 15:46:20.000000000 +0200
--- src/gui_gtk_x11.c	2009-09-23 15:43:52.000000000 +0200
***************
*** 4066,4071 ****
--- 4066,4073 ----
  {
      guicolor_T fg_pixel = INVALCOLOR;
      guicolor_T bg_pixel = INVALCOLOR;
+     guint		pixel_width;
+     guint		pixel_height;
  
  #ifdef HAVE_GTK2
      /*
***************
*** 4106,4113 ****
  	unsigned int	w, h;
  	int		x = 0;
  	int		y = 0;
- 	guint		pixel_width;
- 	guint		pixel_height;
  
  	mask = XParseGeometry((char *)gui.geom, &x, &y, &w, &h);
  
--- 4108,4113 ----
***************
*** 4160,4168 ****
  	}
      }
  
!     gtk_form_set_size(GTK_FORM(gui.formwin),
! 	    (guint)(gui_get_base_width() + Columns * gui.char_width),
! 	    (guint)(gui_get_base_height() + Rows * gui.char_height));
      update_window_manager_hints(0, 0);
  
      if (foreground_argument != NULL)
--- 4160,4175 ----
  	}
      }
  
!     pixel_width = (guint)(gui_get_base_width() + Columns * gui.char_width);
!     pixel_height = (guint)(gui_get_base_height() + Rows * gui.char_height);
! #ifdef HAVE_GTK2
!     /* For GTK2 changing the size of the form widget doesn't cause window
!      * resizing. */
!     if (gtk_socket_id == 0) 
! 	gtk_window_resize(GTK_WINDOW(gui.mainwin), pixel_width, pixel_height);
! #else
!     gtk_form_set_size(GTK_FORM(gui.formwin), pixel_width, pixel_height);
! #endif
      update_window_manager_hints(0, 0);
  
      if (foreground_argument != NULL)
*** ../vim-7.2.262/src/version.c	2009-09-18 17:24:54.000000000 +0200
--- src/version.c	2009-09-23 17:34:08.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     263,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
267. You get an extra phone line so you can get phone calls.

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


--- NEW FILE 7.2.264 ---
To: vim-dev at vim.org
Subject: Patch 7.2.264
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.264
Problem:    GTK2: When the Vim window is maximized setting 'columns' or
	    'lines' doesn't work.
Solution:   Unmaximize the window before setting the size. (Vitaly Minko)
Files:	    src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro


*** ../vim-7.2.263/src/gui.c	2009-07-29 11:10:31.000000000 +0200
--- src/gui.c	2009-09-23 16:28:09.000000000 +0200
***************
*** 1386,1391 ****
--- 1386,1395 ----
      int		min_height;
      int		screen_w;
      int		screen_h;
+ #ifdef HAVE_GTK2
+     int		un_maximize = mustset;
+     int         did_adjust = 0;
+ #endif
  
      if (!gui.shell_created)
  	return;
***************
*** 1425,1446 ****
  	    if (Columns < MIN_COLUMNS)
  		Columns = MIN_COLUMNS;
  	    width = Columns * gui.char_width + base_width;
  	}
  	if ((direction & RESIZE_VERT) && height > screen_h)
  	{
  	    Rows = (screen_h - base_height) / gui.char_height;
  	    check_shellsize();
  	    height = Rows * gui.char_height + base_height;
  	}
      }
      gui.num_cols = Columns;
      gui.num_rows = Rows;
  
      min_width = base_width + MIN_COLUMNS * gui.char_width;
      min_height = base_height + MIN_LINES * gui.char_height;
! # ifdef FEAT_WINDOWS
      min_height += tabline_height() * gui.char_height;
! # endif
  
      gui_mch_set_shellsize(width, height, min_width, min_height,
  					  base_width, base_height, direction);
--- 1429,1475 ----
  	    if (Columns < MIN_COLUMNS)
  		Columns = MIN_COLUMNS;
  	    width = Columns * gui.char_width + base_width;
+ #ifdef HAVE_GTK2
+ 	    ++did_adjust;
+ #endif
  	}
  	if ((direction & RESIZE_VERT) && height > screen_h)
  	{
  	    Rows = (screen_h - base_height) / gui.char_height;
  	    check_shellsize();
  	    height = Rows * gui.char_height + base_height;
+ #ifdef HAVE_GTK2
+ 	    ++did_adjust;
+ #endif
  	}
+ #ifdef HAVE_GTK2
+ 	if (did_adjust == 2 || (width + gui.char_width >= screen_w
+ 				     && height + gui.char_height >= screen_h))
+ 	    /* don't unmaximize if at maximum size */
+ 	    un_maximize = FALSE;
+ #endif
      }
      gui.num_cols = Columns;
      gui.num_rows = Rows;
  
      min_width = base_width + MIN_COLUMNS * gui.char_width;
      min_height = base_height + MIN_LINES * gui.char_height;
! #ifdef FEAT_WINDOWS
      min_height += tabline_height() * gui.char_height;
! #endif
! 
! #ifdef HAVE_GTK2
!     if (un_maximize)
!     {
! 	/* If the window size is smaller than the screen unmaximize the
! 	 * window, otherwise resizing won't work. */
! 	gui_mch_get_screen_dimensions(&screen_w, &screen_h);
! 	if ((width + gui.char_width < screen_w
! 				   || height + gui.char_height * 2 < screen_h)
! 		&& gui_mch_maximized())
! 	    gui_mch_unmaximize();
!     }
! #endif
  
      gui_mch_set_shellsize(width, height, min_width, min_height,
  					  base_width, base_height, direction);
*** ../vim-7.2.263/src/gui_gtk_x11.c	2009-09-23 17:35:17.000000000 +0200
--- src/gui_gtk_x11.c	2009-09-23 15:43:52.000000000 +0200
***************
*** 4376,4381 ****
--- 4376,4404 ----
  #endif
  #endif /* HAVE_GTK2 */
  
+ #if defined(HAVE_GTK2) || defined(PROTO)
+ /*
+  * Return TRUE if the main window is maximized.
+  */
+     int
+ gui_mch_maximized()
+ {
+     return (gui.mainwin != NULL && gui.mainwin->window != NULL
+ 	    && (gdk_window_get_state(gui.mainwin->window)
+ 					       & GDK_WINDOW_STATE_MAXIMIZED));
+ }
+ 
+ /*
+  * Unmaximize the main window
+  */
+     void
+ gui_mch_unmaximize()
+ {
+     if (gui.mainwin != NULL)
+ 	gtk_window_unmaximize(GTK_WINDOW(gui.mainwin));
+ }
+ #endif
+ 
  /*
   * Set the windows size.
   */
*** ../vim-7.2.263/src/proto/gui_gtk_x11.pro	2007-05-05 19:18:54.000000000 +0200
--- src/proto/gui_gtk_x11.pro	2009-09-23 15:43:45.000000000 +0200
***************
*** 16,21 ****
--- 16,23 ----
  void gui_mch_exit __ARGS((int rc));
  int gui_mch_get_winpos __ARGS((int *x, int *y));
  void gui_mch_set_winpos __ARGS((int x, int y));
+ int gui_mch_maximized __ARGS((void));
+ void gui_mch_unmaximize __ARGS((void));
  void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
  void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
  void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
*** ../vim-7.2.263/src/version.c	2009-09-23 17:35:17.000000000 +0200
--- src/version.c	2009-09-23 18:12:21.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     264,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
268. You get up in the morning and go online before getting your coffee.

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


--- NEW FILE 7.2.265 ---
To: vim-dev at vim.org
Subject: Patch 7.2.265
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.265
Problem:    When using ":silent broken" inside try/catch silency may persist.
	    (dr-dr xp)
Solution:   Set msg_silent when there is an error and it's bigger than the
	    saved value.
Files:	    src/ex_docmd.c


*** ../vim-7.2.264/src/ex_docmd.c	2009-07-09 20:13:59.000000000 +0200
--- src/ex_docmd.c	2009-09-30 11:40:53.000000000 +0200
***************
*** 2695,2701 ****
      {
  	/* messages could be enabled for a serious error, need to check if the
  	 * counters don't become negative */
! 	if (!did_emsg)
  	    msg_silent = save_msg_silent;
  	emsg_silent -= did_esilent;
  	if (emsg_silent < 0)
--- 2695,2701 ----
      {
  	/* messages could be enabled for a serious error, need to check if the
  	 * counters don't become negative */
! 	if (!did_emsg || msg_silent > save_msg_silent)
  	    msg_silent = save_msg_silent;
  	emsg_silent -= did_esilent;
  	if (emsg_silent < 0)
*** ../vim-7.2.264/src/version.c	2009-09-23 18:14:13.000000000 +0200
--- src/version.c	2009-09-30 13:22:47.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     265,
  /**/

-- 
FIRST HEAD:  Oh! quick! get the sword out I want to cut his head off.
THIRD HEAD:  Oh, cut your own head off.
SECOND HEAD: Yes - do us all a favour.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.266 ---
To: vim-dev at vim.org
Subject: Patch 7.2.266
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.266
Problem:    When an expression abbreviation is triggered, the typed character
	    is unknown.
Solution:   Make the typed character available in v:char.
Files:	    runtime/doc/map.txt, src/eval.c, src/getchar.c, src/ops.c,
	    src/proto/eval.pro


*** ../vim-7.2.265/runtime/doc/map.txt	2008-08-09 19:36:49.000000000 +0200
--- runtime/doc/map.txt	2009-09-23 19:39:19.000000000 +0200
***************
*** 224,229 ****
--- 224,233 ----
  The result of the InsertDot() function will be inserted.  It could check the
  text before the cursor and start omni completion when some condition is met.
  
+ For abbreviations |v:char| is set to the character that was typed to trigger
+ the abbreviation.  You can use this to decide how to expand the {lhs}.  You
+ can't change v:char and you should not insert it.
+ 
  Be very careful about side effects!  The expression is evaluated while
  obtaining characters, you may very well make the command dysfunctional.
  For this reason the following is blocked:
*** ../vim-7.2.265/src/eval.c	2009-06-03 14:25:47.000000000 +0200
--- src/eval.c	2009-09-23 19:36:32.000000000 +0200
***************
*** 18101,18106 ****
--- 18101,18131 ----
  }
  
  /*
+  * Set v:char to character "c".
+  */
+     void
+ set_vim_var_char(c)
+     int c;
+ {
+ #ifdef FEAT_MBYTE
+     char_u	buf[MB_MAXBYTES];
+ #else
+     char_u	buf[2];
+ #endif
+ 
+ #ifdef FEAT_MBYTE
+     if (has_mbyte)
+ 	buf[(*mb_char2bytes)(c, buf)] = NUL;
+     else
+ #endif
+     {
+ 	buf[0] = c;
+ 	buf[1] = NUL;
+     }
+     set_vim_var_string(VV_CHAR, buf, -1);
+ }
+ 
+ /*
   * Set v:count to "count" and v:count1 to "count1".
   * When "set_prevcount" is TRUE first set v:prevcount from v:count.
   */
*** ../vim-7.2.265/src/getchar.c	2009-07-14 13:44:43.000000000 +0200
--- src/getchar.c	2009-09-23 19:35:54.000000000 +0200
***************
*** 129,135 ****
  static void	validate_maphash __ARGS((void));
  static void	showmap __ARGS((mapblock_T *mp, int local));
  #ifdef FEAT_EVAL
! static char_u	*eval_map_expr __ARGS((char_u *str));
  #endif
  
  /*
--- 129,135 ----
  static void	validate_maphash __ARGS((void));
  static void	showmap __ARGS((mapblock_T *mp, int local));
  #ifdef FEAT_EVAL
! static char_u	*eval_map_expr __ARGS((char_u *str, int c));
  #endif
  
  /*
***************
*** 2446,2452 ****
  			    if (tabuf.typebuf_valid)
  			    {
  				vgetc_busy = 0;
! 				s = eval_map_expr(mp->m_str);
  				vgetc_busy = save_vgetc_busy;
  			    }
  			    else
--- 2446,2452 ----
  			    if (tabuf.typebuf_valid)
  			    {
  				vgetc_busy = 0;
! 				s = eval_map_expr(mp->m_str, NUL);
  				vgetc_busy = save_vgetc_busy;
  			    }
  			    else
***************
*** 4367,4375 ****
  	     * abbreviation, but is not inserted into the input stream.
  	     */
  	    j = 0;
- 					/* special key code, split up */
  	    if (c != Ctrl_RSB)
  	    {
  		if (IS_SPECIAL(c) || c == K_SPECIAL)
  		{
  		    tb[j++] = K_SPECIAL;
--- 4367,4375 ----
  	     * abbreviation, but is not inserted into the input stream.
  	     */
  	    j = 0;
  	    if (c != Ctrl_RSB)
  	    {
+ 					/* special key code, split up */
  		if (IS_SPECIAL(c) || c == K_SPECIAL)
  		{
  		    tb[j++] = K_SPECIAL;
***************
*** 4398,4404 ****
  	    }
  #ifdef FEAT_EVAL
  	    if (mp->m_expr)
! 		s = eval_map_expr(mp->m_str);
  	    else
  #endif
  		s = mp->m_str;
--- 4398,4404 ----
  	    }
  #ifdef FEAT_EVAL
  	    if (mp->m_expr)
! 		s = eval_map_expr(mp->m_str, c);
  	    else
  #endif
  		s = mp->m_str;
***************
*** 4434,4441 ****
   * special characters.
   */
      static char_u *
! eval_map_expr(str)
      char_u	*str;
  {
      char_u	*res;
      char_u	*p;
--- 4434,4442 ----
   * special characters.
   */
      static char_u *
! eval_map_expr(str, c)
      char_u	*str;
+     int		c;	    /* NUL or typed character for abbreviation */
  {
      char_u	*res;
      char_u	*p;
***************
*** 4452,4457 ****
--- 4453,4459 ----
  #ifdef FEAT_EX_EXTRA
      ++ex_normal_lock;
  #endif
+     set_vim_var_char(c);  /* set v:char to the typed character */
      save_cursor = curwin->w_cursor;
      p = eval_to_string(str, NULL, FALSE);
      --textlock;
*** ../vim-7.2.265/src/ops.c	2009-07-01 18:04:30.000000000 +0200
--- src/ops.c	2009-09-23 19:11:40.000000000 +0200
***************
*** 4473,4483 ****
      int		use_sandbox = was_set_insecurely((char_u *)"formatexpr",
  								   OPT_LOCAL);
      int		r;
- #ifdef FEAT_MBYTE
-     char_u	buf[MB_MAXBYTES];
- #else
-     char_u	buf[2];
- #endif
  
      /*
       * Set v:lnum to the first line number and v:count to the number of lines.
--- 4473,4478 ----
***************
*** 4485,4501 ****
       */
      set_vim_var_nr(VV_LNUM, lnum);
      set_vim_var_nr(VV_COUNT, count);
! 
! #ifdef FEAT_MBYTE
!     if (has_mbyte)
! 	buf[(*mb_char2bytes)(c, buf)] = NUL;
!     else
! #endif
!     {
! 	buf[0] = c;
! 	buf[1] = NUL;
!     }
!     set_vim_var_string(VV_CHAR, buf, -1);
  
      /*
       * Evaluate the function.
--- 4480,4486 ----
       */
      set_vim_var_nr(VV_LNUM, lnum);
      set_vim_var_nr(VV_COUNT, count);
!     set_vim_var_char(c);
  
      /*
       * Evaluate the function.
*** ../vim-7.2.265/src/proto/eval.pro	2008-11-20 16:11:03.000000000 +0100
--- src/proto/eval.pro	2009-09-23 19:36:30.000000000 +0200
***************
*** 61,66 ****
--- 61,67 ----
  long get_vim_var_nr __ARGS((int idx));
  char_u *get_vim_var_str __ARGS((int idx));
  list_T *get_vim_var_list __ARGS((int idx));
+ void set_vim_var_char __ARGS((int c));
  void set_vcount __ARGS((long count, long count1, int set_prevcount));
  void set_vim_var_string __ARGS((int idx, char_u *val, int len));
  void set_vim_var_list __ARGS((int idx, list_T *val));
*** ../vim-7.2.265/src/version.c	2009-09-30 13:23:57.000000000 +0200
--- src/version.c	2009-09-30 15:11:29.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     266,
  /**/

-- 
Life would be so much easier if we could just look at the source code.

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


--- NEW FILE 7.2.267 ---
To: vim-dev at vim.org
Subject: Patch 7.2.267
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.267
Problem:    Crash for narrow window and double-width character.
Solution:   Check for zero width.  (Taro Muraoka)
Files:	    src/charset.c


*** ../vim-7.2.266/src/charset.c	2009-09-11 14:02:25.000000000 +0200
--- src/charset.c	2009-10-07 16:17:27.000000000 +0200
***************
*** 1218,1223 ****
--- 1218,1225 ----
      if ((int)vcol == width1 - 1)
  	return TRUE;
      width2 = width1 + win_col_off2(wp);
+     if (width2 <= 0)
+ 	return FALSE;
      return ((vcol - width1) % width2 == width2 - 1);
  }
  #endif /* FEAT_MBYTE */
*** ../vim-7.2.266/src/version.c	2009-09-30 15:15:33.000000000 +0200
--- src/version.c	2009-10-07 16:19:05.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     267,
  /**/

-- 
You got to work at a mill?  Lucky!  I got sent back to work in the
acid-mines for my daily crust of stale bread... which not even the
birds would eat.

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


--- NEW FILE 7.2.268 ---
To: vim-dev at vim.org
Subject: Patch 7.2.268
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.268
Problem:    Crash when using Python to set cursor beyond end of line.
	    (winterTTr)
Solution:   Check the column to be valid.
Files:	    src/if_python.c


*** ../vim-7.2.267/src/if_python.c	2009-07-09 20:06:30.000000000 +0200
--- src/if_python.c	2009-10-10 14:49:10.000000000 +0200
***************
*** 2058,2063 ****
--- 2058,2064 ----
      {
  	long lnum;
  	long col;
+ 	long len;
  
  	if (!PyArg_Parse(val, "(ll)", &lnum, &col))
  	    return -1;
***************
*** 2072,2081 ****
  	if (VimErrorCheck())
  	    return -1;
  
! 	/* NO CHECK ON COLUMN - SEEMS NOT TO MATTER */
  
  	this->win->w_cursor.lnum = lnum;
  	this->win->w_cursor.col = col;
  	update_screen(VALID);
  
  	return 0;
--- 2073,2088 ----
  	if (VimErrorCheck())
  	    return -1;
  
! 	/* When column is out of range silently correct it. */
! 	len = STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
! 	if (col > len)
! 	    col = len;
  
  	this->win->w_cursor.lnum = lnum;
  	this->win->w_cursor.col = col;
+ #ifdef FEAT_VIRTUALEDIT
+ 	this->win->w_cursor.coladd = 0;
+ #endif
  	update_screen(VALID);
  
  	return 0;
*** ../vim-7.2.267/src/version.c	2009-10-07 16:19:52.000000000 +0200
--- src/version.c	2009-11-03 11:42:08.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     268,
  /**/

-- 
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.2.269 ---
To: vim-dev at vim.org
Subject: Patch 7.2.269
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.269
Problem:    Many people struggle to find out why Vim startup is slow.
Solution:   Add the --startuptime command line flag.
Files:	    runtime/doc/starting.txt, src/globals.h, src/feature.h,
	    src/main.c, src/macros.h


*** ../vim-7.2.268/runtime/doc/starting.txt	2008-11-09 13:43:25.000000000 +0100
--- runtime/doc/starting.txt	2009-10-25 11:57:51.000000000 +0100
***************
*** 144,149 ****
--- 144,156 ----
  			-u NORC			no		    yes
  			--noplugin		yes		    no
  
+ --startuptime={fname}					*--startuptime*
+ 		During startup write timing messages to the file {fname}.
+ 		This can be used to find out where time is spent while loading
+ 		your .vimrc and plugins.
+ 		When {fname} already exists new messages are appended.
+ 		{only when compiled with this feature}
+ 
  							*--literal*
  --literal	Take file names literally, don't expand wildcards.  Not needed
  		for Unix, because Vim always takes file names literally (the
***************
*** 471,476 ****
--- 487,493 ----
  		window title and copy/paste using the X clipboard.  This
  		avoids a long startup time when running Vim in a terminal
  		emulator and the connection to the X server is slow.
+ 		See |--startuptime| to find out if affects you.
  		Only makes a difference on Unix or VMS, when compiled with the
  		|+X11| feature.  Otherwise it's ignored.
  		To disable the connection only for specific terminals, see the
*** ../vim-7.2.268/src/globals.h	2009-07-29 12:09:49.000000000 +0200
--- src/globals.h	2009-10-10 15:14:31.000000000 +0200
***************
*** 1567,1572 ****
--- 1567,1576 ----
  /* For undo we need to know the lowest time possible. */
  EXTERN time_t starttime;
  
+ #ifdef STARTUPTIME
+ EXTERN FILE *time_fd INIT(= NULL);  /* where to write startup timing */
+ #endif
+ 
  /*
   * Some compilers warn for not using a return value, but in some situations we
   * can't do anything useful with the value.  Assign to this variable to avoid
*** ../vim-7.2.268/src/feature.h	2008-11-09 13:43:25.000000000 +0100
--- src/feature.h	2009-10-10 16:16:19.000000000 +0200
***************
*** 844,853 ****
  /* #define DEBUG */
  
  /*
!  * STARTUPTIME		Time the startup process.  Writes a "vimstartup" file
!  *			with timestamps.
   */
! /* #define STARTUPTIME "vimstartup" */
  
  /*
   * MEM_PROFILE		Debugging of memory allocation and freeing.
--- 844,857 ----
  /* #define DEBUG */
  
  /*
!  * STARTUPTIME		Time the startup process.  Writes a file with
!  *			timestamps.
   */
! #if defined(FEAT_NORMAL) \
! 	&& ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
! 		|| defined(WIN3264))
! # define STARTUPTIME 1
! #endif
  
  /*
   * MEM_PROFILE		Debugging of memory allocation and freeing.
*** ../vim-7.2.268/src/main.c	2009-05-26 22:58:43.000000000 +0200
--- src/main.c	2009-10-10 16:18:32.000000000 +0200
***************
*** 130,139 ****
  #endif
  
  
- #ifdef STARTUPTIME
- static FILE *time_fd = NULL;
- #endif
- 
  /*
   * Different types of error messages.
   */
--- 130,135 ----
***************
*** 173,178 ****
--- 169,177 ----
      char_u	*fname = NULL;		/* file name from command line */
      mparm_T	params;			/* various parameters passed between
  					 * main() and other functions. */
+ #ifdef STARTUPTIME
+     int		i;
+ #endif
  
      /*
       * Do any system-specific initialisations.  These can NOT use IObuff or
***************
*** 203,210 ****
  #endif
  
  #ifdef STARTUPTIME
!     time_fd = mch_fopen(STARTUPTIME, "a");
!     TIME_MSG("--- VIM STARTING ---");
  #endif
      starttime = time(NULL);
  
--- 202,216 ----
  #endif
  
  #ifdef STARTUPTIME
!     for (i = 1; i < argc; ++i)
!     {
! 	if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
! 	{
! 	    time_fd = mch_fopen(argv[i] + 14, "a");
! 	    TIME_MSG("--- VIM STARTING ---");
! 	    break;
! 	}
!     }
  #endif
      starttime = time(NULL);
  
***************
*** 1150,1155 ****
--- 1156,1173 ----
  	    cursor_on();
  
  	    do_redraw = FALSE;
+ 
+ #ifdef STARTUPTIME
+ 	    /* Now that we have drawn the first screen all the startup stuff
+ 	     * has been done, close any file for startup messages. */
+ 	    if (time_fd != NULL)
+ 	    {
+ 		TIME_MSG("first screen update");
+ 		TIME_MSG("--- VIM STARTED ---");
+ 		fclose(time_fd);
+ 		time_fd = NULL;
+ 	    }
+ #endif
  	}
  #ifdef FEAT_GUI
  	if (need_mouse_correct)
***************
*** 1743,1748 ****
--- 1761,1770 ----
  		    /* already processed, skip */
  		}
  #endif
+ 		else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
+ 		{
+ 		    /* already processed, skip */
+ 		}
  		else
  		{
  		    if (argv[0][argv_idx])
***************
*** 3211,3216 ****
--- 3233,3252 ----
  
  static struct timeval	prev_timeval;
  
+ # ifdef WIN3264
+ /*
+  * Windows doesn't have gettimeofday(), although it does have struct timeval.
+  */
+     static int
+ gettimeofday(struct timeval *tv, char *dummy)
+ {
+     long t = clock();
+     tv->tv_sec = t / CLOCKS_PER_SEC;
+     tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
+     return 0;
+ }
+ # endif
+ 
  /*
   * Save the previous time before doing something that could nest.
   * set "*tv_rel" to the time elapsed so far.
***************
*** 3299,3318 ****
      }
  }
  
- # ifdef WIN3264
- /*
-  * Windows doesn't have gettimeofday(), although it does have struct timeval.
-  */
-     int
- gettimeofday(struct timeval *tv, char *dummy)
- {
-     long t = clock();
-     tv->tv_sec = t / CLOCKS_PER_SEC;
-     tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC;
-     return 0;
- }
- # endif
- 
  #endif
  
  #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
--- 3335,3340 ----
*** ../vim-7.2.268/src/macros.h	2009-05-17 13:30:58.000000000 +0200
--- src/macros.h	2009-10-10 15:19:07.000000000 +0200
***************
*** 243,249 ****
  #endif
  
  #ifdef STARTUPTIME
! # define TIME_MSG(s) time_msg(s, NULL)
  #else
  # define TIME_MSG(s)
  #endif
--- 243,249 ----
  #endif
  
  #ifdef STARTUPTIME
! # define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); }
  #else
  # define TIME_MSG(s)
  #endif
*** ../vim-7.2.268/src/version.c	2009-11-03 11:43:05.000000000 +0100
--- src/version.c	2009-11-03 12:06:31.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     269,
  /**/

-- 
BEDEVERE: Look!  It's the old man from scene 24 - what's he Doing here?
ARTHUR:   He is the keeper of the Bridge.  He asks each traveler five
          questions ...
GALAHAD:  Three questions.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.270 ---
To: vim-dev at vim.org
Subject: Patch 7.2.270
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.270
Problem:    Using ":@c" when the c register contains a CR causes the rest to
	    be executed later. (Dexter Douglas)
Solution:   Don't check for typeahead to start with ':', keep executing
	    commands until all added typeahead has been used.
Files:	    src/ex_docmd.c


*** ../vim-7.2.269/src/ex_docmd.c	2009-09-30 13:23:57.000000000 +0200
--- src/ex_docmd.c	2009-10-28 12:06:54.000000000 +0100
***************
*** 8358,8363 ****
--- 8358,8364 ----
      exarg_T	*eap;
  {
      int		c;
+     int		prev_len = typebuf.tb_len;
  
      curwin->w_cursor.lnum = eap->line2;
  
***************
*** 8383,8393 ****
  
  	/*
  	 * Execute from the typeahead buffer.
! 	 * Originally this didn't check for the typeahead buffer to be empty,
! 	 * thus could read more Ex commands from stdin.  It's not clear why,
! 	 * it is certainly unexpected.
  	 */
! 	while ((!stuff_empty() || typebuf.tb_len > 0) && vpeekc() == ':')
  	    (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
  
  	exec_from_reg = save_efr;
--- 8384,8393 ----
  
  	/*
  	 * Execute from the typeahead buffer.
! 	 * Continue until the stuff buffer is empty and all added characters
! 	 * have been consumed.
  	 */
! 	while (!stuff_empty() || typebuf.tb_len > prev_len)
  	    (void)do_cmdline(NULL, getexline, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
  
  	exec_from_reg = save_efr;
*** ../vim-7.2.269/src/version.c	2009-11-03 12:10:39.000000000 +0100
--- src/version.c	2009-11-03 12:32:47.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     270,
  /**/

-- 
To the optimist, the glass is half full.
To the pessimist, the glass is half empty.
To the engineer, the glass is twice as big as it needs to be.

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


--- NEW FILE 7.2.271 ---
To: vim-dev at vim.org
Subject: Patch 7.2.271
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.271
Problem:    Using freed memory in Motif GUI version when making a choice.
Solution:   Free memory only after using it. (Dominique Pelle)
Files:	    src/gui_xmdlg.c


*** ../vim-7.2.270/src/gui_xmdlg.c	2009-05-21 23:25:38.000000000 +0200
--- src/gui_xmdlg.c	2009-10-28 21:56:15.000000000 +0100
***************
*** 10,16 ****
  /*
   * (C) 2001,2005 by Marcin Dalecki <martin at dalecki.de>
   *
!  * Implementation of dialogue functions for the Motif GUI variant.
   *
   * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
   * when using a dynamic scrollbar policy.
--- 10,16 ----
  /*
   * (C) 2001,2005 by Marcin Dalecki <martin at dalecki.de>
   *
!  * Implementation of dialog functions for the Motif GUI variant.
   *
   * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
   * when using a dynamic scrollbar policy.
***************
*** 633,648 ****
  	data->sel[which] = XtNewString(sel);
      else
      {
- 	XtFree(data->sel[which]);
  	if (!strcmp(data->sel[which], sel))
  	{
  	    /* unselecting current selection */
  	    data->sel[which] = NULL;
  	    if (w)
  		XmListDeselectItem(w, call_data->item);
  	}
  	else
  	    data->sel[which] = XtNewString(sel);
      }
      XtFree(sel);
  
--- 633,651 ----
  	data->sel[which] = XtNewString(sel);
      else
      {
  	if (!strcmp(data->sel[which], sel))
  	{
  	    /* unselecting current selection */
+ 	    XtFree(data->sel[which]);
  	    data->sel[which] = NULL;
  	    if (w)
  		XmListDeselectItem(w, call_data->item);
  	}
  	else
+ 	{
+ 	    XtFree(data->sel[which]);
  	    data->sel[which] = XtNewString(sel);
+ 	}
      }
      XtFree(sel);
  
*** ../vim-7.2.270/src/version.c	2009-11-03 12:38:50.000000000 +0100
--- src/version.c	2009-11-03 12:48:26.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     271,
  /**/

-- 
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.2.272 ---
To: vim-dev at vim.org
Subject: Patch 7.2.272
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.272
Problem:    "_.svz" is not recognized as a swap file. (David M. Besonen)
Solution:   Accept .s[uvw][a-z] as a swap file name extension.
Files:	    src/memline.c


*** ../vim-7.2.271/src/memline.c	2009-04-22 15:56:27.000000000 +0200
--- src/memline.c	2009-10-29 20:55:08.000000000 +0100
***************
*** 864,884 ****
      recoverymode = TRUE;
      called_from_main = (curbuf->b_ml.ml_mfp == NULL);
      attr = hl_attr(HLF_E);
! /*
!  * If the file name ends in ".sw?" we use it directly.
!  * Otherwise a search is done to find the swap file(s).
!  */
      fname = curbuf->b_fname;
      if (fname == NULL)		    /* When there is no file name */
  	fname = (char_u *)"";
      len = (int)STRLEN(fname);
      if (len >= 4 &&
  #if defined(VMS) || defined(RISCOS)
! 	    STRNICMP(fname + len - 4, "_sw" , 3)
  #else
! 	    STRNICMP(fname + len - 4, ".sw" , 3)
  #endif
! 		== 0)
      {
  	directly = TRUE;
  	fname = vim_strsave(fname); /* make a copy for mf_open() */
--- 864,887 ----
      recoverymode = TRUE;
      called_from_main = (curbuf->b_ml.ml_mfp == NULL);
      attr = hl_attr(HLF_E);
! 
!     /*
!      * If the file name ends in ".s[uvw][a-z]" we assume this is the swap file.
!      * Otherwise a search is done to find the swap file(s).
!      */
      fname = curbuf->b_fname;
      if (fname == NULL)		    /* When there is no file name */
  	fname = (char_u *)"";
      len = (int)STRLEN(fname);
      if (len >= 4 &&
  #if defined(VMS) || defined(RISCOS)
! 	    STRNICMP(fname + len - 4, "_s" , 2)
  #else
! 	    STRNICMP(fname + len - 4, ".s" , 2)
  #endif
! 		== 0
! 		&& vim_strchr((char_u *)"UVWuvw", fname[len - 2]) != NULL
! 		&& ASCII_ISALPHA(fname[len - 1]))
      {
  	directly = TRUE;
  	fname = vim_strsave(fname); /* make a copy for mf_open() */
*** ../vim-7.2.271/src/version.c	2009-11-03 12:53:44.000000000 +0100
--- src/version.c	2009-11-03 13:02:51.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     272,
  /**/

-- 
Sorry, no fortune today.

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


--- NEW FILE 7.2.273 ---
To: vim-dev at vim.org
Subject: Patch 7.2.273
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.273
Problem:    Crash with redir to unknown array. (Christian Brabandt)
Solution:   Don't assign the redir result when there was an error.
Files:	    src/eval.c


*** ../vim-7.2.272/src/eval.c	2009-09-30 15:15:33.000000000 +0200
--- src/eval.c	2009-11-03 12:05:07.000000000 +0100
***************
*** 988,1000 ****
      int		err;
      typval_T	tv;
  
!     /* Make sure a valid variable name is specified */
      if (!eval_isnamec1(*name))
      {
  	EMSG(_(e_invarg));
  	return FAIL;
      }
  
      redir_varname = vim_strsave(name);
      if (redir_varname == NULL)
  	return FAIL;
--- 988,1001 ----
      int		err;
      typval_T	tv;
  
!     /* Catch a bad name early. */
      if (!eval_isnamec1(*name))
      {
  	EMSG(_(e_invarg));
  	return FAIL;
      }
  
+     /* Make a copy of the name, it is used in redir_lval until redir ends. */
      redir_varname = vim_strsave(name);
      if (redir_varname == NULL)
  	return FAIL;
***************
*** 1019,1024 ****
--- 1020,1026 ----
  	    EMSG(_(e_trailing));
  	else
  	    EMSG(_(e_invarg));
+ 	redir_endp = NULL;  /* don't store a value, only cleanup */
  	var_redir_stop();
  	return FAIL;
      }
***************
*** 1037,1042 ****
--- 1039,1045 ----
      did_emsg |= save_emsg;
      if (err)
      {
+ 	redir_endp = NULL;  /* don't store a value, only cleanup */
  	var_redir_stop();
  	return FAIL;
      }
***************
*** 1085,1090 ****
--- 1088,1094 ----
  
  /*
   * Stop redirecting command output to a variable.
+  * Frees the allocated memory.
   */
      void
  var_redir_stop()
***************
*** 1093,1106 ****
  
      if (redir_lval != NULL)
      {
! 	/* Append the trailing NUL. */
! 	ga_append(&redir_ga, NUL);
  
! 	/* Assign the text to the variable. */
! 	tv.v_type = VAR_STRING;
! 	tv.vval.v_string = redir_ga.ga_data;
! 	set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
! 	vim_free(tv.vval.v_string);
  
  	clear_lval(redir_lval);
  	vim_free(redir_lval);
--- 1097,1114 ----
  
      if (redir_lval != NULL)
      {
! 	/* If there was no error: assign the text to the variable. */
! 	if (redir_endp != NULL)
! 	{
! 	    ga_append(&redir_ga, NUL);  /* Append the trailing NUL. */
! 	    tv.v_type = VAR_STRING;
! 	    tv.vval.v_string = redir_ga.ga_data;
! 	    set_var_lval(redir_lval, redir_endp, &tv, FALSE, (char_u *)".");
! 	}
  
! 	/* free the collected output */
! 	vim_free(redir_ga.ga_data);
! 	redir_ga.ga_data = NULL;
  
  	clear_lval(redir_lval);
  	vim_free(redir_lval);
*** ../vim-7.2.272/src/version.c	2009-11-03 13:06:03.000000000 +0100
--- src/version.c	2009-11-03 14:24:06.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     273,
  /**/

-- 
Permission is granted to read this message out aloud on Kings Cross Road,
London, under the condition that the orator is properly dressed.

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


--- NEW FILE 7.2.274 ---
To: vim-dev at vim.org
Subject: Patch 7.2.274
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.274
Problem:    Syntax folding doesn't work properly when adding a comment.
Solution:   Fix it and add a test. (Lech Lorens)
Files:	    src/fold.c, src/testdir/test45.in, src/testdir/test45.ok


*** ../vim-7.2.273/src/fold.c	2009-09-18 15:16:37.000000000 +0200
--- src/fold.c	2009-11-03 12:36:37.000000000 +0100
***************
*** 2256,2261 ****
--- 2256,2295 ----
  	}
      }
  
+     /*
+      * If folding is defined by the syntax, it is possible that a change in
+      * one line will cause all sub-folds of the current fold to change (e.g.,
+      * closing a C-style comment can cause folds in the subsequent lines to
+      * appear). To take that into account we should adjust the value of "bot"
+      * to point to the end of the current fold:
+      */
+     if (foldlevelSyntax == getlevel)
+     {
+ 	garray_T *gap = &wp->w_folds;
+ 	fold_T	 *fp = NULL;
+ 	int	  current_fdl = 0;
+ 	linenr_T  fold_start_lnum = 0;
+ 	linenr_T  lnum_rel = fline.lnum;
+ 
+ 	while (current_fdl < fline.lvl)
+ 	{
+ 	    if (!foldFind(gap, lnum_rel, &fp))
+ 		break;
+ 	    ++current_fdl;
+ 
+ 	    fold_start_lnum += fp->fd_top;
+ 	    gap = &fp->fd_nested;
+ 	    lnum_rel -= fp->fd_top;
+ 	}
+ 	if (fp != NULL && current_fdl == fline.lvl)
+ 	{
+ 	    linenr_T fold_end_lnum = fold_start_lnum + fp->fd_len;
+ 
+ 	    if (fold_end_lnum > bot)
+ 		bot = fold_end_lnum;
+ 	}
+     }
+ 
      start = fline.lnum;
      end = bot;
      /* Do at least one line. */
*** ../vim-7.2.273/src/testdir/test45.in	2007-09-25 17:58:43.000000000 +0200
--- src/testdir/test45.in	2009-11-03 12:22:38.000000000 +0100
***************
*** 28,36 ****
  k:call append("$", foldlevel("."))
  :" test syntax folding
  :set fdm=syntax fdl=0
! :syn region Hup start="dd" end="hh" fold
  Gzk:call append("$", "folding " . getline("."))
  k:call append("$", getline("."))
  :" test expression folding
  :fun Flvl()
    let l = getline(v:lnum)
--- 28,41 ----
  k:call append("$", foldlevel("."))
  :" test syntax folding
  :set fdm=syntax fdl=0
! :syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
! :syn region Fd1 start="ee" end="ff" fold contained
! :syn region Fd2 start="gg" end="hh" fold contained
! :syn region Fd3 start="commentstart" end="commentend" fold contained
  Gzk:call append("$", "folding " . getline("."))
  k:call append("$", getline("."))
+ jAcommentstart  Acommentend:set fdl=1
+ 3j:call append("$", getline("."))
  :" test expression folding
  :fun Flvl()
    let l = getline(v:lnum)
*** ../vim-7.2.273/src/testdir/test45.ok	2004-06-13 17:47:37.000000000 +0200
--- src/testdir/test45.ok	2009-11-03 12:22:50.000000000 +0100
***************
*** 8,15 ****
  0
  indent 2
  1
! folding 8 hh
      3 cc
  expr 2
  1
  2
--- 8,16 ----
  0
  indent 2
  1
! folding 9 ii
      3 cc
+ 7 gg
  expr 2
  1
  2
*** ../vim-7.2.273/src/version.c	2009-11-03 14:26:29.000000000 +0100
--- src/version.c	2009-11-03 14:44:21.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     274,
  /**/

-- 
BRIDGEKEEPER: What is your favorite colour?
LAUNCELOT:    Blue.
BRIDGEKEEPER: Right.  Off you go.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.275 ---
To: vim-dev at vim.org
Subject: Patch 7.2.275
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.275
Problem:    Warning for unused argument and comparing signed and unsigned.
Solution:   Add type cast.
Files:	    src/memline.c


*** ../vim-7.2.274/src/memline.c	2009-11-03 13:06:03.000000000 +0100
--- src/memline.c	2009-10-29 20:55:08.000000000 +0100
***************
*** 1285,1291 ****
  		    for (i = 0; i < dp->db_line_count; ++i)
  		    {
  			txt_start = (dp->db_index[i] & DB_INDEX_MASK);
! 			if (txt_start <= HEADER_SIZE
  					  || txt_start >= (int)dp->db_txt_end)
  			{
  			    p = (char_u *)"???";
--- 1285,1291 ----
  		    for (i = 0; i < dp->db_line_count; ++i)
  		    {
  			txt_start = (dp->db_index[i] & DB_INDEX_MASK);
! 			if (txt_start <= (int)HEADER_SIZE
  					  || txt_start >= (int)dp->db_txt_end)
  			{
  			    p = (char_u *)"???";
***************
*** 1296,1302 ****
  			ml_append(lnum++, p, (colnr_T)0, TRUE);
  		    }
  		    if (has_error)
! 			ml_append(lnum++, (char_u *)_("???END"), (colnr_T)0, TRUE);
  		}
  	    }
  	}
--- 1296,1303 ----
  			ml_append(lnum++, p, (colnr_T)0, TRUE);
  		    }
  		    if (has_error)
! 			ml_append(lnum++, (char_u *)_("???END"),
! 							    (colnr_T)0, TRUE);
  		}
  	    }
  	}
***************
*** 3576,3586 ****
   * Make swap file name out of the file name and a directory name.
   * Returns pointer to allocated memory or NULL.
   */
- /*ARGSUSED*/
      char_u *
  makeswapname(fname, ffname, buf, dir_name)
      char_u	*fname;
!     char_u	*ffname;
      buf_T	*buf;
      char_u	*dir_name;
  {
--- 3577,3586 ----
   * Make swap file name out of the file name and a directory name.
   * Returns pointer to allocated memory or NULL.
   */
      char_u *
  makeswapname(fname, ffname, buf, dir_name)
      char_u	*fname;
!     char_u	*ffname UNUSED;
      buf_T	*buf;
      char_u	*dir_name;
  {
*** ../vim-7.2.274/src/version.c	2009-11-03 14:46:35.000000000 +0100
--- src/version.c	2009-11-03 15:28:33.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     275,
  /**/

-- 
BRIDGEKEEPER: What is your favorite colour?
GAWAIN:       Blue ...  No yelloooooww!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.276 ---
To: vim-dev at vim.org
Subject: Patch 7.2.276
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.276
Problem:    Crash when setting 'isprint' to a small bullet. (Raul Coronado)
Solution:   Check for the character to be < 256.  Also make it possible to
	    specify a range of multi-byte characters. (Lech Lorens)
Files:	    src/charset.c


*** ../vim-7.2.275/src/charset.c	2009-10-07 16:19:52.000000000 +0200
--- src/charset.c	2009-11-03 12:46:12.000000000 +0100
***************
*** 187,195 ****
  		if (VIM_ISDIGIT(*p))
  		    c2 = getdigits(&p);
  		else
  		    c2 = *p++;
  	    }
! 	    if (c <= 0 || (c2 < c && c2 != -1) || c2 >= 256
  						 || !(*p == NUL || *p == ','))
  		return FAIL;
  
--- 187,200 ----
  		if (VIM_ISDIGIT(*p))
  		    c2 = getdigits(&p);
  		else
+ #ifdef FEAT_MBYTE
+ 		     if (has_mbyte)
+ 		    c2 = mb_ptr2char_adv(&p);
+ 		else
+ #endif
  		    c2 = *p++;
  	    }
! 	    if (c <= 0 || c >= 256 || (c2 < c && c2 != -1) || c2 >= 256
  						 || !(*p == NUL || *p == ','))
  		return FAIL;
  
*** ../vim-7.2.275/src/version.c	2009-11-03 15:32:58.000000000 +0100
--- src/version.c	2009-11-03 16:03:18.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     276,
  /**/

-- 
BRIDGEKEEPER: What is your favorite editor?
GAWAIN:       Emacs ...  No, Viiiiiiiiiiimmmmmmm!
           "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD

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


--- NEW FILE 7.2.277 ---
To: vim-dev at vim.org
Subject: Patch 7.2.277
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.277
Problem:    CTRL-Y in a diff'ed window may move the cursor outside of the
	    window. (Lech Lorens)
Solution:   Limit the number of filler lines to the height of the window.
	    Don't reset filler lines to zero for an empty buffer.
Files:	    src/move.c


*** ../vim-7.2.276/src/move.c	2009-05-15 21:31:11.000000000 +0200
--- src/move.c	2009-11-03 14:39:55.000000000 +0100
***************
*** 183,191 ****
  	if (curwin->w_topline != 1)
  	    redraw_later(NOT_VALID);
  	curwin->w_topline = 1;
- #ifdef FEAT_DIFF
- 	curwin->w_topfill = 0;
- #endif
  	curwin->w_botline = 2;
  	curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP;
  #ifdef FEAT_SCROLLBIND
--- 183,188 ----
***************
*** 1257,1263 ****
      while (line_count-- > 0)
      {
  #ifdef FEAT_DIFF
! 	if (curwin->w_topfill < diff_check(curwin, curwin->w_topline))
  	{
  	    ++curwin->w_topfill;
  	    ++done;
--- 1254,1261 ----
      while (line_count-- > 0)
      {
  #ifdef FEAT_DIFF
! 	if (curwin->w_topfill < diff_check(curwin, curwin->w_topline)
! 		&& curwin->w_topfill < curwin->w_height - 1)
  	{
  	    ++curwin->w_topfill;
  	    ++done;
*** ../vim-7.2.276/src/version.c	2009-11-03 16:03:59.000000000 +0100
--- src/version.c	2009-11-03 16:22:04.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     277,
  /**/

-- 
SIGFUN -- signature too funny (core dumped)

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


--- NEW FILE 7.2.278 ---
To: vim-dev at vim.org
Subject: Patch 7.2.278
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.278
Problem:    Using magic number in the folding code.
Solution:   Use the defined MAX_LEVEL.
Files:	    src/fold.c


*** ../vim-7.2.277/src/fold.c	2009-11-03 14:46:35.000000000 +0100
--- src/fold.c	2009-11-03 12:36:37.000000000 +0100
***************
*** 1932,1938 ****
  #ifdef FEAT_EVAL
      if (*wp->w_p_fdt != NUL)
      {
! 	char_u	dashes[51];
  	win_T	*save_curwin;
  	int	level;
  	char_u	*p;
--- 1932,1938 ----
  #ifdef FEAT_EVAL
      if (*wp->w_p_fdt != NUL)
      {
! 	char_u	dashes[MAX_LEVEL + 2];
  	win_T	*save_curwin;
  	int	level;
  	char_u	*p;
***************
*** 1944,1951 ****
  	/* Set "v:folddashes" to a string of "level" dashes. */
  	/* Set "v:foldlevel" to "level". */
  	level = foldinfo->fi_level;
! 	if (level > 50)
! 	    level = 50;
  	vim_memset(dashes, '-', (size_t)level);
  	dashes[level] = NUL;
  	set_vim_var_string(VV_FOLDDASHES, dashes, -1);
--- 1944,1951 ----
  	/* Set "v:folddashes" to a string of "level" dashes. */
  	/* Set "v:foldlevel" to "level". */
  	level = foldinfo->fi_level;
! 	if (level > (int)sizeof(dashes) - 1)
! 	    level = (int)sizeof(dashes) - 1;
  	vim_memset(dashes, '-', (size_t)level);
  	dashes[level] = NUL;
  	set_vim_var_string(VV_FOLDDASHES, dashes, -1);
*** ../vim-7.2.277/src/version.c	2009-11-03 16:22:59.000000000 +0100
--- src/version.c	2009-11-03 16:29:08.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     278,
  /**/

-- 
BRIDGEKEEPER: What is the air-speed velocity of an unladen swallow?
ARTHUR:       What do you mean?  An African or European swallow?
BRIDGEKEEPER: Er ...  I don't know that ... Aaaaarrrrrrggghhh!
   BRIDGEKEEPER is cast into the gorge.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.279 ---
To: vim-dev at vim.org
Subject: Patch 7.2.279
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.279
Problem:    Invalid memory read with visual mode "r". (Dominique Pelle)
Solution:   Make sure the cursor position is valid.  Don't check the cursor
	    position but the position being used.  And make sure we get the
	    right line.
Files:	    src/misc2.c, src/ops.c


*** ../vim-7.2.278/src/misc2.c	2009-05-16 21:06:36.000000000 +0200
--- src/misc2.c	2009-11-03 16:43:10.000000000 +0100
***************
*** 156,162 ****
  		    || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
  #endif
  		    ;
!     line = ml_get_curline();
  
      if (wcol >= MAXCOL)
      {
--- 156,162 ----
  		    || ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
  #endif
  		    ;
!     line = ml_get_buf(curbuf, pos->lnum, FALSE);
  
      if (wcol >= MAXCOL)
      {
***************
*** 332,340 ****
  #endif
  
  #ifdef FEAT_MBYTE
!     /* prevent cursor from moving on the trail byte */
      if (has_mbyte)
! 	mb_adjust_cursor();
  #endif
  
      if (col < wcol)
--- 332,340 ----
  #endif
  
  #ifdef FEAT_MBYTE
!     /* prevent from moving onto a trail byte */
      if (has_mbyte)
! 	mb_adjustpos(pos);
  #endif
  
      if (col < wcol)
*** ../vim-7.2.278/src/ops.c	2009-09-30 15:15:33.000000000 +0200
--- src/ops.c	2009-11-03 15:18:50.000000000 +0100
***************
*** 2020,2025 ****
--- 2020,2026 ----
  	bd.is_MAX = (curwin->w_curswant == MAXCOL);
  	for ( ; curwin->w_cursor.lnum <= oap->end.lnum; ++curwin->w_cursor.lnum)
  	{
+ 	    curwin->w_cursor.col = 0;  /* make sure cursor position is valid */
  	    block_prep(oap, &bd, curwin->w_cursor.lnum, TRUE);
  	    if (bd.textlen == 0 && (!virtual_op || bd.is_MAX))
  		continue;	    /* nothing to replace */
***************
*** 2035,2040 ****
--- 2036,2042 ----
  	    {
  		pos_T vpos;
  
+ 		vpos.lnum = curwin->w_cursor.lnum;
  		getvpos(&vpos, oap->start_vcol);
  		bd.startspaces += vpos.coladd;
  		n = bd.startspaces;
***************
*** 2693,2703 ****
  			 * initial coladd offset as part of "startspaces" */
  			if (bd.is_short)
  			{
! 			    linenr_T lnum = curwin->w_cursor.lnum;
! 
! 			    curwin->w_cursor.lnum = linenr;
  			    (void)getvpos(&vpos, oap->start_vcol);
- 			    curwin->w_cursor.lnum = lnum;
  			}
  			else
  			    vpos.coladd = 0;
--- 2695,2702 ----
  			 * initial coladd offset as part of "startspaces" */
  			if (bd.is_short)
  			{
! 			    vpos.lnum = linenr;
  			    (void)getvpos(&vpos, oap->start_vcol);
  			}
  			else
  			    vpos.coladd = 0;
*** ../vim-7.2.278/src/version.c	2009-11-03 16:29:48.000000000 +0100
--- src/version.c	2009-11-03 16:41:53.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     279,
  /**/

-- 
BEDEVERE: How do you know so much about swallows?
ARTHUR:   Well you have to know these things when you're a king, you know.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.280 ---
To: vim-dev at vim.org
Subject: Patch 7.2.280
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.280
Problem:    A redraw in a custom statusline with %! may cause a crash.
            (Yukihiro Nakadaira)
Solution:   Make a copy of 'statusline'.  Also fix typo in function name
            redraw_custum_statusline. (party by Dominique Pelle)
Files:      src/screen.c


*** ../vim-7.2.279/src/screen.c	2009-07-29 16:13:35.000000000 +0200
--- src/screen.c	2009-11-03 17:13:16.000000000 +0100
***************
*** 132,138 ****
  static void draw_vsep_win __ARGS((win_T *wp, int row));
  #endif
  #ifdef FEAT_STL_OPT
! static void redraw_custum_statusline __ARGS((win_T *wp));
  #endif
  #ifdef FEAT_SEARCH_EXTRA
  #define SEARCH_HL_PRIORITY 0
--- 132,138 ----
  static void draw_vsep_win __ARGS((win_T *wp, int row));
  #endif
  #ifdef FEAT_STL_OPT
! static void redraw_custom_statusline __ARGS((win_T *wp));
  #endif
  #ifdef FEAT_SEARCH_EXTRA
  #define SEARCH_HL_PRIORITY 0
***************
*** 5772,5778 ****
      else if (*p_stl != NUL || *wp->w_p_stl != NUL)
      {
  	/* redraw custom status line */
! 	redraw_custum_statusline(wp);
      }
  #endif
      else
--- 5794,5800 ----
      else if (*p_stl != NUL || *wp->w_p_stl != NUL)
      {
  	/* redraw custom status line */
! 	redraw_custom_statusline(wp);
      }
  #endif
      else
***************
*** 5897,5914 ****
   * errors encountered.
   */
      static void
! redraw_custum_statusline(wp)
      win_T	    *wp;
  {
!     int	save_called_emsg = called_emsg;
  
      called_emsg = FALSE;
      win_redr_custom(wp, FALSE);
      if (called_emsg)
  	set_string_option_direct((char_u *)"statusline", -1,
  		(char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
  					? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
      called_emsg |= save_called_emsg;
  }
  #endif
  
--- 5919,5949 ----
   * errors encountered.
   */
      static void
! redraw_custom_statusline(wp)
      win_T	    *wp;
  {
!     static int	    entered = FALSE;
!     int		    save_called_emsg = called_emsg;
! 
!     /* When called recursively return.  This can happen when the statusline
!      * contains an expression that triggers a redraw. */
!     if (entered)
! 	return;
!     entered = TRUE;
  
      called_emsg = FALSE;
      win_redr_custom(wp, FALSE);
      if (called_emsg)
+     {
+ 	/* When there is an error disable the statusline, otherwise the
+ 	 * display is messed up with errors and a redraw triggers the problem
+ 	 * again and again. */
  	set_string_option_direct((char_u *)"statusline", -1,
  		(char_u *)"", OPT_FREE | (*wp->w_p_stl != NUL
  					? OPT_LOCAL : OPT_GLOBAL), SID_ERROR);
+     }
      called_emsg |= save_called_emsg;
+     entered = FALSE;
  }
  #endif
  
***************
*** 6016,6021 ****
--- 6051,6057 ----
      int		len;
      int		fillchar;
      char_u	buf[MAXPATHL];
+     char_u	*stl;
      char_u	*p;
      struct	stl_hlrec hltab[STL_MAX_ITEM];
      struct	stl_hlrec tabtab[STL_MAX_ITEM];
***************
*** 6025,6031 ****
      if (wp == NULL)
      {
  	/* Use 'tabline'.  Always at the first line of the screen. */
! 	p = p_tal;
  	row = 0;
  	fillchar = ' ';
  	attr = hl_attr(HLF_TPF);
--- 6061,6067 ----
      if (wp == NULL)
      {
  	/* Use 'tabline'.  Always at the first line of the screen. */
! 	stl = p_tal;
  	row = 0;
  	fillchar = ' ';
  	attr = hl_attr(HLF_TPF);
***************
*** 6042,6058 ****
  
  	if (draw_ruler)
  	{
! 	    p = p_ruf;
  	    /* advance past any leading group spec - implicit in ru_col */
! 	    if (*p == '%')
  	    {
! 		if (*++p == '-')
! 		    p++;
! 		if (atoi((char *) p))
! 		    while (VIM_ISDIGIT(*p))
! 			p++;
! 		if (*p++ != '(')
! 		    p = p_ruf;
  	    }
  #ifdef FEAT_VERTSPLIT
  	    col = ru_col - (Columns - W_WIDTH(wp));
--- 6078,6094 ----
  
  	if (draw_ruler)
  	{
! 	    stl = p_ruf;
  	    /* advance past any leading group spec - implicit in ru_col */
! 	    if (*stl == '%')
  	    {
! 		if (*++stl == '-')
! 		    stl++;
! 		if (atoi((char *)stl))
! 		    while (VIM_ISDIGIT(*stl))
! 			stl++;
! 		if (*stl++ != '(')
! 		    stl = p_ruf;
  	    }
  #ifdef FEAT_VERTSPLIT
  	    col = ru_col - (Columns - W_WIDTH(wp));
***************
*** 6081,6089 ****
  	else
  	{
  	    if (*wp->w_p_stl != NUL)
! 		p = wp->w_p_stl;
  	    else
! 		p = p_stl;
  # ifdef FEAT_EVAL
  	    use_sandbox = was_set_insecurely((char_u *)"statusline",
  					 *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
--- 6117,6125 ----
  	else
  	{
  	    if (*wp->w_p_stl != NUL)
! 		stl = wp->w_p_stl;
  	    else
! 		stl = p_stl;
  # ifdef FEAT_EVAL
  	    use_sandbox = was_set_insecurely((char_u *)"statusline",
  					 *wp->w_p_stl == NUL ? 0 : OPT_LOCAL);
***************
*** 6098,6107 ****
      if (maxwidth <= 0)
  	return;
  
      width = build_stl_str_hl(wp == NULL ? curwin : wp,
  				buf, sizeof(buf),
! 				p, use_sandbox,
  				fillchar, maxwidth, hltab, tabtab);
      len = (int)STRLEN(buf);
  
      while (width < maxwidth && len < (int)sizeof(buf) - 1)
--- 6134,6147 ----
      if (maxwidth <= 0)
  	return;
  
+     /* Make a copy, because the statusline may include a function call that
+      * might change the option value and free the memory. */
+     stl = vim_strsave(stl);
      width = build_stl_str_hl(wp == NULL ? curwin : wp,
  				buf, sizeof(buf),
! 				stl, use_sandbox,
  				fillchar, maxwidth, hltab, tabtab);
+     vim_free(stl);
      len = (int)STRLEN(buf);
  
      while (width < maxwidth && len < (int)sizeof(buf) - 1)
***************
*** 9465,9471 ****
  #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
      if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
      {
! 	redraw_custum_statusline(curwin);
      }
      else
  #endif
--- 9505,9511 ----
  #if defined(FEAT_STL_OPT) && defined(FEAT_WINDOWS)
      if ((*p_stl != NUL || *curwin->w_p_stl != NUL) && curwin->w_status_height)
      {
! 	redraw_custom_statusline(curwin);
      }
      else
  #endif
*** ../vim-7.2.279/src/version.c	2009-11-03 16:44:04.000000000 +0100
--- src/version.c	2009-11-03 17:15:35.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     280,
  /**/

-- 
Every exit is an entrance into something else.

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


--- NEW FILE 7.2.281 ---
To: vim-dev at vim.org
Subject: Patch 7.2.281
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.281
Problem:    'cursorcolumn' highlighting is wrong in diff mode.
Solution:   Adjust the column computation. (Lech Lorens)
Files:	    src/screen.c


*** ../vim-7.2.280/src/screen.c	2009-11-03 17:20:18.000000000 +0100
--- src/screen.c	2009-11-03 17:13:16.000000000 +0100
***************
*** 3008,3018 ****
  	    mb_ptr_adv(ptr);
  	}
  
! #ifdef FEAT_VIRTUALEDIT
! 	/* When 'virtualedit' is set the end of the line may be before the
! 	 * start of the displayed part. */
! 	if (vcol < v && *ptr == NUL && virtual_active())
  	    vcol = v;
  #endif
  
  	/* Handle a character that's not completely on the screen: Put ptr at
--- 3008,3040 ----
  	    mb_ptr_adv(ptr);
  	}
  
! #if defined(FEAT_SYN_HL) || defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
! 	/* When:
! 	 * - 'cuc' is set, or
! 	 * - 'virtualedit' is set, or
! 	 * - the visual mode is active,
! 	 * the end of the line may be before the start of the displayed part.
! 	 */
! 	if (vcol < v && (
! # ifdef FEAT_SYN_HL
! 	     wp->w_p_cuc
! #  if defined(FEAT_VIRTUALEDIT) || defined(FEAT_VISUAL)
! 	     ||
! #  endif
! # endif
! # ifdef FEAT_VIRTUALEDIT
! 	     virtual_active()
! #  ifdef FEAT_VISUAL
! 	     ||
! #  endif
! # endif
! # ifdef FEAT_VISUAL
! 	     (VIsual_active && wp->w_buffer == curwin->w_buffer)
! # endif
! 	     ))
! 	{
  	    vcol = v;
+ 	}
  #endif
  
  	/* Handle a character that's not completely on the screen: Put ptr at
*** ../vim-7.2.280/src/version.c	2009-11-03 17:20:18.000000000 +0100
--- src/version.c	2009-11-03 17:34:54.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     281,
  /**/

-- 
Every person is responsible for the choices he makes.

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


--- NEW FILE 7.2.282 ---
To: vim-dev at vim.org
Subject: Patch 7.2.282
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.282
Problem:    A fold can't be closed.
Solution:   Initialize fd_small to MAYBE. (Lech Lorens)
Files:	    src/fold.c


*** ../vim-7.2.281/src/fold.c	2009-11-03 16:29:48.000000000 +0100
--- src/fold.c	2009-11-03 17:41:50.000000000 +0100
***************
*** 2851,2856 ****
--- 2851,2858 ----
      fp[1].fd_top = bot + 1;
      fp[1].fd_len = fp->fd_len - (fp[1].fd_top - fp->fd_top);
      fp[1].fd_flags = fp->fd_flags;
+     fp[1].fd_small = MAYBE;
+     fp->fd_small = MAYBE;
  
      /* Move nested folds below bot to new fold.  There can't be
       * any between top and bot, they have been removed by the caller. */
*** ../vim-7.2.281/src/version.c	2009-11-03 17:36:09.000000000 +0100
--- src/version.c	2009-11-03 17:59:12.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     282,
  /**/

-- 
You can be stopped by the police for biking over 65 miles per hour.
You are not allowed to walk across a street on your hands.
		[real standing laws in Connecticut, United States of America]

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


--- NEW FILE 7.2.283 ---
To: vim-dev at vim.org
Subject: Patch 7.2.283
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.283
Problem:    Changing font while the window is maximized doesn't keep the
	    window maximized.
Solution:   Recompute number of lines and columns after changing font. (James
	    Vega)
Files:	    src/gui_gtk_x11.c


*** ../vim-7.2.282/src/gui_gtk_x11.c	2009-09-23 18:14:13.000000000 +0200
--- src/gui_gtk_x11.c	2009-11-03 17:56:27.000000000 +0100
***************
*** 5267,5274 ****
  # endif
  #endif /* !HAVE_GTK2 */
  
!     /* Preserve the logical dimensions of the screen. */
!     update_window_manager_hints(0, 0);
  
      return OK;
  }
--- 5267,5290 ----
  # endif
  #endif /* !HAVE_GTK2 */
  
! #ifdef HAVE_GTK2
!     if (gui_mch_maximized())
!     {
! 	int w, h;
! 
! 	/* Update lines and columns in accordance with the new font, keep the
! 	 * window maximized. */
! 	gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
! 	w -= get_menu_tool_width();
! 	h -= get_menu_tool_height();
! 	gui_resize_shell(w, h);
!     }
!     else
! #endif
!     {
! 	/* Preserve the logical dimensions of the screen. */
! 	update_window_manager_hints(0, 0);
!     }
  
      return OK;
  }
*** ../vim-7.2.282/src/version.c	2009-11-03 18:04:26.000000000 +0100
--- src/version.c	2009-11-03 18:11:53.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     283,
  /**/

-- 
If an elephant is left tied to a parking meter, the parking fee has to be paid
just as it would for a vehicle.
		[real standing law in Florida, United States of America]

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


--- NEW FILE 7.2.284 ---
To: vim-dev at vim.org
Subject: Patch 7.2.284
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.284
Problem:    When editing the same buffer in two windows, one with folding,
	    display may be wrong after changes.
Solution:   Call set_topline() to take care of side effects. (Lech Lorens)
Files:	    src/misc1.c


*** ../vim-7.2.283/src/misc1.c	2009-07-22 11:03:38.000000000 +0200
--- src/misc1.c	2009-11-03 18:38:15.000000000 +0100
***************
*** 2886,2891 ****
--- 2886,2898 ----
  		    }
  #endif
  		}
+ 
+ #ifdef FEAT_FOLDING
+ 	    /* Take care of side effects for setting w_topline when folds have
+ 	     * changed.  Esp. when the buffer was changed in another window. */
+ 	    if (hasAnyFolding(wp))
+ 		set_topline(wp, wp->w_topline);
+ #endif
  	}
      }
  
*** ../vim-7.2.283/src/version.c	2009-11-03 18:13:36.000000000 +0100
--- src/version.c	2009-11-03 18:44:12.000000000 +0100
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     284,
  /**/

-- 
Men may not be seen publicly in any kind of strapless gown.
		[real standing law in Florida, United States of America]

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


--- NEW FILE 7.2.285 ---
To: vim-dev at vim.org
Subject: Patch 7.2.285
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.285 (after 7.2.169)
Problem:    CTRL-U in Insert mode also deletes indent. (Andrey Voropaev)
Solution:   Fix mistake made in patch 7.2.169.
Files:	    src/edit.c


*** ../vim-7.2.284/src/edit.c	2009-07-09 18:15:19.000000000 +0200
--- src/edit.c	2009-11-05 20:25:15.000000000 +0100
***************
*** 8519,8525 ****
  	{
  	    save_col = curwin->w_cursor.col;
  	    beginline(BL_WHITE);
! 	    if (curwin->w_cursor.col < (colnr_T)temp)
  		mincol = curwin->w_cursor.col;
  	    curwin->w_cursor.col = save_col;
  	}
--- 8519,8525 ----
  	{
  	    save_col = curwin->w_cursor.col;
  	    beginline(BL_WHITE);
! 	    if (curwin->w_cursor.col < save_col)
  		mincol = curwin->w_cursor.col;
  	    curwin->w_cursor.col = save_col;
  	}
*** ../vim-7.2.284/src/version.c	2009-11-03 18:46:53.000000000 +0100
--- src/version.c	2009-11-11 13:21:25.000000000 +0100
***************
*** 678,679 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     285,
  /**/

-- 
(letter from Mark to Mike, about the film's probable certificate)
      I would like to get back to the Censor and agree to lose the shits, take
      the odd Jesus Christ out and lose Oh fuck off, but to retain 'fart in
      your general direction', 'castanets of your testicles' and 'oral sex'
      and ask him for an 'A' rating on that basis.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.286 ---
To: vim-dev at vim.org
Subject: Patch 7.2.286
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.286 (after 7.2.269)
Problem:    The "--startuptime=<file>" argument is not consistent with other
	    arguments.
Solution:   Use "--startuptime <file>".  Added the +startuptime feature.
Files:	    runtime/doc/eval.txt, runtime/doc/starting.txt,
	    runtime/doc/various.txt, src/eval.c, src/main.c, src/version.c


*** ../vim-7.2.285/runtime/doc/eval.txt	2009-04-22 12:53:31.000000000 +0200
--- runtime/doc/eval.txt	2009-11-11 13:01:58.000000000 +0100
***************
*** 5869,5874 ****
--- 5881,5887 ----
  signs			Compiled with |:sign| support.
  smartindent		Compiled with 'smartindent' support.
  sniff			Compiled with SNiFF interface support.
+ startuptime		Compiled with |--startuptime| support.
  statusline		Compiled with support for 'statusline', 'rulerformat'
  			and special formats of 'titlestring' and 'iconstring'.
  sun_workshop		Compiled with support for Sun |workshop|.
*** ../vim-7.2.285/runtime/doc/starting.txt	2009-11-03 12:10:39.000000000 +0100
--- runtime/doc/starting.txt	2009-11-11 13:20:56.000000000 +0100
***************
*** 144,155 ****
  			-u NORC			no		    yes
  			--noplugin		yes		    no
  
! --startuptime={fname}					*--startuptime*
  		During startup write timing messages to the file {fname}.
  		This can be used to find out where time is spent while loading
! 		your .vimrc and plugins.
  		When {fname} already exists new messages are appended.
! 		{only when compiled with this feature}
  
  							*--literal*
  --literal	Take file names literally, don't expand wildcards.  Not needed
--- 144,156 ----
  			-u NORC			no		    yes
  			--noplugin		yes		    no
  
! --startuptime {fname}					*--startuptime*
  		During startup write timing messages to the file {fname}.
  		This can be used to find out where time is spent while loading
! 		your .vimrc, plugins and opening the first file.
  		When {fname} already exists new messages are appended.
! 		(Only available when compiled with the |+startuptime|
! 		feature).
  
  							*--literal*
  --literal	Take file names literally, don't expand wildcards.  Not needed
*** ../vim-7.2.285/runtime/doc/various.txt	2009-07-09 15:55:34.000000000 +0200
--- runtime/doc/various.txt	2009-11-11 13:03:52.000000000 +0100
***************
*** 374,379 ****
--- 374,380 ----
  B  *+signs*		|:sign|
  N  *+smartindent*	|'smartindent'|
  m  *+sniff*		SniFF interface |sniff|
+ N  *+startuptime*	|--startuptime| argument
  N  *+statusline*	Options 'statusline', 'rulerformat' and special
  			formats of 'titlestring' and 'iconstring'
  m  *+sun_workshop*	|workshop|
*** ../vim-7.2.285/src/eval.c	2009-11-03 14:26:29.000000000 +0100
--- src/eval.c	2009-11-11 12:59:53.000000000 +0100
***************
*** 11736,11741 ****
--- 11736,11744 ----
  #ifdef FEAT_SNIFF
  	"sniff",
  #endif
+ #ifdef STARTUPTIME
+ 	"startuptime",
+ #endif
  #ifdef FEAT_STL_OPT
  	"statusline",
  #endif
*** ../vim-7.2.285/src/main.c	2009-11-03 12:10:39.000000000 +0100
--- src/main.c	2009-11-08 12:57:46.000000000 +0100
***************
*** 204,212 ****
  #ifdef STARTUPTIME
      for (i = 1; i < argc; ++i)
      {
! 	if (STRNICMP(argv[i], "--startuptime=", 14) == 0)
  	{
! 	    time_fd = mch_fopen(argv[i] + 14, "a");
  	    TIME_MSG("--- VIM STARTING ---");
  	    break;
  	}
--- 204,212 ----
  #ifdef STARTUPTIME
      for (i = 1; i < argc; ++i)
      {
! 	if (STRICMP(argv[i], "--startuptime") == 0 && i + 1 < argc)
  	{
! 	    time_fd = mch_fopen(argv[i + 1], "a");
  	    TIME_MSG("--- VIM STARTING ---");
  	    break;
  	}
***************
*** 1726,1731 ****
--- 1726,1736 ----
  		    want_argument = TRUE;
  		    argv_idx += 3;
  		}
+ 		else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
+ 		{
+ 		    want_argument = TRUE;
+ 		    argv_idx += 11;
+ 		}
  #ifdef FEAT_CLIENTSERVER
  		else if (STRNICMP(argv[0] + argv_idx, "serverlist", 10) == 0)
  		    ; /* already processed -- no arg */
***************
*** 1761,1770 ****
  		    /* already processed, skip */
  		}
  #endif
- 		else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0)
- 		{
- 		    /* already processed, skip */
- 		}
  		else
  		{
  		    if (argv[0][argv_idx])
--- 1766,1771 ----
***************
*** 2061,2067 ****
  		    mainerr(ME_GARBAGE, (char_u *)argv[0]);
  
  		--argc;
! 		if (argc < 1 && c != 'S')
  		    mainerr_arg_missing((char_u *)argv[0]);
  		++argv;
  		argv_idx = -1;
--- 2062,2068 ----
  		    mainerr(ME_GARBAGE, (char_u *)argv[0]);
  
  		--argc;
! 		if (argc < 1 && c != 'S')  /* -S has an optional argument */
  		    mainerr_arg_missing((char_u *)argv[0]);
  		++argv;
  		argv_idx = -1;
***************
*** 2102,2112 ****
  							    (char_u *)argv[0];
  		    break;
  
! 		case '-':	/* "--cmd {command}" execute command */
! 		    if (parmp->n_pre_commands >= MAX_ARG_CMDS)
! 			mainerr(ME_EXTRA_CMD, NULL);
! 		    parmp->pre_commands[parmp->n_pre_commands++] =
  							    (char_u *)argv[0];
  		    break;
  
  	    /*	case 'd':   -d {device} is handled in mch_check_win() for the
--- 2103,2118 ----
  							    (char_u *)argv[0];
  		    break;
  
! 		case '-':
! 		    if (argv[-1][2] == 'c')
! 		    {
! 			/* "--cmd {command}" execute command */
! 			if (parmp->n_pre_commands >= MAX_ARG_CMDS)
! 			    mainerr(ME_EXTRA_CMD, NULL);
! 			parmp->pre_commands[parmp->n_pre_commands++] =
  							    (char_u *)argv[0];
+ 		    }
+ 		    /* "--startuptime <file>" already handled */
  		    break;
  
  	    /*	case 'd':   -d {device} is handled in mch_check_win() for the
***************
*** 3144,3149 ****
--- 3150,3158 ----
      main_msg(_("--serverlist\t\tList available Vim server names and exit"));
      main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
  #endif
+ #ifdef STARTUPTIME
+     main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
+ #endif
  #ifdef FEAT_VIMINFO
      main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
  #endif
*** ../vim-7.2.285/src/version.c	2009-11-11 13:22:09.000000000 +0100
--- src/version.c	2009-11-11 14:17:28.000000000 +0100
***************
*** 494,499 ****
--- 494,504 ----
  #else
  	"-sniff",
  #endif
+ #ifdef STARTUPTIME
+ 	"+startuptime",
+ #else
+ 	"-startuptime",
+ #endif
  #ifdef FEAT_STL_OPT
  	"+statusline",
  #else
*** ../vim-7.2.285/src/version.c	2009-11-11 13:22:09.000000000 +0100
--- src/version.c	2009-11-11 14:17:28.000000000 +0100
***************
*** 678,679 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     286,
  /**/

-- 
A fool must search for a greater fool to find admiration.

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


--- NEW FILE 7.2.287 ---
To: vim-dev at vim.org
Subject: Patch 7.2.287
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.287
Problem:    Warning from gcc 3.4 about uninitialized variable.
Solution:   Move assignment outside of #ifdef.
Files:	    src/if_perl.xs


*** ../vim-7.2.286/src/if_perl.xs	2009-07-14 16:05:14.000000000 +0200
--- src/if_perl.xs	2009-11-11 12:29:32.000000000 +0100
***************
*** 720,727 ****
  #ifdef HAVE_SANDBOX
      if (sandbox)
      {
  # ifndef MAKE_TEST  /* avoid a warning for unreachable code */
! 	if ((safe = perl_get_sv( "VIM::safe", FALSE )) == NULL || !SvTRUE(safe))
  	    EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
  	else
  # endif
--- 720,728 ----
  #ifdef HAVE_SANDBOX
      if (sandbox)
      {
+ 	safe = perl_get_sv( "VIM::safe", FALSE );
  # ifndef MAKE_TEST  /* avoid a warning for unreachable code */
! 	if (safe == NULL || !SvTRUE(safe))
  	    EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
  	else
  # endif
*** ../vim-7.2.286/src/version.c	2009-11-11 14:21:48.000000000 +0100
--- src/version.c	2009-11-11 14:44:49.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     287,
  /**/

-- 
The most powerful force in the universe is gossip.

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


--- NEW FILE 7.2.288 ---
To: vim-dev at vim.org
Subject: Patch 7.2.288
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.288
Problem:    Python 2.6 pyconfig.h redefines macros.
Solution:   Undefine the macros before including pyconfig.h.
Files:      src/if_python.c


*** ../vim-7.2.287/src/if_python.c	2009-11-03 11:43:05.000000000 +0100
--- src/if_python.c	2009-11-11 12:33:37.000000000 +0100
***************
*** 37,42 ****
--- 37,48 ----
  #ifdef HAVE_STDARG_H
  # undef HAVE_STDARG_H	/* Python's config.h defines it as well. */
  #endif
+ #ifdef _POSIX_C_SOURCE
+ # undef _POSIX_C_SOURCE	/* pyconfig.h defines it as well. */
+ #endif
+ #ifdef _XOPEN_SOURCE
+ # undef _XOPEN_SOURCE	/* pyconfig.h defines it as well. */
+ #endif
  
  #define PY_SSIZE_T_CLEAN
  
*** ../vim-7.2.287/src/version.c	2009-11-11 14:45:36.000000000 +0100
--- src/version.c	2009-11-11 15:05:51.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     288,
  /**/

-- 
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.2.289 ---
To: vim-dev at vim.org
Subject: Patch 7.2.289
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.289
Problem:    Checking wrong struct member.
Solution:   Change tb_buf to tb_noremap. (Dominique Pelle)
Files:	    src/getchar.c


*** ../vim-7.2.288/src/getchar.c	2009-09-30 15:15:33.000000000 +0200
--- src/getchar.c	2009-11-11 12:50:58.000000000 +0100
***************
*** 22,28 ****
   * These buffers are used for storing:
   * - stuffed characters: A command that is translated into another command.
   * - redo characters: will redo the last change.
!  * - recorded chracters: for the "q" command.
   *
   * The bytes are stored like in the typeahead buffer:
   * - K_SPECIAL introduces a special key (two more bytes follow).  A literal
--- 22,28 ----
   * These buffers are used for storing:
   * - stuffed characters: A command that is translated into another command.
   * - redo characters: will redo the last change.
!  * - recorded characters: for the "q" command.
   *
   * The bytes are stored like in the typeahead buffer:
   * - K_SPECIAL introduces a special key (two more bytes follow).  A literal
***************
*** 1283,1289 ****
  	EMSG2(_(e_intern2), "Free typebuf 1");
      else
  	vim_free(typebuf.tb_buf);
!     if (typebuf.tb_buf == noremapbuf_init)
  	EMSG2(_(e_intern2), "Free typebuf 2");
      else
  	vim_free(typebuf.tb_noremap);
--- 1283,1289 ----
  	EMSG2(_(e_intern2), "Free typebuf 1");
      else
  	vim_free(typebuf.tb_buf);
!     if (typebuf.tb_noremap == noremapbuf_init)
  	EMSG2(_(e_intern2), "Free typebuf 2");
      else
  	vim_free(typebuf.tb_noremap);
***************
*** 1516,1522 ****
   * wanted.
   * This translates escaped K_SPECIAL and CSI bytes to a K_SPECIAL or CSI byte.
   * Collects the bytes of a multibyte character into the whole character.
!  * Returns the modifers in the global "mod_mask".
   */
      int
  vgetc()
--- 1516,1522 ----
   * wanted.
   * This translates escaped K_SPECIAL and CSI bytes to a K_SPECIAL or CSI byte.
   * Collects the bytes of a multibyte character into the whole character.
!  * Returns the modifiers in the global "mod_mask".
   */
      int
  vgetc()
***************
*** 3320,3326 ****
  			    retval = 1;
  			    goto theend;
  			}
! 	    /* An abbrevation cannot contain white space. */
  	    for (n = 0; n < len; ++n)
  		if (vim_iswhite(keys[n]))
  		{
--- 3320,3326 ----
  			    retval = 1;
  			    goto theend;
  			}
! 	    /* An abbreviation cannot contain white space. */
  	    for (n = 0; n < len; ++n)
  		if (vim_iswhite(keys[n]))
  		{
***************
*** 4272,4278 ****
  
      /*
       * Check for word before the cursor: If it ends in a keyword char all
!      * chars before it must be al keyword chars or non-keyword chars, but not
       * white space. If it ends in a non-keyword char we accept any characters
       * before it except white space.
       */
--- 4272,4278 ----
  
      /*
       * Check for word before the cursor: If it ends in a keyword char all
!      * chars before it must be keyword chars or non-keyword chars, but not
       * white space. If it ends in a non-keyword char we accept any characters
       * before it except white space.
       */
*** ../vim-7.2.288/src/version.c	2009-11-11 15:06:59.000000000 +0100
--- src/version.c	2009-11-11 16:19:12.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     289,
  /**/

-- 
A M00se once bit my sister ...
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.290 ---
To: vim-dev at vim.org
Subject: Patch 7.2.290
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.290
Problem:    Not freeing memory from ":lmap", ":xmap" and ":menutranslate".
Solution:   Free the memory when exiting. (Dominique Pelle)
Files:	    src/misc2.c


*** ../vim-7.2.289/src/misc2.c	2009-11-03 16:44:04.000000000 +0100
--- src/misc2.c	2009-11-11 16:49:13.000000000 +0100
***************
*** 1005,1013 ****
--- 1005,1018 ----
  # ifdef FEAT_MENU
      /* Clear menus. */
      do_cmdline_cmd((char_u *)"aunmenu *");
+ #  ifdef FEAT_MULTI_LANG
+     do_cmdline_cmd((char_u *)"menutranslate clear");
+ #  endif
  # endif
  
      /* Clear mappings, abbreviations, breakpoints. */
+     do_cmdline_cmd((char_u *)"lmapclear");
+     do_cmdline_cmd((char_u *)"xmapclear");
      do_cmdline_cmd((char_u *)"mapclear");
      do_cmdline_cmd((char_u *)"mapclear!");
      do_cmdline_cmd((char_u *)"abclear");
***************
*** 1282,1288 ****
  
  /*
   * Escape "string" for use as a shell argument with system().
!  * This uses single quotes, except when we know we need to use double qoutes
   * (MS-DOS and MS-Windows without 'shellslash' set).
   * Escape a newline, depending on the 'shell' option.
   * When "do_special" is TRUE also replace "!", "%", "#" and things starting
--- 1287,1293 ----
  
  /*
   * Escape "string" for use as a shell argument with system().
!  * This uses single quotes, except when we know we need to use double quotes
   * (MS-DOS and MS-Windows without 'shellslash' set).
   * Escape a newline, depending on the 'shell' option.
   * When "do_special" is TRUE also replace "!", "%", "#" and things starting
***************
*** 1537,1543 ****
  #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
  /*
   * Copy a character a number of times.
!  * Does not work for multi-byte charactes!
   */
      void
  copy_chars(ptr, count, c)
--- 1542,1548 ----
  #if defined(FEAT_VISUALEXTRA) || defined(PROTO)
  /*
   * Copy a character a number of times.
!  * Does not work for multi-byte characters!
   */
      void
  copy_chars(ptr, count, c)
***************
*** 4260,4266 ****
  	 * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
  	 * For EBCDIC you get different character values.
  	 * If no restrict is given after '**' the default is used.
! 	 * Due to this technic the path looks awful if you print it as a
  	 * string.
  	 */
  	len = 0;
--- 4265,4271 ----
  	 * or '**76' is transposed to '**N'( 'N' is ASCII value 76).
  	 * For EBCDIC you get different character values.
  	 * If no restrict is given after '**' the default is used.
! 	 * Due to this technique the path looks awful if you print it as a
  	 * string.
  	 */
  	len = 0;
***************
*** 4649,4655 ****
  				      && !mch_isdir(stackp->ffs_filearray[i]))
  			    continue;   /* not a directory */
  
! 			/* prepare the filename to be checked for existance
  			 * below */
  			STRCPY(file_path, stackp->ffs_filearray[i]);
  			add_pathsep(file_path);
--- 4654,4660 ----
  				      && !mch_isdir(stackp->ffs_filearray[i]))
  			    continue;   /* not a directory */
  
! 			/* prepare the filename to be checked for existence
  			 * below */
  			STRCPY(file_path, stackp->ffs_filearray[i]);
  			add_pathsep(file_path);
***************
*** 5438,5444 ****
  #if defined(MSWIN) || defined(MSDOS) || defined(OS2)
  	    /* handle "\tmp" as absolute path */
  	    || vim_ispathsep(ff_file_to_find[0])
! 	    /* handle "c:name" as absulute path */
  	    || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
  #endif
  #ifdef AMIGA
--- 5443,5449 ----
  #if defined(MSWIN) || defined(MSDOS) || defined(OS2)
  	    /* handle "\tmp" as absolute path */
  	    || vim_ispathsep(ff_file_to_find[0])
! 	    /* handle "c:name" as absolute path */
  	    || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
  #endif
  #ifdef AMIGA
***************
*** 5681,5687 ****
  		p2 = (char_u *)base + (j + gap) * elm_size;
  		if ((*cmp)((void *)p1, (void *)p2) <= 0)
  		    break;
! 		/* Exchange the elemets. */
  		mch_memmove(buf, p1, elm_size);
  		mch_memmove(p1, p2, elm_size);
  		mch_memmove(p2, buf, elm_size);
--- 5686,5692 ----
  		p2 = (char_u *)base + (j + gap) * elm_size;
  		if ((*cmp)((void *)p1, (void *)p2) <= 0)
  		    break;
! 		/* Exchange the elements. */
  		mch_memmove(buf, p1, elm_size);
  		mch_memmove(p1, p2, elm_size);
  		mch_memmove(p2, buf, elm_size);
*** ../vim-7.2.289/src/version.c	2009-11-11 16:23:37.000000000 +0100
--- src/version.c	2009-11-11 16:54:53.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     290,
  /**/

-- 
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.2.291 ---
To: vim-dev at vim.org
Subject: Patch 7.2.291
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.291
Problem:    Reading uninitialised memory in arabic mode.
Solution:   Use utfc_ptr2char_len() rather than utfc_ptr2char().  (Dominique
	    Pelle)
Files:	    src/screen.c


*** ../vim-7.2.290/src/screen.c	2009-11-03 17:36:09.000000000 +0100
--- src/screen.c	2009-11-11 17:04:53.000000000 +0100
***************
*** 6413,6419 ****
  		    }
  		    else
  		    {
! 			nc = utfc_ptr2char(ptr + mbyte_blen, pcc);
  			nc1 = pcc[0];
  		    }
  		    pc = prev_c;
--- 6413,6420 ----
  		    }
  		    else
  		    {
! 			nc = utfc_ptr2char_len(ptr + mbyte_blen, pcc,
! 				      (int)((text + len) - ptr - mbyte_blen));
  			nc1 = pcc[0];
  		    }
  		    pc = prev_c;
*** ../vim-7.2.290/src/version.c	2009-11-11 16:56:13.000000000 +0100
--- src/version.c	2009-11-11 17:06:48.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     291,
  /**/

-- 
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.2.292 ---
To: vim-dev at vim.org
Subject: Patch 7.2.292
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.292
Problem:    Block right-shift doesn't work properly with multi-byte encoding
	    and 'list' set.
Solution:   Add the missing "else". (Lech Lorens)
Files:	    src/ops.c


*** ../vim-7.2.291/src/ops.c	2009-11-03 16:44:04.000000000 +0100
--- src/ops.c	2009-11-11 17:15:04.000000000 +0100
***************
*** 422,429 ****
  #ifdef FEAT_MBYTE
  	    if (has_mbyte)
  		bd.textstart += (*mb_ptr2len)(bd.textstart);
  #endif
! 	    ++bd.textstart;
  	}
  	for ( ; vim_iswhite(*bd.textstart); )
  	{
--- 422,430 ----
  #ifdef FEAT_MBYTE
  	    if (has_mbyte)
  		bd.textstart += (*mb_ptr2len)(bd.textstart);
+ 	    else
  #endif
! 		++bd.textstart;
  	}
  	for ( ; vim_iswhite(*bd.textstart); )
  	{
*** ../vim-7.2.291/src/version.c	2009-11-11 17:07:25.000000000 +0100
--- src/version.c	2009-11-11 17:21:31.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     292,
  /**/

-- 
Computers make very fast, very accurate, mistakes.

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


--- NEW FILE 7.2.293 ---
To: vim-dev at vim.org
Subject: Patch 7.2.293
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.293
Problem:    When setting 'comments' option it may be used in a wrong way. 
Solution:   Don't increment after skipping over digets. (Yukihiro Nakadaira)
Files:	    src/misc1.c


*** ../vim-7.2.292/src/misc1.c	2009-11-03 18:46:53.000000000 +0100
--- src/misc1.c	2009-11-11 17:27:38.000000000 +0100
***************
*** 1026,1037 ****
  		    int		c = 0;
  		    int		off = 0;
  
! 		    for (p = lead_flags; *p && *p != ':'; ++p)
  		    {
  			if (*p == COM_RIGHT || *p == COM_LEFT)
! 			    c = *p;
  			else if (VIM_ISDIGIT(*p) || *p == '-')
  			    off = getdigits(&p);
  		    }
  		    if (c == COM_RIGHT)    /* right adjusted leader */
  		    {
--- 1026,1039 ----
  		    int		c = 0;
  		    int		off = 0;
  
! 		    for (p = lead_flags; *p != NUL && *p != ':'; )
  		    {
  			if (*p == COM_RIGHT || *p == COM_LEFT)
! 			    c = *p++;
  			else if (VIM_ISDIGIT(*p) || *p == '-')
  			    off = getdigits(&p);
+ 			else
+ 			    ++p;
  		    }
  		    if (c == COM_RIGHT)    /* right adjusted leader */
  		    {
*** ../vim-7.2.292/src/version.c	2009-11-11 17:22:30.000000000 +0100
--- src/version.c	2009-11-11 17:29:24.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     293,
  /**/

-- 
SOLDIER: What?  Ridden on a horse?
ARTHUR:  Yes!
SOLDIER: You're using coconuts!
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.294 ---
To: vim-dev at vim.org
Subject: Patch 7.2.294
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.294
Problem:    When using TEMPDIRS dir name could get too long.
Solution:   Overwrite tail instead of appending each time.  Use mkdtemp() when
	    available. (James Vega)
Files:	    src/auto/configure, src/config.h.in, src/configure.in, src/fileio.c


*** ../vim-7.2.293/src/auto/configure	2009-09-11 13:44:33.000000000 +0200
--- src/auto/configure	2009-11-17 12:03:15.000000000 +0100
***************
*** 14019,14027 ****
  
  
  
  for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
  	getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
! 	memset nanosleep opendir putenv qsort readlink select setenv \
  	setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
  	sigvec strcasecmp strerror strftime stricmp strncasecmp \
  	strnicmp strpbrk strtol tgetent towlower towupper iswupper \
--- 14019,14028 ----
  
  
  
+ 
  for ac_func in bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
  	getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
! 	memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
  	setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
  	sigvec strcasecmp strerror strftime stricmp strncasecmp \
  	strnicmp strpbrk strtol tgetent towlower towupper iswupper \
*** ../vim-7.2.293/src/config.h.in	2009-05-21 23:25:38.000000000 +0200
--- src/config.h.in	2009-11-11 17:40:21.000000000 +0100
***************
*** 157,162 ****
--- 157,163 ----
  #undef HAVE_LSTAT
  #undef HAVE_MEMCMP
  #undef HAVE_MEMSET
+ #undef HAVE_MKDTEMP
  #undef HAVE_NANOSLEEP
  #undef HAVE_OPENDIR
  #undef HAVE_FLOAT_FUNCS
*** ../vim-7.2.293/src/configure.in	2009-09-11 13:44:33.000000000 +0200
--- src/configure.in	2009-11-11 17:40:21.000000000 +0100
***************
*** 2635,2641 ****
  dnl Check for functions in one big call, to reduce the size of configure
  AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
  	getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
! 	memset nanosleep opendir putenv qsort readlink select setenv \
  	setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
  	sigvec strcasecmp strerror strftime stricmp strncasecmp \
  	strnicmp strpbrk strtol tgetent towlower towupper iswupper \
--- 2635,2641 ----
  dnl Check for functions in one big call, to reduce the size of configure
  AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
  	getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
! 	memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
  	setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
  	sigvec strcasecmp strerror strftime stricmp strncasecmp \
  	strnicmp strpbrk strtol tgetent towlower towupper iswupper \
*** ../vim-7.2.293/src/fileio.c	2009-09-11 17:24:01.000000000 +0200
--- src/fileio.c	2009-11-11 18:01:22.000000000 +0100
***************
*** 146,151 ****
--- 146,152 ----
  # endif
  #endif
  static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+ static void vim_settempdir __ARGS((char_u *tempdir));
  #ifdef FEAT_AUTOCMD
  static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
  #endif
***************
*** 6987,6992 ****
--- 6988,7020 ----
  #endif
  
  /*
+  * Directory "tempdir" was created.  Expand this name to a full path and put
+  * it in "vim_tempdir".  This avoids that using ":cd" would confuse us.
+  * "tempdir" must be no longer than MAXPATHL.
+  */
+     static void
+ vim_settempdir(tempdir)
+     char_u	*tempdir;
+ {
+     char_u	*buf;
+ 
+     buf = alloc((unsigned)MAXPATHL + 2);
+     if (buf != NULL)
+     {
+ 	if (vim_FullName(tempdir, buf, MAXPATHL, FALSE) == FAIL)
+ 	    STRCPY(buf, tempdir);
+ # ifdef __EMX__
+ 	if (vim_strchr(buf, '/') != NULL)
+ 	    STRCAT(buf, "/");
+ 	else
+ # endif
+ 	    add_pathsep(buf);
+ 	vim_tempdir = vim_strsave(buf);
+ 	vim_free(buf);
+     }
+ }
+ 
+ /*
   * vim_tempname(): Return a unique name that can be used for a temp file.
   *
   * The temp file is NOT created.
***************
*** 7007,7014 ****
  #ifdef TEMPDIRNAMES
      static char	*(tempdirs[]) = {TEMPDIRNAMES};
      int		i;
-     long	nr;
-     long	off;
  # ifndef EEXIST
      struct stat	st;
  # endif
--- 7035,7040 ----
***************
*** 7027,7032 ****
--- 7053,7064 ----
  	 */
  	for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
  	{
+ 	    size_t	itmplen;
+ # ifndef HAVE_MKDTEMP
+ 	    long	nr;
+ 	    long	off;
+ # endif
+ 
  	    /* expand $TMP, leave room for "/v1100000/999999999" */
  	    expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
  	    if (mch_isdir(itmp))		/* directory exists */
***************
*** 7040,7046 ****
--- 7072,7085 ----
  		else
  # endif
  		    add_pathsep(itmp);
+ 		itmplen = STRLEN(itmp);
  
+ # ifdef HAVE_MKDTEMP
+ 		/* Leave room for filename */
+ 		STRCAT(itmp, "vXXXXXX");
+ 		if (mkdtemp((char *)itmp) != NULL)
+ 		    vim_settempdir(itmp);
+ # else
  		/* Get an arbitrary number of up to 6 digits.  When it's
  		 * unlikely that it already exists it will be faster,
  		 * otherwise it doesn't matter.  The use of mkdir() avoids any
***************
*** 7052,7110 ****
  		for (off = 0; off < 10000L; ++off)
  		{
  		    int		r;
! #if defined(UNIX) || defined(VMS)
  		    mode_t	umask_save;
! #endif
  
! 		    sprintf((char *)itmp + STRLEN(itmp), "v%ld", nr + off);
! # ifndef EEXIST
  		    /* If mkdir() does not set errno to EEXIST, check for
  		     * existing file here.  There is a race condition then,
  		     * although it's fail-safe. */
  		    if (mch_stat((char *)itmp, &st) >= 0)
  			continue;
! # endif
! #if defined(UNIX) || defined(VMS)
  		    /* Make sure the umask doesn't remove the executable bit.
  		     * "repl" has been reported to use "177". */
  		    umask_save = umask(077);
! #endif
  		    r = vim_mkdir(itmp, 0700);
! #if defined(UNIX) || defined(VMS)
  		    (void)umask(umask_save);
! #endif
  		    if (r == 0)
  		    {
! 			char_u	*buf;
! 
! 			/* Directory was created, use this name.
! 			 * Expand to full path; When using the current
! 			 * directory a ":cd" would confuse us. */
! 			buf = alloc((unsigned)MAXPATHL + 1);
! 			if (buf != NULL)
! 			{
! 			    if (vim_FullName(itmp, buf, MAXPATHL, FALSE)
! 								      == FAIL)
! 				STRCPY(buf, itmp);
! # ifdef __EMX__
! 			    if (vim_strchr(buf, '/') != NULL)
! 				STRCAT(buf, "/");
! 			    else
! # endif
! 				add_pathsep(buf);
! 			    vim_tempdir = vim_strsave(buf);
! 			    vim_free(buf);
! 			}
  			break;
  		    }
! # ifdef EEXIST
  		    /* If the mkdir() didn't fail because the file/dir exists,
  		     * we probably can't create any dir here, try another
  		     * place. */
  		    if (errno != EEXIST)
! # endif
  			break;
  		}
  		if (vim_tempdir != NULL)
  		    break;
  	    }
--- 7091,7131 ----
  		for (off = 0; off < 10000L; ++off)
  		{
  		    int		r;
! #  if defined(UNIX) || defined(VMS)
  		    mode_t	umask_save;
! #  endif
  
! 		    sprintf((char *)itmp + itmplen, "v%ld", nr + off);
! #  ifndef EEXIST
  		    /* If mkdir() does not set errno to EEXIST, check for
  		     * existing file here.  There is a race condition then,
  		     * although it's fail-safe. */
  		    if (mch_stat((char *)itmp, &st) >= 0)
  			continue;
! #  endif
! #  if defined(UNIX) || defined(VMS)
  		    /* Make sure the umask doesn't remove the executable bit.
  		     * "repl" has been reported to use "177". */
  		    umask_save = umask(077);
! #  endif
  		    r = vim_mkdir(itmp, 0700);
! #  if defined(UNIX) || defined(VMS)
  		    (void)umask(umask_save);
! #  endif
  		    if (r == 0)
  		    {
! 			vim_settempdir(itmp);
  			break;
  		    }
! #  ifdef EEXIST
  		    /* If the mkdir() didn't fail because the file/dir exists,
  		     * we probably can't create any dir here, try another
  		     * place. */
  		    if (errno != EEXIST)
! #  endif
  			break;
  		}
+ # endif /* HAVE_MKDTEMP */
  		if (vim_tempdir != NULL)
  		    break;
  	    }
*** ../vim-7.2.293/src/version.c	2009-11-11 17:30:05.000000000 +0100
--- src/version.c	2009-11-17 11:54:49.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     294,
  /**/

-- 
ARTHUR:       Now stand aside worthy adversary.
BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch.
ARTHUR:       A scratch?  Your arm's off.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.295 ---
To: vim-dev at vim.org
Subject: Patch 7.2.295
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.295
Problem:    When using map() on a List the index is not known.
Solution:   Set v:key to the  index. (Hari Krishna Dara)
Files:	    runtime/doc/eval.txt, src/eval.c


*** ../vim-7.2.294/runtime/doc/eval.txt	2009-11-11 14:21:48.000000000 +0100
--- runtime/doc/eval.txt	2009-11-11 18:22:54.000000000 +0100
***************
*** 3802,3808 ****
  		Replace each item in {expr} with the result of evaluating
  		{string}.
  		Inside {string} |v:val| has the value of the current item.
! 		For a |Dictionary| |v:key| has the key of the current item.
  		Example: >
  			:call map(mylist, '"> " . v:val . " <"')
  <		This puts "> " before and " <" after each item in "mylist".
--- 3812,3819 ----
  		Replace each item in {expr} with the result of evaluating
  		{string}.
  		Inside {string} |v:val| has the value of the current item.
! 		For a |Dictionary| |v:key| has the key of the current item
! 		and for a |List| |v:key| has the index of the current item.
  		Example: >
  			:call map(mylist, '"> " . v:val . " <"')
  <		This puts "> " before and " <" after each item in "mylist".
*** ../vim-7.2.294/src/eval.c	2009-11-11 14:21:48.000000000 +0100
--- src/eval.c	2009-11-11 18:22:49.000000000 +0100
***************
*** 9928,9933 ****
--- 9928,9934 ----
      int		todo;
      char_u	*ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
      int		save_did_emsg;
+     int		index = 0;
  
      if (argvars[0].v_type == VAR_LIST)
      {
***************
*** 9961,9969 ****
  	save_did_emsg = did_emsg;
  	did_emsg = FALSE;
  
  	if (argvars[0].v_type == VAR_DICT)
  	{
- 	    prepare_vimvar(VV_KEY, &save_key);
  	    vimvars[VV_KEY].vv_type = VAR_STRING;
  
  	    ht = &d->dv_hashtab;
--- 9962,9970 ----
  	save_did_emsg = did_emsg;
  	did_emsg = FALSE;
  
+ 	prepare_vimvar(VV_KEY, &save_key);
  	if (argvars[0].v_type == VAR_DICT)
  	{
  	    vimvars[VV_KEY].vv_type = VAR_STRING;
  
  	    ht = &d->dv_hashtab;
***************
*** 9987,10010 ****
  		}
  	    }
  	    hash_unlock(ht);
- 
- 	    restore_vimvar(VV_KEY, &save_key);
  	}
  	else
  	{
  	    for (li = l->lv_first; li != NULL; li = nli)
  	    {
  		if (tv_check_lock(li->li_tv.v_lock, ermsg))
  		    break;
  		nli = li->li_next;
  		if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
  								  || did_emsg)
  		    break;
  		if (!map && rem)
  		    listitem_remove(l, li);
  	    }
  	}
  
  	restore_vimvar(VV_VAL, &save_val);
  
  	did_emsg |= save_did_emsg;
--- 9988,10014 ----
  		}
  	    }
  	    hash_unlock(ht);
  	}
  	else
  	{
+ 	    vimvars[VV_KEY].vv_type = VAR_NUMBER;
+ 
  	    for (li = l->lv_first; li != NULL; li = nli)
  	    {
  		if (tv_check_lock(li->li_tv.v_lock, ermsg))
  		    break;
  		nli = li->li_next;
+ 		vimvars[VV_KEY].vv_nr = index;
  		if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
  								  || did_emsg)
  		    break;
  		if (!map && rem)
  		    listitem_remove(l, li);
+ 		++index;
  	    }
  	}
  
+ 	restore_vimvar(VV_KEY, &save_key);
  	restore_vimvar(VV_VAL, &save_val);
  
  	did_emsg |= save_did_emsg;
*** ../vim-7.2.294/src/version.c	2009-11-17 12:08:48.000000000 +0100
--- src/version.c	2009-11-17 12:18:08.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     295,
  /**/

-- 
ARTHUR:       You are indeed brave Sir knight, but the fight is mine.
BLACK KNIGHT: Had enough?
ARTHUR:       You stupid bastard.  You havn't got any arms left.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.296 ---
To: vim-dev at vim.org
Subject: Patch 7.2.296
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.296
Problem:    Help message about startuptime is wrong. (Dominique Pelle)
Solution:   Remove the equal sign.
Files:	    src/main.c


*** ../vim-7.2.295/src/main.c	2009-11-11 14:21:48.000000000 +0100
--- src/main.c	2009-11-11 22:51:04.000000000 +0100
***************
*** 3151,3157 ****
      main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
  #endif
  #ifdef STARTUPTIME
!     main_msg(_("--startuptime=<file>\tWrite startup timing messages to <file>"));
  #endif
  #ifdef FEAT_VIMINFO
      main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
--- 3151,3157 ----
      main_msg(_("--servername <name>\tSend to/become the Vim server <name>"));
  #endif
  #ifdef STARTUPTIME
!     main_msg(_("--startuptime <file>\tWrite startup timing messages to <file>"));
  #endif
  #ifdef FEAT_VIMINFO
      main_msg(_("-i <viminfo>\t\tUse <viminfo> instead of .viminfo"));
*** ../vim-7.2.295/src/version.c	2009-11-17 12:20:30.000000000 +0100
--- src/version.c	2009-11-17 12:30:29.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     296,
  /**/

-- 
BLACK KNIGHT: I'm invincible!
ARTHUR:       You're a looney.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.297 ---
To: vim-dev at vim.org
Subject: Patch 7.2.297
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.297
Problem:    Reading freed memory when writing ":reg" output to a register.
	    (Dominique Pelle)
Solution:   Skip the register being written to.
Files:	    src/ops.c


*** ../vim-7.2.296/src/ops.c	2009-11-11 17:22:30.000000000 +0100
--- src/ops.c	2009-11-11 19:30:47.000000000 +0100
***************
*** 3991,3996 ****
--- 3991,4004 ----
  	}
  	else
  	    yb = &(y_regs[i]);
+ 
+ #ifdef FEAT_EVAL
+ 	if (name == MB_TOLOWER(redir_reg)
+ 		|| (redir_reg == '"' && yb == y_previous))
+ 	    continue;	    /* do not list register being written to, the
+ 			     * pointer can be freed */
+ #endif
+ 
  	if (yb->y_array != NULL)
  	{
  	    msg_putchar('\n');
***************
*** 6090,6096 ****
      long	maxlen;
  #endif
  
!     if (y_ptr->y_array == NULL)		/* NULL means emtpy register */
  	y_ptr->y_size = 0;
  
      /*
--- 6098,6104 ----
      long	maxlen;
  #endif
  
!     if (y_ptr->y_array == NULL)		/* NULL means empty register */
  	y_ptr->y_size = 0;
  
      /*
*** ../vim-7.2.296/src/version.c	2009-11-17 12:31:30.000000000 +0100
--- src/version.c	2009-11-17 12:42:28.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     297,
  /**/

-- 
"Beware of bugs in the above code; I have only proved
it correct, not tried it." -- Donald Knuth

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


--- NEW FILE 7.2.298 ---
To: vim-dev at vim.org
Subject: Patch 7.2.298
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.298
Problem:    ":vimgrep" crashes when there is an autocommand that sets a
	    window-local variable.
Solution:   Initialize the w: hashtab for re-use. (Yukihiro Nakadaira)
Files:	    src/fileio.c


*** ../vim-7.2.297/src/fileio.c	2009-11-17 12:08:48.000000000 +0100
--- src/fileio.c	2009-11-17 13:22:06.000000000 +0100
***************
*** 8597,8602 ****
--- 8605,8611 ----
  	    curwin = firstwin;
  # ifdef FEAT_EVAL
  	vars_clear(&aucmd_win->w_vars.dv_hashtab);  /* free all w: variables */
+ 	hash_init(&aucmd_win->w_vars.dv_hashtab);   /* re-use the hashtab */
  # endif
  #else
  	curwin = aco->save_curwin;
*** ../vim-7.2.297/src/version.c	2009-11-17 12:43:19.000000000 +0100
--- src/version.c	2009-11-17 14:56:19.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     298,
  /**/

-- 
Eye have a spelling checker, it came with my PC;
It plainly marks four my revue mistakes I cannot sea.
I've run this poem threw it, I'm sure your please to no,
It's letter perfect in it's weigh, my checker tolled me sew!

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


--- NEW FILE 7.2.299 ---
To: vim-dev at vim.org
Subject: Patch 7.2.299
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.299
Problem:    Crash when comment middle is longer than start.
Solution:   Fix size computation. (Lech Lorens)
Files:	    src/misc1.c


*** ../vim-7.2.298/src/misc1.c	2009-11-11 17:30:05.000000000 +0100
--- src/misc1.c	2009-11-17 15:59:28.000000000 +0100
***************
*** 1121,1127 ****
  			    if (i != lead_repl_len)
  			    {
  				mch_memmove(p + lead_repl_len, p + i,
! 				       (size_t)(lead_len - i - (leader - p)));
  				lead_len += lead_repl_len - i;
  			    }
  			}
--- 1121,1127 ----
  			    if (i != lead_repl_len)
  			    {
  				mch_memmove(p + lead_repl_len, p + i,
! 				       (size_t)(lead_len - i - (p - leader)));
  				lead_len += lead_repl_len - i;
  			    }
  			}
*** ../vim-7.2.298/src/version.c	2009-11-17 14:57:19.000000000 +0100
--- src/version.c	2009-11-17 16:01:07.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     299,
  /**/

-- 
BLACK KNIGHT: The Black Knight always triumphs. Have at you!
   ARTHUR takes his last leg off.  The BLACK KNIGHT's body lands upright.
BLACK KNIGHT: All right, we'll call it a draw.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.300 ---
To: vim-dev at vim.org
Subject: Patch 7.2.300
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.300
Problem:    Vim doesn't close file descriptors when forking and executing
	    another command, e.g., ":shell".
Solution:   Use FD_CLOEXEC when available. (James Vega)
Files:	    src/auto/configure, src/config.h.in, src/configure.in,
	    src/ex_cmdds2.c, src/fileio.c, src/memfile.c, src/memline.c


*** ../vim-7.2.299/src/auto/configure	2009-11-17 12:08:48.000000000 +0100
--- src/auto/configure	2009-11-17 13:09:03.000000000 +0100
***************
*** 15174,15179 ****
--- 15174,15231 ----
  $as_echo "yes" >&6; }
  fi
  
+ { $as_echo "$as_me:$LINENO: checking for FD_CLOEXEC" >&5
+ $as_echo_n "checking for FD_CLOEXEC... " >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+ #if HAVE_FCNTL_H
+ # include <fcntl.h>
+ #endif
+ int
+ main ()
+ {
+ 	int flag = FD_CLOEXEC;
+   ;
+   return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_compile") 2>conftest.er1
+   ac_status=$?
+   grep -v '^ *+' conftest.er1 >conftest.err
+   rm -f conftest.er1
+   cat conftest.err >&5
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && {
+ 	 test -z "$ac_c_werror_flag" ||
+ 	 test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then
+   { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }; cat >>confdefs.h <<\_ACEOF
+ #define HAVE_FD_CLOEXEC 1
+ _ACEOF
+ 
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+ 
+ 	{ $as_echo "$as_me:$LINENO: result: not usable" >&5
+ $as_echo "not usable" >&6; }
+ fi
+ 
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ 
  { $as_echo "$as_me:$LINENO: checking for rename" >&5
  $as_echo_n "checking for rename... " >&6; }
  cat >conftest.$ac_ext <<_ACEOF
*** ../vim-7.2.299/src/config.h.in	2009-11-17 12:08:48.000000000 +0100
--- src/config.h.in	2009-11-17 13:01:36.000000000 +0100
***************
*** 388,390 ****
--- 388,393 ----
  
  /* Define if you want XSMP interaction as well as vanilla swapfile safety */
  #undef USE_XSMP_INTERACT
+ 
+ /* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */
+ #undef HAVE_FD_CLOEXEC
*** ../vim-7.2.299/src/configure.in	2009-11-17 12:08:48.000000000 +0100
--- src/configure.in	2009-11-17 13:01:36.000000000 +0100
***************
*** 2855,2860 ****
--- 2855,2870 ----
    AC_MSG_RESULT(yes)
  fi
  
+ dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
+ AC_MSG_CHECKING(for FD_CLOEXEC)
+ AC_TRY_COMPILE(
+ [#if HAVE_FCNTL_H
+ # include <fcntl.h>
+ #endif],
+ [	int flag = FD_CLOEXEC;],
+ 	AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
+ 	AC_MSG_RESULT(not usable))
+ 
  dnl rename needs to be checked separately to work on Nextstep with cc
  AC_MSG_CHECKING(for rename)
  AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
*** ../vim-7.2.299/src/fileio.c	2009-11-17 14:57:19.000000000 +0100
--- src/fileio.c	2009-11-17 13:22:06.000000000 +0100
***************
*** 2254,2259 ****
--- 2254,2267 ----
  
      if (!read_buffer && !read_stdin)
  	close(fd);				/* errors are ignored */
+ #ifdef HAVE_FD_CLOEXEC
+     else
+     {
+ 	int fdflags = fcntl(fd, F_GETFD);
+ 	if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
+ 	    fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
+     }
+ #endif
      vim_free(buffer);
  
  #ifdef HAVE_DUP
*** ../vim-7.2.299/src/memfile.c	2008-07-13 19:39:39.000000000 +0200
--- src/memfile.c	2009-11-17 13:22:15.000000000 +0100
***************
*** 1343,1348 ****
--- 1343,1353 ----
      }
      else
      {
+ #ifdef HAVE_FD_CLOEXEC
+ 	int fdflags = fcntl(mfp->mf_fd, F_GETFD);
+ 	if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
+ 	    fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
+ #endif
  #ifdef HAVE_SELINUX
  	mch_copy_sec(fname, mfp->mf_fname);
  #endif
*** ../vim-7.2.299/src/memline.c	2009-11-03 15:32:58.000000000 +0100
--- src/memline.c	2009-11-17 13:21:40.000000000 +0100
***************
*** 382,388 ****
      dp->db_index[0] = --dp->db_txt_start;	/* at end of block */
      dp->db_free -= 1 + INDEX_SIZE;
      dp->db_line_count = 1;
!     *((char_u *)dp + dp->db_txt_start) = NUL;	/* emtpy line */
  
      return OK;
  
--- 382,388 ----
      dp->db_index[0] = --dp->db_txt_start;	/* at end of block */
      dp->db_free -= 1 + INDEX_SIZE;
      dp->db_line_count = 1;
!     *((char_u *)dp + dp->db_txt_start) = NUL;	/* empty line */
  
      return OK;
  
***************
*** 490,495 ****
--- 490,502 ----
  	    EMSG(_("E301: Oops, lost the swap file!!!"));
  	    return;
  	}
+ #ifdef HAVE_FD_CLOEXEC
+ 	{
+ 	    int fdflags = fcntl(mfp->mf_fd, F_GETFD);
+ 	    if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0)
+ 		fcntl(mfp->mf_fd, F_SETFD, fdflags | FD_CLOEXEC);
+ 	}
+ #endif
      }
      if (!success)
  	EMSG(_("E302: Could not rename swap file"));
*** ../vim-7.2.299/src/version.c	2009-11-17 16:08:12.000000000 +0100
--- src/version.c	2009-11-17 17:09:43.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     300,
  /**/

-- 
            |

Ceci n'est pas une pipe.

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


--- NEW FILE 7.2.301 ---
To: vim-dev at vim.org
Subject: Patch 7.2.301
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

NOTE: some mail and patch programs may have a problem with the non-ASCII
characters in this patch.  You can fetch the patch from
ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.301  and/or fetch the updated
files from CVS.  http://www.vim.org/cvs.php


Patch 7.2.301
Problem:    Formatting is wrong when 'tw' is set to a small value.
Solution:   Fix it and add tests.  Also fix behavior of "1" in 'fo'. (Yukihiro
	    Nakadaira)
Files:	    src/edit.c, src/testdir/Makefile, src/testdir/test68.in,
	    src/testdir/test68.ok, src/testdir/test69.in,
	    src/testdir/test69.ok


*** ../vim-7.2.300/src/edit.c	2009-11-11 13:22:32.000000000 +0100
--- src/edit.c	2009-11-17 15:34:47.000000000 +0100
***************
*** 181,187 ****
  static void ins_ctrl_v __ARGS((void));
  static void undisplay_dollar __ARGS((void));
  static void insert_special __ARGS((int, int, int));
! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only));
  static void check_auto_format __ARGS((int));
  static void redo_literal __ARGS((int c));
  static void start_arrow __ARGS((pos_T *end_insert_pos));
--- 181,187 ----
  static void ins_ctrl_v __ARGS((void));
  static void undisplay_dollar __ARGS((void));
  static void insert_special __ARGS((int, int, int));
! static void internal_format __ARGS((int textwidth, int second_indent, int flags, int format_only, int c));
  static void check_auto_format __ARGS((int));
  static void redo_literal __ARGS((int c));
  static void start_arrow __ARGS((pos_T *end_insert_pos));
***************
*** 2164,2170 ****
      int		i, c;
      int		actual_len;		/* Take multi-byte characters */
      int		actual_compl_length;	/* into account. */
!     int		*wca;		        /* Wide character array. */
      int		has_lower = FALSE;
      int		was_letter = FALSE;
  
--- 2164,2170 ----
      int		i, c;
      int		actual_len;		/* Take multi-byte characters */
      int		actual_compl_length;	/* into account. */
!     int		*wca;			/* Wide character array. */
      int		has_lower = FALSE;
      int		was_letter = FALSE;
  
***************
*** 5558,5564 ****
  	}
  	if (do_internal)
  #endif
! 	    internal_format(textwidth, second_indent, flags, c == NUL);
      }
  
      if (c == NUL)	    /* only formatting was wanted */
--- 5558,5564 ----
  	}
  	if (do_internal)
  #endif
! 	    internal_format(textwidth, second_indent, flags, c == NUL, c);
      }
  
      if (c == NUL)	    /* only formatting was wanted */
***************
*** 5738,5748 ****
   * Format text at the current insert position.
   */
      static void
! internal_format(textwidth, second_indent, flags, format_only)
      int		textwidth;
      int		second_indent;
      int		flags;
      int		format_only;
  {
      int		cc;
      int		save_char = NUL;
--- 5738,5749 ----
   * Format text at the current insert position.
   */
      static void
! internal_format(textwidth, second_indent, flags, format_only, c)
      int		textwidth;
      int		second_indent;
      int		flags;
      int		format_only;
+     int		c; /* character to be inserted (can be NUL) */
  {
      int		cc;
      int		save_char = NUL;
***************
*** 5763,5769 ****
       * When 'ai' is off we don't want a space under the cursor to be
       * deleted.  Replace it with an 'x' temporarily.
       */
!     if (!curbuf->b_p_ai)
      {
  	cc = gchar_cursor();
  	if (vim_iswhite(cc))
--- 5764,5774 ----
       * When 'ai' is off we don't want a space under the cursor to be
       * deleted.  Replace it with an 'x' temporarily.
       */
!     if (!curbuf->b_p_ai
! #ifdef FEAT_VREPLACE
! 	    && !(State & VREPLACE_FLAG)
! #endif
! 	    )
      {
  	cc = gchar_cursor();
  	if (vim_iswhite(cc))
***************
*** 5789,5797 ****
  	char_u	*saved_text = NULL;
  #endif
  	colnr_T	col;
  
! 	virtcol = get_nolist_virtcol();
! 	if (virtcol < (colnr_T)textwidth)
  	    break;
  
  #ifdef FEAT_COMMENTS
--- 5794,5804 ----
  	char_u	*saved_text = NULL;
  #endif
  	colnr_T	col;
+ 	colnr_T	end_col;
  
! 	virtcol = get_nolist_virtcol()
! 		+ char2cells(c != NUL ? c : gchar_cursor());
! 	if (virtcol <= (colnr_T)textwidth)
  	    break;
  
  #ifdef FEAT_COMMENTS
***************
*** 5831,5842 ****
  	coladvance((colnr_T)textwidth);
  	wantcol = curwin->w_cursor.col;
  
! 	curwin->w_cursor.col = startcol - 1;
! #ifdef FEAT_MBYTE
! 	/* Correct cursor for multi-byte character. */
! 	if (has_mbyte)
! 	    mb_adjust_cursor();
! #endif
  	foundcol = 0;
  
  	/*
--- 5838,5844 ----
  	coladvance((colnr_T)textwidth);
  	wantcol = curwin->w_cursor.col;
  
! 	curwin->w_cursor.col = startcol;
  	foundcol = 0;
  
  	/*
***************
*** 5847,5857 ****
  		    || curwin->w_cursor.lnum != Insstart.lnum
  		    || curwin->w_cursor.col >= Insstart.col)
  	{
! 	    cc = gchar_cursor();
  	    if (WHITECHAR(cc))
  	    {
  		/* remember position of blank just before text */
! 		end_foundcol = curwin->w_cursor.col;
  
  		/* find start of sequence of blanks */
  		while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
--- 5849,5862 ----
  		    || curwin->w_cursor.lnum != Insstart.lnum
  		    || curwin->w_cursor.col >= Insstart.col)
  	{
! 	    if (curwin->w_cursor.col == startcol && c != NUL)
! 		cc = c;
! 	    else
! 		cc = gchar_cursor();
  	    if (WHITECHAR(cc))
  	    {
  		/* remember position of blank just before text */
! 		end_col = curwin->w_cursor.col;
  
  		/* find start of sequence of blanks */
  		while (curwin->w_cursor.col > 0 && WHITECHAR(cc))
***************
*** 5871,5877 ****
  		    /* do not break after one-letter words */
  		    if (curwin->w_cursor.col == 0)
  			break;	/* one-letter word at begin */
! 
  		    col = curwin->w_cursor.col;
  		    dec_cursor();
  		    cc = gchar_cursor();
--- 5876,5886 ----
  		    /* do not break after one-letter words */
  		    if (curwin->w_cursor.col == 0)
  			break;	/* one-letter word at begin */
! #ifdef FEAT_COMMENTS
! 		    /* do not break "#a b" when 'tw' is 2 */
! 		    if (curwin->w_cursor.col <= leader_len)
! 			break;
! #endif
  		    col = curwin->w_cursor.col;
  		    dec_cursor();
  		    cc = gchar_cursor();
***************
*** 5880,5905 ****
  			continue;	/* one-letter, continue */
  		    curwin->w_cursor.col = col;
  		}
! #ifdef FEAT_MBYTE
! 		if (has_mbyte)
! 		    foundcol = curwin->w_cursor.col
! 					 + (*mb_ptr2len)(ml_get_cursor());
! 		else
! #endif
! 		    foundcol = curwin->w_cursor.col + 1;
! 		if (curwin->w_cursor.col < (colnr_T)wantcol)
  		    break;
  	    }
  #ifdef FEAT_MBYTE
! 	    else if (cc >= 0x100 && fo_multibyte
! 			      && curwin->w_cursor.col <= (colnr_T)wantcol)
  	    {
  		/* Break after or before a multi-byte character. */
  		foundcol = curwin->w_cursor.col;
- 		if (curwin->w_cursor.col < (colnr_T)wantcol)
- 		    foundcol += (*mb_char2len)(cc);
  		end_foundcol = foundcol;
! 		break;
  	    }
  #endif
  	    if (curwin->w_cursor.col == 0)
--- 5889,5948 ----
  			continue;	/* one-letter, continue */
  		    curwin->w_cursor.col = col;
  		}
! 
! 		inc_cursor();
! 
! 		end_foundcol = end_col + 1;
! 		foundcol = curwin->w_cursor.col;
! 		if (curwin->w_cursor.col <= (colnr_T)wantcol)
  		    break;
  	    }
  #ifdef FEAT_MBYTE
! 	    else if (cc >= 0x100 && fo_multibyte)
  	    {
  		/* Break after or before a multi-byte character. */
+ 		if (curwin->w_cursor.col != startcol)
+ 		{
+ #ifdef FEAT_COMMENTS
+ 		    /* Don't break until after the comment leader */
+ 		    if (curwin->w_cursor.col < leader_len)
+ 			break;
+ #endif
+ 		    col = curwin->w_cursor.col;
+ 		    inc_cursor();
+ 		    /* Don't change end_foundcol if already set. */
+ 		    if (foundcol != curwin->w_cursor.col)
+ 		    {
+ 			foundcol = curwin->w_cursor.col;
+ 			end_foundcol = foundcol;
+ 			if (curwin->w_cursor.col <= (colnr_T)wantcol)
+ 			    break;
+ 		    }
+ 		    curwin->w_cursor.col = col;
+ 		}
+ 
+ 		if (curwin->w_cursor.col == 0)
+ 		    break;
+ 
+ 		col = curwin->w_cursor.col;
+ 
+ 		dec_cursor();
+ 		cc = gchar_cursor();
+ 
+ 		if (WHITECHAR(cc))
+ 		    continue;		/* break with space */
+ #ifdef FEAT_COMMENTS
+ 		/* Don't break until after the comment leader */
+ 		if (curwin->w_cursor.col < leader_len)
+ 		    break;
+ #endif
+ 
+ 		curwin->w_cursor.col = col;
+ 
  		foundcol = curwin->w_cursor.col;
  		end_foundcol = foundcol;
! 		if (curwin->w_cursor.col <= (colnr_T)wantcol)
! 		    break;
  	    }
  #endif
  	    if (curwin->w_cursor.col == 0)
***************
*** 5926,5939 ****
  	    orig_col = startcol;	/* Will start backspacing from here */
  	else
  #endif
! 	    replace_offset = startcol - end_foundcol - 1;
  
  	/*
  	 * adjust startcol for spaces that will be deleted and
  	 * characters that will remain on top line
  	 */
  	curwin->w_cursor.col = foundcol;
! 	while (cc = gchar_cursor(), WHITECHAR(cc))
  	    inc_cursor();
  	startcol -= curwin->w_cursor.col;
  	if (startcol < 0)
--- 5969,5983 ----
  	    orig_col = startcol;	/* Will start backspacing from here */
  	else
  #endif
! 	    replace_offset = startcol - end_foundcol;
  
  	/*
  	 * adjust startcol for spaces that will be deleted and
  	 * characters that will remain on top line
  	 */
  	curwin->w_cursor.col = foundcol;
! 	while ((cc = gchar_cursor(), WHITECHAR(cc))
! 		    && (!fo_white_par || curwin->w_cursor.col < startcol))
  	    inc_cursor();
  	startcol -= curwin->w_cursor.col;
  	if (startcol < 0)
***************
*** 8509,8515 ****
  	if (mode == BACKSPACE_LINE
  		&& (curbuf->b_p_ai
  #ifdef FEAT_CINDENT
!                     || cindent_on()
  #endif
  		   )
  #ifdef FEAT_RIGHTLEFT
--- 8553,8559 ----
  	if (mode == BACKSPACE_LINE
  		&& (curbuf->b_p_ai
  #ifdef FEAT_CINDENT
! 		    || cindent_on()
  #endif
  		   )
  #ifdef FEAT_RIGHTLEFT
*** ../vim-7.2.300/src/testdir/Makefile	2009-11-17 17:36:13.000000000 +0100
--- src/testdir/Makefile	2009-11-17 15:11:26.000000000 +0100
***************
*** 22,28 ****
  		test48.out test49.out test51.out test52.out test53.out \
  		test54.out test55.out test56.out test57.out test58.out \
  		test59.out test60.out test61.out test62.out test63.out \
! 		test64.out test65.out test66.out test67.out
  
  SCRIPTS_GUI = test16.out
  
--- 22,29 ----
  		test48.out test49.out test51.out test52.out test53.out \
  		test54.out test55.out test56.out test57.out test58.out \
  		test59.out test60.out test61.out test62.out test63.out \
! 		test64.out test65.out test66.out test67.out test68.out \
! 		test69.out
  
  SCRIPTS_GUI = test16.out
  
*** ../vim-7.2.300/src/testdir/test68.in	2009-11-17 17:39:36.000000000 +0100
--- src/testdir/test68.in	2009-11-17 15:39:09.000000000 +0100
***************
*** 0 ****
--- 1,56 ----
+ Test for text formatting.
+ 
+ Results of test68:
+ 
+ STARTTEST
+ :so small.vim
+ /^{/+1
+ :set noai tw=2 fo=t
+ gRa b
+ ENDTEST
+ 
+ {
+     
+ 
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set ai tw=2 fo=tw
+ gqgqjjllab
+ ENDTEST
+ 
+ {
+ a  b  
+ 
+ a    
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=3 fo=t
+ gqgqo
+ a 
+ ENDTEST
+ 
+ {
+ a 
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=2 fo=tcq1 comments=:#
+ gqgqjgqgqo
+ a b
+ #a b
+ ENDTEST
+ 
+ {
+ a b
+ #a b
+ }
+ 
+ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/^Results/,$wq! test.out
+ ENDTEST
*** ../vim-7.2.300/src/testdir/test68.ok	2009-11-17 17:39:36.000000000 +0100
--- src/testdir/test68.ok	2009-11-17 15:11:26.000000000 +0100
***************
*** 0 ****
--- 1,35 ----
+ Results of test68:
+ 
+ 
+ {
+ a
+ b
+ }
+ 
+ 
+ {
+ a  
+ b  
+ 
+ a  
+ b
+ }
+ 
+ 
+ {
+ a
+ 
+ 
+ a
+ 
+ }
+ 
+ 
+ {
+ a b
+ #a b
+ 
+ a b
+ #a b
+ }
+ 
*** ../vim-7.2.300/src/testdir/test69.in	2009-11-17 17:39:36.000000000 +0100
--- src/testdir/test69.in	2009-11-17 15:11:26.000000000 +0100
***************
*** 0 ****
--- 1,139 ----
+ Test for multi-byte text formatting.
+ 
+ STARTTEST
+ :so mbyte.vim
+ :set encoding=utf-8
+ ENDTEST
+ 
+ Results of test69:
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=2 fo=t
+ gqgqjgqgqo
+ XYZ
+ abc XYZ
+ ENDTEST
+ 
+ {
+ XYZ
+ abc XYZ
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=1 fo=tm
+ gqgqjgqgqjgqgqjgqgqjgqgqo
+ X
+ Xa
+ X a
+ XY
+ X Y
+ ENDTEST
+ 
+ {
+ X
+ Xa
+ X a
+ XY
+ X Y
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=2 fo=tm
+ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
+ X
+ Xa
+ X a
+ XY
+ X Y
+ aX
+ abX
+ abcX
+ abX c
+ abXY
+ ENDTEST
+ 
+ {
+ X
+ Xa
+ X a
+ XY
+ X Y
+ aX
+ abX
+ abcX
+ abX c
+ abXY
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set ai tw=2 fo=tm
+ gqgqjgqgqo
+ X
+ Xa
+ ENDTEST
+ 
+ {
+   X
+   Xa
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set noai tw=2 fo=tm
+ gqgqjgqgqo
+   X
+   Xa
+ ENDTEST
+ 
+ {
+   X
+   Xa
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=2 fo=cqm comments=n:X
+ gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
+ X
+ Xa
+ XaY
+ XY
+ XYZ
+ X Y
+ X YZ
+ XX
+ XXa
+ XXY
+ ENDTEST
+ 
+ {
+ X
+ Xa
+ XaY
+ XY
+ XYZ
+ X Y
+ X YZ
+ XX
+ XXa
+ XXY
+ }
+ 
+ STARTTEST
+ /^{/+1
+ :set tw=2 fo=tm
+ RXa
+ ENDTEST
+ 
+ {
+ 
+ }
+ 
+ STARTTEST
+ :g/^STARTTEST/.,/^ENDTEST/d
+ :1;/^Results/,$wq! test.out
+ ENDTEST
*** ../vim-7.2.300/src/testdir/test69.ok	2009-11-17 17:39:36.000000000 +0100
--- src/testdir/test69.ok	2009-11-17 15:11:26.000000000 +0100
***************
*** 0 ****
--- 1,142 ----
+ Results of test69:
+ 
+ 
+ {
+ XYZ
+ abc
+ XYZ
+ 
+ XYZ
+ abc
+ XYZ
+ }
+ 
+ 
+ {
+ X
+ X
+ a
+ X
+ a
+ X
+ ï¼¹
+ X
+ ï¼¹
+ 
+ X
+ X
+ a
+ X
+ a
+ X
+ ï¼¹
+ X
+ ï¼¹
+ }
+ 
+ 
+ {
+ X
+ X
+ a
+ X
+ a
+ X
+ ï¼¹
+ X
+ ï¼¹
+ a
+ X
+ ab
+ X
+ abc
+ X
+ ab
+ X
+ c
+ ab
+ X
+ ï¼¹
+ 
+ X
+ X
+ a
+ X
+ a
+ X
+ ï¼¹
+ X
+ ï¼¹
+ a
+ X
+ ab
+ X
+ abc
+ X
+ ab
+ X
+ c
+ ab
+ X
+ ï¼¹
+ }
+ 
+ 
+ {
+   X
+   X
+   a
+ 
+   X
+   X
+   a
+ }
+ 
+ 
+ {
+   X
+   X
+ a
+ 
+   X
+   X
+ a
+ }
+ 
+ 
+ {
+ X
+ Xa
+ Xa
+ XY
+ XY
+ XY
+ XZ
+ X Y
+ X Y
+ X Z
+ XX
+ XXa
+ XXY
+ 
+ X
+ Xa
+ Xa
+ XY
+ XY
+ XY
+ XZ
+ X Y
+ X Y
+ X Z
+ XX
+ XXa
+ XXY
+ }
+ 
+ 
+ {
+ X
+ a
+ }
+ 
*** ../vim-7.2.300/src/version.c	2009-11-17 17:37:34.000000000 +0100
--- src/version.c	2009-11-17 17:26:35.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     301,
  /**/


--- NEW FILE 7.2.302 ---
To: vim-dev at vim.org
Subject: Patch 7.2.302 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.302 (extra part of 7.2.301)
Problem:    Formatting wrong with small 'tw' value.
Solution:   Add build rules for tests.
Files:	    src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
	    src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
	    src/testdir/Make_vms.mms


*** ../vim-7.2.301/src/testdir/Make_amiga.mak	2009-09-18 14:58:26.000000000 +0200
--- src/testdir/Make_amiga.mak	2009-11-17 15:29:05.000000000 +0100
***************
*** 26,32 ****
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out test67.out
  
  .SUFFIXES: .in .out
  
--- 26,32 ----
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out test67.out test68.out test69.out
  
  .SUFFIXES: .in .out
  
***************
*** 113,115 ****
--- 113,117 ----
  test65.out: test65.in
  test66.out: test66.in
  test67.out: test67.in
+ test68.out: test68.in
+ test69.out: test69.in
*** ../vim-7.2.301/src/testdir/Make_dos.mak	2009-09-18 14:58:26.000000000 +0200
--- src/testdir/Make_dos.mak	2009-11-17 15:29:54.000000000 +0100
***************
*** 26,32 ****
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out test67.out
  
  SCRIPTS32 =	test50.out
  
--- 26,33 ----
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out test67.out \
! 		test68.out test69.out
  
  SCRIPTS32 =	test50.out
  
*** ../vim-7.2.301/src/testdir/Make_ming.mak	2009-09-18 14:58:26.000000000 +0200
--- src/testdir/Make_ming.mak	2009-11-17 15:30:07.000000000 +0100
***************
*** 45,51 ****
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out test67.out
  
  SCRIPTS32 =	test50.out
  
--- 45,52 ----
  		test15.out test17.out test18.out test21.out test26.out \
  		test30.out test31.out test32.out test33.out test34.out \
  		test37.out test38.out test39.out test40.out test41.out \
! 		test42.out test52.out test65.out test66.out test67.out \
! 		test68.out test69.out
  
  SCRIPTS32 =	test50.out
  
*** ../vim-7.2.301/src/testdir/Make_os2.mak	2009-09-18 14:58:26.000000000 +0200
--- src/testdir/Make_os2.mak	2009-11-17 15:11:26.000000000 +0100
***************
*** 26,32 ****
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out test67.out
  
  .SUFFIXES: .in .out
  
--- 26,32 ----
  		test48.out test51.out test53.out test54.out test55.out \
  		test56.out test57.out test58.out test59.out test60.out \
  		test61.out test62.out test63.out test64.out test65.out \
! 		test66.out test67.out test68.out test69.out
  
  .SUFFIXES: .in .out
  
*** ../vim-7.2.301/src/testdir/Make_vms.mms	2009-09-18 14:58:26.000000000 +0200
--- src/testdir/Make_vms.mms	2009-11-17 15:11:26.000000000 +0100
***************
*** 69,75 ****
  	 test48.out test51.out test53.out test54.out test55.out \
  	 test56.out test57.out test60.out \
  	 test61.out test62.out test63.out test64.out test65.out \
! 	 test66.out test67.out
  
  .IFDEF WANT_GUI
  SCRIPT_GUI = test16.out
--- 69,75 ----
  	 test48.out test51.out test53.out test54.out test55.out \
  	 test56.out test57.out test60.out \
  	 test61.out test62.out test63.out test64.out test65.out \
! 	 test66.out test67.out test68.out test69.out
  
  .IFDEF WANT_GUI
  SCRIPT_GUI = test16.out
*** ../vim-7.2.301/src/version.c	2009-11-17 17:40:34.000000000 +0100
--- src/version.c	2009-11-17 17:43:26.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     302,
  /**/

-- 
Hacker: Someone skilled in computer programming (good guy).
Cracker: A hacker that uses his skills to crack software (bad guy).

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


--- NEW FILE 7.2.303 ---
To: vim-dev at vim.org
Subject: Patch 7.2.303
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.303 (after 7.2.294)
Problem:    Can't build on MS-Windows.
Solution:   Add #ifdef around vim_settempdir(). (James Vega)
Files:	    src/fileio.c


*** ../vim-7.2.302/src/fileio.c	2009-11-17 17:13:03.000000000 +0100
--- src/fileio.c	2009-11-18 20:06:55.000000000 +0100
***************
*** 146,152 ****
--- 146,154 ----
  # endif
  #endif
  static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+ #ifdef TEMPDIRNAMES
  static void vim_settempdir __ARGS((char_u *tempdir));
+ #endif
  #ifdef FEAT_AUTOCMD
  static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
  #endif
***************
*** 6995,7000 ****
--- 6997,7003 ----
  }
  #endif
  
+ #ifdef TEMPDIRNAMES
  /*
   * Directory "tempdir" was created.  Expand this name to a full path and put
   * it in "vim_tempdir".  This avoids that using ":cd" would confuse us.
***************
*** 7021,7026 ****
--- 7024,7030 ----
  	vim_free(buf);
      }
  }
+ #endif
  
  /*
   * vim_tempname(): Return a unique name that can be used for a temp file.
*** ../vim-7.2.302/src/version.c	2009-11-17 17:57:10.000000000 +0100
--- src/version.c	2009-11-18 20:07:58.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     303,
  /**/

-- 
BEDEVERE:        Why do you think she is a witch?
SECOND VILLAGER: She turned me into a newt.
BEDEVERE:        A newt?
SECOND VILLAGER: (After looking at himself for some time) I got better.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

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


--- NEW FILE 7.2.304 ---
To: vim-dev at vim.org
Subject: Patch 7.2.304
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.304
Problem:    Compiler warning for bad pointer cast.
Solution:   Use another variable for int pointer.
Files:	    src/ops.c


*** ../vim-7.2.303/src/ops.c	2009-11-17 12:43:19.000000000 +0100
--- src/ops.c	2009-11-18 15:40:26.000000000 +0100
***************
*** 5597,5603 ****
  	    vc.vc_type = CONV_NONE;
  	    if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
  	    {
! 		conv_str = string_convert(&vc, str, (int*)&len);
  		if (conv_str != NULL)
  		{
  		    vim_free(str);
--- 5597,5606 ----
  	    vc.vc_type = CONV_NONE;
  	    if (convert_setup(&vc, p_enc, (char_u *)"latin1") == OK)
  	    {
! 	        int intlen = len;
! 
! 		conv_str = string_convert(&vc, str, &intlen);
! 		len = intlen;
  		if (conv_str != NULL)
  		{
  		    vim_free(str);
*** ../vim-7.2.303/src/version.c	2009-11-18 20:12:15.000000000 +0100
--- src/version.c	2009-11-25 12:37:36.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     304,
  /**/

-- 
I recommend ordering large cargo containers of paper towels to make up
whatever budget underruns you have.  Paper products are always useful and they
have the advantage of being completely flushable if you need to make room in
the storage area later.
				(Scott Adams - The Dilbert principle)

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


--- NEW FILE 7.2.305 ---
To: vim-dev at vim.org
Subject: Patch 7.2.305
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.305
Problem:    Recursively redrawing causes a memory leak. (Dominique Pelle)
Solution:   Disallow recursive screen updating.
Files:	    src/screen.c


*** ../vim-7.2.304/src/screen.c	2009-11-11 17:07:25.000000000 +0100
--- src/screen.c	2009-11-17 16:30:53.000000000 +0100
***************
*** 323,328 ****
--- 323,329 ----
      int		did_one;
  #endif
  
+     /* Don't do anything if the screen structures are (not yet) valid. */
      if (!screen_valid(TRUE))
  	return;
  
***************
*** 342,348 ****
      if (curwin->w_lines_valid == 0 && type < NOT_VALID)
  	type = NOT_VALID;
  
!     if (!redrawing())
      {
  	redraw_later(type);		/* remember type for next time */
  	must_redraw = type;
--- 343,351 ----
      if (curwin->w_lines_valid == 0 && type < NOT_VALID)
  	type = NOT_VALID;
  
!     /* Postpone the redrawing when it's not needed and when being called
!      * recursively. */
!     if (!redrawing() || updating_screen)
      {
  	redraw_later(type);		/* remember type for next time */
  	must_redraw = type;
***************
*** 582,587 ****
--- 585,591 ----
  
  /*
   * Prepare for updating one or more windows.
+  * Caller must check for "updating_screen" already set to avoid recursiveness.
   */
      static void
  update_prepare()
***************
*** 663,669 ****
  	    doit = TRUE;
      }
  
!     if (!doit)
  	return;
  
      /* update all windows that need updating */
--- 667,675 ----
  	    doit = TRUE;
      }
  
!     /* Return when there is nothing to do or screen updating already
!      * happening. */
!     if (!doit || updating_screen)
  	return;
  
      /* update all windows that need updating */
***************
*** 696,701 ****
--- 702,711 ----
  updateWindow(wp)
      win_T	*wp;
  {
+     /* return if already busy updating */
+     if (updating_screen)
+ 	return;
+ 
      update_prepare();
  
  #ifdef FEAT_CLIPBOARD
*** ../vim-7.2.304/src/version.c	2009-11-25 12:38:49.000000000 +0100
--- src/version.c	2009-11-25 13:01:48.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     305,
  /**/

-- 
If the Universe is constantly expanding, why can't I ever find a parking space?

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


--- NEW FILE 7.2.306 ---
To: vim-dev at vim.org
Subject: Patch 7.2.306
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.306
Problem:    shellescape("10%%", 1) only escapes first %. (Christian Brabandt)
Solution:   Don't copy the character after the escaped one.
Files:	    src/misc2.c


*** ../vim-7.2.305/src/misc2.c	2009-11-11 16:56:13.000000000 +0100
--- src/misc2.c	2009-11-25 17:11:49.000000000 +0100
***************
*** 1390,1395 ****
--- 1390,1396 ----
  		*d++ = '\\';		/* insert backslash */
  		while (--l >= 0)	/* copy the var */
  		    *d++ = *p++;
+ 		continue;
  	    }
  
  	    MB_COPY_CHAR(p, d);
*** ../vim-7.2.305/src/version.c	2009-11-25 13:03:29.000000000 +0100
--- src/version.c	2009-11-25 17:13:54.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     306,
  /**/

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

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


--- NEW FILE 7.2.307 ---
To: vim-dev at vim.org
Subject: Patch 7.2.307
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.307
Problem:    Crash with a very long syntax match statement. (Guy Gur Ari)
Solution:   When the offset does not fit in the two bytes available give an
            error instead of continuing with invalid pointers.
Files:      src/regexp.c


*** ../vim-7.2.306/src/regexp.c	2009-05-15 21:31:11.000000000 +0200
--- src/regexp.c	2009-11-25 18:13:03.000000000 +0100
***************
*** 583,588 ****
--- 583,589 ----
  #endif
  static char_u	*regcode;	/* Code-emit pointer, or JUST_CALC_SIZE */
  static long	regsize;	/* Code size. */
+ static int	reg_toolong;	/* TRUE when offset out of range */
  static char_u	had_endbrace[NSUBEXP];	/* flags, TRUE if end of () found */
  static unsigned	regflags;	/* RF_ flags for prog */
  static long	brace_min[10];	/* Minimums for complex brace repeats */
***************
*** 1028,1036 ****
      regcomp_start(expr, re_flags);
      regcode = r->program;
      regc(REGMAGIC);
!     if (reg(REG_NOPAREN, &flags) == NULL)
      {
  	vim_free(r);
  	return NULL;
      }
  
--- 1029,1039 ----
      regcomp_start(expr, re_flags);
      regcode = r->program;
      regc(REGMAGIC);
!     if (reg(REG_NOPAREN, &flags) == NULL || reg_toolong)
      {
  	vim_free(r);
+ 	if (reg_toolong)
+ 	    EMSG_RET_NULL(_("E339: Pattern too long"));
  	return NULL;
      }
  
***************
*** 1141,1146 ****
--- 1144,1150 ----
      re_has_z = 0;
  #endif
      regsize = 0L;
+     reg_toolong = FALSE;
      regflags = 0;
  #if defined(FEAT_SYN_HL) || defined(PROTO)
      had_eol = FALSE;
***************
*** 1228,1234 ****
      {
  	skipchr();
  	br = regbranch(&flags);
! 	if (br == NULL)
  	    return NULL;
  	regtail(ret, br);	/* BRANCH -> BRANCH. */
  	if (!(flags & HASWIDTH))
--- 1232,1238 ----
      {
  	skipchr();
  	br = regbranch(&flags);
! 	if (br == NULL || reg_toolong)
  	    return NULL;
  	regtail(ret, br);	/* BRANCH -> BRANCH. */
  	if (!(flags & HASWIDTH))
***************
*** 1313,1318 ****
--- 1317,1324 ----
  	    break;
  	skipchr();
  	regtail(latest, regnode(END)); /* operand ends */
+ 	if (reg_toolong)
+ 	    break;
  	reginsert(MATCH, latest);
  	chain = latest;
      }
***************
*** 1382,1388 ****
  			    break;
  	    default:
  			    latest = regpiece(&flags);
! 			    if (latest == NULL)
  				return NULL;
  			    *flagp |= flags & (HASWIDTH | HASNL | HASLOOKBH);
  			    if (chain == NULL)	/* First piece. */
--- 1388,1394 ----
  			    break;
  	    default:
  			    latest = regpiece(&flags);
! 			    if (latest == NULL || reg_toolong)
  				return NULL;
  			    *flagp |= flags & (HASWIDTH | HASNL | HASLOOKBH);
  			    if (chain == NULL)	/* First piece. */
***************
*** 2540,2547 ****
  	offset = (int)(scan - val);
      else
  	offset = (int)(val - scan);
!     *(scan + 1) = (char_u) (((unsigned)offset >> 8) & 0377);
!     *(scan + 2) = (char_u) (offset & 0377);
  }
  
  /*
--- 2546,2561 ----
  	offset = (int)(scan - val);
      else
  	offset = (int)(val - scan);
!     /* When the offset uses more than 16 bits it can no longer fit in the two
!      * bytes avaliable.  Use a global flag to avoid having to check return
!      * values in too many places. */
!     if (offset > 0xffff)
! 	reg_toolong = TRUE;
!     else
!     {
! 	*(scan + 1) = (char_u) (((unsigned)offset >> 8) & 0377);
! 	*(scan + 2) = (char_u) (offset & 0377);
!     }
  }
  
  /*
***************
*** 5764,5769 ****
--- 5778,5785 ----
  
  /*
   * regnext - dig the "next" pointer out of a node
+  * Returns NULL when calculating size, when there is no next item and when
+  * there is an error.
   */
      static char_u *
  regnext(p)
***************
*** 5771,5777 ****
  {
      int	    offset;
  
!     if (p == JUST_CALC_SIZE)
  	return NULL;
  
      offset = NEXT(p);
--- 5787,5793 ----
  {
      int	    offset;
  
!     if (p == JUST_CALC_SIZE || reg_toolong)
  	return NULL;
  
      offset = NEXT(p);
*** ../vim-7.2.306/src/version.c	2009-11-25 17:15:16.000000000 +0100
--- src/version.c	2009-11-25 18:14:32.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     307,
  /**/

-- 
The fastest way to get an engineer to solve a problem is to declare that the
problem is unsolvable.  No engineer can walk away from an unsolvable problem
until it's solved.
				(Scott Adams - The Dilbert principle)

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


--- NEW FILE 7.2.308 ---
To: vim-dev at vim.org
Subject: Patch 7.2.308
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.308
Problem:    When using a regexp in the "\=" expression of a substitute
	    command, submatch() returns empty strings for further lines.
	    (Clockwork Jam)
Solution:   Save and restore the line number and line count when calling
	    reg_getline().
Files:	    src/regexp.c


*** ../vim-7.2.307/src/regexp.c	2009-11-25 18:21:48.000000000 +0100
--- src/regexp.c	2009-11-25 19:45:07.000000000 +0100
***************
*** 6828,6833 ****
--- 6828,6835 ----
   * that contains a call to substitute() and submatch(). */
  static regmatch_T	*submatch_match;
  static regmmatch_T	*submatch_mmatch;
+ static linenr_T		submatch_firstlnum;
+ static linenr_T		submatch_maxline;
  #endif
  
  #if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) || defined(PROTO)
***************
*** 6941,6947 ****
  	}
  	else
  	{
- 	    linenr_T	save_reg_maxline;
  	    win_T	*save_reg_win;
  	    int		save_ireg_ic;
  
--- 6943,6948 ----
***************
*** 6953,6959 ****
  	     * vim_regexec_multi() can't be called recursively. */
  	    submatch_match = reg_match;
  	    submatch_mmatch = reg_mmatch;
! 	    save_reg_maxline = reg_maxline;
  	    save_reg_win = reg_win;
  	    save_ireg_ic = ireg_ic;
  	    can_f_submatch = TRUE;
--- 6954,6961 ----
  	     * vim_regexec_multi() can't be called recursively. */
  	    submatch_match = reg_match;
  	    submatch_mmatch = reg_mmatch;
! 	    submatch_firstlnum = reg_firstlnum;
! 	    submatch_maxline = reg_maxline;
  	    save_reg_win = reg_win;
  	    save_ireg_ic = ireg_ic;
  	    can_f_submatch = TRUE;
***************
*** 6976,6982 ****
  
  	    reg_match = submatch_match;
  	    reg_mmatch = submatch_mmatch;
! 	    reg_maxline = save_reg_maxline;
  	    reg_win = save_reg_win;
  	    ireg_ic = save_ireg_ic;
  	    can_f_submatch = FALSE;
--- 6978,6985 ----
  
  	    reg_match = submatch_match;
  	    reg_mmatch = submatch_mmatch;
! 	    reg_firstlnum = submatch_firstlnum;
! 	    reg_maxline = submatch_maxline;
  	    reg_win = save_reg_win;
  	    ireg_ic = save_ireg_ic;
  	    can_f_submatch = FALSE;
***************
*** 7212,7217 ****
--- 7215,7243 ----
  
  #ifdef FEAT_EVAL
  /*
+  * Call reg_getline() with the line numbers from the submatch.  If a
+  * substitute() was used the reg_maxline and other values have been
+  * overwritten.
+  */
+     static char_u *
+ reg_getline_submatch(lnum)
+     linenr_T	lnum;
+ {
+     char_u *s;
+     linenr_T save_first = reg_firstlnum;
+     linenr_T save_max = reg_maxline;
+ 
+     reg_firstlnum = submatch_firstlnum;
+     reg_maxline = submatch_maxline;
+ 
+     s = reg_getline(lnum);
+ 
+     reg_firstlnum = save_first;
+     reg_maxline = save_max;
+     return s;
+ }
+ 
+ /*
   * Used for the submatch() function: get the string from the n'th submatch in
   * allocated memory.
   * Returns NULL when not in a ":s" command and for a non-existing submatch.
***************
*** 7241,7247 ****
  	    if (lnum < 0 || submatch_mmatch->endpos[no].lnum < 0)
  		return NULL;
  
! 	    s = reg_getline(lnum) + submatch_mmatch->startpos[no].col;
  	    if (s == NULL)  /* anti-crash check, cannot happen? */
  		break;
  	    if (submatch_mmatch->endpos[no].lnum == lnum)
--- 7267,7273 ----
  	    if (lnum < 0 || submatch_mmatch->endpos[no].lnum < 0)
  		return NULL;
  
! 	    s = reg_getline_submatch(lnum) + submatch_mmatch->startpos[no].col;
  	    if (s == NULL)  /* anti-crash check, cannot happen? */
  		break;
  	    if (submatch_mmatch->endpos[no].lnum == lnum)
***************
*** 7267,7273 ****
  		++lnum;
  		while (lnum < submatch_mmatch->endpos[no].lnum)
  		{
! 		    s = reg_getline(lnum++);
  		    if (round == 2)
  			STRCPY(retval + len, s);
  		    len += (int)STRLEN(s);
--- 7293,7299 ----
  		++lnum;
  		while (lnum < submatch_mmatch->endpos[no].lnum)
  		{
! 		    s = reg_getline_submatch(lnum++);
  		    if (round == 2)
  			STRCPY(retval + len, s);
  		    len += (int)STRLEN(s);
***************
*** 7276,7282 ****
  		    ++len;
  		}
  		if (round == 2)
! 		    STRNCPY(retval + len, reg_getline(lnum),
  					     submatch_mmatch->endpos[no].col);
  		len += submatch_mmatch->endpos[no].col;
  		if (round == 2)
--- 7302,7308 ----
  		    ++len;
  		}
  		if (round == 2)
! 		    STRNCPY(retval + len, reg_getline_submatch(lnum),
  					     submatch_mmatch->endpos[no].col);
  		len += submatch_mmatch->endpos[no].col;
  		if (round == 2)
*** ../vim-7.2.307/src/version.c	2009-11-25 18:21:48.000000000 +0100
--- src/version.c	2009-11-25 19:50:16.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     308,
  /**/

-- 
Engineers are always delighted to share wisdom, even in areas in which they
have no experience whatsoever.  Their logic provides them with inherent
insight into any field of expertise.  This can be a problem when dealing with
the illogical people who believe that knowledge can only be derived through
experience.
				(Scott Adams - The Dilbert principle)

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


--- NEW FILE 7.2.309 ---
To: vim-dev at vim.org
Subject: Patch 7.2.309
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.309 (after 7.2.308)
Problem:    Warning for missing function prototype. (Patrick Texier)
Solution:   Add the prototype.
Files:	    src/regexp.c


*** ../vim-7.2.308/src/regexp.c	2009-11-25 19:51:56.000000000 +0100
--- src/regexp.c	2009-11-26 20:39:18.000000000 +0100
***************
*** 7214,7219 ****
--- 7214,7221 ----
  }
  
  #ifdef FEAT_EVAL
+ static char_u *reg_getline_submatch __ARGS((linenr_T lnum));
+ 
  /*
   * Call reg_getline() with the line numbers from the submatch.  If a
   * substitute() was used the reg_maxline and other values have been
*** ../vim-7.2.308/src/version.c	2009-11-25 19:51:56.000000000 +0100
--- src/version.c	2009-11-26 20:40:11.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     309,
  /**/

-- 
Female engineers become irresistible at the age of consent and remain that
way until about thirty minutes after their clinical death.  Longer if it's a
warm day.
				(Scott Adams - The Dilbert principle)

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


--- NEW FILE 7.2.310 ---
To: vim-dev at vim.org
Subject: Patch 7.2.310
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.310
Problem:    When a filetype plugin in ~/.vim/ftdetect uses ":setfiletype" and
	    the file starts with a "# comment" it gets "conf" filetype.
Solution:   Check for "conf" filetype after using ftdetect plugins.
Files:	    runtime/filetype.vim


*** ../vim-7.2.309/runtime/filetype.vim	2008-08-06 18:56:36.000000000 +0200
--- runtime/filetype.vim	2009-12-02 12:08:42.000000000 +0100
***************
*** 2400,2405 ****
--- 2435,2446 ----
  au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
  
  
+ 
+ " Use the filetype detect plugins.  They may overrule any of the previously
+ " detected filetypes.
+ runtime! ftdetect/*.vim
+ 
+ 
  " Generic configuration file (check this last, it's just guessing!)
  au BufNewFile,BufRead,StdinReadPost *
  	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
***************
*** 2408,2417 ****
  	\   setf conf |
  	\ endif
  
- " Use the plugin-filetype checks last, they may overrule any of the previously
- " detected filetypes.
- runtime! ftdetect/*.vim
- 
  augroup END
  
  
--- 2449,2454 ----
*** ../vim-7.2.309/src/version.c	2009-11-26 20:41:19.000000000 +0100
--- src/version.c	2009-12-02 12:05:27.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     310,
  /**/

-- 
A)bort, R)etry, P)lease don't bother 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.2.311 ---
To: vim-dev at vim.org
Subject: Patch 7.2.311
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.311
Problem:    Can't compile with FreeMiNT.
Solution:   Change #ifdef for limits.h. (Alan Hourihane)
Files:	    src/fileio.c


*** ../vim-7.2.310/src/fileio.c	2009-11-18 20:12:15.000000000 +0100
--- src/fileio.c	2009-12-02 13:30:07.000000000 +0100
***************
*** 21,27 ****
  
  #include "vim.h"
  
! #ifdef __TANDEM
  # include <limits.h>		/* for SSIZE_MAX */
  #endif
  
--- 21,27 ----
  
  #include "vim.h"
  
! #if defined(__TANDEM) || defined(__MINT__)
  # include <limits.h>		/* for SSIZE_MAX */
  #endif
  
*** ../vim-7.2.310/src/version.c	2009-12-02 12:08:57.000000000 +0100
--- src/version.c	2009-12-02 13:31:46.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     311,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
3. Your bookmark takes 15 minutes to scroll from top to bottom.

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


--- NEW FILE 7.2.312 ---
To: vim-dev at vim.org
Subject: Patch 7.2.312
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.312
Problem:    iconv() returns an invalid character sequence when conversion
	    fails.  It should return an empty string. (Yongwei Wu)
Solution:   Be more strict about invalid characters in the input.
Files:	    src/mbyte.c


*** ../vim-7.2.311/src/mbyte.c	2009-06-16 15:23:07.000000000 +0200
--- src/mbyte.c	2009-11-25 16:10:44.000000000 +0100
***************
*** 133,154 ****
  static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
  static int dbcs_ptr2char __ARGS((char_u *p));
  
! /* Lookup table to quickly get the length in bytes of a UTF-8 character from
!  * the first byte of a UTF-8 string.  Bytes which are illegal when used as the
!  * first byte have a one, because these will be used separately. */
  static char utf8len_tab[256] =
  {
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
!     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/
!     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/
      2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
      3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
  };
  
  /*
   * XIM often causes trouble.  Define XIM_DEBUG to get a log of XIM callbacks
   * in the "xim.log" file.
   */
--- 133,172 ----
  static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
  static int dbcs_ptr2char __ARGS((char_u *p));
  
! /*
!  * Lookup table to quickly get the length in bytes of a UTF-8 character from
!  * the first byte of a UTF-8 string.
!  * Bytes which are illegal when used as the first byte have a 1.
!  * The NUL byte has length 1.
!  */
  static char utf8len_tab[256] =
  {
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
!     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
!     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
      2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
      3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
  };
  
  /*
+  * Like utf8len_tab above, but using a zero for illegal lead bytes.
+  */
+ static char utf8len_tab_zero[256] =
+ {
+     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+     2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+     3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0,
+ };
+ 
+ /*
   * XIM often causes trouble.  Define XIM_DEBUG to get a log of XIM callbacks
   * in the "xim.log" file.
   */
***************
*** 1352,1358 ****
      if (size > 0 && *p >= 0x80)
      {
  	if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
! 	    return 1;
  	c = utf_ptr2char(p);
  	/* An illegal byte is displayed as <xx>. */
  	if (utf_ptr2len(p) == 1 || c == NUL)
--- 1370,1376 ----
      if (size > 0 && *p >= 0x80)
      {
  	if (utf_ptr2len_len(p, size) < utf8len_tab[*p])
! 	    return 1;  /* truncated */
  	c = utf_ptr2char(p);
  	/* An illegal byte is displayed as <xx>. */
  	if (utf_ptr2len(p) == 1 || c == NUL)
***************
*** 1473,1479 ****
      if (p[0] < 0x80)	/* be quick for ASCII */
  	return p[0];
  
!     len = utf8len_tab[p[0]];
      if (len > 1 && (p[1] & 0xc0) == 0x80)
      {
  	if (len == 2)
--- 1491,1497 ----
      if (p[0] < 0x80)	/* be quick for ASCII */
  	return p[0];
  
!     len = utf8len_tab_zero[p[0]];
      if (len > 1 && (p[1] & 0xc0) == 0x80)
      {
  	if (len == 2)
***************
*** 1723,1728 ****
--- 1741,1747 ----
  /*
   * Return length of UTF-8 character, obtained from the first byte.
   * "b" must be between 0 and 255!
+  * Returns 1 for an invalid first byte value.
   */
      int
  utf_byte2len(b)
***************
*** 1737,1742 ****
--- 1756,1762 ----
   * Returns 1 for "".
   * Returns 1 for an illegal byte sequence (also in incomplete byte seq.).
   * Returns number > "size" for an incomplete byte sequence.
+  * Never returns zero.
   */
      int
  utf_ptr2len_len(p, size)
***************
*** 1747,1757 ****
      int		i;
      int		m;
  
!     if (*p == NUL)
! 	return 1;
!     m = len = utf8len_tab[*p];
      if (len > size)
  	m = size;	/* incomplete byte sequence. */
      for (i = 1; i < m; ++i)
  	if ((p[i] & 0xc0) != 0x80)
  	    return 1;
--- 1767,1779 ----
      int		i;
      int		m;
  
!     len = utf8len_tab[*p];
!     if (len == 1)
! 	return 1;	/* NUL, ascii or illegal lead byte */
      if (len > size)
  	m = size;	/* incomplete byte sequence. */
+     else
+ 	m = len;
      for (i = 1; i < m; ++i)
  	if ((p[i] & 0xc0) != 0x80)
  	    return 1;
***************
*** 2505,2510 ****
--- 2527,2533 ----
  /*
   * mb_head_off() function pointer.
   * Return offset from "p" to the first byte of the character it points into.
+  * If "p" points to the NUL at the end of the string return 0.
   * Returns 0 when already at the first byte of a character.
   */
      int
***************
*** 2524,2530 ****
  
      /* It can't be a trailing byte when not using DBCS, at the start of the
       * string or the previous byte can't start a double-byte. */
!     if (p <= base || MB_BYTE2LEN(p[-1]) == 1)
  	return 0;
  
      /* This is slow: need to start at the base and go forward until the
--- 2547,2553 ----
  
      /* It can't be a trailing byte when not using DBCS, at the start of the
       * string or the previous byte can't start a double-byte. */
!     if (p <= base || MB_BYTE2LEN(p[-1]) == 1 || *p == NUL)
  	return 0;
  
      /* This is slow: need to start at the base and go forward until the
***************
*** 2552,2558 ****
       * lead byte in the current cell. */
      if (p <= base
  	    || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e)
! 	    || MB_BYTE2LEN(p[-1]) == 1)
  	return 0;
  
      /* This is slow: need to start at the base and go forward until the
--- 2575,2582 ----
       * lead byte in the current cell. */
      if (p <= base
  	    || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e)
! 	    || MB_BYTE2LEN(p[-1]) == 1
! 	    || *p == NUL)
  	return 0;
  
      /* This is slow: need to start at the base and go forward until the
***************
*** 2578,2583 ****
--- 2602,2608 ----
      char_u	*q;
      char_u	*s;
      int		c;
+     int		len;
  #ifdef FEAT_ARABIC
      char_u	*j;
  #endif
***************
*** 2597,2604 ****
  	    --q;
  	/* Check for illegal sequence. Do allow an illegal byte after where we
  	 * started. */
! 	if (utf8len_tab[*q] != (int)(s - q + 1)
! 				       && utf8len_tab[*q] != (int)(p - q + 1))
  	    return 0;
  
  	if (q <= base)
--- 2622,2629 ----
  	    --q;
  	/* Check for illegal sequence. Do allow an illegal byte after where we
  	 * started. */
! 	len = utf8len_tab[*q];
! 	if (len != (int)(s - q + 1) && len != (int)(p - q + 1))
  	    return 0;
  
  	if (q <= base)
***************
*** 2810,2818 ****
  
      while (end == NULL ? *p != NUL : p < end)
      {
! 	if ((*p & 0xc0) == 0x80)
  	    return FALSE;	/* invalid lead byte */
- 	l = utf8len_tab[*p];
  	if (end != NULL && p + l > end)
  	    return FALSE;	/* incomplete byte sequence */
  	++p;
--- 2835,2843 ----
  
      while (end == NULL ? *p != NUL : p < end)
      {
! 	l = utf8len_tab_zero[*p];
! 	if (l == 0)
  	    return FALSE;	/* invalid lead byte */
  	if (end != NULL && p + l > end)
  	    return FALSE;	/* incomplete byte sequence */
  	++p;
***************
*** 6117,6128 ****
  	    d = retval;
  	    for (i = 0; i < len; ++i)
  	    {
! 		l = utf_ptr2len(ptr + i);
  		if (l == 0)
  		    *d++ = NUL;
  		else if (l == 1)
  		{
! 		    if (unconvlenp != NULL && utf8len_tab[ptr[i]] > len - i)
  		    {
  			/* Incomplete sequence at the end. */
  			*unconvlenp = len - i;
--- 6142,6161 ----
  	    d = retval;
  	    for (i = 0; i < len; ++i)
  	    {
! 		l = utf_ptr2len_len(ptr + i, len - i);
  		if (l == 0)
  		    *d++ = NUL;
  		else if (l == 1)
  		{
! 		    int l_w = utf8len_tab_zero[ptr[i]];
! 
! 		    if (l_w == 0)
! 		    {
! 			/* Illegal utf-8 byte cannot be converted */
! 			vim_free(retval);
! 			return NULL;
! 		    }
! 		    if (unconvlenp != NULL && l_w > len - i)
  		    {
  			/* Incomplete sequence at the end. */
  			*unconvlenp = len - i;
*** ../vim-7.2.311/src/version.c	2009-12-02 13:32:10.000000000 +0100
--- src/version.c	2009-12-02 15:00:23.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     312,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
6. You refuse to go to a vacation spot with no electricity and no phone lines.

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


--- NEW FILE 7.2.313 ---
To: vim-dev at vim.org
Subject: Patch 7.2.313
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.313
Problem:    Command line completion doesn't work after "%:h" and similar.
Solution:   Expand these items before doing the completion.
Files:	    src/ex_getln.c, src/misc1.c, src/proto/misc1.pro


*** ../vim-7.2.312/src/ex_getln.c	2009-09-18 17:24:54.000000000 +0200
--- src/ex_getln.c	2009-12-02 16:40:06.000000000 +0100
***************
*** 4422,4428 ****
  	    flags |= EW_FILE;
  	else
  	    flags = (flags | EW_DIR) & ~EW_FILE;
! 	ret = expand_wildcards(1, &pat, num_file, file, flags);
  	if (free_pat)
  	    vim_free(pat);
  	return ret;
--- 4422,4429 ----
  	    flags |= EW_FILE;
  	else
  	    flags = (flags | EW_DIR) & ~EW_FILE;
! 	/* Expand wildcards, supporting %:h and the like. */
! 	ret = expand_wildcards_eval(&pat, num_file, file, flags);
  	if (free_pat)
  	    vim_free(pat);
  	return ret;
*** ../vim-7.2.312/src/misc1.c	2009-11-17 16:08:12.000000000 +0100
--- src/misc1.c	2009-12-02 17:06:49.000000000 +0100
***************
*** 8447,8452 ****
--- 8447,8492 ----
  }
  
  /*
+  * Invoke expand_wildcards() for one pattern.
+  * Expand items like "%:h" before the expansion.
+  * Returns OK or FAIL.
+  */
+     int
+ expand_wildcards_eval(pat, num_file, file, flags)
+     char_u	 **pat;		/* pointer to input pattern */
+     int		  *num_file;	/* resulting number of files */
+     char_u	***file;	/* array of resulting files */
+     int		   flags;	/* EW_DIR, etc. */
+ {
+     int		ret = FAIL;
+     char_u	*eval_pat = NULL;
+     char_u	*exp_pat = *pat;
+     char_u      *ignored_msg;
+     int		usedlen;
+ 
+     if (*exp_pat == '%' || *exp_pat == '#' || *exp_pat == '<')
+     {
+ 	++emsg_off;
+ 	eval_pat = eval_vars(exp_pat, exp_pat, &usedlen,
+ 						    NULL, &ignored_msg, NULL);
+ 	--emsg_off;
+ 	if (eval_pat != NULL)
+ 	    exp_pat = concat_str(eval_pat, exp_pat + usedlen);
+     }
+ 
+     if (exp_pat != NULL)
+ 	ret = expand_wildcards(1, &exp_pat, num_file, file, flags);
+ 
+     if (eval_pat != NULL)
+     {
+ 	vim_free(exp_pat);
+ 	vim_free(eval_pat);
+     }
+ 
+     return ret;
+ }
+ 
+ /*
   * Expand wildcards.  Calls gen_expand_wildcards() and removes files matching
   * 'wildignore'.
   * Returns OK or FAIL.
*** ../vim-7.2.312/src/proto/misc1.pro	2007-09-26 22:36:32.000000000 +0200
--- src/proto/misc1.pro	2009-12-02 16:41:52.000000000 +0100
***************
*** 85,90 ****
--- 85,91 ----
  int vim_fexists __ARGS((char_u *fname));
  void line_breakcheck __ARGS((void));
  void fast_breakcheck __ARGS((void));
+ int expand_wildcards_eval __ARGS((char_u **pat, int *num_file, char_u ***file, int flags));
  int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
  int match_suffix __ARGS((char_u *fname));
  int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
*** ../vim-7.2.312/src/version.c	2009-12-02 15:03:24.000000000 +0100
--- src/version.c	2009-12-02 17:14:02.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     313,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
8. You spend half of the plane trip with your laptop on your lap...and your
   child in the overhead compartment.

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


--- NEW FILE 7.2.314 ---
To: vim-dev at vim.org
Subject: Patch 7.2.314
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.314
Problem:    Missing function in small build.
Solution:   Always include concat_str.
Files:	    src/misc1.c


*** ../vim-7.2.313/src/misc1.c	2009-12-02 17:15:04.000000000 +0100
--- src/misc1.c	2009-12-02 17:44:55.000000000 +0100
***************
*** 4666,4672 ****
      return dest;
  }
  
- #if defined(FEAT_EVAL) || defined(FEAT_GETTEXT) || defined(PROTO)
  /*
   * Concatenate two strings and return the result in allocated memory.
   * Returns NULL when out of memory.
--- 4666,4671 ----
***************
*** 4687,4693 ****
      }
      return dest;
  }
- #endif
  
  /*
   * Add a path separator to a file name, unless it already ends in a path
--- 4686,4691 ----
*** ../vim-7.2.313/src/version.c	2009-12-02 17:15:04.000000000 +0100
--- src/version.c	2009-12-02 17:47:18.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     314,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
9. All your daydreaming is preoccupied with getting a faster connection to the
   net: 28.8...ISDN...cable modem...T1...T3.

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


--- NEW FILE 7.2.315 ---
To: vim-dev at vim.org
Subject: Patch 7.2.315
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.315
Problem:    Python libs can't be found on 64 bit system.
Solution:   Add lib64 to the list of directories. (Michael Henry)
Files:	    src/auto/configure, src/configure.in


*** ../vim-7.2.314/src/auto/configure	2009-11-17 17:13:03.000000000 +0100
--- src/auto/configure	2009-12-02 17:21:20.000000000 +0100
***************
*** 5126,5132 ****
  
  	vi_cv_path_python_conf=
  	for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
! 	  for subdir in lib share; do
  	    d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
  	    if test -d "$d" && test -f "$d/config.c"; then
  	      vi_cv_path_python_conf="$d"
--- 5126,5132 ----
  
  	vi_cv_path_python_conf=
  	for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
! 	  for subdir in lib64 lib share; do
  	    d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
  	    if test -d "$d" && test -f "$d/config.c"; then
  	      vi_cv_path_python_conf="$d"
***************
*** 13718,13725 ****
  $as_echo "pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group" >&6; }
        else
  	vim_cv_tty_group=world
! 	{ $as_echo "$as_me:$LINENO: result: ptys are world accessable" >&5
! $as_echo "ptys are world accessable" >&6; }
        fi
  
  else
--- 13718,13725 ----
  $as_echo "pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group" >&6; }
        else
  	vim_cv_tty_group=world
! 	{ $as_echo "$as_me:$LINENO: result: ptys are world accessible" >&5
! $as_echo "ptys are world accessible" >&6; }
        fi
  
  else
***************
*** 13730,13737 ****
  ( exit $ac_status )
  
        vim_cv_tty_group=world
!       { $as_echo "$as_me:$LINENO: result: can't determine - assume ptys are world accessable" >&5
! $as_echo "can't determine - assume ptys are world accessable" >&6; }
  
  fi
  rm -rf conftest.dSYM
--- 13730,13737 ----
  ( exit $ac_status )
  
        vim_cv_tty_group=world
!       { $as_echo "$as_me:$LINENO: result: can't determine - assume ptys are world accessible" >&5
! $as_echo "can't determine - assume ptys are world accessible" >&6; }
  
  fi
  rm -rf conftest.dSYM
*** ../vim-7.2.314/src/configure.in	2009-11-17 17:13:03.000000000 +0100
--- src/configure.in	2009-12-02 17:21:10.000000000 +0100
***************
*** 686,692 ****
        [
  	vi_cv_path_python_conf=
  	for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
! 	  for subdir in lib share; do
  	    d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
  	    if test -d "$d" && test -f "$d/config.c"; then
  	      vi_cv_path_python_conf="$d"
--- 686,692 ----
        [
  	vi_cv_path_python_conf=
  	for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
! 	  for subdir in lib64 lib share; do
  	    d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
  	    if test -d "$d" && test -f "$d/config.c"; then
  	      vi_cv_path_python_conf="$d"
***************
*** 2557,2567 ****
  	AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
        else
  	vim_cv_tty_group=world
! 	AC_MSG_RESULT([ptys are world accessable])
        fi
      ],[
        vim_cv_tty_group=world
!       AC_MSG_RESULT([can't determine - assume ptys are world accessable])
      ],[
        AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
      ])
--- 2557,2567 ----
  	AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
        else
  	vim_cv_tty_group=world
! 	AC_MSG_RESULT([ptys are world accessible])
        fi
      ],[
        vim_cv_tty_group=world
!       AC_MSG_RESULT([can't determine - assume ptys are world accessible])
      ],[
        AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
      ])
*** ../vim-7.2.314/src/version.c	2009-12-02 17:47:46.000000000 +0100
--- src/version.c	2009-12-02 17:57:39.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     315,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
10. And even your night dreams are in HTML.

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

vim-7.2-elinks-parameter-518791.patch:
 netrw.vim |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE vim-7.2-elinks-parameter-518791.patch ---
diff -up vim72/runtime/autoload/netrw.vim.elinksparm vim72/runtime/autoload/netrw.vim
--- vim72/runtime/autoload/netrw.vim.elinksparm	2009-12-03 13:08:10.000000000 +0100
+++ vim72/runtime/autoload/netrw.vim	2009-12-03 13:08:27.000000000 +0100
@@ -88,7 +88,7 @@ if !exists("g:netrw_http_cmd")
  if executable("elinks")
   let g:netrw_http_cmd = "elinks"
   if !exists("g:netrw_http_xcmd")
-   let g:netrw_http_xcmd= "-dump >"
+   let g:netrw_http_xcmd= "-source >"
   endif
  elseif executable("links")
   let g:netrw_http_cmd = "links"

vim-7.2-httpfiletype-499123.patch:
 filetype.vim |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE vim-7.2-httpfiletype-499123.patch ---
diff -up vim72/runtime/filetype.vim.499123 vim72/runtime/filetype.vim
--- vim72/runtime/filetype.vim.499123	2009-12-02 17:42:47.000000000 +0100
+++ vim72/runtime/filetype.vim	2009-12-02 17:43:52.000000000 +0100
@@ -111,7 +111,7 @@ au BufNewFile,BufRead proftpd.conf*		cal
 
 " Apache config file
 au BufNewFile,BufRead .htaccess			 setf apache
-au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,auth_mysql.conf*,auth_pgsql.conf*,ssl.conf*,perl.conf*,php.conf*,python.conf*,squirrelmail.conf* call s:StarSetf('apache')
+au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/httpd/*.conf*,auth_mysql.conf*,auth_pgsql.conf*,ssl.conf*,perl.conf*,php.conf*,python.conf*,squirrelmail.conf* call s:StarSetf('apache')
 
 " XA65 MOS6510 cross assembler
 au BufNewFile,BufRead *.a65			setf a65

vim72-rh514717.patch:
 eval.c    |    3 +--
 structs.h |    2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

--- NEW FILE vim72-rh514717.patch ---
diff -up vim72/src/eval.c.rh514717 vim72/src/eval.c
--- vim72/src/eval.c.rh514717	2009-08-03 16:15:42.882375154 +0200
+++ vim72/src/eval.c	2009-08-03 16:34:14.863381780 +0200
@@ -286,13 +286,12 @@ typedef struct
 #define VV_RO		2	/* read-only */
 #define VV_RO_SBX	4	/* read-only in the sandbox */
 
-#define VV_NAME(s, t)	s, {{t, 0, {0}}, 0, {0}}, {0}
+#define VV_NAME(s, t)	s, {{t, 0, {0}}, 0, {0}}
 
 static struct vimvar
 {
     char	*vv_name;	/* name of variable, without v: */
     dictitem_T	vv_di;		/* value and name for key */
-    char	vv_filler[16];	/* space for LONGEST name below!!! */
     char	vv_flags;	/* VV_COMPAT, VV_RO, VV_RO_SBX */
 } vimvars[VV_LEN] =
 {
diff -up vim72/src/structs.h.rh514717 vim72/src/structs.h
--- vim72/src/structs.h.rh514717	2009-08-03 16:33:35.274870950 +0200
+++ vim72/src/structs.h	2009-08-03 16:33:48.607436706 +0200
@@ -1095,7 +1095,7 @@ struct dictitem_S
 {
     typval_T	di_tv;		/* type and value of the variable */
     char_u	di_flags;	/* flags (only used for variable) */
-    char_u	di_key[10];	/* key (actually longer!) */
+    char_u	di_key[18];	/* key */
 };
 
 typedef struct dictitem_S dictitem_T;


Index: gvim.desktop
===================================================================
RCS file: /cvs/extras/rpms/vim/F-10/gvim.desktop,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- gvim.desktop	20 Oct 2008 13:28:53 -0000	1.7
+++ gvim.desktop	3 Dec 2009 14:10:02 -0000	1.8
@@ -55,7 +55,7 @@ Comment[tr]=Güçlü vi düzenleyicisi
 Comment[uk]=Потужний редактор vi
 Comment[zh_CN.GB2312]=功能强大的 vi 编辑器
 MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
-Exec=gvim -f %f
+Exec=gvim -f %F
 Icon=gvim
 Type=Application
 Terminal=0

vim-7.2-fstabsyntax.patch:
 fstab.vim |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: vim-7.2-fstabsyntax.patch
===================================================================
RCS file: /cvs/extras/rpms/vim/F-10/vim-7.2-fstabsyntax.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- vim-7.2-fstabsyntax.patch	14 Aug 2008 16:06:02 -0000	1.1
+++ vim-7.2-fstabsyntax.patch	3 Dec 2009 14:10:02 -0000	1.2
@@ -6,7 +6,7 @@ diff -up vim72/runtime/syntax/fstab.vim.
  syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
  syn match fsTypeUnknown /\s\+\zs\w\+/ contained
 -syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
-+syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs binfmt_misc cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs rpc_pipefs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
++syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs binfmt_misc cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs rpc_pipefs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
  
  " Options
  " -------


Index: vim.spec
===================================================================
RCS file: /cvs/extras/rpms/vim/F-10/vim.spec,v
retrieving revision 1.228
retrieving revision 1.229
diff -u -p -r1.228 -r1.229
--- vim.spec	27 Mar 2009 11:53:29 -0000	1.228
+++ vim.spec	3 Dec 2009 14:10:02 -0000	1.229
@@ -18,7 +18,7 @@
 #used for pre-releases:
 %define beta %{nil}
 %define vimdir vim72%{?beta}
-%define patchlevel 148
+%define patchlevel 315
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
@@ -214,6 +214,173 @@ Patch145: ftp://ftp.vim.org/pub/vim/patc
 Patch146: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.146
 Patch147: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.147
 Patch148: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.148
+Patch149: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.149
+Patch150: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.150
+Patch151: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.151
+Patch152: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.152
+Patch153: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.153
+Patch154: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.154
+Patch155: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.155
+Patch156: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.156
+Patch157: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.157
+Patch158: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.158
+Patch159: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.159
+Patch160: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.160
+Patch161: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.161
+Patch162: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.162
+Patch163: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.163
+Patch164: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.164
+Patch165: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.165
+Patch166: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.166
+Patch167: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.167
+Patch168: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.168
+Patch169: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.169
+Patch170: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.170
+Patch171: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.171
+Patch172: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.172
+Patch173: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.173
+Patch174: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.174
+Patch175: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.175
+Patch176: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.176
+Patch177: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.177
+Patch178: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.178
+Patch179: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.179
+Patch180: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.180
+Patch181: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.181
+Patch182: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.182
+Patch183: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.183
+Patch184: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.184
+Patch185: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.185
+Patch186: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.186
+Patch187: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.187
+Patch188: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.188
+Patch189: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.189
+Patch190: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.190
+Patch191: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.191
+Patch192: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.192
+Patch193: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.193
+Patch194: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.194
+Patch195: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.195
+Patch196: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.196
+Patch197: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.197
+Patch198: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.198
+Patch199: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.199
+Patch200: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.200
+Patch201: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.201
+Patch202: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.202
+Patch203: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.203
+Patch204: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.204
+Patch205: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.205
+Patch206: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.206
+Patch207: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.207
+Patch208: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.208
+Patch209: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.209
+Patch210: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.210
+Patch211: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.211
+Patch212: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.212
+Patch213: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.213
+Patch214: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.214
+Patch215: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.215
+Patch216: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.216
+Patch217: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.217
+Patch218: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.218
+Patch219: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.219
+Patch220: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.220
+Patch221: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.221
+Patch222: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.222
+Patch223: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.223
+Patch224: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.224
+Patch225: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.225
+Patch226: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.226
+Patch227: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.227
+Patch228: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.228
+Patch229: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.229
+Patch230: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.230
+Patch231: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.231
+Patch232: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.232
+Patch233: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.233
+Patch234: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.234
+Patch235: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.235
+Patch236: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.236
+Patch237: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.237
+Patch238: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.238
+Patch239: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.239
+Patch240: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.240
+Patch241: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.241
+Patch242: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.242
+Patch243: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.243
+Patch244: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.244
+Patch245: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.245
+Patch246: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.246
+Patch247: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.247
+Patch248: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.248
+Patch249: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.249
+Patch250: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.250
+Patch251: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.251
+Patch252: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.252
+Patch253: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.253
+Patch254: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.254
+Patch255: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.255
+Patch256: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.256
+Patch257: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.257
+Patch258: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.258
+Patch259: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.259
+Patch260: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.260
+Patch261: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.261
+Patch262: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.262
+Patch263: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.263
+Patch264: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.264
+Patch265: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.265
+Patch266: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.266
+Patch267: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.267
+Patch268: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.268
+Patch269: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.269
+Patch270: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.270
+Patch271: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.271
+Patch272: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.272
+Patch273: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.273
+Patch274: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.274
+Patch275: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.275
+Patch276: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.276
+Patch277: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.277
+Patch278: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.278
+Patch279: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.279
+Patch280: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.280
+Patch281: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.281
+Patch282: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.282
+Patch283: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.283
+Patch284: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.284
+Patch285: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.285
+Patch286: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.286
+Patch287: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.287
+Patch288: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.288
+Patch289: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.289
+Patch290: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.290
+Patch291: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.291
+Patch292: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.292
+Patch293: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.293
+Patch294: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.294
+Patch295: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.295
+Patch296: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.296
+Patch297: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.297
+Patch298: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.298
+Patch299: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.299
+Patch300: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.300
+Patch301: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.301
+Patch302: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.302
+Patch303: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.303
+Patch304: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.304
+Patch305: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.305
+Patch306: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.306
+Patch307: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.307
+Patch308: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.308
+Patch309: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.309
+Patch310: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.310
+Patch311: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.311
+Patch312: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.312
+Patch313: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.313
+Patch314: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.314
+Patch315: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.315
 
 Patch3000: vim-7.0-syntax.patch
 Patch3002: vim-7.1-nowarnings.patch
@@ -221,10 +388,12 @@ Patch3003: vim-6.1-rh3.patch
 Patch3004: vim-7.0-rclocation.patch
 Patch3006: vim-6.4-checkhl.patch
 Patch3007: vim-7.2-fstabsyntax.patch
-Patch3008: vim-7.1-lib64.patch
-Patch3009: vim-7.0-warning.patch
-Patch3010: vim-7.0-syncolor.patch
-Patch3011: vim-7.0-specedit.patch
+Patch3008: vim-7.0-warning.patch
+Patch3009: vim-7.0-syncolor.patch
+Patch3010: vim-7.0-specedit.patch
+Patch3011: vim72-rh514717.patch
+Patch3012: vim-7.2-httpfiletype-499123.patch
+Patch3013: vim-7.2-elinks-parameter-518791.patch
 
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: python-devel ncurses-devel gettext perl-devel
@@ -233,6 +402,9 @@ BuildRequires: libacl-devel gpm-devel au
 %if %{WITH_SELINUX}
 BuildRequires: libselinux-devel
 %endif
+%if "%{withruby}" == "1"
+Buildrequires: ruby-devel ruby
+%endif
 %if %{desktop_file}
 # for /usr/bin/desktop-file-install
 Requires: desktop-file-utils
@@ -495,6 +667,173 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runti
 %patch146 -p0
 %patch147 -p0
 %patch148 -p0
+%patch149 -p0 
+%patch150 -p0 
+%patch151 -p0 
+%patch152 -p0 
+%patch153 -p0 
+%patch154 -p0 
+%patch155 -p0 
+%patch156 -p0 
+%patch157 -p0 
+%patch158 -p0 
+%patch159 -p0 
+%patch160 -p0 
+%patch161 -p0 
+%patch162 -p0 
+%patch163 -p0 
+%patch164 -p0 
+%patch165 -p0 
+%patch166 -p0 
+%patch167 -p0 
+%patch168 -p0 
+%patch169 -p0 
+%patch170 -p0 
+%patch171 -p0 
+%patch172 -p0 
+%patch173 -p0 
+%patch174 -p0 
+%patch175 -p0 
+%patch176 -p0 
+%patch177 -p0 
+%patch178 -p0 
+%patch179 -p0 
+%patch180 -p0 
+%patch181 -p0 
+%patch182 -p0 
+%patch183 -p0 
+%patch184 -p0 
+%patch185 -p0 
+%patch186 -p0 
+%patch187 -p0 
+%patch188 -p0 
+%patch189 -p0 
+%patch190 -p0 
+%patch191 -p0 
+%patch192 -p0 
+%patch193 -p0 
+%patch194 -p0 
+%patch195 -p0 
+%patch196 -p0 
+%patch197 -p0 
+%patch198 -p0 
+%patch199 -p0 
+%patch200 -p0 
+%patch201 -p0 
+%patch202 -p0 
+%patch203 -p0 
+%patch204 -p0 
+%patch205 -p0 
+%patch206 -p0 
+%patch207 -p0 
+%patch208 -p0 
+%patch209 -p0 
+%patch210 -p0 
+%patch211 -p0 
+%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 
+%patch243 -p0 
+%patch244 -p0 
+%patch245 -p0 
+%patch246 -p0 
+%patch247 -p0 
+%patch248 -p0 
+%patch249 -p0 
+%patch250 -p0 
+%patch251 -p0 
+%patch252 -p0 
+%patch253 -p0 
+%patch254 -p0 
+%patch255 -p0 
+%patch256 -p0 
+%patch257 -p0 
+%patch258 -p0 
+%patch259 -p0 
+%patch260 -p0 
+%patch261 -p0 
+%patch262 -p0 
+%patch263 -p0 
+%patch264 -p0 
+%patch265 -p0 
+%patch266 -p0 
+%patch267 -p0 
+%patch268 -p0 
+%patch269 -p0 
+%patch270 -p0 
+%patch271 -p0 
+%patch272 -p0 
+%patch273 -p0 
+%patch274 -p0 
+%patch275 -p0 
+%patch276 -p0 
+%patch277 -p0 
+%patch278 -p0 
+%patch279 -p0 
+%patch280 -p0 
+%patch281 -p0 
+%patch282 -p0 
+%patch283 -p0 
+%patch284 -p0 
+%patch285 -p0                                          
+%patch286 -p0                                          
+%patch287 -p0                                          
+%patch288 -p0                                          
+%patch289 -p0                                          
+%patch290 -p0                                          
+%patch291 -p0                                          
+%patch292 -p0                                          
+%patch293 -p0                                          
+%patch294 -p0                                          
+%patch295 -p0                                          
+%patch296 -p0                                          
+%patch297 -p0                                          
+%patch298 -p0                                          
+%patch299 -p0                                          
+%patch300 -p0                                          
+%patch301 -p0                                          
+%patch302 -p0                                          
+%patch303 -p0                                          
+%patch304 -p0                                          
+%patch305 -p0                                          
+%patch306 -p0                                          
+%patch307 -p0
+%patch308 -p0
+%patch309 -p0
+%patch310 -p0
+%patch311 -p0
+%patch312 -p0
+%patch313 -p0
+%patch314 -p0
+%patch315 -p0
 
 
 # install spell files
@@ -513,6 +852,7 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runti
 %patch3009 -p1
 %patch3010 -p1
 %patch3011 -p1
+%patch3012 -p1
 
 cp -f %{SOURCE15} runtime/syntax/forth.vim
 cp -f %{SOURCE16} runtime/plugin/netrwPlugin.vim
@@ -523,12 +863,15 @@ cp -f %{SOURCE20} runtime/autoload/tar.v
 cp -f %{SOURCE21} runtime/autoload/netrwFileHandlers.vim
 cp -f %{SOURCE22} runtime/autoload/netrw.vim
 cp -f %{SOURCE23} runtime/autoload/netrwSettings.vim
-
+%patch3013 -p1
 
 %build
 cd src
 autoconf
 
+sed -e "s+VIMRCLOC	= \$(VIMLOC)+VIMRCLOC	= /etc+" Makefile > Makefile.tmp
+mv -f Makefile.tmp Makefile
+
 export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2"
 export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2"
 
@@ -555,7 +898,7 @@ export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_S
   --disable-rubyinterp \
 %endif
 
-make %{?_smp_mflags}
+make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags}
 cp vim gvim
 make clean
 
@@ -581,7 +924,7 @@ make clean
   --disable-rubyinterp \
 %endif
 
-make %{?_smp_mflags}
+make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags}
 cp vim enhanced-vim
 make clean
 
@@ -600,7 +943,7 @@ perl -pi -e "s/\/etc\/vimrc/\/etc\/virc/
   --with-compiledby="<bugzilla at redhat.com>" \
   --with-modified-by="<bugzilla at redhat.com>"
 
-make %{?_smp_mflags}
+make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir} %{?_smp_mflags}
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -616,8 +959,8 @@ rm -f README*.info
 
 
 cd src
-make install DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin
-make installgtutorbin  DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin
+make install DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir}
+make installgtutorbin  DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/%{vimdir}
 mv $RPM_BUILD_ROOT/bin/xxd $RPM_BUILD_ROOT/%{_bindir}/xxd
 mv $RPM_BUILD_ROOT/bin/gvimtutor $RPM_BUILD_ROOT/%{_bindir}/gvimtutor
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/{16x16,32x32,48x48,64x64}/apps
@@ -657,8 +1000,8 @@ install -m755 enhanced-vim $RPM_BUILD_RO
     mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications
     desktop-file-install --vendor fedora \
         --dir $RPM_BUILD_ROOT/%{_datadir}/applications \
-        --add-category "Development;TextEditor;X-Red-Hat-Base" \
         %{SOURCE3}
+        # --add-category "Development;TextEditor;X-Red-Hat-Base" D\
   %else
     mkdir -p ./%{_sysconfdir}/X11/applnk/Applications
     cp %{SOURCE3} ./%{_sysconfdir}/X11/applnk/Applications/gvim.desktop
@@ -702,14 +1045,14 @@ mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/
 cat >$RPM_BUILD_ROOT/%{_sysconfdir}/profile.d/vim.sh <<EOF
 if [ -n "\$BASH_VERSION" -o -n "\$KSH_VERSION" -o -n "\$ZSH_VERSION" ]; then
   [ -x /%{_bindir}/id ] || return
-  [ \`/%{_bindir}/id -u\` -le 100 ] && return
+  [ \`/%{_bindir}/id -u\` -le 200 ] && return
   # for bash and zsh, only if no alias is already set
   alias vi >/dev/null 2>&1 || alias vi=vim
 fi
 EOF
 cat >$RPM_BUILD_ROOT/%{_sysconfdir}/profile.d/vim.csh <<EOF
 [ -x /%{_bindir}/id ] || exit
-[ \`/%{_bindir}/id -u\` -gt 100 ] && alias vi vim
+[ \`/%{_bindir}/id -u\` -gt 200 ] && alias vi vim
 EOF
 chmod 0644 $RPM_BUILD_ROOT/%{_sysconfdir}/profile.d/*
 install -p -m644 %{SOURCE4} $RPM_BUILD_ROOT/%{_sysconfdir}/vimrc
@@ -726,6 +1069,7 @@ vi-Bram.txt	vi_help.txt	/*vi-Bram*
 vi-Moolenaar.txt	vi_help.txt	/*vi-Moolenaar*
 vi-credits.txt	vi_help.txt	/*vi-credits*
 EOF
+LANG=C sort tags > tags.tmp; mv tags.tmp tags
  )
 (cd ../runtime; rm -rf doc; ln -svf ../../vim/%{vimdir}/doc docs;) 
 rm -f $RPM_BUILD_ROOT/%{_datadir}/vim/%{vimdir}/macros/maze/maze*.c
@@ -954,6 +1298,32 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
+* Wed Dec 03 2009 Karsten Hopp <karsten at redhat.com> 7.2.315-1
+- patchlevel 315
+- fix vimrc location in man page (#456992)
+- correct syntax highlighting of httpd config files in /etc/httpd (#499123)
+- Buildrequire ruby, ruby-devel (#503872)
+- Remove check for static gravity (#510307)
+- sort tags file (#517725)
+- use one gvim to open multiple file selections from nautilus (#519265)
+- use elinks -source instead of elinks -dump (#518791)
+- add ext4 keyword to /etc/fstab syntax highlighting (#498290)
+
+* Mon Nov 09 2009 Karsten Hopp <karsten at redhat.com> 7.2.284-1
+- patchlevel 284
+
+* Thu Aug 20 2009 Karsten Hopp <karsten at redhat.com> 7.2.245-3
+- change range of system ids in /etc/profile.d/vim/* (#518555)
+
+* Mon Aug 03 2009 Karsten Hopp <karsten at redhat.com> 7.2.245-2
+- add fix for glibc fortify segfault (#514717, Adam Tkac)
+
+* Sat Aug 01 2009 Karsten Hopp <karsten at redhat.com> 7.2.245-1
+- add 97 upstream patches to get to patchlevel 245
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2:7.2.148-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
 * Fri Mar 27 2009 Karsten Hopp <karsten at redhat.com> 7.2.148-1
 - patchlevel 148, fixes #461417
 


Index: vimrc
===================================================================
RCS file: /cvs/extras/rpms/vim/F-10/vimrc,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -p -r1.20 -r1.21
--- vimrc	3 Jun 2008 14:34:32 -0000	1.20
+++ vimrc	3 Dec 2009 14:10:02 -0000	1.21
@@ -16,7 +16,7 @@ if has("autocmd")
   augroup fedora
   autocmd!
   " In text files, always limit the width of text to 78 characters
-  autocmd BufRead *.txt set tw=78
+  " autocmd BufRead *.txt set tw=78
   " When editing a file, always jump to the last cursor position
   autocmd BufReadPost *
   \ if line("'\"") > 0 && line ("'\"") <= line("$") |




More information about the fedora-extras-commits mailing list