Update runtime files
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index ec680be..5c2e7ea 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt*	For Vim version 9.0.  Last change: 2023 Feb 27
+*builtin.txt*	For Vim version 9.0.  Last change: 2023 Apr 19
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2235,7 +2235,8 @@
 			redir => var
 			{command}
 			redir END
-<
+<		Except that line continuation in {command} is not recognized.
+
 		The optional {silent} argument can have these values:
 			""		no `:silent` used
 			"silent"	`:silent` used
@@ -4115,7 +4116,7 @@
 		Can also be used as a |method|: >
 			GetRegname()->getregtype()
 
-getscriptinfo([{opts})					*getscriptinfo()*
+getscriptinfo([{opts}])					*getscriptinfo()*
 		Returns a |List| with information about all the sourced Vim
 		scripts in the order they were sourced, like what
 		`:scriptnames` shows.
@@ -4124,7 +4125,7 @@
 		optional items:
 		    name	Script name match pattern. If specified,
 				and "sid" is not specified, information about
-				scripts with name that match the pattern
+				scripts with a name that match the pattern
 				"name" are returned.
 		    sid		Script ID |<SID>|.  If specified, only
 				information about the script with ID "sid" is
@@ -5666,7 +5667,7 @@
 			     "!"     Insert and Commandline mode
 				     (|mapmode-ic|)
 		  "sid"	     The script local ID, used for <sid> mappings
-			     (|<SID>|).
+			     (|<SID>|).  Negative for special contexts.
 		  "scriptversion"  The version of the script.  999999 for
 				   |Vim9| script.
 		  "lnum"     The line number in "sid", zero if unknown.
@@ -7101,7 +7102,7 @@
 reltime({start}, {end})					*reltime()*
 		Return an item that represents a time value.  The item is a
 		list with items that depend on the system.  In Vim 9 script
-		list<any> can be used.
+		the type list<any> can be used.
 		The item can be passed to |reltimestr()| to convert it to a
 		string or |reltimefloat()| to convert to a Float.  For
 		example, to see the time spent in function Work(): >
@@ -10754,7 +10755,7 @@
 postscript		Compiled with PostScript file printing.
 printer			Compiled with |:hardcopy| support.
 profile			Compiled with |:profile| support.
-prof_nsec		Profile results are in nano seconds.
+prof_nsec		Profile results are in nanoseconds.
 python			Python 2.x interface available. |has-python|
 python_compiled		Compiled with Python 2.x interface. |has-python|
 python_dynamic		Python 2.x interface is dynamically loaded. |has-python|
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 4fc20ca..a00049b 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 9.0.  Last change: 2023 Feb 27
+*change.txt*    For Vim version 9.0.  Last change: 2023 Mar 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -455,6 +455,12 @@
 '0x' or '0X' can be interpreted as hexadecimal rather than binary since '0b'
 are valid hexadecimal digits.
 
+When the number under the cursor is too big to fit into 32 or 64 bit
+(depending on how Vim was build), it will be rounded off to the nearest number
+that can be represented, and the addition/subtraction is skipped.  E.g. with
+64 bit support using CTRL-X on 18446744073709551616 results in
+18446744073709551615.  Same for larger numbers, such as 18446744073709551618.
+
 The CTRL-A command is very useful in a macro.  Example: Use the following
 steps to make a numbered list.
 
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 216922a..3caa7cf 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 9.0.  Last change: 2023 Jan 21
+*diff.txt*      For Vim version 9.0.  Last change: 2023 Apr 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -109,6 +109,7 @@
 		accidentally being patched.  But it may still result in
 		various ".rej" files to be created.  And when absolute path
 		names are present these files may get patched anyway.
+		Using the "patch" command is not allowed in |restricted-mode|.
 
 To make these commands use a vertical split, prepend |:vertical|.  Examples: >
 
diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt
index 918bdd8..e9bdeb5 100644
--- a/runtime/doc/digraph.txt
+++ b/runtime/doc/digraph.txt
@@ -1,4 +1,4 @@
-*digraph.txt*   For Vim version 9.0.  Last change: 2022 Nov 22
+*digraph.txt*   For Vim version 9.0.  Last change: 2023 Mar 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -547,7 +547,7 @@
 Θ	H*	0398	0920	GREEK CAPITAL LETTER THETA
 Ι	I*	0399	0921	GREEK CAPITAL LETTER IOTA
 Κ	K*	039A	0922	GREEK CAPITAL LETTER KAPPA
-Λ	L*	039B	0923	GREEK CAPITAL LETTER LAMDA
+Λ	L*	039B	0923	GREEK CAPITAL LETTER LAMDA (aka LAMBDA)
 Μ	M*	039C	0924	GREEK CAPITAL LETTER MU
 Ν	N*	039D	0925	GREEK CAPITAL LETTER NU
 Ξ	C*	039E	0926	GREEK CAPITAL LETTER XI
@@ -578,7 +578,7 @@
 θ	h*	03B8	0952	GREEK SMALL LETTER THETA
 ι	i*	03B9	0953	GREEK SMALL LETTER IOTA
 κ	k*	03BA	0954	GREEK SMALL LETTER KAPPA
-λ	l*	03BB	0955	GREEK SMALL LETTER LAMDA
+λ	l*	03BB	0955	GREEK SMALL LETTER LAMDA (aka LAMBDA)
 μ	m*	03BC	0956	GREEK SMALL LETTER MU
 ν	n*	03BD	0957	GREEK SMALL LETTER NU
 ξ	c*	03BE	0958	GREEK SMALL LETTER XI
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 84f5f5f..5c77c79 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 9.0.  Last change: 2023 Feb 25
+*eval.txt*	For Vim version 9.0.  Last change: 2023 Apr 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1788,6 +1788,8 @@
 		    :	call My_Update()
 		    :endif
 <		You cannot change or delete the b:changedtick variable.
+		If you need more information about the change see
+		|listener_add()|.
 
 						*window-variable* *w:var* *w:*
 A variable name that is preceded with "w:" is local to the current window.  It
@@ -4584,28 +4586,18 @@
 The `:scriptnames` command can be used to get a list of all script files that
 have been sourced.  There is also the `getscriptinfo()` function, but the
 information returned is not exactly the same.  In case you need to manipulate
-the output of `scriptnames` this code can be used: >
-    " Get the output of ":scriptnames" in the scriptnames_output variable.
-    let scriptnames_output = ''
-    redir => scriptnames_output
-    silent scriptnames
-    redir END
+the list, this code can be used as a base: >
 
-    " Split the output into lines and parse each line.	Add an entry to the
-    " "scripts" dictionary.
-    let scripts = {}
-    for line in split(scriptnames_output, "\n")
-      " Only do non-blank lines.
-      if line =~ '\S'
-	" Get the first number in the line.
-	let nr = matchstr(line, '\d\+')
-	" Get the file name, remove the script number " 123: ".
-	let name = substitute(line, '.\+:\s*', '', '')
-	" Add an item to the Dictionary
-	let scripts[nr] = name
-      endif
-    endfor
-    unlet scriptnames_output
+    # Create or update scripts dictionary, indexed by SNR, and return it.
+    def Scripts(scripts: dict<string> = {}): dict<string>
+      for info in getscriptinfo()
+        if scripts->has_key(info.sid)
+          continue
+        endif
+        scripts[info.sid] = info.name
+      endfor
+      return scripts
+    enddef
 
 ==============================================================================
 10. Vim script versions		*vimscript-version* *vimscript-versions*
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index bb1dcb6..e8078be 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt*      For Vim version 9.0.  Last change: 2023 Jan 29
+*fold.txt*      For Vim version 9.0.  Last change: 2023 Mar 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -353,7 +353,8 @@
 		'foldenable' will be set.
 
 							*za*
-za		When on a closed fold: open it.  When folds are nested, you
+za		Summary: Toggle the fold under the cursor.
+		When on a closed fold: open it.  When folds are nested, you
 		may have to use "za" several times.  When a count is given,
 		that many closed folds are opened.
 		When on an open fold: close it and set 'foldenable'.  This
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index 724318d..7c22c1c 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 9.0.  Last change: 2023 Feb 26
+*gui.txt*       For Vim version 9.0.  Last change: 2023 Mar 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -144,7 +144,7 @@
 		remembered until the window is opened.  The position is
 		adjusted to make the window fit on the screen (if possible).
 
-						    *:win* *:winsize* *E465*
+					    *:wi* *:win* *:winsize* *E465*
 :win[size] {width} {height}
 		Set the window height to {width} by {height} characters.
 		It is recommended to use `:set lines=11 columns=22` instead,
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 905f9ad..fb92ea3 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 9.0.  Last change: 2023 Feb 27
+*map.txt*       For Vim version 9.0.  Last change: 2023 Mar 09
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1566,6 +1566,11 @@
 completion as filenames, buffers, etc.  Exactly how this works depends upon the
 command's attributes, which are specified when the command is defined.
 
+When defining a user command in a script, it will be able to call functions
+local to the script and use mappings local to the script.  When the user
+invokes the user command, it will run in the context of the script it was
+defined in.  This matters if |<SID>| is used in a command.
+
 There are a number of attributes, split into four categories: argument
 handling, completion behavior, range handling, and special cases.  The
 attributes are described below, by category.
@@ -1781,6 +1786,11 @@
 such as commands with an expression argument, cannot be followed by a "|" and
 another command.
 
+If the command is defined in Vim9 script (a script that starts with
+`:vim9script` and in a `:def` function) then {repl} will be executed as in Vim9
+script.  Thus this depends on where the command is defined, not where it is
+used.
+
 The replacement text {repl} for a user defined command is scanned for special
 escape sequences, using <...> notation.  Escape sequences are replaced with
 values from the entered command line, and all other text is copied unchanged.
@@ -1915,14 +1925,5 @@
 This will invoke: >
 	:call Allargs("%s/foo/bar/ge|update")
 <
-If the command is defined in Vim9 script (a script that starts with
-`:vim9script` and in a `:def` function) then {repl} will be executed as in Vim9
-script.  Thus this depends on where the command is defined, not where it is
-used.
-
-When defining a user command in a script, it will be able to call functions
-local to the script and use mappings local to the script.  When the user
-invokes the user command, it will run in the context of the script it was
-defined in.  This matters if |<SID>| is used in a command.
 
  vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 799e05d..91f50e7 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 9.0.  Last change: 2023 Feb 17
+*options.txt*	For Vim version 9.0.  Last change: 2023 Apr 12
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -7657,11 +7657,12 @@
 			global
 	When "on" the commands listed below move the cursor to the first
 	non-blank of the line.  When off the cursor is kept in the same column
-	(if possible).  This applies to the commands: CTRL-D, CTRL-U, CTRL-B,
-	CTRL-F, "G", "H", "M", "L", gg, and to the commands "d", "<<" and ">>"
-	with a linewise operator, with "%" with a count and to buffer changing
-	commands (CTRL-^, :bnext, :bNext, etc.).  Also for an Ex command that
-	only has a line number, e.g., ":25" or ":+".
+	(if possible).  This applies to the commands:
+	- CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", "gg"
+	- "d", "<<" and ">>" with a linewise operator
+	- "%" with a count
+	- buffer changing commands (CTRL-^, :bnext, :bNext, etc.)
+	- Ex commands that only has a line number, e.g., ":25" or ":+".
 	In case of buffer changing commands the cursor is placed at the column
 	where it was the last time the buffer was edited.
 	NOTE: This option is set when 'compatible' is set.
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index f242430..a7238a9 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 9.0.  Last change: 2022 Apr 06
+*pi_netrw.txt*  For Vim version 9.0.  Last change: 2023 Apr 22
 
 	    ------------------------------------------------
 	    NETRW REFERENCE MANUAL    by Charles E. Campbell
@@ -968,7 +968,7 @@
      fun! NetReadFixup(method, line1, line2)
        if method == 3   " ftp (no <.netrc>)
         let fourblanklines= line2 - 3
-        silent fourblanklines .. "," .. line2 .. "g/^\s*/d"
+        silent fourblanklines.",".line2."g/^\s*/d"
        endif
      endfunction
     endif
@@ -1198,7 +1198,7 @@
 list.
 
 								*netrw-:NetrwMB*
-Additionally, one may use :NetrwMB to bookmark files or directories. >
+Addtionally, one may use :NetrwMB to bookmark files or directories. >
 
 	:NetrwMB[!] [files/directories]
 
@@ -1625,10 +1625,8 @@
       This will cause the matching files to be marked.  Then,
       press "D".
 
-If your vim has 7.4 with patch#1107, then |g:netrw_localrmdir| no longer
-is used to remove directories; instead, vim's |delete()| is used with
-the "d" option.  Please note that only empty directories may be deleted
-with the "D" mapping.  Regular files are deleted with |delete()|, too.
+Please note that only empty directories may be deleted with the "D" mapping.
+Regular files are deleted with |delete()|, too.
 
 The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are
 used to control the attempts to remove remote files and directories.  The
@@ -1647,8 +1645,7 @@
 	|g:netrw_rmf_cmd|: ssh HOSTNAME rm -f
 
 Related topics: |netrw-d|
-Associated setting variable: |g:netrw_localrmdir| |g:netrw_rm_cmd|
-                             |g:netrw_rmdir_cmd|   |g:netrw_ssh_cmd|
+Associated setting variable: |g:netrw_rm_cmd| |g:netrw_ssh_cmd|
 
 
 *netrw-explore*  *netrw-hexplore* *netrw-nexplore* *netrw-pexplore*
@@ -1691,7 +1688,11 @@
 	  to 2; edits will thus preferentially be made in window#2.
 
 	  The [N] specifies a |g:netrw_winsize| just for the new :Lexplore
-	  window.
+	  window. That means that
+	    if [N] < 0 : use |N| columns for the Lexplore window
+	    if [N] = 0 : a normal split is made
+	    if [N] > 0 : use N% of the current window will be used for the
+	                 new window
 
 	  Those who like this method often also like tree style displays;
 	  see |g:netrw_liststyle|.
@@ -1975,7 +1976,7 @@
 	Example: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file')
 		Function can take additional files with git-ignore patterns.
 
-	Example: let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$'
+	Example: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$'
 		Combining 'netrw_gitignore#Hide' with custom patterns.
 <
 
@@ -2815,7 +2816,7 @@
 				= 2: wide listing (multiple files in columns)
 				= 3: tree style listing
 
-  *g:netrw_list_hide*		comma-separated pattern list for hiding files
+  *g:netrw_list_hide*		comma separated pattern list for hiding files
 				Patterns are regular expressions (see |regexp|)
 				There's some special support for git-ignore
 				files: you may add the output from the helper
@@ -2825,7 +2826,7 @@
 
 				Examples:
 				 let g:netrw_list_hide= '.*\.swp$'
-				 let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$'
+				 let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$'
 				default: ""
 
   *g:netrw_localcopycmd*	="cp"           Linux/Unix/MacOS/Cygwin
@@ -2863,18 +2864,6 @@
 				=" /c move"                     Windows
 				Options for |g:netrw_localmovecmd|
 
-  *g:netrw_localrmdir*		="rmdir"        Linux/Unix/MacOS/Cygwin
-				=expand("$COMSPEC")             Windows
-				Remove directory command (rmdir)
-				This variable is only used if your vim is
-				earlier than 7.4 or if your vim doesn't
-				have patch#1107.  Otherwise, |delete()|
-				is used with the "d" option.
-
-  *g:netrw_localrmdiropt*	=""             Linux/Unix/MacOS/Cygwin
-				=" /c rmdir"                    Windows
-				Options for |g:netrw_localrmdir|
-
   *g:netrw_maxfilenamelen*	=32 by default, selected so as to make long
 				    listings fit on 80 column displays.
 				If your screen is wider, and you have file
@@ -3785,7 +3774,7 @@
 	     Netrw uses several system level commands to do things (see
 
 		 |g:netrw_localcopycmd|, |g:netrw_localmovecmd|,
-		 |g:netrw_localrmdir|, |g:netrw_mkdir_cmd|).
+		 |g:netrw_mkdir_cmd|).
 
 	    You may need to adjust the default commands for one or more of
 	    these commands by setting them properly in your .vimrc.  Another
