Update runtime files
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 96a0e4b..37b4a3d 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 8.2.  Last change: 2022 Jan 15
+*autocmd.txt*   For Vim version 8.2.  Last change: 2022 Jan 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1211,7 +1211,7 @@
 				Not triggered when |quote_| is used nor when
 				called recursively.
 				It is not allowed to change the buffer text,
-				see |textlock|.
+				see |textlock|. *E1064*
 				{only when compiled with the +eval feature}
 
 							*User*
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 403f592..7bb48b8 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt*	For Vim version 8.2.  Last change: 2022 Jan 16
+*builtin.txt*	For Vim version 8.2.  Last change: 2022 Jan 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2882,7 +2882,7 @@
 		Preferably used as a |method|: >
 			mydict->get(key)
 get({func}, {what})
-		Get an item with from Funcref {func}.  Possible values for
+		Get item {what} from Funcref {func}.  Possible values for
 		{what} are:
 			"name"	The function name
 			"func"	The function
@@ -6396,8 +6396,8 @@
 		  readdir(dirname, {n -> n =~ '.txt$'})
 <		To skip hidden and backup files: >
 		  readdir(dirname, {n -> n !~ '^\.\|\~$'})
-
-<		The optional {dict} argument allows for further custom
+<								*E857*
+		The optional {dict} argument allows for further custom
 		values. Currently this is used to specify if and how sorting
 		should be performed. The dict can have the following members:
 
@@ -9498,7 +9498,6 @@
 			call win_execute(winid, 'set syntax=python')
 <		Doing the same with `setwinvar()` would not trigger
 		autocommands and not actually show syntax highlighting.
-
 							*E994*
 		Not all commands are allowed in popup windows.
 		When window {id} does not exist then no error is given and
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index e3d8f53..d72f37e 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 8.2.  Last change: 2021 May 24
+*diff.txt*      For Vim version 8.2.  Last change: 2022 Jan 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -335,8 +335,9 @@
 
 FINDING THE DIFFERENCES					*diff-diffexpr*
 
-The 'diffexpr' option can be set to use something else than the standard
-"diff" program to compare two files and find the differences. *E959*
+The 'diffexpr' option can be set to use something else than the internal diff
+support or the standard "diff" program to compare two files and find the
+differences. *E959*
 
 When 'diffexpr' is empty, Vim uses this command to find the differences
 between file1 and file2: >
@@ -369,7 +370,7 @@
 
 	v:fname_in		original file
 	v:fname_new		new version of the same file
-	v:fname_out		resulting diff file
+	v:fname_out		where to write the resulting diff file
 
 Additionally, 'diffexpr' should take care of "icase" and "iwhite" in the
 'diffopt' option.  'diffexpr' cannot change the value of 'lines' and
@@ -402,7 +403,9 @@
 with the script ID (|local-function|). Example: >
 		set diffexpr=s:MyDiffExpr()
 		set diffexpr=<SID>SomeDiffExpr()
-<
+Otherwise, the expression is evaluated in the context of the script where the
+option was set, thus script-local items are available.
+
 						*E810* *E97*
 Vim will do a test if the diff output looks alright.  If it doesn't, you will
 get an error message.  Possible causes:
@@ -458,5 +461,8 @@
 with the script ID (|local-function|). Example: >
 		set patchexpr=s:MyPatchExpr()
 		set patchexpr=<SID>SomePatchExpr()
-<
+Otherwise, the expression is evaluated in the context of the script where the
+option was set, thus script-local items are available.
+
+
  vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index 4f217fd..00deef1 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 8.2.  Last change: 2022 Jan 11
+*editing.txt*   For Vim version 8.2.  Last change: 2022 Jan 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -433,7 +433,7 @@
 backticks must be around the whole item.  It is not possible to have text
 directly before the first or just after the last backtick.
 
-							*`=*
+						*`=* *E1083*
 You can have the backticks expanded as a Vim expression, instead of as an
 external command, by putting an equal sign right after the first backtick,
 e.g.: >
@@ -890,7 +890,7 @@
 
 							*:w* *:write*
 					*E502* *E503* *E504* *E505*
-					*E512* *E514* *E667* *E796* *E949*
+					*E512* *E514* *E667* *E949*
 :w[rite] [++opt]	Write the whole buffer to the current file.  This is
 			the normal way to save changes to a file.  It fails
 			when the 'readonly' option is set or when there is
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 974f231..a204735 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,11 +1,11 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2022 Jan 08
+*eval.txt*	For Vim version 8.2.  Last change: 2022 Jan 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
 
 
 Expression evaluation			*expression* *expr* *E15* *eval*
-
+							*E1002*
 Using expressions is introduced in chapter 41 of the user manual |usr_41.txt|.
 
 Note: Expression evaluation can be disabled at compile time.  If this has been
@@ -53,7 +53,7 @@
 		Examples:  -123  0x10  0177  0o177 0b1011
 
 Float		A floating point number. |floating-point-format| *Float*
-		{only when compiled with the |+float| feature}
+		{only when compiled with the |+float| feature} *E1076*
 		Examples: 123.456  1.15e-6  -1.1e3
 
 String		A NUL terminated string of 8-bit unsigned characters (bytes).
@@ -1030,7 +1030,7 @@
 			*expr-==?* *expr-!=?* *expr->?*  *expr->=?*
 			*expr-<?*  *expr-<=?* *expr-=~?* *expr-!~?*
 			*expr-is* *expr-isnot* *expr-is#* *expr-isnot#*
-			*expr-is?* *expr-isnot?*
+			*expr-is?* *expr-isnot?* *E1072*
 		use 'ignorecase'    match case	   ignore case ~
 equal			==		==#		==?
 not equal		!=		!=#		!=?
@@ -1071,7 +1071,7 @@
 Dictionary and arguments, use |get()| to get the function name: >
 	if get(Part1, 'name') == get(Part2, 'name')
 	   " Part1 and Part2 refer to the same function
-
+<							*E1037*
 Using "is" or "isnot" with a |List|, |Dictionary| or |Blob| checks whether
 the expressions are referring to the same |List|, |Dictionary| or |Blob|
 instance.  A copy of a |List| is different from the original |List|.  When
@@ -1123,7 +1123,7 @@
 	"foo\nbar" =~ "\\n"	evaluates to 0
 
 
-expr5 and expr6						*expr5* *expr6*
+expr5 and expr6				*expr5* *expr6* *E1036* *E1051*
 ---------------
 expr6 + expr6   Number addition, |List| or |Blob| concatenation	*expr-+*
 expr6 - expr6   Number subtraction				*expr--*
@@ -1182,7 +1182,7 @@
 
 None of these work for |Funcref|s.
 
-".", ".." and "%" do not work for Float. *E804*
+".", ".." and "%" do not work for Float. *E804* *E1035*
 
 
 expr7							*expr7*
@@ -1229,7 +1229,7 @@
 Evaluation is always from left to right.
 
 expr9[expr1]		item of String or |List|	*expr-[]* *E111*
-							*E909* *subscript*
+						*E909* *subscript* *E1062*
 In legacy Vim script:
 If expr9 is a Number or String this results in a String that contains the
 expr1'th single byte from expr9.  expr9 is used as a String (a number is
@@ -1364,7 +1364,16 @@
 	(-1.234)->string()
 And NOT: >
 	-(1.234->string())
-<
+
+What comes after "->" can be a name, a simple expression (not containing any
+parenthesis), or any expression in parenthesis: >
+	base->name(args)
+	base->some.name(args)
+	base->alist[idx](args)
+	base->(getFuncRef())(args)
+Note that in the last call the base is passed to the function resulting from
+"(getFuncRef())", inserted before "args".
+
 							*E274*
 "->name(" must not contain white space.  There can be white space before the
 "->" and after the "(", thus you can split the lines like this: >
@@ -1568,7 +1577,7 @@
 variable (if your shell supports it).
 
 
-internal variable					*expr-variable*
+internal variable				*expr-variable* *E1015*
 -----------------
 variable		internal variable
 See below |internal-variables|.
@@ -1656,7 +1665,7 @@
 See also: |numbered-function|
 
 ==============================================================================
-3. Internal variable				*internal-variables* *E461*
+3. Internal variable			*internal-variables* *E461* *E1001*
 
 An internal variable name can be made up of letters, digits and '_'.  But it
 cannot start with a digit.  In legacy script it is also possible to use curly
@@ -1814,7 +1823,7 @@
 
 
 PREDEFINED VIM VARIABLES			*vim-variable* *v:var* *v:*
-								*E963*
+							*E963* *E1063*
 Some variables can be set by the user, but the type cannot be changed.
 
 					*v:argv* *argv-variable*
@@ -2830,7 +2839,7 @@
   :  echo div
   :endif
 <
-						*:cal* *:call* *E107* *E117*
+						*:cal* *:call* *E107*
 :[range]cal[l] {name}([arguments])
 		Call a function.  The name of the function and its arguments
 		are as specified with `:function`.  Up to 20 arguments can be
@@ -2874,6 +2883,12 @@
 	:4,8call GetDict().method()
 <		Here GetDict() gets the range but method() does not.
 
+								*E117*
+When a function cannot be found the error "E117: Unknown function" will be
+given.  If the function was using an autoload path or an autoload import and
+the script is a |Vim9| script, this may also be caused by the function not
+being exported.
+
 								*E132*
 The recursiveness of user functions is restricted with the |'maxfuncdepth'|
 option.
@@ -2973,6 +2988,9 @@
 other and vice versa, before the used function is defined, it won't work.
 Avoid using the autoload functionality at the toplevel.
 
+In |Vim9| script you will get error *E1263* if you use a function name with a
+"#" character when not in an autoload script.
+
 Hint: If you distribute a bunch of scripts you can pack them together with the
 |vimball| utility.  Also read the user manual |distribute-script|.
 
@@ -3059,8 +3077,8 @@
 			When the selected range of items is partly past the
 			end of the list, items will be added.
 
