Update runtime files.
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index b95e493..4972e38 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -142,6 +142,7 @@
 runtime/syntax/cucumber.vim		@tpope
 runtime/syntax/datascript.vim		@dpelle
 runtime/syntax/dcl.vim			@cecamp
+runtime/syntax/desktop.vim		@e-kwsm
 runtime/syntax/doxygen.vim		@frogonwheels
 runtime/syntax/dtd.vim			@chrisbra
 runtime/syntax/elmfilt.vim		@cecamp
@@ -152,6 +153,7 @@
 runtime/syntax/gitconfig.vim		@tpope
 runtime/syntax/gitrebase.vim		@tpope
 runtime/syntax/gprof.vim		@dpelle
+runtime/syntax/groff.vim		@jmarshall
 runtime/syntax/haml.vim			@tpope
 runtime/syntax/haskell.vim		@coot
 runtime/syntax/hgcommit.vim		@k-takata
@@ -162,10 +164,10 @@
 runtime/syntax/lynx.vim			@dkearns
 runtime/syntax/mailcap.vim		@dkearns
 runtime/syntax/make.vim			@rohieb
-runtime/syntax/make.vim			@rohieb
 runtime/syntax/maple.vim		@cecamp
 runtime/syntax/markdown.vim		@tpope
 runtime/syntax/netrw.vim		@cecamp
+runtime/syntax/nroff.vim		@jmarshall
 runtime/syntax/nsis.vim			@k-takata
 runtime/syntax/pdf.vim			@tpope
 runtime/syntax/php.vim			@TysonAndre
@@ -180,7 +182,9 @@
 runtime/syntax/sm.vim			@cecamp
 runtime/syntax/spec.vim			@ignatenkobrain
 runtime/syntax/sqloracle.vim		@chrisbra
+runtime/syntax/sshconfig.vim		@Jakuje
 runtime/syntax/sshdconfig.vim		@Jakuje
+runtime/syntax/sudoers.vim		@e-kwsm
 runtime/syntax/tags.vim			@cecamp
 runtime/syntax/teraterm.vim		@k-takata
 runtime/syntax/tex.vim			@cecamp
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 20a8f4b..328d6ff 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 Jan 28
+*autocmd.txt*   For Vim version 8.2.  Last change: 2021 Mar 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1519,9 +1519,11 @@
 						*:doautoa* *:doautoall*
 :doautoa[ll] [<nomodeline>] [group] {event} [fname]
 			Like ":doautocmd", but apply the autocommands to each
-			loaded buffer.  Note that [fname] is used to select
-			the autocommands, not the buffers to which they are
-			applied.
+			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.
+
 			Careful: Don't use this for autocommands that delete a
 			buffer, change to another buffer or change the
 			contents of a buffer; the result is unpredictable.
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 428cb08..57ab47e 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 Mar 10
+*eval.txt*	For Vim version 8.2.  Last change: 2021 Mar 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5107,6 +5107,13 @@
 			listed		TRUE if the buffer is listed.
 			lnum		Line number used for the buffer when
 					opened in the current window.
+					Only valid if the buffer has been
+					displayed in the window in the past.
+					If you want the line number of the
+					last known cursor position in a given
+					window, use |line()|: >
+						:echo line('.', {winid})
+<
 			linecount	Number of lines in the buffer (only
 					valid when loaded)
 			loaded		TRUE if the buffer is loaded.
@@ -6095,12 +6102,12 @@
 			width		window width
 			winbar		1 if the window has a toolbar, 0
 					otherwise
-			wincol		leftmost screen column of the window,
-					col from |win_screenpos()|
+			wincol		leftmost screen column of the window;
+					"col" from |win_screenpos()|
 			winid		|window-ID|
 			winnr		window number
-			winrow		topmost screen column of the window,
-					row from |win_screenpos()|
+			winrow		topmost screen line of the window;
+					"row" from |win_screenpos()|
 
 		Can also be used as a |method|: >
 			GetWinnr()->getwininfo()
@@ -12810,8 +12817,8 @@
 			it can no longer be changed (until it is unlocked).
 			A locked variable can be deleted: >
 				:lockvar v
-				:let v = 'asdf'		" fails!
-				:unlet v
+				:let v = 'asdf'	  " fails!
+				:unlet v	  " works
 <							*E741* *E940*
 			If you try to change a locked variable you get an
 			error message: "E741: Value is locked: {name}".
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index ea1b137..7da8066 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 Feb 14
+*index.txt*     For Vim version 8.2.  Last change: 2021 Mar 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1294,6 +1294,7 @@
 |:edit|		:e[dit]		edit a file
 |:earlier|	:ea[rlier]	go to older change, undo
 |:echo|		:ec[ho]		echoes the result of expressions
+|:echoconsole|	:echoc[onsole]	like :echomsg but write to stdout
 |:echoerr|	:echoe[rr]	like :echo, show like an error and use history
 |:echohl|	:echoh[l]	set highlighting for echo commands
 |:echomsg|	:echom[sg]	same as :echo, put message in history
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 873d5d6..47e706b 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.2.  Last change: 2020 Dec 10
+*map.txt*       For Vim version 8.2.  Last change: 2021 Mar 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -271,8 +271,8 @@
 	endfunc
 	nnoremap <expr> x StoreColumn()
 	nmap ! f!x
