Update runtime files
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index ad7c5fd..5f37c74 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -4898,10 +4898,10 @@
 <		Can also be used as a |method|: >
 			:let bits = bits->invert()
 
-isabsolutepath({directory})				*isabsolutepath()*
+isabsolutepath({path})					*isabsolutepath()*
 		The result is a Number, which is |TRUE| when {path} is an
 		absolute path.
-<		On Unix, a path is considered absolute when it starts with '/'.
+		On Unix, a path is considered absolute when it starts with '/'.
 		On MS-Windows, it is considered absolute when it starts with an
 		optional drive prefix and is followed by a '\' or '/'. UNC paths
 		are always absolute.
@@ -4911,7 +4911,7 @@
 			echo isabsolutepath('C:\Windows')	" 1
 			echo isabsolutepath('foobar')		" 0
 			echo isabsolutepath('\\remote\file')	" 1
-
+<
 		Can also be used as a |method|: >
 			GetName()->isabsolutepath()
 
@@ -10595,6 +10595,7 @@
 vimscript-1		Compiled Vim script version 1 support
 vimscript-2		Compiled Vim script version 2 support
 vimscript-3		Compiled Vim script version 3 support
+vimscript-4		Compiled Vim script version 4 support
 virtualedit		Compiled with 'virtualedit' option. (always true)
 visual			Compiled with Visual mode. (always true)
 visualextra		Compiled with extra Visual mode commands. (always
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index 669657a..b7ae4d4 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -1554,36 +1554,5 @@
 	"params": <list|dict>
     }
 
-Depending on the use case, you can use the ch_evalexpr(), ch_sendexpr() and
-ch_sendraw() functions on the same channel.
-
-A LSP request message has the following format (expressed as a Vim Dict).  The
-"params" field is optional: >
-
-    {
-	"jsonrpc": "2.0",
-	"id": <number>,
-	"method": <string>,
-	"params": <list|dict>
-    }
-
-A LSP response message has the following format (expressed as a Vim Dict).  The
-"result" and "error" fields are optional: >
-
-    {
-	"jsonrpc": "2.0",
-	"id": <number>,
-	"result": <vim type>
-	"error": <dict>
-    }
-
-A LSP notification message has the following format (expressed as a Vim Dict).
-The "params" field is optional: >
-
-    {
-	"jsonrpc": "2.0",
-	"method": <string>,
-	"params": <list|dict>
-    }
-
+<
  vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 16c08b1..607eb34 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -936,7 +936,7 @@
 		   When the match is with a file name, it is expanded to the
 		   full path.
 							*:<sfile>* *<sfile>*