-			*:let+=* *:let-=* *:letstar=*
-			*:let/=* *:let%=* *:let.=* *:let..=* *E734* *E985*
+			*:let+=* *:let-=* *:letstar=* *:let/=*  *:let%=*
+			*:let.=* *:let..=* *E734* *E985* *E1019*
 :let {var} += {expr1}	Like ":let {var} = {var} + {expr1}".
 :let {var} -= {expr1}	Like ":let {var} = {var} - {expr1}".
 :let {var} *= {expr1}	Like ":let {var} = {var} * {expr1}".
@@ -3263,7 +3281,7 @@
 				*	Funcref
 			This does not work in Vim9 script. |vim9-declaration|
 
-:unl[et][!] {name} ...				*:unlet* *:unl* *E108* *E795*
+:unl[et][!] {name} ...			*:unlet* *:unl* *E108* *E795* *E1081*
 			Remove the internal variable {name}.  Several variable
 			names can be given, they are all removed.  The name
 			may also be a |List| or |Dictionary| item.
@@ -3289,7 +3307,7 @@
 			If the system does not support deleting an environment
 			variable, it is made empty.
 
-						*:cons* *:const*
+						*:cons* *:const* *E1018*
 :cons[t] {var-name} = {expr1}
 :cons[t] [{name1}, {name2}, ...] = {expr1}
 :cons[t] [{name}, ..., ; {lastname}] = {expr1}
@@ -3509,7 +3527,8 @@
 			all nested ":try"s inside the loop.  The outermost
 			":endtry" then jumps to the command after the loop.
 
-:try				*:try* *:endt* *:endtry* *E600* *E601* *E602*
+:try						*:try* *:endt* *:endtry*
+						*E600* *E601* *E602* *E1032*
 :endt[ry]		Change the error handling for the commands between
 			":try" and ":endtry" including everything being
 			executed across ":source" commands, function calls,
@@ -3545,7 +3564,8 @@
 		try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
 		try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
 <
-					*:cat* *:catch* *E603* *E604* *E605*
+					*:cat* *:catch*
+					*E603* *E604* *E605* *E654* *E1033*
 :cat[ch] /{pattern}/	The following commands until the next |:catch|,
 			|:finally|, or |:endtry| that belongs to the same
 			|:try| as the ":catch" are executed when an exception
@@ -3566,7 +3586,7 @@
 			Another character can be used instead of / around the
 			{pattern}, so long as it does not have a special
 			meaning (e.g., '|' or '"') and doesn't occur inside
-			{pattern}.
+			{pattern}. *E1067*
 			Information about the exception is available in
 			|v:exception|.  Also see |throw-variables|.
 			NOTE: It is not reliable to ":catch" the TEXT of
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 6842e1d..9a614e2 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 8.2.  Last change: 2021 Dec 30
+*filetype.txt*  For Vim version 8.2.  Last change: 2022 Jan 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -133,14 +133,15 @@
 argument was used.
 
 							*filetype-overrule*
-When the same extension is used for two filetypes, Vim tries to guess what
-kind of file it is.  This doesn't always work.  A number of global variables
-can be used to overrule the filetype used for certain extensions:
+When the same extension is used for multiple filetypes, Vim tries to guess
+what kind of file it is.  This doesn't always work.  A number of global
+variables can be used to overrule the filetype used for certain extensions:
 
 	file name	variable ~
 	*.asa		g:filetype_asa	|ft-aspvbs-syntax| |ft-aspperl-syntax|
 	*.asm		g:asmsyntax	|ft-asm-syntax|
 	*.asp		g:filetype_asp	|ft-aspvbs-syntax| |ft-aspperl-syntax|
+	*.bas		g:filetype_bas	|ft-basic-syntax|
 	*.fs		g:filetype_fs   |ft-forth-syntax|
 	*.i		g:filetype_i	|ft-progress-syntax|
 	*.inc		g:filetype_inc
diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt
index 9fd7f96..5bcadda 100644
--- a/runtime/doc/fold.txt
+++ b/runtime/doc/fold.txt
@@ -1,4 +1,4 @@
-*fold.txt*      For Vim version 8.2.  Last change: 2021 Jul 13
+*fold.txt*      For Vim version 8.2.  Last change: 2022 Jan 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -511,7 +511,10 @@
     :endfunction
 
 Evaluating 'foldtext' is done in the |sandbox|.  The current window is set to
-the window that displays the line.  Errors are ignored.
+the window that displays the line.  The context is set to the script where the
+option was last set.
+
+Errors are ignored.  For debugging set the 'debug' option to "throw".
 
 The default value is |foldtext()|.  This returns a reasonable text for most
 types of folding.  If you don't like it, you can specify your own 'foldtext'
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 2727a4c..0135c6d 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 Jan 15
+*map.txt*       For Vim version 8.2.  Last change: 2022 Jan 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1411,7 +1411,7 @@
 
 							*:command-verbose*
 When 'verbose' is non-zero, listing a command will also display where it was
-last defined. Example: >
+last defined and any completion argument. Example: >
 
     :verbose command TOhtml
 <	Name	    Args Range Complete  Definition ~
@@ -1530,6 +1530,8 @@
 	-complete=custom,{func} custom completion, defined via {func}
 	-complete=customlist,{func} custom completion, defined via {func}
 
+If you specify completion while there is nothing to complete (-nargs=0, the
+default) then you get error *E1208* .
 Note: That some completion methods might expand environment variables.
 
 
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index e5e903e..165e931 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 8.2.  Last change: 2022 Jan 08
+*mbyte.txt*     For Vim version 8.2.  Last change: 2022 Jan 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt
index f174884..44ad8bc 100644
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 8.2.  Last change: 2022 Jan 08
+*message.txt*   For Vim version 8.2.  Last change: 2022 Jan 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -46,13 +46,13 @@
 maintainer when you spot a mistake.
 
 If you want to find help on a specific (error) message, use the ID at the
-start of the message.  For example, to get help on the message: >
+start of the message.  For example, to get help on the message:
 
-	E72: Close error on swap file
+	E72: Close error on swap file ~
 
-or (translated): >
+or (translated):
 
-	E72: Errore durante chiusura swap file
+	E72: Errore durante chiusura swap file ~
 
 Use: >
 
@@ -62,6 +62,8 @@
 
 	:help e72
 
+The number in this ID has no meaning.
+
 ==============================================================================
 2. Error messages				*error-messages* *errors*
 
@@ -76,117 +78,117 @@
 LIST OF MESSAGES
 			*E222* *E228* *E232* *E293* *E298* *E304* *E317*
 			*E318* *E356* *E438* *E439* *E440* *E316* *E320* *E322*
-			*E323* *E341* *E473* *E570* *E685* *E292*  >
-  Add to read buffer
-  makemap: Illegal mode
-  Cannot create BalloonEval with both message and callback
-  Hangul automata ERROR
-  block was not locked
-  Didn't get block nr {N}?
-  ml_upd_block0(): Didn't get block 0??
-  pointer block id wrong {N}
-  Updated too many blocks?
-  get_varp ERROR
-  u_undo: line numbers wrong
-  undo list corrupt
-  undo line missing
-  ml_get: cannot find line {N}
-  cannot find line {N}
-  line number out of range: {N} past the end
-  line count wrong in block {N}
-  Internal error
-  Internal error: {function}
-  fatal error in cs_manage_matches
-  Invalid count for del_bytes(): {N}
+			*E323* *E341* *E473* *E570* *E685* *E292* 
+  Add to read buffer ~
+  makemap: Illegal mode ~
+  Cannot create BalloonEval with both message and callback ~
+  Hangul automata ERROR ~
+  block was not locked ~
+  Didn't get block nr {N}? ~
+  ml_upd_block0(): Didn't get block 0?? ~
+  pointer block id wrong {N} ~
+  Updated too many blocks? ~
+  get_varp ERROR ~
+  u_undo: line numbers wrong ~
+  undo list corrupt ~
+  undo line missing ~
+  ml_get: cannot find line {N} ~
+  cannot find line {N} ~
+  line number out of range: {N} past the end ~
+  line count wrong in block {N} ~
+  Internal error ~
+  Internal error: {function} ~
+  fatal error in cs_manage_matches ~
+  Invalid count for del_bytes(): {N} ~
 
 This is an internal error.  If you can reproduce it, please send in a bug
 report. |bugs|
 
->
-  ATTENTION
-  Found a swap file by the name ...
+
+  ATTENTION ~
+  Found a swap file by the name ... ~
 
 See |ATTENTION|.
 
-							*E92*  >
-  Buffer {N} not found
+							*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*  >
-  Buffer with this name already exists
+							*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*  >
-  Close error on swap file
+							*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*  >
-  Command too recursive
+							*E169* 
+  Command too recursive ~
 
 This happens when an Ex command executes an Ex command that executes an Ex
 command, etc.  The limit is 200 or the value of 'maxfuncdepth', whatever is
 larger.  When it's more there probably is an endless loop.  Probably a
 |:execute| or |:source| command is involved.
 
-							*E254*  >
-  Cannot allocate color {name}
+							*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*  >
-  Bad color string: {str}
+							*E1244* 
+  Bad color string: {str} ~
 
 The provided color did not conform to the pattern #rrggbb
 
-							*E458*  >
-  Cannot allocate colormap entry, some colors may be incorrect
+							*E458* 
+  Cannot allocate colormap entry, some colors may be incorrect ~
 
 This means that there are not enough colors available for Vim.  It will still
 run, but some of the colors will not appear in the specified color.  Try
 stopping other applications that use many colors, or start them after starting
 gvim.
 Browsers are known to consume a lot of colors.  You can avoid this with
-netscape by telling it to use its own colormap: >
-	netscape -install
-Or tell it to limit to a certain number of colors (64 should work well): >
-	netscape -ncols 64
-This can also be done with a line in your Xdefaults file: >
-	Netscape*installColormap: Yes
-or >
-	Netscape*maxImageColors:  64
-<
-							*E79*  >
-  Cannot expand wildcards
+netscape by telling it to use its own colormap:
+	netscape -install ~
+Or tell it to limit to a certain number of colors (64 should work well):
+	netscape -ncols 64 ~
+This can also be done with a line in your Xdefaults file:
+	Netscape*installColormap: Yes ~
+or
+	Netscape*maxImageColors:  64 ~
+
+							*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*  >
-  Cannot go back to previous directory
+							*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*  >
-  Cannot open "{filename}" for writing
-  Can't open file for writing
+							*E190* *E212* 
+  Cannot open "{filename}" for writing ~
+  Can't open file for writing ~
 
 For some reason the file you are writing to cannot be created or overwritten.
 The reason could be that you do not have permission to write in the directory
 or the file name is not valid.
 
