Update runtime files
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 328d6ff..ee2dc56 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 8.2.  Last change: 2021 Mar 13
+*autocmd.txt*   For Vim version 8.2.  Last change: 2021 Apr 25
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1522,7 +1522,14 @@
 			loaded buffer.  The current buffer is done last.
 
 			Note that [fname] is used to select the autocommands,
-			not the buffers to which they are applied.
+			not the buffers to which they are applied. Example: >
+				augroup mine
+				  autocmd!
+				  autocmd FileType * echo expand('<amatch>')
+				augroup END
+				doautoall mine FileType Loaded-Buffer
+<			Sourcing this script, you'll see as many
+			"Loaded-Buffer" echoed as there are loaded buffers.
 
 			Careful: Don't use this for autocommands that delete a
 			buffer, change to another buffer or change the
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 798f58d..920ee10 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2021 Apr 07
+*eval.txt*	For Vim version 8.2.  Last change: 2021 Apr 24
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1962,6 +1962,9 @@
 		The default is empty.  If another (invalid) value is used then
 		Vim behaves like it is empty, there is no warning message.
 
+					*v:fname* *fname-variable*
+v:fname		The file name set by 'includeexpr'.  Empty otherwise.
+
 					*v:fname_in* *fname_in-variable*
 v:fname_in	The name of the input file.  Valid while evaluating:
 			option		used for ~
@@ -5775,7 +5778,6 @@
 
 		If the mouse is over a popup window then that window is used.
 
-
 		When using |getchar()| the Vim variables |v:mouse_lnum|,
 		|v:mouse_col| and |v:mouse_winid| also provide these values.
 
@@ -6721,6 +6723,7 @@
 
 <		When {expr} is a variable that does not exist you get an error
 		message.  Use |exists()| to check for existence.
+		In Vim9 script it does not work for local variables.
 
 		Can also be used as a |method|: >
 			GetName()->islocked()
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index ac8febe..c93a050 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 8.2.  Last change: 2020 Sep 28
+*gui.txt*       For Vim version 8.2.  Last change: 2021 May 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -620,6 +620,11 @@
 
    :amenu Insert.foobar   "='foobar'<CR>P
 
+The special text <Cmd> begins a "command menu", it executes the command
+directly without changing modes.  Where you might use ":...<CR>" you can
+instead use "<Cmd>...<CR>".  See |<Cmd>| for more info.  Example: >
+	anoremenu File.Next <Cmd>next<CR>
+
 Note that the '<' and 'k' flags in 'cpoptions' also apply here (when
 included they make the <> form and raw key codes not being recognized).
 
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index f0e8f30..5749309 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 8.2.  Last change: 2021 Mar 22
+*index.txt*     For Vim version 8.2.  Last change: 2021 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 47e706b..13b2c2e 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2021 Mar 17
+*map.txt*       For Vim version 8.2.  Last change: 2021 Apr 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -244,9 +244,12 @@
 If the first argument to one of these commands is "<expr>" and it is used to
 define a new mapping or abbreviation, the argument is an expression.  The
 expression is evaluated to obtain the {rhs} that is used.  Example: >
-	:inoremap <expr> . InsertDot()
-The result of the InsertDot() function will be inserted.  It could check the
+	:inoremap <expr> . <SID>InsertDot()
+The result of the s:InsertDot() function will be inserted.  It could check the
 text before the cursor and start omni completion when some condition is met.
+Using a script-local function is preferred, to avoid polluting the global
+namespace.  Use <SID> in the RHS so that the script that the mapping was
+defined in can be found.
 
 For abbreviations |v:char| is set to the character that was typed to trigger
 the abbreviation.  You can use this to decide how to expand the {lhs}.  You
@@ -261,7 +264,7 @@
 	  call popup_create(... arguments ...)
 	  return "\<Ignore>"
 	endfunc
