Updated runtime files.
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index dea70a3..c3978fa 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.4.  Last change: 2016 Mar 26
+*autocmd.txt*   For Vim version 7.4.  Last change: 2016 Apr 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -539,6 +539,9 @@
 				versions}
 							*CursorHoldI*
 CursorHoldI			Just like CursorHold, but in Insert mode.
+				Not triggered when waiting for another key,
+				e.g. after CTRL-V, and not when in CTRL-X mode
+				|insert_expand|.
 
 							*CursorMoved*
 CursorMoved			After the cursor was moved in Normal or Visual
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 2280f65..02f3139 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.4.  Last change: 2016 Mar 08
+*change.txt*    For Vim version 7.4.  Last change: 2016 Apr 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -852,7 +852,7 @@
   :s/abcde/abc^Mde/		 modifies "abcde"    to "abc", "de" (two lines)
   :s/$/\^M/			 modifies "abcde"    to "abcde^M"
   :s/\w\+/\u\0/g		 modifies "bla bla"  to "Bla Bla"
-  :s/\w\+/\L\u/g		 modifies "BLA bla"  to "Bla Bla"
+  :s/\w\+/\L\u\0/g		 modifies "BLA bla"  to "Bla Bla"
 
 Note: "\L\u" can be used to capitalize the first letter of a word.  This is
 not compatible with Vi and older versions of Vim, where the "\u" would cancel
@@ -1205,7 +1205,7 @@
 register writes to register "0.
 {Vi: register contents are lost when changing files, no '"'}
 
-2. Numbered registers "0 to "9		*quote_number* *quote0*	*quote1*
+2. Numbered registers "0 to "9		*quote_number* *quote0* *quote1*
 					*quote2* *quote3* *quote4* *quote9*
 Vim fills these registers with text from yank and delete commands.
    Numbered register 0 contains the text from the most recent yank command,
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index cc4bc90..e91a403 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -200,10 +200,10 @@
 When the channel can't be opened you will get an error message.  There is a
 difference between MS-Windows and Unix: On Unix when the port doesn't exist
 ch_open() fails quickly.  On MS-Windows "waittime" applies.
-*E898* *E899* *E900* *E901* *E902*
+*E898* *E901* *E902*
 
 If there is an error reading or writing a channel it will be closed.
-*E896* *E630* *E631* 
+*E630* *E631* 
 
 ==============================================================================
 4. Using a JSON or JS channel					*channel-use*
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index d9ce12a..3610a0e 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1221,7 +1221,7 @@
 
 If you want to always use ":confirm", set the 'confirm' option.
 
-			*:browse* *:bro* *E338* *E614* *E615* *E616* *E578*
+			*:browse* *:bro* *E338* *E614* *E615* *E616*
 :bro[wse] {command}	Open a file selection dialog for an argument to
 			{command}.  At present this works for |:e|, |:w|,
 			|:wall|, |:wq|, |:wqall|, |:x|, |:xall|, |:exit|,
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 2d7beb7..3e99858 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.4.  Last change: 2016 Apr 14
+*eval.txt*	For Vim version 7.4.  Last change: 2016 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -752,7 +752,7 @@
 equal" and "is" can be used.  This compares the key/values of the |Dictionary|
 recursively.  Ignoring case means case is ignored when comparing item values.
 
-							*E693* *E694*
+							*E694*
 A |Funcref| can only be compared with a |Funcref| and only "equal" and "not
 equal" can be used.  Case is never ignored.  Whether arguments or a Dictionary
 are bound (with a partial) is ignored.  This is so that when a function is
@@ -2127,14 +2127,17 @@
 str2float({expr})		Float	convert String to Float
 str2nr({expr} [, {base}])	Number	convert String to Number
 strchars({expr} [, {skipcc}])	Number	character length of the String {expr}
+strcharpart({str}, {start}[, {len}])
+				String	{len} characters of {str} at {start}
 strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
 strftime({format}[, {time}])	String	time in specified format
+strgetchar({str}, {index})	Number	get char {index} from {str}
 stridx({haystack}, {needle}[, {start}])
 				Number	index of {needle} in {haystack}
 string({expr})			String	String representation of {expr} value
 strlen({expr})			Number	length of the String {expr}
-strpart({src}, {start}[, {len}])
-				String	{len} characters of {src} at {start}
+strpart({str}, {start}[, {len}])
+				String	{len} characters of {str} at {start}
 strridx({haystack}, {needle} [, {start}])
 				Number	last index of {needle} in {haystack}
 strtrans({expr})		String	translate string to make it printable
@@ -2551,7 +2554,9 @@
 		same: >
 			let s = strpart(str, byteidx(str, 3))
 			echo strpart(s, 0, byteidx(s, 1))
-<		If there are less than {nr} characters -1 is returned.
+<		Also see |strgetchar()| and |strcharpart()|.
+
+		If there are less than {nr} characters -1 is returned.
 		If there are exactly {nr} characters the length of the string
 		in bytes is returned.
 