-							*E166*  >
-  Can't open linked file for writing
+							*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
 a link (either a hard link or a symbolic link).  Writing might still be
@@ -197,20 +199,20 @@
 manually delete the link or the file, or change the permissions so that Vim
 can overwrite.
 
-							*E46*  >
-  Cannot change read-only variable "{name}"
+							*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*  >
-  Cannot unload last buffer
+							*E90* 
+  Cannot unload last buffer ~
 
 Vim always requires one buffer to be loaded, otherwise there would be nothing
 to display in the window.
 
-							*E40*  >
-  Can't open errorfile <filename>
+							*E40* 
+  Can't open errorfile <filename> ~
 
 When using the ":make" or ":grep" commands: The file used to save the error
 messages or grep output cannot be opened.  This can have several causes:
@@ -222,8 +224,8 @@
 - 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
+ 
+  Can't open file C:\TEMP\VIoD243.TMP ~
 
 On MS-Windows, this message appears when the output of an external command was
 to be read, but the command didn't run successfully.  This can be caused by
@@ -231,21 +233,21 @@
 related options.  It might also be that the external command was not found,
 there is no different error message for that.
 
-							*E12*  >
-  Command not allowed from exrc/vimrc in current dir or tag search
+							*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*  >
-  Command too complex
+							*E74* 
+  Command too complex ~
 
 A mapping resulted in a very long command string.  Could be caused by a
 mapping that indirectly calls itself.
 
->
-  CONVERSION ERROR
+
+  CONVERSION ERROR ~
 
 When writing a file and the text "CONVERSION ERROR" appears, this means that
 some bits were lost when converting text from the internally used UTF-8 to the
@@ -257,51 +259,51 @@
 be deleted, so you can move it back into place if you want to discard the
 changes.
 
-							*E302*  >
-  Could not rename swap file
+							*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*  >
-  Damaged match string
-  Corrupted regexp program
+							*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*  >
-  Error writing to "{filename}"
-  Error closing "{filename}"
-  Error reading "{filename}"
+							*E208* *E209* *E210* 
+  Error writing to "{filename}" ~
+  Error closing "{filename}" ~
+  Error reading "{filename}" ~
 
 This occurs when Vim is trying to rename a file, but a simple change of file
 name doesn't work.  Then the file will be copied, but somehow this failed.
 The result may be that both the original file and the destination file exist
 and the destination file may be incomplete.
 
->
-  Vim: Error reading input, exiting...
+
+  Vim: Error reading input, exiting... ~
 
 This occurs when Vim cannot read typed characters while input is required.
 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*  >
-  Error while reading errorfile
+							*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*  >
-  Error while writing
+							*E80* 
+  Error while writing ~
 
 Writing a file was not completed successfully.  The file is probably
 incomplete.
 
-							*E13* *E189*  >
-  File exists (add ! to override)
-  "{filename}" exists (add ! to override)
+							*E13* *E189* 
+  File exists (add ! to override) ~
+  "{filename}" exists (add ! to override) ~
 
 You are protected from accidentally overwriting a file.  When you want to
 write anyway, use the same command, but add a "!" just after the command.
@@ -310,8 +312,8 @@
 changes to: >
 	:w! /tmp/test
 <
-							*E768*  >
-  Swap file exists: {filename} (:silent! overrides)
+							*E768* 
+  Swap file exists: {filename} (:silent! overrides) ~
 
 You are protected from overwriting a file that is being edited by Vim.  This
 happens when you use ":w! filename" and a swapfile is found.
@@ -323,115 +325,115 @@
 < The special command is needed, since you already added the ! for overwriting
   an existing file.
 
-							*E139*  >
-  File is loaded in another buffer
+							*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*  >
-  File not written: Writing is disabled by 'write' option
+							*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*  >
-  GUI cannot be used: Not enabled at compile time
+							*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*  >
-  Invalid scroll size
+							*E49* 
+  Invalid scroll size ~
 
 This is caused by setting an invalid value for the 'scroll', 'scrolljump' or
 'scrolloff' options.
 
-							*E17*  >
-  "{filename}" is a directory
+							*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*  >
-  Mark has invalid line number
+							*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*  >
-  Missing {.
-  Missing }.
+							*E219* *E220* 
+  Missing {. ~
+  Missing }. ~
 
 Using a {} construct in a file name, but there is a { without a matching } or
 the other way around.  It should be used like this: {foo,bar}.  This matches
 "foo" and "bar".
 
-							*E315*  >
-  ml_get: invalid lnum: {number}
+							*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*  >
-  {number} more files to edit
+							*E173* 
+  {number} more files to edit ~
 
 You are trying to exit, while the last item in the argument list has not been
 edited.  This protects you from accidentally exiting when you still have more
 files to work on.  See |argument-list|.  If you do want to exit, just do it
 again and it will work.
 
-							*E23* *E194*  >
-  No alternate file
-  No alternate file name to substitute for '#'
+							*E23* *E194* 
+  No alternate file ~
+  No alternate file name to substitute for '#' ~
 
 The alternate file is not defined yet.  See |alternate-file|.
 
-							*E32*  >
-  No file name
+							*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*  >
-  No file name for buffer {number}
+							*E141* 
+  No file name for buffer {number} ~
 
 One of the buffers that was changed does not have a file name.  Therefore it
 cannot be written.  You need to give the buffer a file name: >
 	:buffer {number}
 	:file {filename}
 <
-							*E33*  >
-  No previous substitute regular expression
+							*E33* 
+  No previous substitute regular expression ~
 
 When using the '~' character in a pattern, it is replaced with the previously
 used pattern in a ":substitute" command.  This fails when no such command has
 been used yet.  See |/~|.  This also happens when using ":s/pat/%/", where the
 "%" stands for the previous substitute string.
 
-							*E35*  >
-  No previous regular expression
+							*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*  >
-  No such abbreviation
+							*E24* 
+  No such abbreviation ~
 
 You have used an ":unabbreviate" command with an argument which is not an
 existing abbreviation.  All variations of this command give the same message:
 ":cunabbrev", ":iunabbrev", etc.  Check for trailing white space.
 
->
-  /dev/dsp: No such file or directory
+
+  /dev/dsp: No such file or directory ~
 
 Only given for GTK GUI with Gnome support.  Gnome tries to use the audio
 device and it isn't present.  You can ignore this error.
 
-							*E31*  >
-  No such mapping
+							*E31*
+  No such mapping ~
 
 You have used an ":unmap" command with an argument which is not an existing
 mapping.  All variations of this command give the same message: ":cunmap",
@@ -440,9 +442,9 @@
 - If the mapping is buffer-local you need to use ":unmap <buffer>".
   |:map-<buffer>|
 
-							*E37* *E89*  >
-  No write since last change (add ! to override)
-  No write since last change for buffer {N} (add ! to override)
+							*E37* *E89* 
+  No write since last change (add ! to override) ~
+  No write since last change for buffer {N} (add ! to override) ~
 
 You are trying to |abandon| a file that has changes.  Vim protects you from
 losing your work.  You can either write the changed file with ":w", or, if you
@@ -452,8 +454,8 @@
 changes to: >
 	:e! other_file
 <
-							*E162*  >
-  No write since last change for buffer "{name}"
+							*E162* 
+  No write since last change for buffer "{name}" ~
 
 This appears when you try to exit Vim while some buffers are changed.  You
 will either have to write the changed buffer (with |:w|), or use a command to
@@ -461,23 +463,23 @@
 don't throw away changes you really want to keep.  You might have forgotten
 about a buffer, especially when 'hidden' is set.
 
->
-  [No write since last change]
+
+  [No write since last change] ~
 
 This appears when executing a shell command while at least one buffer was
 changed.  To avoid the message reset the 'warn' option.
 
-							*E38*  >
-  Null argument
+							*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*  >
-  Out of memory!
-  Out of memory!  (allocating {number} bytes)
-  Cannot allocate any buffer, exiting...
-  Cannot allocate buffer, using other one...
+						*E41* *E82* *E83* *E342* 
+  Out of memory! ~
+  Out of memory!  (allocating {number} bytes) ~
+  Cannot allocate any buffer, exiting... ~
+  Cannot allocate buffer, using other one... ~
 
 Oh, oh.  You must have been doing something complicated, or some other program
 is consuming your memory.  Be careful!  Vim is not completely prepared for an
@@ -495,16 +497,16 @@
   helps for a change that affects all lines.
 - 'undoreload' Set to zero to disable.
 
-							*E339*  >
-  Pattern too long
+							*E339* 
+  Pattern too long ~
 
 This happens on systems with 16 bit ints: The compiled regexp pattern is
 longer than about 65000 characters.  Try using a shorter pattern.
 It also happens when the offset of a rule doesn't fit in the space available.
 Try simplifying the pattern.
 
-							*E45*  >
-  'readonly' option is set (add ! to override)
+							*E45* 
+  'readonly' option is set (add ! to override) ~
 
 You are trying to write a file that was marked as read-only.  To write the
 file anyway, either reset the 'readonly' option, or add a '!' character just
@@ -513,18 +515,18 @@
 changes to: >
 	:w!
 <
-							*E294* *E295* *E301*  >
-  Read error in swap file
-  Seek error in swap file read
-  Oops, lost the swap file!!!
+							*E294* *E295* *E301* 
+  Read error in swap file ~
+  Seek error in swap file read ~
+  Oops, lost the swap file!!! ~
 
 Vim tried to read text from the |swap-file|, but something went wrong.  The
 text in the related buffer may now be corrupted!  Check carefully before you
 write a buffer.  You may want to write it in another file and check for
 differences.
 
