Update runtime files
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index 6e6feb3..34ff38d 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -1,4 +1,4 @@
-*develop.txt*   For Vim version 7.4.  Last change: 2014 Mar 27
+*develop.txt*   For Vim version 7.4.  Last change: 2016 Jan 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -166,12 +166,27 @@
 MAKING CHANGES						*style-changes*
 
 The basic steps to make changes to the code:
-1. Adjust the documentation.  Doing this first gives you an impression of how
+1. Get the code from github.  That makes it easier to keep your changed
+   version in sync with the main code base (it may be a while before your
+   changes will be included).  You do need to spend some time learning git,
+   it's not the most user friendly tool.
+2. Adjust the documentation.  Doing this first gives you an impression of how
    your changes affect the user.
-2. Make the source code changes.
-3. Check ../doc/todo.txt if the change affects any listed item.
-4. Make a patch with "diff -c" against the unmodified code and docs.
-5. Make a note about what changed and include it with the patch.
+3. Make the source code changes.
+4. Check ../doc/todo.txt if the change affects any listed item.
+5. Make a patch with "git diff".  You can also create a pull request on
+   github, but it's the diff that matters.
+6. Make a note about what changed, preferably mentioning the problem and the
+   solution.  Send an email to the vim-dev maillist with an explanation and
+   include the diff. Or create a pull request on github.
+
+
+C COMPILER						*style-compiler*
+
+The minimal C compiler version supported is C89, also known as ANSI C.
+Later standards don't add much and C89 is the widest supported.
+
+One restriction that this implies: no // comments, only /* comments */.
 
 
 USE OF COMMON FUNCTIONS					*style-functions*
@@ -197,7 +212,7 @@
 
 Function names can not be more than 31 characters long (because of VMS).
 
-Don't use "delete" as a variable name, C++ doesn't like it.
+Don't use "delete" or "this" as a variable name, C++ doesn't like it.
 
 Because of the requirement that Vim runs on as many systems as possible, we
 need to avoid using names that are already defined by the system.  This is a
@@ -288,6 +303,24 @@
 		a = 1;
 	    while (cond);
 
+Wrong:	    if (cond) {
+               cmd;
+               cmd;
+	    } else {
+               cmd;
+               cmd;
+	    }
+
+OK:	    if (cond)
+            {
+               cmd;
+               cmd;
+	    }
+	    else
+	    {
+               cmd;
+               cmd;
+	    }
 
 Functions start with:
 
@@ -299,9 +332,9 @@
 	 * Return value explanation.
 	 */
 	    int
