]> granicus.if.org Git - vim/commitdiff
Runtime file updates.
authorBram Moolenaar <Bram@vim.org>
Mon, 9 Aug 2010 20:33:06 +0000 (22:33 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 9 Aug 2010 20:33:06 +0000 (22:33 +0200)
runtime/doc/todo.txt
runtime/ftplugin/perl.vim
runtime/ftplugin/perl6.vim [new file with mode: 0644]
runtime/ftplugin/xs.vim
runtime/indent/perl.vim
runtime/syntax/muttrc.vim
runtime/syntax/perl.vim

index 5a1710312fe371ad0b58997cfd3a6991c29162e6..61ee4ef5b92f8549086d882e2581bfc06f7bf06c 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3f.  Last change: 2010 Aug 08
+*todo.txt*      For Vim version 7.3f.  Last change: 2010 Aug 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30,10 +30,13 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+'cursorline' stops too early in a help file, caused by conceal feature.
+
 Before release 7.3:
 - Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23)
 
 Test 73 fails on MS-Windows when compiled with DJGPP.
+Possibly change WIN3264 to MSWIN || MSDOS.
 
 Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
 
@@ -57,6 +60,10 @@ Results in E670. (Tony Mechelynck, 2010 May 2)
 ":helpgrep" does not put the cursor in the correct column when preceded by
 accented character. (Tony Mechelynck, 2010 Apr 15)
 
+Echo starts in the wrong column:
+    while 1 | let s = input('A') | echo 'R' | endw
+(Boyko Bantchev, 2010 Aug 9)
+
 Patch: Let rare word highlighting overrule good word highlighting.
 (Jakson A. Aquino, 2010 Jul 30)
 
index 318e70ff976244b0431a62d868eca8dba511635f..1d948535aae8a0bfef01289cf13a9c1f069847ac 100644 (file)
@@ -1,8 +1,8 @@
 " Vim filetype plugin file
-" Language:    Perl
-" Maintainer:  Dan Sharp <dwsharp at users dot sourceforge dot net>
-" Last Change:  20 Jan 2009
-" URL:         http://dwsharp.users.sourceforge.net/vim/ftplugin
+" Language:     Perl
+" Maintainer:   Andy Lester <andy@petdance.com>
+" URL:          http://github.com/petdance/vim-perl
+" Last Change:  2009-08-14
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
diff --git a/runtime/ftplugin/perl6.vim b/runtime/ftplugin/perl6.vim
new file mode 100644 (file)
index 0000000..70339ff
--- /dev/null
@@ -0,0 +1,68 @@
+" Vim filetype plugin file
+" Language:     Perl 6
+" Maintainer:   Andy Lester <andy@petdance.com>
+" URL:          http://github.com/petdance/vim-perl/tree/master
+" Last Change:  2009-04-18
+" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+"
+" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+
+" Make sure the continuation lines below do not cause problems in
+" compatibility mode.
+let s:save_cpo = &cpo
+set cpo-=C
+
+setlocal formatoptions+=crq
+setlocal comments=:#
+setlocal commentstring=#%s
+
+" Change the browse dialog on Win32 to show mainly Perl-related files
+if has("gui_win32")
+    let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" .
+                      \ "Perl Modules (*.pm)\t*.pm\n" .
+                      \ "Perl Documentation Files (*.pod)\t*.pod\n" .
+                      \ "All Files (*.*)\t*.*\n"
+endif
+
+" Provided by Ned Konz <ned at bike-nomad dot com>
+"---------------------------------------------
+setlocal include=\\<\\(use\\\|require\\)\\>
+setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','')
+setlocal define=[^A-Za-z_]
+setlocal iskeyword=@,48-57,_,192-255
+
+" The following line changes a global variable but is necessary to make
+" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
+" the problem. If this causes a " problem for you, add an
+" after/ftplugin/perl6.vim file that contains
+"       set isfname-=:
+set isfname+=:
+
+" Set this once, globally.
+if !exists("perl6path")
+    if executable("perl6")
+       if &shellxquote != '"'
+           let perl6path = system('perl6 -e "print join(q/,/,@*INC)"')
+       else
+           let perl6path = system("perl6 -e 'print join(q/,/,@*INC)'")
+       endif
+       let perl6path = substitute(perl6path,',.$',',,','')
+    else
+       " If we can't call perl6 to get its path, just default to using the
+       " current directory and the directory of the current file.
+       let perl6path = ".,,"
+    endif
+endif
+
+let &l:path=perl6path
+"---------------------------------------------
+
+" Undo the stuff we changed.
+let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" .
+           \         " | unlet! b:browsefilter"
+
+" Restore the saved compatibility options.
+let &cpo = s:save_cpo
index cf331825845f51708c2ac1d3ee67c464b5bc62dc..24df05d736f95393762fcd8c50f204384e0ab3ee 100644 (file)
@@ -1,11 +1,12 @@
 " Vim filetype plugin file
-" Language:    XS (Perl extension interface language)
-" Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2001 Sep 18
+" Language:     XS (Perl extension interface language)
+" Maintainer:   Andy Lester <andy@petdance.com>
+" URL:          http://github.com/petdance/vim-perl
+" Last Change:  2009-08-14
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
-  finish
+    finish
 endif
 
 " Just use the C plugin for now.
index 0eb95e3afb5ef9d8a1d83cce582fd575e2ceeea5..1fbc4ded9e1786f0fa61a18b0c297acca2a66f07 100644 (file)
@@ -1,13 +1,12 @@
 " Vim indent file
-" Language:    Perl
-" Author:      Rafael Garcia-Suarez <rgarciasuarez@free.fr>
-" URL:         http://rgarciasuarez.free.fr/vim/indent/perl.vim
-" Last Change: 2010 Jul 28
+" Language:     Perl 5
+" Author:       Andy Lester <andy@petdance.com>
+" URL:          http://github.com/petdance/vim-perl/tree/master
+" Last Change:  June 3, 2009
 
 " Suggestions and improvements by :
 "   Aaron J. Sherman (use syntax for hints)
 "   Artem Chuprina (play nice with folding)
-"   Benjamin R. Haskell (fold syntax group fix)
 
 " TODO things that are not or not properly indented (yet) :
 " - Continued statements
@@ -22,7 +21,7 @@
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
-  finish
+    finish
 endif
 let b:did_indent = 1
 
@@ -30,14 +29,14 @@ let b:did_indent = 1
 let b:indent_use_syntax = has("syntax")
 
 setlocal indentexpr=GetPerlIndent()
-setlocal indentkeys+=0=,0),0=or,0=and
+setlocal indentkeys+=0=,0),0],0=or,0=and
 if !b:indent_use_syntax
-  setlocal indentkeys+=0=EO
+    setlocal indentkeys+=0=EO
 endif
 
 " Only define the function once.
 if exists("*GetPerlIndent")
-  finish
+    finish
 endif
 
 let s:cpo_save = &cpo
@@ -45,137 +44,137 @@ set cpo-=C
 
 function GetPerlIndent()
 
-  " Get the line to be indented
-  let cline = getline(v:lnum)
-
-  " Indent POD markers to column 0
-  if cline =~ '^\s*=\L\@!'
-    return 0
-  endif
-
-  " Don't reindent coments on first column
-  if cline =~ '^#.'
-    return 0
-  endif
-
-  " Get current syntax item at the line's first char
-  let csynid = ''
-  if b:indent_use_syntax
-    let csynid = synIDattr(synID(v:lnum,1,0),"name")
-  endif
-
-  " Don't reindent POD and heredocs
-  if csynid == "perlPOD" || csynid == "perlHereDoc" || csynid =~ "^pod"
-    return indent(v:lnum)
-  endif
-
-  " Indent end-of-heredocs markers to column 0
-  if b:indent_use_syntax
-    " Assumes that an end-of-heredoc marker matches \I\i* to avoid
-    " confusion with other types of strings
-    if csynid == "perlStringStartEnd" && cline =~ '^\I\i*$'
-      return 0
+    " Get the line to be indented
+    let cline = getline(v:lnum)
+
+    " Indent POD markers to column 0
+    if cline =~ '^\s*=\L\@!'
+        return 0
+    endif
+
+    " Don't reindent coments on first column
+    if cline =~ '^#.'
+        return 0
+    endif
+
+    " Get current syntax item at the line's first char
+    let csynid = ''
+    if b:indent_use_syntax
+        let csynid = synIDattr(synID(v:lnum,1,0),"name")
     endif
-  else
-    " Without syntax hints, assume that end-of-heredocs markers begin with EO
-    if cline =~ '^\s*EO'
-      return 0
+
+    " Don't reindent POD and heredocs
+    if csynid == "perlPOD" || csynid == "perlHereDoc" || csynid =~ "^pod"
+        return indent(v:lnum)
     endif