-							*E192*  >
-  Recursive use of :normal too deep
+							*E192* 
+  Recursive use of :normal too deep ~
 
 You are using a ":normal" command, whose argument again uses a ":normal"
 command in a recursive way.  This is restricted to 'maxmapdepth' levels.  This
@@ -532,16 +534,16 @@
 	:map gq :normal gq<CR>
 If you type "gq", it will execute this mapping, which will call "gq" again.
 
-							*E22*  >
-  Scripts nested too deep
+							*E22* 
+  Scripts nested too deep ~
 
 Scripts can be read with the "-s" command-line argument and with the
 `:source!` command.  The script can then again read another script.  This can
 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*  >
-  Sorry, the command is not available in this version
+							*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
 using.  When compiling Vim, many different features can be enabled or
@@ -549,8 +551,8 @@
 system.  See |+feature-list| for when which feature is available.  The
 |:version| command shows which feature Vim was compiled with.
 
-							*E300*  >
-  Swap file already exists (symlink attack?)
+							*E300* 
+  Swap file already exists (symlink attack?) ~
 
 This message appears when Vim is trying to open a swap file and finds it
 already exists or finds a symbolic link in its place.  This shouldn't happen,
@@ -559,8 +561,8 @@
 attempting a symlink attack (could happen when editing a file in /tmp or when
 'directory' starts with "/tmp", which is a bad choice).
 
-							*E432*  >
-  Tags file not sorted: {file name}
+							*E432* 
+  Tags file not sorted: {file name} ~
 
 Vim (and Vi) expect tags files to be sorted in ASCII order.  Binary searching
 can then be used, which is a lot faster than a linear search.  If your tags
@@ -569,21 +571,21 @@
 tag.  Sometimes this message is not given, even though the tags file is not
 properly sorted.
 
-							*E424*  >
-  Too many different highlighting attributes in use
+							*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*  >
-  Too many file names
+							*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*  >
-  Unable to open swap file for "{filename}", recovery impossible
+							*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
 Vim unexpectedly exits the changes will be lost.  And Vim may consume a lot of
@@ -591,25 +593,25 @@
 to avoid this error.  This error is not given when 'directory' is empty.  See
 |swap-file|.
 
-							*E140*  >
-  Use ! to write partial buffer
+							*E140* 
+  Use ! to write partial buffer ~
 
 When using a range to write part of a buffer, it is unusual to overwrite the
 original file.  It is probably a mistake (e.g., when Visual mode was active
 when using ":w"), therefore Vim requires using a !  after the command, e.g.:
 ":3,10w!".
->
 
-  Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type
-  VirtualBinding
+
+  Warning: Cannot convert string "<Key>Escape,_Key_Cancel" to type ~
+  VirtualBinding ~
 
 Messages like this appear when starting up.  This is not a Vim problem, your
 X11 configuration is wrong.  You can find a hint on how to solve this here:
 http://groups.yahoo.com/group/solarisonintel/message/12179.
 [this URL is no longer valid]
 
