changeset 10449:222b1432814e v8.0.0118

commit https://github.com/vim/vim/commit/5162822914372fc916a93f85848c0c82209e7cec Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 1 23:03:28 2016 +0100 patch 8.0.0118 Problem: "make proto" adds extra function prototype. Solution: Add #ifdef.
author Christian Brabandt <cb@256bit.org>
date Thu, 01 Dec 2016 23:15:04 +0100
parents 923e383fa291
children 929f4fb443bc
files runtime/doc/change.txt runtime/doc/channel.txt runtime/doc/editing.txt runtime/doc/eval.txt runtime/doc/motion.txt runtime/doc/options.txt runtime/doc/starting.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/usr_41.txt runtime/doc/windows.txt runtime/syntax/c.vim src/misc2.c src/version.c uninstal.txt
diffstat 15 files changed, 88 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 8.0.  Last change: 2016 Oct 02
+*change.txt*    For Vim version 8.0.  Last change: 2016 Nov 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -684,6 +684,7 @@ g&			Synonym for `:%s//~/&` (repeat last
 							*:s_flags*
 The flags that you can use for the substitute commands:
 
+							*:&&*
 [&]	Must be the first one: Keep the flags from the previous substitute
 	command.  Examples: >
 		:&&
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -1,4 +1,4 @@
-*channel.txt*      For Vim version 8.0.  Last change: 2016 Nov 07
+*channel.txt*      For Vim version 8.0.  Last change: 2016 Dec 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -480,11 +480,6 @@ This depends on the system (on Unix this
 of a pipe causes the read end to get EOF).  To avoid this make the job sleep
 for a short while before it exits.
 
-Note that if the job exits before you read the output, the output may be lost.
-This depends on the system (on Unix this happens because closing the write end
-of a pipe causes the read end to get EOF).  To avoid this make the job sleep
-for a short while before it exits.
-
 The handler defined for "out_cb" will not receive stderr.  If you want to
 handle that separately, add an "err_cb" handler: >
     let job = job_start(command, {"out_cb": "MyHandler",
@@ -549,7 +544,7 @@ 9. Starting a job without a channel			*j
 
 To start another process without creating a channel: >
     let job = job_start(command,
-    	\ {"in_io": "null", "out_io": "null", "err_io": "null"})
+	\ {"in_io": "null", "out_io": "null", "err_io": "null"})
 
 This starts {command} in the background, Vim does not wait for it to finish.
 
@@ -611,6 +606,10 @@ See |job_setoptions()| and |ch_setoption
 "close_cb": handler	Callback for when the channel is closed.  Same as
 			"close_cb" on |ch_open()|, see |close_cb|.
 						*job-exit_cb*
+"drop"			Specifies when to drop messages.  Same as "drop" on
+			|ch_open()|, see |channel-drop|.  For "auto" the
+			exit_cb is not considered.
+
 "exit_cb": handler	Callback for when the job ends.  The arguments are the
 			job and the exit status.
 			Vim checks up to 10 times per second for jobs that
@@ -644,7 +643,7 @@ See |job_setoptions()| and |ch_setoption
 "channel": {channel}	Use an existing channel instead of creating a new one.
 			The parts of the channel that get used for the new job
 			will be disconnected from what they were used before.
-			If the channel was still use by another job this may
+			If the channel was still used by another job this may
 			cause I/O errors.
 			Existing callbacks and other settings remain.
 
@@ -662,7 +661,7 @@ See |job_setoptions()| and |ch_setoption
 "out_io": "null"	disconnect stdout (goes to /dev/null)
 "out_io": "pipe"	stdout is connected to the channel (default)
 "out_io": "file"	stdout writes to a file
-"out_io": "buffer" 	stdout appends to a buffer (see below)
+"out_io": "buffer"	stdout appends to a buffer (see below)
 "out_name": "/path/file" the name of the file or buffer to write to
 "out_buf": number	the number of the buffer to write to
 "out_modifiable": 0	when writing to a buffer, 'modifiable' will be off
@@ -675,7 +674,7 @@ See |job_setoptions()| and |ch_setoption
 "err_io": "null"	disconnect stderr  (goes to /dev/null)
 "err_io": "pipe"	stderr is connected to the channel (default)
 "err_io": "file"	stderr writes to a file
-"err_io": "buffer" 	stderr appends to a buffer (see below)
+"err_io": "buffer"	stderr appends to a buffer (see below)
 "err_name": "/path/file" the name of the file or buffer to write to
 "err_buf": number	the number of the buffer to write to
 "err_modifiable": 0	when writing to a buffer, 'modifiable' will be off
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 8.0.  Last change: 2016 Sep 27
+*editing.txt*   For Vim version 8.0.  Last change: 2016 Nov 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -977,12 +977,12 @@ WRITING WITH MULTIPLE BUFFERS				*buffer
 
 							*:wa* *:wall*
 :wa[ll]			Write all changed buffers.  Buffers without a file
-			name or which are readonly are not written. {not in
-			Vi}
+			name cause an error message.  Buffers which are
+			readonly are not written. {not in Vi}
 
 :wa[ll]!		Write all changed buffers, even the ones that are
 			readonly.  Buffers without a file name are not
-			written. {not in Vi}
+			written and cause an error message. {not in Vi}
 
 
 Vim will warn you if you try to overwrite a file that has been changed
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.0.  Last change: 2016 Nov 04
+*eval.txt*	For Vim version 8.0.  Last change: 2016 Nov 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3084,7 +3084,7 @@ ch_log({msg} [, {handle}])					*ch_log()
 		|ch_logfile()|.
 		When {handle} is passed the channel number is used for the
 		message.
-		{handle} can be Channel or a Job that has a Channel.  The
+		{handle} can be a Channel or a Job that has a Channel.  The
 		Channel must be open for the channel number to be used.
 
 ch_logfile({fname} [, {mode}])					*ch_logfile()*
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 8.0.  Last change: 2016 Jul 12
+*motion.txt*    For Vim version 8.0.  Last change: 2016 Nov 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -915,6 +915,7 @@ was made yet in the current file.
 			then the position can be near the end of what the
 			command changed.  For example when inserting a word,
 			the position will be on the last character.
+			To jump to older changes use |g;|.
 			{not in Vi}
 
 							*'(* *`(*
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.0.  Last change: 2016 Oct 12
+*options.txt*	For Vim version 8.0.  Last change: 2016 Nov 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -242,7 +242,7 @@ opt+=val" the expansion is done before t
 Handling of local options			*local-options*
 
 Some of the options only apply to a window or buffer.  Each window or buffer
-has its own copy of this option, thus can each have their own value.  This
+has its own copy of this option, thus each can have its own value.  This
 allows you to set 'list' in one window but not in another.  And set
 'shiftwidth' to 3 in one buffer and 4 in another.
 
@@ -3871,6 +3871,8 @@ A jump table for the options with a shor
 
 	The format of this option is like that of 'statusline'.
 	'guitabtooltip' is used for the tooltip, see below.
+	The expression will be evaluated in the |sandbox| when set from a
+	modeline, see |sandbox-option|.
 
 	Only used when the GUI tab pages line is displayed.  'e' must be
 	present in 'guioptions'.  For the non-GUI tab pages line 'tabline' is
@@ -5699,6 +5701,8 @@ A jump table for the options with a shor
 			and |+postscript| features}
 	Expression used to print the PostScript produced with |:hardcopy|.
 	See |pexpr-option|.
+	This option cannot be set from a |modeline| or in the |sandbox|, for
+	security reasons.
 
 						*'printfont'* *'pfn'*
 'printfont' 'pfn'	string	(default "courier")
@@ -7818,7 +7822,7 @@ A jump table for the options with a shor
 	Amiga console, Win32 console, all GUI versions and terminals with a
 	non-empty 't_ts' option).
 	When Vim was compiled with HAVE_X11 defined, the original title will