-  endif
-
-  " Now get the indent of the previous perl line.
-
-  " Find a non-blank line above the current line.
-  let lnum = prevnonblank(v:lnum - 1)
-  " Hit the start of the file, use zero indent.
-  if lnum == 0
-    return 0
-  endif
-  let line = getline(lnum)
-  let ind = indent(lnum)
-  " Skip heredocs, POD, and comments on 1st column
-  if b:indent_use_syntax
-    let skippin = 2
-    while skippin
-      let synid = synIDattr(synID(lnum,1,0),"name")
-      if (synid == "perlStringStartEnd" && line =~ '^\I\i*$')
-           \ || (skippin != 2 && synid == "perlPOD")
-           \ || (skippin != 2 && synid == "perlHereDoc")
-           \ || synid == "perlComment"
-           \ || synid =~ "^pod"
-       let lnum = prevnonblank(lnum - 1)
-       if lnum == 0
-         return 0
-       endif
-       let line = getline(lnum)
-       let ind = indent(lnum)
-       let skippin = 1
-      else
-       let skippin = 0
-      endif
-    endwhile
-  else
-    if line =~ "^EO"
-      let lnum = search("<<[\"']\\=EO", "bW")
-      let line = getline(lnum)
-      let ind = indent(lnum)
+
+    " Indent end-of-heredocs markers to column 0
+    if b:indent_use_syntax
+        " Assumes that an end-of-heredoc marker matches \I\i* to avoid
+        " confusion with other types of strings
+        if csynid == "perlStringStartEnd" && cline =~ '^\I\i*$'
+            return 0
+        endif
+    else
+        " Without syntax hints, assume that end-of-heredocs markers begin with EO
+        if cline =~ '^\s*EO'
+            return 0
+        endif
     endif
-  endif
-
-  " Indent blocks enclosed by {} or ()
-  if b:indent_use_syntax
-    " Find a real opening brace
-    let bracepos = match(line, '[(){}]', matchend(line, '^\s*[)}]'))
-    while bracepos != -1
-      let synid = synIDattr(synID(lnum, bracepos + 1, 0), "name")
-      " If the brace is highlighted in one of those groups, indent it.
-      " 'perlHereDoc' is here only to handle the case '&foo(<<EOF)'.
-      if synid == ""
-           \ || synid == "perlMatchStartEnd"
-           \ || synid == "perlHereDoc"
-           \ || synid =~ "^perlFiledescStatement"
-           \ || synid =~ '^perl\(Sub\|Block\)Fold'
-       let brace = strpart(line, bracepos, 1)
-       if brace == '(' || brace == '{'
-         let ind = ind + &sw
-       else
-         let ind = ind - &sw
-       endif
-      endif
-      let bracepos = match(line, '[(){}]', bracepos + 1)
-    endwhile
-    let bracepos = matchend(cline, '^\s*[)}]')
-    if bracepos != -1
-      let synid = synIDattr(synID(v:lnum, bracepos, 0), "name")
-      if synid == ""
-           \ || synid == "perlMatchStartEnd"
-           \ || synid =~ '^perl\(Sub\|Block\)Fold'
-       let ind = ind - &sw
-      endif
+
+    " Now get the indent of the previous perl line.
+
+    " Find a non-blank line above the current line.
+    let lnum = prevnonblank(v:lnum - 1)
+    " Hit the start of the file, use zero indent.
+    if lnum == 0
+        return 0
     endif
-  else
-    if line =~ '[{(]\s*\(#[^)}]*\)\=$'
-      let ind = ind + &sw
+    let line = getline(lnum)
+    let ind = indent(lnum)
+    " Skip heredocs, POD, and comments on 1st column
+    if b:indent_use_syntax
+        let skippin = 2
+        while skippin
+            let synid = synIDattr(synID(lnum,1,0),"name")
+            if (synid == "perlStringStartEnd" && line =~ '^\I\i*$')
+                        \ || (skippin != 2 && synid == "perlPOD")
+                        \ || (skippin != 2 && synid == "perlHereDoc")
+                        \ || synid == "perlComment"
+                        \ || synid =~ "^pod"
+                let lnum = prevnonblank(lnum - 1)
+                if lnum == 0
+                    return 0
+                endif
+                let line = getline(lnum)
+                let ind = indent(lnum)
+                let skippin = 1
+            else
+                let skippin = 0
+            endif
+        endwhile
+    else
+        if line =~ "^EO"
+            let lnum = search("<<[\"']\\=EO", "bW")
+            let line = getline(lnum)
+            let ind = indent(lnum)
+        endif
     endif
-    if cline =~ '^\s*[)}]'
-      let ind = ind - &sw
+
+    " Indent blocks enclosed by {}, (), or []
+    if b:indent_use_syntax
+        " Find a real opening brace
+        let bracepos = match(line, '[(){}\[\]]', matchend(line, '^\s*[)}\]]'))
+        while bracepos != -1
+            let synid = synIDattr(synID(lnum, bracepos + 1, 0), "name")
+            " If the brace is highlighted in one of those groups, indent it.
+            " 'perlHereDoc' is here only to handle the case '&foo(<<EOF)'.
+            if synid == ""
+                        \ || synid == "perlMatchStartEnd"
+                        \ || synid == "perlHereDoc"
+                        \ || synid =~ "^perlFiledescStatement"
+                        \ || synid =~ '^perl\(Sub\|Block\)Fold'
+                let brace = strpart(line, bracepos, 1)
+                if brace == '(' || brace == '{' || brace == '['
+                    let ind = ind + &sw
+                else
+                    let ind = ind - &sw
+                endif
+            endif
+            let bracepos = match(line, '[(){}\[\]]', bracepos + 1)
+        endwhile
+        let bracepos = matchend(cline, '^\s*[)}\]]')
+        if bracepos != -1
+            let synid = synIDattr(synID(v:lnum, bracepos, 0), "name")
+            if synid == ""
+                        \ || synid == "perlMatchStartEnd"
+                        \ || synid =~ '^perl\(Sub\|Block\)Fold'
+                let ind = ind - &sw
+            endif
+        endif
+    else
+        if line =~ '[{\[(]\s*\(#[^)}\]]*\)\=$'
+            let ind = ind + &sw
+        endif
+        if cline =~ '^\s*[)}\]]'
+            let ind = ind - &sw
+        endif
     endif
-  endif
 
-  " Indent lines that begin with 'or' or 'and'
-  if cline =~ '^\s*\(or\|and\)\>'
-    if line !~ '^\s*\(or\|and\)\>'
-      let ind = ind + &sw
+    " Indent lines that begin with 'or' or 'and'
+    if cline =~ '^\s*\(or\|and\)\>'
+        if line !~ '^\s*\(or\|and\)\>'
+            let ind = ind + &sw
+        endif
+    elseif line =~ '^\s*\(or\|and\)\>'
+        let ind = ind - &sw
     endif
-  elseif line =~ '^\s*\(or\|and\)\>'
-    let ind = ind - &sw
-  endif
 
-  return ind
+    return ind
 
 endfunction
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
 
-" vim:ts=8:sts=2:sw=2
+" vim:ts=8:sts=4:sw=4:expandtab:ft=vim
index 068609c9a59e537714d374008a965ba9c08d4ebb..0037f8fb1b8520ba194ba63b75db51921a5707c1 100644 (file)
@@ -2,9 +2,9 @@
 " Language:    Mutt setup files
 " Original:    Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
 " Maintainer:  Kyle Wheeler <kyle-muttrc.vim@memoryhole.net>
-" Last Change: 12 Jun 2008
+" Last Change: 9 Aug 2010
 
-" This file covers mutt version 1.5.18 (and most of the mercurial tip)
+" This file covers mutt version 1.5.20 (and most of the mercurial tip)
 " Included are also a few features from 1.4.2.1
 
 " For version 5.x: Clear all syntax items
@@ -33,11 +33,12 @@ syn match muttrcEscape              +[`|]+
 syn match muttrcEscape         +\\$+
 
 " The variables takes the following arguments
-syn match  muttrcString                "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape
-syn region muttrcString                start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction,muttrcShellString
-syn region muttrcString                start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction
+"syn match  muttrcString               contained "=\s*[^ #"'`]\+"lc=1 contains=muttrcEscape
+syn region muttrcString                contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString
+syn region muttrcString                contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction
+syn match muttrcStringNL       contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL
 
-syn region muttrcShellString   matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand,muttrcSet
+syn region muttrcShellString   matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand
 
 syn match  muttrcRXChars       contained /[^\\][][.*?+]\+/hs=s+1
 syn match  muttrcRXChars       contained /[][|()][.*?+]*/