@@ -3418,6 +3423,10 @@
 			will behave as if <Esc> is typed, to avoid getting
 			stuck, waiting for a character to be typed before the
 			script continues.
+		'!'	When used with 'x' will not end Insert mode. Can be
+			used in a test when a timer is set to exit Insert mode
+			a little later.  Useful for testing CursorHoldI.
+
 		Return value is always 0.
 
 filereadable({file})					*filereadable()*
@@ -4100,16 +4109,21 @@
 		The result is a String, which is the contents of register
 		{regname}.  Example: >
 			:let cliptext = getreg('*')
-<		getreg('=') returns the last evaluated value of the expression
+<		When {regname} was not set the result is a empty string.
+
+		getreg('=') returns the last evaluated value of the expression
 		register.  (For use in maps.)
 		getreg('=', 1) returns the expression itself, so that it can
 		be restored with |setreg()|.  For other registers the extra
 		argument is ignored, thus you can always give it.
-		If {list} is present and non-zero result type is changed to 
-		|List|. Each list item is one text line. Use it if you care
+
+		If {list} is present and non-zero, the result type is changed
+		to |List|. Each list item is one text line. Use it if you care
 		about zero bytes possibly present inside register: without
 		third argument both NLs and zero bytes are represented as NLs
 		(see |NL-used-for-Nul|).
+		When the register was not set an empty list is returned.
+
 		If {regname} is not specified, |v:register| is used.
 
 
@@ -5590,7 +5604,6 @@
 		This can be used to avoid some things that would remove the
 		popup menu.
 
-							*E860*
 py3eval({expr})						*py3eval()*
 		Evaluate Python expression {expr} and return its result
 		converted to Vim data structures.
@@ -6652,7 +6665,6 @@
 		counted separately.
 		When {skipcc} set to 1, Composing characters are ignored.
 		Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
-
 		
 		{skipcc} is only available after 7.4.755.  For backward
 		compatibility, you can define a wrapper function: >
@@ -6670,6 +6682,13 @@
 		      endfunction
 		    endif
 <
+strcharpart({src}, {start}[, {len}])			*strcharpart()*
+		Like |strpart()| but using character index and length instead
+		of byte index and length.
+		When a character index is used where a character does not
+		exist it is assumed to be one byte.  For example: >
+			strcharpart('abc', -1, 2)
+<		results in 'a'.
 
 strdisplaywidth({expr}[, {col}])			*strdisplaywidth()*
 		The result is a Number, which is the number of display cells
@@ -6703,6 +6722,12 @@
 <		Not available on all systems.  To check use: >
 			:if exists("*strftime")
 
+strgetchar({str}, {index})				*strgetchar()*
+		Get character {index} from {str}.  This uses a character
+		index, not a byte index.  Composing characters are considered
+		separate characters here.
+		Also see |strcharpart()| and |strchars()|.
+
 stridx({haystack}, {needle} [, {start}])		*stridx()*
 		The result is a Number, which gives the byte index in
 		{haystack} of the first occurrence of the String {needle}.
@@ -6752,14 +6777,17 @@
 strpart({src}, {start}[, {len}])			*strpart()*
 		The result is a String, which is part of {src}, starting from
 		byte {start}, with the byte length {len}.
-		When non-existing bytes are included, this doesn't result in
-		an error, the bytes are simply omitted.
+		To count characters instead of bytes use |strcharpart()|.
+
+		When bytes are selected which do not exist, this doesn't
+		result in an error, the bytes are simply omitted.
 		If {len} is missing, the copy continues from {start} till the
 		end of the {src}. >
 			strpart("abcdefg", 3, 2)    == "de"
 			strpart("abcdefg", -2, 4)   == "ab"
 			strpart("abcdefg", 5, 4)    == "fg"
 			strpart("abcdefg", 3)	    == "defg"
+
 <		Note: To get the first character, {start} must be 0.  For
 		example, to get three bytes under and after the cursor: >
 			strpart(getline("."), col(".") - 1, 3)
@@ -8422,14 +8450,6 @@
 				endfor
 <			Note that reordering the list (e.g., with sort() or
 			reverse()) may have unexpected effects.
-			Note that the type of each list item should be
-			identical to avoid errors for the type of {var}
-			changing.  Unlet the variable at the end of the loop
-			to allow multiple item types: >
-				for item in ["foo", ["bar"]]
-				   echo item
-				   unlet item  " E706 without this
-				endfor
 
 :for [{var1}, {var2}, ...] in {listlist}
 :endfo[r]
diff --git a/runtime/doc/if_cscop.txt b/runtime/doc/if_cscop.txt
index d8dc48f..695b24a 100644
--- a/runtime/doc/if_cscop.txt
+++ b/runtime/doc/if_cscop.txt
@@ -97,8 +97,8 @@
 
 The available subcommands are:
 