-	be restored if possible |X11|.
+	be restored if possible, see |X11|.
 	When this option contains printf-style '%' items, they will be
 	expanded according to the rules used for 'statusline'.
 	Example: >
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 8.0.  Last change: 2016 Sep 09
+*starting.txt*  For Vim version 8.0.  Last change: 2016 Nov 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1357,6 +1357,7 @@
 --servername	remote.txt	/*--servername*
 --socketid	starting.txt	/*--socketid*
 --startuptime	starting.txt	/*--startuptime*
+--ttyfail	starting.txt	/*--ttyfail*
 --version	starting.txt	/*--version*
 --windowid	starting.txt	/*--windowid*
 -A	starting.txt	/*-A*
@@ -1844,6 +1845,7 @@ 90.5	usr_90.txt	/*90.5*
 :$	cmdline.txt	/*:$*
 :%	cmdline.txt	/*:%*
 :&	change.txt	/*:&*
+:&&	change.txt	/*:&&*
 :'	cmdline.txt	/*:'*
 :,	cmdline.txt	/*:,*
 :.	cmdline.txt	/*:.*
@@ -5248,6 +5250,7 @@ catch-text	eval.txt	/*catch-text*
 cc	change.txt	/*cc*
 ceil()	eval.txt	/*ceil()*
 ch.vim	syntax.txt	/*ch.vim*
+ch_canread()	eval.txt	/*ch_canread()*
 ch_close()	eval.txt	/*ch_close()*
 ch_close_in()	eval.txt	/*ch_close_in()*
 ch_evalexpr()	eval.txt	/*ch_evalexpr()*
@@ -5295,6 +5298,7 @@ channel-close	channel.txt	/*channel-clos
 channel-close-in	channel.txt	/*channel-close-in*
 channel-commands	channel.txt	/*channel-commands*
 channel-demo	channel.txt	/*channel-demo*
+channel-drop	channel.txt	/*channel-drop*
 channel-functions	usr_41.txt	/*channel-functions*
 channel-mode	channel.txt	/*channel-mode*
 channel-more	channel.txt	/*channel-more*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.0.  Last change: 2016 Nov 17
+*todo.txt*      For Vim version 8.0.  Last change: 2016 Dec 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -35,22 +35,7 @@ there will not be repeated below, unless
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Test_help_complete sometimes fails on MS-Windows:
-function RunTheTest[9]..Test_help_complete line 22: Expected ['h test-char@ab',
-'h test-char@en', 'h test-col@ab', 'h test-col@en'] but got ['h test-char@en', '
-h test-char@en\t', 'h test-col@ab', 'h test-col@en']
-Appears to be related to calling feedkeys() with exactly 8 characters.
-
-Patch for GTK3: Kazunobu Kuriyama, 14 Nov.
-
-Patch for fix breakindent bug (Christian, Nov 15)
-
 +channel:
-- Skip checking if job ended if there aren't any. (ichizok, 2016 Nov 7, #1196)
-- problem with channel callback getting job, while the job was already
-  deleted.  #1242.  Fix in #1245 (ichizok), but is that correct?
-  Perhaps just replace job_still_alive() with job_still_useful()?
-  That's not sufficient.
 - Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026)
 - Add 'cwd' argument to start_job(): directory to change to in the child.
     check for valid directory before forking.
@@ -115,25 +100,26 @@ Regexp problems:
 - Difference between two engines: ".*\zs\/\@>\/" on text "///"
   (Chris Paul, 2016 Nov 13)  New engine not greedy enough?
 
-Patch to support nested namespace syntax. (Pauli, 2016 Oct 30, #1214)
-
-Patch to fix popup menu positioning. (Hirohito Higashi, 2016 Nov 7, #1241)
-
-Patch to make help tag jumps keep language. (Tatsuki, #1249)
-Test by Hirohito Higashi.
+'] mark invalid after undoing insert "hello".
 
 Make html indent file use javascript indent, now that it's not just cindent.
 #1220
 
+Use __sun instead of sun define check.  #1296
+
 Patch to use buffer id for system() and systemlist() (LemonBoy, 2016 Nov 7,
 #1240)
 
+When using symbolic links, a package path will not be inserted at the right
+position in 'runtimepath'. (Dugan Chen, 2016 Nov 18)
+
 json_encode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
 What if there is an invalid character?
 
 Bug: ":earlier 100d" doesn't work after using undo file.
 (Pavol Juhas, 2016 Nov 15, #1254)
 Fix by Christian, but lacks a test.
+Test by Pavol Juhas, Nov 22.
 
 Bug: Json with same key should not give internal error. (Lcd, 2016 Oct 26)
 Make dict_add give a duplicate key error.
@@ -162,6 +148,9 @@ Error in test_startup_utf8 on Solaris. (
 Screen updated delayed when using CTRL-O u in Insert mode.
 (Barlik, #1191)  Perhaps because status message?
 
+Patch to fix that empty first tab is not in session.
+(Hirohito Higashi, 2016 Nov 25, #1282)
+
 Patch for restoring wide characters in the console buffer.
 (Ken Takata, 2016 Jun 7)
 
@@ -187,6 +176,11 @@ Is there another solution?
 On MS-Windows with 'clipboard' set to "unnamed" this doesn't work to double
 lines: :g/^/normal yyp   On Unix it works OK.  (Bryce Orgill, 2016 Nov 5)
 
+Patch for wrong cursor position on wrapped line, involving breakindent.
+(Ozaki Kiichi, 2016 Nov 25)
+
+Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
+
 Invalid behavior with NULL list. (Nikolai Pavlov, #768)
 E.g. deepcopy(test_null_list())
 
@@ -195,6 +189,13 @@ Patch to make it possible to extend a li
 
 Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24)
 
+Patch to add trim() function. (Bukn, 2016 Nov 25, #1280)
+
+Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)
+
+On Windows buffer completion sees backslash as escape char instead of path
+separator. (Toffanim, 2016 Nov 24, #1274)
+
 min() and max() spawn lots of error messages if sorted list/dictionary
 contains invalid data (Nikolay Pavlov, 2016 Sep 4, #1039)
 
@@ -272,6 +273,9 @@ Lakshmanan, 2016 Aug 25)
 MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
 Otherwise task flickers in taskbar.
 
+Bogus characters inserted when triggering indent while changing test.
+(Vitor Antunes, 2016 Nov 22, #1269)
+
 Should make ":@r" handle line continuation. (Cesar Romani, 2016 Jun 26)
 Also for ":@.".
 
@@ -280,6 +284,9 @@ Repeating 'opfunc' in a function only wo
 Have a way to get the call stack, in a function and from an exception.
 #1125
 
+Patch to add 'pythonhome' and 'pythonthreehome' options. (Kazuki Sakamoto,
+2016 Nov 21, #1266)
+
 Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
 times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
 
@@ -1306,6 +1313,7 @@ 2010 Oct 24)
 
 Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
 Alternative from Christian Brabandt. (2010 Sep 19)
+New one from Yasuhiro Matsumoto, #1277.
 
 Messages in message.txt are highlighted as examples.
 
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.0.  Last change: 2016 Sep 01
+*usr_41.txt*	For Vim version 8.0.  Last change: 2016 Nov 29
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -930,6 +930,7 @@ Testing:				    *test-functions*
 	test_null_string()	return a null String
 
 Inter-process communication:		    *channel-functions*
+	ch_canread()		check if there is something to read
 	ch_open()		open a channel
 	ch_close()		close a channel
 	ch_close_in()		close the in part of a channel
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 8.0.  Last change: 2016 Oct 21
+*windows.txt*   For Vim version 8.0.  Last change: 2016 Dec 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -696,6 +696,8 @@ can also get to them with the buffer lis
 		- If the file is not open in a window edit the file in the
 		  current window.  If the current buffer can't be |abandon|ed,
 		  the window is split first.
+		- Windows that are not in the argument list or are not full
+		  width will be closed if possible.
 		The |argument-list| is set, like with the |:next| command.
 		The purpose of this command is that it can be used from a
 		program that wants Vim to edit another file, e.g., a debugger.
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2016 Nov 17
+" Last Change:	2016 Nov 18
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -363,23 +363,23 @@ syn match	cPreConditMatch	display "^\s*\
 if !exists("c_no_if0")
   syn cluster	cCppOutInGroup	contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
   syn region	cCppOutWrapper	start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
-  syn region	cCppOutIf	contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\zs\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
+  syn region	cCppOutIf	contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
   if !exists("c_no_if0_fold")
     syn region	cCppOutIf2	contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
   else
     syn region	cCppOutIf2	contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
   endif
-  syn region	cCppOutElse	contained matchgroup=cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*\(else\|elif\)" end="^\s*\zs\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
+  syn region	cCppOutElse	contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
   syn region	cCppInWrapper	start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
-  syn region	cCppInIf	contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\zs\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
+  syn region	cCppInIf	contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
   if !exists("c_no_if0_fold")
-    syn region	cCppInElse	contained start="^\s*\zs\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
+    syn region	cCppInElse	contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
   else
-    syn region	cCppInElse	contained start="^\s*\zs\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
+    syn region	cCppInElse	contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
   endif
-  syn region	cCppInElse2	contained matchgroup=cCppInWrapper start="^\s*\zs\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\zs\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
-  syn region	cCppOutSkip	contained start="^\s*\zs\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\zs\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
-  syn region	cCppInSkip	contained matchgroup=cCppInWrapper start="^\s*\zs\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\zs\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
+  syn region	cCppInElse2	contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
+  syn region	cCppOutSkip	contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
+  syn region	cCppInSkip	contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
 endif
 syn region	cIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
 syn match	cIncluded	display contained "<[^>]*>"
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -6243,7 +6243,8 @@ parse_queued_messages(void)
 }
 #endif
 
-#ifdef ELAPSED_TIMEVAL  /* no PROTO here, proto is defined in vim.h */
+#ifndef PROTO  /* proto is defined in vim.h */
+# ifdef ELAPSED_TIMEVAL
 /*
  * Return time in msec since "start_tv".
  */