@@ -45,25 +46,47 @@ syn match  muttrcRXChars    contained /['"]^/ms=s+1
 syn match  muttrcRXChars       contained /$['"]/me=e-1
 syn match  muttrcRXChars       contained /\\/
 " Why does muttrcRXString2 work with one \ when muttrcRXString requires two?
-syn region muttrcRXString      contained start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
-syn region muttrcRXString      contained start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
-syn region muttrcRXString2     contained start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
-syn region muttrcRXString2     contained start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
-
-syn region muttrcRXPat         contained start=+'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString nextgroup=muttrcRXPat
-syn region muttrcRXPat         contained start=+"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString nextgroup=muttrcRXPat
-syn match muttrcRXPat          contained /[^-'"#!]\S\+\%(\s\|$\)/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
+syn region muttrcRXString      contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars
+syn region muttrcRXString      contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars
+syn region muttrcRXString      contained skipwhite start=+[^   "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars
+" For some reason, skip refuses to match backslashes here...
+syn region muttrcRXString      contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars
+syn region muttrcRXString      contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars
+syn region muttrcRXString2     contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars
+syn region muttrcRXString2     contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars
+
+" these must be kept synchronized with muttrcRXString, but are intended for
+" muttrcRXHooks
+syn region muttrcRXHookString  contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString  contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString  contained keepend skipwhite start=+[^   "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString  contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn region muttrcRXHookString  contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL
+syn match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+
+" these are exclusively for args lists (e.g. -rx pat pat pat ...)
+syn region muttrcRXPat         contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syn region muttrcRXPat         contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat
+syn match muttrcRXPat          contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat
 syn match muttrcRXDef          contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat
 
 syn match muttrcSpecial                +\(['"]\)!\1+
 
-" Numbers and Quadoptions may be surrounded by " or '
-syn match muttrcNumber         /=\s*\d\+/lc=1
-syn match muttrcNumber         /=\s*"\d\+"/lc=1
-syn match muttrcNumber         /=\s*'\d\+'/lc=1
-syn match muttrcQuadopt                +=\s*\%(ask-\)\=\%(yes\|no\)+lc=1
-syn match muttrcQuadopt                +=\s*"\%(ask-\)\=\%(yes\|no\)"+lc=1
-syn match muttrcQuadopt                +=\s*'\%(ask-\)\=\%(yes\|no\)'+lc=1
+syn match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable
+syn match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn 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)
 syn match muttrcEmail          "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+"
@@ -78,170 +101,173 @@ syn match   muttrcKeyName        contained "\\[trne]"
 syn match   muttrcKeyName      contained "\c<\%(BackSpace\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>"
 syn match   muttrcKeyName      contained "<F[0-9]\+>"
 
-syn keyword muttrcVarBool      contained allow_8bit allow_ansi arrow_cursor ascii_chars askbcc
-syn keyword muttrcVarBool      contained askcc attach_split auto_tag autoedit beep beep_new
-syn keyword muttrcVarBool      contained bounce_delivered braille_friendly check_new check_mbox_size collapse_unread
-syn keyword muttrcVarBool      contained confirmappend confirmcreate crypt_autoencrypt crypt_autopgp
-syn keyword muttrcVarBool      contained crypt_autosign crypt_autosmime crypt_replyencrypt
-syn keyword muttrcVarBool      contained crypt_replysign crypt_replysignencrypted crypt_timestamp
-syn keyword muttrcVarBool      contained crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads
-syn keyword muttrcVarBool      contained edit_hdrs edit_headers encode_from envelope_from fast_reply
-syn keyword muttrcVarBool      contained fcc_attach fcc_clear followup_to force_name forw_decode
-syn keyword muttrcVarBool      contained forw_decrypt forw_quote forward_decode forward_decrypt
-syn keyword muttrcVarBool      contained forward_quote hdrs header help hidden_host hide_limited
-syn keyword muttrcVarBool      contained hide_missing hide_thread_subject hide_top_limited
-syn keyword muttrcVarBool      contained hide_top_missing ignore_linear_white_space ignore_list_reply_to imap_check_subscribed
-syn keyword muttrcVarBool      contained imap_list_subscribed imap_passive imap_peek imap_servernoise
-syn keyword muttrcVarBool      contained implicit_autoview include_onlyfirst keep_flagged
-syn keyword muttrcVarBool      contained mailcap_sanitize maildir_header_cache_verify maildir_trash
-syn keyword muttrcVarBool      contained mark_old markers menu_move_off menu_scroll message_cache_clean meta_key
-syn keyword muttrcVarBool      contained metoo mh_purge mime_forward_decode narrow_tree pager_stop
-syn keyword muttrcVarBool      contained pgp_auto_decode pgp_auto_traditional pgp_autoencrypt
-syn keyword muttrcVarBool      contained pgp_autoinline pgp_autosign pgp_check_exit
-syn keyword muttrcVarBool      contained pgp_create_traditional pgp_ignore_subkeys pgp_long_ids
-syn keyword muttrcVarBool      contained pgp_replyencrypt pgp_replyinline pgp_replysign
-syn keyword muttrcVarBool      contained pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable
-syn keyword muttrcVarBool      contained pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split
-syn keyword muttrcVarBool      contained pop_auth_try_all pop_last print_decode print_split
-syn keyword muttrcVarBool      contained prompt_after read_only reply_self resolve reverse_alias
-syn keyword muttrcVarBool      contained reverse_name reverse_realname rfc2047_parameters save_address
-syn keyword muttrcVarBool      contained save_empty save_name score sig_dashes sig_on_top
-syn keyword muttrcVarBool      contained smart_wrap smime_ask_cert_label smime_decrypt_use_default_key
-syn keyword muttrcVarBool      contained smime_is_default sort_re ssl_force_tls ssl_use_sslv2
-syn keyword muttrcVarBool      contained ssl_use_sslv3 ssl_use_tlsv1 ssl_usesystemcerts status_on_top
-syn keyword muttrcVarBool      contained strict_mime strict_threads suspend text_flowed thorough_search
-syn keyword muttrcVarBool      contained thread_received tilde uncollapse_jump use_8bitmime
-syn keyword muttrcVarBool      contained use_domain use_envelope_from use_from use_idn use_ipv6
-syn keyword muttrcVarBool      contained user_agent wait_key weed wrap_search write_bcc
-
-syn keyword muttrcVarBool      contained noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc
-syn keyword muttrcVarBool      contained noaskcc noattach_split noauto_tag noautoedit nobeep nobeep_new
-syn keyword muttrcVarBool      contained nobounce_delivered nobraille_friendly nocheck_new nocollapse_unread
-syn keyword muttrcVarBool      contained noconfirmappend noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp
-syn keyword muttrcVarBool      contained nocrypt_autosign nocrypt_autosmime nocrypt_replyencrypt
-syn keyword muttrcVarBool      contained nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp
-syn keyword muttrcVarBool      contained nocrypt_use_gpgme nodelete_untag nodigest_collapse noduplicate_threads
-syn keyword muttrcVarBool      contained noedit_hdrs noedit_headers noencode_from noenvelope_from nofast_reply
-syn keyword muttrcVarBool      contained nofcc_attach nofcc_clear nofollowup_to noforce_name noforw_decode
-syn keyword muttrcVarBool      contained noforw_decrypt noforw_quote noforward_decode noforward_decrypt
-syn keyword muttrcVarBool      contained noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited
-syn keyword muttrcVarBool      contained nohide_missing nohide_thread_subject nohide_top_limited
-syn keyword muttrcVarBool      contained nohide_top_missing noignore_list_reply_to noimap_check_subscribed
-syn keyword muttrcVarBool      contained noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise
-syn keyword muttrcVarBool      contained noimplicit_autoview noinclude_onlyfirst nokeep_flagged
-syn keyword muttrcVarBool      contained nomailcap_sanitize nomaildir_header_cache_verify nomaildir_trash
-syn keyword muttrcVarBool      contained nomark_old nomarkers nomenu_move_off nomenu_scroll nometa_key
-syn keyword muttrcVarBool      contained nometoo nomh_purge nomime_forward_decode nonarrow_tree nopager_stop
-syn keyword muttrcVarBool      contained nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt
-syn keyword muttrcVarBool      contained nopgp_autoinline nopgp_autosign nopgp_check_exit
-syn keyword muttrcVarBool      contained nopgp_create_traditional nopgp_ignore_subkeys nopgp_long_ids
-syn keyword muttrcVarBool      contained nopgp_replyencrypt nopgp_replyinline nopgp_replysign
-syn keyword muttrcVarBool      contained nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable
-syn keyword muttrcVarBool      contained nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split
-syn keyword muttrcVarBool      contained nopop_auth_try_all nopop_last noprint_decode noprint_split
-syn keyword muttrcVarBool      contained noprompt_after noread_only noreply_self noresolve noreverse_alias
-syn keyword muttrcVarBool      contained noreverse_name noreverse_realname norfc2047_parameters nosave_address
-syn keyword muttrcVarBool      contained nosave_empty nosave_name noscore nosig_dashes nosig_on_top
-syn keyword muttrcVarBool      contained nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key
-syn keyword muttrcVarBool      contained nosmime_is_default nosort_re nossl_force_tls nossl_use_sslv2
-syn keyword muttrcVarBool      contained nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts nostatus_on_top
-syn keyword muttrcVarBool      contained nostrict_threads nosuspend notext_flowed nothorough_search
-syn keyword muttrcVarBool      contained nothread_received notilde nouncollapse_jump nouse_8bitmime
-syn keyword muttrcVarBool      contained nouse_domain nouse_envelope_from nouse_from nouse_idn nouse_ipv6
-syn keyword muttrcVarBool      contained nouser_agent nowait_key noweed nowrap_search nowrite_bcc
-
-syn keyword muttrcVarBool      contained invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc
-syn keyword muttrcVarBool      contained invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new
-syn keyword muttrcVarBool      contained invbounce_delivered invbraille_friendly invcheck_new invcollapse_unread
-syn keyword muttrcVarBool      contained invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp
-syn keyword muttrcVarBool      contained invcrypt_autosign invcrypt_autosmime invcrypt_replyencrypt
-syn keyword muttrcVarBool      contained invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp
-syn keyword muttrcVarBool      contained invcrypt_use_gpgme invdelete_untag invdigest_collapse invduplicate_threads
-syn keyword muttrcVarBool      contained invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply
-syn keyword muttrcVarBool      contained invfcc_attach invfcc_clear invfollowup_to invforce_name invforw_decode
-syn keyword muttrcVarBool      contained invforw_decrypt invforw_quote invforward_decode invforward_decrypt
-syn keyword muttrcVarBool      contained invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited
-syn keyword muttrcVarBool      contained invhide_missing invhide_thread_subject invhide_top_limited
-syn keyword muttrcVarBool      contained invhide_top_missing invignore_list_reply_to invimap_check_subscribed
-syn keyword muttrcVarBool      contained invimap_list_subscribed invimap_passive invimap_peek invimap_servernoise
-syn keyword muttrcVarBool      contained invimplicit_autoview invinclude_onlyfirst invkeep_flagged
-syn keyword muttrcVarBool      contained invmailcap_sanitize invmaildir_header_cache_verify invmaildir_trash
-syn keyword muttrcVarBool      contained invmark_old invmarkers invmenu_move_off invmenu_scroll invmeta_key
-syn keyword muttrcVarBool      contained invmetoo invmh_purge invmime_forward_decode invnarrow_tree invpager_stop
-syn keyword muttrcVarBool      contained invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt
-syn keyword muttrcVarBool      contained invpgp_autoinline invpgp_autosign invpgp_check_exit
-syn keyword muttrcVarBool      contained invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids
-syn keyword muttrcVarBool      contained invpgp_replyencrypt invpgp_replyinline invpgp_replysign
-syn keyword muttrcVarBool      contained invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable
-syn keyword muttrcVarBool      contained invpgp_strict_enc invpgp_use_gpg_agent invpipe_decode invpipe_split
-syn keyword muttrcVarBool      contained invpop_auth_try_all invpop_last invprint_decode invprint_split
-syn keyword muttrcVarBool      contained invprompt_after invread_only invreply_self invresolve invreverse_alias
-syn keyword muttrcVarBool      contained invreverse_name invreverse_realname invrfc2047_parameters invsave_address
-syn keyword muttrcVarBool      contained invsave_empty invsave_name invscore invsig_dashes invsig_on_top
-syn keyword muttrcVarBool      contained invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key
-syn keyword muttrcVarBool      contained invsmime_is_default invsort_re invssl_force_tls invssl_use_sslv2
-syn keyword muttrcVarBool      contained invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts invstatus_on_top
-syn keyword muttrcVarBool      contained invstrict_threads invsuspend invtext_flowed invthorough_search
-syn keyword muttrcVarBool      contained invthread_received invtilde invuncollapse_jump invuse_8bitmime
-syn keyword muttrcVarBool      contained invuse_domain invuse_envelope_from invuse_from invuse_idn invuse_ipv6
-syn keyword muttrcVarBool      contained invuser_agent invwait_key invweed invwrap_search invwrite_bcc
-
-syn keyword muttrcVarQuad      contained abort_nosubject abort_unmodified bounce copy
-syn keyword muttrcVarQuad      contained crypt_verify_sig delete forward_edit honor_followup_to
-syn keyword muttrcVarQuad      contained include mime_forward mime_forward_rest mime_fwd move
-syn keyword muttrcVarQuad      contained pgp_mime_auto pgp_verify_sig pop_delete pop_reconnect
-syn keyword muttrcVarQuad      contained postpone print quit recall reply_to ssl_starttls
-
-syn keyword muttrcVarQuad      contained noabort_nosubject noabort_unmodified nobounce nocopy
-syn keyword muttrcVarQuad      contained nocrypt_verify_sig nodelete noforward_edit nohonor_followup_to
-syn keyword muttrcVarQuad      contained noinclude nomime_forward nomime_forward_rest nomime_fwd nomove
-syn keyword muttrcVarQuad      contained nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect
-syn keyword muttrcVarQuad      contained nopostpone noprint noquit norecall noreply_to nossl_starttls
-
-syn keyword muttrcVarQuad      contained invabort_nosubject invabort_unmodified invbounce invcopy
-syn keyword muttrcVarQuad      contained invcrypt_verify_sig invdelete invforward_edit invhonor_followup_to
-syn keyword muttrcVarQuad      contained invinclude invmime_forward invmime_forward_rest invmime_fwd invmove
-syn keyword muttrcVarQuad      contained invpgp_mime_auto invpgp_verify_sig invpop_delete invpop_reconnect
-syn keyword muttrcVarQuad      contained invpostpone invprint invquit invrecall invreply_to invssl_starttls
-
-syn keyword muttrcVarNum       contained connect_timeout history imap_keepalive mail_check menu_context net_inc
-syn keyword muttrcVarNum       contained pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc
-syn keyword muttrcVarNum       contained save_history score_threshold_delete score_threshold_flag
-syn keyword muttrcVarNum       contained score_threshold_read sendmail_wait sleep_time smime_timeout
-syn keyword muttrcVarNum       contained ssl_min_dh_prime_bits timeout time_inc wrap wrapmargin write_inc
+syn keyword muttrcVarBool      skipwhite contained allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split auto_tag autoedit beep beep_new nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained bounce_delivered braille_friendly check_new check_mbox_size nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained collapse_unread confirmappend confirmcreate crypt_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained crypt_autopgp crypt_autosign crypt_autosmime crypt_replyencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained crypt_replysign crypt_replysignencrypted crypt_timestamp nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained edit_hdrs edit_headers encode_from envelope_from fast_reply nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained fcc_clear followup_to force_name forw_decode nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained forw_decrypt forw_quote forward_decode forward_decrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained forward_quote hdrs header help hidden_host hide_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained hide_missing hide_thread_subject hide_top_limited nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained hide_top_missing honor_disposition ignore_linear_white_space ignore_list_reply_to imap_check_subscribed nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained imap_list_subscribed imap_passive imap_peek imap_servernoise nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained implicit_autoview include_onlyfirst keep_flagged nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained mailcap_sanitize maildir_header_cache_verify maildir_trash nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained mark_old markers menu_move_off menu_scroll message_cache_clean meta_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained metoo mh_purge mime_forward_decode narrow_tree pager_stop nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pgp_auto_decode pgp_auto_traditional pgp_autoencrypt nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pgp_autoinline pgp_autosign pgp_check_exit nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pgp_create_traditional pgp_ignore_subkeys pgp_long_ids nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pgp_replyencrypt pgp_replyinline pgp_replysign nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pgp_replysignencrypted pgp_retainable_sigs pgp_show_unusable nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained pop_auth_try_all pop_last print_decode print_split nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained prompt_after read_only reply_self resolve reverse_alias nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained reverse_name reverse_realname rfc2047_parameters save_address nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained save_empty save_name score sig_dashes sig_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained smart_wrap smime_ask_cert_label smime_decrypt_use_default_key nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained smime_is_default sort_re ssl_force_tls ssl_use_sslv2 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained ssl_use_sslv3 ssl_use_tlsv1 ssl_usesystemcerts ssl_verify_dates ssl_verify_host status_on_top nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained strict_mime strict_threads suspend text_flowed thorough_search nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained thread_received tilde uncollapse_jump use_8bitmime nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained use_domain use_envelope_from use_from use_idn use_ipv6 nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained user_agent wait_key weed wrap_search write_bcc nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarBool      skipwhite contained noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noaskcc noattach_split noauto_tag noautoedit nobeep nobeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nobounce_delivered nobraille_friendly nocheck_new nocollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noconfirmappend noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nocrypt_autosign nocrypt_autosmime nocrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nocrypt_replysign nocrypt_replysignencrypted nocrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nocrypt_use_gpgme nodelete_untag nodigest_collapse noduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noedit_hdrs noedit_headers noencode_from noenvelope_from nofast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nofcc_clear nofollowup_to noforce_name noforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noforw_decrypt noforw_quote noforward_decode noforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noforward_quote nohdrs noheader nohelp nohidden_host nohide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nohide_missing nohide_thread_subject nohide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nohide_top_missing nohonor_disposition noignore_list_reply_to noimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noimplicit_autoview noinclude_onlyfirst nokeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nomailcap_sanitize nomaildir_header_cache_verify nomaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nomark_old nomarkers nomenu_move_off nomenu_scroll nometa_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nometoo nomh_purge nomime_forward_decode nonarrow_tree nopager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopgp_autoinline nopgp_autosign nopgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopgp_create_traditional nopgp_ignore_subkeys nopgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopgp_replyencrypt nopgp_replyinline nopgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopgp_replysignencrypted nopgp_retainable_sigs nopgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nopop_auth_try_all nopop_last noprint_decode noprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noprompt_after noread_only noreply_self noresolve noreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained noreverse_name noreverse_realname norfc2047_parameters nosave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nosave_empty nosave_name noscore nosig_dashes nosig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nosmart_wrap nosmime_ask_cert_label nosmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nosmime_is_default nosort_re nossl_force_tls nossl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts nostatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nostrict_threads nosuspend notext_flowed nothorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nothread_received notilde nouncollapse_jump nouse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nouse_domain nouse_envelope_from nouse_from nouse_idn nouse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained nouser_agent nowait_key noweed nowrap_search nowrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarBool      skipwhite contained invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invbounce_delivered invbraille_friendly invcheck_new invcollapse_unread nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invcrypt_autosign invcrypt_autosmime invcrypt_replyencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invcrypt_replysign invcrypt_replysignencrypted invcrypt_timestamp nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invcrypt_use_gpgme invdelete_untag invdigest_collapse invduplicate_threads nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invfcc_clear invfollowup_to invforce_name invforw_decode nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invforw_decrypt invforw_quote invforward_decode invforward_decrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invforward_quote invhdrs invheader invhelp invhidden_host invhide_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invhide_missing invhide_thread_subject invhide_top_limited nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invhide_top_missing invhonor_disposition invignore_list_reply_to invimap_check_subscribed nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invimap_list_subscribed invimap_passive invimap_peek invimap_servernoise nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invimplicit_autoview invinclude_onlyfirst invkeep_flagged nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invmailcap_sanitize invmaildir_header_cache_verify invmaildir_trash nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invmark_old invmarkers invmenu_move_off invmenu_scroll invmeta_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invmetoo invmh_purge invmime_forward_decode invnarrow_tree invpager_stop nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpgp_autoinline invpgp_autosign invpgp_check_exit nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpgp_replyencrypt invpgp_replyinline invpgp_replysign nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpgp_replysignencrypted invpgp_retainable_sigs invpgp_show_unusable nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpgp_strict_enc invpgp_use_gpg_agent invpipe_decode invpipe_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invpop_auth_try_all invpop_last invprint_decode invprint_split nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invprompt_after invread_only invreply_self invresolve invreverse_alias nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invreverse_name invreverse_realname invrfc2047_parameters invsave_address nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invsave_empty invsave_name invscore invsig_dashes invsig_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invsmart_wrap invsmime_ask_cert_label invsmime_decrypt_use_default_key nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invsmime_is_default invsort_re invssl_force_tls invssl_use_sslv2 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts invstatus_on_top nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invstrict_threads invsuspend invtext_flowed invthorough_search nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invthread_received invtilde invuncollapse_jump invuse_8bitmime nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invuse_domain invuse_envelope_from invuse_from invuse_idn invuse_ipv6 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarBool      skipwhite contained invuser_agent invwait_key invweed invwrap_search invwrite_bcc nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarQuad      skipwhite contained abort_nosubject abort_unmodified bounce copy nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained crypt_verify_sig delete fcc_attach forward_edit honor_followup_to nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained include mime_forward mime_forward_rest mime_fwd move nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained pgp_mime_auto pgp_verify_sig pop_delete pop_reconnect nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained postpone print quit recall reply_to ssl_starttls nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarQuad      skipwhite contained noabort_nosubject noabort_unmodified nobounce nocopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained nocrypt_verify_sig nodelete nofcc_attach noforward_edit nohonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained noinclude nomime_forward nomime_forward_rest nomime_fwd nomove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained nopostpone noprint noquit norecall noreply_to nossl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarQuad      skipwhite contained invabort_nosubject invabort_unmodified invbounce invcopy nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained invcrypt_verify_sig invdelete invfcc_attach invforward_edit invhonor_followup_to nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained invinclude invmime_forward invmime_forward_rest invmime_fwd invmove nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained invpgp_mime_auto invpgp_verify_sig invpop_delete invpop_reconnect nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarQuad      skipwhite contained invpostpone invprint invquit invrecall invreply_to invssl_starttls nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn keyword muttrcVarNum       skipwhite contained connect_timeout history imap_keepalive imap_pipeline_depth mail_check nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarNum       skipwhite contained menu_context net_inc pager_context pager_index_lines pgp_timeout nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarNum       skipwhite contained pop_checkinterval read_inc save_history score_threshold_delete nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarNum       skipwhite contained score_threshold_flag score_threshold_read search_context sendmail_wait sleep_time nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarNum       skipwhite contained smime_timeout ssl_min_dh_prime_bits timeout time_inc wrap wrapmargin nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarNum       skipwhite contained write_inc nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn match muttrcFormatErrors contained /%./
 
 syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/
 syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/
 syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/
 
-syn match muttrcFormatErrors contained /%./
-
-syn region muttrcIndexFormatStr        contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes
-syn region muttrcIndexFormatStr        contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes
-syn region muttrcQueryFormatStr contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors
-syn region muttrcAliasFormatStr        contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors
-syn region muttrcAliasFormatStr        contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors
-syn region muttrcAttachFormatStr       contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors
-syn region muttrcAttachFormatStr       contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors
-syn region muttrcComposeFormatStr      contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors
-syn region muttrcComposeFormatStr      contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors
-syn region muttrcFolderFormatStr       contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors
-syn region muttrcFolderFormatStr       contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors
-syn region muttrcMixFormatStr  contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors
-syn region muttrcMixFormatStr  contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors
-syn region muttrcPGPFormatStr  contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes
-syn region muttrcPGPFormatStr  contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes
-syn region muttrcPGPCmdFormatStr       contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors
-syn region muttrcPGPCmdFormatStr       contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors
-syn region muttrcStatusFormatStr       contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors
-syn region muttrcStatusFormatStr       contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors
-syn region muttrcPGPGetKeysFormatStr   contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors
-syn region muttrcPGPGetKeysFormatStr   contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors
-syn region muttrcSmimeFormatStr        contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors
-syn region muttrcSmimeFormatStr        contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors
+syn region muttrcIndexFormatStr        contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcIndexFormatStr        contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAliasFormatStr        contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAliasFormatStr        contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAttachFormatStr       contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcAttachFormatStr       contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcComposeFormatStr      contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcComposeFormatStr      contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcFolderFormatStr       contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcFolderFormatStr       contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcMixFormatStr  contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcMixFormatStr  contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPFormatStr  contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPFormatStr  contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPCmdFormatStr       contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPCmdFormatStr       contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStatusFormatStr       contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStatusFormatStr       contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPGetKeysFormatStr   contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcPGPGetKeysFormatStr   contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcSmimeFormatStr        contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcSmimeFormatStr        contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 " The following info was pulled from hdr_format_str in hdrline.c
 syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/
+syn match muttrcIndexFormatEscapes contained /%[>|*]./
 syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2
 " The following info was pulled from alias_format_str in addrbook.c
 syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/
@@ -257,7 +283,7 @@ syn match muttrcFormatConditionals2 contained /[^?]*?/
 syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/
 syn match muttrcComposeFormatEscapes contained /%[>|*]./
 " The following info was pulled from folder_format_str in browser.c
-syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CdfFglNstu%]/
+syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CDdfFglNstu%]/
 syn match muttrcFolderFormatEscapes contained /%[>|*]./
 syn match muttrcFolderFormatConditionals contained /%?[N]?/
 " The following info was pulled from mix_entry_fmt in remailer.c
@@ -291,76 +317,89 @@ syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftim
 syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes
 syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes
 
-syn keyword muttrcVarStr       contained attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
-syn match muttrcVarEqualsIdxFmt contained " *= *" nextgroup=muttrcIndexFormatStr
-syn keyword muttrcVarStr       contained alias_format nextgroup=muttrcVarEqualsAliasFmt
-syn match muttrcVarEqualsAliasFmt contained " *= *" nextgroup=muttrcAliasFormatStr
-syn keyword muttrcVarStr       contained attach_format nextgroup=muttrcVarEqualsAttachFmt
-syn match muttrcVarEqualsAttachFmt contained " *= *" nextgroup=muttrcAttachFormatStr
-syn keyword muttrcVarStr       contained compose_format nextgroup=muttrcVarEqualsComposeFmt
-syn match muttrcVarEqualsComposeFmt contained " *= *" nextgroup=muttrcComposeFormatStr
-syn keyword muttrcVarStr       contained folder_format nextgroup=muttrcVarEqualsFolderFmt
-syn match muttrcVarEqualsFolderFmt contained " *= *" nextgroup=muttrcFolderFormatStr
-syn keyword muttrcVarStr       contained mix_entry_format nextgroup=muttrcVarEqualsMixFmt
-syn match muttrcVarEqualsMixFmt contained " *= *" nextgroup=muttrcMixFormatStr
-syn keyword muttrcVarStr       contained pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
-syn match muttrcVarEqualsPGPFmt contained " *= *" nextgroup=muttrcPGPFormatStr
-syn keyword muttrcVarStr       contained query_format nextgroup=muttrcVarEqualsQueryFmt
-syn match muttrcVarEqualsQueryFmt contained " *= *" nextgroup=muttrcQueryFormatStr
-syn keyword muttrcVarStr       contained pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt
-syn match muttrcVarEqualsPGPCmdFmt contained " *= *" nextgroup=muttrcPGPCmdFormatStr
-syn keyword muttrcVarStr       contained status_format nextgroup=muttrcVarEqualsStatusFmt
-syn match muttrcVarEqualsStatusFmt contained " *= *" nextgroup=muttrcStatusFormatStr
-syn keyword muttrcVarStr       contained pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
-syn match muttrcVarEqualsPGPGetKeysFmt contained " *= *" nextgroup=muttrcPGPGetKeysFormatStr
-syn keyword muttrcVarStr       contained smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt
-syn match muttrcVarEqualsSmimeFmt contained " *= *" nextgroup=muttrcSmimeFormatStr
-
-syn match muttrcVarStr         contained 'my_[a-zA-Z0-9_]\+'
-syn keyword muttrcVarStr       contained alias_file assumed_charset attach_charset attach_sep
-syn keyword muttrcVarStr       contained certificate_file charset config_charset content_type
-syn keyword muttrcVarStr       contained date_format default_hook display_filter dotlock_program dsn_notify
-syn keyword muttrcVarStr       contained dsn_return editor entropy_file envelope_from_address escape folder
-syn keyword muttrcVarStr       contained forw_format forward_format from gecos_mask hdr_format
-syn keyword muttrcVarStr       contained header_cache header_cache_pagesize history_file hostname imap_authenticators
-syn keyword muttrcVarStr       contained imap_delim_chars imap_headers imap_idle imap_login imap_pass
-syn keyword muttrcVarStr       contained imap_user indent_str indent_string ispell locale mailcap_path
-syn keyword muttrcVarStr       contained mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied
-syn keyword muttrcVarStr       contained mh_seq_unseen mixmaster msg_format pager
-syn keyword muttrcVarStr       contained pgp_good_sign 
-syn keyword muttrcVarStr       contained pgp_mime_signature_filename
-syn keyword muttrcVarStr       contained pgp_mime_signature_description pgp_sign_as
-syn keyword muttrcVarStr       contained pgp_sort_keys
-syn keyword muttrcVarStr       contained pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str
-syn keyword muttrcVarStr       contained post_indent_string postponed preconnect print_cmd print_command
-syn keyword muttrcVarStr       contained query_command quote_regexp realname record reply_regexp send_charset
-syn keyword muttrcVarStr       contained sendmail shell signature simple_search smileys smime_ca_location
-syn keyword muttrcVarStr       contained smime_certificates smime_default_key
-syn keyword muttrcVarStr       contained smime_encrypt_with
-syn keyword muttrcVarStr       contained smime_keys smime_sign_as
-syn keyword muttrcVarStr       contained smtp_url smtp_authenticators smtp_pass sort sort_alias sort_aux
-syn keyword muttrcVarStr       contained sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert
-syn keyword muttrcVarStr       contained status_chars tmpdir to_chars tunnel visual
+syn keyword muttrcVarStr       contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt
+syn match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr
+syn keyword muttrcVarStr       contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt
+syn match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr
+syn keyword muttrcVarStr       contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt
+syn match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr
+syn keyword muttrcVarStr       contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt
+syn match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr
+syn keyword muttrcVarStr       contained skipwhite folder_format nextgroup=muttrcVarEqualsFolderFmt
+syn match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr
+syn keyword muttrcVarStr       contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt
+syn match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr
+syn keyword muttrcVarStr       contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt
+syn match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr
+syn keyword muttrcVarStr       contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt
+syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr
+syn keyword muttrcVarStr       contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt
+syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr
+syn keyword muttrcVarStr       contained skipwhite status_format nextgroup=muttrcVarEqualsStatusFmt
+syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr
+syn keyword muttrcVarStr       contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt
+syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr
+syn keyword muttrcVarStr       contained skipwhite smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt
+syn match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr
+syn keyword muttrcVarStr       contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt
+syn match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr
+
+syn match muttrcVPrefix                contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+
+syn match muttrcVarStr         contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite alias_file assumed_charset attach_charset attach_sep nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite certificate_file charset config_charset content_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite default_hook display_filter dotlock_program dsn_notify nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite dsn_return editor entropy_file envelope_from_address escape folder nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite forw_format forward_format from gecos_mask hdr_format nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite header_cache header_cache_compress header_cache_pagesize nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite history_file hostname imap_authenticators nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite imap_delim_chars imap_headers imap_idle imap_login imap_pass nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite imap_user indent_str indent_string ispell locale mailcap_path nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite mh_seq_unseen mixmaster msg_format pager nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite pgp_good_sign  nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite pgp_mime_signature_filename nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite pgp_mime_signature_description pgp_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite pgp_sort_keys nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite pipe_sep pop_authenticators pop_host pop_pass pop_user post_indent_str nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite post_indent_string postponed preconnect print_cmd print_command nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite query_command quote_regexp realname record reply_regexp send_charset nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite sendmail shell signature simple_search smileys smime_ca_location nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite smime_certificates smime_default_key nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite smime_encrypt_with nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite smime_keys smime_sign_as nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite smtp_url smtp_authenticators smtp_pass sort sort_alias sort_aux nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite sort_browser spam_separator spoolfile ssl_ca_certificates_file ssl_client_cert nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcVarStr       contained skipwhite status_chars tmpdir to_chars tunnel visual nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 " Present in 1.4.2.1 (pgp_create_traditional was a bool then)
-syn keyword muttrcVarBool      contained imap_force_ssl imap_force_ssl noinvimap_force_ssl
+syn keyword muttrcVarBool      contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 "syn keyword muttrcVarQuad     contained pgp_create_traditional nopgp_create_traditional invpgp_create_traditional
-syn keyword muttrcVarStr       contained alternates
+syn keyword muttrcVarStr       contained skipwhite alternates nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 syn keyword muttrcMenu         contained alias attach browser compose editor index pager postpone pgp mix query generic
 syn match muttrcMenuList "\S\+" contained contains=muttrcMenu
 syn match muttrcMenuCommas /,/ contained
 
-syn keyword muttrcCommand      auto_view alternative_order charset-hook exec unalternative_order
+syn keyword muttrcHooks                contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook
+
+syn keyword muttrcCommand      auto_view alternative_order exec unalternative_order
 syn keyword muttrcCommand      hdr_order iconv-hook ignore mailboxes my_hdr unmailboxes
 syn keyword muttrcCommand      pgp-hook push score source unauto_view unhdr_order
 syn keyword muttrcCommand      unignore unmono unmy_hdr unscore
-syn keyword muttrcCommand      mime_lookup unmime_lookup spam ungroup
-syn keyword muttrcCommand      nospam unalternative_order
+syn keyword muttrcCommand      mime_lookup unmime_lookup ungroup
+syn keyword muttrcCommand      unalternative_order
+syn keyword muttrcCommand      skipwhite charset-hook nextgroup=muttrcRXString
+syn keyword muttrcCommand      skipwhite unhook nextgroup=muttrcHooks
+
+syn keyword muttrcCommand      skipwhite spam nextgroup=muttrcSpamPattern
+syn region muttrcSpamPattern   contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
+syn region muttrcSpamPattern   contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL
 
-syn keyword muttrcHooks                contained account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook
-syn keyword muttrcUnhook       contained unhook
-syn region muttrcUnhookLine    keepend start=+^\s*unhook\s+ skip=+\\$+ end=+$+ contains=muttrcUnhook,muttrcHooks,muttrcUnHighlightSpace,muttrcComment
+syn keyword muttrcCommand      skipwhite nospam nextgroup=muttrcNoSpamPattern
+syn region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern
+syn region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern
 
 syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType
 syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType
@@ -368,20 +407,23 @@ syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgro
 
 syn match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)"
 
-syn keyword muttrcListsKeyword contained lists unlists
-syn region muttrcListsLine     keepend start=+^\s*\%(un\)\?lists\s+ skip=+\\$+ end=+$+ contains=muttrcListsKeyword,muttrcRXPat,muttrcGroupDef,muttrcUnHighlightSpace,muttrcComment
+syn keyword muttrcAsterisk     contained *
+syn keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment
+syn keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment
 
-syn keyword muttrcSubscribeKeyword     contained subscribe unsubscribe
-syn region muttrcSubscribeLine         keepend start=+^\s*\%(un\)\?subscribe\s+ skip=+\\$+ end=+$+ contains=muttrcSubscribeKeyword,muttrcRXPat,muttrcGroupDef,muttrcUnHighlightSpace,muttrcComment
+syn keyword muttrcSubscribeKeyword     subscribe nextgroup=muttrcGroupDef,muttrcComment
+syn keyword muttrcSubscribeKeyword     unsubscribe nextgroup=muttrcAsterisk,muttrcComment
 
 syn keyword muttrcAlternateKeyword contained alternates unalternates
 syn region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment
 
-syn match muttrcVariable       "\$[a-zA-Z_-]\+"
+syn match muttrcVariable       contained "\\\@<!\$[a-zA-Z_-]\+"
+syn match muttrcEscapedVariable        contained "\\\$[a-zA-Z_-]\+"
 
 syn match muttrcBadAction      contained "[^<>]\+" contains=muttrcEmail
 syn match muttrcFunction       contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|parent\|pipe\|postpone\|print\|recall\|resend\|save\|send\|tag\|undelete\)-message\>"
-syn match muttrcFunction       contained "\<\%(delete\|next\|previous\|read\|tag\|undelete\)-thread\>"
+syn match muttrcFunction       contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>"
+syn match muttrcFunction       contained "\<link-threads\>"
 syn match muttrcFunction       contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>"
 syn match muttrcFunction       contained "\<\%(delete\|filter\|first\|last\|next\|pipe\|previous\|print\|save\|select\|tag\|undelete\)-entry\>"
 syn match muttrcFunction       contained "\<attach-\%(file\|key\)\>"
@@ -396,12 +438,13 @@ syn match muttrcFunction  contained "\<enter-\%(command\|mask\)\>"
 syn match muttrcFunction       contained "\<half-\%(up\|down\)\>"
 syn match muttrcFunction       contained "\<history-\%(up\|down\)\>"
 syn match muttrcFunction       contained "\<kill-\%(eol\|eow\|line\)\>"
-syn match muttrcFunction       contained "\<next-\%(line\|new\|page\|subthread\|undeleted\|unread\|unread-mailbox\)\>"
-syn match muttrcFunction       contained "\<previous-\%(line\|new\|page\|subthread\|undeleted\|unread\)\>"
+syn match muttrcFunction       contained "\<next-\%(line\|new\%(-then-unread\)\?\|page\|subthread\|undeleted\|unread\|unread-mailbox\)\>"
+syn match muttrcFunction       contained "\<previous-\%(line\|new\%(-then-unread\)\?\|page\|subthread\|undeleted\|unread\)\>"
 syn match muttrcFunction       contained "\<search\%(-\%(next\|opposite\|reverse\|toggle\)\)\?\>"
 syn match muttrcFunction       contained "\<show-\%(limit\|version\)\>"
 syn match muttrcFunction       contained "\<sort-\%(mailbox\|reverse\)\>"
-syn match muttrcFunction       contained "\<tag-\%(pattern\|prefix\%(-cond\)\?\)\>"
+syn match muttrcFunction       contained "\<tag-\%(pattern\|\%(sub\)\?thread\|prefix\%(-cond\)\?\)\>"
+syn match muttrcFunction       contained "\<end-cond\>"
 syn match muttrcFunction       contained "\<toggle-\%(mailboxes\|new\|quoted\|subscribed\|unlink\|write\)\>"
 syn match muttrcFunction       contained "\<undelete-\%(pattern\|subthread\)\>"
 syn match muttrcFunction       contained "\<collapse-\%(parts\|thread\|all\)\>"
@@ -409,40 +452,41 @@ syn match muttrcFunction  contained "\<view-\%(attach\|attachments\|file\|mailcap
 syn match muttrcFunction       contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>"
 syn match muttrcAction         contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName
 
-syn keyword muttrcSet          set     skipwhite nextgroup=muttrcVar.*
-syn keyword muttrcUnset                unset   skipwhite nextgroup=muttrcVar.*
-syn keyword muttrcReset                reset   skipwhite nextgroup=muttrcVar.*
-syn keyword muttrcToggle       toggle  skipwhite nextgroup=muttrcVar.*
+syn keyword muttrcCommand      set     skipwhite nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcCommand      unset   skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcCommand      reset   skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
+syn keyword muttrcCommand      toggle  skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
 
 " First, functions that take regular expressions:
-syn match  muttrcRXHookNot     contained /!\s*/ skipwhite nextgroup=muttrcRXString
-syn match  muttrcRXHooks       /^\s*\%(account\|folder\)-hook\s\+/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXString
+syn match  muttrcRXHookNot     contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL
+syn match  muttrcRXHooks       /\<\%(account\|folder\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL
 
 " Now, functions that take patterns
 syn match muttrcPatHookNot     contained /!\s*/ skipwhite nextgroup=muttrcPattern
-syn match muttrcPatHooks       /^\s*\%(message\|mbox\|save\|fcc\%(-save\)\?\|send2\?\|reply\|crypt\)-hook\s\+/ nextgroup=muttrcPatHookNot,muttrcPattern
+syn match muttrcPatHooks       /\<\%(mbox\|crypt\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern
+syn match muttrcPatHooks       /\<\%(message\|reply\|send\|send2\|save\|\|fcc\%(-save\)\?\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern
 
-syn match muttrcBindFunction   contained /\S\+\%(\s\|$\)/ skipwhite contains=muttrcFunction
+syn match muttrcBindFunction   contained /\S\+\>/ skipwhite contains=muttrcFunction
 syn match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL
 syn match muttrcBindKey                contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL
 syn match muttrcBindKeyNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL
 syn match muttrcBindMenuList   contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL
 syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
-syn match muttrcBind           /^\s*bind\s\?/ skipwhite nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
+syn keyword muttrcCommand      skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL
 
 syn region muttrcMacroDescr    contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s
 syn region muttrcMacroDescr    contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s
 syn region muttrcMacroDescr    contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s
 syn match muttrcMacroDescrNL   contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
 syn region muttrcMacroBody     contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
-syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'\|\\$+ end=+'\|$+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
-syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+"+ms=e skip=+\\"\|\\$+ end=+"\|$+me=s contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL
+syn 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
+syn 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
 syn match muttrcMacroBodyNL    contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroBody,muttrcMacroBodyNL
 syn match muttrcMacroKey       contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcMacroBody,muttrcMacroBodyNL
 syn match muttrcMacroKeyNL     contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroKey,muttrcMacroKeyNL
 syn match muttrcMacroMenuList  contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcMacroKey,muttrcMacroKeyNL
 syn match muttrcMacroMenuListNL        contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
-syn match muttrcMacro          /^\s*macro\s\?/ skipwhite nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
+syn keyword muttrcCommand      skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL
 
 syn match muttrcAddrContent    contained "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+\s*" skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
 syn region muttrcAddrContent   contained start=+'+ end=+'\s*+ skip=+\\'+ skipwhite contains=muttrcEmail nextgroup=muttrcAddrContent
@@ -468,32 +512,41 @@ syn match muttrcAliasNameNL       contained /\s*\\$/ skipwhite skipnl nextgroup=muttrc
 syn match muttrcAliasENNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
 syn match muttrcAliasKey       contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL
 syn match muttrcAliasNL                contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
-syn match muttrcAlias          /^\s*alias\s/ skipwhite nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
+syn keyword muttrcCommand      skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL
 
 syn match muttrcUnAliasKey     contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
 syn match muttrcUnAliasNL      contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
-syn match muttrcUnAlias                /^\s*unalias\s\?/ nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
+syn keyword muttrcCommand      skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL
 
 syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]"
-syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s\+\%([<>-][0-9]\+\|[0-9]\+[-][0-9]*\)"
-syn 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
-syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatRXContainer
-syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s\+" nextgroup=muttrcSimplePatString
-syn match muttrcSimplePat contained "!\?\^\?[=][bh]\s\+" nextgroup=muttrcSimplePatString
+syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)"
+syn 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
+syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer
+syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString
+syn match muttrcSimplePat contained "!\?\^\?[=][bh]\s*" nextgroup=muttrcSimplePatString
 syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat
-"syn match muttrcSimplePat contained /'[^~=%][^']*/ 
-"contains=muttrcRXPat
-syn match muttrcSimplePatString contained /[a-zA-Z0-9]\+/
+"syn match muttrcSimplePat contained /'[^~=%][^']*/ contains=muttrcRXString
 syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+
 syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+
-syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXPat
-syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXPat
-syn match muttrcSimplePatRXContainer contained /\S\+/ contains=muttrcRXPat
+syn region muttrcSimplePatString contained keepend start=+[^   "']+ skip=+\\ + end=+\s+re=e-1
+syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString
+syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString
+syn region muttrcSimplePatRXContainer contained keepend start=+[^      "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString
 syn match muttrcSimplePatMetas contained /[(|)]/
 
-syn region muttrcPattern contained keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPatternInner
-syn region muttrcPattern contained keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPatternInner
-syn match muttrcPattern contained "[~]\([A-Za-z]\|([^)]\+)\)" contains=muttrcSimplePat
+syn match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas
+syn match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString
+syn region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL
+syn region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL
+syn region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL
+syn match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL
+syn match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL
+" Keep muttrcPattern and muttrcOptPattern synchronized
+syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
+syn region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat
+syn match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat
+syn match muttrcPattern contained skipwhite /[.]/
 syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
 syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas
 
@@ -516,17 +569,27 @@ syn match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,mutt
 syn match muttrcColorContext   contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL
 syn match muttrcColorNL        contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL
 syn match muttrcColorKeyword   contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL
-syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
+syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\|header\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace
 " Now for the structure of the color index line
 syn match muttrcPatternNL      contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL
 syn match muttrcColorBGI       contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL
 syn match muttrcColorBGNLI     contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI
 syn match muttrcColorFGI       contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI
 syn match muttrcColorFGNLI     contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI
-syn match muttrcColorContextI  contained /\s*index/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI
+syn match muttrcColorContextI  contained /\s*\<index\>/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI
 syn match muttrcColorNLI       contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI
-syn match muttrcColorKeywordI  contained /^\s*color\s\+/ nextgroup=muttrcColorContextI,muttrcColorNLI
-syn region muttrcColorLine keepend start=/^\s*color\s\+index/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace
+syn match muttrcColorKeywordI  contained skipwhite /\<color\>/ nextgroup=muttrcColorContextI,muttrcColorNLI
+syn region muttrcColorLine keepend skipwhite start=/\<color\s\+index\>/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace
+" Now for the structure of the color header line
+syn match muttrcRXPatternNL    contained skipnl "\s*\\$" nextgroup=muttrcRXString,muttrcRXPatternNL
+syn match muttrcColorBGH       contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcRXString,muttrcRXPatternNL
+syn match muttrcColorBGNLH     contained skipnl "\s*\\$" nextgroup=muttrcColorBGH,muttrcColorBGNLH
+syn match muttrcColorFGH       contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGH,muttrcColorBGNLH
+syn match muttrcColorFGNLH     contained skipnl "\s*\\$" nextgroup=muttrcColorFGH,muttrcColorFGNLH
+syn match muttrcColorContextH  contained /\s*\<header\>/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGH,muttrcColorFGNLH
+syn match muttrcColorNLH       contained skipnl "\s*\\$" nextgroup=muttrcColorContextH,muttrcColorNLH
+syn match muttrcColorKeywordH  contained skipwhite /\<color\>/ nextgroup=muttrcColorContextH,muttrcColorNLH
+syn region muttrcColorLine keepend skipwhite start=/\<color\s\+header\>/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordH,muttrcComment,muttrcUnHighlightSpace
 " And now color's brother:
 syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
 syn region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL
@@ -569,14 +632,17 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcRXDef           muttrcGroupFlag
   HiLink muttrcRXPat           String
   HiLink muttrcAliasGroupName  Macro
-  HiLink muttrcAliasKey        Identifier
+  HiLink muttrcAliasKey                Identifier
   HiLink muttrcUnAliasKey      Identifier
   HiLink muttrcAliasEncEmail   Identifier
   HiLink muttrcAliasParens     Type
-  HiLink muttrcNumber          Number
-  HiLink muttrcQuadopt         Boolean
+  HiLink muttrcSetNumAssignment        Number
+  HiLink muttrcSetBoolAssignment       Boolean
+  HiLink muttrcSetQuadAssignment       Boolean
+  HiLink muttrcSetStrAssignment        String
   HiLink muttrcEmail           Special
   HiLink muttrcVariable                Special
+  HiLink muttrcEscapedVariable String
   HiLink muttrcHeader          Type
   HiLink muttrcKeySpecial      SpecialChar
   HiLink muttrcKey             Type
@@ -587,17 +653,7 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcVarStr          Identifier
   HiLink muttrcMenu            Identifier
   HiLink muttrcCommand         Keyword
-  HiLink muttrcSet             Keyword
-  HiLink muttrcUnset           muttrcCommand
-  HiLink muttrcReset           muttrcCommand
-  HiLink muttrcToggle          muttrcCommand
-  HiLink muttrcBind            muttrcCommand
-  HiLink muttrcMacro           muttrcCommand
   HiLink muttrcMacroDescr      String
-  HiLink muttrcAlias           muttrcCommand
-  HiLink muttrcUnAlias         muttrcCommand
-  HiLink muttrcUnhook          muttrcCommand
-  HiLink muttrcUnhookLine      Error
   HiLink muttrcAction          Macro
   HiLink muttrcBadAction       Error
   HiLink muttrcBindFunction    Error
@@ -617,21 +673,24 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcColorLine       Error
   HiLink muttrcColorContext    Error
   HiLink muttrcColorContextI   Identifier
+  HiLink muttrcColorContextH   Identifier
   HiLink muttrcColorKeyword    muttrcCommand
   HiLink muttrcColorKeywordI   muttrcColorKeyword
+  HiLink muttrcColorKeywordH   muttrcColorKeyword
   HiLink muttrcColorField      Identifier
   HiLink muttrcColor           Type
   HiLink muttrcColorFG         Error
   HiLink muttrcColorFGI                Error
+  HiLink muttrcColorFGH                Error
   HiLink muttrcColorBG         Error
   HiLink muttrcColorBGI                Error
+  HiLink muttrcColorBGH                Error
   HiLink muttrcMonoAttrib      muttrcColor
   HiLink muttrcMono            muttrcCommand
   HiLink muttrcSimplePat       Identifier
   HiLink muttrcSimplePatString Macro
   HiLink muttrcSimplePatMetas  Special
-  HiLink muttrcPattern         Type
-  HiLink muttrcPatternInner    Error
+  HiLink muttrcPattern         Error
   HiLink muttrcUnColorLine     Error
   HiLink muttrcUnColorKeyword  muttrcCommand
   HiLink muttrcUnColorIndex    Identifier
@@ -674,6 +733,7 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcTimeEscapes     muttrcEscape
   HiLink muttrcPGPTimeEscapes  muttrcEscape
   HiLink muttrcStrftimeEscapes Type
+  HiLink muttrcStrftimeFormatStr muttrcString
   HiLink muttrcFormatErrors Error
 
   HiLink muttrcBindFunctionNL  SpecialChar
@@ -698,6 +758,7 @@ if version >= 508 || !exists("did_muttrc_syntax_inits")
   HiLink muttrcUnColorPatNL    SpecialChar
   HiLink muttrcUnColorAPNL     SpecialChar
   HiLink muttrcUnColorIndexNL  SpecialChar
+  HiLink muttrcStringNL                SpecialChar
 
   delcommand HiLink
 endif
index 4c403ba893ee8dcead9d4c11d3cdf97383b7cf11..ca5e099530ee0096ecf78c41bdfe301015e52d48 100644 (file)
@@ -141,6 +141,7 @@ syn match perlLabel      "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
 " Special variables first ($^A, ...) and ($|, $', ...)
 syn match  perlVarPlain                 "$^[ACDEFHILMNOPRSTVWX]\="
 syn match  perlVarPlain                 "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
+syn match  perlVarPlain                 "%+"
 syn match  perlVarPlain                 "$\%(0\|[1-9]\d*\)"
 " Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
 syn match  perlVarPlain                 "$::\@!"
@@ -216,7 +217,8 @@ syn match  perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\
 syn match  perlNotEmptyLine    "^\s\+$" contained
 " Highlight '} else if (...) {', it should be '} else { if (...) { ' or
 " '} elsif (...) {'.
-syn match perlElseIfError      "[^[:space:]{]\+" contained
+syn match perlElseIfError      "\s\+if" contained
+syn keyword perlElseIfError    elseif
 
 " Variable interpolation
 "