@@ -3911,6 +3900,13 @@
 ==============================================================================
 12. History						*netrw-history* {{{1
 
+	v172:	Sep 02, 2021	* (Bram Moolenaar) Changed "l:go" to "go"
+				* (Bram Moolenaar) no need for "b" in
+				  netrw-safe guioptions
+		Nov 15, 2021	* removed netrw_localrm and netrw_localrmdir
+				  references
+		Aug 18, 2022	* (Miguel Barro) improving compatability with
+				  powershell
 	v171:	Oct 09, 2020	* included code in s:NetrwOptionsSafe()
 				  to allow |'bh'| to be set to delete when
 				  rather than hide when g:netrw_fastbrowse
@@ -3996,7 +3992,7 @@
 				  mostly for Windows.  Introduced new netrw
 				  settings: |g:netrw_localcopycmdopt|
 				  |g:netrw_localcopydircmdopt| |g:netrw_localmkdiropt|
-				  |g:netrw_localmovecmdopt| |g:netrw_localrmdiropt|
+				  |g:netrw_localmovecmdopt| g:netrw_localrmdiropt
 		Nov 21, 2016	* (mattn) provided a patch for preview; swapped
 				  winwidth() with winheight()
 		Nov 22, 2016	* (glacambre) reported that files containing
@@ -4056,7 +4052,7 @@
 				  refreshes.  However, inside a |:map-<expr>|,
 				  tab and window changes are disallowed.  Fixed.
 				  (affects netrw's s:LocalBrowseRefresh())
-				* |g:netrw_localrmdir| not used any more, but
+				* g:netrw_localrmdir not used any more, but
 				  the relevant patch that causes |delete()| to
 				  take over was #1107 (not #1109).
 				* |expand()| is now used on |g:netrw_home|;
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index a5b056f..8673324 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -1,4 +1,4 @@
-*pi_zip.txt*	For Vim version 9.0.  Last change: 2022 Oct 17
+*pi_zip.txt*	For Vim version 9.0.  Last change: 2023 Mar 12
 
 				+====================+
 				| Zip File Interface |
@@ -102,6 +102,7 @@
 
 ==============================================================================
 4. History							*zip-history* {{{1
+   v33 Dec 07, 2021 * *.xlam mentioned twice in zipPlugin
    v32 Oct 22, 2021 * to avoid an issue with a vim 8.2 patch, zipfile: has
 		      been changed to zipfile:// . This often shows up
 		      as zipfile:/// with zipped files that are root-based.
diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt
index db58241..bfc59d3 100644
--- a/runtime/doc/recover.txt
+++ b/runtime/doc/recover.txt
@@ -1,4 +1,4 @@
-*recover.txt*   For Vim version 9.0.  Last change: 2020 Aug 15
+*recover.txt*   For Vim version 9.0.  Last change: 2023 Apr 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -176,7 +176,7 @@
 :rec[over]! [file]	Like ":recover", but any changes in the current
 			buffer are lost.
 
-							*E312* *E309* *E310*
+						*E312* *E309* *E310* *E1364*
 Vim has some intelligence about what to do if the swap file is corrupt in
 some way.  If Vim has doubt about what it found, it will give an error
 message and insert lines with "???" in the text.  If you see an error message
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 054b870..8c458fb 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 9.0.  Last change: 2023 Feb 25
+*repeat.txt*    For Vim version 9.0.  Last change: 2023 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1150,8 +1150,8 @@
 
 - The accuracy of the time measured depends on the gettimeofday(), or
   clock_gettime if available, system function. The accuracy ranges from 1/100
-  second to nano seconds. With clock_gettime the times are displayed in nano
-  seconds, otherwise micro seconds.  You can use `has("prof_nsec")`.
+  second to nanoseconds. With clock_gettime the times are displayed in
+  nanoseconds, otherwise microseconds.  You can use `has("prof_nsec")`.
 
 - Real elapsed time is measured, if other processes are busy they may cause
   delays at unpredictable moments.  You may want to run the profiling several
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index b5d152a..513ca8f 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 9.0.  Last change: 2020 Aug 15
+*spell.txt*	For Vim version 9.0.  Last change: 2023 Apr 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -216,7 +216,8 @@
 how it can be set automatically when 'spelllang' is set.
 
 The 'spelloptions' option has a few more flags that influence the way spell
-checking works.
+checking works.  For example, "camel" splits CamelCased words so that each
+part of the word is spell-checked separately.
 
 Vim counts the number of times a good word is encountered.  This is used to
 sort the suggestions: words that have been seen before get a small bonus,
diff --git a/runtime/doc/sponsor.txt b/runtime/doc/sponsor.txt
index 51d6c16..548cde8 100644
--- a/runtime/doc/sponsor.txt
+++ b/runtime/doc/sponsor.txt
@@ -1,4 +1,4 @@
-*sponsor.txt*   For Vim version 9.0.  Last change: 2022 May 26
+*sponsor.txt*   For Vim version 9.0.  Last change: 2023 Mar 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -58,7 +58,7 @@
 HOW TO SEND MONEY						*send-money*
 
 Credit card	Through PayPal, see the PayPal site for information:
-			https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q
+			https://www.paypal.com/
 		The e-mail address for sending sponsorship money is:
 			donate@vim.org
 		The e-mail address for Vim registration is:
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 93c56a2..10b6901 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 9.0.  Last change: 2023 Feb 26
+*syntax.txt*	For Vim version 9.0.  Last change: 2023 Apr 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2803,8 +2803,8 @@
 
 If you use Python 2 or straddling code (Python 2 and 3 compatible),
 you can enforce the use of an older syntax file with support for
-Python 2 and up to Python 3.5.
-	: let python_use_python2_syntax = 1
+Python 2 and up to Python 3.5. >
+	:let python_use_python2_syntax = 1
 This option will exclude all modern Python 3.6 or higher features.
 
 Note: Only existence of these options matters, not their value.
@@ -3748,11 +3748,12 @@
 Vim understands three types of syntax items:
 
 1. Keyword
-   It can only contain keyword characters, according to the 'iskeyword'
-   option.  It cannot contain other syntax items.  It will only match with a
-   complete word (there are no keyword characters before or after the match).
-   The keyword "if" would match in "if(a=b)", but not in "ifdef x", because
-   "(" is not a keyword character and "d" is.
+   It can only contain keyword characters, according to the characters
+   specified with |:syn-iskeyword| or the 'iskeyword' option.  It cannot
+   contain other syntax items.  It will only match with a complete word (there
+   are no keyword characters before or after the match).  The keyword "if"
+   would match in "if(a=b)", but not in "ifdef x", because "(" is not a
+   keyword character and "d" is.
 
 2. Match
    This is a match with a single regexp pattern.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 61e7c69..296aba9 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3563,6 +3563,7 @@
 :wall	editing.txt	/*:wall*
 :wh	eval.txt	/*:wh*
 :while	eval.txt	/*:while*
+:wi	gui.txt	/*:wi*
 :win	gui.txt	/*:win*
 :winc	windows.txt	/*:winc*
 :wincmd	windows.txt	/*:wincmd*
@@ -4154,7 +4155,6 @@
 E1105	vim9.txt	/*E1105*
 E1106	vim9.txt	/*E1106*
 E1107	eval.txt	/*E1107*
-E1108	vim9.txt	/*E1108*
 E1109	builtin.txt	/*E1109*
 E111	eval.txt	/*E111*
 E1110	builtin.txt	/*E1110*
@@ -4314,7 +4314,6 @@
 E1250	vim9.txt	/*E1250*
 E1251	vim9.txt	/*E1251*
 E1252	vim9.txt	/*E1252*
-E1253	vim9.txt	/*E1253*
 E1254	vim9.txt	/*E1254*
 E1255	map.txt	/*E1255*
 E1256	vim9.txt	/*E1256*
@@ -4435,6 +4434,8 @@
 E1360	vim9class.txt	/*E1360*
 E1361	syntax.txt	/*E1361*
 E1362	vim9class.txt	/*E1362*
+E1363	vim9class.txt	/*E1363*
+E1364	recover.txt	/*E1364*
 E137	starting.txt	/*E137*
 E138	starting.txt	/*E138*
 E139	message.txt	/*E139*
@@ -5277,7 +5278,6 @@
 E92	message.txt	/*E92*
 E920	channel.txt	/*E920*
 E921	channel.txt	/*E921*
-E922	builtin.txt	/*E922*
 E923	builtin.txt	/*E923*
 E924	quickfix.txt	/*E924*
 E925	quickfix.txt	/*E925*
@@ -7422,8 +7422,6 @@
 g:netrw_localmkdiropt	pi_netrw.txt	/*g:netrw_localmkdiropt*
 g:netrw_localmovecmd	pi_netrw.txt	/*g:netrw_localmovecmd*
 g:netrw_localmovecmdopt	pi_netrw.txt	/*g:netrw_localmovecmdopt*
-g:netrw_localrmdir	pi_netrw.txt	/*g:netrw_localrmdir*
-g:netrw_localrmdiropt	pi_netrw.txt	/*g:netrw_localrmdiropt*
 g:netrw_maxfilenamelen	pi_netrw.txt	/*g:netrw_maxfilenamelen*
 g:netrw_menu	pi_netrw.txt	/*g:netrw_menu*
 g:netrw_mkdir_cmd	pi_netrw.txt	/*g:netrw_mkdir_cmd*
@@ -7876,6 +7874,10 @@
 hl-NonText	syntax.txt	/*hl-NonText*
 hl-Normal	syntax.txt	/*hl-Normal*
 hl-Pmenu	syntax.txt	/*hl-Pmenu*
+hl-PmenuExtra	syntax.txt	/*hl-PmenuExtra*
+hl-PmenuExtraSel	syntax.txt	/*hl-PmenuExtraSel*
+hl-PmenuKind	syntax.txt	/*hl-PmenuKind*
+hl-PmenuKindSel	syntax.txt	/*hl-PmenuKindSel*
 hl-PmenuSbar	syntax.txt	/*hl-PmenuSbar*
 hl-PmenuSel	syntax.txt	/*hl-PmenuSel*
 hl-PmenuThumb	syntax.txt	/*hl-PmenuThumb*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 6792ac5..178abbd 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 9.0.  Last change: 2023 Feb 26
+*todo.txt*      For Vim version 9.0.  Last change: 2023 Apr 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,17 +38,35 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Delete ci/load-snd-dummy.sh?
+Update Filelist
+
+When using ":set no<CTRL-A>" add options starting with "no", not all boolean
+options.
+
 Crash when splitting window: #11961.  Set RedrawingDisabled in
 win_split_ins().
 
-CI: include #12008 end of February.
-
 In runtime/autoload/dist/script.vim change "set ft=" to "setlocal ft=" ?
 
 CTRL-J mapping is not used if halfway another mapping. #12002
 Is simplified mapping not used but escape code has been simplified?
 
-Include #11952 after a runtime files update.
+Windows scroll when using the autocmd window.  #12085
+in restore_snapshot_rec() restore more values from the snapshot, instead of
+calling frame_new_height() and frame_new_width(), especially w_topline and
+w_skipcol.
+
+'smoothscroll' problem: #12199
+Problems related to 'smoothscroll': #12218 and #12211
+
+include #12140: positional arguments in printf(), fixes #10577
+
+Include #11818: attach custom data to quickfix items.
+
+When a help item can't be found, then open 'helpfile'.  Search for the tag in
+that file and gtive E149 only when not found.  Helps for a tiny Vim installed
+without all the help files.
 
 Errors when running tests with valgrind:
 - test_codestyle.vim:  e.g.:
@@ -61,12 +79,19 @@
 - Make spell checking work with recent .dic/.aff files, e.g. French.  #4916
     Make Vim understand the format somehow?   Search for "spell" below.
     Make sure suggestions are speedy, also with composed words (German).
-- Discuss alternatives for using other grammars (treesitter, TextMate).
+- Make syntax highlighting faster and better.  Discuss alternatives for using
+  other grammars (treesitter, TextMate).
    - Possibly conversion to Vim syntax rules.
    - Other mechanism than group and cluster to nest syntax items, to be used
      for grammars.
    - Possibly keeping the parsed syntax tree and incremental updates.
    - tree-sitter doesn't handle incorrect syntax (while typing) properly.
+   - NeoVim uses treesitter, what can we learn from that?
+   - Vscode is asked to switch to treesitter:
+      https://github.com/microsoft/vscode/issues/50140
+   - Vscode uses TextMate.  #9087 - Other people don't like it.
+      https://github.com/icedman/vim-textmate
+   - sublime grammar?  Hugo mentions it's a moving target  #9087
    - Make clear how it relates to LSP.
    - example plugin: https://github.com/uga-rosa/dps-vsctm.vim
 
@@ -77,11 +102,17 @@
 	Check for error: can't have same name twice (ignoring "_" prefix).
   - Make ":defcompile ClassName" compile all functions and methods in the
     class.
+  - Forward declaration of a class?  E.g. for Clone() function.
+	email lifepillar 2023 Mar 26
+  - Getting member of variable with "any" type should be handled at runtime.
+    Remove temporary solution from #12096 / patch 9.0.1375.
   - Private methods?
 	either: private def Func()
 	    or: def _Func()
     Perhaps use "private" keyword instead of "_" prefix?
   - "final" object members - can only be set in the constructor.
+  - "obj.Method()" does not always work in a compiled function, assumes "obj"
+    is a dictionary.  #12196
   - accept line breaks in member initialization.  #11957
   - object empty(), len() - can class define a method to be used for them?
   - add to help: when using a default new() method then reordering object
@@ -97,7 +128,7 @@
   - a variant of type() that returns a different type for each class?
       list<number> and list<string> should also differ.
   - Issue #11822: any.Func() can be a dict or an object call, need to handle
-    this at runtime.
+    this at runtime.  Also see #12198 for an example.
 - implement :type
 - implement :enum
 - Promise class, could be used to wait on a popup close callback?
@@ -113,7 +144,9 @@
     8 is actually "super".
 - t_RV	request terminal version string; xterm:	"\033[>c"
     change in terminfo for "RV" uses the wrong escape sequence 7 - 14 Jan only
-Codes used for focus gained and lost (currently using use_xterm_like_mouse())
+- Codes for <PasteStart> t_PS and <PasteEnd> t_PE; with bracketed paste:
+    t_BE and t_BD.
+- Codes used for focus gained and lost (currently using use_xterm_like_mouse())
   termcodes are hard-coded in set_termname(), not named.
     Use the XF flag?  enables recognizing the focus in/out events.
     Check if t_fe is not empty.
@@ -275,6 +308,8 @@
 
 Patch adds showcmd() function  #11708
 
+Cursor is after the end of the line:  #12137.
+
 Crash when a variable is removed while listing variables (Issue #11435)
 
 Autoconf: must use autoconf 2.69, later version generates lots of warnings
@@ -283,11 +318,29 @@
 Problem with Visual highlight when 'linebreak' and 'showbreak' are set.
 #11272
 
+Selected index returned by complete_info() does not match the index in the
+list of items.  #12230
+
+Support dark mode for MS-Windows: #12282
+
+Remote command escapes single quote with backslash, should be doubling the
+single quote in vim_strsave_escaped_ext()  #12202.
+
+PR to add custom and customlist completion types.  #12228
+
 Can deref_func_name() and deref_function_name() be merged?
 
+Using :global with a pattern containing \zs doesn't use the line where \zs
+matches but the start of the pattern.  #3695  If there is a useful application
+for this, it can be made to work by changing the call to ml_setmarked():
+		ml_setmarked(lnum + regmatch.startpos[0].lnum);
+
 After patch 8.2.4915 w_botline is computed much more often. Can this be
 reduced?
 
+When 'delcombine' is set a put after "x" includes the base character and all
+combining characters. (Ron Aaron, 2023 Apr 10)
+
 Add BufDeletePost.  #11041
 
 Add winid arg to col() and charcol()  #11466 (request #11461)
@@ -310,6 +363,8 @@
 
 PR #11579 to add visualtext(), return Visually selected text.
 
+PR #12032: Support Python 3 stable ABI.
+
 Stray characters in the shell #11719, caused by requesting a response for:
 - XT key sequences
 - Whether modifyOtherKeys is active
@@ -319,7 +374,7 @@
 Issue #10512: Dynamic loading broken with Perl 5.36
 Damien has a patch (2022 Dec 4)
 
-Request #11965: Allow severaql "%=" items in 'statusline', makes it possible
+Request #11965: Allow several "%=" items in 'statusline', makes it possible
 to have text in the center.
 
 Add some kind of ":whathappend" command and functions to make visible what the
@@ -443,6 +498,12 @@
 When 'spelloptions' is "camel" then zG doesn't work on some words.
 (Gary Johnson, 17 Oct 2022)
 
+'cdpath' problems:
+- Adding "~" to 'cdpath' doesn't work for completion?  (Davido, 2013 Aug 19)
+- Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME.
+  (2006 Jul 26, Gary Johnson)
+- Completion of ":cd" doesn't use 'cdpath'. #374.
+
 Make "g>" and "g<" in Visual mode move the text right or left.
 Also for a block selection.  #8558
 
@@ -478,6 +539,8 @@
 Completion for ":runtime" should show valid values, not what's in the current
 directory. (#11447)
 
+Add a "description" property to mappings.  #12205
+
 Add an option to start_timer() to return from the input loop with K_IGNORE.
 This is useful e.g. when a popup was created that disables mappings, we need
 to return from vgetc() to make this happen.  #7011
@@ -1364,7 +1427,7 @@
 Patch to improve indenting for C++ constructor with initializer list.
 (Hirohito Higashi, 2016 Mar 31)
 
-Zero-out krypt key information when no longer in use. (Ben Fritz, 2017 May 15)
+Zero-out crypt key information when no longer in use. (Ben Fritz, 2017 May 15)
 
 Add stronger encryption.  Could use libsodium (NaCl).
 https://github.com/jedisct1/libsodium/
@@ -1521,6 +1584,8 @@
 Patch to add a "literal" argument to bufnr().  (Olaf Dabrunz, 2015 Aug 4)
 
 Extended file attributes lost on write (backupcopy=no).  Issue 306.
+Would require reading attributes from the original file with listxattr() and
+getxattr() and adding them to the new file.
 
 Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
 OK to not block marks?
@@ -1538,8 +1603,6 @@
 When in 'comments' "n:x" follows after three-part comment directly it repeats
 any one-character from the previous line. (Kartik Agaram, 2014 Sep 19)
 
-Adding "~" to 'cdpath' doesn't work for completion?  (Davido, 2013 Aug 19)
-
 Patch: Let rare word highlighting overrule good word highlighting.
 (Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)
 
@@ -2614,9 +2677,6 @@
 
 Win32: Is it possible to have both postscript and Win32 printing?
 
-Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
-Jul 26, Gary Johnson)
-
 Using UTF-8 character with ":command" does not work properly. (Matt Wozniski,
 2008 Sep 29)
 
@@ -3906,14 +3966,6 @@
 
 
 Syntax highlighting:
-    Long term goal: faster, better, etc.  Options:
-    - use treesitter, NeoVim uses it - Many people don't like it.
-	After changes requires rebuilding the library.
-    - use TextMate, vscode uses it.  #9087 - Other people don't like it.
-	    https://github.com/icedman/vim-textmate
-      Vscode is asked to switch to treesitter:
-      https://github.com/microsoft/vscode/issues/50140
-    - sublime grammar?
 8   Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
     Should do the same for ":syn on" and ":syn manual".
 8   Support "containedin" argument for ":syn include", so that the defined
@@ -5406,8 +5458,10 @@
     Also see #1635.
 -   When using ":diffput" through a mapping, undo in the target buffer isn't
     synced.  (Ryan Carney, 2016 Sep 14)
--   The undo file name can get too long. (Issue 346)
+-   The undo file name can get too long. (Issue #346)
     For the path use a hash instead of dir%dir%dir%name  hash%name.
+    Check both for some time for backwards compatibility.
+    Alternatively: create the directory structure under 'undodir'.
 -   Patch to add ":undorecover", get as much text out of the undo file as
     possible. (Christian Brabandt, 2014 Mar 12, update Aug 22)
 -   Patch to support :undo absolute jump to file save number. (Christian
diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt
index baae7f8..b2abc43 100644
--- a/runtime/doc/usr_03.txt
+++ b/runtime/doc/usr_03.txt
@@ -1,4 +1,4 @@
-*usr_03.txt*	For Vim version 9.0.  Last change: 2022 Oct 30
+*usr_03.txt*	For Vim version 9.0.  Last change: 2023 Mar 13
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -173,6 +173,8 @@
 		---+---------------->
 			   %
 
+Other ways to move around code can be found in |usr_29.txt|.
+
 ==============================================================================
 *03.5*	Moving to a specific line
 
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index ef8f927..03b732b 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -29816,7 +29816,7 @@
 Patch 8.2.4863
 Problem:    Accessing freed memory in test without the +channel feature.
             (Dominique Pellé)
-Solution:   Do not generted PUSHCHANNEL or PUSHJOB if they are not
+Solution:   Do not generate PUSHCHANNEL or PUSHJOB if they are not
             implemented. (closes #10350)
 Files:      src/vim9instr.c, src/errors.h, src/vim9compile.c,
             src/testdir/test_vim9_script.vim
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 51f1f16..6f97375 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 9.0.  Last change: 2023 Feb 21
+*vim9.txt*	For Vim version 9.0.  Last change: 2023 Mar 07
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -914,7 +914,7 @@
 "is" and "isnot" (|expr-is| and |expr-isnot|) when used on strings now return
 false.  In legacy script they just compare the strings, in |Vim9| script they
 check identity, and strings are copied when used, thus two strings are never
-the same (this might change some day if strings are not copied but reference
+the same (this might change someday if strings are not copied but reference
 counted).
 
 
@@ -1461,8 +1461,8 @@
 return value) results in error *E1031*  *E1186* .
 
 There is no array type, use list<{type}> instead.  For a list constant an
-efficient implementation is used that avoids allocating lot of small pieces of
-memory.
+efficient implementation is used that avoids allocating a lot of small pieces
+of memory.
 							*E1005* *E1007*
 A partial and function can be declared in more or less specific ways:
 func				any kind of function reference, no type
@@ -1552,6 +1552,8 @@
 
 If a type is given where it is not expected you can get *E1272* .
 
+If a type is incomplete you get *E1363*, e.g. when you have an object for
+which the class is not known (usually that is a null object).
 
 Type inference ~
 							*type-inference*
diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt
index 3c7722c..6acbca5 100644
--- a/runtime/doc/vim9class.txt
+++ b/runtime/doc/vim9class.txt
@@ -1,4 +1,4 @@
-*vim9class.txt*	For Vim version 9.0.  Last change: 2023 Feb 26
+*vim9class.txt*	For Vim version 9.0.  Last change: 2023 Mar 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -205,7 +205,7 @@
 Dart language.
 
 Putting together this way of using new() and making the members public results
-in a much shorter class definition as what we started with: >
+in a much shorter class definition than what we started with: >
 
 	class TextPosition
 	   public this.lnum: number
@@ -526,7 +526,7 @@
 initialized, the value is null.  When trying to use this null object Vim often
 does not know what class was supposed to be used.  Vim then cannot check if
 a member name is correct and you will get an "Using a null object" error,
-even when the member name is invalid. *E1360* *E1362*
+even when the member name is invalid. *E1360* *E1362* *E1363*
 
 
 Default constructor ~
@@ -872,8 +872,8 @@
 
 The Vim scripts are expected to be used in a plugin, with just one person or a
 small team working on it.  Complex rules then only make it more complicated,
-the extra safety provide by the rules isn't really needed.  Let's just keep it
-simple and not specify access details.
+the extra safety provided by the rules isn't really needed.  Let's just keep
+it simple and not specify access details.
 
 
 ==============================================================================
diff --git a/runtime/doc/vimtutor.1 b/runtime/doc/vimtutor.1
index 0aa7e8d..ec2d85a 100644
--- a/runtime/doc/vimtutor.1
+++ b/runtime/doc/vimtutor.1
@@ -47,7 +47,7 @@
 was originally written for Vi by Michael C. Pierce and Robert K. Ware,
 Colorado School of Mines using ideas supplied by Charles Smith,
 Colorado State University.
-E-mail: bware@mines.colorado.edu.
+E-mail: bware@mines.colorado.edu (now invalid).
 .br
 It was modified for
 .B Vim
diff --git a/runtime/doc/vimtutor.man b/runtime/doc/vimtutor.man
index 9f2350a..76f6471 100644
--- a/runtime/doc/vimtutor.man
+++ b/runtime/doc/vimtutor.man
@@ -1,4 +1,4 @@
-VIMTUTOR(1)                                                        VIMTUTOR(1)
+VIMTUTOR(1)                 General Commands Manual                VIMTUTOR(1)
 
 
 
@@ -38,7 +38,7 @@
        The  Vimtutor  was  originally  written for Vi by Michael C. Pierce and
        Robert K. Ware, Colorado  School  of  Mines  using  ideas  supplied  by
        Charles  Smith,  Colorado  State  University.  E-mail: bware@mines.col‐
-       orado.edu.
+       orado.edu (now invalid).
        It was modified for Vim by Bram Moolenaar.  For the names of the trans‐
        lators see the tutor files.