-			*E563* *E564* *E566* *E568* *E569* *E622* *E623*
-			*E625* *E626* *E609*
+			*E563* *E564* *E566* *E568* *E622* *E623* *E625*
+			*E626* *E609*
     add   : Add a new cscope database/connection.
 
 	USAGE	:cs add {file|dir} [pre-path] [flags]
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index 3d91814..cec23db 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -734,7 +734,7 @@
 	:py3 print("Hello")
 <							*:py3file*
 The `:py3file` command works similar to `:pyfile`.
-							*:py3do* *E863*
+							*:py3do*
 The `:py3do` command works similar to `:pydo`.
 
 
diff --git a/runtime/doc/if_tcl.txt b/runtime/doc/if_tcl.txt
index a7a61df..685c3c2 100644
--- a/runtime/doc/if_tcl.txt
+++ b/runtime/doc/if_tcl.txt
@@ -16,7 +16,7 @@
 8. Examples				|tcl-examples|
 9. Dynamic loading			|tcl-dynamic|
 
-{Vi does not have any of these commands} *E280* *E281*
+{Vi does not have any of these commands} *E280*
 
 The Tcl interface only works when Vim was compiled with the |+tcl| feature.
 
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 76ff93f..c636b7c 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.4.  Last change: 2016 Mar 12
+*index.txt*     For Vim version 7.4.  Last change: 2016 Apr 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -49,6 +49,7 @@
 |i_CTRL-G_k|	CTRL-G k	line up, to column where inserting started
 |i_CTRL-G_k|	CTRL-G <Up>	line up, to column where inserting started
 |i_CTRL-G_u|	CTRL-G u	start new undoable edit
+|i_CTRL-G_U|	CTRL-G U	don't break undo with next cursor movement
 |i_<BS>|	<BS>		delete character before the cursor
 |i_digraph|	{char1}<BS>{char2}
 				enter digraph (only when 'digraph' option set)
@@ -859,6 +860,7 @@
 ------------------------------------------------------------------------------
 |v_CTRL-\_CTRL-N| CTRL-\ CTRL-N	   stop Visual mode
 |v_CTRL-\_CTRL-G| CTRL-\ CTRL-G	   go to mode specified with 'insertmode'
+|v_CTRL-A|	CTRL-A		2  add N to number in highlighted text
 |v_CTRL-C|	CTRL-C		   stop Visual mode
 |v_CTRL-G|	CTRL-G		   toggle between Visual mode and Select mode
 |v_<BS>|	<BS>		2  Select mode: delete highlighted area
@@ -867,6 +869,7 @@
 				   command
 |v_CTRL-V|	CTRL-V		   make Visual mode blockwise or stop Visual
 				   mode
+|v_CTRL-X|	CTRL-X		2  subtract N from number in highlighted text
 |v_<Esc>|	<Esc>		   stop Visual mode
 |v_CTRL-]|	CTRL-]		   jump to highlighted tag
 |v_!|		!{filter}	2  filter the highlighted lines through the
@@ -923,6 +926,8 @@
 |v_a}|		a}		   same as aB
 |v_c|		c		2  delete highlighted area and start insert
 |v_d|		d		2  delete highlighted area
+|v_g_CTRL-A|	g CTRL-A	2  add N to number in highlighted text
+|v_g_CTRL-X|	g CTRL-X	2  subtract N from number in highlighted text
 |v_gJ|		gJ		2  join the highlighted lines without
 				   inserting spaces
 |v_gq|		gq		2  format the highlighted lines
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 4e7a784..3fd22f6 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1358,7 +1358,7 @@
 Note that -range=N and -count=N are mutually exclusive - only one should be
 specified.
 
-					*E889* *:command-addr*
+					*:command-addr*
 It is possible that the special characters in the range like ., $ or % which
 by default correspond to the current line, last line and the whole buffer,
 relate to arguments, (loaded) buffers, windows or tab pages.
diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt
index 74bdc34..7455f2f 100644
--- a/runtime/doc/netbeans.txt
+++ b/runtime/doc/netbeans.txt
@@ -827,7 +827,7 @@
 These errors occur when a message violates the protocol:
 *E627* *E628* *E629* *E632* *E633* *E634* *E635* *E636*
 *E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646*
-*E647* *E648* *E649* *E650* *E651* *E652* *E653* *E654*
+*E647* *E648* *E649* *E650* *E651* *E652*
 
 
 ==============================================================================
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index b354ddf..80d2360 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.4.  Last change: 2016 Apr 12
+*options.txt*	For Vim version 7.4.  Last change: 2016 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4863,6 +4863,7 @@
 			feature}
 	Specifies the name of the Lua shared library. The default is
 	DYNAMIC_LUA_DLL, which was specified at compile time.