-	nnoremap <expr> <F3> <Sid>OpenPopup()
+	nnoremap <expr> <F3> <SID>OpenPopup()
 
 Also, keep in mind that the expression may be evaluated when looking for
 typeahead, before the previous command has been executed.  For example: >
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 266ab46..84969b2 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.2.  Last change: 2021 Apr 17
+*options.txt*	For Vim version 8.2.  Last change: 2021 Apr 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4564,7 +4564,8 @@
 	Keywords are used in searching and recognizing with many commands:
 	"w", "*", "[i", etc.  It is also used for "\k" in a |pattern|.  See
 	'isfname' for a description of the format of this option.  For '@'
-	characters above 255 check the "word" character class.
+	characters above 255 check the "word" character class (any character
+	that is not white space or punctuation).
 	For C programs you could use "a-z,A-Z,48-57,_,.,-,>".
 	For a help file it is set to all non-blank printable characters except
 	'*', '"' and '|' (so that CTRL-] on a command finds the help for that
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index ae29987..fcade00 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 8.2.  Last change: 2021 Feb 05
+*quickfix.txt*  For Vim version 8.2.  Last change: 2021 Apr 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1013,8 +1013,6 @@
 			the error list to the matches.  Files matching
 			'wildignore' are ignored; files in 'suffixes' are
 			searched last.
