changeset 21093:99a602b27e0e

Runtime file updates Commit: https://github.com/vim/vim/commit/e46a4405056276b4cbdacee76b11f85c8ea1830b Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jun 30 20:38:27 2020 +0200 Runtime file updates
author Bram Moolenaar <Bram@vim.org>
date Tue, 30 Jun 2020 20:45:06 +0200
parents f49405905ef6
children 376b520312d6
files runtime/doc/eval.txt runtime/doc/if_lua.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/vim9.txt runtime/filetype.vim runtime/syntax/neomuttrc.vim
diffstat 7 files changed, 647 insertions(+), 836 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.2.  Last change: 2020 Jun 17
+*eval.txt*	For Vim version 8.2.  Last change: 2020 Jun 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -157,7 +157,7 @@ You will not get an error if you try to 
 
 
 1.2 Function references ~
-					*Funcref* *E695* *E718*
+						*Funcref* *E695* *E718*
 A Funcref variable is obtained with the |function()| function, the |funcref()|
 function or created with the lambda expression |expr-lambda|.  It can be used
 in an expression in the place of a function name, before the parenthesis
@@ -2511,13 +2511,15 @@ getjumplist([{winnr} [, {tabnr}]])
 				List	list of jump list items
 getline({lnum})			String	line {lnum} of current buffer
 getline({lnum}, {end})		List	lines {lnum} to {end} of current buffer
-getloclist({nr} [, {what}])	List	list of location list items
+getloclist({nr})		List	list of location list items
+getloclist({nr}, {what})	Dict	get specific location list properties
 getmarklist([{expr}])		List	list of global/local marks
 getmatches([{win}])		List	list of current matches
 getmousepos()			Dict	last known mouse position
 getpid()			Number	process ID of Vim
 getpos({expr})			List	position of cursor, mark, etc.
-getqflist([{what}])		List	list of quickfix items
+getqflist()			List	list of quickfix items
+getqflist({what})		Dict	get specific quickfix list properties
 getreg([{regname} [, 1 [, {list}]]])
 				String or List   contents of a register
 getreginfo([{regname}])		Dict	information about a register
@@ -2756,12 +2758,15 @@ setcmdpos({pos})		Number	set cursor posi
 setenv({name}, {val})		none	set environment variable
 setfperm({fname}, {mode})	Number	set {fname} file permissions to {mode}
 setline({lnum}, {line})		Number	set line {lnum} to {line}
-setloclist({nr}, {list} [, {action} [, {what}]])
-				Number	modify location list using {list}
+setloclist({nr}, {list} [, {action}])
+ 				Number	modify location list using {list}
+setloclist({nr}, {list}, {action}, {what})
+				Number	modify specific location list props
 setmatches({list} [, {win}])	Number	restore a list of matches
 setpos({expr}, {list})		Number	set the {expr} position to {list}
-setqflist({list} [, {action} [, {what}]])
-				Number	modify quickfix list using {list}
+setqflist({list} [, {action}])	Number	modify quickfix list using {list}
+setqflist({list}, {action}, {what})
+				Number	modify specific quickfix list props
 setreg({n}, {v} [, {opt}])	Number	set register to value and type
 settabvar({nr}, {varname}, {val}) none	set {varname} in tab page {nr} to {val}
 settabwinvar({tabnr}, {winnr}, {varname}, {val})
@@ -3635,7 +3640,7 @@ complete_check()				*complete_check()*
 
 							*complete_info()*
 complete_info([{what}])
-		Returns a Dictionary with information about Insert mode
+		Returns a |Dictionary| with information about Insert mode
 		completion.  See |ins-completion|.
 		The items are:
 		   mode		Current completion mode name string.
@@ -4862,7 +4867,7 @@ getbufinfo([{dict}])
 		Without an argument information about all the buffers is
 		returned.
 
-		When the argument is a Dictionary only the buffers matching
+		When the argument is a |Dictionary| only the buffers matching
 		the specified criteria are returned.  The following keys can
 		be specified in {dict}:
 			buflisted	include only listed buffers.
@@ -5393,7 +5398,7 @@ getline({lnum} [, {end}])
 <		To get lines from another buffer see |getbufline()|
 
 getloclist({nr} [, {what}])				*getloclist()*
-		Returns a list with all the entries in the location list for
+		Returns a |List| with all the entries in the location list for
 		window {nr}.  {nr} can be the window number or the |window-ID|.
 		When {nr} is zero the current window is used.
 
@@ -5415,6 +5420,14 @@ getloclist({nr} [, {what}])				*getlocli
 					|location-list-file-window| for more
 					details.
 