@@ -6256,9 +6257,9 @@ elapsed(struct timeval *start_tv)
     return (now_tv.tv_sec - start_tv->tv_sec) * 1000L
 	 + (now_tv.tv_usec - start_tv->tv_usec) / 1000L;
 }
-#endif
-
-#ifdef ELAPSED_TICKCOUNT
+# endif
+
+# ifdef ELAPSED_TICKCOUNT
 /*
  * Return time in msec since "start_tick".
  */
@@ -6269,4 +6270,5 @@ elapsed(DWORD start_tick)
 
     return (long)now - (long)start_tick;
 }
-#endif
+# endif
+#endif
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    118,
+/**/
     117,
 /**/
     116,
--- a/uninstal.txt
+++ b/uninstal.txt
@@ -17,7 +17,7 @@ 3. By hand.
    have to use uninstal.exe.
 
 It's recommended to use the method that matches with how you installed Vim.
-Thus if you installed Vim by hand, deleted it by hand.
+Thus if you installed Vim by hand, delete it by hand.
 
 The first two methods should be available from the Add/Remove software window
 and the Vim entry in the Start menu.  If these have been removed already, find
@@ -33,8 +33,8 @@ 1. Remove the "Edit with Vim" popup menu
    menu entry.  You only need to run uninstal.exe when you have installed the
    menu entry.  You can also run uninstal.exe from the Control panel with the
    Add/Remove programs application.
-   Note that uninstal.exe offers you to uninstal other items.  You can skip
-   this.
+   Note that uninstal.exe offers you the option to uninstal other items.  You
+   can skip this.
 
 2. Only if you have used the OLE version of gvim: Remove the registration of
    this program by running "gvim -unregister" in a console window.
@@ -46,7 +46,7 @@ 3. Delete the executables.  If you copie
    If you created .bat files when installing Vim, also search for vim.bat,
    gvim.bat, etc.
 
-4. If you completely want to delete vim, and are not going to install another
+4. If you want to completely delete vim, and are not going to install another
    version, you can delete the vimrc files that you created.  These are
    normally located in a directory like "C:\vim".  If the $VIM environment
    variable is set, it will tell the name of the directory.  Normally you can