Update runtime files.
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 44997f3..72e2cf1 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1401,7 +1401,7 @@
 		one less than the number of the undone change.
 
 char2nr({string} [, {utf8}])					*char2nr()*
-		Return number value of the first char in {string}.
+		Return Number value of the first char in {string}.
 		Examples: >
 			char2nr(" ")		returns 32
 			char2nr("ABC")		returns 65
@@ -1712,13 +1712,13 @@
 
 		An example: >
 		   let choice = confirm("What do you want?",
-		   			\ "&Apples\n&Oranges\n&Bananas", 2)
+					\ "&Apples\n&Oranges\n&Bananas", 2)
 		   if choice == 0
-		   	echo "make up your mind!"
+			echo "make up your mind!"
 		   elseif choice == 3
-		   	echo "tasteful"
+			echo "tasteful"
 		   else
-		   	echo "I prefer bananas myself."
+			echo "I prefer bananas myself."
 		   endif
 <		In a GUI dialog, buttons are used.  The layout of the buttons
 		depends on the 'v' flag in 'guioptions'.  If it is included,
@@ -2306,8 +2306,8 @@
 <		There must be no space between the symbol (&/$/*/#) and the
 		name.
 		There must be no extra characters after the name, although in
-		a few cases this is ignored.  That may become more strict in
-		the future, thus don't count on it!
+		a few cases this is ignored.  That may become stricter in the
+		future, thus don't count on it!
 		Working example: >
 			exists(":make")
 <		NOT working example: >
@@ -3219,7 +3219,7 @@
 
 		Without [expr] and when [expr] is 0 a whole character or
 		special key is returned.  If it is a single character, the
-		result is a number.  Use nr2char() to convert it to a String.
+		result is a Number.  Use |nr2char()| to convert it to a String.
 		Otherwise a String is returned with the encoded character.
 		For a special key it's a String with a sequence of bytes
 		starting with 0x80 (decimal: 128).  This is the same value as
@@ -5468,7 +5468,7 @@
 		  "sid"	     The script local ID, used for <sid> mappings
 			     (|<SID>|).
 		  "scriptversion"  The version of the script.  999999 for
-		  		   |Vim9| script.
+				   |Vim9| script.
 		  "lnum"     The line number in "sid", zero if unknown.
 		  "nowait"   Do not wait for other, longer mappings.
 			     (|:map-<nowait>|).
@@ -5573,7 +5573,7 @@
 		Restore a mapping from a dictionary, possibly returned by
 		|maparg()| or |maplist()|.  A buffer mapping, when dict.buffer
 		is true, is set on the current buffer; it is up to the caller
-		to insure that the intended buffer is the current buffer. This
+		to ensure that the intended buffer is the current buffer. This
 		feature allows copying mappings from one buffer to another.
 		The dict.mode value may restore a single mapping that covers
 		more than one mode, like with mode values of '!', ' ', 'nox',
@@ -8324,7 +8324,7 @@
 		If you want a list to remain unmodified make a copy first: >
 			:let sortedlist = sort(copy(mylist))
 
-<		When {how} is omitted or is an string, then sort() uses the
+<		When {how} is omitted or is a string, then sort() uses the
 		string representation of each item to sort on.  Numbers sort
 		after Strings, |Lists| after Numbers.  For sorting text in the
 		current buffer use |:sort|.
@@ -8779,9 +8779,11 @@
 			GetFormat()->strftime()
 
 strgetchar({str}, {index})				*strgetchar()*
-		Get character {index} from {str}.  This uses a character
-		index, not a byte index.  Composing characters are considered
-		separate characters here.
+		Get a Number corresponding to the character at {index} in
+		{str}.  This uses a zero-based character index, not a byte
+		index.  Composing characters are considered separate
+		characters here.  Use |nr2char()| to convert the Number to a
+		String.
 		Also see |strcharpart()| and |strchars()|.
 
 		Can also be used as a |method|: >
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 8808e43..373f459 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2022 May 09
+*map.txt*       For Vim version 8.2.  Last change: 2022 May 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -701,6 +701,7 @@
 							*<MouseMove>*
 The special key name "<MouseMove>" can be used to handle mouse movement.  It
 needs to be enabled with 'mousemoveevent'.  Currently only works in the GUI.
+The |getmousepos()| function can be used to obtain the mouse position.
 
 							*<Char>* *<Char->*
 To map a character by its decimal, octal or hexadecimal number the <Char>
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index fd78328..4171a5d 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 8.2.  Last change: 2022 May 06
+*syntax.txt*	For Vim version 8.2.  Last change: 2022 May 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -32,13 +32,14 @@
 10. Including syntax files	|:syn-include|
 11. Synchronizing		|:syn-sync|
 12. Listing syntax items	|:syntax|
-13. Highlight command		|:highlight|
-14. Linking groups		|:highlight-link|
-15. Cleaning up			|:syn-clear|
-16. Highlighting tags		|tag-highlight|
-17. Window-local syntax		|:ownsyntax|
-18. Color xterms		|xterm-color|
-19. When syntax is slow		|:syntime|
+13. Colorschemes		|color-schemes|
+14. Highlight command		|:highlight|
+15. Linking groups		|:highlight-link|
+16. Cleaning up			|:syn-clear|
+17. Highlighting tags		|tag-highlight|
+18. Window-local syntax		|:ownsyntax|
+19. Color xterms		|xterm-color|
+20. When syntax is slow		|:syntime|
 
 {Vi does not have any of these commands}
 
@@ -1511,7 +1512,7 @@
 following the language specifications in 'Symbolic Manipulation with FORM' by
 J.A.M. Vermaseren, CAN, Netherlands, 1991.
 
-If you want include your own changes to the default colors, you have to
+If you want to include your own changes to the default colors, you have to
 redefine the following syntax groups:
 
     - formConditional
@@ -4845,20 +4846,14 @@
 is mostly used, because it looks better.
 
 ==============================================================================
-13. Highlight command			*:highlight* *:hi* *E28* *E411* *E415*
+13. Colorschemes				*color-schemes*
 
-There are three types of highlight groups:
-- The ones used for specific languages.  For these the name starts with the
-  name of the language.  Many of these don't have any attributes, but are
-  linked to a group of the second type.
-- The ones used for all syntax languages.
-- The ones used for the 'highlight' option.
-							*hitest.vim*
-You can see all the groups currently active with this command: >
-    :so $VIMRUNTIME/syntax/hitest.vim
-This will open a new window containing all highlight group names, displayed
-in their own color.
-
+In the next section you can find information about indivisual highlight groups
+and how to specify colors for them.  Most likely you want to just select a set
+of colors by using the `:colorscheme` command, for example: >
+	
+	    colorscheme pablo
+<
 						*:colo* *:colorscheme* *E185*
 :colo[rscheme]		Output the name of the currently active color scheme.
 			This is basically the same as >
@@ -4876,30 +4871,62 @@
 			Doesn't work recursively, thus you can't use
 			":colorscheme" in a color scheme script.
 
-			You have two options for customizing a color scheme.
-			For changing the appearance of specific colors, you
-			can redefine a color name before loading the scheme.
-			The desert scheme uses the khaki color for the cursor.
-			To use a darker variation of the same color: >
+You have two options for customizing a color scheme.  For changing the
+appearance of specific colors, you can redefine a color name before loading
+the scheme.  The desert scheme uses the khaki color for the cursor.  To use a
+darker variation of the same color: >
 
-				let v:colornames['khaki'] = '#bdb76b'
-				colorscheme desert
+	let v:colornames['khaki'] = '#bdb76b'
+	colorscheme desert
 <
-			For further customization, such as changing
-			|:highlight-link| associations, use another name, e.g.
-			"~/.vim/colors/mine.vim", and use `:runtime` to load
-			the original color scheme: >
-				runtime colors/evening.vim
-				hi Statement ctermfg=Blue guifg=Blue
+For further customization, such as changing |:highlight-link| associations,
+use another name, e.g.  "~/.vim/colors/mine.vim", and use `:runtime` to load
+the original color scheme: >
+	runtime colors/evening.vim
+	hi Statement ctermfg=Blue guifg=Blue
 
-<			Before the color scheme will be loaded all default
-			color list scripts (`colors/lists/default.vim`) will
-			be executed and then the |ColorSchemePre| autocommand
-			event is triggered.  After the color scheme has been
-			loaded the |ColorScheme| autocommand event is
-			triggered.
-			For info about writing a color scheme file: >
-				:edit $VIMRUNTIME/colors/README.txt
+Before the color scheme will be loaded all default color list scripts
+(`colors/lists/default.vim`) will be executed and then the |ColorSchemePre|
+autocommand event is triggered.  After the color scheme has been loaded the
+|ColorScheme| autocommand event is triggered.
+
+If a color scheme is almost right, you can add modifications on top of it by
+using the |ColorScheme| autocommand.  For example, to remove the background
+color (can make it transparent in some terminals): >
+	augroup my_colorschemes
+	  au!
+	  au Colorscheme pablo hi Normal ctermbg=NONE
+	augroup END
+
+If you make a lot of changes it might be better to copy the distributed
+colorscheme to your home directory and change it: >
+	:!cp $VIMRUNTIME/colors/pablo.vim ~/.vim/colors
+	:edit ~/.vim/colors/pablo.vim
+
+With Vim 9.0 the collection of color schemes was updated and made work in many
+different terminals.  One change was to often define the Normal highlight
+group to make sure the colors work well.  In case you prefer the old version,
+you can find them here:
+https://github.com/vim/colorschemes/blob/master/legacy_colors/
+
+For info about writing a color scheme file: >
+	:edit $VIMRUNTIME/colors/README.txt
+
+
+==============================================================================
+14. Highlight command			*:highlight* *:hi* *E28* *E411* *E415*
+
+There are three types of highlight groups:
+- The ones used for specific languages.  For these the name starts with the
+  name of the language.  Many of these don't have any attributes, but are
+  linked to a group of the second type.
+- The ones used for all syntax languages.
+- The ones used for the 'highlight' option.
+							*hitest.vim*
+You can see all the groups currently active with this command: >
+    :so $VIMRUNTIME/syntax/hitest.vim
+This will open a new window containing all highlight group names, displayed
+in their own color.
 
 :hi[ghlight]		List all the current highlight groups that have
 			attributes set.
@@ -5206,7 +5233,7 @@
 	All values are hexadecimal, range from "00" to "ff".  Examples: >
             :highlight Comment guifg=#11f0c3 guibg=#ff00ff
 <
-	If you are authoring a color scheme and use the same hexademical value
+	If you are authoring a color scheme and use the same hexadecimal value
 	repeatedly, you can define a name for it in |v:colornames|. For
 	example: >
 
@@ -5416,7 +5443,7 @@
 		set.
 
 ==============================================================================
-14. Linking groups		*:hi-link* *:highlight-link* *E412* *E413*
+15. Linking groups		*:hi-link* *:highlight-link* *E412* *E413*
 
 When you want to use the same highlighting for several syntax groups, you
 can do this more easily by linking the groups into one common highlight
@@ -5460,7 +5487,7 @@
     highlight! default link cComment Question
 
 ==============================================================================
-15. Cleaning up						*:syn-clear* *E391*
+16. Cleaning up						*:syn-clear* *E391*
 
 If you want to clear the syntax stuff for the current buffer, you can use this
 command: >
@@ -5552,7 +5579,7 @@
 		them.
 
 ==============================================================================
-16. Highlighting tags					*tag-highlight*
+17. Highlighting tags					*tag-highlight*
 
 If you want to highlight all the tags in your file, you can use the following
 mappings.
@@ -5588,7 +5615,7 @@
    autocmd BufRead,BufNewFile *.[ch] endif
 
 ==============================================================================
-17. Window-local syntax				*:ownsyntax*
+18. Window-local syntax				*:ownsyntax*
 
 Normally all windows on a buffer share the same syntax settings. It is
 possible, however, to set a particular window on a file to have its own
@@ -5618,7 +5645,7 @@
 When splitting the window, the new window will use the original syntax.
 
 ==============================================================================
-18. Color xterms				*xterm-color* *color-xterm*
+19. Color xterms				*xterm-color* *color-xterm*
 
 Most color xterms have only eight colors.  If you don't get colors with the
 default setup, it should work with these lines in your .vimrc: >
@@ -5762,7 +5789,7 @@
 
 
 ==============================================================================
-19. When syntax is slow						*:syntime*
+20. When syntax is slow						*:syntime*
 
 This is aimed at authors of a syntax file.
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 8015482..b8fb359 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4267,6 +4267,7 @@
 E1276	builtin.txt	/*E1276*
 E1278	eval.txt	/*E1278*
 E128	eval.txt	/*E128*
+E1281	pattern.txt	/*E1281*
 E129	eval.txt	/*E129*
 E13	message.txt	/*E13*
 E131	eval.txt	/*E131*
@@ -5778,6 +5779,7 @@
 autocmd-events-abc	autocmd.txt	/*autocmd-events-abc*
 autocmd-execute	autocmd.txt	/*autocmd-execute*
 autocmd-expand	autocmd.txt	/*autocmd-expand*
+autocmd-functions	usr_41.txt	/*autocmd-functions*
 autocmd-groups	autocmd.txt	/*autocmd-groups*
 autocmd-intro	autocmd.txt	/*autocmd-intro*
 autocmd-list	autocmd.txt	/*autocmd-list*
@@ -5789,6 +5791,9 @@
 autocmd-searchpat	autocmd.txt	/*autocmd-searchpat*
 autocmd-use	autocmd.txt	/*autocmd-use*
 autocmd.txt	autocmd.txt	/*autocmd.txt*
+autocmd_add()	builtin.txt	/*autocmd_add()*
+autocmd_delete()	builtin.txt	/*autocmd_delete()*
+autocmd_get()	builtin.txt	/*autocmd_get()*
 autocmds-kept	version5.txt	/*autocmds-kept*
 autocommand	autocmd.txt	/*autocommand*
 autocommand-events	autocmd.txt	/*autocommand-events*
@@ -6189,6 +6194,7 @@
 coldfusion.vim	syntax.txt	/*coldfusion.vim*
 collapse	tips.txt	/*collapse*
 collate-variable	eval.txt	/*collate-variable*
+color-schemes	syntax.txt	/*color-schemes*
 color-xterm	syntax.txt	/*color-xterm*
 coloring	syntax.txt	/*coloring*
 colortest.vim	syntax.txt	/*colortest.vim*
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 0601cb9..e6328e9 100644
--- a/runtime/doc/testing.txt
+++ b/runtime/doc/testing.txt
@@ -1,4 +1,4 @@
-*testing.txt*	For Vim version 8.2.  Last change: 2022 Apr 03
+*testing.txt*	For Vim version 8.2.  Last change: 2022 May 16
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 95627f3..d2a5dbd 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 May 14
+*todo.txt*      For Vim version 8.2.  Last change: 2022 May 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,6 +38,9 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Make :defcompile accept a function argument, like :disassemble
+Useful for global functions.
+
 Once Vim9 is stable:
 - Use Vim9 for more runtime files.
 - Check code coverage, add more tests if needed.
@@ -50,9 +53,10 @@
 Graduate FEAT_CINDENT and FEAT_SMARTINDENT ?
 
 Update the user manual:
-- Move most of usr_52.txt into usr_41.txt
-- Make usr_41.txt only about basic script writing
+- Update usr_41.txt for Vim9 script
 - Fill usr_50.txt as an "advanced section" of usr_41.txt
+  Add links from usr_41 to usr_50.
+- Make usr_51.txt use Vim9 script.  Still need usr_52.txt?
 
 
 Further Vim9 improvements, possibly after launch:
@@ -130,14 +134,13 @@
   where property fits in.
   Or Should we let the textprop highlight overrule other (e.g. diff) highlight
   if the priority is above a certain value?  (#7392)
+  Combining text property with 'cursorline' does not always work (Billie
+  Cleek, #5533)
 - "C" works OK.  "dd" fails to delete text property in a buffer with a single
   line.
 - Add text property that shifts text to make room for annotation (e.g.
   variable type).  Like the opposite of conceal.  Requires fixing the cursor
   positioning and mouse clicks as with conceal mode.
-- Auto-indenting may cause highlighting to shift. (#7719)
-- Combining text property with 'cursorline' does not always work (Billie
-  Cleek, #5533)
 - See remarks at top of src/textprop.c
 
 'incsearch' with :s:
@@ -659,9 +662,6 @@
 ATTENTION message?  (Tony Mechelynck, 2008 Dec 1)
 Also: swap files are in ~/tmp/  One has relative file name ".mozilla/...".
 
-'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
-Likonen, March 19)
-
 When using a timer callback vgetc_busy is reset, allowing for using input().
 But in a channel callback this does not happen.  We need to do something
 similar to check_due_timer().  Also see #3809.
@@ -886,9 +886,6 @@
 
 Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9)
 
-With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
-(Marcin Szewczyk, 2017 Apr 26)
-
 Using 'wildignore' also applies to literally entered file name.  Also with
 :drop (remote commands).
 
@@ -1002,8 +999,6 @@
 When bracketed paste is used, pasting at the ":append" prompt does not get the
 line breaks. (Ken Takata, 2017 Aug 22)
 
-The ":move" command does not honor closed folds. (Ryan Lue, #2351)
-
 Cannot copy modeless selection when cursor is inside it. (lkintact, #2300)
 
 Test_writefile_fails_conversion failure on Solaris because if different iconv
@@ -1534,11 +1529,6 @@
 
 Patch for ordered dict. (Ozaki Kiichi, 2015 May 7)
 
-Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
-Remark from Roland Eggner: does it cause crashes? (2014 Dec 12)
-Updated patch by Roland Eggner, Dec 16
-Updated patch from Charles, 2016 Jul 2
-
 Patch for building a 32bit Vim with 64bit MingW compiler.
 (Michael Soyka, 2014 Oct 15)
 
@@ -1714,8 +1704,6 @@
 
 Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2)
 
-Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
-
 -   Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'.  Combine
     the two into a regex for searching. (Ned Konz)
 Patch by Christian Brabandt, 2013 Apr 20, unfinished.
@@ -1779,10 +1767,6 @@
 - Use urxvt mouse support also in xterm.  Explanations:
   http://www.midnight-commander.org/ticket/2662
 
-Patch to have the fold and sign column and at the last line of the buffer.
-(Marco Hinz, 2014 Sep 25)
-Alternate suggestion: let all columns continue, also the number column.
-
 Patch to add tests for if_xcmdsrv.c., Jul 8, need some more work. (Brian Burns)
 New tests Jul 13.   Update Jul 17.  Discussion Jul 18.
 
@@ -1983,9 +1967,6 @@
 Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
 crash? (Raiwil, 2010 Nov 17)
 
-Patch to add FoldedLineNr highlighting: different highlighting for the line
-number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15)
-
 Regexp engine performance:
 - Profiling:
 	./vim -u NONE -s ~/vim/test/ruby.vim
@@ -2097,9 +2078,6 @@
 Coverity: Check if there are new reported defects:
 https://scan.coverity.com/projects/241
 
-Patch to use 'foldnestmax' also for "marker" foldmethod. (Arnaud Lacombe, 2011
-Jan 7)
-
 Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
 
 Display error when 'tabline' that includes a file name with double-width
@@ -2112,9 +2090,6 @@
 
 Syntax priority problem. (Charles Campbell, 2011 Sep 15)
 
-When completion inserts the first match, it may trigger the line to be folded.
-Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
-
 For running gvim on a USB stick: avoid the OLE registration.  Use a command
 line argument -noregister.
 
@@ -2189,10 +2164,6 @@
 
 Add "no_hlsearch" to winsaveview().
 
-When 'foldmethod' is "indent", adding an empty line below a fold and then
-indented text, creates a new fold instead of joining it with the previous one.
-(Evan Laforge, 2009 Oct 17)
-
 Bug: When reloading a buffer changed outside of Vim, BufRead autocommands
 are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11)
 Ignore window options when not in the right window?
@@ -2412,8 +2383,6 @@
 ":tab help" always opens a new tab, while ":help" re-uses an existing window.
 Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
 
-Add ":nofold".  Range will apply without expanding to closed fold.
-
 Using Aap to build Vim: add remarks about how to set personal preferences.
 Example on http://www.calmar.ws/tmp/aap.html
 
@@ -3809,6 +3778,30 @@
 Folding:
     (commands still available: zI zJ zK zp zP zq zQ zV zy zY;
     secondary: zB zS zT zZ, z=)
+-   Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
+    Remark from Roland Eggner: does it cause crashes? (2014 Dec 12)
+    Updated patch by Roland Eggner, Dec 16
+    Updated patch from Charles, 2016 Jul 2
+-   Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
+-   Patch to have the fold and sign column and at the last line of the buffer.
+    (Marco Hinz, 2014 Sep 25)
+    Alternate suggestion: let all columns continue, also the number column.
+-   Patch to add FoldedLineNr highlighting: different highlighting for the
+    line number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15)
+-   Patch to use 'foldnestmax' also for "marker" foldmethod. (Arnaud Lacombe,
+    2011 Jan 7)
+-   'foldcolumn' in modeline applied to wrong window when using a session.
+    (Teemu Likonen, March 19)
+-   With foldmethod=syntax and nofoldenable comment highlighting isn't
+    removed.  (Marcin Szewczyk, 2017 Apr 26)
+-   The ":move" command does not honor closed folds. (Ryan Lue, #2351)
+-   When completion inserts the first match, it may trigger the line to be
+    folded.  Disable updating folds while completion is active? (Peter Odding,
+    2010 Jun 9)
+-   When 'foldmethod' is "indent", adding an empty line below a fold and then
+    indented text, creates a new fold instead of joining it with the previous
+    one.  (Evan Laforge, 2009 Oct 17)
+-   Add ":nofold".  Range will apply without expanding to closed fold.
 8   Vertical folds: looks like vertically split windows, but the cursor moves
     through the vertical separator, separator moves when scrolling.
 8   Add "z/" and "z?" for searching in not folded text only.  Or use a regexp
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 162eb9d..80b7e38 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.2.  Last change: 2022 May 13
+*usr_41.txt*	For Vim version 8.2.  Last change: 2022 May 21
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -1923,6 +1923,8 @@
 If you split your plugin into parts, you can use `import` and `export` to
 share items between those parts.  See `:export` for the details.
 
+More information about writing plugins is in |usr_51.txt|.
+
 ==============================================================================
 
 Next chapter: |usr_42.txt|  Add new menus
diff --git a/runtime/doc/usr_51.txt b/runtime/doc/usr_51.txt
index 14704c6..2845ab8 100644
--- a/runtime/doc/usr_51.txt
+++ b/runtime/doc/usr_51.txt
@@ -1,4 +1,4 @@
-*usr_51.txt*	For Vim version 8.2.  Last change: 2022 May 13
+*usr_51.txt*	For Vim version 8.2.  Last change: 2022 May 14
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -197,8 +197,8 @@
 We will define a function that adds a new typing correction: >
 
  30	def Add(from: string, correct: bool)
- 31	  var to = input("type the correction for " .. from .. ": ")
- 32	  exe ":iabbrev " .. from .. " " .. to
+ 31	  var to = input($"type the correction for {from}: ")
+ 32	  exe $":iabbrev {from} {to}"
  ..
  36	enddef
 
diff --git a/runtime/doc/usr_52.txt b/runtime/doc/usr_52.txt
index 70338e7..1fbd66f 100644
--- a/runtime/doc/usr_52.txt
+++ b/runtime/doc/usr_52.txt
@@ -1,4 +1,4 @@
-*usr_52.txt*	For Vim version 8.2.  Last change: 2022 May 13
+*usr_52.txt*	For Vim version 8.2.  Last change: 2022 May 16
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -110,10 +110,10 @@
 ==============================================================================
 *52.3*	Functions and types
 
-Legacy Vim script does have type checking, but this happens at runtime, when
-the code is executed.  And it's permissive, often a computation gives an
-unexpected value instead of reporting an error.  Thus you can define a
-function and think it's fine, but see a problem only later when it is called: >
+Legacy Vim script only checks types at runtime, when the code is executed.
+And it's permissive, often a computation gives an unexpected value instead of
+reporting an error.  Thus you can define a function and think it's fine, but
+see a problem only later when it is called: >
 	let s:collected = ''
 	func ExtendAndReturn(add)
 	   let s:collected += a:add
@@ -133,12 +133,16 @@
 	   s:collected += add
 	   return s:collected
 	enddef
-	defcompile
+	disassemble ExtendAndReturn
 
-Here we use `:defcompile` to do the compilation right away, without it the
+Here we use `:disassemble` to do the compilation right away, without it the
 compilation would happen when the function is called.  Vim will tell you what
 you did wrong: >
-	E1013: type mismatch, expected number but got string
+	E1051: Wrong argument type for +
+
+Side note: here the context is legacy script, when using Vim9 script you would
+put `:defcompile` at the end of the script to check for errors in the
+functions defined in it.
 
 Vim9 script is strict, it uses the "+" operator only for numbers and floats.
 For string concatenation ".." must be used.  This avoids mistakes and avoids