diff --git a/7.4.095 b/7.4.095
new file mode 100644
index 0000000..f7abfca
--- /dev/null
+++ b/7.4.095
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.095
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.095 (after 7.4.093)
+Problem:    Regexp for LuaJIT version doesn't work on BSD.
+Solution:   Use "*" instead of "\+" and "\?". (Ozaki)
+Files:	    src/configure.in, src/auto/configure
+
+
+*** ../vim-7.4.094/src/configure.in	2013-11-17 20:32:49.000000000 +0100
+--- src/configure.in	2013-11-21 12:04:46.000000000 +0100
+***************
+*** 496,502 ****
+        if test "X$vi_cv_path_luajit" != "X"; then
+  	dnl -- find LuaJIT version
+  	AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+! 	[ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]\+\)\? .*/\1/'` ])
+  	AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+  	[ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+  	vi_cv_path_lua="$vi_cv_path_luajit"
+--- 496,502 ----
+        if test "X$vi_cv_path_luajit" != "X"; then
+  	dnl -- find LuaJIT version
+  	AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
+! 	[ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
+  	AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
+  	[ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
+  	vi_cv_path_lua="$vi_cv_path_luajit"
+*** ../vim-7.4.094/src/auto/configure	2013-11-17 20:32:49.000000000 +0100
+--- src/auto/configure	2013-11-21 12:07:39.000000000 +0100
+***************
+*** 4743,4749 ****
+  if test "${vi_cv_version_luajit+set}" = set; then :
+    $as_echo_n "(cached) " >&6
+  else
+!    vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-[a-z0-9]\+\)\? .*/\1/'`
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
+  $as_echo "$vi_cv_version_luajit" >&6; }
+--- 4743,4749 ----
+  if test "${vi_cv_version_luajit+set}" = set; then :
+    $as_echo_n "(cached) " >&6
+  else
+!    vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-[a-z0-9]*\)* .*/\1/'`
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
+  $as_echo "$vi_cv_version_luajit" >&6; }
+*** ../vim-7.4.094/src/version.c	2013-11-17 20:32:49.000000000 +0100
+--- src/version.c	2013-11-21 12:06:26.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     95,
+  /**/
+
+-- 
+Our job was to build a computer information system for the branch banks.  We
+were the perfect people for the job: Dean had seen a computer once, and I had
+heard Dean talk about it.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.096 b/7.4.096
new file mode 100644
index 0000000..be20959
--- /dev/null
+++ b/7.4.096
@@ -0,0 +1,96 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.096
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.096
+Problem:    Can't change directory to an UNC path.
+Solution:   Use win32_getattrs() in mch_getperm(). (Christian Brabandt)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.095/src/os_win32.c	2013-09-25 19:13:32.000000000 +0200
+--- src/os_win32.c	2013-11-21 12:31:52.000000000 +0100
+***************
+*** 2841,2858 ****
+  }
+  
+  /*
+!  * get file permissions for `name'
+!  * -1 : error
+!  * else mode_t
+   */
+      long
+  mch_getperm(char_u *name)
+  {
+      struct stat st;
+!     int n;
+  
+      n = mch_stat(name, &st);
+!     return n == 0 ? (int)st.st_mode : -1;
+  }
+  
+  
+--- 2841,2860 ----
+  }
+  
+  /*
+!  * Get file permissions for "name".
+!  * Return mode_t or -1 for error.
+   */
+      long
+  mch_getperm(char_u *name)
+  {
+      struct stat st;
+!     int		n;
+  
++     if (name[0] == '\\' && name[1] == '\\')
++ 	/* UNC path */
++ 	return (long)win32_getattrs(name);
+      n = mch_stat(name, &st);
+!     return n == 0 ? (long)st.st_mode : -1L;
+  }
+  
+  
+***************
+*** 3094,3101 ****
+   * -1 : error
+   * else FILE_ATTRIBUTE_* defined in winnt.h
+   */
+!     static
+!     int
+  win32_getattrs(char_u *name)
+  {
+      int		attr;
+--- 3096,3102 ----
+   * -1 : error
+   * else FILE_ATTRIBUTE_* defined in winnt.h
+   */
+!     static int
+  win32_getattrs(char_u *name)
+  {
+      int		attr;
+*** ../vim-7.4.095/src/version.c	2013-11-21 12:17:46.000000000 +0100
+--- src/version.c	2013-11-21 12:32:46.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     96,
+  /**/
+
+-- 
+If your company is not involved in something called "ISO 9000" you probably
+have no idea what it is.  If your company _is_ involved in ISO 9000 then you
+definitely have no idea what it is.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.097 b/7.4.097
new file mode 100644
index 0000000..cfb6183
--- /dev/null
+++ b/7.4.097
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.097
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.097 (after 7.4.034)
+Problem:    Unexpected behavior change related to 'virtualedit'. (Ingo Karkat)
+Solution:   Update the valid cursor position. (Christian Brabandt)
+Files:	    src/ops.c
+
+
+*** ../vim-7.4.096/src/ops.c	2013-11-11 23:17:31.000000000 +0100
+--- src/ops.c	2013-11-21 13:21:24.000000000 +0100
+***************
+*** 3844,3850 ****
+--- 3844,3854 ----
+  		    ml_replace(lnum, newp, FALSE);
+  		    /* Place cursor on last putted char. */
+  		    if (lnum == curwin->w_cursor.lnum)
++ 		    {
++ 			/* make sure curwin->w_virtcol is updated */
++ 			changed_cline_bef_curs();
+  			curwin->w_cursor.col += (colnr_T)(totlen - 1);
++ 		    }
+  		}
+  #ifdef FEAT_VISUAL
+  		if (VIsual_active)
+*** ../vim-7.4.096/src/version.c	2013-11-21 12:34:07.000000000 +0100
+--- src/version.c	2013-11-21 13:08:27.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     97,
+  /**/
+
+-- 
+The only way the average employee can speak to an executive is by taking a
+second job as a golf caddie.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.098 b/7.4.098
new file mode 100644
index 0000000..78af90e
--- /dev/null
+++ b/7.4.098
@@ -0,0 +1,243 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.098
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.098
+Problem:    When using ":'<,'>del" errors may be given for the visual line
+            numbers being out of range.
+Solution:   Reset Visual mode in ":del". (Lech Lorens)
+Files:      src/ex_docmd.c, src/testdir/test103.in, src/testdir/test103.ok,
+            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, src/testdir/Makefile
+
+
+*** ../vim-7.4.097/src/ex_docmd.c	2013-11-09 05:30:18.000000000 +0100
+--- src/ex_docmd.c	2013-11-21 14:04:55.000000000 +0100
+***************
+*** 8570,8575 ****
+--- 8570,8580 ----
+  	beginline(BL_SOL | BL_FIX);
+      }
+  
++ #if defined(FEAT_VISUAL)
++     if (VIsual_active)
++ 	end_visual_mode();
++ #endif
++ 
+      switch (eap->cmdidx)
+      {
+  	case CMD_delete:
+*** ../vim-7.4.097/src/testdir/test103.in	2013-11-21 14:21:12.000000000 +0100
+--- src/testdir/test103.in	2013-11-21 14:02:09.000000000 +0100
+***************
+*** 0 ****
+--- 1,37 ----
++ Test for visual mode not being reset causing E315 error.
++ STARTTEST
++ :so small.vim
++ :enew
++ :let g:msg="Everything's fine."
++ :function! TriggerTheProblem()
++ :	" At this point there is no visual selection because :call reset it.
++ :	" Let's restore the selection:
++ :	normal gv
++ :	'<,'>del _
++ :	try
++ :		exe "normal \<Esc>"
++ :	catch /^Vim\%((\a\+)\)\=:E315/
++ :		echom 'Snap! E315 error!'
++ :		let g:msg='Snap! E315 error!'
++ :	endtry
++ :endfunction
++ :enew
++ :setl buftype=nofile
++ :call append(line('$'), 'Delete this line.')
++ :"
++ :"
++ :" NOTE: this has to be done by a call to a function because executing :del the
++ :"       ex-way will require the colon operator which resets the visual mode thus
++ :"       preventing the problem:
++ :"
++ GV:call TriggerTheProblem()
++ :%del _
++ :call append(line('$'), g:msg)
++ :w! test.out
++ :brewind
++ ENDTEST
++ 
++ STARTTEST
++ :qa!
++ ENDTEST
++ 
+*** ../vim-7.4.097/src/testdir/test103.ok	2013-11-21 14:21:12.000000000 +0100
+--- src/testdir/test103.ok	2013-11-21 14:02:28.000000000 +0100
+***************
+*** 0 ****
+--- 1,2 ----
++ 
++ Everything's fine.
+*** ../vim-7.4.097/src/testdir/Make_amiga.mak	2013-11-12 05:28:08.000000000 +0100
+--- src/testdir/Make_amiga.mak	2013-11-21 14:02:51.000000000 +0100
+***************
+*** 34,40 ****
+  		test81.out test82.out test83.out test84.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test97.out test98.out \
+! 		test99.out test100.out test101.out test102.out
+  
+  .SUFFIXES: .in .out
+  
+--- 34,40 ----
+  		test81.out test82.out test83.out test84.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test97.out test98.out \
+! 		test99.out test100.out test101.out test102.out test103.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 153,155 ****
+--- 153,156 ----
+  test100.out: test100.in
+  test101.out: test101.in
+  test102.out: test102.in
++ test103.out: test103.in
+*** ../vim-7.4.097/src/testdir/Make_dos.mak	2013-11-12 05:28:08.000000000 +0100
+--- src/testdir/Make_dos.mak	2013-11-21 14:02:58.000000000 +0100
+***************
+*** 33,39 ****
+  		test84.out test85.out test86.out test87.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test98.out test99.out \
+! 		test100.out test101.out test102.out
+  
+  SCRIPTS32 =	test50.out test70.out
+  
+--- 33,39 ----
+  		test84.out test85.out test86.out test87.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test98.out test99.out \
+! 		test100.out test101.out test102.out test103.out
+  
+  SCRIPTS32 =	test50.out test70.out
+  
+*** ../vim-7.4.097/src/testdir/Make_ming.mak	2013-11-12 05:28:08.000000000 +0100
+--- src/testdir/Make_ming.mak	2013-11-21 14:03:01.000000000 +0100
+***************
+*** 53,59 ****
+  		test84.out test85.out test86.out test87.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test98.out test99.out \
+! 		test100out test101.out test102.out
+  
+  SCRIPTS32 =	test50.out test70.out
+  
+--- 53,59 ----
+  		test84.out test85.out test86.out test87.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test98.out test99.out \
+! 		test100out test101.out test102.out test103.out
+  
+  SCRIPTS32 =	test50.out test70.out
+  
+*** ../vim-7.4.097/src/testdir/Make_os2.mak	2013-11-12 05:28:08.000000000 +0100
+--- src/testdir/Make_os2.mak	2013-11-21 14:03:03.000000000 +0100
+***************
+*** 35,41 ****
+  		test81.out test82.out test83.out test84.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test98.out test99.out \
+! 		test100.out test101.out test102.out
+  
+  .SUFFIXES: .in .out
+  
+--- 35,41 ----
+  		test81.out test82.out test83.out test84.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test98.out test99.out \
+! 		test100.out test101.out test102.out test103.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.4.097/src/testdir/Make_vms.mms	2013-11-12 05:28:08.000000000 +0100
+--- src/testdir/Make_vms.mms	2013-11-21 14:03:13.000000000 +0100
+***************
+*** 4,10 ****
+  # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2013 Nov 12
+  #
+  # 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@polarhome.com>
+  #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2013 Nov 21
+  #
+  # 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.
+***************
+*** 79,85 ****
+  	 test82.out test83.out test84.out test88.out test89.out \
+  	 test90.out test91.out test92.out test93.out test94.out \
+  	 test95.out test96.out test97.out test98.out test99.out \
+! 	 test100.out test101.out test102.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 79,85 ----
+  	 test82.out test83.out test84.out test88.out test89.out \
+  	 test90.out test91.out test92.out test93.out test94.out \
+  	 test95.out test96.out test97.out test98.out test99.out \
+! 	 test100.out test101.out test102.out test103.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.4.097/src/testdir/Makefile	2013-11-12 05:28:08.000000000 +0100
+--- src/testdir/Makefile	2013-11-21 14:03:23.000000000 +0100
+***************
+*** 30,36 ****
+  		test84.out test85.out test86.out test87.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test97.out test98.out \
+! 		test99.out test100.out test101.out test102.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 30,36 ----
+  		test84.out test85.out test86.out test87.out test88.out \
+  		test89.out test90.out test91.out test92.out test93.out \
+  		test94.out test95.out test96.out test97.out test98.out \
+! 		test99.out test100.out test101.out test102.out test103.out
+  
+  SCRIPTS_GUI = test16.out
+  
+*** ../vim-7.4.097/src/version.c	2013-11-21 13:24:36.000000000 +0100
+--- src/version.c	2013-11-21 14:20:34.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     98,
+  /**/
+
+-- 
+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@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.099 b/7.4.099
new file mode 100644
index 0000000..a9cf636
--- /dev/null
+++ b/7.4.099
@@ -0,0 +1,113 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.099
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.099
+Problem:    Append in blockwise Visual mode with "$" is wrong.
+Solution:   After "$" don't use the code that checks if the cursor was moved.
+	    (Hirohito Higashi, Ken Takata)
+Files:	    src/ops.c, src/testdir/test39.in, src/testdir/test39.ok
+
+
+*** ../vim-7.4.098/src/ops.c	2013-11-21 13:24:36.000000000 +0100
+--- src/ops.c	2013-11-21 14:33:57.000000000 +0100
+***************
+*** 2643,2649 ****
+  
+  	/* The user may have moved the cursor before inserting something, try
+  	 * to adjust the block for that. */
+! 	if (oap->start.lnum == curbuf->b_op_start.lnum)
+  	{
+  	    if (oap->op_type == OP_INSERT
+  		    && oap->start.col != curbuf->b_op_start.col)
+--- 2643,2649 ----
+  
+  	/* The user may have moved the cursor before inserting something, try
+  	 * to adjust the block for that. */
+! 	if (oap->start.lnum == curbuf->b_op_start.lnum && !bd.is_MAX)
+  	{
+  	    if (oap->op_type == OP_INSERT
+  		    && oap->start.col != curbuf->b_op_start.col)
+*** ../vim-7.4.098/src/testdir/test39.in	2013-11-11 01:29:16.000000000 +0100
+--- src/testdir/test39.in	2013-11-21 14:25:55.000000000 +0100
+***************
+*** 23,28 ****
+--- 23,40 ----
+  /^aaaa/
+  :exe ":norm! l\<C-V>jjjlllI\<Right>\<Right>  \<Esc>"
+  :/^aa/,/^$/w >> test.out
++ :" Test for Visual block was created with the last <C-v>$
++ /^A23$/
++ :exe ":norm! l\<C-V>j$Aab\<Esc>"
++ :.,/^$/w >> test.out
++ :" Test for Visual block was created with the middle <C-v>$ (1)
++ /^B23$/
++ :exe ":norm! l\<C-V>j$hAab\<Esc>"
++ :.,/^$/w >> test.out
++ :" Test for Visual block was created with the middle <C-v>$ (2)
++ /^C23$/
++ :exe ":norm! l\<C-V>j$hhAab\<Esc>"
++ :.,/^$/w >> test.out
+  :" gUe must uppercase a whole word, also when � changes to SS
+  Gothe youtu�euu endYpk0wgUe
+  :" gUfx must uppercase until x, inclusive.
+***************
+*** 49,54 ****
+--- 61,75 ----
+  cccccc
+  dddddd
+  
++ A23
++ 4567
++ 
++ B23
++ 4567
++ 
++ C23
++ 4567
++ 
+  abcdefghijklm
+  abcdefghijklm
+  abcdefghijklm
+*** ../vim-7.4.098/src/testdir/test39.ok	2013-11-11 01:29:16.000000000 +0100
+--- src/testdir/test39.ok	2013-11-21 14:25:10.000000000 +0100
+***************
+*** 8,13 ****
+--- 8,22 ----
+  ccc  ccc
+  ddd  ddd
+  
++ A23ab
++ 4567ab
++ 
++ B23 ab
++ 4567ab
++ 
++ C23ab
++ 456ab7
++ 
+  the YOUTUSSEUU end
+  - yOUSSTUSSEXu -
+  THE YOUTUSSEUU END
+*** ../vim-7.4.098/src/version.c	2013-11-21 14:21:25.000000000 +0100
+--- src/version.c	2013-11-21 14:34:28.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     99,
+  /**/
+
+-- 
+If the Universe is constantly expanding, why can't I ever find a parking space?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.100 b/7.4.100
new file mode 100644
index 0000000..c3c0cb6
--- /dev/null
+++ b/7.4.100
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.100
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.100
+Problem:    NFA regexp doesn't handle backreference correctly. (Ryuichi
+	    Hayashida, Urtica Dioica)
+Solution:   Always add NFA_SKIP, also when it already exists at the start
+	    position.
+Files:      src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.099/src/regexp_nfa.c	2013-10-06 15:46:06.000000000 +0200
+--- src/regexp_nfa.c	2013-11-21 15:58:58.000000000 +0100
+***************
+*** 4278,4284 ****
+  	     * endless loop for "\(\)*" */
+  
+  	default:
+! 	    if (state->lastlist[nfa_ll_index] == l->id)
+  	    {
+  		/* This state is already in the list, don't add it again,
+  		 * unless it is an MOPEN that is used for a backreference or
+--- 4278,4284 ----
+  	     * endless loop for "\(\)*" */
+  
+  	default:
+! 	    if (state->lastlist[nfa_ll_index] == l->id && state->c != NFA_SKIP)
+  	    {
+  		/* This state is already in the list, don't add it again,
+  		 * unless it is an MOPEN that is used for a backreference or
+*** ../vim-7.4.099/src/testdir/test64.in	2013-09-25 18:16:34.000000000 +0200
+--- src/testdir/test64.in	2013-11-21 15:58:19.000000000 +0100
+***************
+*** 406,411 ****
+--- 406,412 ----
+  :call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
+  :call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'bat'])
+  :call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '${0}', '0'])
++ :call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
+  :"
+  :"""" Look-behind with limit
+  :call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
+*** ../vim-7.4.099/src/testdir/test64.ok	2013-09-25 18:16:34.000000000 +0200
+--- src/testdir/test64.ok	2013-11-21 15:59:04.000000000 +0100
+***************
+*** 944,949 ****
+--- 944,952 ----
+  OK 0 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
+  OK 1 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
+  OK 2 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
++ OK 0 - ^\(a*\)\1$
++ OK 1 - ^\(a*\)\1$
++ OK 2 - ^\(a*\)\1$
+  OK 0 - <\@<=span.
+  OK 1 - <\@<=span.
+  OK 2 - <\@<=span.
+*** ../vim-7.4.099/src/version.c	2013-11-21 14:39:58.000000000 +0100
+--- src/version.c	2013-11-21 16:02:27.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     100,
+  /**/
+
+-- 
+Sometimes you can protect millions of dollars in your budget simply by buying
+a bag of cookies, dropping it on the budget anylyst's desk, and saying
+something deeply personal such as "How was your weekend, big guy?"
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.101 b/7.4.101
new file mode 100644
index 0000000..99150ef
--- /dev/null
+++ b/7.4.101
@@ -0,0 +1,93 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.101
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.101
+Problem:    Using \1 in pattern goes one line too far. (Bohr Shaw, John Little)
+Solution:   Only advance the match end for the matched characters in the last
+	    line.
+Files:	    src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok
+
+
+*** ../vim-7.4.100/src/regexp.c	2013-09-19 17:03:57.000000000 +0200
+--- src/regexp.c	2013-11-21 16:58:38.000000000 +0100
+***************
+*** 6455,6461 ****
+  /*
+   * Check whether a backreference matches.
+   * Returns RA_FAIL, RA_NOMATCH or RA_MATCH.
+!  * If "bytelen" is not NULL, it is set to the bytelength of the whole match.
+   */
+      static int
+  match_with_backref(start_lnum, start_col, end_lnum, end_col, bytelen)
+--- 6455,6462 ----
+  /*
+   * Check whether a backreference matches.
+   * Returns RA_FAIL, RA_NOMATCH or RA_MATCH.
+!  * If "bytelen" is not NULL, it is set to the byte length of the match in the
+!  * last line.
+   */
+      static int
+  match_with_backref(start_lnum, start_col, end_lnum, end_col, bytelen)
+***************
+*** 6511,6516 ****
+--- 6512,6519 ----
+  
+  	/* Advance to next line. */
+  	reg_nextline();
++ 	if (bytelen != NULL)
++ 	    *bytelen = 0;
+  	++clnum;
+  	ccol = 0;
+  	if (got_int)
+*** ../vim-7.4.100/src/testdir/test64.in	2013-11-21 16:03:35.000000000 +0100
+--- src/testdir/test64.in	2013-11-21 16:56:20.000000000 +0100
+***************
+*** 507,512 ****
+--- 507,514 ----
+  :" Check a pattern with a line break and ^ and $
+  :call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
+  :"
++ :call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
++ :"
+  :"""" Run the multi-line tests
+  :"
+  :$put ='multi-line tests'
+*** ../vim-7.4.100/src/testdir/test64.ok	2013-11-21 16:03:35.000000000 +0100
+--- src/testdir/test64.ok	2013-11-21 16:57:41.000000000 +0100
+***************
+*** 1031,1036 ****
+--- 1031,1039 ----
+  OK 0 - a\n^b$\n^c
+  OK 1 - a\n^b$\n^c
+  OK 2 - a\n^b$\n^c
++ OK 0 - \(^.\+\n\)\1
++ OK 1 - \(^.\+\n\)\1
++ OK 2 - \(^.\+\n\)\1
+  
+  <T="5">Ta 5</Title>
+  <T="7">Ac 7</Title>
+*** ../vim-7.4.100/src/version.c	2013-11-21 16:03:35.000000000 +0100
+--- src/version.c	2013-11-21 16:44:00.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     101,
+  /**/
+
+-- 
+The budget process was invented by an alien race of sadistic beings who
+resemble large cats.
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.102 b/7.4.102
new file mode 100644
index 0000000..b413413
--- /dev/null
+++ b/7.4.102
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.102
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.102
+Problem:    Crash when interrupting "z=".
+Solution:   Add safety check for word length. (Christian Brabandt, Dominique
+	    Pelle)
+Files:	    src/spell.c
+
+
+*** ../vim-7.4.101/src/spell.c	2013-11-14 03:54:02.000000000 +0100
+--- src/spell.c	2013-11-21 17:37:04.000000000 +0100
+***************
+*** 13398,13406 ****
+  
+  	/* Lookup the word "orgnr" one of the two tries. */
+  	n = 0;
+- 	wlen = 0;
+  	wordcount = 0;
+! 	for (;;)
+  	{
+  	    i = 1;
+  	    if (wordcount == orgnr && byts[n + 1] == NUL)
+--- 13398,13405 ----
+  
+  	/* Lookup the word "orgnr" one of the two tries. */
+  	n = 0;
+  	wordcount = 0;
+! 	for (wlen = 0; wlen < MAXWLEN - 3; ++wlen)
+  	{
+  	    i = 1;
+  	    if (wordcount == orgnr && byts[n + 1] == NUL)
+***************
+*** 13414,13419 ****
+--- 13413,13419 ----
+  		if (i > byts[n])	/* safety check */
+  		{
+  		    STRCPY(theword + wlen, "BAD");
++ 		    wlen += 3;
+  		    goto badword;
+  		}
+  
+***************
+*** 13426,13432 ****
+  		wordcount += wc;
+  	    }
+  
+! 	    theword[wlen++] = byts[n + i];
+  	    n = idxs[n + i];
+  	}
+  badword:
+--- 13426,13432 ----
+  		wordcount += wc;
+  	    }
+  
+! 	    theword[wlen] = byts[n + i];
+  	    n = idxs[n + i];
+  	}
+  badword:
+*** ../vim-7.4.101/src/version.c	2013-11-21 17:12:55.000000000 +0100
+--- src/version.c	2013-11-21 17:38:21.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     102,
+  /**/
+
+-- 
+Engineers will go without food and hygiene for days to solve a problem.
+(Other times just because they forgot.)
+				(Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.103 b/7.4.103
new file mode 100644
index 0000000..4dbce99
--- /dev/null
+++ b/7.4.103
@@ -0,0 +1,93 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.103
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.103
+Problem:    Dos installer uses an old way to escape spaces in the diff
+	    command.
+Solution:   Adjust the quoting to the new default shellxquote. (Ben Fritz)
+Files:	    src/dosinst.c
+
+
+*** ../vim-7.4.102/src/dosinst.c	2013-11-07 04:49:23.000000000 +0100
+--- src/dosinst.c	2013-11-21 18:12:13.000000000 +0100
+***************
+*** 1192,1214 ****
+  	fprintf(fd, "  if arg3 =~ ' ' | let arg3 = '\"' . arg3 . '\"' | endif\n");
+  
+  	/* If the path has a space:  When using cmd.exe (Win NT/2000/XP) put
+! 	 * quotes around the whole command and around the diff command.
+  	 * Otherwise put a double quote just before the space and at the
+  	 * end of the command.  Putting quotes around the whole thing
+  	 * doesn't work on Win 95/98/ME.  This is mostly guessed! */
+- 	fprintf(fd, "  let eq = ''\n");
+  	fprintf(fd, "  if $VIMRUNTIME =~ ' '\n");
+  	fprintf(fd, "    if &sh =~ '\\<cmd'\n");
+! 	fprintf(fd, "      let cmd = '\"\"' . $VIMRUNTIME . '\\diff\"'\n");
+! 	fprintf(fd, "      let eq = '\"'\n");
+  	fprintf(fd, "    else\n");
+  	fprintf(fd, "      let cmd = substitute($VIMRUNTIME, ' ', '\" ', '') . '\\diff\"'\n");
+  	fprintf(fd, "    endif\n");
+  	fprintf(fd, "  else\n");
+  	fprintf(fd, "    let cmd = $VIMRUNTIME . '\\diff'\n");
+  	fprintf(fd, "  endif\n");
+! 	fprintf(fd, "  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq\n");
+! 
+  	fprintf(fd, "endfunction\n");
+  	fprintf(fd, "\n");
+      }
+--- 1192,1220 ----
+  	fprintf(fd, "  if arg3 =~ ' ' | let arg3 = '\"' . arg3 . '\"' | endif\n");
+  
+  	/* If the path has a space:  When using cmd.exe (Win NT/2000/XP) put
+! 	 * quotes around the diff command and rely on the default value of
+!          * shellxquote to solve the quoting problem for the whole command.
+!          *
+  	 * Otherwise put a double quote just before the space and at the
+  	 * end of the command.  Putting quotes around the whole thing
+  	 * doesn't work on Win 95/98/ME.  This is mostly guessed! */
+  	fprintf(fd, "  if $VIMRUNTIME =~ ' '\n");
+  	fprintf(fd, "    if &sh =~ '\\<cmd'\n");
+! 	fprintf(fd, "      if empty(&shellxquote)\n");
+! 	fprintf(fd, "        let l:shxq_sav = ''\n");
+! 	fprintf(fd, "        set shellxquote&\n");
+! 	fprintf(fd, "      endif\n");
+! 	fprintf(fd, "      let cmd = '\"' . $VIMRUNTIME . '\\diff\"'\n");
+  	fprintf(fd, "    else\n");
+  	fprintf(fd, "      let cmd = substitute($VIMRUNTIME, ' ', '\" ', '') . '\\diff\"'\n");
+  	fprintf(fd, "    endif\n");
+  	fprintf(fd, "  else\n");
+  	fprintf(fd, "    let cmd = $VIMRUNTIME . '\\diff'\n");
+  	fprintf(fd, "  endif\n");
+! 	fprintf(fd, "  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3\n");
+! 	fprintf(fd, "  if exists('l:shxq_sav')\n");
+! 	fprintf(fd, "    let &shellxquote=l:shxq_sav\n");
+! 	fprintf(fd, "  endif\n");
+  	fprintf(fd, "endfunction\n");
+  	fprintf(fd, "\n");
+      }
+*** ../vim-7.4.102/src/version.c	2013-11-21 17:42:26.000000000 +0100
+--- src/version.c	2013-11-21 18:11:08.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     103,
+  /**/
+
+-- 
+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@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.104 b/7.4.104
new file mode 100644
index 0000000..6e51568
--- /dev/null
+++ b/7.4.104
@@ -0,0 +1,107 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.104
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.104
+Problem:    ":help s/\_" reports an internal error. (John Beckett)
+Solution:   Check for NUL and invalid character classes.
+Files:	    src/regexp_nfa.c
+
+
+*** ../vim-7.4.103/src/regexp_nfa.c	2013-11-21 16:03:35.000000000 +0100
+--- src/regexp_nfa.c	2013-11-28 14:05:34.000000000 +0100
+***************
+*** 239,245 ****
+--- 239,247 ----
+      NFA_UPPER, NFA_NUPPER
+  };
+  
++ static char_u e_nul_found[] = N_("E865: (NFA) Regexp end encountered prematurely");
+  static char_u e_misplaced[] = N_("E866: (NFA regexp) Misplaced %c");
++ static char_u e_ill_char_class[] = N_("E877: (NFA regexp) Invalid character class: %ld");
+  
+  /* NFA regexp \ze operator encountered. */
+  static int nfa_has_zend;
+***************
+*** 1137,1143 ****
+      switch (c)
+      {
+  	case NUL:
+! 	    EMSG_RET_FAIL(_("E865: (NFA) Regexp end encountered prematurely"));
+  
+  	case Magic('^'):
+  	    EMIT(NFA_BOL);
+--- 1139,1145 ----
+      switch (c)
+      {
+  	case NUL:
+! 	    EMSG_RET_FAIL(_(e_nul_found));
+  
+  	case Magic('^'):
+  	    EMIT(NFA_BOL);
+***************
+*** 1160,1165 ****
+--- 1162,1170 ----
+  
+  	case Magic('_'):
+  	    c = no_Magic(getchr());
++ 	    if (c == NUL)
++ 		EMSG_RET_FAIL(_(e_nul_found));
++ 
+  	    if (c == '^')	/* "\_^" is start-of-line */
+  	    {
+  		EMIT(NFA_BOL);
+***************
+*** 1216,1221 ****
+--- 1221,1232 ----
+  	    p = vim_strchr(classchars, no_Magic(c));
+  	    if (p == NULL)
+  	    {
++ 		if (extra == NFA_ADD_NL)
++ 		{
++ 		    EMSGN(_(e_ill_char_class), c);
++ 		    rc_did_emsg = TRUE;
++ 		    return FAIL;
++ 		}
+  		EMSGN("INTERNAL: Unknown character class char: %ld", c);
+  		return FAIL;
+  	    }
+***************
+*** 4733,4739 ****
+  
+  	default:
+  	    /* should not be here :P */
+! 	    EMSGN("E877: (NFA regexp) Invalid character class: %ld", class);
+  	    return FAIL;
+      }
+      return FAIL;
+--- 4744,4750 ----
+  
+  	default:
+  	    /* should not be here :P */
+! 	    EMSGN(_(e_ill_char_class), class);
+  	    return FAIL;
+      }
+      return FAIL;
+*** ../vim-7.4.103/src/version.c	2013-11-21 18:13:26.000000000 +0100
+--- src/version.c	2013-11-28 14:06:59.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     104,
+  /**/
+
+-- 
+Everybody wants to go to heaven, but nobody wants to die.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.105 b/7.4.105
new file mode 100644
index 0000000..f219ac6
--- /dev/null
+++ b/7.4.105
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.105
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.105
+Problem:    Completing a tag pattern may give an error for invalid pattern.
+Solution:   Suppress the error, just return no matches.
+Files:	    src/tag.c
+
+
+*** ../vim-7.4.104/src/tag.c	2013-11-08 04:30:06.000000000 +0100
+--- src/tag.c	2013-11-28 14:27:38.000000000 +0100
+***************
+*** 1326,1331 ****
+--- 1326,1332 ----
+      int		match_no_ic = 0;/* matches with rm_ic == FALSE */
+      int		match_re;	/* match with regexp */
+      int		matchoff = 0;
++     int		save_emsg_off;
+  
+  #ifdef FEAT_EMACS_TAGS
+      /*
+***************
+*** 1442,1448 ****
+--- 1443,1452 ----
+      if (p_tl != 0 && orgpat.len > p_tl)		/* adjust for 'taglength' */
+  	orgpat.len = p_tl;
+  
++     save_emsg_off = emsg_off;
++     emsg_off = TRUE;  /* don't want error for invalid RE here */
+      prepare_pats(&orgpat, has_re);
++     emsg_off = save_emsg_off;
+      if (has_re && orgpat.regmatch.regprog == NULL)
+  	goto findtag_end;
+  
+*** ../vim-7.4.104/src/version.c	2013-11-28 14:20:11.000000000 +0100
+--- src/version.c	2013-11-28 14:30:35.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     105,
+  /**/
+
+-- 
+The goal of science is to build better mousetraps.
+The goal of nature is to build better mice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.106 b/7.4.106
new file mode 100644
index 0000000..13ab0b1
--- /dev/null
+++ b/7.4.106
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.106
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.106
+Problem:    Can't build with Ruby using Cygwin.
+Solution:   Fix library name in makefile. (Steve Hall)
+Files:	    src/Make_cyg.mak
+
+
+*** ../vim-7.4.105/src/Make_cyg.mak	2013-09-19 20:48:59.000000000 +0200
+--- src/Make_cyg.mak	2013-11-28 16:29:52.000000000 +0100
+***************
+*** 1,6 ****
+  #
+  # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp.  Last Change: 2013 Sep 19
+  #
+  # Also read INSTALLpc.txt!
+  #
+--- 1,6 ----
+  #
+  # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp.  Last Change: 2013 Nov 28
+  #
+  # Also read INSTALLpc.txt!
+  #
+***************
+*** 272,278 ****
+  DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
+  DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
+  else
+! EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME).lib
+  endif
+  endif
+  
+--- 272,278 ----
+  DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
+  DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
+  else
+! EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME)
+  endif
+  endif
+  
+*** ../vim-7.4.105/src/version.c	2013-11-28 14:36:24.000000000 +0100
+--- src/version.c	2013-11-28 16:29:25.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     106,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+7. You finally do take that vacation, but only after buying a cellular modem
+   and a laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.107 b/7.4.107
new file mode 100644
index 0000000..5ac7189
--- /dev/null
+++ b/7.4.107
@@ -0,0 +1,639 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.107
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.107
+Problem:    Python: When vim.eval() encounters a Vim error, a try/catch in the
+	    Python code doesn't catch it. (Yggdroot Chen)
+Solution:   Throw exceptions on errors in vim.eval(). (ZyX)
+Files:	    src/ex_eval.c, src/if_py_both.h, src/proto/ex_eval.pro,
+	    src/testdir/test86.in, src/testdir/test86.ok,
+	    src/testdir/test87.in, src/testdir/test87.ok
+
+
+*** ../vim-7.4.106/src/ex_eval.c	2013-06-08 15:50:28.000000000 +0200
+--- src/ex_eval.c	2013-11-28 16:59:09.000000000 +0100
+***************
+*** 321,326 ****
+--- 321,337 ----
+  }
+  
+  /*
++  * Free global "*msg_list" and the messages it contains, then set "*msg_list"
++  * to NULL.
++  */
++     void
++ free_global_msglist()
++ {
++     free_msglist(*msg_list);
++     *msg_list = NULL;
++ }
++ 
++ /*
+   * Throw the message specified in the call to cause_errthrow() above as an
+   * error exception.  If cstack is NULL, postpone the throw until do_cmdline()
+   * has returned (see do_one_cmd()).
+***************
+*** 410,475 ****
+      return TRUE;
+  }
+  
+- 
+  /*
+!  * Throw a new exception.  Return FAIL when out of memory or it was tried to
+!  * throw an illegal user exception.  "value" is the exception string for a user
+!  * or interrupt exception, or points to a message list in case of an error
+!  * exception.
+   */
+!     static int
+! throw_exception(value, type, cmdname)
+      void	*value;
+      int		type;
+      char_u	*cmdname;
+  {
+!     except_T	*excp;
+!     char_u	*p, *mesg, *val;
+      int		cmdlen;
+! 
+!     /*
+!      * Disallow faking Interrupt or error exceptions as user exceptions.  They
+!      * would be treated differently from real interrupt or error exceptions when
+!      * no active try block is found, see do_cmdline().
+!      */
+!     if (type == ET_USER)
+!     {
+! 	if (STRNCMP((char_u *)value, "Vim", 3) == 0 &&
+! 		(((char_u *)value)[3] == NUL || ((char_u *)value)[3] == ':' ||
+! 		 ((char_u *)value)[3] == '('))
+! 	{
+! 	    EMSG(_("E608: Cannot :throw exceptions with 'Vim' prefix"));
+! 	    goto fail;
+! 	}
+!     }
+! 
+!     excp = (except_T *)alloc((unsigned)sizeof(except_T));
+!     if (excp == NULL)
+! 	goto nomem;
+  
+      if (type == ET_ERROR)
+      {
+! 	/* Store the original message and prefix the exception value with
+! 	 * "Vim:" or, if a command name is given, "Vim(cmdname):". */
+! 	excp->messages = (struct msglist *)value;
+! 	mesg = excp->messages->throw_msg;
+  	if (cmdname != NULL && *cmdname != NUL)
+  	{
+  	    cmdlen = (int)STRLEN(cmdname);
+! 	    excp->value = vim_strnsave((char_u *)"Vim(",
+  					   4 + cmdlen + 2 + (int)STRLEN(mesg));
+! 	    if (excp->value == NULL)
+! 		goto nomem;
+! 	    STRCPY(&excp->value[4], cmdname);
+! 	    STRCPY(&excp->value[4 + cmdlen], "):");
+! 	    val = excp->value + 4 + cmdlen + 2;
+  	}
+  	else
+  	{
+! 	    excp->value = vim_strnsave((char_u *)"Vim:", 4 + (int)STRLEN(mesg));
+! 	    if (excp->value == NULL)
+! 		goto nomem;
+! 	    val = excp->value + 4;
+  	}
+  
+  	/* msg_add_fname may have been used to prefix the message with a file
+--- 421,461 ----
+      return TRUE;
+  }
+  
+  /*
+!  * Get an exception message that is to be stored in current_exception->value.
+   */
+!     char_u *
+! get_exception_string(value, type, cmdname, should_free)
+      void	*value;
+      int		type;
+      char_u	*cmdname;
++     int		*should_free;
+  {
+!     char_u	*ret, *mesg;
+      int		cmdlen;
+!     char_u	*p, *val;
+  
+      if (type == ET_ERROR)
+      {
+! 	*should_free = FALSE;
+! 	mesg = ((struct msglist *)value)->throw_msg;
+  	if (cmdname != NULL && *cmdname != NUL)
+  	{
+  	    cmdlen = (int)STRLEN(cmdname);
+! 	    ret = vim_strnsave((char_u *)"Vim(",
+  					   4 + cmdlen + 2 + (int)STRLEN(mesg));
+! 	    if (ret == NULL)
+! 		return ret;
+! 	    STRCPY(&ret[4], cmdname);
+! 	    STRCPY(&ret[4 + cmdlen], "):");
+! 	    val = ret + 4 + cmdlen + 2;
+  	}
+  	else
+  	{
+! 	    ret = vim_strnsave((char_u *)"Vim:", 4 + (int)STRLEN(mesg));
+! 	    if (ret == NULL)
+! 		return ret;
+! 	    val = ret + 4;
+  	}
+  
+  	/* msg_add_fname may have been used to prefix the message with a file
+***************
+*** 506,519 ****
+  	}
+      }
+      else
+! 	excp->value = value;
+  
+      excp->type = type;
+      excp->throw_name = vim_strsave(sourcing_name == NULL
+  					      ? (char_u *)"" : sourcing_name);
+      if (excp->throw_name == NULL)
+      {
+! 	if (type == ET_ERROR)
+  	    vim_free(excp->value);
+  	goto nomem;
+      }
+--- 492,556 ----
+  	}
+      }
+      else
+!     {
+! 	*should_free = FALSE;
+! 	ret = (char_u *) value;
+!     }
+! 
+!     return ret;
+! }
+! 
+! 
+! /*
+!  * Throw a new exception.  Return FAIL when out of memory or it was tried to
+!  * throw an illegal user exception.  "value" is the exception string for a
+!  * user or interrupt exception, or points to a message list in case of an
+!  * error exception.
+!  */
+!     static int
+! throw_exception(value, type, cmdname)
+!     void	*value;
+!     int		type;
+!     char_u	*cmdname;
+! {
+!     except_T	*excp;
+!     int		should_free;
+! 
+!     /*
+!      * Disallow faking Interrupt or error exceptions as user exceptions.  They
+!      * would be treated differently from real interrupt or error exceptions
+!      * when no active try block is found, see do_cmdline().
+!      */
+!     if (type == ET_USER)
+!     {
+! 	if (STRNCMP((char_u *)value, "Vim", 3) == 0
+! 		&& (((char_u *)value)[3] == NUL || ((char_u *)value)[3] == ':'
+! 		    || ((char_u *)value)[3] == '('))
+! 	{
+! 	    EMSG(_("E608: Cannot :throw exceptions with 'Vim' prefix"));
+! 	    goto fail;
+! 	}
+!     }
+! 
+!     excp = (except_T *)alloc((unsigned)sizeof(except_T));
+!     if (excp == NULL)
+! 	goto nomem;
+! 
+!     if (type == ET_ERROR)
+! 	/* Store the original message and prefix the exception value with
+! 	 * "Vim:" or, if a command name is given, "Vim(cmdname):". */
+! 	excp->messages = (struct msglist *)value;
+! 
+!     excp->value = get_exception_string(value, type, cmdname, &should_free);
+!     if (excp->value == NULL && should_free)
+! 	goto nomem;
+  
+      excp->type = type;
+      excp->throw_name = vim_strsave(sourcing_name == NULL
+  					      ? (char_u *)"" : sourcing_name);
+      if (excp->throw_name == NULL)
+      {
+! 	if (should_free)
+  	    vim_free(excp->value);
+  	goto nomem;
+      }
+***************
+*** 2033,2042 ****
+  	/* If an error was about to be converted to an exception when
+  	 * enter_cleanup() was called, free the message list. */
+  	if (msg_list != NULL)
+! 	{
+! 	    free_msglist(*msg_list);
+! 	    *msg_list = NULL;
+! 	}
+      }
+  
+      /*
+--- 2070,2076 ----
+  	/* If an error was about to be converted to an exception when
+  	 * enter_cleanup() was called, free the message list. */
+  	if (msg_list != NULL)
+! 	    free_global_msglist();
+      }
+  
+      /*
+*** ../vim-7.4.106/src/if_py_both.h	2013-11-11 01:05:43.000000000 +0100
+--- src/if_py_both.h	2013-11-28 17:00:22.000000000 +0100
+***************
+*** 566,571 ****
+--- 566,593 ----
+  	PyErr_SetNone(PyExc_KeyboardInterrupt);
+  	return -1;
+      }
++     else if (msg_list != NULL && *msg_list != NULL)
++     {
++ 	int	should_free;
++ 	char_u	*msg;
++ 
++ 	msg = get_exception_string(*msg_list, ET_ERROR, NULL, &should_free);
++ 
++ 	if (msg == NULL)
++ 	{
++ 	    PyErr_NoMemory();
++ 	    return -1;
++ 	}
++ 
++ 	PyErr_SetVim((char *) msg);
++ 
++ 	free_global_msglist();
++ 
++ 	if (should_free)
++ 	    vim_free(msg);
++ 
++ 	return -1;
++     }
+      else if (!did_throw)
+  	return (PyErr_Occurred() ? -1 : 0);
+      /* Python exception is preferred over vim one; unlikely to occur though */
+*** ../vim-7.4.106/src/proto/ex_eval.pro	2013-08-10 13:37:10.000000000 +0200
+--- src/proto/ex_eval.pro	2013-11-28 16:56:33.000000000 +0100
+***************
+*** 4,11 ****
+--- 4,13 ----
+  int should_abort __ARGS((int retcode));
+  int aborted_in_try __ARGS((void));
+  int cause_errthrow __ARGS((char_u *mesg, int severe, int *ignore));
++ void free_global_msglist __ARGS((void));
+  void do_errthrow __ARGS((struct condstack *cstack, char_u *cmdname));
+  int do_intthrow __ARGS((struct condstack *cstack));
++ char_u *get_exception_string __ARGS((void *value, int type, char_u *cmdname, int *should_free));
+  void discard_current_exception __ARGS((void));
+  void report_make_pending __ARGS((int pending, void *value));
+  void report_resume_pending __ARGS((int pending, void *value));
+*** ../vim-7.4.106/src/testdir/test86.in	2013-11-11 01:05:43.000000000 +0100
+--- src/testdir/test86.in	2013-11-28 16:41:01.000000000 +0100
+***************
+*** 179,184 ****
+--- 179,210 ----
+  :unlockvar! l
+  :"
+  :" Function calls
++ py << EOF
++ import sys
++ def ee(expr, g=globals(), l=locals()):
++     try:
++         exec(expr, g, l)
++     except:
++         ei = sys.exc_info()
++         msg = sys.exc_info()[0].__name__ + ':' + repr(sys.exc_info()[1].args)
++         msg = msg.replace('TypeError:(\'argument 1 ', 'TypeError:(\'')
++         if expr.find('None') > -1:
++             msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
++                               'TypeError:("\'NoneType\' object is not iterable",)')
++         if expr.find('FailingNumber') > -1:
++             msg = msg.replace(', not \'FailingNumber\'', '').replace('"', '\'')
++             msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
++                               'TypeError:("\'FailingNumber\' object is not iterable",)')
++         if msg.find('(\'\'') > -1 or msg.find('(\'can\'t') > -1:
++             msg = msg.replace('(\'', '("').replace('\',)', '",)')
++         if expr == 'fd(self=[])':
++             # HACK: PyMapping_Check changed meaning
++             msg = msg.replace('AttributeError:(\'keys\',)',
++                               'TypeError:(\'unable to convert list to vim dictionary\',)')
++         vim.current.buffer.append(expr + ':' + msg)
++     else:
++         vim.current.buffer.append(expr + ':NOT FAILED')
++ EOF
+  :fun New(...)
+  :   return ['NewStart']+a:000+['NewEnd']
+  :endfun
+***************
+*** 193,210 ****
+  :$put =string(l)
+  :py l.extend([l[0].name])
+  :$put =string(l)
+! :try
+! :   py l[1](1, 2, 3)
+! :catch
+! :   $put =v:exception[:16]
+! :endtry
+  :py f=l[0]
+  :delfunction New
+! :try
+! :   py f(1, 2, 3)
+! :catch
+! :   $put =v:exception[:16]
+! :endtry
+  :if has('float')
+  :   let l=[0.0]
+  :   py l=vim.bindeval('l')
+--- 219,228 ----
+  :$put =string(l)
+  :py l.extend([l[0].name])
+  :$put =string(l)
+! :py ee('l[1](1, 2, 3)')
+  :py f=l[0]
+  :delfunction New
+! :py ee('f(1, 2, 3)')
+  :if has('float')
+  :   let l=[0.0]
+  :   py l=vim.bindeval('l')
+***************
+*** 216,222 ****
+  :let messages=[]
+  :delfunction DictNew
+  py <<EOF
+- import sys
+  d=vim.bindeval('{}')
+  m=vim.bindeval('messages')
+  def em(expr, g=globals(), l=locals()):
+--- 234,239 ----
+***************
+*** 323,328 ****
+--- 340,346 ----
+  :py l[0] = t.t > 8  # check if the background thread is working
+  :py del time
+  :py del threading
++ :py del t
+  :$put =string(l)
+  :"
+  :" settrace
+***************
+*** 882,910 ****
+  :fun D()
+  :endfun
+  py << EOF
+- def ee(expr, g=globals(), l=locals()):
+-     try:
+-         exec(expr, g, l)
+-     except:
+-         ei = sys.exc_info()
+-         msg = sys.exc_info()[0].__name__ + ':' + repr(sys.exc_info()[1].args)
+-         msg = msg.replace('TypeError:(\'argument 1 ', 'TypeError:(\'')
+-         if expr.find('None') > -1:
+-             msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
+-                               'TypeError:("\'NoneType\' object is not iterable",)')
+-         if expr.find('FailingNumber') > -1:
+-             msg = msg.replace(', not \'FailingNumber\'', '').replace('"', '\'')
+-             msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
+-                               'TypeError:("\'FailingNumber\' object is not iterable",)')
+-         if msg.find('(\'\'') > -1 or msg.find('(\'can\'t') > -1:
+-             msg = msg.replace('(\'', '("').replace('\',)', '",)')
+-         if expr == 'fd(self=[])':
+-             # HACK: PyMapping_Check changed meaning
+-             msg = msg.replace('AttributeError:(\'keys\',)',
+-                               'TypeError:(\'unable to convert list to vim dictionary\',)')
+-         cb.append(expr + ':' + msg)
+-     else:
+-         cb.append(expr + ':NOT FAILED')
+  d = vim.Dictionary()
+  ned = vim.Dictionary(foo='bar', baz='abcD')
+  dl = vim.Dictionary(a=1)
+--- 900,905 ----
+***************
+*** 1276,1281 ****
+--- 1271,1277 ----
+  ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
+  ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
+  ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
++ ee('vim.eval("xxx_unknown_function_xxx()")')
+  ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
+  del Exe
+  EOF
+*** ../vim-7.4.106/src/testdir/test86.ok	2013-11-11 01:05:43.000000000 +0100
+--- src/testdir/test86.ok	2013-11-28 16:41:01.000000000 +0100
+***************
+*** 53,60 ****
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
+! Vim(python):E725:
+! Vim(python):E117:
+  [0.0, 0.0]
+  KeyError
+  TypeError
+--- 53,60 ----
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
+! l[1](1, 2, 3):error:('Vim:E725: Calling dict function without Dictionary: DictNew',)
+! f(1, 2, 3):error:('Vim:E117: Unknown function: New',)
+  [0.0, 0.0]
+  KeyError
+  TypeError
+***************
+*** 1197,1202 ****
+--- 1197,1203 ----
+  vim.eval("Exe('throw ''ghi''')"):error:('ghi',)
+  vim.eval("Exe('echoerr ''jkl''')"):error:('Vim(echoerr):jkl',)
+  vim.eval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)
++ vim.eval("xxx_unknown_function_xxx()"):error:('Vim:E117: Unknown function: xxx_unknown_function_xxx',)
+  vim.bindeval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)
+  Caught KeyboardInterrupt
+  Running :put
+*** ../vim-7.4.106/src/testdir/test87.in	2013-11-11 01:05:43.000000000 +0100
+--- src/testdir/test87.in	2013-11-28 16:41:01.000000000 +0100
+***************
+*** 172,177 ****
+--- 172,207 ----
+  :unlockvar! l
+  :"
+  :" Function calls
++ py3 << EOF
++ import sys
++ import re
++ 
++ py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional argument but (\d+) were given$')
++ 
++ def ee(expr, g=globals(), l=locals()):
++     cb = vim.current.buffer
++     try:
++         try:
++             exec(expr, g, l)
++         except Exception as e:
++             if sys.version_info >= (3, 3) and e.__class__ is AttributeError and str(e).find('has no attribute')>=0 and not str(e).startswith("'vim."):
++                 cb.append(expr + ':' + repr((e.__class__, AttributeError(str(e)[str(e).rfind(" '") + 2:-1]))))
++             elif sys.version_info >= (3, 3) and e.__class__ is ImportError and str(e).find('No module named \'') >= 0:
++                 cb.append(expr + ':' + repr((e.__class__, ImportError(str(e).replace("'", '')))))
++             elif sys.version_info >= (3, 3) and e.__class__ is TypeError:
++                 m = py33_type_error_pattern.search(str(e))
++                 if m:
++                     msg = '__call__() takes exactly {0} positional argument ({1} given)'.format(m.group(1), m.group(2))
++                     cb.append(expr + ':' + repr((e.__class__, TypeError(msg))))
++                 else:
++                     cb.append(expr + ':' + repr((e.__class__, e)))
++             else:
++                 cb.append(expr + ':' + repr((e.__class__, e)))
++         else:
++             cb.append(expr + ':NOT FAILED')
++     except Exception as e:
++         cb.append(expr + '::' + repr((e.__class__, e)))
++ EOF
+  :fun New(...)
+  :   return ['NewStart']+a:000+['NewEnd']
+  :endfun
+***************
+*** 186,203 ****
+  :$put =string(l)
+  :py3 l+=[l[0].name]
+  :$put =string(l)
+! :try
+! :   py3 l[1](1, 2, 3)
+! :catch
+! :   $put =v:exception[:13]
+! :endtry
+  :py3 f=l[0]
+  :delfunction New
+! :try
+! :   py3 f(1, 2, 3)
+! :catch
+! :   $put =v:exception[:13]
+! :endtry
+  :if has('float')
+  :   let l=[0.0]
+  :   py3 l=vim.bindeval('l')
+--- 216,225 ----
+  :$put =string(l)
+  :py3 l+=[l[0].name]
+  :$put =string(l)
+! :py3 ee('l[1](1, 2, 3)')
+  :py3 f=l[0]
+  :delfunction New
+! :py3 ee('f(1, 2, 3)')
+  :if has('float')
+  :   let l=[0.0]
+  :   py3 l=vim.bindeval('l')
+***************
+*** 315,320 ****
+--- 337,343 ----
+  :py3 l[0] = t.t > 8  # check if the background thread is working
+  :py3 del time
+  :py3 del threading
++ :py3 del t
+  :$put =string(l)
+  :"
+  :" settrace
+***************
+*** 829,861 ****
+  :fun D()
+  :endfun
+  py3 << EOF
+- import re
+- 
+- py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional argument but (\d+) were given$')
+- 
+- def ee(expr, g=globals(), l=locals()):
+-     try:
+-         try:
+-             exec(expr, g, l)
+-         except Exception as e:
+-             if sys.version_info >= (3, 3) and e.__class__ is AttributeError and str(e).find('has no attribute')>=0 and not str(e).startswith("'vim."):
+-                 cb.append(expr + ':' + repr((e.__class__, AttributeError(str(e)[str(e).rfind(" '") + 2:-1]))))
+-             elif sys.version_info >= (3, 3) and e.__class__ is ImportError and str(e).find('No module named \'') >= 0:
+-                 cb.append(expr + ':' + repr((e.__class__, ImportError(str(e).replace("'", '')))))
+-             elif sys.version_info >= (3, 3) and e.__class__ is TypeError:
+-                 m = py33_type_error_pattern.search(str(e))
+-                 if m:
+-                     msg = '__call__() takes exactly {0} positional argument ({1} given)'.format(m.group(1), m.group(2))
+-                     cb.append(expr + ':' + repr((e.__class__, TypeError(msg))))
+-                 else:
+-                     cb.append(expr + ':' + repr((e.__class__, e)))
+-             else:
+-                 cb.append(expr + ':' + repr((e.__class__, e)))
+-         else:
+-             cb.append(expr + ':NOT FAILED')
+-     except Exception as e:
+-         cb.append(expr + '::' + repr((e.__class__, e)))
+- 
+  d = vim.Dictionary()
+  ned = vim.Dictionary(foo='bar', baz='abcD')
+  dl = vim.Dictionary(a=1)
+--- 852,857 ----
+***************
+*** 1227,1232 ****
+--- 1223,1229 ----
+  ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
+  ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
+  ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
++ ee('vim.eval("xxx_unknown_function_xxx()")')
+  ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
+  del Exe
+  EOF
+*** ../vim-7.4.106/src/testdir/test87.ok	2013-11-11 01:05:43.000000000 +0100
+--- src/testdir/test87.ok	2013-11-28 16:41:01.000000000 +0100
+***************
+*** 53,60 ****
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
+! Vim(py3):E725:
+! Vim(py3):E117:
+  [0.0, 0.0]
+  KeyError
+  TypeError
+--- 53,60 ----
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
+  [function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
+! l[1](1, 2, 3):(<class 'vim.error'>, error('Vim:E725: Calling dict function without Dictionary: DictNew',))
+! f(1, 2, 3):(<class 'vim.error'>, error('Vim:E117: Unknown function: New',))
+  [0.0, 0.0]
+  KeyError
+  TypeError
+***************
+*** 1186,1191 ****
+--- 1186,1192 ----
+  vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
+  vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkl',))
+  vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
++ vim.eval("xxx_unknown_function_xxx()"):(<class 'vim.error'>, error('Vim:E117: Unknown function: xxx_unknown_function_xxx',))
+  vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
+  Caught KeyboardInterrupt
+  Running :put
+*** ../vim-7.4.106/src/version.c	2013-11-28 16:32:34.000000000 +0100
+--- src/version.c	2013-11-28 16:41:43.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     107,
+  /**/
+
+-- 
+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@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.108 b/7.4.108
new file mode 100644
index 0000000..0542347
--- /dev/null
+++ b/7.4.108
@@ -0,0 +1,215 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.108
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.108
+Problem:    "zG" and "zW" leave temp files around on MS-Windows.
+Solution:   Delete the temp files when exiting. (Ken Takata)
+Files:	    src/memline.c, src/proto/spell.pro, src/spell.c
+
+
+*** ../vim-7.4.107/src/memline.c	2013-11-04 02:53:46.000000000 +0100
+--- src/memline.c	2013-11-28 17:27:06.000000000 +0100
+***************
+*** 841,848 ****
+      for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+  	ml_close(buf, del_file && ((buf->b_flags & BF_PRESERVED) == 0
+  				 || vim_strchr(p_cpo, CPO_PRESERVE) == NULL));
+  #ifdef TEMPDIRNAMES
+!     vim_deltempdir();	    /* delete created temp directory */
+  #endif
+  }
+  
+--- 841,851 ----
+      for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+  	ml_close(buf, del_file && ((buf->b_flags & BF_PRESERVED) == 0
+  				 || vim_strchr(p_cpo, CPO_PRESERVE) == NULL));
++ #ifdef FEAT_SPELL
++     spell_delete_wordlist();	/* delete the internal wordlist */
++ #endif
+  #ifdef TEMPDIRNAMES
+!     vim_deltempdir();		/* delete created temp directory */
+  #endif
+  }
+  
+*** ../vim-7.4.107/src/proto/spell.pro	2013-08-10 13:37:26.000000000 +0200
+--- src/proto/spell.pro	2013-11-28 17:25:59.000000000 +0100
+***************
+*** 3,8 ****
+--- 3,9 ----
+  int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
+  void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
+  char_u *did_set_spelllang __ARGS((win_T *wp));
++ void spell_delete_wordlist __ARGS((void));
+  void spell_free_all __ARGS((void));
+  void spell_reload __ARGS((void));
+  int spell_check_msm __ARGS((void));
+*** ../vim-7.4.107/src/spell.c	2013-11-21 17:42:26.000000000 +0100
+--- src/spell.c	2013-11-28 17:25:59.000000000 +0100
+***************
+*** 2180,2188 ****
+      char_u	*endp;
+      hlf_T	attr;
+      int		len;
+! # ifdef FEAT_SYN_HL
+      int		has_syntax = syntax_present(wp);
+! # endif
+      int		col;
+      int		can_spell;
+      char_u	*buf = NULL;
+--- 2180,2188 ----
+      char_u	*endp;
+      hlf_T	attr;
+      int		len;
+! #ifdef FEAT_SYN_HL
+      int		has_syntax = syntax_present(wp);
+! #endif
+      int		col;
+      int		can_spell;
+      char_u	*buf = NULL;
+***************
+*** 2280,2286 ****
+  						     : p - buf)
+  						  > wp->w_cursor.col)))
+  		    {
+! # ifdef FEAT_SYN_HL
+  			if (has_syntax)
+  			{
+  			    col = (int)(p - buf);
+--- 2280,2286 ----
+  						     : p - buf)
+  						  > wp->w_cursor.col)))
+  		    {
+! #ifdef FEAT_SYN_HL
+  			if (has_syntax)
+  			{
+  			    col = (int)(p - buf);
+***************
+*** 4701,4707 ****
+      return flags;
+  }
+  
+! # if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO)
+  /*
+   * Free all languages.
+   */
+--- 4701,4725 ----
+      return flags;
+  }
+  
+! /*
+!  * Delete the internal wordlist and its .spl file.
+!  */
+!     void
+! spell_delete_wordlist()
+! {
+!     char_u	fname[MAXPATHL];
+! 
+!     if (int_wordlist != NULL)
+!     {
+! 	mch_remove(int_wordlist);
+! 	int_wordlist_spl(fname);
+! 	mch_remove(fname);
+! 	vim_free(int_wordlist);
+! 	int_wordlist = NULL;
+!     }
+! }
+! 
+! #if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO)
+  /*
+   * Free all languages.
+   */
+***************
+*** 4710,4716 ****
+  {
+      slang_T	*slang;
+      buf_T	*buf;
+-     char_u	fname[MAXPATHL];
+  
+      /* Go through all buffers and handle 'spelllang'. <VN> */
+      for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+--- 4728,4733 ----
+***************
+*** 4723,4746 ****
+  	slang_free(slang);
+      }
+  
+!     if (int_wordlist != NULL)
+!     {
+! 	/* Delete the internal wordlist and its .spl file */
+! 	mch_remove(int_wordlist);
+! 	int_wordlist_spl(fname);
+! 	mch_remove(fname);
+! 	vim_free(int_wordlist);
+! 	int_wordlist = NULL;
+!     }
+  
+      vim_free(repl_to);
+      repl_to = NULL;
+      vim_free(repl_from);
+      repl_from = NULL;
+  }
+! # endif
+  
+! # if defined(FEAT_MBYTE) || defined(PROTO)
+  /*
+   * Clear all spelling tables and reload them.
+   * Used after 'encoding' is set and when ":mkspell" was used.
+--- 4740,4755 ----
+  	slang_free(slang);
+      }
+  
+!     spell_delete_wordlist();
+  
+      vim_free(repl_to);
+      repl_to = NULL;
+      vim_free(repl_from);
+      repl_from = NULL;
+  }
+! #endif
+  
+! #if defined(FEAT_MBYTE) || defined(PROTO)
+  /*
+   * Clear all spelling tables and reload them.
+   * Used after 'encoding' is set and when ":mkspell" was used.
+***************
+*** 4773,4779 ****
+  	}
+      }
+  }
+! # endif
+  
+  /*
+   * Reload the spell file "fname" if it's loaded.
+--- 4782,4788 ----
+  	}
+      }
+  }
+! #endif
+  
+  /*
+   * Reload the spell file "fname" if it's loaded.
+*** ../vim-7.4.107/src/version.c	2013-11-28 17:04:38.000000000 +0100
+--- src/version.c	2013-11-28 17:26:31.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     108,
+  /**/
+
+-- 
+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@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.109 b/7.4.109
new file mode 100644
index 0000000..70ed86d
--- /dev/null
+++ b/7.4.109
@@ -0,0 +1,123 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.109
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.109
+Problem:    ColorScheme autocommand matches with the current buffer name.
+Solution:   Match with the colorscheme name. (Christian Brabandt)
+Files:	    runtime/doc/autocmd.txt, src/fileio.c, src/syntax.c
+
+
+*** ../vim-7.4.108/runtime/doc/autocmd.txt	2013-08-10 13:24:52.000000000 +0200
+--- runtime/doc/autocmd.txt	2013-11-28 18:44:20.000000000 +0100
+***************
+*** 480,485 ****
+--- 480,491 ----
+  				|cmdwin-char|
+  							*ColorScheme*
+  ColorScheme			After loading a color scheme. |:colorscheme|
++ 				The pattern is matched against the
++ 				colorscheme name. <afile> can be used for the
++ 				name of the actual file where this option was
++ 				set, and <amatch> for the new colorscheme
++ 				name.
++ 
+  
+  							*CompleteDone*
+  CompleteDone			After Insert mode completion is done.  Either
+*** ../vim-7.4.108/src/fileio.c	2013-11-12 18:09:20.000000000 +0100
+--- src/fileio.c	2013-11-28 18:44:20.000000000 +0100
+***************
+*** 9330,9336 ****
+       */
+      if (fname_io == NULL)
+      {
+! 	if (fname != NULL && *fname != NUL)
+  	    autocmd_fname = fname;
+  	else if (buf != NULL)
+  	    autocmd_fname = buf->b_ffname;
+--- 9330,9338 ----
+       */
+      if (fname_io == NULL)
+      {
+! 	if (event == EVENT_COLORSCHEME)
+! 	    autocmd_fname = NULL;
+! 	else if (fname != NULL && *fname != NUL)
+  	    autocmd_fname = fname;
+  	else if (buf != NULL)
+  	    autocmd_fname = buf->b_ffname;
+***************
+*** 9383,9396 ****
+      else
+      {
+  	sfname = vim_strsave(fname);
+! 	/* Don't try expanding FileType, Syntax, FuncUndefined, WindowID or
+! 	 * QuickFixCmd* */
+  	if (event == EVENT_FILETYPE
+  		|| event == EVENT_SYNTAX
+  		|| event == EVENT_FUNCUNDEFINED
+  		|| event == EVENT_REMOTEREPLY
+  		|| event == EVENT_SPELLFILEMISSING
+  		|| event == EVENT_QUICKFIXCMDPRE
+  		|| event == EVENT_QUICKFIXCMDPOST)
+  	    fname = vim_strsave(fname);
+  	else
+--- 9385,9399 ----
+      else
+      {
+  	sfname = vim_strsave(fname);
+! 	/* Don't try expanding FileType, Syntax, FuncUndefined, WindowID,
+! 	 * ColorScheme or QuickFixCmd* */
+  	if (event == EVENT_FILETYPE
+  		|| event == EVENT_SYNTAX
+  		|| event == EVENT_FUNCUNDEFINED
+  		|| event == EVENT_REMOTEREPLY
+  		|| event == EVENT_SPELLFILEMISSING
+  		|| event == EVENT_QUICKFIXCMDPRE
++ 		|| event == EVENT_COLORSCHEME
+  		|| event == EVENT_QUICKFIXCMDPOST)
+  	    fname = vim_strsave(fname);
+  	else
+*** ../vim-7.4.108/src/syntax.c	2013-06-08 16:10:08.000000000 +0200
+--- src/syntax.c	2013-11-28 18:44:20.000000000 +0100
+***************
+*** 7071,7077 ****
+  	retval = source_runtime(buf, FALSE);
+  	vim_free(buf);
+  #ifdef FEAT_AUTOCMD
+! 	apply_autocmds(EVENT_COLORSCHEME, NULL, NULL, FALSE, curbuf);
+  #endif
+      }
+      recursive = FALSE;
+--- 7071,7077 ----
+  	retval = source_runtime(buf, FALSE);
+  	vim_free(buf);
+  #ifdef FEAT_AUTOCMD
+! 	apply_autocmds(EVENT_COLORSCHEME, name, curbuf->b_fname, FALSE, curbuf);
+  #endif
+      }
+      recursive = FALSE;
+*** ../vim-7.4.108/src/version.c	2013-11-28 17:41:41.000000000 +0100
+--- src/version.c	2013-11-28 18:48:42.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     109,
+  /**/
+
+-- 
+"How is your new girlfriend?"
+"90-60-90 man!"
+"What, pale purple?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.110 b/7.4.110
new file mode 100644
index 0000000..0a40ee9
--- /dev/null
+++ b/7.4.110
@@ -0,0 +1,102 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.110
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.110
+Problem:    "gUgn" cannot be repeeated. (Dimitar Dimitrov)
+Solution:   Don't put "gn" in a different order in the redo buffer.  Restore
+	    'wrapscan' when the pattern isn't found. (Christian Wellenbrock)
+Files:	    src/normal.c, src/search.c, src/test53.in, src/test53.ok
+
+
+*** ../vim-7.4.109/src/normal.c	2013-11-04 01:41:11.000000000 +0100
+--- src/normal.c	2013-11-28 19:02:45.000000000 +0100
+***************
+*** 962,972 ****
+  #ifdef FEAT_CMDL_INFO
+  	    need_flushbuf |= add_to_showcmd(ca.nchar);
+  #endif
+- 	    /* For "gn" from redo, need to get one more char to determine the
+- 	     * operator */
+  	    if (ca.nchar == 'r' || ca.nchar == '\'' || ca.nchar == '`'
+! 						       || ca.nchar == Ctrl_BSL
+! 		  || ((ca.nchar == 'n' || ca.nchar == 'N') && !stuff_empty()))
+  	    {
+  		cp = &ca.extra_char;	/* need to get a third character */
+  		if (ca.nchar != 'r')
+--- 962,969 ----
+  #ifdef FEAT_CMDL_INFO
+  	    need_flushbuf |= add_to_showcmd(ca.nchar);
+  #endif
+  	    if (ca.nchar == 'r' || ca.nchar == '\'' || ca.nchar == '`'
+! 						       || ca.nchar == Ctrl_BSL)
+  	    {
+  		cp = &ca.extra_char;	/* need to get a third character */
+  		if (ca.nchar != 'r')
+***************
+*** 1797,1806 ****
+  		 * otherwise it might be the second char of the operator. */
+  		if (cap->cmdchar == 'g' && (cap->nchar == 'n'
+  							|| cap->nchar == 'N'))
+! 		    /* "gn" and "gN" are a bit different */
+! 		    prep_redo(oap->regname, 0L, NUL, cap->cmdchar, cap->nchar,
+! 					get_op_char(oap->op_type),
+! 					get_extra_op_char(oap->op_type));
+  		else if (cap->cmdchar != ':')
+  		    prep_redo(oap->regname, 0L, NUL, 'v',
+  					get_op_char(oap->op_type),
+--- 1794,1802 ----
+  		 * otherwise it might be the second char of the operator. */
+  		if (cap->cmdchar == 'g' && (cap->nchar == 'n'
+  							|| cap->nchar == 'N'))
+! 		    prep_redo(oap->regname, cap->count0,
+! 			    get_op_char(oap->op_type), get_extra_op_char(oap->op_type),
+! 			    oap->motion_force, cap->cmdchar, cap->nchar);
+  		else if (cap->cmdchar != ':')
+  		    prep_redo(oap->regname, 0L, NUL, 'v',
+  					get_op_char(oap->op_type),
+*** ../vim-7.4.109/src/search.c	2013-11-08 04:30:06.000000000 +0100
+--- src/search.c	2013-11-28 19:05:16.000000000 +0100
+***************
+*** 4544,4550 ****
+      /* Is the pattern is zero-width? */
+      one_char = is_one_char(spats[last_idx].pat);
+      if (one_char == -1)
+! 	return FAIL;  /* invalid pattern */
+  
+      /*
+       * The trick is to first search backwards and then search forward again,
+--- 4544,4553 ----
+      /* Is the pattern is zero-width? */
+      one_char = is_one_char(spats[last_idx].pat);
+      if (one_char == -1)
+!     {
+! 	p_ws = old_p_ws;
+! 	return FAIL;  /* pattern not found */
+!     }
+  
+      /*
+       * The trick is to first search backwards and then search forward again,
+*** ../vim-7.4.109/src/version.c	2013-11-28 18:53:47.000000000 +0100
+--- src/version.c	2013-11-28 19:20:29.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     110,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+10. And even your night dreams are in HTML.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.111 b/7.4.111
new file mode 100644
index 0000000..e8c7a48
--- /dev/null
+++ b/7.4.111
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.111
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.111
+Problem:    Memory leak in Python OptionsAssItem. (Ken Takata)
+Solution:   Call Py_XDECREF() where needed. (ZyX)
+Files:	    src/if_py_both.h
+
+
+*** ../vim-7.4.110/src/if_py_both.h	2013-11-28 17:04:38.000000000 +0100
+--- src/if_py_both.h	2013-12-07 14:23:00.000000000 +0100
+***************
+*** 3005,3015 ****
+      else
+      {
+  	char_u		*val;
+! 	PyObject	*todecref;
+  
+! 	if ((val = StringToChars(valObject, &todecref)))
+  	    ret = set_option_value_for(key, 0, val, opt_flags,
+  				    self->opt_type, self->from);
+  	else
+  	    ret = -1;
+      }
+--- 3005,3018 ----
+      else
+      {
+  	char_u		*val;
+! 	PyObject	*todecref2;
+  
+! 	if ((val = StringToChars(valObject, &todecref2)))
+! 	{
+  	    ret = set_option_value_for(key, 0, val, opt_flags,
+  				    self->opt_type, self->from);
++ 	    Py_XDECREF(todecref2);
++ 	}
+  	else
+  	    ret = -1;
+      }
+*** ../vim-7.4.110/src/version.c	2013-11-28 19:27:18.000000000 +0100
+--- src/version.c	2013-12-07 14:24:16.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     111,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+12. Sing along at the opera.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.112 b/7.4.112
new file mode 100644
index 0000000..ab64e13
--- /dev/null
+++ b/7.4.112
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.112
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.112
+Problem:    The defaults for 'directory' and 'backupdir' on MS-Windows do not
+	    include a directory that exists.
+Solution:   Use $TEMP.
+Files:	    src/os_dos.h
+
+
+*** ../vim-7.4.111/src/os_dos.h	2013-06-12 20:09:44.000000000 +0200
+--- src/os_dos.h	2013-12-04 15:23:22.000000000 +0100
+***************
+*** 109,115 ****
+  #endif
+  
+  #ifndef DFLT_BDIR
+! # define DFLT_BDIR	".,c:\\tmp,c:\\temp"	/* default for 'backupdir' */
+  #endif
+  
+  #ifndef DFLT_VDIR
+--- 109,115 ----
+  #endif
+  
+  #ifndef DFLT_BDIR
+! # define DFLT_BDIR	".,$TEMP,c:\\tmp,c:\\temp" /* default for 'backupdir' */
+  #endif
+  
+  #ifndef DFLT_VDIR
+***************
+*** 117,123 ****
+  #endif
+  
+  #ifndef DFLT_DIR
+! # define DFLT_DIR	".,c:\\tmp,c:\\temp"	/* default for 'directory' */
+  #endif
+  
+  #define DFLT_ERRORFILE		"errors.err"
+--- 117,123 ----
+  #endif
+  
+  #ifndef DFLT_DIR
+! # define DFLT_DIR	".,$TEMP,c:\\tmp,c:\\temp" /* default for 'directory' */
+  #endif
+  
+  #define DFLT_ERRORFILE		"errors.err"
+*** ../vim-7.4.111/src/version.c	2013-12-07 14:28:37.000000000 +0100
+--- src/version.c	2013-12-07 14:31:03.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     112,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+13. Go to a poetry recital and ask why the poems don't rhyme.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.113 b/7.4.113
new file mode 100644
index 0000000..97059e5
--- /dev/null
+++ b/7.4.113
@@ -0,0 +1,101 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.113
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.113
+Problem:    MSVC static analysis gives warnings.
+Solution:   Avoid the warnings and avoid possible bugs. (Ken Takata)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.112/src/os_win32.c	2013-11-21 12:34:07.000000000 +0100
+--- src/os_win32.c	2013-12-07 14:41:35.000000000 +0100
+***************
+*** 2509,2515 ****
+      WCHAR		*porig, *porigPrev;
+      int			flen;
+      WIN32_FIND_DATAW	fb;
+!     HANDLE		hFind;
+      int			c;
+      int			slen;
+  
+--- 2509,2515 ----
+      WCHAR		*porig, *porigPrev;
+      int			flen;
+      WIN32_FIND_DATAW	fb;
+!     HANDLE		hFind = INVALID_HANDLE_VALUE;
+      int			c;
+      int			slen;
+  
+***************
+*** 2528,2535 ****
+  	/* copy leading drive letter */
+  	*ptrue++ = *porig++;
+  	*ptrue++ = *porig++;
+- 	*ptrue = NUL;	    /* in case nothing follows */
+      }
+  
+      while (*porig != NUL)
+      {
+--- 2528,2535 ----
+  	/* copy leading drive letter */
+  	*ptrue++ = *porig++;
+  	*ptrue++ = *porig++;
+      }
++     *ptrue = NUL;	    /* in case nothing follows */
+  
+      while (*porig != NUL)
+      {
+***************
+*** 2673,2680 ****
+  	/* copy leading drive letter */
+  	*ptrue++ = *porig++;
+  	*ptrue++ = *porig++;
+- 	*ptrue = NUL;	    /* in case nothing follows */
+      }
+  
+      while (*porig != NUL)
+      {
+--- 2673,2680 ----
+  	/* copy leading drive letter */
+  	*ptrue++ = *porig++;
+  	*ptrue++ = *porig++;
+      }
++     *ptrue = NUL;	    /* in case nothing follows */
+  
+      while (*porig != NUL)
+      {
+***************
+*** 6272,6277 ****
+--- 6272,6278 ----
+  		    while (i > 0)
+  			free(argv[--i]);
+  		    free(argv);
++ 		    argv = NULL;
+  		    argc = 0;
+  		}
+  	    }
+*** ../vim-7.4.112/src/version.c	2013-12-07 14:32:04.000000000 +0100
+--- src/version.c	2013-12-07 14:37:48.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     113,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+    party because you're not in the mood.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.114 b/7.4.114
new file mode 100644
index 0000000..9b982f6
--- /dev/null
+++ b/7.4.114
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.114
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.114
+Problem:    New GNU make outputs messages about changing directory in another
+	    format.
+Solution:   Recognize the new format.
+Files:	    src/option.h
+
+
+*** ../vim-7.4.113/src/option.h	2013-11-06 05:26:08.000000000 +0100
+--- src/option.h	2013-12-04 12:43:03.000000000 +0100
+***************
+*** 31,39 ****
+  #     define DFLT_EFM	"%A%p^,%C%%CC-%t-%m,%Cat line number %l in file %f,%f|%l| %m"
+  #    else /* Unix, probably */
+  #     ifdef EBCDIC
+! #define DFLT_EFM	"%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     else
+! #define DFLT_EFM	"%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     endif
+  #    endif
+  #   endif
+--- 31,39 ----
+  #     define DFLT_EFM	"%A%p^,%C%%CC-%t-%m,%Cat line number %l in file %f,%f|%l| %m"
+  #    else /* Unix, probably */
+  #     ifdef EBCDIC
+! #define DFLT_EFM	"%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory [`']%f',%X%*\\a[%*\\d]: Leaving directory [`']%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     else
+! #define DFLT_EFM	"%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory [`']%f',%X%*\\a[%*\\d]: Leaving directory [`']%f',%D%*\\a: Entering directory [`']%f',%X%*\\a: Leaving directory [`']%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     endif
+  #    endif
+  #   endif
+*** ../vim-7.4.113/src/version.c	2013-12-07 14:48:06.000000000 +0100
+--- src/version.c	2013-12-11 12:22:19.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     114,
+  /**/
+
+-- 
+Everyone has a photographic memory. Some don't have film.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.115 b/7.4.115
new file mode 100644
index 0000000..1d1a561
--- /dev/null
+++ b/7.4.115
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.115
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.115
+Problem:    When using Zsh expanding ~abc doesn't work when the result
+	    contains a space.
+Solution:   Off-by-one error in detecting the NUL. (Pavol Juhas)
+Files:	    src/os_unix.c
+
+
+*** ../vim-7.4.114/src/os_unix.c	2013-11-03 00:40:54.000000000 +0100
+--- src/os_unix.c	2013-12-11 13:19:26.000000000 +0100
+***************
+*** 5990,5996 ****
+  	{
+  	    /* If there is a NUL, set did_find_nul, else set check_spaces */
+  	    buffer[len] = NUL;
+! 	    if (len && (int)STRLEN(buffer) < (int)len - 1)
+  		did_find_nul = TRUE;
+  	    else
+  		check_spaces = TRUE;
+--- 5990,5996 ----
+  	{
+  	    /* If there is a NUL, set did_find_nul, else set check_spaces */
+  	    buffer[len] = NUL;
+! 	    if (len && (int)STRLEN(buffer) < (int)len)
+  		did_find_nul = TRUE;
+  	    else
+  		check_spaces = TRUE;
+*** ../vim-7.4.114/src/version.c	2013-12-11 12:22:54.000000000 +0100
+--- src/version.c	2013-12-11 13:20:29.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     115,
+  /**/
+
+-- 
+Change is inevitable, except from a vending machine.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.116 b/7.4.116
new file mode 100644
index 0000000..f242f05
--- /dev/null
+++ b/7.4.116
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.116
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.116
+Problem:    When a mapping starts with a space, the typed space does not show
+	    up for 'showcmd'.
+Solution:   Show "<20>". (Brook Hong)
+Files:	    src/normal.c
+
+
+*** ../vim-7.4.115/src/normal.c	2013-11-28 19:27:18.000000000 +0100
+--- src/normal.c	2013-12-07 14:30:29.000000000 +0100
+***************
+*** 4021,4026 ****
+--- 4021,4028 ----
+  #endif
+  
+      p = transchar(c);
++     if (*p == ' ')
++ 	STRCPY(p, "<20>");
+      old_len = (int)STRLEN(showcmd_buf);
+      extra_len = (int)STRLEN(p);
+      overflow = old_len + extra_len - SHOWCMD_COLS;
+*** ../vim-7.4.115/src/version.c	2013-12-11 13:21:44.000000000 +0100
+--- src/version.c	2013-12-11 14:16:58.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     116,
+  /**/
+
+-- 
+Bumper sticker: Honk if you love peace and quiet.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.117 b/7.4.117
new file mode 100644
index 0000000..5fb0268
--- /dev/null
+++ b/7.4.117
@@ -0,0 +1,263 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.117
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.117
+Problem:    Can't build with Cygwin/MingW and Perl 5.18.
+Solution:   Add a linker argument for the Perl library. (Cesar Romani)
+	    Adjust CFLAGS and LIB. (Cesar Romani)
+	    Move including inline.h further down. (Ken Takata)
+Files:	    src/Make_cyg.mak, src/Make_ming.mak, src/if_perl.xs
+
+
+*** ../vim-7.4.116/src/Make_cyg.mak	2013-11-28 16:32:34.000000000 +0100
+--- src/Make_cyg.mak	2013-12-11 14:59:12.000000000 +0100
+***************
+*** 1,6 ****
+  #
+  # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp.  Last Change: 2013 Nov 28
+  #
+  # Also read INSTALLpc.txt!
+  #
+--- 1,6 ----
+  #
+  # Makefile for VIM on Win32, using Cygnus gcc
+! # Last updated by Dan Sharp.  Last Change: 2013 Dec 11
+  #
+  # Also read INSTALLpc.txt!
+  #
+***************
+*** 155,161 ****
+  ifeq (yes, $(DYNAMIC_PERL))
+  DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
+  else
+! EXTRA_LIBS += $(PERL)/lib/CORE/perl$(PERL_VER).lib
+  endif
+  endif
+  
+--- 155,161 ----
+  ifeq (yes, $(DYNAMIC_PERL))
+  DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
+  else
+! EXTRA_LIBS += -L$(PERL)/lib/CORE -lperl$(PERL_VER)
+  endif
+  endif
+  
+*** ../vim-7.4.116/src/Make_ming.mak	2013-07-06 13:32:11.000000000 +0200
+--- src/Make_ming.mak	2013-12-07 20:02:52.000000000 +0100
+***************
+*** 359,364 ****
+--- 359,365 ----
+  
+  CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
+  WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
++ EXTRA_LIBS =
+  
+  ifdef GETTEXT
+  DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
+***************
+*** 377,385 ****
+  endif
+  
+  ifdef PERL
+! CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -L$(PERLLIBS)
+  ifeq (yes, $(DYNAMIC_PERL))
+  CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
+  endif
+  endif
+  
+--- 378,387 ----
+  endif
+  
+  ifdef PERL
+! CFLAGS += -I$(PERLLIBS) -DFEAT_PERL
+  ifeq (yes, $(DYNAMIC_PERL))
+  CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
++ EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
+  endif
+  endif
+  
+***************
+*** 632,638 ****
+  
+  ifdef PERL
+  ifeq (no, $(DYNAMIC_PERL))
+! LIB += -lperl$(PERL_VER)
+  endif
+  endif
+  
+--- 634,640 ----
+  
+  ifdef PERL
+  ifeq (no, $(DYNAMIC_PERL))
+! LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
+  endif
+  endif
+  
+*** ../vim-7.4.116/src/if_perl.xs	2013-08-02 19:28:50.000000000 +0200
+--- src/if_perl.xs	2013-12-11 15:02:58.000000000 +0100
+***************
+*** 14,20 ****
+  #define IN_PERL_FILE	/* don't include if_perl.pro from proto.h */
+  
+  /*
+!  * Currently 32-bit version of ActivePerl is built with VC6.
+   * (http://community.activestate.com/faq/windows-compilers-perl-modules)
+   * It means that time_t should be 32-bit. However the default size of
+   * time_t is 64-bit since VC8. So we have to define _USE_32BIT_TIME_T.
+--- 14,21 ----
+  #define IN_PERL_FILE	/* don't include if_perl.pro from proto.h */
+  
+  /*
+!  * Currently 32-bit version of ActivePerl is built with VC6 (or MinGW since
+!  * ActivePerl 5.18).
+   * (http://community.activestate.com/faq/windows-compilers-perl-modules)
+   * It means that time_t should be 32-bit. However the default size of
+   * time_t is 64-bit since VC8. So we have to define _USE_32BIT_TIME_T.
+***************
+*** 23,28 ****
+--- 24,45 ----
+  # define _USE_32BIT_TIME_T
+  #endif
+  
++ /* Work around for perl-5.18.
++  * Don't include "perl\lib\CORE\inline.h" for now,
++  * include it after Perl_sv_free2 is defined. */
++ #define PERL_NO_INLINE_FUNCTIONS
++ 
++ /*
++  * Prevent including winsock.h.  perl.h tries to detect whether winsock.h is
++  * already included before including winsock2.h, because winsock2.h isn't
++  * compatible with winsock.h.  However the detection doesn't work with some
++  * versions of MinGW.  If WIN32_LEAN_AND_MEAN is defined, windows.h will not
++  * include winsock.h.
++  */
++ #ifdef WIN32
++ # define WIN32_LEAN_AND_MEAN
++ #endif
++ 
+  #include "vim.h"
+  
+  #include <EXTERN.h>
+***************
+*** 81,90 ****
+  # define PERL5101_OR_LATER
+  #endif
+  
+- #if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
+- # define PERL5180_OR_LATER
+- #endif
+- 
+  #ifndef pTHX
+  #    define pTHX void
+  #    define pTHX_
+--- 98,103 ----
+***************
+*** 145,155 ****
+  # define perl_free dll_perl_free
+  # define Perl_get_context dll_Perl_get_context
+  # define Perl_croak dll_Perl_croak
+- # ifndef PERL5180_OR_LATER
+  # ifdef PERL5101_OR_LATER
+  #  define Perl_croak_xs_usage dll_Perl_croak_xs_usage
+  # endif
+- # endif
+  # ifndef PROTO
+  #  define Perl_croak_nocontext dll_Perl_croak_nocontext
+  #  define Perl_call_argv dll_Perl_call_argv
+--- 158,166 ----
+***************
+*** 262,271 ****
+  static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
+  static void* (*Perl_get_context)(void);
+  static void (*Perl_croak)(pTHX_ const char*, ...);
+- #ifndef PERL5180_OR_LATER
+  #ifdef PERL5101_OR_LATER
+  static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params);
+! #endif
+  #endif
+  static void (*Perl_croak_nocontext)(const char*, ...);
+  static I32 (*Perl_dowantarray)(pTHX);
+--- 273,285 ----
+  static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
+  static void* (*Perl_get_context)(void);
+  static void (*Perl_croak)(pTHX_ const char*, ...);
+  #ifdef PERL5101_OR_LATER
++ /* Perl-5.18 has a different Perl_croak_xs_usage signature. */
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
++ static void (*Perl_croak_xs_usage)(const CV *const, const char *const params);
++ # else
+  static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params);
+! # endif
+  #endif
+  static void (*Perl_croak_nocontext)(const char*, ...);
+  static I32 (*Perl_dowantarray)(pTHX);
+***************
+*** 337,343 ****
+--- 351,362 ----
+  static XPV** (*Perl_TXpv_ptr)(register PerlInterpreter*);
+  static STRLEN* (*Perl_Tna_ptr)(register PerlInterpreter*);
+  #else
++ /* Perl-5.18 has a different Perl_sv_free2 signature. */
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
++ static void (*Perl_sv_free2)(pTHX_ SV*, const U32);
++ # else
+  static void (*Perl_sv_free2)(pTHX_ SV*);
++ # endif
+  static void (*Perl_sys_init)(int* argc, char*** argv);
+  static void (*Perl_sys_term)(void);
+  static void (*Perl_call_list)(pTHX_ I32, AV*);
+***************
+*** 384,394 ****
+      {"perl_parse", (PERL_PROC*)&perl_parse},
+      {"Perl_get_context", (PERL_PROC*)&Perl_get_context},
+      {"Perl_croak", (PERL_PROC*)&Perl_croak},
+- #ifndef PERL5180_OR_LATER
+  #ifdef PERL5101_OR_LATER
+      {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
+  #endif
+- #endif
+      {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext},
+      {"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray},
+      {"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps},
+--- 403,411 ----
+***************
+*** 492,497 ****
+--- 509,522 ----
+      {"", NULL},
+  };
+  
++ /* Work around for perl-5.18.
++  * The definitions of S_SvREFCNT_inc and S_SvREFCNT_dec are needed, so include
++  * "perl\lib\CORE\inline.h", after Perl_sv_free2 is defined.
++  * The linker won't complain about undefined __impl_Perl_sv_free2. */
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
++ # include <inline.h>
++ #endif
++ 
+  /*
+   * Make all runtime-links of perl.
+   *
+*** ../vim-7.4.116/src/version.c	2013-12-11 14:54:58.000000000 +0100
+--- src/version.c	2013-12-11 15:00:12.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     117,
+  /**/
+
+-- 
+Despite the cost of living, have you noticed how it remains so popular?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.118 b/7.4.118
new file mode 100644
index 0000000..04701cc
--- /dev/null
+++ b/7.4.118
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.118
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.118
+Problem:    It's possible that redrawing the status lines causes
+	    win_redr_custom() to be called recursively.
+Solution:   Protect against recursiveness. (Yasuhiro Matsumoto)
+Files:	    src/screen.c
+
+
+*** ../vim-7.4.117/src/screen.c	2013-11-08 04:30:06.000000000 +0100
+--- src/screen.c	2013-12-11 15:32:21.000000000 +0100
+***************
+*** 6653,6658 ****
+--- 6653,6659 ----
+      win_T	*wp;
+      int		draw_ruler;	/* TRUE or FALSE */
+  {
++     static int	entered = FALSE;
+      int		attr;
+      int		curattr;
+      int		row;
+***************
+*** 6671,6676 ****
+--- 6672,6684 ----
+      win_T	*ewp;
+      int		p_crb_save;
+  
++     /* There is a tiny chance that this gets called recursively: When
++      * redrawing a status line triggers redrawing the ruler or tabline.
++      * Avoid trouble by not allowing recursion. */
++     if (entered)
++ 	return;
++     entered = TRUE;
++ 
+      /* setup environment for the task at hand */
+      if (wp == NULL)
+      {
+***************
+*** 6746,6752 ****
+      }
+  
+      if (maxwidth <= 0)
+! 	return;
+  
+      /* Temporarily reset 'cursorbind', we don't want a side effect from moving
+       * the cursor away and back. */
+--- 6754,6760 ----
+      }
+  
+      if (maxwidth <= 0)
+! 	goto theend;
+  
+      /* Temporarily reset 'cursorbind', we don't want a side effect from moving
+       * the cursor away and back. */
+***************
+*** 6827,6832 ****
+--- 6835,6843 ----
+  	while (col < Columns)
+  	    TabPageIdxs[col++] = fillchar;
+      }
++ 
++ theend:
++     entered = FALSE;
+  }
+  
+  #endif /* FEAT_STL_OPT */
+*** ../vim-7.4.117/src/version.c	2013-12-11 15:06:36.000000000 +0100
+--- src/version.c	2013-12-11 15:32:16.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     118,
+  /**/
+
+-- 
+Nothing is fool-proof to a sufficiently talented fool.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.119 b/7.4.119
new file mode 100644
index 0000000..061b81a
--- /dev/null
+++ b/7.4.119
@@ -0,0 +1,245 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.119
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.119
+Problem:    Vim doesn't work well on OpenVMS.
+Solution:   Fix various problems. (Samuel Ferencik)
+Files:	    src/os_unix.c, src/os_unix.h, src/os_vms.c
+
+
+*** ../vim-7.4.118/src/os_unix.c	2013-12-11 13:21:44.000000000 +0100
+--- src/os_unix.c	2013-12-11 16:16:03.000000000 +0100
+***************
+*** 168,174 ****
+  static pid_t wait4pid __ARGS((pid_t, waitstatus *));
+  
+  static int  WaitForChar __ARGS((long));
+! #if defined(__BEOS__)
+  int  RealWaitForChar __ARGS((int, long, int *));
+  #else
+  static int  RealWaitForChar __ARGS((int, long, int *));
+--- 168,174 ----
+  static pid_t wait4pid __ARGS((pid_t, waitstatus *));
+  
+  static int  WaitForChar __ARGS((long));
+! #if defined(__BEOS__) || defined(VMS)
+  int  RealWaitForChar __ARGS((int, long, int *));
+  #else
+  static int  RealWaitForChar __ARGS((int, long, int *));
+***************
+*** 435,441 ****
+  	/* Process the queued netbeans messages. */
+  	netbeans_parse_messages();
+  #endif
+- #ifndef VMS  /* VMS: must try reading, WaitForChar() does nothing. */
+  	/*
+  	 * We want to be interrupted by the winch signal
+  	 * or by an event on the monitored file descriptors.
+--- 435,440 ----
+***************
+*** 446,452 ****
+  		handle_resize();
+  	    return 0;
+  	}
+- #endif
+  
+  	/* If input was put directly in typeahead buffer bail out here. */
+  	if (typebuf_changed(tb_change_cnt))
+--- 445,450 ----
+***************
+*** 5039,5044 ****
+--- 5037,5043 ----
+      return avail;
+  }
+  
++ #ifndef VMS
+  /*
+   * Wait "msec" msec until a character is available from file descriptor "fd".
+   * "msec" == 0 will check for characters once.
+***************
+*** 5338,5350 ****
+  	}
+  # endif
+  
+- # ifdef OLD_VMS
+- 	/* Old VMS as v6.2 and older have broken select(). It waits more than
+- 	 * required. Should not be used */
+- 	ret = 0;
+- # else
+  	ret = select(maxfd + 1, &rfds, NULL, &efds, tvp);
+- # endif
+  # ifdef EINTR
+  	if (ret == -1 && errno == EINTR)
+  	{
+--- 5337,5343 ----
+***************
+*** 5466,5473 ****
+      return (ret > 0);
+  }
+  
+- #ifndef VMS
+- 
+  #ifndef NO_EXPANDPATH
+  /*
+   * Expand a path into all matching files and/or directories.  Handles "*",
+--- 5459,5464 ----
+*** ../vim-7.4.118/src/os_unix.h	2013-06-12 20:09:44.000000000 +0200
+--- src/os_unix.h	2013-12-11 16:16:03.000000000 +0100
+***************
+*** 225,230 ****
+--- 225,232 ----
+  # include <starlet.h>
+  # include <socket.h>
+  # include <lib$routines.h>
++ # include <libdef.h>
++ # include <libdtdef.h>
+  
+  # ifdef FEAT_GUI_GTK
+  #  include "gui_gtk_vms.h"
+*** ../vim-7.4.118/src/os_vms.c	2010-06-26 06:03:31.000000000 +0200
+--- src/os_vms.c	2013-12-11 17:10:24.000000000 +0100
+***************
+*** 11,16 ****
+--- 11,33 ----
+  
+  #include	"vim.h"
+  
++ /* define _generic_64 for use in time functions */
++ #ifndef VAX
++ #   include <gen64def.h>
++ #else
++ /* based on Alpha's gen64def.h; the file is absent on VAX */
++ typedef struct _generic_64 {
++ #   pragma __nomember_alignment
++     __union  {                          /* You can treat me as...  */
++ 	/* long long is not available on VAXen */
++ 	/* unsigned __int64 gen64$q_quadword; ...a single 64-bit value, or */
++ 
++ 	unsigned int gen64$l_longword [2]; /* ...two 32-bit values, or */
++ 	unsigned short int gen64$w_word [4]; /* ...four 16-bit values */
++     } gen64$r_quad_overlay;
++ } GENERIC_64;
++ #endif
++ 
+  typedef struct
+  {
+      char	class;
+***************
+*** 669,671 ****
+--- 686,777 ----
+      }
+      return ;
+  }
++ 
++ struct typeahead_st {
++     unsigned short numchars;
++     unsigned char  firstchar;
++     unsigned char  reserved0;
++     unsigned long  reserved1;
++ } typeahead;
++ 
++ /*
++  * Wait "msec" msec until a character is available from file descriptor "fd".
++  * "msec" == 0 will check for characters once.
++  * "msec" == -1 will block until a character is available.
++  */
++     int
++ RealWaitForChar(fd, msec, check_for_gpm)
++     int		fd UNUSED; /* always read from iochan */
++     long	msec;
++     int		*check_for_gpm UNUSED;
++ {
++     int status;
++     struct _generic_64 time_curr;
++     struct _generic_64 time_diff;
++     struct _generic_64 time_out;
++     unsigned int convert_operation = LIB$K_DELTA_SECONDS_F;
++     float sec = (float) msec / 1000;
++ 
++     /* make sure the iochan is set */
++     if (!iochan)
++ 	get_tty();
++ 
++     if (msec > 0) {
++         /* time-out specified; convert it to absolute time */
++ 
++         /* get current time (number of 100ns ticks since the VMS Epoch) */
++         status = sys$gettim(&time_curr);
++         if (status != SS$_NORMAL)
++             return 0; /* error */
++ 
++         /* construct the delta time */
++         status = lib$cvtf_to_internal_time(
++                 &convert_operation, &sec, &time_diff);
++         if (status != LIB$_NORMAL)
++             return 0; /* error */
++ 
++         /* add them up */
++         status = lib$add_times(
++                 &time_curr,
++                 &time_diff,
++                 &time_out);
++         if (status != LIB$_NORMAL)
++             return 0; /* error */
++     }
++ 
++     while (TRUE) {
++         /* select() */
++         status = sys$qiow(0, iochan, IO$_SENSEMODE | IO$M_TYPEAHDCNT, iosb,
++                 0, 0, &typeahead, 8, 0, 0, 0, 0);
++ 	if (status != SS$_NORMAL || (iosb[0] & 0xFFFF) != SS$_NORMAL)
++             return 0; /* error */
++ 
++         if (typeahead.numchars)
++             return 1; /* ready to read */
++ 
++         /* there's nothing to read; what now? */
++         if (msec == 0) {
++             /* immediate time-out; return impatiently */
++             return 0;
++         }
++         else if (msec < 0) {
++             /* no time-out; wait on indefinitely */
++             continue;
++         }
++         else {
++             /* time-out needs to be checked */
++             status = sys$gettim(&time_curr);
++             if (status != SS$_NORMAL)
++                 return 0; /* error */
++ 
++             status = lib$sub_times(
++                     &time_out,
++                     &time_curr,
++                     &time_diff);
++             if (status != LIB$_NORMAL)
++                 return 0; /* error, incl. time_diff < 0 (i.e. time-out) */
++ 
++             /* otherwise wait some more */
++         }
++     }
++ }
+*** ../vim-7.4.118/src/version.c	2013-12-11 15:51:54.000000000 +0100
+--- src/version.c	2013-12-11 16:09:16.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     119,
+  /**/
+
+-- 
+It is hard to understand how a cemetery raised its burial
+cost and blamed it on the cost of living.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.120 b/7.4.120
new file mode 100644
index 0000000..4f7a17a
--- /dev/null
+++ b/7.4.120
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.120
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.120 (after 7.4.117)
+Problem:    Can't build with Perl 5.18 on Linux. (Lcd 47)
+Solution:   Add #ifdef. (Ken Takata)
+Files:	    src/if_perl.xs
+
+
+*** ../vim-7.4.119/src/if_perl.xs	2013-12-11 15:06:36.000000000 +0100
+--- src/if_perl.xs	2013-12-11 17:17:43.000000000 +0100
+***************
+*** 27,33 ****
+  /* Work around for perl-5.18.
+   * Don't include "perl\lib\CORE\inline.h" for now,
+   * include it after Perl_sv_free2 is defined. */
+! #define PERL_NO_INLINE_FUNCTIONS
+  
+  /*
+   * Prevent including winsock.h.  perl.h tries to detect whether winsock.h is
+--- 27,35 ----
+  /* Work around for perl-5.18.
+   * Don't include "perl\lib\CORE\inline.h" for now,
+   * include it after Perl_sv_free2 is defined. */
+! #ifdef DYNAMIC_PERL
+! # define PERL_NO_INLINE_FUNCTIONS
+! #endif
+  
+  /*
+   * Prevent including winsock.h.  perl.h tries to detect whether winsock.h is
+*** ../vim-7.4.119/src/version.c	2013-12-11 17:12:32.000000000 +0100
+--- src/version.c	2013-12-11 17:19:34.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     120,
+  /**/
+
+-- 
+Just remember...if the world didn't suck, we'd all fall off.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.121 b/7.4.121
new file mode 100644
index 0000000..2e04890
--- /dev/null
+++ b/7.4.121
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.121
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.121
+Problem:    Completion doesn't work for ":py3d" and ":py3f". (Bohr Shaw)
+Solution:   Skip over letters after ":py3".
+Files:	    src/ex_docmd.c
+
+
+*** ../vim-7.4.120/src/ex_docmd.c	2013-11-21 14:21:25.000000000 +0100
+--- src/ex_docmd.c	2013-12-11 17:41:50.000000000 +0100
+***************
+*** 3261,3267 ****
+--- 3261,3271 ----
+  	    ++p;
+  	/* for python 3.x: ":py3*" commands completion */
+  	if (cmd[0] == 'p' && cmd[1] == 'y' && p == cmd + 2 && *p == '3')
++ 	{
+  	    ++p;
++ 	    while (ASCII_ISALPHA(*p) || *p == '*')
++ 		++p;
++ 	}
+  	len = (int)(p - cmd);
+  
+  	if (len == 0)
+*** ../vim-7.4.120/src/version.c	2013-12-11 17:20:14.000000000 +0100
+--- src/version.c	2013-12-11 17:43:44.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     121,
+  /**/
+
+-- 
+It was recently discovered that research causes cancer in rats.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.122 b/7.4.122
new file mode 100644
index 0000000..2e6e581
--- /dev/null
+++ b/7.4.122
@@ -0,0 +1,215 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.122
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.122
+Problem:    Win32: When 'encoding' is set to "utf-8" and the active codepage
+	    is cp932 then ":grep" and other commands don't work for multi-byte
+	    characters.
+Solution:   (Yasuhiro Matsumoto)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.121/src/os_win32.c	2013-12-07 14:48:06.000000000 +0100
+--- src/os_win32.c	2013-12-11 17:57:48.000000000 +0100
+***************
+*** 3788,3793 ****
+--- 3788,3837 ----
+  }
+  #endif /* FEAT_GUI_W32 */
+  
++     static BOOL
++ vim_create_process(
++     const char		*cmd,
++     DWORD		flags,
++     BOOL		inherit_handles,
++     STARTUPINFO		*si,
++     PROCESS_INFORMATION *pi)
++ {
++ #  ifdef FEAT_MBYTE
++     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++     {
++ 	WCHAR	*wcmd = enc_to_utf16(cmd, NULL);
++ 
++ 	if (wcmd != NULL)
++ 	{
++ 	    BOOL ret;
++ 	    ret = CreateProcessW(
++ 		NULL,			/* Executable name */
++ 		wcmd,			/* Command to execute */
++ 		NULL,			/* Process security attributes */
++ 		NULL,			/* Thread security attributes */
++ 		inherit_handles,	/* Inherit handles */
++ 		flags,			/* Creation flags */
++ 		NULL,			/* Environment */
++ 		NULL,			/* Current directory */
++ 		si,			/* Startup information */
++ 		pi);			/* Process information */
++ 	    vim_free(wcmd);
++ 	    return ret;
++ 	}
++     }
++ #endif
++     return CreateProcess(
++ 	NULL,			/* Executable name */
++ 	cmd,			/* Command to execute */
++ 	NULL,			/* Process security attributes */
++ 	NULL,			/* Thread security attributes */
++ 	inherit_handles,	/* Inherit handles */
++ 	flags,			/* Creation flags */
++ 	NULL,			/* Environment */
++ 	NULL,			/* Current directory */
++ 	si,			/* Startup information */
++ 	pi);			/* Process information */
++ }
+  
+  
+  #if defined(FEAT_GUI_W32) || defined(PROTO)
+***************
+*** 3834,3851 ****
+  	cmd += 3;
+  
+      /* Now, run the command */
+!     CreateProcess(NULL,			/* Executable name */
+! 		  cmd,			/* Command to execute */
+! 		  NULL,			/* Process security attributes */
+! 		  NULL,			/* Thread security attributes */
+! 		  FALSE,		/* Inherit handles */
+! 		  CREATE_DEFAULT_ERROR_MODE |	/* Creation flags */
+! 			CREATE_NEW_CONSOLE,
+! 		  NULL,			/* Environment */
+! 		  NULL,			/* Current directory */
+! 		  &si,			/* Startup information */
+! 		  &pi);			/* Process information */
+! 
+  
+      /* Wait for the command to terminate before continuing */
+      if (g_PlatformId != VER_PLATFORM_WIN32s)
+--- 3878,3885 ----
+  	cmd += 3;
+  
+      /* Now, run the command */
+!     vim_create_process(cmd, FALSE,
+! 	    CREATE_DEFAULT_ERROR_MODE |	CREATE_NEW_CONSOLE, &si, &pi);
+  
+      /* Wait for the command to terminate before continuing */
+      if (g_PlatformId != VER_PLATFORM_WIN32s)
+***************
+*** 4177,4198 ****
+  	    p = cmd;
+      }
+  
+!     /* Now, run the command */
+!     CreateProcess(NULL,			/* Executable name */
+! 		  p,			/* Command to execute */
+! 		  NULL,			/* Process security attributes */
+! 		  NULL,			/* Thread security attributes */
+! 
+! 		  // this command can be litigious, handle inheritance was
+! 		  // deactivated for pending temp file, but, if we deactivate
+! 		  // it, the pipes don't work for some reason.
+! 		  TRUE,			/* Inherit handles, first deactivated,
+! 					 * but needed */
+! 		  CREATE_DEFAULT_ERROR_MODE, /* Creation flags */
+! 		  NULL,			/* Environment */
+! 		  NULL,			/* Current directory */
+! 		  &si,			/* Startup information */
+! 		  &pi);			/* Process information */
+  
+      if (p != cmd)
+  	vim_free(p);
+--- 4211,4221 ----
+  	    p = cmd;
+      }
+  
+!     /* Now, run the command.
+!      * About "Inherit handles" being TRUE: this command can be litigious,
+!      * handle inheritance was deactivated for pending temp file, but, if we
+!      * deactivate it, the pipes don't work for some reason. */
+!      vim_create_process(p, TRUE, CREATE_DEFAULT_ERROR_MODE, &si, &pi);
+  
+      if (p != cmd)
+  	vim_free(p);
+***************
+*** 4410,4416 ****
+  }
+  #else
+  
+! # define mch_system(c, o) system(c)
+  
+  #endif
+  
+--- 4433,4457 ----
+  }
+  #else
+  
+! # ifdef FEAT_MBYTE
+!     static int
+! mch_system(char *cmd, int options)
+! {
+!     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+!     {
+! 	WCHAR	*wcmd = enc_to_utf16(cmd, NULL);
+! 	if (wcmd != NULL)
+! 	{
+! 	    int ret = _wsystem(wcmd);
+! 	    vim_free(wcmd);
+! 	    return ret;
+! 	}
+!     }
+!     return system(cmd);
+! }
+! # else
+! #  define mch_system(c, o) system(c)
+! # endif
+  
+  #endif
+  
+***************
+*** 4578,4593 ****
+  	     * inherit our handles which causes unpleasant dangling swap
+  	     * files if we exit before the spawned process
+  	     */
+! 	    if (CreateProcess(NULL,		// Executable name
+! 		    newcmd,			// Command to execute
+! 		    NULL,			// Process security attributes
+! 		    NULL,			// Thread security attributes
+! 		    FALSE,			// Inherit handles
+! 		    flags,			// Creation flags
+! 		    NULL,			// Environment
+! 		    NULL,			// Current directory
+! 		    &si,			// Startup information
+! 		    &pi))			// Process information
+  		x = 0;
+  	    else
+  	    {
+--- 4619,4625 ----
+  	     * inherit our handles which causes unpleasant dangling swap
+  	     * files if we exit before the spawned process
+  	     */
+! 	    if (vim_create_process(newcmd, FALSE, flags, &si, &pi))
+  		x = 0;
+  	    else
+  	    {
+*** ../vim-7.4.121/src/version.c	2013-12-11 17:44:33.000000000 +0100
+--- src/version.c	2013-12-11 17:48:09.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     122,
+  /**/
+
+-- 
+Never overestimate a man's ability to underestimate a woman.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.123 b/7.4.123
new file mode 100644
index 0000000..b564fe4
--- /dev/null
+++ b/7.4.123
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.123
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.123
+Problem:    Win32: Getting user name does not use wide function.
+Solution:   Use GetUserNameW() if possible. (Ken Takata)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.122/src/os_win32.c	2013-12-11 17:58:29.000000000 +0100
+--- src/os_win32.c	2013-12-11 18:14:29.000000000 +0100
+***************
+*** 2768,2773 ****
+--- 2768,2793 ----
+      char szUserName[256 + 1];	/* UNLEN is 256 */
+      DWORD cch = sizeof szUserName;
+  
++ #ifdef FEAT_MBYTE
++     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++     {
++ 	WCHAR wszUserName[256 + 1];	/* UNLEN is 256 */
++ 	DWORD wcch = sizeof(wszUserName) / sizeof(WCHAR);
++ 
++ 	if (GetUserNameW(wszUserName, &wcch))
++ 	{
++ 	    char_u  *p = utf16_to_enc(wszUserName, NULL);
++ 
++ 	    if (p != NULL)
++ 	    {
++ 		vim_strncpy(s, p, len - 1);
++ 		vim_free(p);
++ 		return OK;
++ 	    }
++ 	}
++ 	/* Retry with non-wide function (for Windows 98). */
++     }
++ #endif
+      if (GetUserName(szUserName, &cch))
+      {
+  	vim_strncpy(s, szUserName, len - 1);
+*** ../vim-7.4.122/src/version.c	2013-12-11 17:58:29.000000000 +0100
+--- src/version.c	2013-12-11 18:15:48.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     123,
+  /**/
+
+-- 
+Everybody lies, but it doesn't matter since nobody listens.
+                                -- Lieberman's Law
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.124 b/7.4.124
new file mode 100644
index 0000000..7815bf5
--- /dev/null
+++ b/7.4.124
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.124
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.124
+Problem:    Win32: Getting host name does not use wide function.
+Solution:   Use GetComputerNameW() if possible. (Ken Takata)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.123/src/os_win32.c	2013-12-11 18:18:01.000000000 +0100
+--- src/os_win32.c	2013-12-11 18:19:11.000000000 +0100
+***************
+*** 2808,2813 ****
+--- 2808,2833 ----
+  {
+      DWORD cch = len;
+  
++ #ifdef FEAT_MBYTE
++     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++     {
++ 	WCHAR wszHostName[256 + 1];
++ 	DWORD wcch = sizeof(wszHostName) / sizeof(WCHAR);
++ 
++ 	if (GetComputerNameW(wszHostName, &wcch))
++ 	{
++ 	    char_u  *p = utf16_to_enc(wszHostName, NULL);
++ 
++ 	    if (p != NULL)
++ 	    {
++ 		vim_strncpy(s, p, len - 1);
++ 		vim_free(p);
++ 		return;
++ 	    }
++ 	}
++ 	/* Retry with non-wide function (for Windows 98). */
++     }
++ #endif
+      if (!GetComputerName(s, &cch))
+  	vim_strncpy(s, "PC (Win32 Vim)", len - 1);
+  }
+*** ../vim-7.4.123/src/version.c	2013-12-11 18:18:01.000000000 +0100
+--- src/version.c	2013-12-11 18:20:03.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     124,
+  /**/
+
+-- 
+Don't read everything you believe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.125 b/7.4.125
new file mode 100644
index 0000000..04a0fe9
--- /dev/null
+++ b/7.4.125
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.125
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.125
+Problem:    Win32: Dealing with messages may not work for multi-byte chars.
+Solution:   Use pDispatchMessage(). (Ken Takata)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.124/src/os_win32.c	2013-12-11 18:21:41.000000000 +0100
+--- src/os_win32.c	2013-12-11 18:23:47.000000000 +0100
+***************
+*** 4282,4291 ****
+      {
+  	MSG	msg;
+  
+! 	if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
+  	{
+  	    TranslateMessage(&msg);
+! 	    DispatchMessage(&msg);
+  	}
+  
+  	/* write pipe information in the window */
+--- 4282,4291 ----
+      {
+  	MSG	msg;
+  
+! 	if (pPeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
+  	{
+  	    TranslateMessage(&msg);
+! 	    pDispatchMessage(&msg);
+  	}
+  
+  	/* write pipe information in the window */
+*** ../vim-7.4.124/src/version.c	2013-12-11 18:21:41.000000000 +0100
+--- src/version.c	2013-12-11 18:35:44.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     125,
+  /**/
+
+-- 
+Don't believe everything you hear or anything you say.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.126 b/7.4.126
new file mode 100644
index 0000000..c7acae7
--- /dev/null
+++ b/7.4.126
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.126
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.126
+Problem:    Compiler warnings for "const" and incompatible types.
+Solution:   Remove "const", add type cast. (Ken Takata)
+Files:	    src/os_win32.c
+
+
+*** ../vim-7.4.125/src/os_win32.c	2013-12-11 18:36:28.000000000 +0100
+--- src/os_win32.c	2013-12-12 20:19:39.000000000 +0100
+***************
+*** 3830,3836 ****
+  
+      static BOOL
+  vim_create_process(
+!     const char		*cmd,
+      DWORD		flags,
+      BOOL		inherit_handles,
+      STARTUPINFO		*si,
+--- 3830,3836 ----
+  
+      static BOOL
+  vim_create_process(
+!     char		*cmd,
+      DWORD		flags,
+      BOOL		inherit_handles,
+      STARTUPINFO		*si,
+***************
+*** 3853,3859 ****
+  		flags,			/* Creation flags */
+  		NULL,			/* Environment */
+  		NULL,			/* Current directory */
+! 		si,			/* Startup information */
+  		pi);			/* Process information */
+  	    vim_free(wcmd);
+  	    return ret;
+--- 3853,3859 ----
+  		flags,			/* Creation flags */
+  		NULL,			/* Environment */
+  		NULL,			/* Current directory */
+! 		(LPSTARTUPINFOW)si,	/* Startup information */
+  		pi);			/* Process information */
+  	    vim_free(wcmd);
+  	    return ret;
+*** ../vim-7.4.125/src/version.c	2013-12-11 18:36:28.000000000 +0100
+--- src/version.c	2013-12-12 20:21:27.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     126,
+  /**/
+
+-- 
+Microsoft is to software what McDonalds is to gourmet cooking
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.127 b/7.4.127
new file mode 100644
index 0000000..71ce694
--- /dev/null
+++ b/7.4.127
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.127
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.127
+Problem:    Perl 5.18 on Unix doesn't work.
+Solution:   Move workaround to after including vim.h. (Ken Takata)
+Files:      src/if_perl.xs
+
+
+*** ../vim-7.4.126/src/if_perl.xs	2013-12-11 17:20:14.000000000 +0100
+--- src/if_perl.xs	2013-12-14 11:41:56.000000000 +0100
+***************
+*** 24,36 ****
+  # define _USE_32BIT_TIME_T
+  #endif
+  
+- /* Work around for perl-5.18.
+-  * Don't include "perl\lib\CORE\inline.h" for now,
+-  * include it after Perl_sv_free2 is defined. */
+- #ifdef DYNAMIC_PERL
+- # define PERL_NO_INLINE_FUNCTIONS
+- #endif
+- 
+  /*
+   * Prevent including winsock.h.  perl.h tries to detect whether winsock.h is
+   * already included before including winsock2.h, because winsock2.h isn't
+--- 24,29 ----
+***************
+*** 44,49 ****
+--- 37,49 ----
+  
+  #include "vim.h"
+  
++ /* Work around for perl-5.18.
++  * Don't include "perl\lib\CORE\inline.h" for now,
++  * include it after Perl_sv_free2 is defined. */
++ #ifdef DYNAMIC_PERL
++ # define PERL_NO_INLINE_FUNCTIONS
++ #endif
++ 
+  #include <EXTERN.h>
+  #include <perl.h>
+  #include <XSUB.h>
+*** ../vim-7.4.126/src/version.c	2013-12-12 20:25:39.000000000 +0100
+--- src/version.c	2013-12-14 11:43:54.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     127,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+54. You start tilting your head sideways to smile. :-)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.128 b/7.4.128
new file mode 100644
index 0000000..ead1b67
--- /dev/null
+++ b/7.4.128
@@ -0,0 +1,66 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.128
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.128
+Problem:    Perl 5.18 for MSVC doesn't work.
+Solution:   Add check in makefile and define __inline. (Ken Takata)
+Files:	    src/Make_mvc.mak, src/if_perl.xs
+
+
+*** ../vim-7.4.127/src/Make_mvc.mak	2013-11-09 02:32:15.000000000 +0100
+--- src/Make_mvc.mak	2013-12-14 11:47:37.000000000 +0100
+***************
+*** 825,831 ****
+--- 825,836 ----
+  PERL_LIB = $(PERL_INCDIR)\perl.lib
+  !else
+  PERL_DLL = perl$(PERL_VER).dll
++ !if exist($(PERL_INCDIR)\perl$(PERL_VER).lib)
+  PERL_LIB = $(PERL_INCDIR)\perl$(PERL_VER).lib
++ !else
++ # For ActivePerl 5.18 and later
++ PERL_LIB = $(PERL_INCDIR)\libperl$(PERL_VER).a
++ !endif
+  !endif
+  
+  CFLAGS = $(CFLAGS) -DFEAT_PERL
+*** ../vim-7.4.127/src/if_perl.xs	2013-12-14 11:46:04.000000000 +0100
+--- src/if_perl.xs	2013-12-14 11:47:37.000000000 +0100
+***************
+*** 44,49 ****
+--- 44,54 ----
+  # define PERL_NO_INLINE_FUNCTIONS
+  #endif
+  
++ /* Work around for using MSVC and ActivePerl 5.18. */
++ #ifdef _MSC_VER
++ # define __inline__ __inline
++ #endif
++ 
+  #include <EXTERN.h>
+  #include <perl.h>
+  #include <XSUB.h>
+*** ../vim-7.4.127/src/version.c	2013-12-14 11:46:04.000000000 +0100
+--- src/version.c	2013-12-14 11:48:51.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     128,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+55. You ask your doctor to implant a gig in your brain.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.129 b/7.4.129
new file mode 100644
index 0000000..efe9a1c
--- /dev/null
+++ b/7.4.129
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.129
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.129
+Problem:    getline(-1) returns zero. (mvxxc)
+Solution:   Return an empty string.
+Files:	    src/eval.c
+
+
+*** ../vim-7.4.128/src/eval.c	2013-11-11 04:25:48.000000000 +0100
+--- src/eval.c	2013-12-14 12:11:27.000000000 +0100
+***************
+*** 11119,11124 ****
+--- 11119,11126 ----
+  {
+      char_u	*p;
+  
++     rettv->v_type = VAR_STRING;
++     rettv->vval.v_string = NULL;
+      if (retlist && rettv_list_alloc(rettv) == FAIL)
+  	return;
+  
+***************
+*** 11131,11138 ****
+  	    p = ml_get_buf(buf, start, FALSE);
+  	else
+  	    p = (char_u *)"";
+- 
+- 	rettv->v_type = VAR_STRING;
+  	rettv->vval.v_string = vim_strsave(p);
+      }
+      else
+--- 11133,11138 ----
+*** ../vim-7.4.128/src/version.c	2013-12-14 11:50:28.000000000 +0100
+--- src/version.c	2013-12-14 12:13:32.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     129,
+  /**/
+
+-- 
+Keyboard not found.  Think ENTER to continue.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.130 b/7.4.130
new file mode 100644
index 0000000..864d82c
--- /dev/null
+++ b/7.4.130
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.130
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.130
+Problem:    Relative line numbers mix up windows when using folds.
+Solution:   Use hasFoldingWin() instead of hasFolding(). (Lech Lorens)
+Files:	    src/misc2.c
+
+
+*** ../vim-7.4.129/src/misc2.c	2013-09-08 16:07:03.000000000 +0200
+--- src/misc2.c	2013-12-14 12:43:35.000000000 +0100
+***************
+*** 487,493 ****
+  	{
+  	    while (lnum > cursor)
+  	    {
+! 		(void)hasFolding(lnum, &lnum, NULL);
+  		/* if lnum and cursor are in the same fold,
+  		 * now lnum <= cursor */
+  		if (lnum > cursor)
+--- 487,493 ----
+  	{
+  	    while (lnum > cursor)
+  	    {
+! 		(void)hasFoldingWin(wp, lnum, &lnum, NULL, TRUE, NULL);
+  		/* if lnum and cursor are in the same fold,
+  		 * now lnum <= cursor */
+  		if (lnum > cursor)
+***************
+*** 499,505 ****
+  	{
+  	    while (lnum < cursor)
+  	    {
+! 		(void)hasFolding(lnum, NULL, &lnum);
+  		/* if lnum and cursor are in the same fold,
+  		 * now lnum >= cursor */
+  		if (lnum < cursor)
+--- 499,505 ----
+  	{
+  	    while (lnum < cursor)
+  	    {
+! 		(void)hasFoldingWin(wp, lnum, NULL, &lnum, TRUE, NULL);
+  		/* if lnum and cursor are in the same fold,
+  		 * now lnum >= cursor */
+  		if (lnum < cursor)
+*** ../vim-7.4.129/src/version.c	2013-12-14 12:17:34.000000000 +0100
+--- src/version.c	2013-12-14 12:44:27.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     130,
+  /**/
+
+-- 
+Over the years, I've developed my sense of deja vu so acutely that now
+I can remember things that *have* happened before ...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/7.4.131 b/7.4.131
new file mode 100644
index 0000000..ec04b85
--- /dev/null
+++ b/7.4.131
@@ -0,0 +1,113 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.131
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.131
+Problem:    Syncbind causes E315 errors in some situations. (Liang Li)
+Solution:   Set and restore curbuf in ex_syncbind(). (Christian Brabandt)
+Files:	    src/ex_docmd.c, src/testdir/test37.ok
+
+
+*** ../vim-7.4.130/src/ex_docmd.c	2013-12-11 17:44:33.000000000 +0100
+--- src/ex_docmd.c	2013-12-14 12:55:05.000000000 +0100
+***************
+*** 8054,8059 ****
+--- 8054,8061 ----
+  {
+  #ifdef FEAT_SCROLLBIND
+      win_T	*wp;
++     win_T	*save_curwin = curwin;
++     buf_T	*save_curbuf = curbuf;
+      long	topline;
+      long	y;
+      linenr_T	old_linenr = curwin->w_cursor.lnum;
+***************
+*** 8085,8097 ****
+  
+  
+      /*
+!      * set all scrollbind windows to the same topline
+       */
+-     wp = curwin;
+      for (curwin = firstwin; curwin; curwin = curwin->w_next)
+      {
+  	if (curwin->w_p_scb)
+  	{
+  	    y = topline - curwin->w_topline;
+  	    if (y > 0)
+  		scrollup(y, TRUE);
+--- 8087,8099 ----
+  
+  
+      /*
+!      * Set all scrollbind windows to the same topline.
+       */
+      for (curwin = firstwin; curwin; curwin = curwin->w_next)
+      {
+  	if (curwin->w_p_scb)
+  	{
++ 	    curbuf = curwin->w_buffer;
+  	    y = topline - curwin->w_topline;
+  	    if (y > 0)
+  		scrollup(y, TRUE);
+***************
+*** 8105,8111 ****
+  #endif
+  	}
+      }
+!     curwin = wp;
+      if (curwin->w_p_scb)
+      {
+  	did_syncbind = TRUE;
+--- 8107,8114 ----
+  #endif
+  	}
+      }
+!     curwin = save_curwin;
+!     curbuf = save_curbuf;
+      if (curwin->w_p_scb)
+      {
+  	did_syncbind = TRUE;
+*** ../vim-7.4.130/src/testdir/test37.ok	2010-05-15 13:04:10.000000000 +0200
+--- src/testdir/test37.ok	2013-12-14 12:54:57.000000000 +0100
+***************
+*** 27,33 ****
+  
+  . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
+  :set scrollbind
+- zt:
+- . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
+  :set scrollbind
+! . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
+--- 27,33 ----
+  
+  . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
+  :set scrollbind
+  :set scrollbind
+! . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
+! j:
+! . line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
+*** ../vim-7.4.130/src/version.c	2013-12-14 12:48:55.000000000 +0100
+--- src/version.c	2013-12-14 13:03:51.000000000 +0100
+***************
+*** 740,741 ****
+--- 740,743 ----
+  {   /* Add new patch number below this line */
++ /**/
++     131,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+57. You begin to wonder how on earth your service provider is allowed to call
+    200 hours per month "unlimited."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/README.patches b/README.patches
index 39ff134..d6405f8 100644
--- a/README.patches
+++ b/README.patches
@@ -117,3 +117,40 @@ Individual patches for Vim 7.4:
   1697  7.4.092  (after 7.4.088) can't build small version
   2993  7.4.093  configure can't use LuaJIT on ubuntu 12.04
   4837  7.4.094  configure may not find that -lint is needed for gettext()
+  3138  7.4.095  (after 7.4.093) regexp for LuaJIT version doesn't work on BSD
+  2294  7.4.096  can't change directory to an UNC path
+  1615  7.4.097  unexpected behavior change related to 'virtualedit'
+  8357  7.4.098  error for line numbers out of range when using ":'<,'>del"
+  3122  7.4.099  append in blockwise Visual mode with "$" is wrong
+  3069  7.4.100  NFA regexp doesn't handle backreference correctly
+  2899  7.4.101  using \1 in pattern goes one line too far
+  2128  7.4.102  crash when interrupting "z="
+  3846  7.4.103  dos installer escapes spaces in the diff command wrong
+  2823  7.4.104  ":help s/\_" reports an internal error
+  1792  7.4.105  completing a tag pattern may give an error for invalid pattern
+  1971  7.4.106  can't build with Ruby using Cygwin
+ 21498  7.4.107  Python try/catch doesn't catch Vim error in vim.eval()
+  5478  7.4.108  "zG" and "zW" leave temp files around on MS-Windows
+  3775  7.4.109  ColorScheme autocommand matches with the current buffer name
+  3703  7.4.110  "gUgn" cannot be repeeated
+  1709  7.4.111  memory leak in Python OptionsAssItem
+  1862  7.4.112  MS-Windows: defaults for 'dir' and 'bdir' do not include $TEMP
+  2561  7.4.113  MSVC static analysis gives warnings
+  3353  7.4.114  new GNU make directory change messages are different
+  1633  7.4.115  Zsh: expanding ~abc fails when the result contains a space
+  1381  7.4.116  'showcmd' does not show a typed space
+  8049  7.4.117  can't build with Cygwin/MingW and Perl 5.18
+  2394  7.4.118  redrawing status lines may causes recursive call
+  7060  7.4.119  Vim doesn't work well on OpenVMS
+  1702  7.4.120  (after 7.4.117) can't build with Perl 5.18 on Linux
+  1426  7.4.121  completion doesn't work for ":py3d" and ":py3f"
+  6071  7.4.122  Win32: :grep doesn't work when 'encoding' and ACP differ
+  1883  7.4.123  Win32: Getting user name does not use wide function
+  1730  7.4.124  Win32: Getting host name does not use wide function
+  1568  7.4.125  Win32: Dealing with messages may not work for multi-byte chars
+  1946  7.4.126  compiler warnings for "const" and incompatible types
+  1949  7.4.127  Perl 5.18 on Unix doesn't work
+  1948  7.4.128  Perl 5.18 for MSVC doesn't work
+  1499  7.4.129  getline(-1) returns zero
+  2064  7.4.130  relative line numbers mix up windows when using folds
+  3038  7.4.131  syncbind causes E315 errors in some situations
diff --git a/vim.spec b/vim.spec
index 5e8ff04..1ac73bb 100644
--- a/vim.spec
+++ b/vim.spec
@@ -1,4 +1,4 @@
-%define patchlevel 094
+%define patchlevel 131
 %if %{?WITH_SELINUX:0}%{!?WITH_SELINUX:1}
 %define WITH_SELINUX 1
 %endif
@@ -141,6 +141,43 @@ Patch091: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.091
 Patch092: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.092
 Patch093: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.093
 Patch094: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.094
+Patch095: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.095
+Patch096: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.096
+Patch097: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.097
+Patch098: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.098
+Patch099: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.099
+Patch100: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.100
+Patch101: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.101
+Patch102: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.102
+Patch103: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.103
+Patch104: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.104
+Patch105: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.105
+Patch106: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.106
+Patch107: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.107
+Patch108: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.108
+Patch109: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.109
+Patch110: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.110
+Patch111: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.111
+Patch112: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.112
+Patch113: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.113
+Patch114: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.114
+Patch115: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.115
+Patch116: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.116
+Patch117: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.117
+Patch118: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.118
+Patch119: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.119
+Patch120: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.120
+Patch121: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.121
+Patch122: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.122
+Patch123: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.123
+Patch124: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.124
+Patch125: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.125
+Patch126: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.126
+Patch127: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.127
+Patch128: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.128
+Patch129: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.129
+Patch130: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.130
+Patch131: ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.131
 
 Patch3000: vim-7.4-syntax.patch
 Patch3002: vim-7.1-nowarnings.patch
@@ -380,6 +417,43 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk
 %patch092 -p0
 %patch093 -p0
 %patch094 -p0
+%patch095 -p0
+%patch096 -p0
+%patch097 -p0
+%patch098 -p0
+%patch099 -p0
+%patch100 -p0
+%patch101 -p0
+%patch102 -p0
+%patch103 -p0
+%patch104 -p0
+%patch105 -p0
+%patch106 -p0
+%patch107 -p0
+%patch108 -p0
+%patch109 -p0
+%patch110 -p0
+%patch111 -p0
+%patch112 -p0
+%patch113 -p0
+%patch114 -p0
+%patch115 -p0
+%patch116 -p0
+%patch117 -p0
+%patch118 -p0
+%patch119 -p0
+%patch120 -p0
+%patch121 -p0
+%patch122 -p0
+%patch123 -p0
+%patch124 -p0
+%patch125 -p0
+%patch126 -p0
+%patch127 -p0
+%patch128 -p0
+%patch129 -p0
+%patch130 -p0
+%patch131 -p0
 
 # install spell files
 %if %{withvimspell}
@@ -880,6 +954,9 @@ rm -rf %{buildroot}
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
+* Tue Dec 17 2013 Karsten Hopp <karsten@redhat.com> 7.4.131-1
+- patchlevel 131
+
 * Wed Nov 20 2013 Karsten Hopp <karsten@redhat.com> 7.4.094-1
 - patchlevel 094