-You will notice that g:column has the value from before executing "fx",
-because "z" is evaluated before "fx" is executed.
+You will notice that g:column has the value from before executing "f!",
+because "x" is evaluated before "f!" is executed.
 This can be solved by inserting <Ignore> before the character that is
 expression-mapped: >
 	nmap ! f!<Ignore>x
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d6215a4..4dc0e2e 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 8.2.  Last change: 2020 Oct 18
+*motion.txt*    For Vim version 8.2.  Last change: 2021 Mar 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -942,8 +942,7 @@
 			line.
 
 							*]`*
-]`			[count] times to lowercase mark after the cursor. {not
-			in Vi}
+]`			[count] times to lowercase mark after the cursor.
 
 							*['*
 ['			[count] times to previous line with a lowercase mark
@@ -1037,6 +1036,12 @@
 			(not a motion command).
 			{not available without the |+jumplist| feature}
 
+			NOTE: In the GUI and in a terminal supporting
+			|modifyOtherKeys|, CTRL-I can be mapped separately
+			from <Tab>, on the condition that CTRL-I is
+			mapped before <Tab>, otherwise the mapping applies to
+			both.
+
 							*:ju* *:jumps*
 :ju[mps]		Print the jump list (not a motion command).
 			{not available without the |+jumplist| feature}
@@ -1054,11 +1059,11 @@
 
 For example, after three jump commands you have this jump list:
 
-  jump line  col file/text ~
-    3	  1    0 some text ~
-    2	 70    0 another line ~
-    1  1154   23 end. ~
- > ~
+    jump line  col file/text ~
+      3	  1    0 some text ~
+      2	 70    0 another line ~
+      1  1154   23 end. ~
+   > ~
 
 The "file/text" column shows the file name, or the text at the jump if it is
 in the current file (an indent is removed and a long line is truncated to fit
@@ -1067,11 +1072,11 @@
 You are currently in line 1167.  If you then use the CTRL-O command, the
 cursor is put in line 1154.  This results in:
 
-  jump line  col file/text ~
-    2	  1    0 some text ~
-    1	 70    0 another line ~
- >  0  1154   23 end. ~
-    1  1167    0 foo bar ~
+    jump line  col file/text ~
+      2	  1    0 some text ~
+      1	 70    0 another line ~
+   >  0  1154   23 end. ~
+      1  1167    0 foo bar ~
 
 The pointer will be set at the last used jump position.  The next CTRL-O
 command will use the entry above it, the next CTRL-I command will use the
@@ -1098,12 +1103,12 @@
 After the CTRL-O command that got you into line 1154 you could give another
 jump command (e.g., "G").  The jump list would then become:
 
-  jump line  col file/text ~
-    4	  1    0 some text ~
-    3	 70    0 another line ~
-    2  1167    0 foo bar ~
-    1  1154   23 end. ~
- > ~
+    jump line  col file/text ~
+      4	  1    0 some text ~
+      3	 70    0 another line ~
+      2  1167    0 foo bar ~
+      1  1154   23 end. ~
+   > ~
 
 The line numbers will be adjusted for deleted and inserted lines.  This fails
 if you stop editing a file without writing, like with ":n!".
@@ -1152,7 +1157,7 @@
 a bit different from the position of the change.  Especially when lines have
 been deleted.
 
-When the |:keepjumps| command modifier is used the position of a change is not
+When the `:keepjumps` command modifier is used the position of a change is not
 remembered.
 
 							*:changes*
@@ -1193,7 +1198,7 @@
 			#if, #ifdef, #else, #elif, #endif
 					C preprocessor conditionals (when the
 					cursor is on the # or no ([{
-					following)
+					is following)
 			For other items the matchit plugin can be used, see
 			|matchit-install|.  This plugin also helps to skip
 			matches in comments.
@@ -1222,19 +1227,16 @@
 			#if/#else/#endif makes the movement linewise.
 
 						*[(*
-[(			go to [count] previous unmatched '('.
+[(			Go to [count] previous unmatched '('.
 			|exclusive| motion.
-
 						*[{*
-[{			go to [count] previous unmatched '{'.
+[{			Go to [count] previous unmatched '{'.
 			|exclusive| motion.
-
 						*])*
-])			go to [count] next unmatched ')'.
+])			Go to [count] next unmatched ')'.
 			|exclusive| motion.
-
 						*]}*
-]}			go to [count] next unmatched '}'.
+]}			Go to [count] next unmatched '}'.
 			|exclusive| motion.
 
 The above four commands can be used to go to the start or end of the current
@@ -1268,7 +1270,7 @@
 			class.  When no '}' is found before the cursor this is
 			an error. |exclusive| motion.
 
-The above two commands assume that the file contains a class with methods.
+The above four commands assume that the file contains a class with methods.
 The class definition is surrounded in '{' and '}'.  Each method in the class
 is also surrounded with '{' and '}'.  This applies to the Java language.  The
 file looks like this: >
@@ -1282,17 +1284,21 @@
 			body_two();
 		}
 	}
+
+[To try this out copy the text and put it in a new buffer, the help text above
+confuses the jump commands]
+
 Starting with the cursor on "body_two()", using "[m" will jump to the '{' at
 the start of "method_two()" (obviously this is much more useful when the
 method is long!).  Using "2[m" will jump to the start of "method_one()".
 Using "3[m" will jump to the start of the class.
 
 						*[#*
-[#			go to [count] previous unmatched "#if" or "#else".
+[#			Go to [count] previous unmatched "#if" or "#else".
 			|exclusive| motion.
 
 						*]#*
-]#			go to [count] next unmatched "#else" or "#endif".
+]#			Go to [count] next unmatched "#else" or "#endif".
 			|exclusive| motion.
 
 These two commands work in C programs that contain #if/#else/#endif
@@ -1300,11 +1306,11 @@
 the current line is included.  You can then use "%" to go to the matching line.
 
 						*[star* *[/*
-[*  or  [/		go to [count] previous start of a C comment "/*".
+[*  or  [/		Go to [count] previous start of a C comment "/*".
 			|exclusive| motion.
 
 						*]star* *]/*
-]*  or  ]/		go to [count] next end of a C comment "*/".
+]*  or  ]/		Go to [count] next end of a C comment "*/".
 			|exclusive| motion.
 
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index babe721..0f628c0 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 Feb 13
+*options.txt*	For Vim version 8.2.  Last change: 2021 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3865,7 +3865,7 @@
 								*'go-v'*
 	  'v'	Use a vertical button layout for dialogs.  When not included,
 		a horizontal layout is preferred, but when it doesn't fit a
-		vertical layout is used anyway.
+		vertical layout is used anyway.  Not supported in GTK 3.
 								*'go-p'*
 	  'p'	Use Pointer callbacks for X11 GUI.  This is required for some
 		window managers.  If the cursor is not blinking or hollow at
@@ -8865,15 +8865,15 @@
 						*'window'* *'wi'*
 'window' 'wi'		number  (default screen height - 1)
 			global
-	Window height.  Do not confuse this with the height of the Vim window,
-	use 'lines' for that.
-	Used for |CTRL-F| and |CTRL-B| when there is only one window and the
-	value is smaller than 'lines' minus one.  The screen will scroll
-	'window' minus two lines, with a minimum of one.
+	Window height used for |CTRL-F| and |CTRL-B| when there is only one
+	window and the value is smaller than 'lines' minus one.  The screen
+	will scroll 'window' minus two lines, with a minimum of one.
 	When 'window' is equal to 'lines' minus one CTRL-F and CTRL-B scroll
 	in a much smarter way, taking care of wrapping lines.
 	When resizing the Vim window, the value is smaller than 1 or more than
 	or equal to 'lines' it will be set to 'lines' minus 1.
+	Note: Do not confuse this with the height of the Vim window, use
+	'lines' for that.
 
 						*'winheight'* *'wh'* *E591*
 'winheight' 'wh'	number	(default 1)
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index ead42f9..fcdd5a7 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 8.2.  Last change: 2020 Aug 15
+*quickref.txt*  For Vim version 8.2.  Last change: 2021 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index bef8601..a165e83 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -2236,9 +2236,10 @@
 
 For example, Linux and BSD distributions use groff as their default text
 processing package.  In order to activate the extra syntax highlighting
-features for groff, add the following option to your start-up files: >
+features for groff, arrange for files to be recognized as groff (see
+|ft-groff-syntax|) or add the following option to your start-up files: >
 
-  :let b:nroff_is_groff = 1
+  :let nroff_is_groff = 1
 
 Groff is different from the old AT&T n/troff that you may still find in
 Solaris.  Groff macro and request names can be longer than 2 characters and
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 27e8d75..c070a12 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -57,11 +57,13 @@
 'ari'	options.txt	/*'ari'*
 'arshape'	options.txt	/*'arshape'*
 'as'	todo.txt	/*'as'*
+'asd'	options.txt	/*'asd'*
 'autochdir'	options.txt	/*'autochdir'*
 'autoindent'	options.txt	/*'autoindent'*
 'autoprint'	vi_diff.txt	/*'autoprint'*
 'autoread'	options.txt	/*'autoread'*
 'autosave'	todo.txt	/*'autosave'*
+'autoshelldir'	options.txt	/*'autoshelldir'*
 'autowrite'	options.txt	/*'autowrite'*
 'autowriteall'	options.txt	/*'autowriteall'*
 'aw'	options.txt	/*'aw'*
@@ -508,10 +510,12 @@
 'noari'	options.txt	/*'noari'*
 'noarshape'	options.txt	/*'noarshape'*
 'noas'	todo.txt	/*'noas'*
+'noasd'	options.txt	/*'noasd'*
 'noautochdir'	options.txt	/*'noautochdir'*
 'noautoindent'	options.txt	/*'noautoindent'*
 'noautoread'	options.txt	/*'noautoread'*
 'noautosave'	todo.txt	/*'noautosave'*
+'noautoshelldir'	options.txt	/*'noautoshelldir'*
 'noautowrite'	options.txt	/*'noautowrite'*
 'noautowriteall'	options.txt	/*'noautowriteall'*
 'noaw'	options.txt	/*'noaw'*
@@ -2397,6 +2401,8 @@
 :ec	eval.txt	/*:ec*
 :echo	eval.txt	/*:echo*
 :echo-redraw	eval.txt	/*:echo-redraw*
+:echoc	eval.txt	/*:echoc*
+:echoconsole	eval.txt	/*:echoconsole*
 :echoe	eval.txt	/*:echoe*
 :echoerr	eval.txt	/*:echoerr*
 :echoh	eval.txt	/*:echoh*
@@ -9164,6 +9170,7 @@
 str2list()	eval.txt	/*str2list()*
 str2nr()	eval.txt	/*str2nr()*
 strcasestr()	eval.txt	/*strcasestr()*
+strcharlen()	eval.txt	/*strcharlen()*
 strcharpart()	eval.txt	/*strcharpart()*
 strchars()	eval.txt	/*strchars()*
 strchr()	eval.txt	/*strchr()*
diff --git a/runtime/doc/textprop.txt b/runtime/doc/textprop.txt
index ac51330..2a6f405 100644
--- a/runtime/doc/textprop.txt
+++ b/runtime/doc/textprop.txt
@@ -1,4 +1,4 @@
-*textprop.txt*  For Vim version 8.2.  Last change: 2020 Oct 14
+*textprop.txt*  For Vim version 8.2.  Last change: 2021 Mar 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -260,8 +260,8 @@
 				properties the one with the highest priority
 				will be used; negative values can be used, the
 				default priority is zero
-		   combine	when TRUE combine the highlight with any
-				syntax highlight; when omitted or FALSE syntax
+		   combine	when omitted or TRUE combine the highlight
+				with any syntax highlight; when FALSE syntax
 				highlight will not be used
 		   start_incl	when TRUE inserts at the start position will
 				be included in the text property
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 2486d9d..8e70f36 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 Mar 11
+*todo.txt*      For Vim version 8.2.  Last change: 2021 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -39,48 +39,9 @@
 -------------------- Known bugs and current work -----------------------
 
 Vim9 - Make everything work:
-- Does this work now: Implement using imported items at script level from
-  "import * as X" in
-- import of item that isn't exported: error should mention missing "export"?
-- no error for using :import in legacy script?
-- Disallow :open ?
-- Check: what if 'cpo' is intentionally changed in Vim9 script, does it get
-  restored at the end?
-- ISN_CHECKTYPE could use check_argtype()
-- Using a script variable inside a :def function doesn't work if the variable
-  is inside a block, see Test_nested_function().  Should it work?
-- give error for variable name:
-      var p = function('NoSuchFunc')
-- When indexing a string, should we include composing characters?  #6563
-	string[0] - first character including its composing characters.
-	string[0 : 0] - same
-    If you don't want that use strcharpart().
-    Also, add optional arg to strcharpart() to include composing chars, to
-    make it consistent with strchars().
-    Add strcharlen(), like strchars() but like skipcc is always set
-- Make closures work better:
-  - Create closure in a loop.  Need to make a list of them.
-- If a :def function is called with a function reference, compile it to get
-  the function type.
-	def Filter(x: string, Cond: func(string): bool)
-	Filter(x, (v) => v =~ '^b')
-- Make inline function work, to be used as a funcref:
-       var Ref = (arg: type): type => {
-	    statement
-	    return expr
-	}
-       var Ref = (arg: type) => {
-	    statement
-	    statement
-	}
 - For builtin functions using tv_get_string*() use check_for_string() to be
-  more strict about the argument type.
-- Implement :lockvar and :unlockvar.  How about local variables?  Perhaps only
-  allow this for global variables.  Use :final or :const otherwise.
-- Allow function names that will be script-local to start with lower case
-  letter?  Or also require names with s: prefix to use upper case?
-  Also apply this function references "var ref = SomeFunc"
-- Support passing v:none to use the default argument value. (#6504)
+  more strict about the argument type (not a bool).
+    done: balloon_()
 - Run the same tests in :def and Vim9 script, like in Test_expr7_not()
 - Check many more builtin function arguments at compile time.
 - make 0 == 'string' fail on the script level, like inside :def.
@@ -280,6 +241,23 @@
 Include patch #6290: recognize shell directory change.
 
 Valgrind reports memory leaks in test_options.
+Valgrind reports overlapping memcpy in
+    test_conceal.3
+    test_edit.1
+    test_functions.4
+    test_ins_complete.3
+    test_method
+    test_normal
+    test_popupwin.35 et al.
+    test_search_stat
+Using uninitialized value in test_crypt (can't explain why).
+Memory leak in test_debugger
+Memory leak in test_paste, using XtOpenDisplay several times
+OLD:
+TODO: be able to run all parts of test_alot with valgrind separately
+Memory leak in test_alot with pyeval() (allocating partial)
+Memory leak in test_alot with expand()
+Memory leaks in test_channel? (or is it because of fork())
 
 test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
 
@@ -298,6 +276,11 @@
 
 Remove SPACE_IN_FILENAME ? It is only used for completion.
 
+Add optional argument to virtcol() that specifies "start", "cursor" or "end"
+to tell which value from getvvcol() should be used. (#7964)
+Value returned by virtcol() changes depending on how lines wrap.  This is
+inconsistent with the documentation.
+
 Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
 Scroll doesn't work correctly, why?
 
@@ -592,7 +575,7 @@
 Give a few examples. (#4288)
 
 Opening a file with --remote-tab-silent that matches 'wildignore' does not
-work, results in (E479: No match". (#4610)
+work, results in "E479: No match". (#4610)
 
 7   Add an option to add one pixel column to the character width?  Lucida
     Console italic is wider than the normal font ("d" overlaps with next char).
@@ -781,14 +764,6 @@
 
 Add buffer argument to undotree(). (#4001)
 
-Memory leak in test_debugger
-Using uninitialized value in test_crypt (can't explain why).
-Memory leak in test_terminal_fail
-TODO: be able to run all parts of test_alot with valgrind separately
-Memory leak in test_alot with pyeval() (allocating partial)
-Memory leak in test_alot with expand()
-Memory leaks in test_channel? (or is it because of fork())
-
 matchaddpos() gets slow with many matches.  Proposal by Rick Howe, 2018 Jul
 19.
 
@@ -1509,9 +1484,6 @@
 Patch to add :mapgroup, put mappings in a group like augroup.
 (Yasuhiro Matsumoto, 2016 Feb 19)
 
-Value returned by virtcol() changes depending on how lines wrap.  This is
-inconsistent with the documentation.
-
 Can we cache the syntax attributes, so that updates for 'relativenumber' and
 'cursorline'/'cursorcolumn' are a lot faster?  Thus store the attributes
 before combining them.
@@ -2466,9 +2438,6 @@
 When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
 line.  It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
 
-Using an insert mode expression mapping, cursor is not in the expected
-position. (ZyX, 2010 Aug 29)
-
 After using <Tab> for command line completion after ":ta blah" and getting E33
 (no tags file), further editing the command to e.g., ":echo 'blah'", the
 command is not executed.  Fix by Ian Kelling?
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 0d17298..891719a 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.2.  Last change: 2021 Feb 01
+*usr_41.txt*	For Vim version 8.2.  Last change: 2021 Mar 14
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index fd135c6..76a8f5d 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 8.2.  Last change: 2021 Mar 02
+*various.txt*   For Vim version 8.2.  Last change: 2021 Mar 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -724,7 +724,7 @@
 			feature}
 
 							*:sl!* *:sleep!*
-:[N]sl[eep]! [N] [m]	Same as above, but hide the cursor
+:[N]sl[eep]! [N] [m]	Same as above, but hide the cursor.
 
 							*:xrestore* *:xr*
 :xr[estore] [display]	Reinitializes the connection to the X11 server. Useful
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index ef28e08..8d75ed6 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -2300,7 +2300,7 @@
 Win32 installer: The generated _vimrc contained an absolute path to diff.exe.
 After upgrading it becomes invalid.  Now use $VIMRUNTIME instead.
 
-The command line was cleared to often when 'showmode' was set and ":silent
+The command line was cleared too often when 'showmode' was set and ":silent
 normal vy" was used.  Don't clear the command line unless the mode was
 actually displayed.  Added the "mode_displayed" variable.
 
diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt
index 67ca8a0..ab4b7d8 100644
--- a/runtime/doc/version8.txt
+++ b/runtime/doc/version8.txt
@@ -1776,7 +1776,7 @@
 
 Patch 7.4.219
 Problem:    When 'relativenumber' or 'cursorline' are set the window is
-	    redrawn much to often. (Patrick Hemmer, Dominique Pelle)
+	    redrawn much too often. (Patrick Hemmer, Dominique Pelle)
 Solution:   Check the VALID_CROW flag instead of VALID_WROW.
 Files:	    src/move.c
 
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 2425804..974ee6a 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 Mar 03
+*vim9.txt*	For Vim version 8.2.  Last change: 2021 Mar 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -204,7 +204,7 @@
 for clarity.
 
 Since a script-local function reference can be used without "s:" the name must
-start with an upper case letter even when using the ":s" prefix.  In legacy
+start with an upper case letter even when using the "s:" prefix.  In legacy
 script "s:funcref" could be used, because it could not be referred to with
 "funcref".  In Vim9 script it can, therefore "s:Funcref" must be used to avoid
 that the name interferes with builtin functions.
@@ -926,6 +926,27 @@
 	  g/pattern/s/^/`=newText`/
 	enddef
 
+Closures defined in a loop will share the same context.  For example: >
+	var flist: list<func>
+	for i in range(10)
+	  var inloop = i
+	  flist[i] = () => inloop
+	endfor
+
+The "inloop" variable will exist only once, all closures put in the list refer
+to the same instance, which in the end will have the value 9.  This is
+efficient.  If you do want a separate context for each closure call a function
+to define it: >
+	def GetFunc(i: number): func
+	  var inloop = i
+	  return () => inloop
+	enddef
+
+	var flist: list<func>
+	for i in range(10)
+	  flist[i] = GetFunc(i)
+	endfor
+
 ==============================================================================
 
 4. Types					*vim9-types*
@@ -1006,8 +1027,6 @@
 	:var mine: MyInterface<string>
 {not implemented yet}
 
-You may also find this wiki useful.  It was written by an early adoptor of
-Vim9 script: https://github.com/lacygoill/wiki/blob/master/vim/vim9.md
 
 Variable types and type casting	~
 							*variable-types*
@@ -1080,27 +1099,6 @@
 Same for |extend()|, use |extendnew()| instead, and for |flatten()|, use
 |flattennew()| instead.
 
-Closures defined in a loop will share the same context.  For example: >
-	var flist: list<func>
-	for i in range(10)
-	  var inloop = i
-	  flist[i] = () => inloop
-	endfor
-
-The "inloop" variable will exist only once, all closures put in the list refer
-to the same instance, which in the end will have the value 9.  This is
-efficient.  If you do want a separate context for each closure call a function
-to define it: >
-	def GetFunc(i: number): func
-	  var inloop = i
-	  return () => inloop
-	enddef
-
-	var flist: list<func>
-	for i in range(10)
-	  flist[i] = GetFunc(i)
-	endfor
-
 ==============================================================================
 
 5. Namespace, Import and Export
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index 69de9ba..b3905be 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 8.2.  Last change: 2021 Feb 06
+*windows.txt*   For Vim version 8.2.  Last change: 2021 Mar 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -790,7 +790,7 @@
 
 Examples: >
 
-	:windo set nolist nofoldcolumn | normal zn
+	:windo set nolist foldcolumn=0 | normal! zn
 
 This resets the 'list' option and disables folding in all windows. >
 
@@ -798,7 +798,7 @@
 
 This resets the 'fileencoding' in each buffer and writes it if this changed
 the buffer.  The result is that all buffers will use the 'encoding' encoding
-(if conversion works properly).
+(if conversion succeeds).
 
 ==============================================================================
 9. Tag or file name under the cursor			*window-tag*
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 2b66274..c34b63b 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:	2021 Mar 12
+" Last Change:	2021 Mar 19
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
diff --git a/runtime/ftplugin/lisp.vim b/runtime/ftplugin/lisp.vim
index 9825d24..db3ac96 100644
--- a/runtime/ftplugin/lisp.vim
+++ b/runtime/ftplugin/lisp.vim
@@ -4,7 +4,7 @@
 " URL:		 http://sites.google.com/site/khorser/opensource/vim
 " Original author:    Dorai Sitaram <ds26@gte.com>
 " Original URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
-" Last Change:   Oct 23, 2013
+" Last Change:   Mar 10, 2021
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
diff --git a/runtime/indent/cdl.vim b/runtime/indent/cdl.vim
index 5fae7b9..4f9b7a8 100644
--- a/runtime/indent/cdl.vim
+++ b/runtime/indent/cdl.vim
@@ -62,10 +62,14 @@
   " PREVIOUS LINE
   let ind = indent(lnum)
   let line = getline(lnum)
-  let f = -1 " wether a '=' is a conditional or a asignment, -1 means we don't know yet
-  " one 'closing' element at the beginning of the line has already reduced the
-  "   indent, but 'else', 'elseif' & 'then' increment it for the next line
-  " '=' at the beginning has already de right indent (increased for asignments)
+
+  " Whether a '=' is a conditional or an assignment. -1 means we don't know
+  " yet.
+  " One 'closing' element at the beginning of the line has already reduced the
+  " indent, but 'else', 'elseif' & 'then' increment it for the next line.
+  " '=' at the beginning already has the right indent (increased for
+  " asignments).
+  let f = -1
   let inicio = matchend(line, '^\c\s*\(else\a*\|then\|endif\|/[*/]\|[);={]\)')
   if inicio > 0
     let c = line[inicio-1]
diff --git a/runtime/syntax/dot.vim b/runtime/syntax/dot.vim
index 0fdd6ea..68a0f57 100644
--- a/runtime/syntax/dot.vim
+++ b/runtime/syntax/dot.vim
@@ -1,16 +1,22 @@
-" Vim syntax file
 " Language:     Dot
 " Filenames:    *.dot
 " Maintainer:   Markus Mottl  <markus.mottl@gmail.com>
 " URL:          http://www.ocaml.info/vim/syntax/dot.vim
-" Last Change:  2011 May 17 - improved identifier matching + two new keywords
+" Last Change:  2021 Mar 24 - better attr + escape string matching, new keywords (Farbod Salamat-Zadeh)
+"               2011 May 17 - improved identifier matching + two new keywords
 "               2001 May 04 - initial version
 
-" quit when a syntax file was already loaded
-if exists("b:current_syntax")
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
   finish
 endif
 
+let s:keepcpo = &cpo
+set cpo&vim
+
 " Errors
 syn match    dotParErr     ")"
 syn match    dotBrackErr   "]"
@@ -29,39 +35,43 @@
 " Strings
 syn region   dotString    start=+"+ skip=+\\\\\|\\"+ end=+"+
 
+" Escape strings
+syn match    dotEscString /\v\\(N|G|E|T|H|L)/ containedin=dotString
+syn match    dotEscString /\v\\(n|l|r)/       containedin=dotString
+
 " General keywords
-syn keyword  dotKeyword  digraph node edge subgraph
+syn keyword  dotKeyword graph digraph subgraph node edge strict
 
-" Graph attributes
-syn keyword  dotType center layers margin mclimit name nodesep nslimit
-syn keyword  dotType ordering page pagedir rank rankdir ranksep ratio
-syn keyword  dotType rotate size
-
-" Node attributes
-syn keyword  dotType distortion fillcolor fontcolor fontname fontsize
-syn keyword  dotType height layer orientation peripheries regular
-syn keyword  dotType shape shapefile sides skew width
-
-" Edge attributes
-syn keyword  dotType arrowhead arrowsize arrowtail constraint decorateP
-syn keyword  dotType dir headclip headlabel headport labelangle labeldistance
-syn keyword  dotType labelfontcolor labelfontname labelfontsize
-syn keyword  dotType minlen port_label_distance samehead sametail
-syn keyword  dotType tailclip taillabel tailport weight
-
-" Shared attributes (graphs, nodes, edges)
-syn keyword  dotType color
-
-" Shared attributes (graphs and edges)
-syn keyword  dotType bgcolor label URL
-
-" Shared attributes (nodes and edges)
-syn keyword  dotType fontcolor fontname fontsize layer style
+" Node, edge and graph attributes
+syn keyword  dotType _background area arrowhead arrowsize arrowtail bb bgcolor
+      \ center charset class clusterrank color colorscheme comment compound
+      \ concentrate constraint Damping decorate defaultdist dim dimen dir
+      \ diredgeconstraints distortion dpi edgehref edgetarget edgetooltip
+      \ edgeURL epsilon esep fillcolor fixedsize fontcolor fontname fontnames
+      \ fontpath fontsize forcelabels gradientangle group head_lp headclip
+      \ headhref headlabel headport headtarget headtooltip headURL height href
+      \ id image imagepath imagepos imagescale inputscale K label label_scheme
+      \ labelangle labeldistance labelfloat labelfontcolor labelfontname
+      \ labelfontsize labelhref labeljust labelloc labeltarget labeltooltip
+      \ labelURL landscape layer layerlistsep layers layerselect layersep 
+      \ layout len levels levelsgap lhead lheight lp ltail lwidth margin
+      \ maxiter mclimit mindist minlen mode model mosek newrank nodesep 
+      \ nojustify normalize notranslate nslimit nslimit1 ordering orientation
+      \ outputorder overlap overlap_scaling overlap_shrink pack packmode pad
+      \ page pagedir pencolor penwidth peripheries pin pos quadtree quantum
+      \ rank rankdir ranksep ratio rects regular remincross repulsiveforce
+      \ resolution root rotate rotation samehead sametail samplepoints scale
+      \ searchsize sep shape shapefile showboxes sides size skew smoothing
+      \ sortv splines start style stylesheet tail_lp tailclip tailhref 
+      \ taillabel tailport tailtarget tailtooltip tailURL target tooltip
+      \ truecolor URL vertices viewport voro_margin weight width xdotversion 
+      \ xlabel xlp z
 
 " Special chars
 syn match    dotKeyChar  "="
 syn match    dotKeyChar  ";"
 syn match    dotKeyChar  "->"
+syn match    dotKeyChar  "--"
 
 " Identifier
 syn match    dotIdentifier /\<\w\+\(:\w\+\)\?\>/
@@ -71,27 +81,41 @@
 syn sync maxlines=500
 
 " Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_dot_syntax_inits")
+  if version < 508
+    let did_dot_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
 
-hi def link dotParErr	 Error
-hi def link dotBraceErr	 Error
-hi def link dotBrackErr	 Error
+  HiLink dotParErr	 Error
+  HiLink dotBraceErr	 Error
+  HiLink dotBrackErr	 Error
 
-hi def link dotComment	 Comment
-hi def link dotTodo	 Todo
+  HiLink dotComment	 Comment
+  HiLink dotTodo	 Todo
 
-hi def link dotParEncl	 Keyword
-hi def link dotBrackEncl	 Keyword
-hi def link dotBraceEncl	 Keyword
+  HiLink dotParEncl	 Keyword
+  HiLink dotBrackEncl	 Keyword
+  HiLink dotBraceEncl	 Keyword
 
-hi def link dotKeyword	 Keyword
-hi def link dotType	 Type
-hi def link dotKeyChar	 Keyword
+  HiLink dotKeyword	 Keyword
+  HiLink dotType	 Type
+  HiLink dotKeyChar	 Keyword
 
-hi def link dotString	 String
-hi def link dotIdentifier	 Identifier
+  HiLink dotString	 String
+  HiLink dotEscString	 Keyword
+  HiLink dotIdentifier	 Identifier
 
+  delcommand HiLink
+endif
 
 let b:current_syntax = "dot"
 
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
 " vim: ts=8
diff --git a/runtime/syntax/groff.vim b/runtime/syntax/groff.vim
index 2cc7ccf..c076c8d 100644
--- a/runtime/syntax/groff.vim
+++ b/runtime/syntax/groff.vim
@@ -1,7 +1,7 @@
 " VIM syntax file
 " Language:	groff
-" Maintainer:	Alejandro López-Valencia <dradul@yahoo.com>
-" URL:		http://dradul.tripod.com/vim
+" Maintainer:	John Marshall <jmarshall@hey.com>
+" Previous Maintainer:	Pedro Alejandro López-Valencia <palopezv@gmail.com>
 " Last Change:	2003-05-08-12:41:13 GMT-5.
 
 " This uses the nroff.vim syntax file.
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index 8a5e10b..1ab1c2d 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -7,7 +7,7 @@
 "		(ss) repaired several quoting and grouping glitches
 "		(ss) fixed regex parsing issue with multiple qualifiers [gi]
 "		(ss) additional factoring of keywords, globals, and members
-" Last Change:	2020 May 14
+" Last Change:	2021 Mar 30
 " 		2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
 " 		2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
 
@@ -41,6 +41,7 @@
 
 syn match   javaScriptSpecialCharacter "'\\.'"
 syn match   javaScriptNumber	       "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
+syn match   javaScriptNumber	       "-\=\<\d\+\%(_\d\+\)*\>"
 syn region  javaScriptRegexpString     start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
 
 syn keyword javaScriptConditional	if else switch
diff --git a/runtime/syntax/nroff.vim b/runtime/syntax/nroff.vim
index 04532e0..5667042 100644
--- a/runtime/syntax/nroff.vim
+++ b/runtime/syntax/nroff.vim
@@ -1,16 +1,9 @@
 " VIM syntax file
 " Language:	nroff/groff
-" Maintainer:	Pedro Alejandro López-Valencia <palopezv@gmail.com>
-" URL:		http://vorbote.wordpress.com/
-" Last Change:	2012 Feb 2
-"
-" {{{1 Acknowledgements
-"
-" ACKNOWLEDGEMENTS:
-"
-" My thanks to Jérôme Plût <Jerome.Plut@ens.fr>, who was the
-" creator and maintainer of this syntax file for several years.
-" May I be as good at it as he has been.
+" Maintainer:	John Marshall <jmarshall@hey.com>
+" Previous Maintainer:	Pedro Alejandro López-Valencia <palopezv@gmail.com>
+" Previous Maintainer:	Jérôme Plût <Jerome.Plut@ens.fr>
+" Last Change:	2021 Mar 28
 "
 " {{{1 Todo
 "
@@ -31,6 +24,13 @@
 let s:cpo_save = &cpo
 set cpo&vim
 
+if exists("nroff_is_groff")
+	let b:nroff_is_groff = 1
+endif
+
+syn spell toplevel
+syn case match
+
 "
 " {{{1 plugin settings...
 "
@@ -48,7 +48,7 @@
 "
 setlocal paragraphs+=XP
 "
-" {{{2 Activate navigation to preporcessor sections.
+" {{{2 Activate navigation to preprocessor sections.
 "
 if exists("b:preprocs_as_sections")
 	setlocal sections=EQTSPS[\ G1GS
@@ -169,9 +169,9 @@
 " <jp />
 
 syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/
-syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/
+syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ contains=@Spell
 syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/
-syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/
+syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ contains=@Spell
 syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/
 syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/
 
@@ -179,11 +179,11 @@
 " ------------------------------------------------------------
 
 syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./
-syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo
-syn match nroffComment /^'''.*/  contains=nroffTodo
+syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo,@Spell
+syn match nroffComment /^'''.*/  contains=nroffTodo,@Spell
 
 if exists("b:nroff_is_groff")
-	syn match nroffComment "\\#.*$" contains=nroffTodo
+	syn match nroffComment "\\#.*$" contains=nroffTodo,@Spell
 endif
 
 syn keyword nroffTodo TODO XXX FIXME contained
@@ -198,7 +198,7 @@
 "
 
 hi def link nroffEscChar nroffSpecialChar
-hi def link nroffEscCharAr nroffSpecialChar
+hi def link nroffEscCharArg nroffSpecialChar
 hi def link nroffSpecialChar SpecialChar
 hi def link nroffSpace Delimiter
 
@@ -211,7 +211,7 @@
 hi def link nroffEscRegPar nroffEscape
 hi def link nroffEscArg nroffEscape
 hi def link nroffSize nroffEscape
-hi def link nroffEscape Preproc
+hi def link nroffEscape PreProc
 
 hi def link nroffIgnore Comment
 hi def link nroffComment Comment
diff --git a/runtime/syntax/sshconfig.vim b/runtime/syntax/sshconfig.vim
index d0752ae..ae3c7dd 100644
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -1,14 +1,15 @@
 " Vim syntax file
 " Language:	OpenSSH client configuration file (ssh_config)
 " Author:	David Necas (Yeti)
-" Maintainer:	Dominik Fischer <d dot f dot fischer at web dot de>
+" Maintainer:	Jakub Jelen <jakuje at gmail dot com>
+" Previous Maintainer:	Dominik Fischer <d dot f dot fischer at web dot de>
 " Contributor:  Leonard Ehrenfried <leonard.ehrenfried@web.de>
 " Contributor:  Karsten Hopp <karsten@redhat.com>
 " Contributor:  Dean, Adam Kenneth <adam.ken.dean@hpe.com>
-" Last Change:	2020 Feb 12
+" Last Change:	2021 Mar 29
 "		Added RemoteCommand from pull request #4809
 "		Included additional keywords from Martin.
-" SSH Version:	7.4p1
+" SSH Version:	8.5p1
 "
 
 " Setup
@@ -174,6 +175,7 @@
 syn keyword sshconfigKeyword HostKeyAlias
 syn keyword sshconfigKeyword HostName
 syn keyword sshconfigKeyword HostbasedAuthentication
+syn keyword sshconfigKeyword HostbasedAcceptedAlgorithms
 syn keyword sshconfigKeyword HostbasedKeyTypes
 syn keyword sshconfigKeyword IPQoS
 syn keyword sshconfigKeyword IdentitiesOnly
@@ -185,9 +187,11 @@
 syn keyword sshconfigKeyword KbdInteractiveAuthentication
 syn keyword sshconfigKeyword KbdInteractiveDevices
 syn keyword sshconfigKeyword KexAlgorithms
+syn keyword sshconfigKeyword KnownHostsCommand
 syn keyword sshconfigKeyword LocalCommand
 syn keyword sshconfigKeyword LocalForward
 syn keyword sshconfigKeyword LogLevel
+syn keyword sshconfigKeyword LogVerbose
 syn keyword sshconfigKeyword MACs
 syn keyword sshconfigKeyword Match
 syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
@@ -195,11 +199,13 @@
 syn keyword sshconfigKeyword PKCS11Provider
 syn keyword sshconfigKeyword PasswordAuthentication
 syn keyword sshconfigKeyword PermitLocalCommand
+syn keyword sshconfigKeyword PermitRemoteOpen
 syn keyword sshconfigKeyword Port
 syn keyword sshconfigKeyword PreferredAuthentications
 syn keyword sshconfigKeyword ProxyCommand
 syn keyword sshconfigKeyword ProxyJump
 syn keyword sshconfigKeyword ProxyUseFDPass
+syn keyword sshconfigKeyword PubkeyAcceptedAlgorithms
 syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes
 syn keyword sshconfigKeyword PubkeyAuthentication
 syn keyword sshconfigKeyword RekeyLimit
diff --git a/runtime/syntax/sshdconfig.vim b/runtime/syntax/sshdconfig.vim
index 8534ff6..6b0d2af 100644
--- a/runtime/syntax/sshdconfig.vim
+++ b/runtime/syntax/sshdconfig.vim
@@ -7,8 +7,8 @@
 " Contributor:  Leonard Ehrenfried <leonard.ehrenfried@web.de>	
 " Contributor:  Karsten Hopp <karsten@redhat.com>
 " Originally:	2009-07-09
-" Last Change:	2020-10-20
-" SSH Version:	8.4p1
+" Last Change:	2021-03-29
+" SSH Version:	8.5p1
 "
 
 " Setup
@@ -195,6 +195,7 @@
 syn keyword sshdconfigKeyword HostKey
 syn keyword sshdconfigKeyword HostKeyAgent
 syn keyword sshdconfigKeyword HostKeyAlgorithms
+syn keyword sshdconfigKeyword HostbasedAcceptedAlgorithms
 syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes
 syn keyword sshdconfigKeyword HostbasedAuthentication
 syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly
@@ -213,6 +214,7 @@
 syn keyword sshdconfigKeyword KeyRegenerationInterval
 syn keyword sshdconfigKeyword ListenAddress
 syn keyword sshdconfigKeyword LogLevel
+syn keyword sshdconfigKeyword LogVerbose
 syn keyword sshdconfigKeyword LoginGraceTime
 syn keyword sshdconfigKeyword MACs
 syn keyword sshdconfigKeyword Match
@@ -220,6 +222,8 @@
 syn keyword sshdconfigKeyword MaxSessions
 syn keyword sshdconfigKeyword MaxStartups
 syn keyword sshdconfigKeyword PasswordAuthentication
+syn keyword sshdconfigKeyword PerSourceMaxStartups
+syn keyword sshdconfigKeyword PerSourceNetBlockSize
 syn keyword sshdconfigKeyword PermitBlacklistedKeys
 syn keyword sshdconfigKeyword PermitEmptyPasswords
 syn keyword sshdconfigKeyword PermitListen
@@ -234,6 +238,7 @@
 syn keyword sshdconfigKeyword PrintLastLog
 syn keyword sshdconfigKeyword PrintMotd
 syn keyword sshdconfigKeyword Protocol
+syn keyword sshdconfigKeyword PubkeyAcceptedAlgorithms
 syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes
 syn keyword sshdconfigKeyword PubkeyAuthentication
 syn keyword sshdconfigKeyword PubkeyAuthOptions
diff --git a/runtime/syntax/sudoers.vim b/runtime/syntax/sudoers.vim
index 019b0ad..bf2d337 100644
--- a/runtime/syntax/sudoers.vim
+++ b/runtime/syntax/sudoers.vim
@@ -1,7 +1,8 @@
 " Vim syntax file
 " Language:             sudoers(5) configuration files
+" Maintainer:           Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2018-08-18
+" Latest Revision:      2021 Mar 15
 " Recent Changes:	Support for #include and #includedir.
 " 			Added many new options (Samuel D. Leslie)
 
@@ -26,7 +27,7 @@
 syn keyword sudoersTodo               contained TODO FIXME XXX NOTE
 
 syn region  sudoersComment            display oneline start='#' end='$' contains=sudoersTodo
-syn region  sudoersInclude            display oneline start='#\(include\|includedir\)' end='$'
+syn region  sudoersInclude            display oneline start='[#@]\%(include\|includedir\)\>' end='$'
 
 syn keyword sudoersAlias              User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
 syn keyword sudoersAlias              Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
@@ -201,7 +202,7 @@
                                   \ shell_noargs
                                   \ stay_setuid
                                   \ sudoedit_checkdir
-                                  \ sudoedit_fellow
+                                  \ sudoedit_follow
                                   \ syslog_pid
                                   \ targetpw
                                   \ tty_tickets