+	Environment variables are expanded |:set_env|.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
@@ -5030,7 +5031,7 @@
 	without a limit.
 	On 64 bit machines higher values might work.  But hey, do you really
 	need more than 2 Gbyte for text editing?  Keep in mind that text is
-	stored in the swap file, one can edit files > 2 Gbyte anyay.  We do
+	stored in the swap file, one can edit files > 2 Gbyte anyway.  We do
 	need the memory to store undo info.
 	Also see 'maxmem'.
 
@@ -5590,6 +5591,7 @@
 			feature}
 	Specifies the name of the Perl shared library. The default is
 	DYNAMIC_PERL_DLL, which was specified at compile time.
+	Environment variables are expanded |:set_env|.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
@@ -5727,6 +5729,7 @@
 			feature}
 	Specifies the name of the Python 2.x shared library. The default is
 	DYNAMIC_PYTHON_DLL, which was specified at compile time.
+	Environment variables are expanded |:set_env|.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
@@ -5738,6 +5741,7 @@
 			feature}
 	Specifies the name of the Python 3 shared library. The default is
 	DYNAMIC_PYTHON3_DLL, which was specified at compile time.
+	Environment variables are expanded |:set_env|.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
@@ -5968,6 +5972,7 @@
 			feature}
 	Specifies the name of the Ruby shared library. The default is
 	DYNAMIC_RUBY_DLL, which was specified at compile time.
+	Environment variables are expanded |:set_env|.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
@@ -7462,6 +7467,7 @@
 			feature}
 	Specifies the name of the Tcl shared library. The default is
 	DYNAMIC_TCL_DLL, which was specified at compile time.
+	Environment variables are expanded |:set_env|.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 9cb6e11..e77c1c2 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -576,7 +576,7 @@
 matched and in what way.  This is called a multi.  See |/multi| for an
 overview.
 
-						*/star* */\star* *E56*
+							*/star* */\star*
 *	(use \* when 'magic' is not set)
 	Matches 0 or more of the preceding atom, as many as possible.
 	Example  'nomagic'	matches ~
@@ -596,7 +596,7 @@
 	the end of the file and then tries matching "END", backing up one
 	character at a time.
 
-							*/\+* *E57*
+							*/\+*
 \+	Matches 1 or more of the preceding atom, as many as possible. {not in
 	Vi}
 	Example		matches ~
@@ -612,7 +612,7 @@
 \?	Just like \=.  Cannot be used when searching backwards with the "?"
 	command. {not in Vi}
 