+		Returns an empty Dictionary if there is no location list for
+		the window {nr} or the window is not present.
+
+		Examples (See also |getqflist-examples|): >
+			:echo getloclist(3, {'all': 0})
+			:echo getloclist(5, {'filewinid': 0})
+
+
 getmarklist([{expr}]					*getmarklist()*
 		Without the {expr} argument returns a |List| with information
 		about all the global marks. |mark|
@@ -5459,7 +5472,7 @@ getmatches([{win}])					*getmatches()*
 			:unlet m
 <
 getmousepos()						*getmousepos()*
-		Returns a Dictionary with the last known position of the
+		Returns a |Dictionary| with the last known position of the
 		mouse.  This can be used in a mapping for a mouse click or in
 		a filter of a popup window.  The items are:
 			screenrow	screen row
@@ -5679,12 +5692,12 @@ getregtype([{regname}])					*getregtype(
 
 gettabinfo([{arg}])					*gettabinfo()*
 		If {arg} is not specified, then information about all the tab
-		pages is returned as a List. Each List item is a Dictionary.
+		pages is returned as a |List|. Each List item is a |Dictionary|.
 		Otherwise, {arg} specifies the tab page number and information
 		about that one is returned.  If the tab page does not exist an
 		empty List is returned.
 
-		Each List item is a Dictionary with the following entries:
+		Each List item is a |Dictionary| with the following entries:
 			tabnr		tab page number.
 			variables	a reference to the dictionary with
 					tabpage-local variables
@@ -5712,7 +5725,7 @@ gettabwinvar({tabnr}, {winnr}, {varname}
 		When {varname} is empty a dictionary with all window-local
 		variables is returned.
 		When {varname} is equal to "&" get the values of all
-		window-local options in a Dictionary.
+		window-local options in a |Dictionary|.
 		Otherwise, when {varname} starts with "&" get the value of a
 		window-local option.
 		Note that {varname} must be the name without "w:".
@@ -5767,16 +5780,16 @@ gettagstack([{nr}])					*gettagstack()*
 			GetWinnr()->gettagstack()
 
 getwininfo([{winid}])					*getwininfo()*
-		Returns information about windows as a List with Dictionaries.
+		Returns information about windows as a |List| with Dictionaries.
 
 		If {winid} is given Information about the window with that ID
-		is returned, as a List with one item.  If the window does not
+		is returned, as a |List| with one item.  If the window does not
 		exist the result is an empty list.
 
 		Without {winid} information about all the windows in all the
 		tab pages is returned.
 
-		Each List item is a Dictionary with the following entries:
+		Each List item is a |Dictionary| with the following entries:
 			botline		last displayed buffer line
 			bufnr		number of buffer in the window
 			height		window height (excluding winbar)
@@ -5804,7 +5817,7 @@ getwininfo([{winid}])					*getwininfo()*
 			GetWinnr()->getwininfo()
 
 getwinpos([{timeout}])					*getwinpos()*
-		The result is a List with two numbers, the result of
+		The result is a |List| with two numbers, the result of
 		|getwinposx()| and |getwinposy()| combined:
 			[x-pos, y-pos]
 		{timeout} can be used to specify how long to wait in msec for
@@ -5859,7 +5872,7 @@ glob({expr} [, {nosuf} [, {list} [, {all
 		'suffixes' affect the ordering of matches.
 		'wildignorecase' always applies.
 
-		When {list} is present and it is |TRUE| the result is a List
+		When {list} is present and it is |TRUE| the result is a |List|
 		with all matching files. The advantage of using a List is,
 		you also get filenames containing newlines correctly.
 		Otherwise the result is a String and when there are several
@@ -5922,7 +5935,7 @@ globpath({path}, {expr} [, {nosuf} [, {l
 		one of the patterns in 'wildignore' will be skipped and
 		'suffixes' affect the ordering of matches.
 
-		When {list} is present and it is |TRUE| the result is a List
+		When {list} is present and it is |TRUE| the result is a |List|
 		with all matching files. The advantage of using a List is, you
 		also get filenames containing newlines correctly. Otherwise
 		the result is a String and when there are several matches,
@@ -7281,7 +7294,7 @@ matchstrpos({expr}, {pat} [, {start} [, 
 
 							*max()*
 max({expr})	Return the maximum value of all items in {expr}.
-		{expr} can be a List or a Dictionary.  For a Dictionary,
+		{expr} can be a |List| or a |Dictionary|.  For a Dictionary,
 		it returns the maximum of all values in the Dictionary.
 		If {expr} is neither a List nor a Dictionary, or one of the
 		items in {expr} cannot be used as a Number this results in
@@ -7352,7 +7365,7 @@ menu_info({name} [, {mode}])				*menu_in
 
 <							*min()*
 min({expr})	Return the minimum value of all items in {expr}.
-		{expr} can be a List or a Dictionary.  For a Dictionary,
+		{expr} can be a |List| or a |Dictionary|.  For a Dictionary,
 		it returns the minimum of all values in the Dictionary.
 		If {expr} is neither a List nor a Dictionary, or one of the
 		items in {expr} cannot be used as a Number this results in
@@ -8014,7 +8027,7 @@ readdirex({directory} [, {expr} [, {dict
 			If {expr} results in 1 then this entry will be added
 			to the list.
 		The entries "." and ".." are always excluded.
-		Each time {expr} is evaluated |v:val| is set to a Dictionary
+		Each time {expr} is evaluated |v:val| is set to a |Dictionary|
 		of the entry.
 		When {expr} is a function the entry is passed as the argument.
 		For example, to get a list of files ending in ".txt": >
@@ -8263,7 +8276,7 @@ remove({list}, {idx} [, {end}])				*remo
 		Without {end}: Remove the item at {idx} from |List| {list} and
 		return the item.
 		With {end}: Remove items from {idx} to {end} (inclusive) and
-		return a List with these items.  When {idx} points to the same
+		return a |List| with these items.  When {idx} points to the same
 		item as {end} a list with one item is returned.  When {end}
 		points to an item before {idx} this is an error.
 		See |list-index| for possible values of {idx} and {end}.
@@ -8400,7 +8413,7 @@ screenchar({row}, {col})					*screenchar
 			GetRow()->screenchar(col)
 
 screenchars({row}, {col})					*screenchars()*
-		The result is a List of Numbers.  The first number is the same
+		The result is a |List| of Numbers.  The first number is the same
 		as what |screenchar()| returns.  Further numbers are
 		composing characters on top of the base character.
 		This is mainly to be used for testing.
@@ -8565,7 +8578,7 @@ searchcount([{options}])					*searchcoun
 		without the "S" flag in 'shortmess'.  This works even if
 		'shortmess' does contain the "S" flag.
 
-		This returns a Dictionary. The dictionary is empty if the
+		This returns a |Dictionary|. The dictionary is empty if the
 		previous pattern was not set and "pattern" was not specified.
 
 		  key		type		meaning ~
@@ -8647,7 +8660,7 @@ searchcount([{options}])					*searchcoun
 			" search again
 			call searchcount()
 <
-		{options} must be a Dictionary. It can contain:
+		{options} must be a |Dictionary|. It can contain:
 		  key		type		meaning ~
 		  recompute	|Boolean|	if |TRUE|, recompute the count
 						like |n| or |N| was executed.
@@ -9186,10 +9199,12 @@ setqflist({list} [, {action} [, {what}]]
 setreg({regname}, {value} [, {options}])
 		Set the register {regname} to {value}.
 		If {regname} is "" or "@", the unnamed register '"' is used.
+
 		{value} may be any value returned by |getreg()| or
 		|getreginfo()|, including a |List| or |Dict|.
 		If {options} contains "a" or {regname} is upper case,
 		then the value is appended.
+
 		{options} can also contain a register type specification:
 		    "c" or "v"	      |characterwise| mode
 		    "l" or "V"	      |linewise| mode
@@ -9220,7 +9235,7 @@ setreg({regname}, {value} [, {options}])
 		register: >
 			:let var_a = getreginfo()
 			:call setreg('a', var_a)
-<		or:
+<		or: >
 			:let var_a = getreg('a', 1, 1)
 			:let var_amode = getregtype('a')
 			    ....
@@ -9697,13 +9712,13 @@ state([{what}])						*state()*
 		something is busy:
 		    m	halfway a mapping, :normal command, feedkeys() or
 			stuffed command
-		    o	operator pending or waiting for a command argument,
-			e.g. after |f|
+		    o	operator pending, e.g. after |d|
 		    a	Insert mode autocomplete active
 		    x	executing an autocommand
 		    w	blocked on waiting, e.g. ch_evalexpr(), ch_read() and
-			ch_readraw() when reading json.
-		    S	not triggering SafeState or SafeStateAgain
+			ch_readraw() when reading json
+		    S	not triggering SafeState or SafeStateAgain, e.g. after
+		    	|f| or a count
 		    c	callback invoked, including timer (repeats for
 			recursiveness up to "ccc")
 		    s	screen has scrolled for messages
@@ -9884,7 +9899,7 @@ string({expr})	Return {expr} converted t
 			List		[item, item]
 			Dictionary	{key: value, key: value}
 
-		When a List or Dictionary has a recursive reference it is
+		When a |List| or |Dictionary| has a recursive reference it is
 		replaced by "[...]" or "{...}".  Using eval() on the result
 		will then fail.
 
@@ -10175,7 +10190,7 @@ synIDtrans({synID})					*synIDtrans()*
 	:echo synID(line("."), col("."), 1)->synIDtrans()->synIDattr("fg")
 
 synconcealed({lnum}, {col})				*synconcealed()*
-		The result is a List with currently three items:
+		The result is a |List| with currently three items:
 		1. The first item in the list is 0 if the character at the
 		   position {lnum} and {col} is not part of a concealable
 		   region, 1 if it is.
@@ -10220,7 +10235,7 @@ synstack({lnum}, {col})					*synstack()*
 
 system({expr} [, {input}])				*system()* *E677*
 		Get the output of the shell command {expr} as a string.  See
-		|systemlist()| to get the output as a List.
+		|systemlist()| to get the output as a |List|.
 
 		When {input} is given and is a string this string is written
 		to a file and passed as stdin to the command.  The string is
@@ -10482,7 +10497,7 @@ timer_info([{id}])
 		returned.
 		When {id} is omitted information about all timers is returned.
 
-		For each timer the information is stored in a Dictionary with
+		For each timer the information is stored in a |Dictionary| with
 		these items:
 		    "id"	    the timer ID
 		    "time"	    time the timer was started with
@@ -10716,7 +10731,7 @@ undotree()						*undotree()*
 				undo blocks.
 
 		The first item in the "entries" list is the oldest undo item.
-		Each List item is a Dictionary with these items:
+		Each List item is a |Dictionary| with these items:
 		  "seq"		Undo sequence number.  Same as what appears in
 				|:undolist|.
 		  "time"	Timestamp when the change happened.  Use
@@ -10928,7 +10943,7 @@ win_splitmove({nr}, {target} [, {options
 
 		Returns zero for success, non-zero for failure.
 
-		{options} is a Dictionary with the following optional entries:
+		{options} is a |Dictionary| with the following optional entries:
 		  "vertical"	When TRUE, the split is created vertically,
 				like with |:vsplit|.
 		  "rightbelow"	When TRUE, the split is made below or to the
@@ -12093,8 +12108,9 @@ An assignment leaves out the `:let` comm
 text...
 text...
 {endmarker}
-			Set internal variable {var-name} to a List containing
-			the lines of text bounded by the string {endmarker}.
+			Set internal variable {var-name} to a |List|
+			containing the lines of text bounded by the string
+			{endmarker}.
 			{endmarker} must not contain white space.
 			{endmarker} cannot start with a lower case character.
 			The last line should end only with the {endmarker}
--- a/runtime/doc/if_lua.txt
+++ b/runtime/doc/if_lua.txt
@@ -1,4 +1,4 @@
-*if_lua.txt*    For Vim version 8.2.  Last change: 2020 May 17
+*if_lua.txt*    For Vim version 8.2.  Last change: 2020 Jun 28
 
 
 		  VIM REFERENCE MANUAL    by Luis Carvalho
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3894,6 +3894,7 @@ E103	diff.txt	/*E103*
 E104	digraph.txt	/*E104*
 E1042	vim9.txt	/*E1042*
 E105	mbyte.txt	/*E105*
+E1050	vim9.txt	/*E1050*
 E107	eval.txt	/*E107*
 E108	eval.txt	/*E108*
 E109	eval.txt	/*E109*
@@ -10002,6 +10003,7 @@ vim9-declaration	vim9.txt	/*vim9-declara
 vim9-declarations	usr_46.txt	/*vim9-declarations*
 vim9-differences	vim9.txt	/*vim9-differences*
 vim9-export	vim9.txt	/*vim9-export*
+vim9-gotchas	vim9.txt	/*vim9-gotchas*
 vim9-import	vim9.txt	/*vim9-import*
 vim9-rationale	vim9.txt	/*vim9-rationale*
 vim9-scopes	vim9.txt	/*vim9-scopes*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2020 Jun 21
+*todo.txt*      For Vim version 8.2.  Last change: 2020 Jun 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -40,12 +40,31 @@ browser use: https://github.com/vim/vim/
 
 Include src/po/vim.pot ?
 
-See if resizing a terminal can be fixed.
-
 Vim9 script:
+- line continuation at script level:
+    eval_to_string_skip(), test with :throw
+    eval1_emsg(), pass "eap", test with :execute, :echomsg, :echoerr
+    handle_subscript() - call_func_rettv() - get_func_tv()
+	func(
+	    args arg)
+    callers of get_func_tv():
+	eval_func()
+	ex_call()
+    function arguments, test assert_equal() with lambda, test :function
+    :import:
+    others
+	eval_index()
+- test:
+	[1,
+	 2,
+	 3]->Func()
+
 Making everything work:
+- "nr += 4"  gives "already defined" error.
 - Error for "g:var: string = 'value'" 
 - Make func()->append('$') work - value is last argument, not first. #6305
+- in Vim9 script expressions are evaluated differently, not using a type.
+  e.g. "'' == 0" does not give an error and evaluates to true.
 - possible memory leak in test_vim9_func through compile_nested_function.
 - memory leaks in test_vim9_expr
 - memory leaks in test_vim9_script
@@ -134,12 +153,6 @@ Further improvements:
 - compile "expr" and "call" expression of a channel in channel_exe_cmd()?
 
 Popup windows:
-- With some sequence get get hidden finished terminal buffer. (#5768)
-    Cannot close popup terminal (#5744)
-    Buffer can't be wiped, gets status "aF". (#5764)
-    Is buf->nwindows incorrect?
-- popup_clear() and popup_close() should close the terminal popup, and
-   make the buffer hidden. #5745
 - Cursor not updated before a redraw, making it jump. (#5943)
 - With terminal in popup, allow for popup_hide() to temporarily hide it.?
 - Fire some autocommand event after a new popup window was created and
@@ -274,6 +287,13 @@ The buffer list and windows are locked, 
 How about removing Atari MiNT support?
     src/Make_mint.mak, src/os_mint.h, matches with __MINT__
 
+Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
+    replace this:
+	let left = GetLeftFunc()
+	let right = GetRightFunc()
+	let res = left < right ? lower : left == right ? equal : upper
+    by:
+	let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper
 Patch to make :q work with local arglist. (Christian Brabandt, #6286)
 
 Patch to fix drawing error with DirectX. (James Grant, #5688)
@@ -495,9 +515,6 @@ window 2.  User expects 10 to be added t
 Would be nice to set tab-local values for 'diffexpr' and 'diffopt'.  Use
 t:diffexpr_option t:diffopt_option? (#4782)
 
-v:register isn't reset early enough, may be used by next command.
-(Andy Massimino, #5294, possible fix in #5305)
-
 Internal diff doesn't handle binary file like external diff does. (Mike
 Williams, 2018 Oct 30)
 
@@ -580,9 +597,6 @@ buffer didn't change at all.
 Line numbers in profile are off when function was defined with ":execute".
 (Daniel Hahler, #4511)
 
-Add a way to create an empty, hidden buffer.  Like doing ":new|hide".
-":let buf = bufcreate('name')
-
 Session file contains absolute paths when "curdir" is removed form
 'sessionoptions', making it impossible to have a session with a relative path.
 (#4450)
@@ -1199,8 +1213,8 @@ Make a function to check for function-li
 Screen updated delayed when using CTRL-O u in Insert mode.
 (Barlik, #1191)  Perhaps because status message?
 
-Implement named arguments for functions:
-    func Foo(start, count = 1 all = 1)
+Implement named arguments for functions with optional arguments:
+    func Foo(start, count = 1, all = 1)
     call Foo(12, all = 0)
 
 Add a command to take a range of lines, filter them and put the output
@@ -1393,8 +1407,6 @@ Did maintainer reply?
 ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
 Also with latest version.
 
-Cannot delete a file with square brackets with delete(). (#696)
-
 Completion for input() does not expand environment variables. (chdiza, 2016
 Jul 25, #948)
 
@@ -1403,8 +1415,6 @@ names, shell commands and the like.  (Ki
 Assume the system converts between the actual encoding of the filesystem to
 the system encoding (usually utf-8).
 
-'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9)
-
 MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
 Otherwise task flickers in taskbar.
 
@@ -1416,8 +1426,6 @@ Have a way to get the call stack, in a f
 Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
 times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
 
-Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806)
-
 Filetype plugin for awk. (Doug Kearns, 2016 Sep 5)
 
 Patch to improve map documentation. Issue #799.
@@ -1436,8 +1444,6 @@ Reject the value? #710.
 When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
 Because of using the initial buffer? (Dun Peal, 2016 May 12)
 
-Add redrawtabline command. (Naruhiko Nishino, 2016 Jun 11)
-
 Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
 No test, needs some work to include.
 
@@ -1507,20 +1513,10 @@ 2016 Apr 25, #780)
 Patch to avoid redrawing tabline when the popup menu is visible.
 (Christian Brabandt, 2016 Jan 28)
 
-Patch to show search statistics. (Christian Brabandt, 2016 Jul 22)
-
 When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
 restore the mode properly. (Andrew Stewart, 2016 Apr 20)
 Do not trigger the event?
 
-Using ":windo" to set options in all windows has the side effect that it
-changes the window layout and the current window.  Make a variant that saves
-and restores.  Use in the matchparen plugin.
-Perhaps we can use ":windo <restore> {cmd}"?
-Patch to add <restore> to :windo, :bufdo, etc. (Christian Brabandt, 2015 Jan
-6, 2nd message)
-Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}".
-
 Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013)
 Update suggested by Yasuhiro Matsumoto, 2014 Nov 25:
 https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
@@ -1549,10 +1545,6 @@ Python: ":py raw_input('prompt')" doesn'
 
 Comparing nested structures with "==" uses a different comparator than when
 comparing individual items.
-Also, "'' == 0" evaluates to true, which isn't nice.
-Add "===" to have a strict comparison (type and value match).
-Add "==*" (?) to have a value match, but no automatic conversion, and v:true
-equals 1 and 1.0, v:false equals 0 and 0.0.?
 
 Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
 
@@ -1723,8 +1715,6 @@ arguments.
 
 Problem with transparent and matchgroup.  Issue #475
 
-Patch to add :arglocal and :arglists. (Marcin Szamotulski, 2014 Aug 6)
-
 Spell files use a latin single quote. Unicode also has another single quote:
 0x2019.  (Ron Aaron, 2014 Apr 4)
 New OpenOffice spell files support this with ICONV.  But they are not
@@ -1751,8 +1741,11 @@ from?
 Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
 2014 Jun 8)
 
-Include a plugin manager with Vim? Neobundle seems to be the best currently.
+Include a plugin manager with Vim? vim-plug seems to be the best currently:
+https://github.com/junegunn/vim-plug.
 Also Vundle: https://github.com/gmarik/vundle
+Or minpac: https://github.com/k-takata/minpac, since it leverages the builtin
+package feature.
 Long message about this from ZyX, 2014 Mar 23.  And following replies.
 Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
 User view:
@@ -1807,6 +1800,7 @@ instead. (Samuel Ferencik, 2013 Sep 28)
 
 Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4)
 Remark on the docs.  Should not be a compile time feature.  But then what?
+Also see #2034.
 
 Completion of ":e" is ":earlier", should be ":edit".  Complete to the matching
 command instead of doing this alphabetically. (Mikel Jorgensen)
@@ -1868,6 +1862,10 @@ Patch to add {lhs} to :mapclear: clear a
 
 Exception caused by argument of return is not caught by try/catch.
 (David Barnett, 2013 Nov 19)
+Bug in try/catch: return with invalid compare throws error that isn't caught.
+(ZyX, 2011 Jan 26)
+try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
+try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
 
 Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt,
 2013 Mar 19, later message)
@@ -1903,6 +1901,8 @@ process that is running.  It might actua
 a reboot.
 
 patch to add "combine" flag to  syntax commands. (so8res, 2012 Dec 6)
+Patch to add "combine" to :syntax, combines highlight attributes. (Nate
+Soares, 2012 Dec 3)
 
 Syntax update problem in one buffer opened in two windows, bottom window is
 not correctly updated. (Paul Harris, 2012 Feb 27)
@@ -2090,9 +2090,6 @@ doesn't jump to the correct line with :c
 
 Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19)
 
-Bug in try/catch: return with invalid compare throws error that isn't caught.
-(ZyX, 2011 Jan 26)
-
 When setting a local option value from the global value, add a script ID that
 indicates this, so that ":verbose set" can give a hint.  Check with options in
 the help file.
@@ -2281,9 +2278,6 @@ Add local time at start of --startuptime
 Requires configure check for localtime().
 Use format year-month-day hr:min:sec.
 
-Patch to add "combine" to :syntax, combines highlight attributes. (Nate
-Soares, 2012 Dec 3)
-
 Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4)
 
 Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
@@ -2478,6 +2472,9 @@ Sergey Khorev)
 
 Consider making YankRing or something else that keeps a list of yanked text
 part of standard Vim.  The "1 to "9 registers are not sufficient.
+6   When yanking into the unnamed registers several times, somehow make the
+    previous contents also available (like it's done for deleting).  What
+    register names to use?  g"1, g"2, etc.?
 
 After doing "su" $HOME can be the old user's home, thus ~root/file is not
 correct.  Don't use it in the swap file.
@@ -2684,10 +2681,6 @@ 1)
 In the swapfile dialog, add a H(elp) option that gives more info about what
 each choice does.  Similar to  ":help swap-exists-choices"
 
-try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
-
-try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
-
 ":tab help" always opens a new tab, while ":help" re-uses an existing window.
 Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
 
@@ -3257,7 +3250,7 @@ 8   The quickfix file is read without co
     ":grep" and ":helpgrep".
     More generic solution: support a filter (e.g., by calling a function).
 7   Add a command that goes back to the position from before jumping to the
-    first quickfix location.  ":cbefore"?
+    first quickfix location.
 
 Vi incompatibility:
 -   Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7)
@@ -3294,7 +3287,6 @@ 7   The ":undo" command works differentl
 7   The ":map" command output overwrites the command.  Perhaps it should keep
     the ":map" when it's used without arguments?
 7   CTRL-L is not the end of a section?  It is for Posix!  Make it an option.
-7   Implement 'prompt' option.	Init to off when stdin is not a tty.
 7   Add a way to send an email for a crashed edit session.  Create a file when
     making changes (containing name of the swap file), delete it when writing
     the file.  Supply a program that can check for crashed sessions (either
@@ -3472,8 +3464,6 @@ 9   When running an external program, it
     Solaris 2.6. (Marley)
 9   On Solaris: Using a "-geometry" argument, bigger than the window where Vim
     is started from, causes empty lines below the cmdline. (raf)
-8   X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key
-    should not be used to trigger a menu (like the Win32 version).
 8   When setting 'langmenu', it should be effective immediately.  Store both
     the English and the translated text in the menu structure.  Re-generate
     the translation when 'langmenu' has changed.
@@ -3512,10 +3502,6 @@ 8   X11: When the window size is reduced
     When the "+0+0" is omitted it works.
 8   When starting an external command, and 'guipty' set, BS and DEL are mixed
     up.  Set erase character somehow?
-8   A dead circumflex followed by a space should give the '^' character
-    (Rommel).  Look how xterm does this.
-    Also: Bednar has some code for dead key handling.
-    Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya)
 8   The compose key doesn't work properly (Cepas).  Both for Win32 and X11.
 7   The cursor in an inactive window should be hollow.  Currently it's not
     visible.
@@ -3612,17 +3598,8 @@ 9   In mac_expandpath() check that handl
 
 
 "Small" problems:
--   Can't disable terminal flow control, to enable the use of CTRL-S and
-    CTRL-Q.  Add an option for it?
 -   When using e_secure in do_one_cmd() mention the command being executed,
     otherwise it's not clear where it comes from.
--   When the quickfix window is open and executing ":echo 'hello'" using the
-    Command-line window, the text is immediately removed by the redrawing.
-    (Michael Henry, 2008 Nov 1)
-    Generic solution: When redrawing while there is a message on the
-    cmdline, don't erase the display but draw over the existing text.
-    Other solution, redraw after closing the cmdline window, before executing
-    the command.
 9   For Turkish vim_tolower() and vim_toupper() also need to use utf_
     functions for characters below 0x80. (Sertacyildiz)
 9   When the last edited file is a help file, using '0 in a new Vim doesn't
@@ -4082,8 +4059,6 @@ Spell checking:
 -   Considering Hunspell 1.1.4:
     What does MAXNGRAMSUGS do?
     Is COMPLEXPREFIXES necessary when we have flags for affixes?
--   Support spelling words in CamelCase as if they were two separate words.
-    Requires some option to enable it. (Timothy Knox)
 -   There is no Finnish spell checking file.  For openoffice Voikko is now
     used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
     (Teemu Likonen)
@@ -4458,8 +4433,6 @@ 8   Make the filename and line number av
 7   Execute a function with standard option values.  No need to save and
     restore option values.  Especially useful for new options.  Problem: how
     to avoid a performance penalty (esp. for string options)?
-8   Add referring to key options with "&t_xx".  Both for "echo &t_xx" and
-    ":let &t_xx =".  Useful for making portable mappings.
 -   range for ":exec", pass it on to the executed command.  (Webb)
 8   ":{range}source": source the lines from the current file.
 	You can already yank lines and use :@" to execute them.
@@ -4690,8 +4663,6 @@ 8   Use 'report' for ":bdel"?  (Krishna)
 -   Delete message after new command has been entered and have waited for key.
     Perhaps after ten seconds?
 -   Make message history available in "msg" variables: msg1, msg2, .. msg9.
-8   When reading from stdin allow suppressing the "reading from stdin"
-    message.
 9   Check handling of overwriting of messages and delays:
     Very wrong: errors while redrawing cause endless loop.
     When switching to another file and screen scrolls because of the long
@@ -5979,9 +5950,6 @@ 8   Don't display empty registers with "
 8   Add put command that overwrites existing text.  Should also work for
     blocks.  Useful to move text around in a table.  Works like using "R ^R r"
     for every line.
-6   When yanking into the unnamed registers several times, somehow make the
-    previous contents also available (like it's done for deleting).  What
-    register names to use?  g"1, g"2, etc.?
 -   When appending to a register, also report the total resulting number of
     lines.  Or just say "99 more lines yanked", add the "more".
 -   When inserting a register in Insert mode with CTRL-R, don't insert comment
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2020 Jun 22
+*vim9.txt*	For Vim version 8.2.  Last change: 2020 Jun 24
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -378,6 +378,49 @@ string. >
 In Vim9 script one can use "true" for v:true and "false" for v:false.
 
 
+What to watch out for ~
+							*vim9-gotchas*
+Vim9 was designed to be closer to often used programming languages, but at the
+same time tries to support the legacy Vim commands.  Some compromises had to
+be made.  Here is a summary of what might be unexpected.
+
+Ex command ranges need to be prefixed with a colon. >
+  	->		" legacy Vim: shifts the previous line to the right
+	->func()	" Vim9: method call
+	:->		" Vim9: shifts the previous line to the right
+
+	%s/a/b		" legacy Vim: substitute on all lines
+	x = alongname
+	     % another	" Vim9: line continuation without a backslash
+	:%s/a/b		" Vim9: substitute on all lines
+
+Functions defined with `:def` compile the whole function.  Legacy functions
+can bail out, and the following lines are not parsed: >
+	func Maybe()
+	  if !has('feature')
+	    return
+	  endif
+	  use-feature
+	endfunc
+Vim9 functions are compiled as a whole: >
+	def Maybe()
+	  if !has('feature')
+	    return
+	  endif
+	  use-feature  " May give compilation error
+	enddef
+For a workaround, split it in two functions: >
+	func Maybe()
+	  if has('feature')
+	    call MaybyInner()
+	  endif
+	endfunc
+	if has('feature')
+	  def MaybeInner()
+	    use-feature
+	  enddef
+	endif
+
 ==============================================================================
 
 3. New style functions					*fast-functions*
--- 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:	2020 Jun 15
+" Last Change:	2020 Jun 25
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
--- a/runtime/syntax/neomuttrc.vim
+++ b/runtime/syntax/neomuttrc.vim
@@ -2,10 +2,10 @@
 " Language:	NeoMutt setup files
 " Maintainer:	Richard Russon <rich@flatcap.org>
 " Previous Maintainer:	Guillaume Brogi <gui-gui@netcourrier.com>
-" Last Change:	2019-11-18
+" Last Change:	2020-06-21
 " Original version based on syntax/muttrc.vim
 
-" This file covers NeoMutt 2019-11-02
+" This file covers NeoMutt 2020-06-19
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -19,23 +19,22 @@ set cpo&vim
 setlocal isk=@,48-57,_,-
 
 " handling optional variables
-syntax match muttrcComment		"^# .*$" contains=@Spell
-syntax match muttrcComment		"^#[^ ].*$"
-syntax match muttrcComment		"^#$"
-syntax match muttrcComment		"[^\\]#.*$"lc=1
+syntax match muttrcComment	"^# .*$" contains=@Spell
+syntax match muttrcComment	"^#[^ ].*$"
+syntax match muttrcComment	"^#$"
+syntax match muttrcComment	"[^\\]#.*$"lc=1
 
 " Escape sequences (back-tick and pipe goes here too)
-syntax match muttrcEscape		+\\[#tnr"'Cc ]+
-syntax match muttrcEscape		+[`|]+
-syntax match muttrcEscape		+\\$+
+syntax match muttrcEscape	+\\[#tnr"'Cc ]+
+syntax match muttrcEscape	+[`|]+
+syntax match muttrcEscape	+\\$+
 
 " The variables takes the following arguments
-"syn match  muttrcString		contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape
-syntax region muttrcString		contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
-syntax region muttrcString		contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
+syntax region muttrcString	contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
+syntax region muttrcString	contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
 syntax match muttrcStringNL	contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL
 
-syntax region muttrcShellString	matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand,muttrcVarDeprecatedStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad
+syntax region muttrcShellString	matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand
 
 syntax match  muttrcRXChars	contained /[^\\][][.*?+]\+/hs=s+1
 syntax match  muttrcRXChars	contained /[][|()][.*?+]*/
@@ -45,54 +44,53 @@ syntax match  muttrcRXChars	contained /\
 " Why does muttrcRXString2 work with one \ when muttrcRXString requires two?
 syntax region muttrcRXString	contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
 syntax region muttrcRXString	contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
-syntax region muttrcRXString	contained skipwhite start=+[^ 	"'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
+syntax region muttrcRXString	contained skipwhite start=+[^	 "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
 " For some reason, skip refuses to match backslashes here...
 syntax region muttrcRXString	contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars
 syntax region muttrcRXString	contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars
 syntax region muttrcRXString2	contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
 syntax region muttrcRXString2	contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
 
-" these must be kept synchronized with muttrcRXString, but are intended for
-" muttrcRXHooks
+" these must be kept synchronized with muttrcRXString, but are intended for muttrcRXHooks
 syntax region muttrcRXHookString	contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
 syntax region muttrcRXHookString	contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
-syntax region muttrcRXHookString	contained keepend skipwhite start=+[^ 	"'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syntax region muttrcRXHookString	contained keepend skipwhite start=+[^	 "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
 syntax region muttrcRXHookString	contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
 syntax region muttrcRXHookString	contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
-syntax match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+syntax match muttrcRXHookStringNL	contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
 
 " these are exclusively for args lists (e.g. -rx pat pat pat ...)
-syntax region muttrcRXPat		contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
-syntax region muttrcRXPat		contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
-syntax match muttrcRXPat		contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
-syntax match muttrcRXDef 		contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
+syntax region muttrcRXPat	contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syntax region muttrcRXPat	contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syntax match muttrcRXPat	contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
+syntax match muttrcRXDef	contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
 
-syntax match muttrcSpecial		+\(['"]\)!\1+
+syntax match muttrcSpecial	+\(['"]\)!\1+
 
-syntax match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcString
-syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcString
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 " Now catch some email addresses and headers (purified version from mail.vim)
-syntax match muttrcEmail		"[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
-syntax match muttrcHeader		"\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
+syntax match muttrcEmail	"[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
+syntax match muttrcHeader	"\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\="
 
 syntax match   muttrcKeySpecial	contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+
-syntax match   muttrcKey		contained "\S\+"			contains=muttrcKeySpecial,muttrcKeyName
-syntax region  muttrcKey		contained start=+"+ skip=+\\\\\|\\"+ end=+"+	contains=muttrcKeySpecial,muttrcKeyName
-syntax region  muttrcKey		contained start=+'+ skip=+\\\\\|\\'+ end=+'+	contains=muttrcKeySpecial,muttrcKeyName
+syntax match   muttrcKey	contained "\S\+"			contains=muttrcKeySpecial,muttrcKeyName
+syntax region  muttrcKey	contained start=+"+ skip=+\\\\\|\\"+ end=+"+	contains=muttrcKeySpecial,muttrcKeyName
+syntax region  muttrcKey	contained start=+'+ skip=+\\\\\|\\'+ end=+'+	contains=muttrcKeySpecial,muttrcKeyName
 syntax match   muttrcKeyName	contained "\\[trne]"
 syntax match   muttrcKeyName	contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|Next\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>"
 syntax match   muttrcKeyName	contained "\c<F\d\+>"
@@ -103,90 +101,84 @@ syntax match muttrcStrftimeEscapes conta
 syntax match muttrcStrftimeEscapes contained /%E[cCxXyY]/
 syntax match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/
 
-syntax region muttrcIndexFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcIndexFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcGroupIndexFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcGroupIndexFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSidebarFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSidebarFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAliasFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAliasFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAttachFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcAttachFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcComposeFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcComposeFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcFolderFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcFolderFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcMixFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcMixFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPCmdFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPCmdFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStatusFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStatusFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPGetKeysFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcPGPGetKeysFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSmimeFormatStr	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcSmimeFormatStr	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax region muttrcAliasFormatStr      contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcAliasFormatConditionals,muttrcFormatErrors                             nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAliasFormatStr      contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcAliasFormatConditionals,muttrcFormatErrors                             nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAttachFormatStr     contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors                           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcAttachFormatStr     contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors                           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcComposeFormatStr    contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcComposeFormatConditionals,muttrcFormatErrors                         nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcComposeFormatStr    contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcComposeFormatConditionals,muttrcFormatErrors                         nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcFolderFormatStr     contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors                           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcFolderFormatStr     contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors                           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcIndexFormatStr      contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcIndexFormatStr      contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcMixFormatStr        contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors                                 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcMixFormatStr        contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors                                 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPCmdFormatStr     contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors            nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPCmdFormatStr     contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors            nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPFormatStr        contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes            nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcPGPFormatStr        contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes            nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcQueryFormatStr      contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors                             nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcQueryFormatStr      contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors                             nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSidebarFormatStr    contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes       nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSidebarFormatStr    contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes       nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSmimeFormatStr      contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors              nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcSmimeFormatStr      contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors              nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStatusFormatStr     contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors                           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStatusFormatStr     contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors                           nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStrftimeFormatStr   contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors                                                              nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax region muttrcStrftimeFormatStr   contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors                                                              nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 " Format escapes and conditionals
 syntax match muttrcFormatConditionals2 contained /[^?]*?/
-function! s:escapesConditionals(baseName, sequence, alignment, secondary)
+function! s:escapesConditionals(baseName, sequence, padding, conditional)
 	exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?\%(' . a:sequence . '\|%\)/'
-	if a:alignment
+	if a:padding
 		exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%[>|*]./'
 	endif
-	if a:secondary
+	if a:conditional
 		exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/ nextgroup=muttrcFormatConditionals2'
 	else
 		exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/'
 	endif
 endfunction
 
-" CHECKED 2019-11-18
-" Ref: index_format_str() in hdrline.c
-call s:escapesConditionals('IndexFormat', '[AaBbCDdEeFfgHIiJKLlMmNnOPqRrSsTtuvWXxYyZ(<[{]\|G[a-zA-Z]\+\|Fp\=\|z[cst]\|cr\=', 1, 1)
-" Ref: alias_format_str() in addrbook.c
-syntax match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/
-" Ref: group_index_format_str() in browser.c
-call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1)
-" Ref: sidebar_format_str() in sidebar.c
-call s:escapesConditionals('SidebarFormat', '[!BDdFLNnSt]', 1, 1)
-" Ref: query_format_str() in query.c
-call s:escapesConditionals('QueryFormat', '[acent]', 0, 1)
+" CHECKED 2020-06-21
+" Ref: alias_format_str() in alias/dlgalias.c
+call s:escapesConditionals('AliasFormat', '[acfnrt]', 1, 0)
 " Ref: attach_format_str() in recvattach.c
 call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1)
 " Ref: compose_format_str() in compose.c
-syntax match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/
-syntax match muttrcComposeFormatEscapes contained /%[>|*]./
+call s:escapesConditionals('ComposeFormat', '[ahlv]', 1, 1)
 " Ref: folder_format_str() in browser.c
 call s:escapesConditionals('FolderFormat', '[CDdFfgilmNnstu]', 1, 0)
+" Ref: group_index_format_str() in browser.c
+call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1)
+" Ref: index_format_str() in hdrline.c
+call s:escapesConditionals('IndexFormat', '[AaBbCDdEefgHIiJKLlMmNnOPqRrSsTtuvWXxYyZ(<[{]\|@\i\+@\|G[a-zA-Z]\+\|Fp\=\|z[cst]\|cr\=', 1, 1)
 " Ref: mix_format_str() in remailer.c
-call s:escapesConditionals('MixFormat', '[acns]', 0, 0)
+call s:escapesConditionals('MixFormat', '[acns]', 1, 0)
+" Ref: pgp_command_format_str() in ncrypt/pgpinvoke.c
+call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
+" Ref: crypt_format_str() in ncrypt/crypt_gpgme.c
+" Ref: pgp_entry_format_str() in ncrypt/pgpkey.c
+" Note: crypt_format_str() supports 'p', but pgp_entry_fmt() does not
+call s:escapesConditionals('PGPFormat', '[AaCcFfKkLlnptu[]', 0, 0)
+" Ref: query_format_str() in alias/dlgquery.c
+call s:escapesConditionals('QueryFormat', '[acent]', 1, 1)
+" Ref: sidebar_format_str() in sidebar.c
+call s:escapesConditionals('SidebarFormat', '[!BDdFLNnorStZ]', 1, 1)
+" Ref: smime_command_format_str() in ncrypt/smime.c
+call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1)
 " Ref: status_format_str() in status.c
 call s:escapesConditionals('StatusFormat', '[bDdFfhLlMmnoPpRrSstuVv]', 1, 1)
-" Ref: fmt_smime_command() in ncrypt/smime.c
-call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1)
-" Ref: crypt_format_str() in ncrypt/crypt_gpgme.c
-" Ref: pgp_entry_fmt() in ncrypt/pgpkey.c
-" Note: crypt_format_str() supports 'p', but pgp_entry_fmt() does not
-call s:escapesConditionals('PGPFormat', '[AaCcFfKkLlnptu[]', 0, 0)
-" Ref: fmt_pgp_command() ncrypt/pgpinvoke.c
-call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1)
 
-" This matches the documentation, but directly contradicts the code
-" (according to the code, this should be identical to the muttrcPGPCmdFormatEscapes
-syntax match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acfklntu[%]/
-
-syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes
-syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
-syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes
-syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
 syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes    contained start=+%(+  end=+)+  contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes    contained start=+%<+  end=+>+  contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes    contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
+syntax region muttrcTimeEscapes    contained start=+%{+  end=+}+  contains=muttrcStrftimeEscapes
 
 syntax match muttrcVarEqualsAliasFmt      contained skipwhite "=" nextgroup=muttrcAliasFormatStr
 syntax match muttrcVarEqualsAttachFmt     contained skipwhite "=" nextgroup=muttrcAttachFormatStr
@@ -197,29 +189,20 @@ syntax match muttrcVarEqualsIdxFmt      
 syntax match muttrcVarEqualsMixFmt        contained skipwhite "=" nextgroup=muttrcMixFormatStr
 syntax match muttrcVarEqualsPGPCmdFmt     contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
 syntax match muttrcVarEqualsPGPFmt        contained skipwhite "=" nextgroup=muttrcPGPFormatStr
-syntax match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr
 syntax match muttrcVarEqualsQueryFmt      contained skipwhite "=" nextgroup=muttrcQueryFormatStr
 syntax match muttrcVarEqualsSdbFmt        contained skipwhite "=" nextgroup=muttrcSidebarFormatStr
 syntax match muttrcVarEqualsSmimeFmt      contained skipwhite "=" nextgroup=muttrcSmimeFormatStr
 syntax match muttrcVarEqualsStatusFmt     contained skipwhite "=" nextgroup=muttrcStatusFormatStr
 syntax match muttrcVarEqualsStrftimeFmt   contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr
 
-syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " List of the different screens in mutt (see Menus in keymap.c)
 syntax keyword muttrcMenu contained alias attach browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime
 syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu
 syntax match muttrcMenuCommas /,/ contained
 
-" CHECKED 2019-11-02
-" List of hooks in Commands in init.h
-syntax keyword muttrcHooks contained skipwhite
-			\ account-hook append-hook close-hook crypt-hook fcc-hook fcc-save-hook
-			\ folder-hook iconv-hook index-format-hook mbox-hook message-hook open-hook pgp-hook
-			\ reply-hook save-hook send-hook send2-hook
-syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand
-
 syntax region muttrcSpamPattern	contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
 syntax region muttrcSpamPattern	contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
 
@@ -251,15 +234,19 @@ syntax match muttrcEscapedVariable	conta
 syntax match muttrcBadAction	contained "[^<>]\+" contains=muttrcEmail
 syntax match muttrcAction		contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName
 
+" CHECKED 2020-06-21
 " First, functions that take regular expressions:
 syntax match  muttrcRXHookNot	contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL
 syntax match  muttrcRXHooks	/\<\%(account\|append\|close\|crypt\|folder\|mbox\|open\|pgp\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL
 
 " Now, functions that take patterns
 syntax match muttrcPatHookNot	contained /!\s*/ skipwhite nextgroup=muttrcPattern
-syntax match muttrcPatHooks	/\<\%(charset\|iconv\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
+syntax match muttrcPatHooks	/\<\%(charset\|iconv\|index-format\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
 syntax match muttrcPatHooks	/\<\%(message\|reply\|send\|send2\|save\|fcc\|fcc-save\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern
 
+" Global hooks that take a command
+syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand
+
 syntax match muttrcBindFunction	contained /\S\+\>/ skipwhite contains=muttrcFunction
 syntax match muttrcBindFunctionNL	contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL
 syntax match muttrcBindKey		contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL
@@ -272,8 +259,8 @@ syntax region muttrcMacroDescr	contained
 syntax region muttrcMacroDescr	contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s
 syntax match muttrcMacroDescrNL	contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
 syntax region muttrcMacroBody	contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
-syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
-syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody	matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syntax region muttrcMacroBody	matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"+ end=+"\|\%(\%(\\\\\)\@<!$\)+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcSpam,muttrcNoSpam,muttrcCommand,muttrcAction,muttrcVariable nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
 syntax match muttrcMacroBodyNL	contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroBody,muttrcMacroBodyNL
 syntax match muttrcMacroKey	contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcMacroBody,muttrcMacroBodyNL
 syntax match muttrcMacroKeyNL	contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroKey,muttrcMacroKeyNL
@@ -283,7 +270,7 @@ syntax match muttrcMacroMenuListNL	conta
 syntax match muttrcAddrContent	contained "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+\s*" skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
 syntax region muttrcAddrContent	contained start=+'+ end=+'\s*+ skip=+\\'+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
 syntax region muttrcAddrContent	contained start=+"+ end=+"\s*+ skip=+\\"+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
-syntax match muttrcAddrDef 	contained "-addr\s\+" skipwhite nextgroup=muttrcAddrContent
+syntax match muttrcAddrDef	contained "-addr\s\+" skipwhite nextgroup=muttrcAddrContent
 
 syntax match muttrcGroupFlag	contained "-group"
 syntax region muttrcGroupDef	contained start="-group\s\+" skip="\\$" end="\s" skipwhite keepend contains=muttrcGroupFlag,muttrcUnHighlightSpace
@@ -308,20 +295,29 @@ syntax match muttrcAliasNL		contained /\
 syntax match muttrcUnAliasKey	contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
 syntax match muttrcUnAliasNL	contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
 
-syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]"
+" CHECKED 2020-06-21
+" List of letters in Flags in pattern.c
+" Parameter: none
+syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFGgklNOPpQRSTuUvV#$=]"
+" Parameter: range
 syntax match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)"
+" Parameter: date
 syntax match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable
-syntax match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer
+" Parameter: regex
+syntax match muttrcSimplePat contained "!\?\^\?[~][BbCcefHhIiLMstwxYy]\s*" nextgroup=muttrcSimplePatRXContainer
+" Parameter: pattern
 syntax match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
+" Parameter: pattern
 syntax match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
 syntax region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat
+
 "syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString
 syntax region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+
 syntax region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+
-syntax region muttrcSimplePatString contained keepend start=+[^ 	"']+ skip=+\\ + end=+\s+re=e-1
+syntax region muttrcSimplePatString contained keepend start=+[^	 "']+ skip=+\\ + end=+\s+re=e-1
 syntax region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString
 syntax region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString
-syntax region muttrcSimplePatRXContainer contained keepend start=+[^ 	"']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
+syntax region muttrcSimplePatRXContainer contained keepend start=+[^	 "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
 syntax match muttrcSimplePatMetas contained /[(|)]/
 
 syntax match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas
@@ -350,12 +346,12 @@ syntax keyword muttrcColor	contained bri
 syntax match   muttrcColor	contained "\<\%(bright\)\=color\d\{1,3}\>"
 " Now for the structure of the color line
 syntax match muttrcColorRXNL	contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL
-syntax match muttrcColorBG 	contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
+syntax match muttrcColorBG	contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL
 syntax match muttrcColorBGNL	contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL
-syntax match muttrcColorFG 	contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
+syntax match muttrcColorFG	contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL
 syntax match muttrcColorFGNL	contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL
-syntax match muttrcColorContext 	contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace,muttrcColorCompose nextgroup=muttrcColorFG,muttrcColorFGNL
-syntax match muttrcColorNL 	contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
+syntax match muttrcColorContext	contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace,muttrcColorCompose nextgroup=muttrcColorFG,muttrcColorFGNL
+syntax match muttrcColorNL	contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
 syntax match muttrcColorKeyword	contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose
 " And now color's brother:
 syntax region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
@@ -373,25 +369,25 @@ syntax keyword muttrcMonoAttrib	containe
 syntax keyword muttrcMono	contained mono		skipwhite nextgroup=muttrcColorField,muttrcColorCompose
 syntax match   muttrcMonoLine	"^\s*mono\s\+\S\+"	skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " List of fields in Fields in color.c
 syntax keyword muttrcColorField skipwhite contained
-			\ attachment attach_headers body bold error hdrdefault header index
-			\ index_author index_collapsed index_date index_flags index_label
-			\ index_number index_size index_subject index_tag index_tags indicator
-			\ markers message normal options progress prompt quoted search sidebar_divider
-			\ sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new
-			\ sidebar_ordinary sidebar_spoolfile sidebar_unread signature status tilde tree
-			\ underline warning nextgroup=muttrcColor
+	\ attachment attach_headers body bold error hdrdefault header index index_author
+	\ index_collapsed index_date index_flags index_label index_number index_size index_subject
+	\ index_tag index_tags indicator markers message normal options progress prompt quoted
+	\ search sidebar_divider sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new
+	\ sidebar_ordinary sidebar_spoolfile sidebar_unread signature status tilde tree underline
+	\ warning nextgroup=muttrcColor
+
 syntax match   muttrcColorField	contained "\<quoted\d\=\>"
 
 syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " List of fields in ComposeFields in color.c
 syntax keyword muttrcColorComposeField skipwhite contained
-			\ header security_both security_encrypt security_none security_sign
-			\ nextgroup=muttrcColorFG,muttrcColorFGNL
+	\ header security_both security_encrypt security_none security_sign
+	\ nextgroup=muttrcColorFG,muttrcColorFGNL
 syntax region muttrcColorLine keepend start=/^\s*color\s\+/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
 
 function! s:boolQuadGen(type, vars, deprecated)
@@ -403,673 +399,459 @@ function! s:boolQuadGen(type, vars, depr
 	let l:orig_type = copy(a:type)
 	if a:deprecated
 		let l:type = 'Deprecated' . a:type
+		exec 'syntax keyword muttrcVar' . l:type . ' ' . join(a:vars)
+		exec 'syntax keyword muttrcVar' . l:type . ' ' . join(l:novars)
+		exec 'syntax keyword muttrcVar' . l:type . ' ' . join(l:invvars)
 	else
 		let l:type = a:type
+		exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(a:vars) . ' nextgroup=muttrcSet' . l:orig_type . 'Assignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+		exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:novars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
+		exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr'
 	endif
 
-	exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(a:vars) . ' nextgroup=muttrcSet' . l:orig_type . 'Assignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
-	exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:novars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
-	exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr'
 endfunction
 
-" CHECKED 2019-11-02
-" List of DT_BOOL in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_BOOL in MuttVars in mutt_config.c
 call s:boolQuadGen('Bool', [
-			\ 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc',
-			\ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_split', 'autoedit',
-			\ 'auto_tag', 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly',
-			\ 'change_folder_next', 'check_mbox_size', 'check_new', 'collapse_all',
-			\ 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate',
-			\ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime',
-			\ 'crypt_confirmhook', 'crypt_opportunistic_encrypt', 'crypt_replyencrypt',
-			\ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp',
-			\ 'crypt_use_gpgme', 'crypt_use_pka', 'delete_untag', 'digest_collapse',
-			\ 'duplicate_threads', 'edit_headers', 'encode_from', 'fast_reply',
-			\ 'fcc_clear', 'flag_safe', 'followup_to', 'force_name', 'forward_decode',
-			\ 'forward_decrypt', 'forward_quote', 'forward_references', 'hdrs',
-			\ 'header', 'header_cache_compress', 'header_color_partial', 'help',
-			\ 'hidden_host', 'hide_limited', 'hide_missing', 'hide_thread_subject',
-			\ 'hide_top_limited', 'hide_top_missing', 'history_remove_dups',
-			\ 'honor_disposition', 'idn_decode', 'idn_encode', 'ignore_list_reply_to',
-			\ 'imap_check_subscribed', 'imap_idle', 'imap_list_subscribed',
-			\ 'imap_passive', 'imap_peek', 'imap_servernoise', 'implicit_autoview',
-			\ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize',
-			\ 'maildir_check_cur', 'maildir_header_cache_verify', 'maildir_trash',
-			\ 'mail_check_recent', 'mail_check_stats', 'markers', 'mark_old',
-			\ 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key',
-			\ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject',
-			\ 'mime_type_query_first', 'narrow_tree', 'nm_record', 'nntp_listgroup',
-			\ 'nntp_load_description', 'pager_stop', 'pgp_autoinline',
-			\ 'pgp_auto_decode', 'pgp_check_exit', 'pgp_ignore_subkeys', 'pgp_long_ids',
-			\ 'pgp_replyinline', 'pgp_retainable_sigs', 'pgp_self_encrypt',
-			\ 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent', 'pipe_decode',
-			\ 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt',
-			\ 'print_decode', 'print_split', 'prompt_after', 'read_only',
-			\ 'reflow_space_quotes', 'reflow_text', 'reply_self', 'reply_with_xorig',
-			\ 'resolve', 'resume_draft_files', 'resume_edited_draft_files',
-			\ 'reverse_alias', 'reverse_name', 'reverse_realname', 'rfc2047_parameters',
-			\ 'save_address', 'save_empty', 'save_name', 'save_unsubscribed', 'score',
-			\ 'show_new_news', 'show_only_unread', 'sidebar_folder_indent',
-			\ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_on_right',
-			\ 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top',
-			\ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key',
-			\ 'smime_is_default', 'smime_self_encrypt', 'sort_re', 'ssl_force_tls',
-			\ 'ssl_usesystemcerts', 'ssl_use_sslv2', 'ssl_use_sslv3', 'ssl_use_tlsv1',
-			\ 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_verify_dates',
-			\ 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top',
-			\ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search',
-			\ 'thread_received', 'tilde', 'ts_enabled', 'uncollapse_jump',
-			\ 'uncollapse_new', 'user_agent', 'use_8bitmime', 'use_domain',
-			\ 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile',
-			\ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to',
-			\ 'attach_save_without_prompting', 'autocrypt', 'autocrypt_reply',
-			\ 'auto_subscribe', 'browser_abbreviate_mailboxes',
-			\ 'crypt_protected_headers_read', 'crypt_protected_headers_save',
-			\ 'crypt_protected_headers_write', 'fcc_before_send', 'imap_condstore',
-			\ 'imap_qresync', 'imap_rfc5161', 'include_encrypted',
-			\ 'pgp_check_gpg_decrypt_status_fd', 'sidebar_non_empty_mailbox_only',
-			\ 'size_show_bytes', 'size_show_fractions', 'size_show_mb',
-			\ 'size_units_on_left', 'ssl_use_tlsv1_3'
-			\ ], 0)
+	\ 'abort_backspace', 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc',
+	\ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_save_without_prompting',
+	\ 'attach_split', 'autocrypt', 'autocrypt_reply', 'autoedit', 'auto_subscribe', 'auto_tag',
+	\ 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly',
+	\ 'browser_abbreviate_mailboxes', 'change_folder_next', 'check_mbox_size', 'check_new',
+	\ 'collapse_all', 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate',
+	\ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime',
+	\ 'crypt_confirmhook', 'crypt_opportunistic_encrypt',
+	\ 'crypt_opportunistic_encrypt_strong_keys', 'crypt_protected_headers_read',
+	\ 'crypt_protected_headers_save', 'crypt_protected_headers_write', 'crypt_replyencrypt',
+	\ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp', 'crypt_use_gpgme',
+	\ 'crypt_use_pka', 'delete_untag', 'digest_collapse', 'duplicate_threads', 'edit_headers',
+	\ 'encode_from', 'fast_reply', 'fcc_before_send', 'fcc_clear', 'flag_safe', 'followup_to',
+	\ 'force_name', 'forward_decode', 'forward_decrypt', 'forward_quote', 'forward_references',
+	\ 'hdrs', 'header', 'header_color_partial', 'help', 'hidden_host', 'hide_limited',
+	\ 'hide_missing', 'hide_thread_subject', 'hide_top_limited', 'hide_top_missing',
+	\ 'history_remove_dups', 'honor_disposition', 'idn_decode', 'idn_encode',
+	\ 'ignore_list_reply_to', 'imap_check_subscribed', 'imap_condstore', 'imap_deflate',
+	\ 'imap_idle', 'imap_list_subscribed', 'imap_passive', 'imap_peek', 'imap_qresync',
+	\ 'imap_rfc5161', 'imap_servernoise', 'implicit_autoview', 'include_encrypted',
+	\ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize', 'maildir_check_cur',
+	\ 'maildir_header_cache_verify', 'maildir_trash', 'mail_check_recent', 'mail_check_stats',
+	\ 'markers', 'mark_old', 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key',
+	\ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject', 'mime_type_query_first',
+	\ 'narrow_tree', 'nm_record', 'nntp_listgroup', 'nntp_load_description', 'pager_stop',
+	\ 'pgp_autoinline', 'pgp_auto_decode', 'pgp_check_exit', 'pgp_check_gpg_decrypt_status_fd',
+	\ 'pgp_ignore_subkeys', 'pgp_long_ids', 'pgp_replyinline', 'pgp_retainable_sigs',
+	\ 'pgp_self_encrypt', 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent',
+	\ 'pipe_decode', 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt',
+	\ 'print_decode', 'print_split', 'prompt_after', 'read_only', 'reflow_space_quotes',
+	\ 'reflow_text', 'reply_self', 'reply_with_xorig', 'resolve', 'resume_draft_files',
+	\ 'resume_edited_draft_files', 'reverse_alias', 'reverse_name', 'reverse_realname',
+	\ 'rfc2047_parameters', 'save_address', 'save_empty', 'save_name', 'save_unsubscribed',
+	\ 'score', 'show_new_news', 'show_only_unread', 'sidebar_folder_indent',
+	\ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_non_empty_mailbox_only',
+	\ 'sidebar_on_right', 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top',
+	\ 'size_show_bytes', 'size_show_fractions', 'size_show_mb', 'size_units_on_left',
+	\ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key', 'smime_is_default',
+	\ 'smime_self_encrypt', 'sort_re', 'ssl_force_tls', 'ssl_usesystemcerts', 'ssl_use_sslv2',
+	\ 'ssl_use_sslv3', 'ssl_use_tlsv1', 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_use_tlsv1_3',
+	\ 'ssl_verify_dates', 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top',
+	\ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search', 'thread_received', 'tilde',
+	\ 'ts_enabled', 'uncollapse_jump', 'uncollapse_new', 'user_agent', 'use_8bitmime',
+	\ 'use_domain', 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile',
+	\ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to'
+	\ ], 0)
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " Deprecated Bools
-" List of DT_SYNONYM synonyms of Bools in MuttVars in init.h
+" List of DT_SYNONYM or DT_DEPRECATED Bools in MuttVars in mutt_config.c
 call s:boolQuadGen('Bool', [
-			\ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt',
-			\ 'forw_quote', 'ignore_linear_white_space', 'pgp_autoencrypt',
-			\ 'pgp_autosign', 'pgp_auto_traditional', 'pgp_create_traditional',
-			\ 'pgp_replyencrypt', 'pgp_replysign', 'pgp_replysignencrypted',
-			\ 'xterm_set_titles'
-			\ ], 1)
+	\ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt', 'forw_quote',
+	\ 'header_cache_compress', 'ignore_linear_white_space', 'pgp_autoencrypt', 'pgp_autosign',
+	\ 'pgp_auto_traditional', 'pgp_create_traditional', 'pgp_replyencrypt', 'pgp_replysign',
+	\ 'pgp_replysignencrypted', 'xterm_set_titles'
+	\ ], 1)
 
-" CHECKED 2019-11-02
-" List of DT_QUAD in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_QUAD in MuttVars in mutt_config.c
 call s:boolQuadGen('Quad', [
-			\ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce',
-			\ 'catchup_newsgroup', 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach',
-			\ 'followup_to_poster', 'forward_edit', 'honor_followup_to', 'include',
-			\ 'mime_forward', 'mime_forward_rest', 'move', 'pgp_mime_auto',
-			\ 'pop_delete', 'pop_reconnect', 'postpone', 'post_moderated', 'print',
-			\ 'quit', 'recall', 'reply_to', 'ssl_starttls', 'forward_attachments'
-			\ ], 0)
+	\ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce', 'catchup_newsgroup',
+	\ 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach', 'followup_to_poster',
+	\ 'forward_attachments', 'forward_edit', 'honor_followup_to', 'include', 'mime_forward',
+	\ 'mime_forward_rest', 'move', 'pgp_mime_auto', 'pop_delete', 'pop_reconnect', 'postpone',
+	\ 'post_moderated', 'print', 'quit', 'recall', 'reply_to', 'ssl_starttls', 
+	\ ], 0)
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " Deprecated Quads
-" List of DT_SYNONYM synonyms of Quads in MuttVars in init.h
+" List of DT_SYNONYM or DT_DEPRECATED Quads in MuttVars in mutt_config.c
 call s:boolQuadGen('Quad', [
-			\ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self'
-			\ ], 1)
+	\ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self'
+	\ ], 1)
 
-" CHECKED 2019-11-02
-" List of DT_NUMBER or DT_LONG in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_NUMBER or DT_LONG in MuttVars in mutt_config.c
 syntax keyword muttrcVarNum	skipwhite contained
-			\ connect_timeout debug_level history imap_keepalive imap_pipeline_depth
-			\ imap_poll_timeout mail_check mail_check_stats_interval menu_context
-			\ net_inc nm_db_limit nm_open_timeout nm_query_window_current_position
-			\ nm_query_window_duration nntp_context nntp_poll pager_context
-			\ pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap
-			\ save_history score_threshold_delete score_threshold_flag
-			\ score_threshold_read search_context sendmail_wait sidebar_component_depth
-			\ sidebar_width skip_quoted_offset sleep_time smime_timeout
-			\ ssl_min_dh_prime_bits timeout time_inc wrap wrap_headers write_inc
-			\ header_cache_pagesize imap_fetch_chunk_size toggle_quoted_show_levels
-			\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ connect_timeout debug_level header_cache_compress_level history
+	\ imap_fetch_chunk_size imap_keepalive imap_pipeline_depth imap_poll_timeout mail_check
+	\ mail_check_stats_interval menu_context net_inc nm_db_limit nm_open_timeout
+	\ nm_query_window_current_position nm_query_window_duration nntp_context nntp_poll
+	\ pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap
+	\ save_history score_threshold_delete score_threshold_flag score_threshold_read
+	\ search_context sendmail_wait sidebar_component_depth sidebar_width skip_quoted_offset
+	\ sleep_time smime_timeout ssl_min_dh_prime_bits timeout time_inc toggle_quoted_show_levels
+	\ wrap wrap_headers write_inc
+	\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 syntax keyword muttrcVarDeprecatedNum	contained skipwhite
-			\ wrapmargin
-			\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ header_cache_pagesize wrapmargin
+	\ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-" CHECKED 2019-11-02
-" List of DT_STRING in MuttVars in init.h
+" CHECKED 2020-06-21
+" List of DT_STRING in MuttVars in mutt_config.c
 " Special cases first, and all the rest at the end
 " Formats themselves must be updated in their respective groups
 " See s:escapesConditionals
-syntax match muttrcVarStr	contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax match muttrcVarStr	contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 syntax keyword muttrcVarStr	contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt
 syntax keyword muttrcVarStr	contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt
 syntax keyword muttrcVarStr	contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt
 syntax keyword muttrcVarStr	contained skipwhite folder_format vfolder_format nextgroup=muttrcVarEqualsFolderFmt
-syntax keyword muttrcVarStr	contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
-" Deprecated format
-syntax keyword muttrcVarDeprecatedStr	contained skipwhite hdr_format msg_format nextgroup=muttrcVarEqualsIdxFmt
+syntax keyword muttrcVarStr	contained skipwhite attribution forward_format index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
 syntax keyword muttrcVarStr	contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt
 syntax keyword muttrcVarStr	contained skipwhite
-			\ pgp_clearsign_command pgp_decode_command pgp_decrypt_command
-			\ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command
-			\ pgp_import_command pgp_list_pubring_command pgp_list_secring_command
-			\ pgp_sign_command pgp_verify_command pgp_verify_key_command
-			\ nextgroup=muttrcVarEqualsPGPCmdFmt
+	\ pgp_clearsign_command pgp_decode_command pgp_decrypt_command
+	\ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command pgp_getkeys_command
+	\ pgp_import_command pgp_list_pubring_command pgp_list_secring_command
+	\ pgp_sign_command pgp_verify_command pgp_verify_key_command
+	\ nextgroup=muttrcVarEqualsPGPCmdFmt
 syntax keyword muttrcVarStr	contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
-syntax keyword muttrcVarStr	contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
 syntax keyword muttrcVarStr	contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt
 syntax keyword muttrcVarStr	contained skipwhite
-			\ smime_decrypt_command smime_encrypt_command smime_get_cert_command
-			\ smime_get_cert_email_command smime_get_signer_cert_command
-			\ smime_import_cert_command smime_pk7out_command smime_sign_command
-			\ smime_verify_command smime_verify_opaque_command
-			\ nextgroup=muttrcVarEqualsSmimeFmt
-syntax keyword muttrcVarStr	contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt
-" Deprecated format
-syntax keyword muttrcVarDeprecatedStr	contained skipwhite xterm_icon xterm_title nextgroup=muttrcVarEqualsStatusFmt
+	\ smime_decrypt_command smime_encrypt_command smime_get_cert_command
+	\ smime_get_cert_email_command smime_get_signer_cert_command
+	\ smime_import_cert_command smime_pk7out_command smime_sign_command
+	\ smime_verify_command smime_verify_opaque_command
+	\ nextgroup=muttrcVarEqualsSmimeFmt
+syntax keyword muttrcVarStr	contained skipwhite status_format ts_icon_format ts_status_format nextgroup=muttrcVarEqualsStatusFmt
 syntax keyword muttrcVarStr	contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt
 syntax keyword muttrcVarStr	contained skipwhite group_index_format nextgroup=muttrcVarEqualsGrpIdxFmt
 syntax keyword muttrcVarStr	contained skipwhite sidebar_format nextgroup=muttrcVarEqualsSdbFmt
 syntax keyword muttrcVarStr	contained skipwhite
-			\ assumed_charset attach_charset attach_sep attribution_locale charset
-			\ config_charset content_type default_hook dsn_notify dsn_return
-			\ empty_subject escape forward_attribution_intro forward_attribution_trailer
-			\ forward_format hidden_tags hostname
-			\ imap_authenticators imap_delim_chars imap_headers imap_login imap_pass
-			\ imap_user indent_string mailcap_path mark_macro_prefix mh_seq_flagged
-			\ mh_seq_replied mh_seq_unseen newsgroups_charset
-			\ news_server nm_default_uri nm_exclude_tags nm_query_type
-			\ nm_query_window_current_search nm_query_window_timebase nm_record_tags
-			\ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key
-			\ pgp_sign_as pipe_sep pop_authenticators pop_host pop_pass pop_user
-			\ postpone_encrypt_as post_indent_string preconnect realname send_charset
-			\ show_multipart_alternative sidebar_delim_chars sidebar_divider_char
-			\ sidebar_indent_string simple_search smime_default_key smime_encrypt_with
-			\ smime_sign_as smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url
-			\ spam_separator ssl_ciphers autocrypt_acct_format
-			\ crypt_protected_headers_subject header_cache_backend nm_flagged_tag
-			\ nm_replied_tag preferred_languages
-			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ abort_key arrow_string assumed_charset attach_charset attach_sep attribution_locale
+	\ autocrypt_acct_format charset config_charset content_type crypt_protected_headers_subject
+	\ default_hook dsn_notify dsn_return empty_subject escape forward_attribution_intro
+	\ forward_attribution_trailer header_cache_backend header_cache_compress_method hidden_tags
+	\ hostname imap_authenticators imap_delim_chars imap_headers imap_login imap_pass imap_user
+	\ indent_string mailcap_path mark_macro_prefix mh_seq_flagged mh_seq_replied mh_seq_unseen
+	\ newsgroups_charset news_server nm_default_url nm_exclude_tags nm_flagged_tag nm_query_type
+	\ nm_query_window_current_search nm_query_window_timebase nm_record_tags nm_replied_tag
+	\ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key pgp_sign_as pipe_sep
+	\ pop_authenticators pop_host pop_pass pop_user postpone_encrypt_as post_indent_string
+	\ preconnect preferred_languages realname send_charset show_multipart_alternative
+	\ sidebar_delim_chars sidebar_divider_char sidebar_indent_string simple_search
+	\ smime_default_key smime_encrypt_with smime_sign_as smime_sign_digest_alg
+	\ smtp_authenticators smtp_pass smtp_url smtp_user spam_separator ssl_ciphers
+	\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
 " Deprecated strings
-syntax keyword muttrcVarDeprecatedStr	contained skipwhite
-			\ forw_format indent_str pgp_self_encrypt_as post_indent_str
-			\ smime_self_encrypt_as
-			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarDeprecatedStr
+	\ abort_noattach_regexp attach_keyword forw_format hdr_format indent_str msg_format
+	\ nm_default_uri pgp_self_encrypt_as post_indent_str print_cmd quote_regexp reply_regexp
+	\ smime_self_encrypt_as xterm_icon xterm_title
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " List of DT_ADDRESS
-syntax keyword muttrcVarStr	contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarStr	contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 " List of DT_ENUM
-syntax keyword muttrcVarStr	contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarStr	contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 " List of DT_MBTABLE
-syntax keyword muttrcVarStr	contained skipwhite crypt_chars flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+syntax keyword muttrcVarStr	contained skipwhite crypt_chars flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " List of DT_PATH
 syntax keyword muttrcVarStr	contained skipwhite
-			\ alias_file attach_save_dir autocrypt_dir certificate_file debug_file
-			\ entropy_file folder header_cache history_file mbox message_cachedir newsrc
-			\ news_cache_dir postponed record signature smime_ca_location
-			\ smime_certificates smime_keys spoolfile ssl_ca_certificates_file
-			\ ssl_client_cert tmpdir trash
-			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ alias_file attach_save_dir autocrypt_dir certificate_file debug_file
+	\ entropy_file folder header_cache history_file mbox message_cachedir newsrc
+	\ news_cache_dir postponed record signature smime_ca_location
+	\ smime_certificates smime_keys spoolfile ssl_ca_certificates_file
+	\ ssl_client_cert tmpdir trash
+	\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 " List of DT_COMMAND (excluding pgp_*_command and smime_*_command)
 syntax keyword muttrcVarStr	contained skipwhite
-			\ display_filter editor inews ispell mixmaster new_mail_command pager
-			\ print_command query_command sendmail shell visual external_search_command
-			\ imap_oauth_refresh_command pop_oauth_refresh_command
-			\ mime_type_query_command smtp_oauth_refresh_command tunnel
-			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ display_filter editor inews ispell mixmaster new_mail_command pager
+	\ print_command query_command sendmail shell visual external_search_command
+	\ imap_oauth_refresh_command pop_oauth_refresh_command
+	\ mime_type_query_command smtp_oauth_refresh_command tunnel
+	\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-" CHECKED 2019-11-02
+" CHECKED 2020-06-21
 " List of DT_REGEX
 syntax keyword muttrcVarStr	contained skipwhite
-			\ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign
-			\ quote_regex reply_regex smileys
-			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-" List of deprecated DT_STRING|DT_COMMAND
-syntax keyword muttrcVarDeprecatedStr	contained skipwhite print_cmd nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-" List of deprecated DT_REGEX
-syntax keyword muttrcVarDeprecatedStr	contained skipwhite abort_noattach_regexp attach_keyword quote_regexp reply_regexp nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign
+	\ quote_regex reply_regex smileys
+	\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 " List of DT_SORT
 syntax keyword muttrcVarStr	contained skipwhite
-			\ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser
-			\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
+	\ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser
+	\ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
-" CHECKED 2019-11-02
-" List of commands in Commands in init.h
+" CHECKED 2020-06-21
+" List of commands in Commands in mutt_config.c
 " Remember to remove hooks, they have already been dealt with
-syntax keyword muttrcCommand	skipwhite charset-hook nextgroup=muttrcRXString
-syntax keyword muttrcCommand	skipwhite unhook nextgroup=muttrcHooks
-syntax keyword muttrcCommand	skipwhite spam nextgroup=muttrcSpamPattern
-syntax keyword muttrcCommand	skipwhite nospam nextgroup=muttrcNoSpamPattern
-syntax keyword muttrcCommand	skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
-syntax keyword muttrcCommand	skipwhite macro	nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
 syntax keyword muttrcCommand	skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syntax keyword muttrcCommand	skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
+syntax keyword muttrcCommand	skipwhite exec nextgroup=muttrcFunction
+syntax keyword muttrcCommand	skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+syntax keyword muttrcCommand	skipwhite nospam nextgroup=muttrcNoSpamPattern
+syntax keyword muttrcCommand	skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syntax keyword muttrcCommand	skipwhite spam nextgroup=muttrcSpamPattern
 syntax keyword muttrcCommand	skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
-syntax keyword muttrcCommand	skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr
-syntax keyword muttrcCommand	skipwhite exec nextgroup=muttrcFunction
+syntax keyword muttrcCommand	skipwhite unhook nextgroup=muttrcHooks
 syntax keyword muttrcCommand	skipwhite
-			\ alternative_order attachments auto_view finish hdr_order ifdef ifndef
-			\ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score
-			\ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats
-			\ tag-transforms unalternative_order unattachments unauto_view uncolor
-			\ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono
-			\ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from
-			\ unvirtual-mailboxes virtual-mailboxes named-mailboxes
-			\ echo unbind unmacro
+	\ alternative_order attachments auto_view finish hdr_order ifdef ifndef
+	\ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score
+	\ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats
+	\ tag-transforms unalternative_order unattachments unauto_view uncolor
+	\ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono
+	\ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from
+	\ unvirtual-mailboxes virtual-mailboxes named-mailboxes
+	\ echo unbind unmacro
+
+function! s:genFunctions(functions)
+	for f in a:functions
+		exec 'syntax match muttrcFunction contained "\<' . l:f . '\>"'
+	endfor
+endfunction
 
-" CHECKED 2019-11-02
-" List of functions in functions.h
-syntax match muttrcFunction contained "\<accept\>"
-syntax match muttrcFunction contained "\<append\>"
-syntax match muttrcFunction contained "\<attach-file\>"
-syntax match muttrcFunction contained "\<attach-key\>"
-syntax match muttrcFunction contained "\<attach-message\>"
-syntax match muttrcFunction contained "\<attach-news-message\>"
-syntax match muttrcFunction contained "\<autocrypt-acct-menu\>"
-syntax match muttrcFunction contained "\<autocrypt-menu\>"
-syntax match muttrcFunction contained "\<backspace\>"
-syntax match muttrcFunction contained "\<backward-char\>"
-syntax match muttrcFunction contained "\<backward-word\>"
-syntax match muttrcFunction contained "\<bol\>"
-syntax match muttrcFunction contained "\<bottom-page\>"
-syntax match muttrcFunction contained "\<bottom\>"
-syntax match muttrcFunction contained "\<bounce-message\>"
-syntax match muttrcFunction contained "\<break-thread\>"
-syntax match muttrcFunction contained "\<buffy-cycle\>"
-syntax match muttrcFunction contained "\<buffy-list\>"
-syntax match muttrcFunction contained "\<capitalize-word\>"
-syntax match muttrcFunction contained "\<catchup\>"
-syntax match muttrcFunction contained "\<chain-next\>"
-syntax match muttrcFunction contained "\<chain-prev\>"
-syntax match muttrcFunction contained "\<change-dir\>"
-syntax match muttrcFunction contained "\<change-folder-readonly\>"
-syntax match muttrcFunction contained "\<change-folder\>"
-syntax match muttrcFunction contained "\<change-newsgroup-readonly\>"
-syntax match muttrcFunction contained "\<change-newsgroup\>"
-syntax match muttrcFunction contained "\<change-vfolder\>"
-syntax match muttrcFunction contained "\<check-new\>"
-syntax match muttrcFunction contained "\<check-stats\>"
-syntax match muttrcFunction contained "\<check-traditional-pgp\>"
-syntax match muttrcFunction contained "\<clear-flag\>"
-syntax match muttrcFunction contained "\<collapse-all\>"
-syntax match muttrcFunction contained "\<collapse-parts\>"
-syntax match muttrcFunction contained "\<collapse-thread\>"
-syntax match muttrcFunction contained "\<complete-query\>"
-syntax match muttrcFunction contained "\<complete\>"
-syntax match muttrcFunction contained "\<compose-to-sender\>"
-syntax match muttrcFunction contained "\<copy-file\>"
-syntax match muttrcFunction contained "\<copy-message\>"
-syntax match muttrcFunction contained "\<create-account\>"
-syntax match muttrcFunction contained "\<create-alias\>"
-syntax match muttrcFunction contained "\<create-mailbox\>"
-syntax match muttrcFunction contained "\<current-bottom\>"
-syntax match muttrcFunction contained "\<current-middle\>"
-syntax match muttrcFunction contained "\<current-top\>"
-syntax match muttrcFunction contained "\<decode-copy\>"
-syntax match muttrcFunction contained "\<decode-save\>"
-syntax match muttrcFunction contained "\<decrypt-copy\>"
-syntax match muttrcFunction contained "\<decrypt-save\>"
-syntax match muttrcFunction contained "\<delete-account\>"
-syntax match muttrcFunction contained "\<delete-char\>"
-syntax match muttrcFunction contained "\<delete-entry\>"
-syntax match muttrcFunction contained "\<delete-mailbox\>"
-syntax match muttrcFunction contained "\<delete-message\>"
-syntax match muttrcFunction contained "\<delete-pattern\>"
-syntax match muttrcFunction contained "\<delete-subthread\>"
-syntax match muttrcFunction contained "\<delete-thread\>"
-syntax match muttrcFunction contained "\<delete\>"
-syntax match muttrcFunction contained "\<descend-directory\>"
-syntax match muttrcFunction contained "\<detach-file\>"
-syntax match muttrcFunction contained "\<display-address\>"
-syntax match muttrcFunction contained "\<display-filename\>"
-syntax match muttrcFunction contained "\<display-message\>"
-syntax match muttrcFunction contained "\<display-toggle-weed\>"
-syntax match muttrcFunction contained "\<downcase-word\>"
-syntax match muttrcFunction contained "\<edit-bcc\>"
-syntax match muttrcFunction contained "\<edit-cc\>"
-syntax match muttrcFunction contained "\<edit-description\>"
-syntax match muttrcFunction contained "\<edit-encoding\>"
-syntax match muttrcFunction contained "\<edit-fcc\>"
-syntax match muttrcFunction contained "\<edit-file\>"
-syntax match muttrcFunction contained "\<edit-followup-to\>"
-syntax match muttrcFunction contained "\<edit-from\>"
-syntax match muttrcFunction contained "\<edit-headers\>"
-syntax match muttrcFunction contained "\<edit-label\>"
-syntax match muttrcFunction contained "\<edit-language\>"
-syntax match muttrcFunction contained "\<edit-message\>"
-syntax match muttrcFunction contained "\<edit-mime\>"
-syntax match muttrcFunction contained "\<edit-newsgroups\>"
-syntax match muttrcFunction contained "\<edit-or-view-raw-message\>"
-syntax match muttrcFunction contained "\<edit-raw-message\>"
-syntax match muttrcFunction contained "\<edit-reply-to\>"
-syntax match muttrcFunction contained "\<edit-subject\>"
-syntax match muttrcFunction contained "\<edit-to\>"
-syntax match muttrcFunction contained "\<edit-type\>"
-syntax match muttrcFunction contained "\<edit-x-comment-to\>"
-syntax match muttrcFunction contained "\<edit\>"
-syntax match muttrcFunction contained "\<end-cond\>"
-syntax match muttrcFunction contained "\<enter-command\>"
-syntax match muttrcFunction contained "\<enter-mask\>"
-syntax match muttrcFunction contained "\<entire-thread\>"
-syntax match muttrcFunction contained "\<eol\>"
-syntax match muttrcFunction contained "\<exit\>"
-syntax match muttrcFunction contained "\<extract-keys\>"
-syntax match muttrcFunction contained "\<fetch-mail\>"
-syntax match muttrcFunction contained "\<filter-entry\>"
-syntax match muttrcFunction contained "\<first-entry\>"
-syntax match muttrcFunction contained "\<flag-message\>"
-syntax match muttrcFunction contained "\<followup-message\>"
-syntax match muttrcFunction contained "\<forget-passphrase\>"
-syntax match muttrcFunction contained "\<forward-char\>"
-syntax match muttrcFunction contained "\<forward-message\>"
-syntax match muttrcFunction contained "\<forward-to-group\>"
-syntax match muttrcFunction contained "\<forward-word\>"
-syntax match muttrcFunction contained "\<get-attachment\>"
-syntax match muttrcFunction contained "\<get-children\>"
-syntax match muttrcFunction contained "\<get-message\>"
-syntax match muttrcFunction contained "\<get-parent\>"
-syntax match muttrcFunction contained "\<goto-folder\>"
-syntax match muttrcFunction contained "\<goto-parent\>"
-syntax match muttrcFunction contained "\<group-alternatives\>"
-syntax match muttrcFunction contained "\<group-chat-reply\>"
-syntax match muttrcFunction contained "\<group-multilingual\>"
-syntax match muttrcFunction contained "\<group-reply\>"
-syntax match muttrcFunction contained "\<half-down\>"
-syntax match muttrcFunction contained "\<half-up\>"
-syntax match muttrcFunction contained "\<help\>"
-syntax match muttrcFunction contained "\<history-down\>"
-syntax match muttrcFunction contained "\<history-search\>"
-syntax match muttrcFunction contained "\<history-up\>"
-syntax match muttrcFunction contained "\<imap-fetch-mail\>"
-syntax match muttrcFunction contained "\<imap-logout-all\>"
-syntax match muttrcFunction contained "\<insert\>"
-syntax match muttrcFunction contained "\<ispell\>"
-syntax match muttrcFunction contained "\<jump\>"
-syntax match muttrcFunction contained "\<kill-eol\>"
-syntax match muttrcFunction contained "\<kill-eow\>"
-syntax match muttrcFunction contained "\<kill-line\>"
-syntax match muttrcFunction contained "\<kill-word\>"
-syntax match muttrcFunction contained "\<last-entry\>"
-syntax match muttrcFunction contained "\<limit-current-thread\>"
-syntax match muttrcFunction contained "\<limit\>"
-syntax match muttrcFunction contained "\<link-threads\>"
-syntax match muttrcFunction contained "\<list-reply\>"
-syntax match muttrcFunction contained "\<mail-key\>"
-syntax match muttrcFunction contained "\<mailbox-cycle\>"
-syntax match muttrcFunction contained "\<mailbox-list\>"
-syntax match muttrcFunction contained "\<mail\>"
-syntax match muttrcFunction contained "\<mark-as-new\>"
-syntax match muttrcFunction contained "\<mark-message\>"
-syntax match muttrcFunction contained "\<middle-page\>"
-syntax match muttrcFunction contained "\<mix\>"
-syntax match muttrcFunction contained "\<modify-labels-then-hide\>"
-syntax match muttrcFunction contained "\<modify-labels\>"
-syntax match muttrcFunction contained "\<modify-tags-then-hide\>"
-syntax match muttrcFunction contained "\<modify-tags\>"
-syntax match muttrcFunction contained "\<move-down\>"
-syntax match muttrcFunction contained "\<move-up\>"
-syntax match muttrcFunction contained "\<new-mime\>"
-syntax match muttrcFunction contained "\<next-entry\>"
-syntax match muttrcFunction contained "\<next-line\>"
-syntax match muttrcFunction contained "\<next-new-then-unread\>"
-syntax match muttrcFunction contained "\<next-new\>"
-syntax match muttrcFunction contained "\<next-page\>"
-syntax match muttrcFunction contained "\<next-subthread\>"
-syntax match muttrcFunction contained "\<next-thread\>"
-syntax match muttrcFunction contained "\<next-undeleted\>"
-syntax match muttrcFunction contained "\<next-unread-mailbox\>"
-syntax match muttrcFunction contained "\<next-unread\>"
-syntax match muttrcFunction contained "\<noop\>"
-syntax match muttrcFunction contained "\<parent-message\>"
-syntax match muttrcFunction contained "\<pgp-menu\>"
-syntax match muttrcFunction contained "\<pipe-entry\>"
-syntax match muttrcFunction contained "\<pipe-message\>"
-syntax match muttrcFunction contained "\<post-message\>"
-syntax match muttrcFunction contained "\<postpone-message\>"
-syntax match muttrcFunction contained "\<previous-entry\>"
-syntax match muttrcFunction contained "\<previous-line\>"
-syntax match muttrcFunction contained "\<previous-new-then-unread\>"
-syntax match muttrcFunction contained "\<previous-new\>"
-syntax match muttrcFunction contained "\<previous-page\>"
-syntax match muttrcFunction contained "\<previous-subthread\>"
-syntax match muttrcFunction contained "\<previous-thread\>"
-syntax match muttrcFunction contained "\<previous-undeleted\>"
-syntax match muttrcFunction contained "\<previous-unread\>"
-syntax match muttrcFunction contained "\<print-entry\>"
-syntax match muttrcFunction contained "\<print-message\>"
-syntax match muttrcFunction contained "\<purge-message\>"
-syntax match muttrcFunction contained "\<purge-thread\>"
-syntax match muttrcFunction contained "\<quasi-delete\>"
-syntax match muttrcFunction contained "\<query-append\>"
-syntax match muttrcFunction contained "\<query\>"
-syntax match muttrcFunction contained "\<quit\>"
-syntax match muttrcFunction contained "\<quote-char\>"
-syntax match muttrcFunction contained "\<read-subthread\>"
-syntax match muttrcFunction contained "\<read-thread\>"
-syntax match muttrcFunction contained "\<recall-message\>"
-syntax match muttrcFunction contained "\<reconstruct-thread\>"
-syntax match muttrcFunction contained "\<redraw-screen\>"
-syntax match muttrcFunction contained "\<refresh\>"
-syntax match muttrcFunction contained "\<reload-active\>"
-syntax match muttrcFunction contained "\<rename-attachment\>"
-syntax match muttrcFunction contained "\<rename-file\>"
-syntax match muttrcFunction contained "\<rename-mailbox\>"
-syntax match muttrcFunction contained "\<reply\>"
-syntax match muttrcFunction contained "\<resend-message\>"
-syntax match muttrcFunction contained "\<root-message\>"
-syntax match muttrcFunction contained "\<save-entry\>"
-syntax match muttrcFunction contained "\<save-message\>"
-syntax match muttrcFunction contained "\<search-next\>"
-syntax match muttrcFunction contained "\<search-opposite\>"
-syntax match muttrcFunction contained "\<search-reverse\>"
-syntax match muttrcFunction contained "\<search-toggle\>"
-syntax match muttrcFunction contained "\<search\>"
-syntax match muttrcFunction contained "\<select-entry\>"
-syntax match muttrcFunction contained "\<select-new\>"
-syntax match muttrcFunction contained "\<send-message\>"
-syntax match muttrcFunction contained "\<set-flag\>"
-syntax match muttrcFunction contained "\<shell-escape\>"
-syntax match muttrcFunction contained "\<show-limit\>"
-syntax match muttrcFunction contained "\<show-log-messages\>"
-syntax match muttrcFunction contained "\<show-version\>"
-syntax match muttrcFunction contained "\<sidebar-next-new\>"
-syntax match muttrcFunction contained "\<sidebar-next\>"
-syntax match muttrcFunction contained "\<sidebar-open\>"
-syntax match muttrcFunction contained "\<sidebar-page-down\>"
-syntax match muttrcFunction contained "\<sidebar-page-up\>"
-syntax match muttrcFunction contained "\<sidebar-prev-new\>"
-syntax match muttrcFunction contained "\<sidebar-prev\>"
-syntax match muttrcFunction contained "\<sidebar-toggle-virtual\>"
-syntax match muttrcFunction contained "\<sidebar-toggle-visible\>"
-syntax match muttrcFunction contained "\<skip-quoted\>"
-syntax match muttrcFunction contained "\<smime-menu\>"
-syntax match muttrcFunction contained "\<sort-mailbox\>"
-syntax match muttrcFunction contained "\<sort-reverse\>"
-syntax match muttrcFunction contained "\<sort\>"
-syntax match muttrcFunction contained "\<subscribe-pattern\>"
-syntax match muttrcFunction contained "\<subscribe\>"
-syntax match muttrcFunction contained "\<sync-mailbox\>"
-syntax match muttrcFunction contained "\<tag-entry\>"
-syntax match muttrcFunction contained "\<tag-message\>"
-syntax match muttrcFunction contained "\<tag-pattern\>"
-syntax match muttrcFunction contained "\<tag-prefix-cond\>"
-syntax match muttrcFunction contained "\<tag-prefix\>"
-syntax match muttrcFunction contained "\<tag-subthread\>"
-syntax match muttrcFunction contained "\<tag-thread\>"
-syntax match muttrcFunction contained "\<toggle-active\>"
-syntax match muttrcFunction contained "\<toggle-disposition\>"
-syntax match muttrcFunction contained "\<toggle-mailboxes\>"
-syntax match muttrcFunction contained "\<toggle-new\>"
-syntax match muttrcFunction contained "\<toggle-prefer-encrypt\>"
-syntax match muttrcFunction contained "\<toggle-quoted\>"
-syntax match muttrcFunction contained "\<toggle-read\>"
-syntax match muttrcFunction contained "\<toggle-recode\>"
-syntax match muttrcFunction contained "\<toggle-subscribed\>"
-syntax match muttrcFunction contained "\<toggle-unlink\>"
-syntax match muttrcFunction contained "\<toggle-write\>"
-syntax match muttrcFunction contained "\<top-page\>"
-syntax match muttrcFunction contained "\<top\>"
-syntax match muttrcFunction contained "\<transpose-chars\>"
-syntax match muttrcFunction contained "\<uncatchup\>"
-syntax match muttrcFunction contained "\<undelete-entry\>"
-syntax match muttrcFunction contained "\<undelete-message\>"
-syntax match muttrcFunction contained "\<undelete-pattern\>"
-syntax match muttrcFunction contained "\<undelete-subthread\>"
-syntax match muttrcFunction contained "\<undelete-thread\>"
-syntax match muttrcFunction contained "\<unsubscribe-pattern\>"
-syntax match muttrcFunction contained "\<unsubscribe\>"
-syntax match muttrcFunction contained "\<untag-pattern\>"
-syntax match muttrcFunction contained "\<upcase-word\>"
-syntax match muttrcFunction contained "\<update-encoding\>"
-syntax match muttrcFunction contained "\<verify-key\>"
-syntax match muttrcFunction contained "\<vfolder-from-query-readonly\>"
-syntax match muttrcFunction contained "\<vfolder-from-query\>"
-syntax match muttrcFunction contained "\<vfolder-window-backward\>"
-syntax match muttrcFunction contained "\<vfolder-window-forward\>"
-syntax match muttrcFunction contained "\<view-attachments\>"
-syntax match muttrcFunction contained "\<view-attach\>"
-syntax match muttrcFunction contained "\<view-file\>"
-syntax match muttrcFunction contained "\<view-mailcap\>"
-syntax match muttrcFunction contained "\<view-name\>"
-syntax match muttrcFunction contained "\<view-raw-message\>"
-syntax match muttrcFunction contained "\<view-text\>"
-syntax match muttrcFunction contained "\<what-key\>"
-syntax match muttrcFunction contained "\<write-fcc\>"
+" CHECKED 2020-06-21
+" List of functions in functions.c
+" Note: 'noop' is included but is elsewhere in the source
+call s:genFunctions(['noop',
+	\ 'accept', 'append', 'attach-file', 'attach-key', 'attach-message', 'attach-news-message',
+	\ 'autocrypt-acct-menu', 'autocrypt-menu', 'backspace', 'backward-char', 'backward-word',
+	\ 'bol', 'bottom-page', 'bottom', 'bounce-message', 'break-thread', 'buffy-cycle',
+	\ 'buffy-list', 'capitalize-word', 'catchup', 'chain-next', 'chain-prev', 'change-dir',
+	\ 'change-folder-readonly', 'change-folder', 'change-newsgroup-readonly',
+	\ 'change-newsgroup', 'change-vfolder', 'check-new', 'check-stats',
+	\ 'check-traditional-pgp', 'clear-flag', 'collapse-all', 'collapse-parts',
+	\ 'collapse-thread', 'complete-query', 'complete', 'compose-to-sender', 'copy-file',
+	\ 'copy-message', 'create-account', 'create-alias', 'create-mailbox', 'current-bottom',
+	\ 'current-middle', 'current-top', 'decode-copy', 'decode-save', 'decrypt-copy',
+	\ 'decrypt-save', 'delete-account', 'delete-char', 'delete-entry', 'delete-mailbox',
+	\ 'delete-message', 'delete-pattern', 'delete-subthread', 'delete-thread', 'delete',
+	\ 'descend-directory', 'detach-file', 'display-address', 'display-filename',
+	\ 'display-message', 'display-toggle-weed', 'downcase-word', 'edit-bcc', 'edit-cc',
+	\ 'edit-description', 'edit-encoding', 'edit-fcc', 'edit-file', 'edit-followup-to',
+	\ 'edit-from', 'edit-headers', 'edit-label', 'edit-language', 'edit-message', 'edit-mime',
+	\ 'edit-newsgroups', 'edit-or-view-raw-message', 'edit-raw-message', 'edit-reply-to',
+	\ 'edit-subject', 'edit-to', 'edit-type', 'edit-x-comment-to', 'edit', 'end-cond',
+	\ 'enter-command', 'enter-mask', 'entire-thread', 'eol', 'exit', 'extract-keys',
+	\ 'fetch-mail', 'filter-entry', 'first-entry', 'flag-message', 'followup-message',
+	\ 'forget-passphrase', 'forward-char', 'forward-message', 'forward-to-group',
+	\ 'forward-word', 'get-attachment', 'get-children', 'get-message', 'get-parent',
+	\ 'goto-folder', 'goto-parent', 'group-alternatives', 'group-chat-reply',
+	\ 'group-multilingual', 'group-reply', 'half-down', 'half-up', 'help', 'history-down',
+	\ 'history-search', 'history-up', 'imap-fetch-mail', 'imap-logout-all', 'insert', 'ispell',
+	\ 'jump', 'kill-eol', 'kill-eow', 'kill-line', 'kill-word', 'last-entry',
+	\ 'limit-current-thread', 'limit', 'link-threads', 'list-reply', 'mail-key',
+	\ 'mailbox-cycle', 'mailbox-list', 'mail', 'mark-as-new', 'mark-message', 'middle-page',
+	\ 'mix', 'modify-labels-then-hide', 'modify-labels', 'modify-tags-then-hide',
+	\ 'modify-tags', 'move-down', 'move-up', 'new-mime', 'next-entry', 'next-line',
+	\ 'next-new-then-unread', 'next-new', 'next-page', 'next-subthread', 'next-thread',
+	\ 'next-undeleted', 'next-unread-mailbox', 'next-unread', 'parent-message', 'pgp-menu',
+	\ 'pipe-entry', 'pipe-message', 'post-message', 'postpone-message', 'previous-entry',
+	\ 'previous-line', 'previous-new-then-unread', 'previous-new', 'previous-page',
+	\ 'previous-subthread', 'previous-thread', 'previous-undeleted', 'previous-unread',
+	\ 'print-entry', 'print-message', 'purge-message', 'purge-thread', 'quasi-delete',
+	\ 'query-append', 'query', 'quit', 'quote-char', 'read-subthread', 'read-thread',
+	\ 'recall-message', 'reconstruct-thread', 'redraw-screen', 'refresh', 'reload-active',
+	\ 'rename-attachment', 'rename-file', 'rename-mailbox', 'reply', 'resend-message',
+	\ 'root-message', 'save-entry', 'save-message', 'search-next', 'search-opposite',
+	\ 'search-reverse', 'search-toggle', 'search', 'select-entry', 'select-new',
+	\ 'send-message', 'set-flag', 'shell-escape', 'show-limit', 'show-log-messages',
+	\ 'show-version', 'sidebar-next-new', 'sidebar-first', 'sidebar-last', 'sidebar-next',
+	\ 'sidebar-open', 'sidebar-page-down', 'sidebar-page-up', 'sidebar-prev-new',
+	\ 'sidebar-prev', 'sidebar-toggle-virtual', 'sidebar-toggle-visible', 'skip-quoted',
+	\ 'smime-menu', 'sort-mailbox', 'sort-reverse', 'sort', 'subscribe-pattern',
+	\ 'sync-mailbox', 'tag-entry', 'tag-message', 'tag-pattern', 'tag-prefix-cond',
+	\ 'tag-prefix', 'tag-subthread', 'tag-thread', 'toggle-active', 'toggle-disposition',
+	\ 'toggle-mailboxes', 'toggle-new', 'toggle-prefer-encrypt', 'toggle-quoted',
+	\ 'toggle-read', 'toggle-recode', 'toggle-subscribed', 'toggle-unlink', 'toggle-write',
+	\ 'top-page', 'top', 'transpose-chars', 'uncatchup', 'undelete-entry', 'undelete-message',
+	\ 'undelete-pattern', 'undelete-subthread', 'undelete-thread', 'unsubscribe-pattern',
+	\ 'untag-pattern', 'upcase-word', 'update-encoding', 'verify-key',
+	\ 'vfolder-from-query-readonly', 'vfolder-from-query', 'vfolder-window-backward',
+	\ 'vfolder-window-forward', 'view-attachments', 'view-attach', 'view-file', 'view-mailcap',
+	\ 'view-name', 'view-raw-message', 'view-text', 'what-key', 'write-fcc'
+	\ ])
 
 " Define the default highlighting.
 " Only when an item doesn't have highlighting yet
 
-highlight def link muttrcComment			Comment
-highlight def link muttrcEscape				SpecialChar
-highlight def link muttrcRXChars			SpecialChar
-highlight def link muttrcString				String
-highlight def link muttrcRXString			String
-highlight def link muttrcRXString2			String
-highlight def link muttrcSpecial			Special
-highlight def link muttrcHooks				Type
-highlight def link muttrcGroupFlag			Type
-highlight def link muttrcGroupDef			Macro
-highlight def link muttrcAddrDef			muttrcGroupFlag
-highlight def link muttrcRXDef				muttrcGroupFlag
-highlight def link muttrcRXPat				String
-highlight def link muttrcAliasGroupName			Macro
-highlight def link muttrcAliasKey	        	Identifier
-highlight def link muttrcUnAliasKey			Identifier
-highlight def link muttrcAliasEncEmail			Identifier
-highlight def link muttrcAliasParens			Type
-highlight def link muttrcSetNumAssignment		Number
 highlight def link muttrcSetBoolAssignment		Boolean
 highlight def link muttrcSetQuadAssignment		Boolean
-highlight def link muttrcSetStrAssignment		String
-highlight def link muttrcEmail				Special
-highlight def link muttrcVariableInner			Special
-highlight def link muttrcEscapedVariable		String
-highlight def link muttrcHeader				Type
-highlight def link muttrcKeySpecial			SpecialChar
-highlight def link muttrcKey				Type
-highlight def link muttrcKeyName			SpecialChar
-highlight def link muttrcVarBool			Identifier
-highlight def link muttrcVarQuad			Identifier
-highlight def link muttrcVarNum				Identifier
-highlight def link muttrcVarStr				Identifier
-highlight def link muttrcMenu				Identifier
-highlight def link muttrcCommand			Keyword
-highlight def link muttrcMacroDescr			String
-highlight def link muttrcAction				Macro
+
+highlight def link muttrcComment			Comment
+
+highlight def link muttrcAlternatesLine			Error
 highlight def link muttrcBadAction			Error
 highlight def link muttrcBindFunction			Error
 highlight def link muttrcBindMenuList			Error
-highlight def link muttrcFunction			Macro
-highlight def link muttrcGroupKeyword			muttrcCommand
+highlight def link muttrcColorBG			Error
+highlight def link muttrcColorBGH			Error
+highlight def link muttrcColorBGI			Error
+highlight def link muttrcColorContext			Error
+highlight def link muttrcColorFG			Error
+highlight def link muttrcColorFGH			Error
+highlight def link muttrcColorFGI			Error
+highlight def link muttrcColorLine			Error
+highlight def link muttrcFormatErrors			Error
 highlight def link muttrcGroupLine			Error
-highlight def link muttrcSubscribeKeyword		muttrcCommand
-highlight def link muttrcSubscribeLine			Error
-highlight def link muttrcListsKeyword			muttrcCommand
 highlight def link muttrcListsLine			Error
-highlight def link muttrcAlternateKeyword		muttrcCommand
-highlight def link muttrcAlternatesLine			Error
-highlight def link muttrcAttachmentsLine		muttrcCommand
-highlight def link muttrcAttachmentsFlag		Type
-highlight def link muttrcAttachmentsMimeType		String
-highlight def link muttrcColorLine			Error
-highlight def link muttrcColorContext			Error
-highlight def link muttrcColorContextI			Identifier
-highlight def link muttrcColorContextH			Identifier
-highlight def link muttrcColorKeyword			muttrcCommand
-highlight def link muttrcColorField			Identifier
+highlight def link muttrcPattern			Error
+highlight def link muttrcSubscribeLine			Error
+highlight def link muttrcUnColorLine			Error
+highlight def link muttrcVarDeprecatedBool		Error
+highlight def link muttrcVarDeprecatedQuad		Error
+highlight def link muttrcVarDeprecatedStr		Error
+
+highlight def link muttrcAliasEncEmail			Identifier
+highlight def link muttrcAliasKey			Identifier
 highlight def link muttrcColorCompose			Identifier
 highlight def link muttrcColorComposeField		Identifier
-highlight def link muttrcColor				Type
-highlight def link muttrcColorFG			Error
-highlight def link muttrcColorFGI			Error
-highlight def link muttrcColorFGH			Error
-highlight def link muttrcColorBG			Error
-highlight def link muttrcColorBGI			Error
-highlight def link muttrcColorBGH			Error
-highlight def link muttrcMonoAttrib			muttrcColor
-highlight def link muttrcMono				muttrcCommand
+highlight def link muttrcColorContextH			Identifier
+highlight def link muttrcColorContextI			Identifier
+highlight def link muttrcColorField			Identifier
+highlight def link muttrcMenu				Identifier
 highlight def link muttrcSimplePat			Identifier
+highlight def link muttrcUnAliasKey			Identifier
+highlight def link muttrcUnColorIndex			Identifier
+highlight def link muttrcVarBool			Identifier
+highlight def link muttrcVarNum				Identifier
+highlight def link muttrcVarQuad			Identifier
+highlight def link muttrcVarStr				Identifier
+
+highlight def link muttrcCommand			Keyword
+
+highlight def link muttrcAction				Macro
+highlight def link muttrcAliasGroupName			Macro
+highlight def link muttrcFunction			Macro
+highlight def link muttrcGroupDef			Macro
 highlight def link muttrcSimplePatString		Macro
-highlight def link muttrcSimplePatMetas			Special
-highlight def link muttrcPattern			Error
-highlight def link muttrcUnColorLine			Error
-highlight def link muttrcUnColorKeyword			muttrcCommand
-highlight def link muttrcUnColorIndex			Identifier
-highlight def link muttrcShellString			muttrcEscape
-highlight def link muttrcRXHooks			muttrcCommand
-highlight def link muttrcRXHookNot			Type
+
+highlight def link muttrcMonoAttrib			muttrcColor
+
+highlight def link muttrcAlternateKeyword		muttrcCommand
+highlight def link muttrcAttachmentsLine		muttrcCommand
+highlight def link muttrcColorKeyword			muttrcCommand
+highlight def link muttrcGroupKeyword			muttrcCommand
+highlight def link muttrcListsKeyword			muttrcCommand
+highlight def link muttrcMono				muttrcCommand
 highlight def link muttrcPatHooks			muttrcCommand
-highlight def link muttrcPatHookNot			Type
-highlight def link muttrcFormatConditionals2		Type
-highlight def link muttrcIndexFormatStr			muttrcString
-highlight def link muttrcIndexFormatEscapes		muttrcEscape
-highlight def link muttrcIndexFormatConditionals	muttrcFormatConditionals2
-highlight def link muttrcAliasFormatStr			muttrcString
+highlight def link muttrcRXHooks			muttrcCommand
+highlight def link muttrcSubscribeKeyword		muttrcCommand
+highlight def link muttrcUnColorKeyword			muttrcCommand
+
 highlight def link muttrcAliasFormatEscapes		muttrcEscape
-highlight def link muttrcAttachFormatStr		muttrcString
 highlight def link muttrcAttachFormatEscapes		muttrcEscape
+highlight def link muttrcComposeFormatEscapes		muttrcEscape
+highlight def link muttrcFolderFormatEscapes		muttrcEscape
+highlight def link muttrcGroupIndexFormatEscapes	muttrcEscape
+highlight def link muttrcIndexFormatEscapes		muttrcEscape
+highlight def link muttrcMixFormatEscapes		muttrcEscape
+highlight def link muttrcPGPCmdFormatEscapes		muttrcEscape
+highlight def link muttrcPGPFormatEscapes		muttrcEscape
+highlight def link muttrcPGPTimeEscapes			muttrcEscape
+highlight def link muttrcQueryFormatEscapes		muttrcEscape
+highlight def link muttrcShellString			muttrcEscape
+highlight def link muttrcSidebarFormatEscapes		muttrcEscape
+highlight def link muttrcSmimeFormatEscapes		muttrcEscape
+highlight def link muttrcStatusFormatEscapes		muttrcEscape
+highlight def link muttrcTimeEscapes			muttrcEscape
+
+highlight def link muttrcAliasFormatConditionals	muttrcFormatConditionals2
 highlight def link muttrcAttachFormatConditionals	muttrcFormatConditionals2
-highlight def link muttrcComposeFormatStr		muttrcString
-highlight def link muttrcComposeFormatEscapes		muttrcEscape
-highlight def link muttrcFolderFormatStr		muttrcString
-highlight def link muttrcFolderFormatEscapes		muttrcEscape
+highlight def link muttrcComposeFormatConditionals	muttrcFormatConditionals2
 highlight def link muttrcFolderFormatConditionals	muttrcFormatConditionals2
-highlight def link muttrcMixFormatStr			muttrcString
-highlight def link muttrcMixFormatEscapes		muttrcEscape
+highlight def link muttrcIndexFormatConditionals	muttrcFormatConditionals2
 highlight def link muttrcMixFormatConditionals		muttrcFormatConditionals2
-highlight def link muttrcPGPFormatStr			muttrcString
-highlight def link muttrcPGPFormatEscapes		muttrcEscape
-highlight def link muttrcPGPFormatConditionals		muttrcFormatConditionals2
-highlight def link muttrcPGPCmdFormatStr		muttrcString
-highlight def link muttrcPGPCmdFormatEscapes		muttrcEscape
 highlight def link muttrcPGPCmdFormatConditionals	muttrcFormatConditionals2
-highlight def link muttrcStatusFormatStr		muttrcString
-highlight def link muttrcStatusFormatEscapes		muttrcEscape
+highlight def link muttrcPGPFormatConditionals		muttrcFormatConditionals2
+highlight def link muttrcSmimeFormatConditionals	muttrcFormatConditionals2
 highlight def link muttrcStatusFormatConditionals	muttrcFormatConditionals2
-highlight def link muttrcPGPGetKeysFormatStr		muttrcString
-highlight def link muttrcPGPGetKeysFormatEscapes	muttrcEscape
+
+highlight def link muttrcAddrDef			muttrcGroupFlag
+highlight def link muttrcRXDef				muttrcGroupFlag
+
+highlight def link muttrcAliasFormatStr			muttrcString
+highlight def link muttrcAttachFormatStr		muttrcString
+highlight def link muttrcComposeFormatStr		muttrcString
+highlight def link muttrcFolderFormatStr		muttrcString
+highlight def link muttrcGroupIndexFormatStr            muttrcString
+highlight def link muttrcIndexFormatStr			muttrcString
+highlight def link muttrcMixFormatStr			muttrcString
+highlight def link muttrcPGPCmdFormatStr		muttrcString
+highlight def link muttrcPGPFormatStr			muttrcString
+highlight def link muttrcQueryFormatStr			muttrcString
+highlight def link muttrcSidebarFormatStr		muttrcString
 highlight def link muttrcSmimeFormatStr			muttrcString
-highlight def link muttrcSmimeFormatEscapes		muttrcEscape
-highlight def link muttrcSmimeFormatConditionals	muttrcFormatConditionals2
-highlight def link muttrcTimeEscapes			muttrcEscape
-highlight def link muttrcPGPTimeEscapes			muttrcEscape
-highlight def link muttrcStrftimeEscapes		Type
+highlight def link muttrcStatusFormatStr		muttrcString
 highlight def link muttrcStrftimeFormatStr		muttrcString
-highlight def link muttrcFormatErrors			Error
+
+highlight def link muttrcSetNumAssignment		Number
 
+highlight def link muttrcEmail				Special
+highlight def link muttrcSimplePatMetas			Special
+highlight def link muttrcSpecial			Special
+highlight def link muttrcVariableInner			Special
+
+highlight def link muttrcAliasEncEmailNL		SpecialChar
+highlight def link muttrcAliasENNL			SpecialChar
+highlight def link muttrcAliasGroupDefNL		SpecialChar
+highlight def link muttrcAliasNameNL			SpecialChar
+highlight def link muttrcAliasNL			SpecialChar
 highlight def link muttrcBindFunctionNL			SpecialChar
 highlight def link muttrcBindKeyNL			SpecialChar
 highlight def link muttrcBindMenuListNL			SpecialChar
-highlight def link muttrcMacroDescrNL			SpecialChar
-highlight def link muttrcMacroBodyNL			SpecialChar
-highlight def link muttrcMacroKeyNL			SpecialChar
-highlight def link muttrcMacroMenuListNL		SpecialChar
+highlight def link muttrcColorBGNL			SpecialChar
+highlight def link muttrcColorFGNL			SpecialChar
 highlight def link muttrcColorMatchCountNL		SpecialChar
 highlight def link muttrcColorNL			SpecialChar
 highlight def link muttrcColorRXNL			SpecialChar
-highlight def link muttrcColorBGNL			SpecialChar
-highlight def link muttrcColorFGNL			SpecialChar
-highlight def link muttrcAliasNameNL			SpecialChar
-highlight def link muttrcAliasENNL			SpecialChar
-highlight def link muttrcAliasNL			SpecialChar
+highlight def link muttrcEscape				SpecialChar
+highlight def link muttrcKeyName			SpecialChar
+highlight def link muttrcKeySpecial			SpecialChar
+highlight def link muttrcMacroBodyNL			SpecialChar
+highlight def link muttrcMacroDescrNL			SpecialChar
+highlight def link muttrcMacroKeyNL			SpecialChar
+highlight def link muttrcMacroMenuListNL		SpecialChar
+highlight def link muttrcPatternNL			SpecialChar
+highlight def link muttrcRXChars			SpecialChar
+highlight def link muttrcStringNL			SpecialChar
 highlight def link muttrcUnAliasNL			SpecialChar
-highlight def link muttrcAliasGroupDefNL		SpecialChar
-highlight def link muttrcAliasEncEmailNL		SpecialChar
-highlight def link muttrcPatternNL			SpecialChar
-highlight def link muttrcUnColorPatNL			SpecialChar
 highlight def link muttrcUnColorAPNL			SpecialChar
 highlight def link muttrcUnColorIndexNL			SpecialChar
-highlight def link muttrcStringNL			SpecialChar
+highlight def link muttrcUnColorPatNL			SpecialChar
+
+highlight def link muttrcAttachmentsMimeType		String
+highlight def link muttrcEscapedVariable		String
+highlight def link muttrcMacroDescr			String
+highlight def link muttrcRXPat				String
+highlight def link muttrcRXString			String
+highlight def link muttrcRXString2			String
+highlight def link muttrcSetStrAssignment		String
+highlight def link muttrcString				String
 
-highlight def link muttrcVarDeprecatedBool		Error
-highlight def link muttrcVarDeprecatedQuad		Error
-highlight def link muttrcVarDeprecatedStr		Error
+highlight def link muttrcAliasParens			Type
+highlight def link muttrcAttachmentsFlag		Type
+highlight def link muttrcColor				Type
+highlight def link muttrcFormatConditionals2		Type
+highlight def link muttrcGroupFlag			Type
+highlight def link muttrcHeader				Type
+highlight def link muttrcHooks				Type
+highlight def link muttrcKey				Type
+highlight def link muttrcPatHookNot			Type
+highlight def link muttrcRXHookNot			Type
+highlight def link muttrcStrftimeEscapes		Type
 
 let b:current_syntax = "neomuttrc"