-	<sfile>    When executing a ":source" command, is replaced with the
+	<sfile>    When executing a `:source` command, is replaced with the
 		   file name of the sourced file.  *E498*
 		   When executing a legacy function, is replaced with the call
 		   stack, as with <stack> (this is for backwards
@@ -959,7 +959,7 @@
 		   defined.
 		   If the file name cannot be determined you get error *E1274* .
 							*:<slnum>* *<slnum>*
-	<slnum>	   When executing a ":source" command, is replaced with the
+	<slnum>	   When executing a `:source` command, is replaced with the
 		   line number.  *E842*
 		   When executing a function it's the line number relative to
 		   the start of the function.
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index 5130986..55543c7 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1225,7 +1225,7 @@
 
 If you want to always use ":confirm", set the 'confirm' option.
 
-			*:browse* *:bro* *E338*
+							*:browse* *:bro* *E338*
 :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 6929f9c..dd009d9 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -181,7 +181,7 @@
 
 
 1.2 Function references ~
-				*Funcref* *E695* *E718* *E1192*
+					*Funcref* *E695* *E718* *E1192*
 A Funcref variable is obtained with the |function()| function, the |funcref()|
 function, (in |Vim9| script) the name of a function, or created with the
 lambda expression |expr-lambda|.  It can be used in an expression in the place
@@ -1289,7 +1289,7 @@
 error.
 
 
-expr10[expr1a : expr1b]	substring or sublist		*expr-[:]*
+expr10[expr1a : expr1b]	substring or |sublist|		*expr-[:]* *substring*
 
 If expr10 is a String this results in the substring with the bytes or
 characters from expr1a to and including expr1b.  expr10 is used as a String,
@@ -3287,7 +3287,7 @@
 
 			If "eval" is not specified, then each line of text is
 			used as a |literal-string|, except that single quotes
-			doe not need to be doubled.
+			does not need to be doubled.
 			If "eval" is specified, then any Vim expression in the
 			form {expr} is evaluated and the result replaces the
 			expression, like with |interp-string|.
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 0ca8f38..37f7d61 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -143,7 +143,7 @@
 	*.asp		g:filetype_asp	|ft-aspvbs-syntax| |ft-aspperl-syntax|
 	*.bas		g:filetype_bas	|ft-basic-syntax|
 	*.cfg		g:filetype_cfg
-	*.csh		g:filetype_csh  |ft-csh-syntax|
+	*.csh		g:filetype_csh	|ft-csh-syntax|
 	*.dat		g:filetype_dat
 	*.frm		g:filetype_frm	|ft-form-syntax|
 	*.fs		g:filetype_fs	|ft-forth-syntax|
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index a676792..9cbd359 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -839,10 +839,10 @@
 	:py vim.command("qall!")
 <
 							*E1266*
-This error can occur when python 3 cannot load the required modules.  This
-means that your python 3 is not correctly installed or there are some mistakes
+This error can occur when Python 3 cannot load the required modules.  This
+means that your Python 3 is not correctly installed or there are some mistakes
 in your settings.  Please check the following items:
-1. Make sure that python 3 is correctly installed.  Also check the version of
+1. Make sure that Python 3 is correctly installed.  Also check the version of
    python.
 2. Check the 'pythonthreedll' option.
 3. Check the 'pythonthreehome' option.
@@ -887,8 +887,8 @@
 ==============================================================================
 11. Python X						*python_x* *pythonx*
 
-Because most python code can be written so that it works with python 2.6+ and
-python 3 the pyx* functions and commands have been written.  They work exactly
+Because most python code can be written so that it works with Python 2.6+ and
+Python 3 the pyx* functions and commands have been written.  They work exactly
 the same as the Python 2 and 3 variants, but select the Python version using
 the 'pyxversion' setting.
 
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 4df0909..a0230ca 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -291,7 +291,7 @@
 <
 							*cino-g*
 	gN    Place C++ scope declarations N characters from the indent of the
-	      block they are in.  (default 'shiftwidth'). By default, a scope 
+	      block they are in.  (default 'shiftwidth'). By default, a scope
 	      declaration is "public:", "protected:" or "private:". This can
 	      be adjusted with the 'cinscopedecls' option.
 
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 91df903..9126105 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -177,7 +177,7 @@
 separator "|".  Other examples with trailing white space: >
 	unmap @@ 
 	unmap @@     # Vim9 script comment
-	unmap @@     " legacy comment
+	unmap @@     " legacy script comment
 
 An error will be issued, which is very hard to identify, because the ending
 whitespace character in `unmap @@ ` is not visible.
@@ -185,8 +185,8 @@
 A generic solution is to put the command separator "|" right after the mapped
 keys.  After that white space and a comment may follow: >
 
-	unmap @@|    # Vim9 scriptcomment
-	unmap @@|    " legacy scriptcomment
+	unmap @@|    # Vim9 script comment
+	unmap @@|    " legacy script comment
 
 
 1.2 SPECIAL ARGUMENTS					*:map-arguments*
@@ -195,7 +195,8 @@
 "<unique>" can be used in any order.  They must appear right after the
 command, before any other arguments.
 
-			*:map-local* *:map-<buffer>* *:map-buffer* *E224* *E225*
+				    *:map-local* *:map-<buffer>* *:map-buffer*
+				    *E224* *E225*
 If the first argument to one of these commands is "<buffer>" the mapping will
 be effective in the current buffer only.  Example: >
 	:map <buffer>  ,w  /[.,;]<CR>
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index 760e9ca..962c86c 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -78,7 +78,7 @@
 LIST OF MESSAGES
 			*E222* *E228* *E232* *E293* *E298* *E304* *E317*
 			*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
-			*E323* *E341* *E473* *E570* *E685* *E292* 
+			*E323* *E341* *E473* *E570* *E685* *E292*
   Add to read buffer ~
   makemap: Illegal mode ~
   Cannot create BalloonEval with both message and callback ~
@@ -109,26 +109,26 @@
 
 See |ATTENTION|.
 
-							*E92* 
+							*E92*
   Buffer {N} not found ~
 
 The buffer you requested does not exist.  This can also happen when you have
 wiped out a buffer which contains a mark or is referenced in another way.
 |:bwipeout|
 
-							*E95* 
+							*E95*
   Buffer with this name already exists ~
 
 You cannot have two buffers with exactly the same name.  This includes the
 path leading to the file.
 
-							*E72* 
+							*E72*
   Close error on swap file ~
 
 The |swap-file|, that is used to keep a copy of the edited text, could not be
 closed properly.  Mostly harmless.
 
-							*E169* 
+							*E169*
   Command too recursive ~
 
 This happens when an Ex command executes an Ex command that executes an Ex
@@ -136,18 +136,18 @@
 larger.  When it's more there probably is an endless loop.  Probably a
 |:execute| or |:source| command is involved.
 
-							*E254* 
+							*E254*
   Cannot allocate color {name} ~
 
 The color name {name} is unknown.  See |gui-colors| for a list of colors that
 are available on most systems.
 
-							*E1244* 
+							*E1244*
   Bad color string: {str} ~
 
 The provided color did not conform to the pattern #rrggbb
 
-							*E458* 
+							*E458*
   Cannot allocate colormap entry, some colors may be incorrect ~
 
 This means that there are not enough colors available for Vim.  It will still
@@ -164,21 +164,21 @@
 or
 	Netscape*maxImageColors:  64 ~
 
-							*E79* 
+							*E79*
   Cannot expand wildcards ~
 
 A filename contains a strange combination of characters, which causes Vim to
 attempt expanding wildcards but this fails.  This does NOT mean that no
 matching file names could be found, but that the pattern was illegal.
 
-							*E459* 
+							*E459*
   Cannot go back to previous directory ~
 
 While expanding a file name, Vim failed to go back to the previously used
 directory.  All file names being used may be invalid now!  You need to have
 execute permission on the current directory.
 
-							*E190* *E212* 
+							*E190* *E212*
   Cannot open "{filename}" for writing ~
   Can't open file for writing ~
 
@@ -186,7 +186,7 @@
 The reason could be that you do not have permission to write in the directory
 or the file name is not valid.
 
-							*E166* 
+							*E166*
   Can't open linked file for writing ~
 
 You are trying to write to a file which can't be overwritten, and the file is
@@ -198,19 +198,19 @@
 manually delete the link or the file, or change the permissions so that Vim
 can overwrite.
 
-							*E46* 
+							*E46*
   Cannot change read-only variable "{name}" ~
 
 You are trying to assign a value to an argument of a function |a:var| or a Vim
 internal variable |v:var| which is read-only.
 
-							*E90* 
+							*E90*
   Cannot unload last buffer ~
 
 Vim always requires one buffer to be loaded, otherwise there would be nothing
 to display in the window.
 
-							*E40* 
+							*E40*
   Can't open errorfile <filename> ~
 
 When using the ":make" or ":grep" commands: The file used to save the error
@@ -223,7 +223,7 @@
 - The 'grepprg' or 'makeprg' could not be executed.  This cannot always be
   detected (especially on MS-Windows).  Check your $PATH.
 
- 
+
   Can't open file C:\TEMP\VIoD243.TMP ~
 
 On MS-Windows, this message appears when the output of an external command was
@@ -232,14 +232,14 @@
 related options.  It might also be that the external command was not found,
 there is no different error message for that.
 
-							*E12* 
+							*E12*
   Command not allowed from exrc/vimrc in current dir or tag search ~
 
 Some commands are not allowed for security reasons.  These commands mostly
 come from a .exrc or .vimrc file in the current directory, or from a tags
 file.  Also see 'secure'.
 
-							*E74* 
+							*E74*
   Command too complex ~
 
 A mapping resulted in a very long command string.  Could be caused by a
@@ -258,20 +258,20 @@
 be deleted, so you can move it back into place if you want to discard the
 changes.
 
-							*E302* 
+							*E302*
   Could not rename swap file ~
 
 When the file name changes, Vim tries to rename the |swap-file| as well.
 This failed and the old swap file is now still used.  Mostly harmless.
 
-							*E43* *E44* 
+							*E43* *E44*
   Damaged match string ~
   Corrupted regexp program ~
 
 Something inside Vim went wrong and resulted in a corrupted regexp.  If you
 know how to reproduce this problem, please report it. |bugs|
 
-							*E208* *E209* *E210* 
+							*E208* *E209* *E210*
   Error writing to "{filename}" ~
   Error closing "{filename}" ~
   Error reading "{filename}" ~
@@ -288,19 +288,19 @@
 Vim got stuck, the only thing it can do is exit.  This can happen when both
 stdin and stderr are redirected and executing a script that doesn't exit Vim.
 
-							*E47* 
+							*E47*
   Error while reading errorfile ~
 
 Reading the error file was not possible.  This is NOT caused by an error
 message that was not recognized.
 
-							*E80* 
+							*E80*
   Error while writing ~
 
 Writing a file was not completed successfully.  The file is probably
 incomplete.
 
-							*E13* *E189* 
+							*E13* *E189*
   File exists (add ! to override) ~
   "{filename}" exists (add ! to override) ~
 
@@ -311,7 +311,7 @@
 changes to: >
 	:w! /tmp/test
 <
-							*E768* 
+							*E768*
   Swap file exists: {filename} (:silent! overrides) ~
 
 You are protected from overwriting a file that is being edited by Vim.  This
@@ -324,45 +324,45 @@
 < The special command is needed, since you already added the ! for overwriting
   an existing file.
 
-							*E139* 
+							*E139*
   File is loaded in another buffer ~
 
 You are trying to write a file under a name which is also used in another
 buffer.  This would result in two versions of the same file.
 
-							*E142* 
+							*E142*
   File not written: Writing is disabled by 'write' option ~
 
 The 'write' option is off.  This makes all commands that try to write a file
 generate this message.  This could be caused by a |-m| commandline argument.
 You can switch the 'write' option on with ":set write".
 
-							*E25* 
+							*E25*
   GUI cannot be used: Not enabled at compile time ~
 
 You are running a version of Vim that doesn't include the GUI code.  Therefore
 "gvim" and ":gui" don't work.
 
-							*E49* 
+							*E49*
   Invalid scroll size ~
 
 This is caused by setting an invalid value for the 'scroll', 'scrolljump' or
 'scrolloff' options.
 
-							*E17* 
+							*E17*
   "{filename}" is a directory ~
 
 You tried to write a file with the name of a directory.  This is not possible.
 You probably need to append a file name.
 
-							*E19* 
+							*E19*
   Mark has invalid line number ~
 
 You are using a mark that has a line number that doesn't exist.  This can
 happen when you have a mark in another file, and some other program has
 deleted lines from it.
 
-							*E219* *E220* 
+							*E219* *E220*
   Missing {. ~
   Missing }. ~
 
@@ -370,13 +370,13 @@
 the other way around.  It should be used like this: {foo,bar}.  This matches
 "foo" and "bar".
 
-							*E315* 
+							*E315*
   ml_get: invalid lnum: {number} ~
 
 This is an internal Vim error.  Please try to find out how it can be
 reproduced, and submit a bug report |bugreport.vim|.
 
-							*E173* 
+							*E173*
   {number} more files to edit ~
 
 You are trying to exit, while the last item in the argument list has not been
@@ -384,19 +384,19 @@
 files to work on.  See |argument-list|.  If you do want to exit, just do it
 again and it will work.
 
-							*E23* *E194* 
+							*E23* *E194*
   No alternate file ~
   No alternate file name to substitute for '#' ~
 
 The alternate file is not defined yet.  See |alternate-file|.
 
-							*E32* 
+							*E32*
   No file name ~
 
 The current buffer has no name.  To write it, use ":w fname".  Or give the
 buffer a name with ":file fname".
 
-							*E141* 
+							*E141*
   No file name for buffer {number} ~
 
 One of the buffers that was changed does not have a file name.  Therefore it
@@ -404,7 +404,7 @@
 	:buffer {number}
 	:file {filename}
 <
-							*E33* 
+							*E33*
   No previous substitute regular expression ~
 
 When using the '~' character in a pattern, it is replaced with the previously
@@ -412,13 +412,13 @@
 been used yet.  See |/~|.  This also happens when using ":s/pat/%/", where the
 "%" stands for the previous substitute string.
 
-							*E35* 
+							*E35*
   No previous regular expression ~
 
 When using an empty search pattern, the previous search pattern is used.  But
 that is not possible if there was no previous search.
 
-							*E24* 
+							*E24*
   No such abbreviation ~
 
 You have used an ":unabbreviate" command with an argument which is not an
@@ -441,7 +441,7 @@
 - If the mapping is buffer-local you need to use ":unmap <buffer>".
   |:map-<buffer>|
 
-							*E37* *E89* 
+							*E37* *E89*
   No write since last change (add ! to override) ~
   No write since last change for buffer {N} (add ! to override) ~
 
@@ -453,7 +453,7 @@
 changes to: >
 	:e! other_file
 <
-							*E162* 
+							*E162*
   No write since last change for buffer "{name}" ~
 
 This appears when you try to exit Vim while some buffers are changed.  You
@@ -468,13 +468,13 @@
 This appears when executing a shell command while at least one buffer was
 changed.  To avoid the message reset the 'warn' option.
 
-							*E38* 
+							*E38*
   Null argument ~
 
 Something inside Vim went wrong and resulted in a NULL pointer.  If you know
 how to reproduce this problem, please report it. |bugs|
 
-						*E41* *E82* *E83* *E342* 
+						*E41* *E82* *E83* *E342*
   Out of memory! ~
   Out of memory!  (allocating {number} bytes) ~
   Cannot allocate any buffer, exiting... ~
@@ -496,7 +496,7 @@
   helps for a change that affects all lines.
 - 'undoreload' Set to zero to disable.
 
-							*E339* 
+							*E339*
   Pattern too long ~
 
 This happens on systems with 16 bit ints: The compiled regexp pattern is
@@ -504,7 +504,7 @@
 It also happens when the offset of a rule doesn't fit in the space available.
 Try simplifying the pattern.
 
-							*E45* 
+							*E45*
   'readonly' option is set (add ! to override) ~
 
 You are trying to write a file that was marked as read-only.  To write the
@@ -514,7 +514,7 @@
 changes to: >
 	:w!
 <
-							*E294* *E295* *E301* 
+							*E294* *E295* *E301*
   Read error in swap file ~
   Seek error in swap file read ~
   Oops, lost the swap file!!! ~
@@ -524,7 +524,7 @@
 write a buffer.  You may want to write it in another file and check for
 differences.
 
-							*E192* 
+							*E192*
   Recursive use of :normal too deep ~
 
 You are using a ":normal" command, whose argument again uses a ":normal"
@@ -533,7 +533,7 @@
 	:map gq :normal gq<CR>
 If you type "gq", it will execute this mapping, which will call "gq" again.
 
-							*E22* 
+							*E22*
   Scripts nested too deep ~
 
 Scripts can be read with the "-s" command-line argument and with the
@@ -541,7 +541,7 @@
 continue for about 14 levels.  When more nesting is done, Vim assumes that
 there is a recursive loop and stops with this error message.
 
-							*E319* 
+							*E319*
   Sorry, the command is not available in this version ~
 
 You have used a command that is not present in the version of Vim you are
@@ -550,7 +550,7 @@
 system.  See |+feature-list| for when which feature is available.  The
 |:version| command shows which feature Vim was compiled with.
 
-							*E300* 
+							*E300*
   Swap file already exists (symlink attack?) ~
 
 This message appears when Vim is trying to open a swap file and finds it
@@ -560,7 +560,7 @@
 attempting a symlink attack (could happen when editing a file in /tmp or when
 'directory' starts with "/tmp", which is a bad choice).
 
-							*E432* 
+							*E432*
   Tags file not sorted: {file name} ~
 
 Vim (and Vi) expect tags files to be sorted in ASCII order.  Binary searching
@@ -570,20 +570,20 @@
 tag.  Sometimes this message is not given, even though the tags file is not
 properly sorted.
 
-							*E424* 
+							*E424*
   Too many different highlighting attributes in use ~
 
 Vim can only handle about 223 different kinds of highlighting.  If you run
 into this limit, you have used too many |:highlight| commands with different
 arguments.  A ":highlight link" is not counted.
 
-							*E77* 
+							*E77*
   Too many file names ~
 
 When expanding file names, more than one match was found.  Only one match is
 allowed for the command that was used.
 
-							*E303* 
+							*E303*
   Unable to open swap file for "{filename}", recovery impossible ~
 
 Vim was not able to create a swap file.  You can still edit the file, but if
@@ -592,7 +592,7 @@
 to avoid this error.  This error is not given when 'directory' is empty.  See
 |swap-file|.
 
-							*E140* 
+							*E140*
   Use ! to write partial buffer ~
 
 When using a range to write part of a buffer, it is unusual to overwrite the
@@ -609,7 +609,7 @@
 http://groups.yahoo.com/group/solarisonintel/message/12179.
 [this URL is no longer valid]
 
-							*W10* 
+							*W10*
   Warning: Changing a readonly file ~
 
 The file is read-only and you are making a change to it anyway.  You can use
@@ -618,14 +618,14 @@
 making changes to a file.
 This message is only given for the first change after 'readonly' has been set.
 
-							*W13* 
+							*W13*
   Warning: File "{filename}" has been created after editing started ~
 
 You are editing a file in Vim when it didn't exist, but it does exist now.
 You will have to decide if you want to keep the version in Vim or the newly
 created file.  This message is not given when 'buftype' is not empty.
 
-							*W11* 
+							*W11*
   Warning: File "{filename}" has changed since editing started ~
 
 The file which you have started editing has got another timestamp and the
@@ -649,14 +649,14 @@
 If you get W11 all the time, you may need to disable "Acronis Active
 Protection" or register Vim as a trusted service/application.
 
-							*W12* 
+							*W12*
   Warning: File "{filename}" has changed and the buffer was changed in Vim as well ~
 
 Like the above, and the buffer for the file was changed in this Vim as well.
 You will have to decide if you want to keep the version in this Vim or the one
 on disk.  This message is not given when 'buftype' is not empty.
 
-							*W16* 
+							*W16*
   Warning: Mode of file "{filename}" has changed since editing started ~
 
 When the timestamp for a buffer was changed and the contents are still the
@@ -665,27 +665,27 @@
 bit to be reset.  It should be safe to reload the file.  Set 'autoread' to
 automatically reload the file.
 
-							*E211* 
+							*E211*
   File "{filename}" no longer available ~
 
 The file which you have started editing has disappeared, or is no longer
 accessible.  Make sure you write the buffer somewhere to avoid losing
 changes.  This message is not given when 'buftype' is not empty.
 
-							*W14* 
+							*W14*
   Warning: List of file names overflow ~
 
 You must be using an awful lot of buffers.  It's now possible that two buffers
 have the same number, which causes various problems.  You might want to exit
 Vim and restart it.
 
-							*E931* 
+							*E931*
   Buffer cannot be registered ~
 
 Out of memory or a duplicate buffer number.  May happen after W14.  Looking up
 a buffer will not always work, better restart Vim.
 
-							*E296* *E297* 
+							*E296* *E297*
   Seek error in swap file write ~
   Write error in swap file ~
 
@@ -694,7 +694,7 @@
 text may be lost without recovery being possible.  Vim might run out of memory
 when this problem persists.
 
-						*connection-refused* 
+						*connection-refused*
   Xlib: connection to "<machine-name:0.0" refused by server ~
 
 This happens when Vim tries to connect to the X server, but the X server does
@@ -703,7 +703,7 @@
 error message cannot be avoided, except by disabling the |+xterm_clipboard|
 and |+X11| features.
 
-							*E10* 
+							*E10*
   \\ should be followed by /, ? or & ~
 
 A command line started with a backslash or the range of a command contained a
@@ -711,13 +711,13 @@
 being disabled.  Remove the 'C' flag from the 'cpoptions' option to enable it.
 Or use ":set nocp".
 
-							*E471* 
+							*E471*
   Argument required ~
 
 This happens when an Ex command with mandatory argument(s) was executed, but
 no argument has been specified.
 
-							*E474* *E475* *E983* 
+							*E474* *E475* *E983*
   Invalid argument ~
   Invalid argument: {arg} ~
   Duplicate argument: {arg} ~
@@ -725,32 +725,32 @@
 An Ex command or function has been executed, but an invalid argument has been
 specified.
 
-							*E488* 
+							*E488*
   Trailing characters ~
   Trailing characters: {text} ~
 
 An argument has been added to an Ex command that does not permit one.
 Or the argument has invalid characters and has not been recognized.
 
-							*E477* *E478* 
+							*E477* *E478*
   No ! allowed ~
   Don't panic! ~
 
 You have added a "!" after an Ex command that doesn't permit one.
 
-							*E481* 
+							*E481*
   No range allowed ~
 
 A range was specified for an Ex command that doesn't permit one.  See
 |cmdline-ranges|.
 
-							*E482* *E483* 
+							*E482* *E483*
   Can't create file {filename} ~
   Can't get temp file name ~
 
 Vim cannot create a temporary file.
 
-							*E484* *E485* 
+							*E484* *E485*
   Can't open file {filename} ~
   Can't read file {filename} ~
 
@@ -760,7 +760,7 @@
 given to |system()|, or explicitly add escaping with ^.  Also see
 'shellxquote' and 'shellxescape'.
 
-							*E464* 
+							*E464*
   Ambiguous use of user-defined command ~
 
 There are two user-defined commands with a common name prefix, and you used
@@ -770,20 +770,20 @@
 	:command MyCommand2 echo "two"
 	:MyCommand
 <
-							*E492* 
+							*E492*
   Not an editor command ~
 
 You tried to execute a command that is neither an Ex command nor
 a user-defined command.
 
-							*E943* 
+							*E943*
   Command table needs to be updated, run 'make cmdidxs' ~
 
 This can only happen when changing the source code, when adding a command in
 src/ex_cmds.h.  The lookup table then needs to be updated, by running: >
 	make cmdidxs
 <
-						*E928* *E889* 
+						*E928* *E889*
   E928: String required ~
   E889: Number required ~
 
@@ -842,7 +842,7 @@
 group.
 
 
-						*more-prompt* *pager* 
+						*more-prompt* *pager*
   -- More -- ~
   -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit ~
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 8d2d17a..2f414cd 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1427,7 +1427,7 @@
 	  hide		hide the buffer (don't unload it), even if 'hidden' is
 			not set
 	  unload	unload the buffer, even if 'hidden' is set; the
-			|:hide| command will also unlod the buffer
+			|:hide| command will also unload the buffer
 	  delete	delete the buffer from the buffer list, even if
 			'hidden' is set; the |:hide| command will also delete
 			the buffer, making it behave like |:bdelete|
@@ -4518,7 +4518,7 @@
 
 				 *'incsearch'* *'is'* *'noincsearch'* *'nois'*
 'incsearch' 'is'	boolean	(default off, set in |defaults.vim| if the
-						+reltime feature is supported)
+					    |+reltime| feature is supported)
 			global
 			{not available when compiled without the
 			|+extra_search| features}
@@ -5090,9 +5090,9 @@
 <							*lcs-leadmultispace*
 	  leadmultispace:c...
 			Like multispace value, but only for leading whitespace
-			Overrides |lcs-lead| for leading multiple spaces.
-			`:set listchars=leadmultispace:---+` shows ten consecutive
-			leading spaces as:
+			overrides |lcs-lead| for leading multiple spaces.
+			`:set listchars=leadmultispace:---+` shows ten
+			consecutive leading spaces as:
 				---+---+--XXX ~
 			Where "XXX" denotes the first non-blank characters in
 			the line.
@@ -7421,7 +7421,7 @@
 			{millisec} milli seconds.  Applies to the following
 			methods.  When omitted the limit is 5000. When
 			negative there is no limit.  {only works when built
-			with the +reltime feature}
+			with the |+reltime| feature}
 
 	file:{filename} Read file {filename}, which must have two columns,
 			separated by a slash.  The first column contains the
