rpms/vim/F-12 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 gvim.desktop, 1.7, 1.8 vim-7.2-fstabsyntax.patch, 1.1, 1.2 vim.spec, 1.240, 1.241 vimrc, 1.20, 1.21

Karsten Hopp karsten at fedoraproject.org
Thu Dec 3 13:40:06 UTC 2009


Author: karsten

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

Modified Files:
	gvim.desktop vim-7.2-fstabsyntax.patch vim.spec vimrc 
Added Files:
	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 
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.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
+ Y
+ X
+ Y
+ 
+ X
+ X
+ a
+ X
+ a
+ X
+ Y
+ X
+ Y
+ }
+ 
+ 
+ {
+ X
+ X
+ a
+ X
+ a
+ X
+ Y
+ X
+ Y
+ a
+ X
+ ab
+ X
+ abc
+ X
+ ab
+ X
+ c
+ ab
+ X
+ Y
+ 
+ X
+ X
+ a
+ X
+ a
+ X
+ Y
+ X
+ Y
+ a
+ X
+ ab
+ X
+ abc
+ X
+ ab
+ X
+ c
+ ab
+ X
+ Y
+ }
+ 
+ 
+ {
+   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


Index: gvim.desktop
===================================================================
RCS file: /cvs/extras/rpms/vim/F-12/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 13:40:06 -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-12/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 13:40:06 -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-12/vim.spec,v
retrieving revision 1.240
retrieving revision 1.241
diff -u -p -r1.240 -r1.241
--- vim.spec	20 Aug 2009 21:43:34 -0000	1.240
+++ vim.spec	3 Dec 2009 13:40:06 -0000	1.241
@@ -18,13 +18,13 @@
 #used for pre-releases:
 %define beta %{nil}
 %define vimdir vim72%{?beta}
-%define patchlevel 245
+%define patchlevel 315
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
 Name: vim
 Version: %{baseversion}.%{beta}%{patchlevel}
-Release: 3%{?dist}
+Release: 1%{?dist}
 License: Vim
 Group: Applications/Editors
 Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2
@@ -311,6 +311,76 @@ Patch242: ftp://ftp.vim.org/pub/vim/patc
 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
@@ -318,11 +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
-Patch3012: vim72-rh514717.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
@@ -331,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
@@ -690,6 +764,76 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runti
 %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
@@ -719,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"
 
@@ -751,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
 
@@ -777,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
 
@@ -796,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
@@ -812,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
@@ -853,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
@@ -922,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
@@ -1150,6 +1298,20 @@ 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)
 


Index: vimrc
===================================================================
RCS file: /cvs/extras/rpms/vim/F-12/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 13:40:06 -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