-							*W10*  >
-  Warning: Changing a readonly file
+							*W10* 
+  Warning: Changing a readonly file ~
 
 The file is read-only and you are making a change to it anyway.  You can use
 the |FileChangedRO| autocommand event to avoid this message (the autocommand
@@ -617,15 +619,15 @@
 making changes to a file.
 This message is only given for the first change after 'readonly' has been set.
 
-							*W13*  >
-  Warning: File "{filename}" has been created after editing started
+							*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*  >
-  Warning: File "{filename}" has changed since editing started
+							*W11* 
+  Warning: File "{filename}" has changed since editing started ~
 
 The file which you have started editing has got another timestamp and the
 contents changed (more precisely: When reading the file again with the current
@@ -648,15 +650,15 @@
 If you get W11 all the time, you may need to disable "Acronis Active
 Protection" or register Vim as a trusted service/application.
 
-							*W12*  >
-  Warning: File "{filename}" has changed and the buffer was changed in Vim as well
+							*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*  >
-  Warning: Mode of file "{filename}" has changed since editing started
+							*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
 same but the mode (permissions) have changed.  This usually occurs when
@@ -664,37 +666,37 @@
 bit to be reset.  It should be safe to reload the file.  Set 'autoread' to
 automatically reload the file.
 
-							*E211*  >
-  File "{filename}" no longer available
+							*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*  >
-  Warning: List of file names overflow
+							*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*  >
-  Buffer cannot be registered
+							*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*  >
-  Seek error in swap file write
-  Write error in swap file
+							*E296* *E297* 
+  Seek error in swap file write ~
+  Write error in swap file ~
 
 This mostly happens when the disk is full.  Vim could not write text into the
 |swap-file|.  It's not directly harmful, but when Vim unexpectedly exits some
 text may be lost without recovery being possible.  Vim might run out of memory
 when this problem persists.
 
-						*connection-refused*  >
-  Xlib: connection to "<machine-name:0.0" refused by server
+						*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
 not allow a connection.  The connection to the X server is needed to be able
@@ -702,55 +704,55 @@
 error message cannot be avoided, except by disabling the |+xterm_clipboard|
 and |+X11| features.
 
-							*E10*  >
-  \\ should be followed by /, ? or &
+							*E10* 
+  \\ should be followed by /, ? or & ~
 
 A command line started with a backslash or the range of a command contained a
 backslash in a wrong place.  This is often caused by command-line continuation
 being disabled.  Remove the 'C' flag from the 'cpoptions' option to enable it.
 Or use ":set nocp".
 
-							*E471*  >
-  Argument required
+							*E471* 
+  Argument required ~
 
 This happens when an Ex command with mandatory argument(s) was executed, but
 no argument has been specified.
 
-							*E474* *E475* *E983*  >
-  Invalid argument
-  Invalid argument: {arg}
-  Duplicate argument: {arg}
+							*E474* *E475* *E983* 
+  Invalid argument ~
+  Invalid argument: {arg} ~
+  Duplicate argument: {arg} ~
 
 An Ex command or function has been executed, but an invalid argument has been
 specified.
 
-							*E488*  >
-  Trailing characters
+							*E488* 
+  Trailing characters ~
 
 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*  >
-  No ! allowed
-  Don't panic!
+							*E477* *E478* 
+  No ! allowed ~
+  Don't panic! ~
 
 You have added a "!" after an Ex command that doesn't permit one.
 
-							*E481*  >
-  No range allowed
+							*E481* 
+  No range allowed ~
 
 A range was specified for an Ex command that doesn't permit one.  See
 |cmdline-ranges|.
 
-							*E482* *E483*  >
-  Can't create file {filename}
-  Can't get temp file name
+							*E482* *E483* 
+  Can't create file {filename} ~
+  Can't get temp file name ~
 
 Vim cannot create a temporary file.
 
-							*E484* *E485*  >
-  Can't open file {filename}
-  Can't read file {filename}
+							*E484* *E485* 
+  Can't open file {filename} ~
+  Can't read file {filename} ~
 
 Vim cannot read a temporary file.  Especially on Windows, this can be caused
 by wrong escaping of special characters for cmd.exe; the approach was
@@ -758,8 +760,8 @@
 given to |system()|, or explicitly add escaping with ^.  Also see
 'shellxquote' and 'shellxescape'.
 
-							*E464*  >
-  Ambiguous use of user-defined command
+							*E464* 
+  Ambiguous use of user-defined command ~
 
 There are two user-defined commands with a common name prefix, and you used
 Command-line completion to execute one of them. |user-cmd-ambiguous|
@@ -768,23 +770,22 @@
 	:command MyCommand2 echo "two"
 	:MyCommand
 <
-							*E492*  >
-  Not an editor command
+							*E492* 
+  Not an editor command ~
 
 You tried to execute a command that is neither an Ex command nor
 a user-defined command.
 
-							*E943*  >
-  Command table needs to be updated, run 'make cmdidxs'
+							*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* *E839*  >
-  E928: String required
-  E889: Number required
-  E839: Bool required
+						*E928* *E889* 
+  E928: String required ~
+  E889: Number required ~
 
 These happen when a value or expression is used that does not have the
 expected type.
@@ -841,9 +842,9 @@
 group.
 
 
-						*more-prompt* *pager*  >
-  -- More --
-  -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
+						*more-prompt* *pager* 
+  -- More -- ~
+  -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit ~
 
 This message is given when the screen is filled with messages.  It is only
 given when the 'more' option is on.  It is highlighted with the |hl-MoreMsg|
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 65ed54f..55e3cf8 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 8.2.  Last change: 2022 Jan 02
+*options.txt*	For Vim version 8.2.  Last change: 2022 Jan 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -170,7 +170,7 @@
 value will result in an error: >
 	:set t_kb=
 	:set t_kb
-	E846: Key code not set: t_kb
+<	E846: Key code not set: t_kb ~
 
 The t_xx options cannot be set from a |modeline| or in the |sandbox|, for
 security reasons.
@@ -1229,7 +1229,9 @@
 	the script ID (|local-function|). Example: >
 		set bexpr=s:MyBalloonExpr()
 		set bexpr=<SID>SomeBalloonExpr()
-<
+<	Otherwise, the expression is evaluated in the context of the script
+	where the option was set, thus script-local items are available.
+
 	The expression will be evaluated in the |sandbox| when set from a
 	modeline, see |sandbox-option|.
 	This option cannot be set in a modeline when 'modelineexpr' is off.
@@ -3439,7 +3441,9 @@
 			{not available when compiled without the |+folding|
 			or |+eval| features}
 	The expression used for when 'foldmethod' is "expr".  It is evaluated
-	for each line to obtain its fold level.  See |fold-expr|.
+	for each line to obtain its fold level.  The context is set to the
+	script where 'foldexpr' was set, script-local items can be accessed.
+	See |fold-expr| for the usage.
 
 	The expression will be evaluated in the |sandbox| if set from a
 	modeline, see |sandbox-option|.
@@ -3573,7 +3577,9 @@
 			{not available when compiled without the |+folding|
 			feature}
 	An expression which is used to specify the text displayed for a closed
-	fold.  See |fold-foldtext|.
+	fold.  The context is set to the script where 'foldexpr' was set,
+	script-local items can be accessed.  See |fold-foldtext| for the
+	usage.
 
 	The expression will be evaluated in the |sandbox| if set from a
 	modeline, see |sandbox-option|.
@@ -3616,7 +3622,9 @@
 	the script ID (|local-function|). Example: >
 		set formatexpr=s:MyFormatExpr()
 		set formatexpr=<SID>SomeFormatExpr()
-<
+<	Otherwise, the expression is evaluated in the context of the script
+	where the option was set, thus script-local items are available.
+
 	The expression will be evaluated in the |sandbox| when set from a
 	modeline, see |sandbox-option|.  That stops the option from working,
 	since changing the buffer text is not allowed.
@@ -4463,7 +4471,9 @@
 	the script ID (|local-function|). Example: >
 		set includeexpr=s:MyIncludeExpr(v:fname)
 		set includeexpr=<SID>SomeIncludeExpr(v:fname)
-<
+<	Otherwise, the expression is evaluated in the context of the script
+	where the option was set, thus script-local items are available.
+
 	The expression will be evaluated in the |sandbox| when set from a
 	modeline, see |sandbox-option|.
 	This option cannot be set in a modeline when 'modelineexpr' is off.
@@ -4537,11 +4547,14 @@
 	The expression is evaluated with |v:lnum| set to the line number for
 	which the indent is to be computed.  The cursor is also in this line
 	when the expression is evaluated (but it may be moved around).
+
 	If the expression starts with s: or |<SID>|, then it is replaced with
 	the script ID (|local-function|). Example: >
 		set indentexpr=s:MyIndentExpr()
 		set indentexpr=<SID>SomeIndentExpr()
-<
+<	Otherwise, the expression is evaluated in the context of the script
+	where the option was set, thus script-local items are available.
+
 	The expression must return the number of spaces worth of indent.  It
 	can return "-1" to keep the current indent (this means 'autoindent' is
 	used for the indent).
@@ -5685,7 +5698,7 @@
 			    *'opendevice'* *'odev'* *'noopendevice'* *'noodev'*
 'opendevice' 'odev'	boolean	(default off)
 			global
-			{only for MS-Windows}
+			{only for MS-Windows}  *E796*
 	Enable reading and writing from devices.  This may get Vim stuck on a
 	device that can be opened but doesn't actually do the I/O.  Therefore
 	it is off by default.
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 9a82ba4..ce88a10 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 8.2.  Last change: 2022 Jan 09
+*repeat.txt*    For Vim version 8.2.  Last change: 2022 Jan 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -354,7 +354,7 @@
 <
 
 :scriptv[ersion] {version}		*:scriptv* *:scriptversion*
-								*E999* *E984*
+							*E999* *E984* *E1040*
 			Specify the version of Vim for the lines that follow
 			in the same file.  Only applies at the toplevel of
 			sourced scripts, not inside functions.
@@ -367,8 +367,8 @@
 
 :vim9s[cript] [noclear]				*:vim9s* *:vim9script*
 			Marks a script file as containing |Vim9-script|
-			commands.  Also see |vim9-namespace|.
-			Must be the first command in the file.
+			commands.  Also see |vim9-namespace|. *E1038*
+			Must be the first command in the file. *E1039*
 			For [noclear] see |vim9-reload|.
 			Without the |+eval| feature this changes the syntax
 			for some commands.
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index edd3fa8..f56baf6 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 8.2.  Last change: 2022 Jan 03
+*starting.txt*  For Vim version 8.2.  Last change: 2022 Jan 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -268,8 +268,8 @@
 		started if possible.
 
 							*-e*
--e		Start Vim in Ex mode |Q|.  Only makes a difference when the
-		executable is not called "ex".
+-e		Start Vim in Ex mode, see |Ex-mode|.  Only makes a difference
+		when the executable is not called "ex".
 
 							*-E*
 -E		Start Vim in improved Ex mode |gQ|.  Only makes a difference
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 737e063..6b114a7 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -956,12 +956,16 @@
 
 BASIC			*basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax*
 
-Both Visual Basic and "normal" basic use the extension ".bas".	To detect
+Both Visual Basic and "normal" BASIC use the extension ".bas".	To detect
 which one should be used, Vim checks for the string "VB_Name" in the first
 five lines of the file.  If it is not found, filetype will be "basic",
 otherwise "vb".  Files with the ".frm" extension will always be seen as Visual
 Basic.
 
+If the automatic detection doesn't work for you or you only edit, for
+example, FreeBASIC files, use this in your startup vimrc: >
+   :let filetype_bas = "freebasic"
+
 
 C							*c.vim* *ft-c-syntax*
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 8914fc2..835f7a7 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2569,6 +2569,7 @@
 :imenu	gui.txt	/*:imenu*
 :imp	vim9.txt	/*:imp*
 :import	vim9.txt	/*:import*
+:import-as	vim9.txt	/*:import-as*
 :import-cycle	vim9.txt	/*:import-cycle*
 :in	insert.txt	/*:in*
 :index	index.txt	/*:index*
@@ -3950,17 +3951,88 @@
 E	motion.txt	/*E*
 E10	message.txt	/*E10*
 E100	diff.txt	/*E100*
+E1001	eval.txt	/*E1001*
+E1002	eval.txt	/*E1002*
+E1003	vim9.txt	/*E1003*
+E1004	vim9.txt	/*E1004*
+E1005	vim9.txt	/*E1005*
+E1006	vim9.txt	/*E1006*
+E1007	vim9.txt	/*E1007*
+E1008	vim9.txt	/*E1008*
+E1009	vim9.txt	/*E1009*
 E101	diff.txt	/*E101*
+E1010	vim9.txt	/*E1010*
+E1011	vim9.txt	/*E1011*
+E1012	vim9.txt	/*E1012*
+E1013	vim9.txt	/*E1013*
+E1014	vim9.txt	/*E1014*
+E1015	eval.txt	/*E1015*
+E1016	vim9.txt	/*E1016*
+E1017	vim9.txt	/*E1017*
+E1018	eval.txt	/*E1018*
+E1019	eval.txt	/*E1019*
 E102	diff.txt	/*E102*
+E1020	vim9.txt	/*E1020*
+E1021	vim9.txt	/*E1021*
+E1022	vim9.txt	/*E1022*
 E1023	vim9.txt	/*E1023*
 E1024	vim9.txt	/*E1024*
+E1025	vim9.txt	/*E1025*
+E1026	vim9.txt	/*E1026*
+E1027	vim9.txt	/*E1027*
+E1028	vim9.txt	/*E1028*
+E1029	vim9.txt	/*E1029*
 E103	diff.txt	/*E103*
+E1030	vim9.txt	/*E1030*
+E1031	vim9.txt	/*E1031*
+E1032	eval.txt	/*E1032*
+E1033	eval.txt	/*E1033*
+E1034	vim9.txt	/*E1034*
+E1035	eval.txt	/*E1035*
+E1036	eval.txt	/*E1036*
+E1037	eval.txt	/*E1037*
+E1038	repeat.txt	/*E1038*
+E1039	repeat.txt	/*E1039*
 E104	digraph.txt	/*E104*
+E1040	repeat.txt	/*E1040*
+E1041	vim9.txt	/*E1041*
 E1042	vim9.txt	/*E1042*
+E1043	vim9.txt	/*E1043*
+E1044	vim9.txt	/*E1044*
+E1047	vim9.txt	/*E1047*
+E1048	vim9.txt	/*E1048*
+E1049	vim9.txt	/*E1049*
 E105	mbyte.txt	/*E105*
 E1050	vim9.txt	/*E1050*
+E1051	eval.txt	/*E1051*
+E1052	vim9.txt	/*E1052*
+E1053	vim9.txt	/*E1053*
+E1054	vim9.txt	/*E1054*
+E1055	vim9.txt	/*E1055*
+E1056	vim9.txt	/*E1056*
+E1057	vim9.txt	/*E1057*
+E1058	vim9.txt	/*E1058*
+E1059	vim9.txt	/*E1059*
+E1060	vim9.txt	/*E1060*
+E1061	vim9.txt	/*E1061*
+E1062	eval.txt	/*E1062*
+E1063	eval.txt	/*E1063*
+E1064	autocmd.txt	/*E1064*
+E1066	vim9.txt	/*E1066*
+E1067	eval.txt	/*E1067*
+E1068	vim9.txt	/*E1068*
+E1069	vim9.txt	/*E1069*
 E107	eval.txt	/*E107*
+E1071	vim9.txt	/*E1071*
+E1072	eval.txt	/*E1072*
+E1073	vim9.txt	/*E1073*
+E1074	vim9.txt	/*E1074*
+E1075	vim9.txt	/*E1075*
+E1076	eval.txt	/*E1076*
+E1077	vim9.txt	/*E1077*
 E108	eval.txt	/*E108*
+E1081	eval.txt	/*E1081*
+E1083	editing.txt	/*E1083*
 E109	eval.txt	/*E109*
 E1091	vim9.txt	/*E1091*
 E1094	vim9.txt	/*E1094*
@@ -3997,6 +4069,7 @@
 E1200	options.txt	/*E1200*
 E1201	options.txt	/*E1201*
 E1205	builtin.txt	/*E1205*
+E1208	map.txt	/*E1208*
 E121	eval.txt	/*E121*
 E1214	builtin.txt	/*E1214*
 E122	eval.txt	/*E122*
@@ -4013,6 +4086,7 @@
 E125	eval.txt	/*E125*
 E1255	map.txt	/*E1255*
 E126	eval.txt	/*E126*
+E1263	eval.txt	/*E1263*
 E127	eval.txt	/*E127*
 E128	eval.txt	/*E128*
 E129	eval.txt	/*E129*
@@ -4576,6 +4650,7 @@
 E650	netbeans.txt	/*E650*
 E651	netbeans.txt	/*E651*
 E652	netbeans.txt	/*E652*
+E654	eval.txt	/*E654*
 E655	builtin.txt	/*E655*
 E656	netbeans.txt	/*E656*
 E657	netbeans.txt	/*E657*
@@ -4729,7 +4804,7 @@
 E793	diff.txt	/*E793*
 E794	eval.txt	/*E794*
 E795	eval.txt	/*E795*
-E796	editing.txt	/*E796*
+E796	options.txt	/*E796*
 E797	spell.txt	/*E797*
 E798	builtin.txt	/*E798*
 E799	builtin.txt	/*E799*
@@ -4776,7 +4851,6 @@
 E836	if_pyth.txt	/*E836*
 E837	if_pyth.txt	/*E837*
 E838	netbeans.txt	/*E838*
-E839	message.txt	/*E839*
 E84	windows.txt	/*E84*
 E840	insert.txt	/*E840*
 E841	map.txt	/*E841*
@@ -4795,6 +4869,8 @@
 E853	eval.txt	/*E853*
 E854	options.txt	/*E854*
 E855	autocmd.txt	/*E855*
+E856	testing.txt	/*E856*
+E857	builtin.txt	/*E857*
 E858	builtin.txt	/*E858*
 E859	builtin.txt	/*E859*
 E86	windows.txt	/*E86*
@@ -10097,6 +10173,7 @@
 v_CTRL-G	visual.txt	/*v_CTRL-G*
 v_CTRL-H	change.txt	/*v_CTRL-H*
 v_CTRL-O	visual.txt	/*v_CTRL-O*
+v_CTRL-R	visual.txt	/*v_CTRL-R*
 v_CTRL-V	visual.txt	/*v_CTRL-V*
 v_CTRL-X	change.txt	/*v_CTRL-X*
 v_CTRL-Z	starting.txt	/*v_CTRL-Z*
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 8e751d1..4b6a6a2 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 8.2.  Last change: 2021 Dec 21
+*terminal.txt*	For Vim version 8.2.  Last change: 2022 Jan 21
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1178,7 +1178,7 @@
 program window	A terminal window for the executed program.  When "run" is
 		used in gdb the program I/O will happen in this window, so
 		that it does not interfere with controlling gdb.  The buffer
-		name is "gdb program".
+		name is "debugged program".
 
 The current window is used to show the source code.  When gdb pauses the
 source file location will be displayed, if possible.  A sign is used to
diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt
index 2811568..fb43fbc 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 Jan 13
+*testing.txt*	For Vim version 8.2.  Last change: 2022 Jan 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -352,7 +352,7 @@
 		Run {cmd} and add an error message to |v:errors| if it does
 		NOT produce an error or when {error} is not found in the
 		error message.  Also see |assert-return|.
-
+							*E856*
 		When {error} is a string it must be found literally in the
 		first reported error. Most often this will be the error code,
 		including the colon, e.g. "E123:". >
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 851c167..a0f17aa 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 Jan 15
+*todo.txt*      For Vim version 8.2.  Last change: 2022 Jan 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,19 +38,14 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-TODO in eval_method() for using partial.
-
-TODO in compile_load_scriptvar()
-Try using a variable or function that is not exported
-
-"return Msg()" does not give an error if there is no return value. #9497
-
-eval_map_expr() in getchar.c saves stuff because "mp" can change, this does
-not happen in map.c for an abbreviation.  Test that this fails, fix it.
+Also set the script context for other "expr" options, like for 'foldexpr'?
+    'printexpr'     eval_printexpr()
+    "expr:" part of 'spellsuggest   eval_spell_expr()
 
 Once Vim9 is stable:
 - Add all the error numbers in a good place in documentation.
-    done until E653
+    done until E1083
+- Check code coverage, add more tests if needed.
 - Use Vim9 for runtime files.
 
 Further Vim9 improvements, possibly after launch:
@@ -67,8 +62,8 @@
   evaluation.
   Use the location where the option was set for deciding whether it's to be
   evaluated in Vim9 script context.
-- implement :type, "import type"
-- implement :enum,  "import enum".
+- implement :type
+- implement :enum
 - implement :class and :interface: See |vim9-classes|
 - 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.
@@ -207,6 +202,9 @@
 When using 'cryptmethod' xchaha20 the undo file is not encrypted.
 Need to handle extra bytes.
 
+In Select mode the deleted text always goes into the unnamed register.
+Use CTRL-R to specify the register to use. (#9531)
+
 Some prompts are not translated: #9495
 
 Test_communicate_ipv6(): is flaky on many systems
@@ -245,6 +243,8 @@
 
 MS-Windows: did path modifier :p:8 stop working?  #8600
 
+Add support for "underdouble", "underdot" and "underdash". #9553
+
 test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
 
 Mapping with partial match not executed properly in GTK. (Ingo Karkat, #7082)
diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1
index d55c8b3..5613dd4 100644
--- a/runtime/doc/vim.1
+++ b/runtime/doc/vim.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "2006 Apr 11"
+.TH VIM 1 "2021 Jun 13"
 .SH NAME
 vim \- Vi IMproved, a programmer's text editor
 .SH SYNOPSIS
diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
index dbfba53..cc6a9bc 100644
--- a/runtime/doc/vim.man
+++ b/runtime/doc/vim.man
@@ -432,4 +432,4 @@
 
 
 
-                                  2006 Apr 11                           VIM(1)
+                                  2021 Jun 13                           VIM(1)
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index bbdc2bd..0172dff 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 Jan 18
+*vim9.txt*	For Vim version 8.2.  Last change: 2022 Jan 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -190,7 +190,7 @@
 
 Arguments are accessed by name, without "a:", just like any other language.
 There is no "a:" dictionary or "a:000" list.
-						*vim9-variable-arguments*
+					*vim9-variable-arguments* *E1055*
 Variable arguments are defined as the last argument, with a name and have a
 list type, similar to TypeScript.  For example, a list of numbers: >
 	def MyFunc(...itemlist: list<number>)
@@ -227,7 +227,7 @@
 	def s:ThisFunction()        # script-local
 	def g:ThatFunction()        # global
 	def scriptname#function()   # autoload
-
+<						*E1058* *E1075*
 When using `:function` or `:def` to specify a nested function inside a `:def`
 function and no namespace was given, this nested function is local to the code
 block it is defined in.  In a `:def` function it is not possible to define a
@@ -289,7 +289,8 @@
 
 
 Variable declarations with :var, :final and :const ~
-						*vim9-declaration* *:var*
+					*vim9-declaration* *:var*
+					*E1017* *E1020* *E1054*
 Local variables need to be declared with `:var`.  Local constants need to be
 declared with `:final` or `:const`.  We refer to both as "variables" in this
 section.
@@ -320,7 +321,7 @@
 	   inner = 0
 	endif
 	echo inner
-
+<							*E1025*
 To intentionally hide a variable from code that follows, a block can be
 used: >
 	{
@@ -347,12 +348,12 @@
 	   }
 
 Although using a :def function probably works better.
-
+						*E1022*
 Declaring a variable with a type but without an initializer will initialize to
 false (for bool), empty (for string, list, dict, etc.) or zero (for number,
 any, etc.).  This matters especially when using the "any" type, the value will
 default to the number zero.
-
+						*E1016* *E1052* *E1066*
 In Vim9 script `:let` cannot be used.  An existing variable is assigned to
 without any command.  The same for global, window, tab, buffer and Vim
 variables, because they are not really declared.  Those can also be deleted
@@ -363,7 +364,7 @@
 
 The `exists()` and `exists_compiled()` functions do not work on local variables
 or arguments.
-
+						*E1006* *E1041*
 Variables, functions and function arguments cannot shadow previously defined
 or imported variables and functions in the same script file.
 Variables may shadow Ex commands, rename the variable if needed.
@@ -431,7 +432,7 @@
 can't be assigned another value a constant.  JavaScript is an example.  Others
 also make the value immutable, thus when a constant uses a list, the list
 cannot be changed.  In Vim9 we can use both.
-
+							*E1021*
 `:const` is used for making both the variable and the value a constant.  Use
 this for composite structures that you want to make sure will not be modified.
 Example: >
@@ -564,7 +565,7 @@
 	   })
 No command can follow the "{", only a comment can be used there.
 
-							*command-block*
+						*command-block* *E1026*
 The block can also be used for defining a user command.  Inside the block Vim9
 syntax will be used.
 
@@ -684,6 +685,11 @@
 	var result = start
 	:+ print
 
+After the range an Ex command must follow.  Without the colon you can call a
+function without `:call`, but after a range you do need it: >
+	MyFunc()
+	:% call MyFunc()
+
 Note that the colon is not required for the |+cmd| argument: >
 	edit +6 fname
 
@@ -732,7 +738,7 @@
 
 
 White space ~
-
+					*E1004* *E1068* *E1069* *E1074*
 Vim9 script enforces proper use of white space.  This is no longer allowed: >
 	var name=234	# Error!
 	var name= 234	# Error!
@@ -777,7 +783,7 @@
 
 
 Dictionary literals ~
-						*vim9-literal-dict*
+						*vim9-literal-dict* *E1014*
 Traditionally Vim has supported dictionary literals with a {} syntax: >
 	let dict = {'key': value}
 
@@ -867,7 +873,7 @@
 
 
 Conditions and expressions ~
-							*vim9-boolean*
+						*vim9-boolean*
 Conditions and expressions are mostly working like they do in other languages.
 Some values are different from legacy Vim script:
 	value		legacy Vim script	Vim9 script ~
@@ -921,7 +927,7 @@
 
 Simple types are Number, Float, Special and Bool.  For other types |string()|
 should be used.
-							*false* *true* *null*
+						*false* *true* *null* *E1034*
 In Vim9 script one can use "true" for v:true, "false" for v:false and "null"
 for v:null.  When converting a boolean to a string "false" and "true" are
 used, not "v:false" and "v:true" like in legacy script.  "v:none" is not
@@ -1064,15 +1070,19 @@
 
 3. New style functions					*fast-functions*
 
-							*:def*
+							*:def* *E1028*
 :def[!] {name}([arguments])[: {return-type}]
 			Define a new function by the name {name}.  The body of
 			the function follows in the next lines, until the
-			matching `:enddef`.
-
-			When {return-type} is omitted or is "void" the
-			function is not expected to return anything.
-			
+			matching `:enddef`. *E1073*
+							*E1011*
+			The {name} must be less than 100 bytes long.
+					*E1003* *E1027* *E1056* *E1059*
+			The type of value used with `:return` must match
+			{return-type}.  When {return-type} is omitted or is
+			"void" the function is not expected to return
+			anything.
+							*E1077*	
 			{arguments} is a sequence of zero or more argument
 			declarations.  There are three forms:
 				{name}: {type}
@@ -1096,7 +1106,7 @@
 			later in Vim9 script.  They can only be removed by
 			reloading the same script.
 
-							*:enddef*
+							*:enddef* *E1057*
 :enddef			End of a function defined with `:def`. It should be on
 			a line by its own.
 
@@ -1116,7 +1126,7 @@
 
 						*:disa* *:disassemble*
 :disa[ssemble] {func}	Show the instructions generated for {func}.
-			This is for debugging and testing.
+			This is for debugging and testing. *E1061*
 			Note that for command line completion of {func} you
 			can prepend "s:" to find script-local functions.
 
@@ -1178,7 +1188,8 @@
 ==============================================================================
 
 4. Types					*vim9-types*
-
+					*E1008* *E1009* *E1010* *E1012*
+					*E1013* *E1029* *E1030*
 The following builtin types are supported:
 	bool
 	number
@@ -1193,17 +1204,19 @@
 	func: {type}
 	func({type}, ...)
 	func({type}, ...): {type}
+	void
 
 Not supported yet:
 	tuple<a: {type}, b: {type}, ...>
 
 These types can be used in declarations, but no simple value will actually
-have the "void" type.
+have the "void" type.  Trying to use a void (e.g. a function without a
+return value) results in error *E1031* .
 
 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.
-
+							*E1005* *E1007*
 A partial and function can be declared in more or less specific ways:
 func				any kind of function reference, no type
 				checking for arguments or return value
@@ -1432,7 +1445,7 @@
 	export def MyFunc() ...
 	export class MyClass ...
 	export interface MyClass ...
-
+<							*E1043* *E1044*
 As this suggests, only constants, variables, `:def` functions and classes can
 be exported. {not implemented yet: class, interface}
 
@@ -1441,19 +1454,23 @@
 
 
 Import ~
-						*:import* *:imp* *E1094*
+					*:import* *:imp* *E1094* *E1047*
+					*E1048* *E1049* *E1053* *E1071*
 The exported items can be imported in another Vim9 script: >
 	import "myscript.vim"
 
 This makes each item available as "myscript.item".
-
+							*:import-as*
 In case the name is long or ambiguous, another name can be specified: >
 	import "thatscript.vim" as that
-
+<							*E1060*
 Then you can use "that.EXPORTED_CONST", "that.someValue", etc.  You are free
 to choose the name "that".  Use something that will be recognized as referring
 to the imported script.  Avoid command names and builtin function names,
-because the name will shadow them.
+because the name will shadow them.  If the name starts with a capital letter
+it can also shadow global user commands and functions.  Also, you cannot use
+the name for something else in the script, such as a function or variable
+name.
 
 In case the dot in the name is undesired, a local reference can be made for a
 function: >
@@ -1466,6 +1483,12 @@
 when changing the variable the copy will change, not the original variable.
 You will need to use the full name, with the dot.
 
+The full syntax of the command is:
+	import {filename} [as {name}]
+Where {filename} is an expression that must evaluate to a string.  Without the
+"as {name}" part it must end in ".vim".  {name} must consist of letters,
+digits and '_', like |internal-variables|.
+
 `:import` can also be used in legacy Vim script.  The imported items still
 become script-local, even when the "s:" prefix is not given.
 
diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt
index eed1023..3db506e 100644
--- a/runtime/doc/visual.txt
+++ b/runtime/doc/visual.txt
@@ -1,4 +1,4 @@
-*visual.txt*    For Vim version 8.2.  Last change: 2021 Nov 21
+*visual.txt*    For Vim version 8.2.  Last change: 2022 Jan 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 51f62f4..4dc38ed 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2022 Jan 13
+" Last Change:	2022 Jan 23
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop
index cd80cbc..68c5eee 100644
--- a/runtime/gvim.desktop
+++ b/runtime/gvim.desktop
@@ -4,6 +4,7 @@
 # Translators: This is the Application Name used in the GVim desktop file
 Name[de]=GVim
 Name[eo]=GVim
+Name[fi]=GVim
 Name[fr]=GVim
 Name[it]=GVim
 Name[ru]=GVim
@@ -13,6 +14,7 @@
 # Translators: This is the Generic Application Name used in the Vim desktop file
 GenericName[de]=Texteditor
 GenericName[eo]=Tekstoredaktilo
+GenericName[fi]=Tekstinmuokkain
 GenericName[fr]=Éditeur de texte
 GenericName[it]=Editor di testi
 GenericName[ja]=テキストエディタ
@@ -23,6 +25,7 @@
 # Translators: This is the comment used in the Vim desktop file
 Comment[de]=Textdateien bearbeiten
 Comment[eo]=Redakti tekstajn dosierojn
+Comment[fi]=Muokkaa tekstitiedostoja
 Comment[fr]=Éditer des fichiers texte
 Comment[it]=Edita file di testo
 Comment[ja]=テキストファイルを編集します
@@ -54,7 +57,6 @@
 Comment[et]=Redigeeri tekstifaile
 Comment[eu]=Editatu testu-fitxategiak
 Comment[fa]=ویرایش پرونده‌های متنی
-Comment[fi]=Muokkaa tekstitiedostoja
 Comment[ga]=Eagar comhad Téacs
 Comment[gu]=લખાણ ફાઇલોમાં ફેરફાર કરો
 Comment[he]=ערוך קבצי טקסט
@@ -103,6 +105,7 @@
 # Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon!
 Keywords[de]=Text;Editor;
 Keywords[eo]=Teksto;redaktilo;
+Keywords[fi]=Teksti;muokkain;editori;
 Keywords[fr]=Texte;éditeur;
 Keywords[it]=Testo;editor;
 Keywords[ja]=テキスト;エディタ;
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index fde59df..bde9140 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -2,7 +2,7 @@
 "
 " Author: Bram Moolenaar
 " Copyright: Vim license applies, see ":help license"
-" Last Change: 2022 Jan 13
+" Last Change: 2022 Jan 17
 "
 " WORK IN PROGRESS - Only the basics work
 " Note: On MS-Windows you need a recent version of gdb.  The one included with
@@ -1254,6 +1254,7 @@
     if lnum =~ '^[0-9]*$'
       call s:GotoSourcewinOrCreateIt()
       if expand('%:p') != fnamemodify(fname, ':p')
+echomsg 'different fname: "' .. expand('%:p') .. '" vs "' .. fnamemodify(fname, ':p') .. '"'
 	augroup Termdebug
 	  " Always open a file read-only instead of showing the ATTENTION
 	  " prompt, since we are unlikely to want to edit the file.
diff --git a/runtime/syntax/rc.vim b/runtime/syntax/rc.vim
index 4c6856b..d69edd0 100644
--- a/runtime/syntax/rc.vim
+++ b/runtime/syntax/rc.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	M$ Resource files (*.rc)
 " Maintainer:	Christian Brabandt
-" Last Change:	2015-05-29
+" Last Change:	20220116
 " Repository:   https://github.com/chrisbra/vim-rc-syntax
 " License:	Vim (see :h license)
 " Previous Maintainer:	Heiko Erhardt <Heiko.Erhardt@munich.netsurf.de>
@@ -173,16 +173,17 @@
 hi def link rcStdId	rcStatement
 hi def link rcStatement	Statement
 
-" Default color overrides
-hi def rcLanguage	term=reverse ctermbg=Red ctermfg=Yellow guibg=Red guifg=Yellow
-hi def rcMainObject	term=underline ctermfg=Blue guifg=Blue
-hi def rcSubObject	ctermfg=Green guifg=Green
-hi def rcCaptionParam	term=underline ctermfg=DarkGreen guifg=Green
-hi def rcParam	ctermfg=DarkGreen guifg=DarkGreen
-hi def rcStatement	ctermfg=DarkGreen guifg=DarkGreen
-hi def rcCommonAttribute	ctermfg=Brown guifg=Brown
+hi def link rcLanguage	Constant
+hi def link rcCaptionParam Constant
+hi def link rcCommonAttribute Constant
 
-"hi def link rcIdentifier	Identifier
+hi def link rcMainObject Identifier
+hi def link rcSubObject	Define
+hi def link rcParam	Constant
+hi def link rcStatement	Statement
+"
+"hi def link rcIdentifier Identifier
+
 
 
 let b:current_syntax = "rc"
diff --git a/runtime/syntax/scala.vim b/runtime/syntax/scala.vim
index 16e1147..c08e60e 100644
--- a/runtime/syntax/scala.vim
+++ b/runtime/syntax/scala.vim
@@ -3,7 +3,7 @@
 " Maintainer:           Derek Wyatt
 " URL:                  https://github.com/derekwyatt/vim-scala
 " License:              Same as Vim
-" Last Change:          23 August 2021
+" Last Change:          23 January 2022
 " ----------------------------------------------------------------------------
 
 if !exists('main_syntax')
@@ -43,55 +43,55 @@
 syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
 syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
 syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
-hi link scalaKeyword Keyword
+hi def link scalaKeyword Keyword
 
 exe 'syn region scalaBlock start=/{/ end=/}/ contains=' . s:ContainedGroup() . ' fold'
 
 syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome
-hi link scalaAkkaSpecialWord PreProc
+hi def link scalaAkkaSpecialWord PreProc
 
 syn keyword scalatestSpecialWord shouldBe
 syn match scalatestShouldDSLA /^\s\+\zsit should/
 syn match scalatestShouldDSLB /\<should\>/
-hi link scalatestSpecialWord PreProc
-hi link scalatestShouldDSLA PreProc
-hi link scalatestShouldDSLB PreProc
+hi def link scalatestSpecialWord PreProc
+hi def link scalatestShouldDSLA PreProc
+hi def link scalatestShouldDSLB PreProc
 
 syn match scalaSymbol /'[_A-Za-z0-9$]\+/
-hi link scalaSymbol Number
+hi def link scalaSymbol Number
 
 syn match scalaChar /'.'/
 syn match scalaChar /'\\[\\"'ntbrf]'/ contains=scalaEscapedChar
 syn match scalaChar /'\\u[A-Fa-f0-9]\{4}'/ contains=scalaUnicodeChar
 syn match scalaEscapedChar /\\[\\"'ntbrf]/
 syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/
-hi link scalaChar Character
-hi link scalaEscapedChar Special
-hi link scalaUnicodeChar Special
+hi def link scalaChar Character
+hi def link scalaEscapedChar Special
+hi def link scalaUnicodeChar Special
 
 syn match scalaOperator "||"
 syn match scalaOperator "&&"
 syn match scalaOperator "|"
 syn match scalaOperator "&"
-hi link scalaOperator Special
+hi def link scalaOperator Special
 
 syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList
 syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition
 syn match scalaVariableDeclarationList /\s*,\s*/ contained nextgroup=scalaNameDefinition
 syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration
-hi link scalaNameDefinition Function
+hi def link scalaNameDefinition Function
 
 syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash
 syn match scalaInstanceDeclaration /`[^`]\+`/ contained
 syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration
-hi link scalaInstanceDeclaration Special
-hi link scalaInstanceHash Type
+hi def link scalaInstanceDeclaration Special
+hi def link scalaInstanceHash Type
 
 syn match scalaUnimplemented /???/
-hi link scalaUnimplemented ERROR
+hi def link scalaUnimplemented ERROR
 
 syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/
-hi link scalaCapitalWord Special
+hi def link scalaCapitalWord Special
 
 " Handle type declarations specially
 syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement
@@ -105,18 +105,18 @@
 syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeTypeDeclaration skipwhite
 syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite
 syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeTypePostDeclaration skipwhite
-hi link scalaTypeTypeDeclaration Type
-hi link scalaTypeTypeExtension Keyword
-hi link scalaTypeTypePostDeclaration Special
-hi link scalaTypeTypePostExtension Keyword
+hi def link scalaTypeTypeDeclaration Type
+hi def link scalaTypeTypeExtension Keyword
+hi def link scalaTypeTypePostDeclaration Special
+hi def link scalaTypeTypePostExtension Keyword
 
 syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite
 syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite
 syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite
 syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeDeclaration skipwhite
-hi link scalaTypeDeclaration Type
-hi link scalaTypeExtension Keyword
-hi link scalaTypePostExtension Keyword
+hi def link scalaTypeDeclaration Type
+hi def link scalaTypeExtension Keyword
+hi def link scalaTypePostExtension Keyword
 
 syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets
 syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration
@@ -124,51 +124,51 @@
 
 syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained contains=scalaCapitalWord
 syn match scalaCaseFollowing /`[^`]\+`/ contained contains=scalaCapitalWord
-hi link scalaCaseFollowing Special
+hi def link scalaCaseFollowing Special
 
 syn keyword scalaKeywordModifier abstract override final lazy implicit private protected sealed null super
 syn keyword scalaSpecialFunction implicitly require
-hi link scalaKeywordModifier Function
-hi link scalaSpecialFunction Function
+hi def link scalaKeywordModifier Function
+hi def link scalaSpecialFunction Function
 
 syn keyword scalaSpecial this true false ne eq
 syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
 syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)"
 syn match scalaSpecial /`[^`]\+`/  " Backtick literals
-hi link scalaSpecial PreProc
+hi def link scalaSpecial PreProc
 
 syn keyword scalaExternal package import
-hi link scalaExternal Include
+hi def link scalaExternal Include
 
 syn match scalaStringEmbeddedQuote /\\"/ contained
 syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar
-hi link scalaString String
-hi link scalaStringEmbeddedQuote String
+hi def link scalaString String
+hi def link scalaStringEmbeddedQuote String
 
 syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
 syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\ze\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
-hi link scalaIString String
-hi link scalaTripleIString String
+hi def link scalaIString String
+hi def link scalaTripleIString String
 
 syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained
 exe 'syn region scalaInterpolationB matchgroup=scalaInterpolationBoundary start=/\${/ end=/}/ contained contains=' . s:ContainedGroup()
-hi link scalaInterpolation Function
+hi def link scalaInterpolation Function
 hi clear scalaInterpolationB
 
 syn region scalaFString matchgroup=scalaInterpolationBrackets start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
 syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained
 exe 'syn region scalaFInterpolationB matchgroup=scalaInterpolationBoundary start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=' . s:ContainedGroup()
-hi link scalaFString String
-hi link scalaFInterpolation Function
+hi def link scalaFString String
+hi def link scalaFInterpolation Function
 hi clear scalaFInterpolationB
 
 syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar
 syn region scalaTripleFString matchgroup=scalaInterpolationBrackets start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
-hi link scalaTripleString String
-hi link scalaTripleFString String
+hi def link scalaTripleString String
+hi def link scalaTripleFString String
 
-hi link scalaInterpolationBrackets Special
-hi link scalaInterpolationBoundary Function
+hi def link scalaInterpolationBrackets Special
+hi def link scalaInterpolationBoundary Function
 
 syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0
 syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/  " A multi-digit number - octal numbers with leading 0's are deprecated in Scala
@@ -176,16 +176,16 @@
 syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1
 syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2
 syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3
-hi link scalaNumber Number
+hi def link scalaNumber Number
 
 syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets
 
 syn region scalaSquareBrackets matchgroup=scalaSquareBracketsBrackets start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
 syn match scalaTypeOperator /[-+=:<>]\+/ contained
 syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained
-hi link scalaSquareBracketsBrackets Type
-hi link scalaTypeOperator Keyword
-hi link scalaTypeAnnotationParameter Function
+hi def link scalaSquareBracketsBrackets Type
+hi def link scalaTypeOperator Keyword
+hi def link scalaTypeAnnotationParameter Function
 
 syn match scalaShebang "\%^#!.*" display
 syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold
@@ -195,20 +195,20 @@
 syn region scalaDocLinks start="\[\[" end="\]\]" contained
 syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained
 syn match scalaTodo "\vTODO|FIXME|XXX" contained
-hi link scalaShebang Comment
-hi link scalaMultilineComment Comment
-hi link scalaDocLinks Function
-hi link scalaParameterAnnotation Function
-hi link scalaParamAnnotationValue Keyword
-hi link scalaCommentAnnotation Function
-hi link scalaCommentCodeBlock String
-hi link scalaTodo Todo
+hi def link scalaShebang Comment
+hi def link scalaMultilineComment Comment
+hi def link scalaDocLinks Function
+hi def link scalaParameterAnnotation Function
+hi def link scalaParamAnnotationValue Keyword
+hi def link scalaCommentAnnotation Function
+hi def link scalaCommentCodeBlock String
+hi def link scalaTodo Todo
 
 syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/
-hi link scalaAnnotation PreProc
+hi def link scalaAnnotation PreProc
 
 syn match scalaTrailingComment "//.*$" contains=scalaTodo,@Spell
-hi link scalaTrailingComment Comment
+hi def link scalaTrailingComment Comment
 
 syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing
 syn match scalaAkkaFSM /stay\_s\+using/
@@ -221,8 +221,8 @@
 syn match scalaAkkaFSM /whenUnhandled/
 syn match scalaAkkaFSMGotoUsing /\<using\>/
 syn match scalaAkkaFSMGotoUsing /\<goto\>/
-hi link scalaAkkaFSM PreProc
-hi link scalaAkkaFSMGotoUsing PreProc
+hi def link scalaAkkaFSM PreProc
+hi def link scalaAkkaFSMGotoUsing PreProc
 
 let b:current_syntax = 'scala'
 
diff --git a/runtime/vim.desktop b/runtime/vim.desktop
index 61daa57..3bdaed9 100644
--- a/runtime/vim.desktop
+++ b/runtime/vim.desktop
@@ -4,6 +4,7 @@
 # Translators: This is the Application Name used in the Vim desktop file
 Name[de]=Vim
 Name[eo]=Vim
+Name[fi]=Vim
 Name[fr]=Vim
 Name[it]=Vim
 Name[ru]=Vim
@@ -13,6 +14,7 @@
 # Translators: This is the Generic Application Name used in the Vim desktop file
 GenericName[de]=Texteditor
 GenericName[eo]=Tekstoredaktilo
+GenericName[fi]=Tekstinmuokkain
 GenericName[fr]=Éditeur de texte
 GenericName[it]=Editor di testi
 GenericName[ja]=テキストエディタ
@@ -23,6 +25,7 @@
 # Translators: This is the comment used in the Vim desktop file
 Comment[de]=Textdateien bearbeiten
 Comment[eo]=Redakti tekstajn dosierojn
+Comment[fi]=Muokkaa tekstitiedostoja
 Comment[fr]=Éditer des fichiers texte
 Comment[it]=Edita file di testo
 Comment[ja]=テキストファイルを編集します
@@ -54,7 +57,6 @@
 Comment[et]=Redigeeri tekstifaile
 Comment[eu]=Editatu testu-fitxategiak
 Comment[fa]=ویرایش پرونده‌های متنی
-Comment[fi]=Muokkaa tekstitiedostoja
 Comment[ga]=Eagar comhad Téacs
 Comment[gu]=લખાણ ફાઇલોમાં ફેરફાર કરો
 Comment[he]=ערוך קבצי טקסט
@@ -103,6 +105,7 @@
 # Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon!
 Keywords[de]=Text;Editor;
 Keywords[eo]=Teksto;redaktilo;
+Keywords[fi]=Teksti;muokkain;editori;
 Keywords[fr]=Texte;éditeur;
 Keywords[it]=Testo;editor;
 Keywords[ja]=テキスト;エディタ;