@@ -9021,7 +9021,7 @@
 	mode.  On pressing 'wildchar' (usually <Tab>) to invoke completion,
 	the possible matches are shown just above the command line, with the
 	first match highlighted (overwriting the status line, if there is
-	one).  This is the behavior without "pum" in 'wildoptions.
+	one).  This is the behavior without "pum" in 'wildoptions'.
 	Keys that show the previous/next match, such as <Tab> or
 	CTRL-P/CTRL-N, cause the highlight to move to the appropriate match.
 	When 'wildmode' is used, "wildmenu" mode is used where "full" is
@@ -9132,7 +9132,7 @@
 			expansion. Currently fuzzy matching based completion
 			is not supported for file and directory names and
 			instead wildcard expansion is used.
-	  pum		Display the completion matches using the popupmenu
+	  pum		Display the completion matches using the popup menu
 			in the same style as the |ins-completion-menu|.
 	  tagfile	When using CTRL-D to list matching tags, the kind of
 			tag and the file of the tag is listed.	Only one match
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index 09549b5..f8eef0e 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -643,7 +643,7 @@
 'cinkeys'	  'cink'    keys that trigger indent when 'cindent' is set
 'cinoptions'	  'cino'    how to do indenting when 'cindent' is set
 'cinwords'	  'cinw'    words where 'si' and 'cin' add an indent