-					*/\{* *E58* *E60* *E554* *E870*
+					*/\{* *E60* *E554* *E870*
 \{n,m}	Matches n to m of the preceding atom, as many as possible
 \{n}	Matches n of the preceding atom
 \{n,}	Matches at least n of the preceding atom, as many as possible
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 145c918..3f705d4 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.4.  Last change: 2016 Feb 16
+*pi_netrw.txt*  For Vim version 7.4.  Last change: 2016 Apr 20
 
 	    ------------------------------------------------
 	    NETRW REFERENCE MANUAL    by Charles E. Campbell
@@ -1525,6 +1525,7 @@
 Associated setting variables:
 	|g:netrw_gx|	control how gx picks up the text under the cursor
 	|g:netrw_nogx|	prevent gx map while editing
+	|g:netrw_suppress_gx_mesg| controls gx's suppression of browser messages
 
 							*netrw_filehandler*
 
@@ -2931,6 +2932,13 @@
 				such as listing, file removal, etc.
 				 default: ssh
 
+ *g:netrw_suppress_gx_mesg*	=1 : browsers sometimes produce messages
+				which are normally unwanted intermixed
+				with the page.
+				However, when using links, for example,
+				those messages are what the browser produces.
+				By setting this option to 0, netrw will not
+				suppress browser messages.
 
   *g:netrw_tmpfile_escape*	=' &;'
 				escape() is applied to all temporary files
@@ -3757,6 +3765,23 @@
 ==============================================================================
 12. History						*netrw-history* {{{1
 
+	v156:	Feb 18, 2016	* Changed =~ to =~# where appropriate
+		Feb 23, 2016	* s:ComposePath(base,subdir) now uses
+				  fnameescape() on the base portion
+		Mar 01, 2016	* (gt_macki) reported where :Explore would
+				  make file unlisted. Fixed (tst943)
+		Apr 04, 2016	* (reported by John Little) netrw normally
+				  suppresses browser messages, but sometimes
+				  those "messages" are what is wanted.
+				  See |g:netrw_suppress_gx_mesg|
+		Apr 06, 2016	* (reported by Carlos Pita) deleting a remote
+				  file was giving an error message.  Fixed.
+		Apr 08, 2016	* (Charles Cooper) had a problem with an
+				  undefined b:netrw_curdir.  He also provided
+				  a fix.
+		Apr 20, 2016	* Changed s:NetrwGetBuffer(); now uses
+				  dictionaries.  Also fixed the "No Name"
+				  buffer problem.
 	v155:	Oct 29, 2015	* (Timur Fayzrakhmanov) reported that netrw's
 				  mapping of ctrl-l was not allowing refresh of
 				  other windows when it was done in a netrw
diff --git a/runtime/doc/tags b/runtime/doc/tags
index ec0e580..1a221ac 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3551,6 +3551,7 @@
 CTRL-^	editing.txt	/*CTRL-^*
 CTRL-{char}	intro.txt	/*CTRL-{char}*
 Channel	eval.txt	/*Channel*
+Channels	eval.txt	/*Channels*
 Chinese	mbyte.txt	/*Chinese*
 Cmd-event	autocmd.txt	/*Cmd-event*
 CmdUndefined	autocmd.txt	/*CmdUndefined*
@@ -3769,7 +3770,6 @@
 E277	remote.txt	/*E277*
 E28	syntax.txt	/*E28*
 E280	if_tcl.txt	/*E280*
-E281	if_tcl.txt	/*E281*
 E282	starting.txt	/*E282*
 E283	motion.txt	/*E283*
 E284	mbyte.txt	/*E284*
@@ -3854,7 +3854,6 @@
 E359	term.txt	/*E359*
 E36	windows.txt	/*E36*
 E360	various.txt	/*E360*
-E362	term.txt	/*E362*
 E363	options.txt	/*E363*
 E364	eval.txt	/*E364*
 E365	print.txt	/*E365*
@@ -4062,7 +4061,6 @@
 E557	term.txt	/*E557*
 E558	term.txt	/*E558*
 E559	term.txt	/*E559*
-E56	pattern.txt	/*E56*
 E560	if_cscop.txt	/*E560*
 E561	if_cscop.txt	/*E561*
 E562	if_cscop.txt	/*E562*
@@ -4071,8 +4069,6 @@
 E566	if_cscop.txt	/*E566*
 E567	if_cscop.txt	/*E567*
 E568	if_cscop.txt	/*E568*
-E569	if_cscop.txt	/*E569*
-E57	pattern.txt	/*E57*
 E570	message.txt	/*E570*
 E571	if_tcl.txt	/*E571*
 E572	if_tcl.txt	/*E572*
@@ -4081,9 +4077,7 @@
 E575	starting.txt	/*E575*
 E576	starting.txt	/*E576*
 E577	starting.txt	/*E577*
-E578	editing.txt	/*E578*
 E579	eval.txt	/*E579*
-E58	pattern.txt	/*E58*
 E580	eval.txt	/*E580*
 E581	eval.txt	/*E581*
 E582	eval.txt	/*E582*
@@ -4162,8 +4156,6 @@
 E650	netbeans.txt	/*E650*
 E651	netbeans.txt	/*E651*
 E652	netbeans.txt	/*E652*
-E653	netbeans.txt	/*E653*
-E654	netbeans.txt	/*E654*
 E655	eval.txt	/*E655*
 E656	netbeans.txt	/*E656*
 E657	netbeans.txt	/*E657*
@@ -4206,7 +4198,6 @@
 E690	eval.txt	/*E690*
 E691	eval.txt	/*E691*
 E692	eval.txt	/*E692*
-E693	eval.txt	/*E693*
 E694	eval.txt	/*E694*
 E695	eval.txt	/*E695*
 E696	eval.txt	/*E696*
@@ -4387,9 +4378,7 @@
 E858	eval.txt	/*E858*
 E859	eval.txt	/*E859*
 E86	windows.txt	/*E86*
-E860	eval.txt	/*E860*
 E862	eval.txt	/*E862*
-E863	if_pyth.txt	/*E863*
 E864	pattern.txt	/*E864*
 E865	pattern.txt	/*E865*
 E866	pattern.txt	/*E866*
@@ -4417,7 +4406,6 @@
 E886	starting.txt	/*E886*
 E887	if_pyth.txt	/*E887*
 E888	pattern.txt	/*E888*
-E889	map.txt	/*E889*
 E89	message.txt	/*E89*
 E890	syntax.txt	/*E890*
 E891	eval.txt	/*E891*
@@ -4425,11 +4413,8 @@
 E893	eval.txt	/*E893*
 E894	eval.txt	/*E894*
 E895	if_mzsch.txt	/*E895*
-E896	channel.txt	/*E896*
 E898	channel.txt	/*E898*
-E899	channel.txt	/*E899*
 E90	message.txt	/*E90*
-E900	channel.txt	/*E900*
 E901	channel.txt	/*E901*
 E902	channel.txt	/*E902*
 E903	channel.txt	/*E903*
@@ -4527,6 +4512,7 @@
 J	change.txt	/*J*
 Japanese	mbyte.txt	/*Japanese*
 Job	eval.txt	/*Job*
+Jobs	eval.txt	/*Jobs*
 K	various.txt	/*K*
 KDE	gui_x11.txt	/*KDE*
 KVim	gui_x11.txt	/*KVim*
@@ -6356,6 +6342,7 @@
 g`a	motion.txt	/*g`a*
 ga	various.txt	/*ga*
 garbagecollect()	eval.txt	/*garbagecollect()*
+garbagecollect_for_testing()	eval.txt	/*garbagecollect_for_testing()*
 gd	pattern.txt	/*gd*
 gdb	debug.txt	/*gdb*
 ge	motion.txt	/*ge*
@@ -8260,11 +8247,13 @@
 str2float()	eval.txt	/*str2float()*
 str2nr()	eval.txt	/*str2nr()*
 strcasestr()	eval.txt	/*strcasestr()*
+strcharpart()	eval.txt	/*strcharpart()*
 strchars()	eval.txt	/*strchars()*
 strchr()	eval.txt	/*strchr()*
 strcspn()	eval.txt	/*strcspn()*
 strdisplaywidth()	eval.txt	/*strdisplaywidth()*
 strftime()	eval.txt	/*strftime()*
+strgetchar()	eval.txt	/*strgetchar()*
 stridx()	eval.txt	/*stridx()*
 string	eval.txt	/*string*
 string()	eval.txt	/*string()*
@@ -8609,6 +8598,7 @@
 terminfo	term.txt	/*terminfo*
 termresponse-variable	eval.txt	/*termresponse-variable*
 test-functions	usr_41.txt	/*test-functions*
+testing-variable	eval.txt	/*testing-variable*
 tex-cchar	syntax.txt	/*tex-cchar*
 tex-cole	syntax.txt	/*tex-cole*
 tex-conceal	syntax.txt	/*tex-conceal*
@@ -8805,6 +8795,7 @@
 v:swapcommand	eval.txt	/*v:swapcommand*
 v:swapname	eval.txt	/*v:swapname*
 v:termresponse	eval.txt	/*v:termresponse*
+v:testing	eval.txt	/*v:testing*
 v:this_session	eval.txt	/*v:this_session*
 v:throwpoint	eval.txt	/*v:throwpoint*
 v:true	eval.txt	/*v:true*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index a56813a..4359764 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -542,7 +542,7 @@
 
 One command can be used to set the screen size:
 
-						*:mod* *:mode* *E359* *E362*
+						*:mod* *:mode* *E359*
 :mod[e] [mode]
 
 Without argument this only detects the screen size and redraws the screen.
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index ff359b1..8b0329c 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2016 Apr 11
+*todo.txt*      For Vim version 7.4.  Last change: 2016 Apr 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,26 +34,19 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Crash in garbagecollect() after starting a job. (Yasuhiro Matsumoto)
-  :let g:a = job_start(['ls'])
-  :call garbagecollect()
--> Need to find a way to call garbagecollect() in a test.
-
-Channel closes unexpectedly. (Christian Robinson, 2016 Apr 10)
-Log file later.
-Remarks from Kazunobu Kuriyama.  Fix from Hirohito, suggested by Ozaki Kiichi.
-
-When test_partial start_job() has a non-existing command memory leaks.
-
-Vim 8 features to mention:
-* TabNew, TabNewEntered and TabClosed autocommand events.
-
-Also keep a list of loaded plugins, skip when encountered again?
+In test_partial when start_job() has a non-existing command memory leaks.
 
 Memory leak in test49
 Memory leak in test_alot, with matchstrpos()
 
+Also keep a list of loaded plugins, skip when encountered again?
+
+Vim.org: when a user already has a homepage, do show the field so that it can
+be deleted.
+
 +channel:
+- GUI:cursor blinking is irregular when invoking callbacks. (Ramel Eshed, 2016
+  Apr 16) somehow remember the previous state?
 - When a message in the queue but there is no callback, drop it after a while?
   Add timestamp to queued messages and callbacks with ID, remove after a
   minute.  Option to set the droptime.
@@ -67,17 +60,10 @@
 - job_start(): run job in a newly opened terminal.
     With xterm could use -S{pty}.
 
-Test for try/catch in 'tabline'. #746, Haya, 2016 Apr 10.
-
 Make it so that the window ID can be used where currently a window nr is used
 
-Patch to make tag jump work on function({expr}). (Hirohito Higashi, 2016 Mar
-25)
-
-Patch to improve I/O for Perl. (Damien, 2016 Jan 9, update Jan 22 2nd one)
-
-Add strgetchar(): get a character by index from a string.
-    using [] is a byte index.
+Patch to fix invalid behavior with NULL list. (Nikolai Pavlov, #768)
+Also check :for.
 
 Regexp problems:
 - The regexp engines are not reentrant, causing havoc when interrupted by a
@@ -124,26 +110,23 @@
 
 Using freed memory in quickfix code. (Dominique, 2016 Mar 21)
 
-Patch 7.4.1401 caused autochdir not to work on startup. (Rob Hoelz, #704)
+jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
+What if there is an invalid character?
 
-Patch to support partions for Python, #734.  Nikolai Pavlov, 2017 Apr 6
+Once .exe with updated installer is available: Add remark to download page
+about /S and /D options (Ken Takata, 2016 Apr 13)
 
-Patch to fix that folds close with autocomplete.  #643
-Christian Brabandt, 2016 Feb 18.
+Patch to make cursor blinking work better with GTK3. (Kazunobu Kuriyama, 2016
+Apr 19)  Need to check this works on Linux.
 
-Also include update_curswant() fix for getcurpos(). (Christian Brabandt, 2016
-Feb 9)
-
-When cross-compiling skip generating the tags file (and moving it out of the
-way). (Christian Neukirchen, 2016 Apr 7)  #740
-
-Patch to list some messages and clear messages. (Yasuhiro Matsumoto, 2016 Mar
-12)
+Use ADDR_OTHER instead of ADDR_LINES for many more commands.
+Add tests for using number larger than number of lines in buffer.
 
 Patch to fix escaping special characters for delete(). (tc-0, 2016 Mar 20,
 #700) Test fails on MS-Windows.
 
-Patch to have complete() not set 'modified'. (Shougo, 2016 Apr 9, #745)
+ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
+Also with latest version.
 
 Patch to put undo options together in undo window.
 (Gary Johnson, 2016 Jan 28)
@@ -151,9 +134,11 @@
 Still problems with 'emoji'.  See issue #721.  Patch 7.4.1697 half-fixes it.
 Avoid PLAN_WRITE in windgoto() ?
 
+AVR assembler syntax file. (Marius Ghita, #439)
+
 Patch to have better check for {action} argument of setqflist().
 Nikolai Pavlov, Feb 25, #661.  Can be even more strict.
-Also see patch from Hirohito Higash, Feb 25.
+Also see patch from Hirohito Higashi, Feb 25.
 Updated patch, 2016 Mar 25.
 
 Patch to update the GTK icon cache when installing. (Kazunobu Kuriyama, 2016
@@ -163,13 +148,22 @@
 
 Cannot delete a file with square brackets with delete(). (#696)
 
+Patch to add GUI colors to the terminal, when 'guicolors' is set. (ZyX, 2013
+Jan 26, update 2013 Dec 14, another 2014 Nov 22)
+
+Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
+(Felipe Morales, 2015 Feb 1)
+
 Patch on issue #728 by Christian Brabandt, 2016 Apr 7.  Update with test: Apr 8.
+Explanation Apr 12.
 Might be related to:
 Test 44 fails when [[=A=]] is changed to [[=À=]].  Caused by getcmdline() not
 handling the 0x80 as a second byte correctly?  (Dominique Pelle, 2015 Jun 10)
 
 Patch to add 'topbot' to 'belloff' option. (Coot, 2016 Mar 18, #695)
 
+Patch for C syntax HL. (Bradley Garagan, 2016 Apr 17) #763
+
 Patch to make matchit work better, respect 'matchpairs'. (Ken Takata, 2016 Mar
 25)
 
@@ -196,6 +190,9 @@
 Patch to add the :bvimgrep command.  (Christian Brabandt, 2014 Nov 12)
 Updated 2016 Feb 10
 
+Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
+No test, needs some work to include.
+>
 Patch to improve indenting for C++ constructor with initializer list.
 (Hirohito Higashi, 2016 Mar 31)
 
@@ -228,8 +225,13 @@
 
 Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
 
-jsonencode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
-What if there is an invalid character?
+When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
+Apr 17)  #762
+
+Patch to support expression argument to sort() instead of a function name.
+Yasuhiro Matsumoto, 2013 May 31.
+Or should we add a more general mechanism, like a lambda() function?
+Patch by Yasuhiro Matsumoto, 2014 Sep 16, update 2016 Apr 17.
 
 Should jsonencode()/jsondecode() restrict recursiveness?
 Or avoid recursiveness.
@@ -266,7 +268,7 @@
 Patch by Christian Brabandt, 2016 Feb 1.
 
 Patch to discard remainder of long error messages in quickfix, avoid using
-them as separate messages. (Anton Lindqvist, 2016 Apr 9)
+them as separate messages. (Anton Lindqvist, 2016 Apr 9, update Apr 13)
 
 Patch to avoid redrawing tabline when the popup menu is visible.
 (Christian Brabandt, 2016 Jan 28)
@@ -279,6 +281,10 @@
 Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
 Update Sep 7.  Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
 
+When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
+restore the mode properly. (Andrew Stewart, 2016 Apr 20)
+Do not trigger the event?
+
 Using ":windo" to set options in all windows has the side effect that it
 changes the window layout and the current window.  Make a variant that saves
 and restores.  Use in the matchparen plugin.
@@ -297,7 +303,7 @@
 Patch to make the behavior of "w" more straightforward, but not Vi compatible.
 With a 'cpo' flag.  (Christian Brabandt, 2016 Feb 8)
 
-Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27)
+Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13)
 
 Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)
 
@@ -374,9 +380,6 @@
 Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
 30)
 
-Weird encryption problems on Windows. (Ben Fritz, 2015 Feb 13)
-Goes away when disabling the swap file. (might1, Feb 16)
-
 MS-Windows: Crash opening very long file name starting with "\\".
 (Christian Brock, 2012 Jun 29)
 
@@ -405,9 +408,6 @@
 When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
 the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
 
-Patch to add GUI colors to the terminal, when 'guicolors' is set. (ZyX, 2013
-Jan 26, update 2013 Dec 14, another 2014 Nov 22)
-
 Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015
 Sep 10)
 
@@ -428,8 +428,6 @@
 When 'showbreak' is set repeating a Visual operation counts the size of the
 'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)
 
-Patch for matchit plugin related to multibyte chars. (Ken Takata, 2015 Jul 22)
-
 Patch for multi-byte characters in langmap and applying a mapping on them.
 (Christian Brabandt, 2015 Jun 12, update July 25)
 Is this the right solution?  Need to cleanup langmap behavior:
@@ -609,9 +607,6 @@
 
 Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
 
-Patch to add TabNew, TabNewEntered and TabClosed autocommand events.
-(Felipe Morales, 2015 Feb 1)
-
 This does not give an error: (Andre Sihera, 2014 Mar 21)
     vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
 This neither: (ZyX)
@@ -678,14 +673,6 @@
 Patch to skip sort if no line matches the expression.
 (Christian Brabandt, 2014 Jun 25)
 
-Patch to add sortuniq(). (Cade Forester, 2014 Mar 19)
-Or add uniq() instead?  Patch by lcd47, but it has problems.
-
-Patch to support expression argument to sort() instead of a function name.
-Yasuhiro Matsumoto, 2013 May 31.
-Or should we add a more general mechanism, like a lambda() function?
-Patch by Yasuhiro Matsumoto, 2014 Sep 16.
-
 VMS: Select() doesn't work properly, typing ESC may hang Vim.  Use sys$qiow
 instead. (Samuel Ferencik, 2013 Sep 28)
 
diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt
index 8d14a87..b9df287 100644
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.0.  Last change: 2016 Apr 12
+*version8.txt*  For Vim version 8.0.  Last change: 2016 Apr 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -37,8 +37,10 @@
 These changes are incompatible with previous releases.  Check this list if you
 run into a problem when upgrading from Vim 7.4 to 8.0.
 
-The support for MS-DOS has been removed.
+The support for MS-DOS has been removed.  It hasn't been working for a while
+and removing it cleans up the code quite a bit.
 
+The support for Windows 16 bit (Windows 95 and older) has been removed.
 
 Minor incompatibilities:
 
@@ -47,13 +49,13 @@
 ==============================================================================
 NEW FEATURES						*new-8*
 
-First a list to the bigger new features.  A comprehensive list is below.
+First a list of the bigger new features.  A comprehensive list is below.
 
 
 Asynchronous I/O support, channels ~
 
-Vim can now exchange messages with another process in the background. The
-message are received and handled while Vim is waiting for a character.  See
+Vim can now exchange messages with another process in the background.  The
+messages are received and handled while Vim is waiting for a character.  See
 |channel-demo| for an example, communicating with a Python server.
 
 Closely related to channels is JSON support.  JSON is widely supported and can
@@ -74,7 +76,7 @@
 Also asynchronous are timers.  They can fire once or repeatedly and invoke a
 function to do any work.  For example: >
 	let tempTimer = timer_start(4000, 'CheckTemp')
-This will make call 4 seconds later, like: >
+This will make a call four seconds (4000 milli seconds) later, like: >
 	call CheckTemp()
 
 
@@ -85,13 +87,13 @@
 especially useful for callbacks on channels and timers.  E.g., for the timer
 example above, to pass an argument to the function: >
 	let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
-This will make call 4 seconds later, like: >
+This will a make call four seconds later, like: >
 	call CheckTemp('out')
 
 
 Packages ~
 
-Plugins keep growing and more of them are available then ever before.  To keep
+Plugins keep growing and more of them are available than ever before.  To keep
 the collection of plugins manageable package support has been added.  This is
 a convenient way to get one or more plugins, drop them in a directory and
 possibly keep them updated.  Vim will load them automatically, or only when
@@ -145,7 +147,7 @@
 Vim script enhancements					*new-vim-script-8*
 -----------------------
 
-In Vim scripts the following types have been added:
+In Vim script the following types have been added:
 
 	|Special|	|v:false|, |v:true|, |v:none| and |v:null|
 	|Channel|	connection to another process for asynchronous I/O