-	function_name(arg1, arg2)
-	    int		arg1;		/* short comment about arg1 */
-	    int		arg2;		/* short comment about arg2 */
+	function_name(
+	    int		arg1,		/* short comment about arg1 */
+	    int		arg2)		/* short comment about arg2 */
 	{
 	    int		local;		/* comment about local */
 
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index ebd21ae..2073f28 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 Jan 17
+*eval.txt*	For Vim version 7.4.  Last change: 2016 Jan 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -103,6 +103,9 @@
 there is no automatic conversion of Float.  You can use str2float() for String
 to Float, printf() for Float to String and float2nr() for Float to Number.
 
+						*E891* *E892* *E893* *E894*
+When expecting a Float a Number can also be used, but nothing else.
+
 						*E706* *sticky-type-checking*
 You will get an error if you try to change the type of a variable.  You need
 to |:unlet| it first to avoid this error.  String and Number are considered
@@ -3601,7 +3604,8 @@
 			getftype("/home")
 <		Note that a type such as "link" will only be returned on
 		systems that support it.  On some systems only "dir" and
-		"file" are returned.
+		"file" are returned.  On MS-Windows a symbolic link to a
+		directory returns "dir" instead of "link".
 
 							*getline()*
 getline({lnum} [, {end}])
@@ -5893,6 +5897,9 @@
 		sorted numerical. This is like 'n' but a string containing
 		digits will be used as the number they represent.
 
+		When {func} is given and it is 'f' then all items will be
+		sorted numerical. All values must be a Number or a Float.
+
 		When {func} is a |Funcref| or a function name, this function
 		is called to compare items.  The function is invoked with two
 		items as argument and must return zero if they are equal, 1 or
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 2c4c135..d23edd0 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 Jan 10
+*index.txt*     For Vim version 7.4.  Last change: 2016 Jan 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1539,14 +1539,14 @@
 |:tabdo|	:tabdo		execute command in each tab page
 |:tabedit|	:tabe[dit]	edit a file in a new tab page
 |:tabfind|	:tabf[ind]	find file in 'path', edit it in a new tab page
-|:tabfirst|	:tabfir[st]	got to first tab page
-|:tablast|	:tabl[ast]	got to last tab page
+|:tabfirst|	:tabfir[st]	go to first tab page
+|:tablast|	:tabl[ast]	go to last tab page
 |:tabmove|	:tabm[ove]	move tab page to other position
 |:tabnew|	:tabnew		edit a file in a new tab page
 |:tabnext|	:tabn[ext]	go to next tab page
 |:tabonly|	:tabo[nly]	close all tab pages except the current one
 |:tabprevious|	:tabp[revious]	go to previous tab page
-|:tabrewind|	:tabr[ewind]	got to first tab page
+|:tabrewind|	:tabr[ewind]	go to first tab page
 |:tabs|		:tabs		list the tab pages and what they contain
 |:tab|		:tab		create new tab when opening new window
 |:tag|		:ta[g]		jump to tag
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 5436a80..3d42337 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 7.4.  Last change: 2015 Dec 31
+*quickfix.txt*  For Vim version 7.4.  Last change: 2016 Jan 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 4945072..38c251b 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2948,6 +2948,7 @@
 :syn-files	syntax.txt	/*:syn-files*
 :syn-fold	syntax.txt	/*:syn-fold*
 :syn-include	syntax.txt	/*:syn-include*
+:syn-iskeyword	syntax.txt	/*:syn-iskeyword*
 :syn-keepend	syntax.txt	/*:syn-keepend*
 :syn-keyword	syntax.txt	/*:syn-keyword*
 :syn-lc	syntax.txt	/*:syn-lc*
@@ -4417,6 +4418,10 @@
 E889	map.txt	/*E889*
 E89	message.txt	/*E89*
 E890	syntax.txt	/*E890*
+E891	eval.txt	/*E891*
+E892	eval.txt	/*E892*
+E893	eval.txt	/*E893*
+E894	eval.txt	/*E894*
 E90	message.txt	/*E90*
 E91	options.txt	/*E91*
 E92	message.txt	/*E92*
@@ -8134,6 +8139,7 @@
 strtrans()	eval.txt	/*strtrans()*
 strwidth()	eval.txt	/*strwidth()*
 style-changes	develop.txt	/*style-changes*
+style-compiler	develop.txt	/*style-compiler*
 style-examples	develop.txt	/*style-examples*
 style-functions	develop.txt	/*style-functions*
 style-names	develop.txt	/*style-names*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index bc7b962..2570ac8 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 Jan 17
+*todo.txt*      For Vim version 7.4.  Last change: 2016 Jan 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -75,6 +75,12 @@
 - The pattern "\1" with the old engine gives E65, with the new engine it
   matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24)
 - Search for \\~ causes error E874.
+- "\%1l^#.*" does not match on a line starting with "#".  The zero-width match
+  clears the start-of-line flag.
+
+C89: remove __ARGS in more places
+- Script: Hirohito Higashi, Jan 21.
+- Update to osdef.sh, Hirohito Higashi, 2016 Jan 21.
 
 Need to try out instructions in INSSTALLpc.txt about how to install all
 interfaces and how to build Vim with them.
@@ -90,6 +96,11 @@
 
 Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
 
+Use vim.vim syntax highlighting for help file examples, but without ":" in
+'iskeyword' for syntax.
+
+Remove SPACE_IN_FILENAME ? What could possibly go wrong?
+
 Installation of .desktop files does not work everywhere.
 It's now fixed, but the target directory probably isn't right.
 Add configure check?
@@ -103,6 +114,11 @@
 ":cd C:\Windows\System32\drivers\etc*" does not work, even though the
 directory exists. (Sergio Gallelli, 2013 Dec 29)
 
+Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
+More tests May 14. Update May 29.  Update Aug 10.
+Now part of large file patches. (Ken Takata, 2016 Jan 19, second one)
+Updated patches with ordering: Jan 20.
+
 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.
@@ -118,6 +134,8 @@
 Unexpected delay when using CTRL-O u.  It's not timeoutlen.
 (Gary Johnson, 2015 Aug 28)
 
+Patch to support 64 bit ints for Number. (Ken Takata, 2016 Jan 21)
+
 Instead of separately uploading patches to the ftp site, we can get them from
 github with a URL like this:
    https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff
@@ -152,8 +170,7 @@
 Build with Python on Mac does not always use the right library.
 (Kazunobu Kuriyama, 2015 Mar 28)
 
-Patch to support Python 'None' value in pyeval(). (Damien, 2015 Nov 21)
-Need a Vim equivalent of None and a way to test for it.
+Need a Vim equivalent of Python's None and a way to test for it.
 
 To support Thai (and other languages) word boundaries, include the ICU
 library:  http://userguide.icu-project.org/boundaryanalysis
@@ -161,10 +178,6 @@
 When complete() first argument is before where insert started and 'backspace'
 is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)
 
-Patch to fix bug in searchpair(). (Christian Brabandt, 2016 Jan 11)
-Problem reported by David Fishburn, using searchpair() with synID() used in
-the skip expression.
-
 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)
 
@@ -174,14 +187,6 @@
 MS-Windows: Crash opening very long file name starting with "\\".
 (Christian Brock, 2012 Jun 29)
 
-Patch to add ":syn iskeyword". (Christian Brabandt, 2015 Nov 10)
-
-Patch to use PLATFORM to determine target architecture. (Taro Muraoka, 2015
-Nov 29)
-
-If libiconv.dll is not found search for libiconv2.dll. (Yasuhiro Matsumoto,
-2015 Oct 7)
-
 Using an external diff is inefficient.  Not all systems have a good diff
 program available (esp. MS-Windows).  Would be nice to have in internal diff
 implementation.  Can then also use this for displaying changes within a line.
@@ -199,9 +204,6 @@
 The argument for "-S" is not taken literally, the ":so" command expands
 wildcards.  Add a ":nowild" command modifier?  (ZyX, 2015 March 4)
 
-Patch to support sorting on floating point number.  (Alex Jakushev, 2010 Oct
-30)
-
 Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5)
 Update Aug 14.
 
@@ -321,10 +323,6 @@
 Should be easy to highlight all matches with 'incsearch'.  Idea by Itchyny,
 2015 Feb 6.
 
-Plugins need to make a lot of effort, lots of mappings, to know what happened
-before pressing the key that triggers a plugin action.  How about keeping the
-last N pressed keys, so that they do not need to be mapped?
-
 Wrong scrolling when using incsearch.  Patch by Christian Brabandt, 2014 Dec 4.
 Is this a good solution?
 
@@ -410,9 +408,6 @@
 Saito, 2013 Apr 24)  Has a problem (email 2015 Jan 7).
 Update 2015 Jan 10.
 
-Win32: patch to use 64 bit stat() if possible. (Ken Takata, 2014 May 12)
-More tests May 14. Update May 29.  Update Aug 10.
-
 Idea: For a window in the middle (has window above and below it), use
 right-mouse-drag on the status line to move a window up/down without changing
 its height?  It's like dragging the status bar above it at the same time.
@@ -438,11 +433,13 @@
 2014 Jun 8)
 
 Include a plugin manager with Vim? Neobundle seems to be the best currently.
+Also Vundle: https://github.com/gmarik/vundle
 Long message about this from ZyX, 2014 Mar 23.  And following replies.
 Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
 User view:
-- Support multiple sources, basically any http:// URL.  Be able to look into
-  the files before deciding to install.
+- Support multiple sources, basically any http:// URL. Or a central place that
+  will work for everybody (github?  redirects from vim.org?).
+  Be able to look into the files before deciding to install.
 - Be able to try out a plugin and remove it again with (almost) no traces.
 - Each plugin needs a "manifest" file that has the version, dependencies
   (including Vim version and features), conflicts, list of files, etc.
@@ -1113,6 +1110,14 @@
 Winckler, 2011 May 11)
 Requires a map mode for Insert mode started from blockwise Visual mode.
 
+Use json format for new items in .viminfo:
+    |["info","any info"]
+    |["text","text text text"
+    |"continuation line"]
+    |["hist",242342342,{"arg":"value"}]
+  Use \" for a single ".  Use \\ for a \.
+  See http://www.ietf.org/rfc/rfc4627.txt
+
 Writing nested List and Dict in viminfo gives error message and can't be read
 back. (Yukihiro Nakadaira, 2010 Nov 13)
 
@@ -2130,10 +2135,37 @@
 (Kartik Agaram)
 
 
-At next release:
--   Build a huge version by default.
--   Improve plugin handling: Automatic updates, handle dependencies?
-    E.g. Vundle: https://github.com/gmarik/vundle
+Better plugin support (not plugin manager, see elsewhere for that):
+- Add interface to another process, e.g. to run a background plugin.
+  Can use the code from netbeans to communicate over a socket.
+  A bit like +clientserver but without the hassle of starting another Vim.
+  Use json for the messages.
+    let handle = startjob({command})             # uses stdin/stdout
+    let handle = startjob({command}, {address})  # uses socket
+    let handle = connect({address})              # uses socket
+    let handle = deamon({command}, {address})    # start it if connect fails
+    let response = sendjson(handle, {json})      # sync
+    call sendjson(handle, {json}, {callback})    # async
+    call sethandler(handle, {callback})
+  The response json is wrapped in an array:
+    [{code},{response}]
+    {code} must be positive, when zero the callback from sethandler() is called
+  The job can send Vim commands that do not require a handler:
+    ['ex', {Ex command}]
+    ['normal', {Normal mode command}]
+    ['keys', {condition}, {key sequence}]
+    ['eval', {expression}]  sync, will send back result
+    ['expr', {expression}]  async
+- Native JSON support (to be able to commucate with any interface in the same
+  way).
+- Avoid use of feedkeys, add eval functions where needed:
+  - manipulating the Visual selection?
+- Add createmark(): add a mark like mM, but return a unique ID.  Need some way
+  to clean them up again...  Use a name + the script ID.
+  Add createmark( , 'c') to track inserts/deletes before the column.
+- Plugins need to make a lot of effort, lots of mappings, to know what
+  happened before pressing the key that triggers a plugin action.  How about
+  keeping the last N pressed keys, so that they do not need to be mapped?
 
 
 More patches:
@@ -3482,10 +3514,7 @@
     one is contained in.  Like "keepend" but specified on the contained item,
     instead of the containing item.
 8   cpp.vim: In C++ it's allowed to use {} inside ().
-8   Some syntax files set 'iskeyword'.  When switching to another filetype
-    this isn't reset.  Add a special keyword definition for the syntax rules?
-    When this is done, use vim.vim syntax highlighting for help file examples,
-    but without ":" in 'iskeyword' for syntax.
+8   Some syntax files set 'iskeyword', they should use "syn iskeyword".
     Also need a separate 'iskeyword' for the command line, e.g., in a help
     window ":e /asdf/asdf/" CTRL-W works different.
 8   Add specific syntax item to match with parens/braces that don't have a