-'cinscopedecls'	  'cinsd'   words that are recognized by 'cino-g' 
+'cinscopedecls'	  'cinsd'   words that are recognized by 'cino-g'
 'clipboard'	  'cb'	    use the clipboard as the unnamed register
 'cmdheight'	  'ch'	    number of lines to use for the command-line
 'cmdwinheight'	  'cwh'     height of the command-line window
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index e295b80..be33def 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -348,7 +348,7 @@
 		Start logging and write entries to {filename}.
 		This works like calling `ch_logfile({filename}, 'ao')` very
 		early during startup.
-		{only available with the +channel feature}
+		{only available with the |+channel| feature}
 
 							*-D*
 -D		Debugging.  Go to debugging mode when executing the first
diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index a6941e1..c0744f6 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -138,7 +138,7 @@
 		    :+tabclose	    " close the next tab page
 		    :1tabclose	    " close the first tab page
 		    :$tabclose	    " close the last tab page
-		    :tabclose -2    " close the 2nd previous tab page 
+		    :tabclose -2    " close the 2nd previous tab page
 		    :tabclose +	    " close the next tab page
 		    :tabclose 3	    " close the third tab page
 		    :tabclose $	    " close the last tab page
diff --git a/runtime/doc/tags b/runtime/doc/tags
index cc002ec..b3b44e2 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -9649,6 +9649,7 @@
 subscript	eval.txt	/*subscript*
 substitute()	builtin.txt	/*substitute()*
 substitute-CR	version6.txt	/*substitute-CR*
+substring	eval.txt	/*substring*
 suffixes	cmdline.txt	/*suffixes*
 suspend	starting.txt	/*suspend*
 swap-exists-choices	usr_11.txt	/*swap-exists-choices*
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 4004c63..463ab26 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1415,7 +1415,7 @@
 	let g:termdebug_config['disasm_window_height'] = 15
 or, if there is no g:termdebug_config: >
 	let g:termdebug_disasm_window = 15
-Any value greater than 1 will set the Asm window height to that value: >
+Any value greater than 1 will set the Asm window height to that value.
 
 Communication ~
 						*termdebug-communication*
@@ -1469,7 +1469,7 @@
 Then your gdb is too old.
 
 
-Colors~
+Colors ~
 						*hl-debugPC* *hl-debugBreakpoint*
 The color of the signs can be adjusted with these highlight groups:
 - debugPC		the current position
@@ -1484,7 +1484,8 @@
   hi debugBreakpoint term=reverse ctermbg=red guibg=red
 
 
-Shortcuts						*termdebug_shortcuts*
+Shortcuts ~
+							*termdebug_shortcuts*
 
 You can define your own shortcuts (mappings) to control gdb, that can work in
 any window, using the TermDebugSendCommand() function.  Example: >
@@ -1492,7 +1493,8 @@
 The argument is the gdb command.
 
 
-Popup menu						*termdebug_popup*
+Popup menu ~
+							*termdebug_popup*
 
 By default the Termdebug plugin sets 'mousemodel' to "popup_setpos" and adds
 these entries to the popup menu:
@@ -1505,7 +1507,8 @@
 	let g:termdebug_popup = 0
 
 
-Vim window width						*termdebug_wide*
+Vim window width ~
+							*termdebug_wide*
 
 To change the width of the Vim window when debugging starts and use a vertical
 split: >
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index e6328e9..42246c0 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -91,9 +91,9 @@
 
 		{event} is a String and the supported values are:
 		    "dropfiles"	drop one or more files in a window.
-		    "findrepl"  search and replace text
+		    "findrepl"  search and replace text.
 		    "mouse"	mouse button click event.
-		    "scrollbar" move or drag the scrollbar
+		    "scrollbar" move or drag the scrollbar.
 		    "tabline"	select a tab page by mouse click.
 		    "tabmenu"	select a tabline menu entry.
 
@@ -119,7 +119,7 @@
 		  Perform a search and replace of text.  The supported items
 		  in {args} are:
 		    find_text:	string to find.
-		    repl_text:	replacement string
+		    repl_text:	replacement string.
 		    flags:	flags controlling the find/replace. Supported
 				values are:
 				    1	search next string (find dialog)
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 50661ef..37dc6d4 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2022 Jun 25
+*todo.txt*      For Vim version 8.2.  Last change: 2022 Jun 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -206,14 +206,14 @@
 - move f_hasmapto() to map.c  #10611
 - allow for nesting of timeout, sketch in #10595
 - Add "-n" option to xxd. #10599
-- Support %e and %k in 'errorformat'. #9624
 - Add support for "underdouble", "underdot" and "underdash". #9553
 - Patch to implement the vimtutor with a plugin: #6414
   Was originally written by Felipe Morales.
 - Patch to make fillchars global-local. (#5206)
 - Version of getchar() that does not move the cursor - #10603
   Use a separate argument for the new flag.
-- Improved VB filetype detection. (Doug Kearns, June 25)
+- Improved VB filetype detection. (Doug Kearns, June 26)
+- Improved FreeBasic runtime files (and a second one). (Doug Kearns, June 26)
 
 Autoconf: must use autoconf 2.69, later version generates lots of warnings
 - try using autoconf 2.71 and fix all "obsolete" warnings
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index f5527cd..cd39dd3 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -322,7 +322,7 @@
 
 If you make a mistake and try to assign the wrong type of value you'll get an
 error: >
-	
+
 	age = "Peter"
 <	E1012: Type mismatch; expected number but got string ~
 
@@ -638,7 +638,7 @@
 Vim will run into the end of the argument and silently abort the command.  For
 example, if you start the delete operator, you must give the movement command
 also.  This works: >
-	
+
 	normal d$
 
 This does nothing: >
@@ -1567,7 +1567,7 @@
 	def Wrong(): string
 	  return 'Wrong!'
 	enddef
-	
+
 	var Afunc = g:result == 1 ? Right : Wrong
 	echo Afunc()
 <	Wrong! ~
@@ -1815,7 +1815,7 @@
 examples below.  A comment can start on any character position on the line,
 but not when it is part of the command, e.g. inside a string.
 
-The character " (the double quote mark) starts a comment in legacy script.  
+The character " (the double quote mark) starts a comment in legacy script.
 This involves some cleverness to make sure double quoted strings are not
 recognized as comments (just one reason to prefer |Vim9| script).
 
diff --git a/runtime/doc/usr_50.txt b/runtime/doc/usr_50.txt
index 7d69364..e8ebeb0 100644
--- a/runtime/doc/usr_50.txt
+++ b/runtime/doc/usr_50.txt
@@ -6,7 +6,7 @@
 
 
 |50.1|	Exceptions
-|50.2|    Function with variable number of arguments
+|50.2|	Function with variable number of arguments
 |50.3|	Restoring the view
 
      Next chapter: |usr_51.txt|  Create a plugin
@@ -104,7 +104,7 @@
 
 	Show('Title', 'one', 'two', 'three')
 <	start is Title  Arg 0 is one  Arg 1 is two  Arg 2 is three ~
-	
+
 This uses the `echohl` command to specify the highlighting used for the
 following `echo` command.  `echohl None` stops it again.  The `echon` command
 works like `echo`, but doesn't output a line break.
diff --git a/runtime/doc/usr_51.txt b/runtime/doc/usr_51.txt
index 73733f4..800946e 100644
--- a/runtime/doc/usr_51.txt
+++ b/runtime/doc/usr_51.txt
@@ -72,7 +72,7 @@
 >
   1	vim9script noclear
 
-You need to use `vimscript` as the very first command.  Best is to put it in
+You need to use `vim9script` as the very first command.  Best is to put it in
 the very first line.
 
 The script we are writing will have a `finish` command to bail out when it is
@@ -615,7 +615,7 @@
 
 setlocal		Set an option for the current buffer only.
 
-command -buffer	Define a user command local to the buffer.
+command -buffer		Define a user command local to the buffer.
 
 exists("*s:Func")	Check if a function was already defined.
 
diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt
index 31576c6..59777cc 100644
--- a/runtime/doc/usr_toc.txt
+++ b/runtime/doc/usr_toc.txt
@@ -345,7 +345,7 @@
 
 |usr_50.txt|  Advanced Vim script writing
 		|50.1|	Exceptions
-		|50.2|    Function with variable number of arguments
+		|50.2|	Function with variable number of arguments
 		|50.3|	Restoring the view
 
 |usr_51.txt|  Write plugins
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 1414561..96f0f88 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -411,7 +411,8 @@
 N  *+mouseshape*	|'mouseshape'|
 B  *+mouse_dec*		Unix only: Dec terminal mouse handling |dec-mouse|
 N  *+mouse_gpm*		Unix only: Linux console mouse handling |gpm-mouse|
-m  *+mouse_gpm/dyn*	Same as |+mouse_gpm| with optional library dependency |/dyn|
+m  *+mouse_gpm/dyn*	Same as |+mouse_gpm| with optional library dependency
+			|/dyn|
 N  *+mouse_jsbterm*	JSB mouse handling |jsbterm-mouse|
 B  *+mouse_netterm*	Unix only: netterm mouse handling |netterm-mouse|
 N  *+mouse_pterm*	QNX only: pterm mouse handling |qnx-terminal|
diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt
index 670208f..1cb95e0 100644
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -370,8 +370,8 @@
 |OptionSet|		after setting any option
 |TabClosed|		after closing a tab page
 |TabNew|		after creating a new tab page
-|TextChangedI|		after a change was made to the text in Insert mode
 |TextChanged|		after a change was made to the text in Normal mode
+|TextChangedI|		after a change was made to the text in Insert mode
 |WinNew|		after creating a new window
 
 
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 3705400..323829a 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt*  For Vim version 8.2.  Last change: 2022 Jun 24
+*version9.txt*  For Vim version 8.2.  Last change: 2022 Jun 25
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -462,6 +462,10 @@
 
 xxd: Support for showing offset as a decimal number (-d).
 
+The C omni-complete plugin (|ft-c-omni|), the file type detection script
+(ft.vim) and the syntax menu generation script (makemenu.vim) have been
+rewritten using the Vim9 script syntax.
+
 A large number of tests have been added to verify the Vim functionality.  Most
 of the old style tests have been converted to new style tests using the new
 style assert_* functions.
@@ -27439,7 +27443,7 @@
 Files:      src/userfunc.c
 
 Patch 8.2.4473
-Problem:    Coverity warnds for not checking return value of ftell().
+Problem:    Coverity warns for not checking return value of ftell().
 Solution:   Bail out if ftell() returns a negative value.
 Files:      src/spellfile.c
 
@@ -27813,7 +27817,7 @@
 Files:      src/typval.c, src/vim9execute.c, src/testdir/test_vim9_expr.vim
 
 Patch 8.2.4535
-Problem:    Filename modifer ":8" removes the filename.
+Problem:    Filename modifier ":8" removes the filename.
 Solution:   Use strncpy() instead of vim_strncpy(). (Christian Brabandt,
             closes #9918, closes #8600)
 Files:      src/filepath.c, src/testdir/test_shortpathname.vim
@@ -28668,7 +28672,7 @@
 
 Patch 8.2.4674
 Problem:    Cannot force getting MouseMove events.
-Solution:   Add the 'mousemoveevent' option with implementaiton for the GUI.
+Solution:   Add the 'mousemoveevent' option with implementation for the GUI.
             (Ernie Rael, closes #10044)
 Files:      runtime/doc/gui.txt, runtime/doc/options.txt,
             runtime/doc/testing.txt, src/gui.c, src/option.h,
@@ -29432,7 +29436,7 @@
 Files:      src/testdir/test_cursorline.vim
 
 Patch 8.2.4797
-Problem:    getwininfo() may get oudated values.
+Problem:    getwininfo() may get outdated values.
 Solution:   Make sure w_botline is up-to-date. (closes #10226)
 Files:      src/evalwindow.c, src/testdir/test_bufwintabinfo.vim
 
@@ -30039,7 +30043,7 @@
 
 Patch 8.2.4902
 Problem:    Mouse wheel scrolling is inconsistent.
-Solution:   Use the MS-Winows system setting. (closes #10368)
+Solution:   Use the MS-Windows system setting. (closes #10368)
 Files:      runtime/doc/scroll.txt, src/gui_w32.c, src/mouse.c,
             src/proto/mouse.pro, src/testing.c, src/testdir/test_gui.vim
 
@@ -30719,7 +30723,7 @@
             src/testdir/test_textformat.vim
 
 Patch 8.2.5009
-Problem:    Fold may not be closeable after appending.
+Problem:    Fold may not be closable after appending.
 Solution:   Set the fd_small flag to MAYBE. (Brandon Simmons, closes #10471)
 Files:      src/fold.c, src/testdir/test_fold.vim
 
@@ -31399,7 +31403,7 @@
 Files:      src/testdir/test_syntax.vim
 
 Patch 8.2.5125
-Problem:    MS-Windows: warnings from MinGW compyler.
+Problem:    MS-Windows: warnings from MinGW compiler.
 Solution:   Use "volatile". (Yasuhiro Matsumoto, closes #10589)  Initialize
             variable.
 Files:      src/os_win32.c, src/proto/os_win32.pro, src/map.c
@@ -31581,5 +31585,20 @@
             closes #10602, closes #10579)
 Files:      src/gui_w32.c
 
+Patch 8.2.5158
+Problem:    TSTP and INT signal tests are not run with valgrind.
+Solution:   Sleep a bit longer. (closes #10614)
+Files:      src/testdir/test_signals.vim
+
+Patch 8.2.5159 (after 8.2.5157)
+Problem:    Fix for CTRL-key combinations causes more problems than it solves.
+Solution:   Roll back the change.
+Files:      src/gui_w32.c
+
+Patch 8.2.5160
+Problem:    Accessing invalid memory after changing terminal size.
+Solution:   Adjust cmdline_row and msg_row to the value of Rows.
+Files:      src/term.c
+
 
  vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 7b1bc26..aef4230 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2022 Jun 20
+*vim9.txt*	For Vim version 8.2.  Last change: 2022 Jun 25
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -37,10 +37,10 @@
 commonly used programming languages, such as JavaScript, TypeScript and Java.
 
 The performance improvements can only be achieved by not being 100% backwards
-compatible.  For example, making function arguments available in the
-"a:" dictionary adds quite a lot of overhead.  In a Vim9 function this
-dictionary is not available.  Other differences are more subtle, such as how
-errors are handled.
+compatible.  For example, making function arguments available in the "a:"
+dictionary adds quite a lot of overhead.  In a Vim9 function this dictionary
+is not available.  Other differences are more subtle, such as how errors are
+handled.
 
 The Vim9 script syntax and semantics are used in:
 - a function defined with the `:def` command