-			Without the 'g' flag each line is added only once.
-			With 'g' every match is added.
 
 			{pattern} is a Vim search pattern.  Instead of
 			enclosing it in / any non-ID character (see
@@ -1026,6 +1024,22 @@
 			If {pattern} is empty (e.g. // is specified), the last
 			used search pattern is used. |last-pattern|
 
+			Flags:
+			'g'  Without the 'g' flag each line is added only
+			     once.  With 'g' every match is added.
+
+			'j'  Without the 'j' flag Vim jumps to the first
+			     match.  With 'j' only the quickfix list is
+			     updated.  With the [!] any changes in the current
+			     buffer are abandoned.
+
+			'f'  When the 'f' flag is specified, fuzzy string
+			     matching is used to find matching lines. In this
+			     case, {pattern} is treated as a literal string
+			     instead of a regular expression.  See
+			     |matchfuzzy()| for more info about fuzzy
+			     matching.
+
 			|QuickFixCmdPre| and |QuickFixCmdPost| are triggered.
 			A file that is opened for matching may use a buffer
 			number, but it is reused if possible to avoid
@@ -1038,11 +1052,6 @@
 			Useful if you only want to check if there is a match
 			and quit quickly when it's found.
 
-			Without the 'j' flag Vim jumps to the first match.
-			With 'j' only the quickfix list is updated.
-			With the [!] any changes in the current buffer are
-			abandoned.
-
 			Every second or so the searched file name is displayed
 			to give you an idea of the progress made.
 			Examples: >
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 2af7217..cdaa664 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2630,6 +2630,8 @@
 :left	change.txt	/*:left*
 :lefta	windows.txt	/*:lefta*
 :leftabove	windows.txt	/*:leftabove*
+:leg	vim9.txt	/*:leg*
+:legacy	vim9.txt	/*:legacy*
 :let	eval.txt	/*:let*
 :let%=	eval.txt	/*:let%=*
 :let+=	eval.txt	/*:let+=*
@@ -6439,6 +6441,7 @@
 floating-point-precision	eval.txt	/*floating-point-precision*
 floor()	eval.txt	/*floor()*
 fmod()	eval.txt	/*fmod()*
+fname-variable	eval.txt	/*fname-variable*
 fname_diff-variable	eval.txt	/*fname_diff-variable*
 fname_in-variable	eval.txt	/*fname_in-variable*
 fname_new-variable	eval.txt	/*fname_new-variable*
@@ -9875,6 +9878,7 @@
 v:false	eval.txt	/*v:false*
 v:fcs_choice	eval.txt	/*v:fcs_choice*
 v:fcs_reason	eval.txt	/*v:fcs_reason*
+v:fname	eval.txt	/*v:fname*
 v:fname_diff	eval.txt	/*v:fname_diff*
 v:fname_in	eval.txt	/*v:fname_in*
 v:fname_new	eval.txt	/*v:fname_new*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 612e28c..955c3f6 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2021 Apr 21
+*todo.txt*      For Vim version 8.2.  Last change: 2021 Apr 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -39,13 +39,6 @@
 -------------------- Known bugs and current work -----------------------
 
 Vim9 - Make everything work:
-- Compile builtin functions that access local variables:
-    islocked()
-- When evaluating constants for script variables, some functions could work:
-    has('asdf'), len('string')
-  eval_variable().  Should pass the ".xxx" that follows and return that.
-- Make "++nr" work.  "++g:count" doesn't work, thinks it is a range.
-- Reload: How to make sure type of script function hasn't changed?
 - expandcmd() with `=expr` in filename uses legacy expression.
 - eval_expr() in ex_cexpr()
 - eval_expr() call in dbg_parsearg() and debuggy_find()
@@ -64,6 +57,17 @@
     the type of the list or dict member. (#8092)
 - Allow for using an autoload function name without quotes.  It is then loaded
   (and compiled) right away.  #8124
+- Test more expressions in legacy and Vim9 script, using
+  CheckLegacyAndVim9Success()
+- Test try/catch and throw better, also nested.
+  Test that return inside try/finally jumps to finally and then returns.
+- Test that a function defined inside a :def function is local to that
+  function, g: functions can be defined and script-local functions cannot be
+  defined.
+- Make debugging work - at least per function.  Need to recompile a function
+  to step through it line-by-line?  Evaluate the stack and variables on the
+  stack?
+- Reserve command for future use: :type, :class, :enum
 
 Once Vim9 is stable:
 - Change the help to prefer Vim9 syntax where appropriate
@@ -73,34 +77,17 @@
 - Use Vim9 for runtime files.
     PR #7497 for autoload/ccomplete.vim
 
-Also for Vim9:
+Further Vim9 improvements, possibly after launch:
 - better implementation for partial and tests for that.
-- Make "g:imported = Export.exported" work in Vim9 script.
-- Make Foo.Bar() work to call the dict function. (#5676)
-- Error in any command in "vim9script" aborts sourcing.
-- Find a way to test expressions in legacy and Vim9 script without duplication
-- Test try/catch and throw better, also nested.
-  Test that return inside try/finally jumps to finally and then returns.
-- Test that a function defined inside a :def function is local to that
-  function, g: functions can be defined and script-local functions cannot be
-  defined.
-- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
+- Compile options that are an expression, e.g. "expr:" in 'spellsuggest',
   'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
   'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
   Give an error if compilation fails. (#7625)
   Use the location where the option was set for deciding whether it's to be
   evaluated in Vim9 script context.
-- implement :type; import type declaration.
-- implement enum;  import enum.
+- implement :type, import type declaration.
+- implement enum,  import enum.
 - Future work: See |vim9-classes|
-	Define the keywords and commands to make sure it will be backwards
-	compatible.
-- Make debugging work - at least per function.  Need to recompile a function
-  to step through it line-by-line?  Evaluate the stack and variables on the
-  stack?
-- List commands when 'verbose' is set or :verbose is used.
-
-Further Vim9 improvements, possibly after launch:
 - For range: make table of first ASCII character with flag to quickly check if
   it can be a Vim9 command. E.g. "+" can, but "." can't.
 - compile get_lambda_tv() in popup_add_timeout()
@@ -108,6 +95,9 @@
 - Make accessing varargs faster: arg[expr]
 	EVAL expr
 	LOADVARARG (varargs idx)
+- When evaluating constants for script variables, some functions could work:
+    has(featureName), len(someString)
+- Implement as part of an expression: ++expr, --expr, expr++, expr--.
 
 
 Popup windows:
@@ -1404,9 +1394,6 @@
 Add ":read :command", to insert the output of an Ex command?
 Can already do it with ":$put =execute('command')".
 
-When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016
-Apr 17)  #762
-
 exists(":tearoff") does not tell you if the command is implemented. (Tony
 Mechelynck)  Perhaps use exists("::tearoff") to check?
 
diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt
index 53d6cb5..be77da7 100644
--- a/runtime/doc/usr_02.txt
+++ b/runtime/doc/usr_02.txt
@@ -1,4 +1,4 @@
-*usr_02.txt*	For Vim version 8.2.  Last change: 2019 Nov 21
+*usr_02.txt*	For Vim version 8.2.  Last change: 2021 Apr 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -532,7 +532,7 @@
 <   for the corresponding flag of the 'cpoptions' settings, substitute <letter>
    by a specific flag, e.g.: >
 	:help cpo-;
-<   And for the guioption flags: >
+<   And for the 'guioptions' flags: >
 	:help go-<letter>
 
 4) Normal mode commands do not have a prefix. To go to the help page for the
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 0a2ea62..a368af0 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2021 Apr 11
+*vim9.txt*	For Vim version 8.2.  Last change: 2021 Apr 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -157,6 +157,11 @@
 							*E1091*
 If compilation fails it is not tried again on the next call, instead this
 error is given: "E1091: Function is not compiled: {name}".
+Compilation will fail when encountering a user command that has not been
+created yet.  In this case you can call `execute()` to invoke it at runtime. >
+	def MyFunc()
+	  execute('DefinedLater')
+	enddef
 
 `:def` has no options like `:function` does: "range", "abort", "dict" or
 "closure".  A `:def` function always aborts on an error (unless `:silent!` was
@@ -605,6 +610,44 @@
 	echo [1, 2]
 		[3, 4]
 
+
+White space ~
+
+Vim9 script enforces proper use of white space.  This is no longer allowed: >
+	var name=234	# Error!
+	var name= 234	# Error!
+	var name =234	# Error!
+There must be white space before and after the "=": >
+	var name = 234	# OK
+White space must also be put before the # that starts a comment after a
+command: >
+	var name = 234# Error!
+	var name = 234 # OK
+
+White space is required around most operators.
+
+White space is required in a sublist (list slice) around the ":", except at
+the start and end: >
+	otherlist = mylist[v : count]  	# v:count has a different meaning
+	otherlist = mylist[:]		# make a copy of the List
+	otherlist = mylist[v :]
+	otherlist = mylist[: v]
+
+White space is not allowed:
+- Between a function name and the "(": >
+	Func (arg)	   # Error!
+	Func
+	     \ (arg)	   # Error!
+	Func
+	      (arg)	   # Error!
+	Func(arg)	   # OK
+	Func(
+	      arg)	   # OK
+	Func(
+	      arg	   # OK
+	      )
+
+
 No curly braces expansion ~
 
 |curly-braces-names| cannot be used.
@@ -656,6 +699,17 @@
 The 'ignorecase' option is not used for comparators that use strings.
 
 
+Abort after error ~
+
+In legacy script, when an error is encountered, Vim continues to execute
+following lines.  This can lead to a long sequence of errors and need to type
+CTRL-C to stop it.  In Vim9 script execution of commands stops at the first
+error.  Example: >
+	vim9script
+	var x = does-not-exist
+	echo 'not executed'
+
+
 For loop ~
 
 Legacy Vim script has some tricks to make a for loop over a list handle
@@ -679,43 +733,6 @@
 first if needed.
 
 
-White space ~
-
-Vim9 script enforces proper use of white space.  This is no longer allowed: >
-	var name=234	# Error!
-	var name= 234	# Error!
-	var name =234	# Error!
-There must be white space before and after the "=": >
-	var name = 234	# OK
-White space must also be put before the # that starts a comment after a
-command: >
-	var name = 234# Error!
-	var name = 234 # OK
-
-White space is required around most operators.
-
-White space is required in a sublist (list slice) around the ":", except at
-the start and end: >
-	otherlist = mylist[v : count]  	# v:count has a different meaning
-	otherlist = mylist[:]		# make a copy of the List
-	otherlist = mylist[v :]
-	otherlist = mylist[: v]
-
-White space is not allowed:
-- Between a function name and the "(": >
-	Func (arg)	   # Error!
-	Func
-	     \ (arg)	   # Error!
-	Func
-	      (arg)	   # Error!
-	Func(arg)	   # OK
-	Func(
-	      arg)	   # OK
-	Func(
-	      arg	   # OK
-	      )
-
-
 Conditions and expressions ~
 
 Conditions and expressions are mostly working like they do in other languages.