]> granicus.if.org Git - vim/commitdiff
Update runtime files
authorBram Moolenaar <Bram@vim.org>
Sat, 10 Sep 2022 12:13:14 +0000 (13:13 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 10 Sep 2022 12:13:14 +0000 (13:13 +0100)
26 files changed:
.github/CODEOWNERS
runtime/doc/builtin.txt
runtime/doc/eval.txt
runtime/doc/options.txt
runtime/doc/tags
runtime/doc/tagsrch.txt
runtime/doc/todo.txt
runtime/doc/userfunc.txt
runtime/doc/version9.txt
runtime/doc/vim9.txt
runtime/filetype.vim
runtime/ftplugin/gitattributes.vim [new file with mode: 0644]
runtime/ftplugin/gitignore.vim [new file with mode: 0644]
runtime/ftplugin/jsonnet.vim [new file with mode: 0644]
runtime/ftplugin/lua.vim
runtime/ftplugin/lynx.vim [new file with mode: 0644]
runtime/ftplugin/sh.vim
runtime/ftplugin/vim.vim
runtime/ftplugin/zimbu.vim
runtime/ftplugin/zsh.vim
runtime/indent/json.vim
runtime/syntax/gitattributes.vim [new file with mode: 0644]
runtime/syntax/gitignore.vim [new file with mode: 0644]
runtime/syntax/lua.vim
runtime/syntax/vim.vim
runtime/syntax/zsh.vim

index 1cd351fe7867536b17b8a9b3f5c6023f8d9917ce..2375b35adce55d51f1ba56463cf2a72b74e291b3 100644 (file)
@@ -69,6 +69,10 @@ runtime/compiler/perlcritic.vim              @petdance @dkearns
 runtime/compiler/php.vim               @dkearns
 runtime/compiler/podchecker.vim                @petdance @dkearns
 runtime/compiler/powershell.vim                @heaths
+runtime/compiler/raco.vim              @benknoble
+runtime/compiler/racomake.vim          @benknoble
+runtime/compiler/racosetup.vim         @benknoble
+runtime/compiler/racotest.vim          @benknoble
 runtime/compiler/rake.vim              @tpope @dkearns
 runtime/compiler/rhino.vim             @dkearns
 runtime/compiler/rspec.vim             @tpope @dkearns
@@ -111,6 +115,7 @@ runtime/ftplugin/cucumber.vim               @tpope
 runtime/ftplugin/desktop.vim           @e-kwsm
 runtime/ftplugin/dosbatch.vim          @mrdubya
 runtime/ftplugin/eiffel.vim            @dkearns
+runtime/ftplugin/elixir.vim            @mhanberg
 runtime/ftplugin/expect.vim            @dkearns
 runtime/ftplugin/erlang.vim            @hcs42
 runtime/ftplugin/eruby.vim             @tpope @dkearns
@@ -123,8 +128,10 @@ runtime/ftplugin/gdb.vim           @xeyownt
 runtime/ftplugin/gdscript.vim          @habamax
 runtime/ftplugin/gdshader.vim          @habamax
 runtime/ftplugin/git.vim               @tpope
+runtime/ftplugin/gitattributes.vim     @ObserverOfTime
 runtime/ftplugin/gitcommit.vim         @tpope
 runtime/ftplugin/gitconfig.vim         @tpope
+runtime/ftplugin/gitignore.vim         @ObserverOfTime
 runtime/ftplugin/gitrebase.vim         @tpope
 runtime/ftplugin/gitsendemail.vim      @tpope
 runtime/ftplugin/go.vim                        @dbarnett
@@ -135,6 +142,7 @@ runtime/ftplugin/html.vim           @dkearns
 runtime/ftplugin/i3config.vim          @hiqua
 runtime/ftplugin/icon.vim              @dkearns
 runtime/ftplugin/indent.vim            @dkearns
+runtime/ftplugin/j.vim                 @glts
 runtime/ftplugin/javascript.vim                @dkearns
 runtime/ftplugin/javascriptreact.vim   @dkearns
 runtime/ftplugin/jsonc.vim             @izhakjakov
@@ -143,6 +151,7 @@ runtime/ftplugin/kconfig.vim                @chrisbra
 runtime/ftplugin/less.vim              @genoma
 runtime/ftplugin/liquid.vim            @tpope
 runtime/ftplugin/lua.vim               @dkearns
+runtime/ftplugin/lynx.vim              @dkearns
 runtime/ftplugin/m3build.vim           @dkearns
 runtime/ftplugin/m3quake.vim           @dkearns
 runtime/ftplugin/markdown.vim          @tpope
@@ -164,6 +173,7 @@ runtime/ftplugin/ps1xml.vim         @heaths
 runtime/ftplugin/python.vim            @tpict
 runtime/ftplugin/qb64.vim              @dkearns
 runtime/ftplugin/r.vim                 @jalvesaq
+runtime/ftplugin/racket.vim            @benknoble
 runtime/ftplugin/rhelp.vim             @jalvesaq
 runtime/ftplugin/rmd.vim               @jalvesaq
 runtime/ftplugin/rnoweb.vim            @jalvesaq
@@ -175,6 +185,7 @@ runtime/ftplugin/sass.vim           @tpope
 runtime/ftplugin/scala.vim             @derekwyatt
 runtime/ftplugin/scss.vim              @tpope
 runtime/ftplugin/sdoc.vim              @gpanders
+runtime/ftplugin/sh.vim                        @dkearns
 runtime/ftplugin/solution.vim          @dkearns
 runtime/ftplugin/spec.vim              @ignatenkobrain
 runtime/ftplugin/swayconfig.vim                @jamespeapen
@@ -219,6 +230,7 @@ runtime/indent/gitolite.vim         @sitaramc
 runtime/indent/go.vim                  @dbarnett
 runtime/indent/haml.vim                        @tpope
 runtime/indent/idlang.vim              @dkearns
+runtime/indent/j.vim                   @glts
 runtime/indent/java.vim                        @xuhdev
 runtime/indent/javascript.vim          @bounceme
 runtime/indent/json.vim                        @elzr
@@ -240,6 +252,7 @@ runtime/indent/prolog.vim           @dkearns
 runtime/indent/ps1.vim                 @heaths
 runtime/indent/qb64.vim                        @dkearns
 runtime/indent/r.vim                   @jalvesaq
+runtime/indent/racket.vim              @benknoble
 runtime/indent/readline.vim            @dkearns
 runtime/indent/rhelp.vim               @jalvesaq
 runtime/indent/rmd.vim                 @jalvesaq
@@ -321,8 +334,10 @@ runtime/syntax/gdresource.vim              @habamax
 runtime/syntax/gdscript.vim            @habamax
 runtime/syntax/gdshader.vim            @habamax
 runtime/syntax/git.vim                 @tpope
+runtime/syntax/gitattributes.vim       @ObserverOfTime
 runtime/syntax/gitcommit.vim           @tpope
 runtime/syntax/gitconfig.vim           @tpope
+runtime/syntax/gitignore.vim           @ObserverOfTime
 runtime/syntax/gitolite.vim            @sitaramc
 runtime/syntax/gitrebase.vim           @tpope
 runtime/syntax/go.vim                  @bhcleek
@@ -336,6 +351,7 @@ runtime/syntax/html.vim                     @dkearns
 runtime/syntax/i3config.vim            @hiqua
 runtime/syntax/icon.vim                        @dkearns
 runtime/syntax/indent.vim              @dkearns
+runtime/syntax/j.vim                   @glts
 runtime/syntax/jargon.vim              @h3xx
 runtime/syntax/java.vim                        @fleiner
 runtime/syntax/jsonc.vim               @izhakjakov
@@ -377,6 +393,7 @@ runtime/syntax/ps1xml.vim           @heaths
 runtime/syntax/psl.vim                 @danielkho
 runtime/syntax/qb64.vim                        @dkearns
 runtime/syntax/r.vim                   @jalvesaq
+runtime/syntax/racket.vim              @benknoble
 runtime/syntax/raml.vim                        @in3d
 runtime/syntax/ratpoison.vim           @trapd00r
 runtime/syntax/rc.vim                  @chrisbra
@@ -404,7 +421,7 @@ runtime/syntax/sshconfig.vim                @Jakuje
 runtime/syntax/sshdconfig.vim          @Jakuje
 runtime/syntax/sudoers.vim             @e-kwsm
 runtime/syntax/svn.vim                 @hdima
-runtime/syntax/swayconfig.vim       @jamespeapen
+runtime/syntax/swayconfig.vim          @jamespeapen
 runtime/syntax/systemverilog.vim       @Kocha
 runtime/syntax/tags.vim                        @cecamp
 runtime/syntax/tap.vim                 @petdance
index 01263402fa24ed8d8883ccc05910e1233c7db26d..3448ed58551e906fc56fb29c5527fc0436e92b2f 100644 (file)
@@ -1,4 +1,4 @@
-*builtin.txt*  For Vim version 9.0.  Last change: 2022 Jun 27
+*builtin.txt*  For Vim version 9.0.  Last change: 2022 Sep 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 741f70ad645ab458f2d66f705916030fc7871546..e99e9baa0a821e4846fdaae2ca5e025ea4b1c12a 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 9.0.  Last change: 2022 Jun 17
+*eval.txt*     For Vim version 9.0.  Last change: 2022 Sep 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1718,6 +1718,9 @@ Recommendation: don't do this.
 Notice how execute() is used to execute an Ex command.  That's ugly though.
 In Vim9 script you can use a command block, see |inline-function|.
 
+Although you can use the loop variable of a `for` command, it must still exist
+when the closure is called, otherwise you get an error.  *E1302*
+
 Lambda expressions have internal names like '<lambda>42'.  If you get an error
 for a lambda expression, you can find what it is with the following command: >
        :function <lambda>42
@@ -3397,7 +3400,8 @@ text...
                        it will show for three seconds and avoid a
                        |hit-enter| prompt.  If you want to hide it before
                        that, press Esc in Normal mode (when it would
-                       otherwise beep).
+                       otherwise beep).  If it disappears too soon you can
+                       use `:messages` to see the text.
                        The message window is available when Vim was compiled
                        with the +timer and the +popupwin features.
 
index 1b9ae38db61e1ee0b6be7b2016420a8355f00aee..b60abc271d35167f301b3fc976569848ad54d466 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 9.0.  Last change: 2022 Jun 27
+*options.txt*  For Vim version 9.0.  Last change: 2022 Sep 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 9ff42183662caa3548cc8337d29edbc441af2e50..b38f1cc51639d3e49efbe4cb2a75b79451287547 100644 (file)
@@ -4332,7 +4332,10 @@ E1295    textprop.txt    /*E1295*
 E1296  textprop.txt    /*E1296*
 E1297  vim9.txt        /*E1297*
 E1298  vim9.txt        /*E1298*
+E1299  tagsrch.txt     /*E1299*
 E13    message.txt     /*E13*
+E1300  userfunc.txt    /*E1300*
+E1302  eval.txt        /*E1302*
 E131   userfunc.txt    /*E131*
 E132   userfunc.txt    /*E132*
 E133   userfunc.txt    /*E133*
index 4c49e44d027aecf5ca0a665069fbdc775b4def5e..e7a522feba56eaa9c021f7fa88e6607617667909 100644 (file)
@@ -889,13 +889,16 @@ like |CTRL-]|.
 
 The function used for generating the taglist is specified by setting the
 'tagfunc' option.  The function will be called with three arguments:
-   a:pattern   The tag identifier or pattern used during the tag search.
-   a:flags     String containing flags to control the function behavior.
-   a:info      Dict containing the following entries:
+   pattern     The tag identifier or pattern used during the tag search.
+   flags       String containing flags to control the function behavior.
+   info                Dict containing the following entries:
                    buf_ffname    Full filename which can be used for priority.
                    user_data     Custom data String, if stored in the tag
                                  stack previously by tagfunc.
 
+Note that in a legacy function "a:" needs to be prepended to the argument name
+when using it.
+
 Currently up to three flags may be passed to the tag function:
   'c'          The function was invoked by a normal command being processed
                (mnemonic: the tag function may use the context around the
@@ -931,6 +934,8 @@ If the function returns |v:null| instead of a List, a standard tag lookup will
 be performed instead.
 
 It is not allowed to change the tagstack from inside 'tagfunc'.  *E986*
+It is not allowed to close a window or change window from inside 'tagfunc'.
+*E1299*
 
 The following is a hypothetical example of a function used for 'tagfunc'.  It
 uses the output of |taglist()| to generate the result: a list of tags in the
index 71b8b0f07c5d4f024647ed5794908cba3a124774..b22c2564f2b792a981e465f24c3a5a5f21c65c67 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 9.0.  Last change: 2022 Jun 27
+*todo.txt*      For Vim version 9.0.  Last change: 2022 Sep 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -38,17 +38,14 @@ browser use: https://github.com/vim/vim/issues/1234
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-When using :echomessage do use msg_row and msg_col, but save and restore.
-How to test any failure?
+Use :defer command:
+    - Use "D" flag of writefile() and mkdir() in tests.
+       (testdir/test_c*.vim done)
 
-Improve :defer command:
-    - Use "D" flag of writefile() in tests.
-    - test "defer func()->funcouter()" fails (or use "funcouter")
-    - test "defer func().arg" fails
-    - test partial fails
-    - check arguments at :defer command
-    - Also when function does "qa!" or "cq"?
+When using :echomessage do use msg_row and msg_col, but save and restore.
+How to test any failure?  If nothing fails perhaps it's OK alrady.
 
+Drop Windows XP?  #11089
 
 Further Vim9 improvements, possibly after launch:
 - Use Vim9 for more runtime files.
@@ -277,6 +274,7 @@ Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
 Also, z= in German on a long word can take a very long time, but CTRL-C to
 interrupt does not work. Where to add ui_breakcheck()?
 New English spell files also have very slow suggestions.
+French spell files don't work correctly.  #4916
 
 Make "g>" and "g<" in Visual mode move the text right or left.
 Also for a block selection.  #8558
@@ -2648,6 +2646,11 @@ Better 'rightleft' or BIDI support:
 
 
 Spell checking:
+-   List of common misspellings in English:
+    https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
+    German:
+    https://de.wikipedia.org/wiki/Wikipedia:Liste_von_Tippfehlern/F%C3%BCr_Maschinen
+    There are other languages.
 -   [s does not find missing capital at start of the line.  #10838
     Probably because the dot at the end of the previous line isn't seen.
 -   When 'cursorline' is set and the first word should have SpellCap
index f6377009b8292cd94254340af74d2088b1322d84..24e3fd7dafe92f2d3ac253ae21991bee2268d996 100644 (file)
@@ -1,4 +1,4 @@
-*userfunc.txt* For Vim version 9.0.  Last change: 2022 Jun 17
+*userfunc.txt* For Vim version 9.0.  Last change: 2022 Sep 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -23,7 +23,7 @@ commands can be executed with the |:normal| command.
 
 The function name must start with an uppercase letter, to avoid confusion with
 builtin functions.  To prevent from using the same name in different scripts
-make them script-local.  If you do use a global function the avoid obvious,
+make them script-local.  If you do use a global function then avoid obvious,
 short names.  A good habit is to start the function name with the name of the
 script, e.g., "HTMLcolor()".
 
@@ -427,7 +427,8 @@ GetArg()->TheFunc()` does not work, it may work in a later version.
 
 Errors are reported but do not cause aborting execution of deferred functions.
 
-No range is accepted.
+No range is accepted.  The function can be a partial with extra arguments, but
+not with a dictionary. *E1300*
 
 ==============================================================================
 
index 4e6b1cbf1399e78097c8b0fdfdd2e7677aab9d25..9ec13872abe7570dc06c4b41c4baaa8cc6a9ac4d 100644 (file)
@@ -72,7 +72,7 @@ Command line completion in a popup menu ~
 Before there was the 'wildmenu' option, which uses the space of one line above
 the statusline to show matches.  Only a few matches fit there.
 
-Now a popup menu can be used by setting "wildoptions' to "pum".  This allows
+Now a popup menu can be used by setting 'wildoptions' to "pum".  This allows
 for showing many more matches.  This requires redrawing more of the display,
 but since computers are fast enough that is not a problem.
 
@@ -336,7 +336,7 @@ Hide cursor when sleeping using |:sleep!|.
 Add "multispace" to 'listchars' to show two or more spaces no matter where
 they appear.  Add "leadmultispace" to 'listchars' to show two or more leading
 spaces.  Add "lead" to 'listchars' to set the character used to show leading
-spaces.  Support specifying a character using the hexdecimal notation in
+spaces.  Support specifying a character using the hexadecimal notation in
 'listchars' (\x, \u and \U).
 
 Make 'listchars', 'virtualedit' and 'thesaurusfunc' global-local options.
@@ -28248,7 +28248,7 @@ Files:      runtime/doc/repeat.txt, src/scriptfile.c, src/vim9script.c,
             src/proto/vim9script.pro, src/testdir/test_source.vim
 
 Patch 8.2.4608
-Problem:    getcompletion() does not work properly when 'wildoptions
+Problem:    getcompletion() does not work properly when 'wildoptions'
             contains "fuzzy".
 Solution:   Do not use addstar(). (Yegappan Lakshmanan, closes #9992,
             closes #9986)
index aba0f0051ef94b3507f2aa3838607f204785ec2b..ce9cbdf3b0c9614b75eb16ab37f81c6df7d57f06 100644 (file)
@@ -1,4 +1,4 @@
-*vim9.txt*     For Vim version 9.0.  Last change: 2022 Jun 25
+*vim9.txt*     For Vim version 9.0.  Last change: 2022 Sep 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1311,7 +1311,7 @@ Make sure to define the breakpoint before compiling the outer function.
 The "inloop" variable will exist only once, all closures put in the list refer
 to the same instance, which in the end will have the value 4.  This is
 efficient, also when looping many times.  If you do want a separate context
-for each closure call a function to define it: >
+for each closure, call a function to define it: >
        def GetClosure(i: number): func
          var infunc = i
          return () => infunc
@@ -1327,6 +1327,30 @@ for each closure call a function to define it: >
 In some situations, especially when calling a Vim9 closure from legacy
 context, the evaluation will fail.  *E1248*
 
+Note that at the script level the loop variable will be invalid after the
+loop, also when used in a closure that is called later, e.g. with a timer.
+This will generate error |E1302|: >
+       for n in range(4)
+           timer_start(500 * n, (_) => {
+                 echowin n
+              })
+       endfor
+
+You need to create a closure to store the current value of "n", so that it is
+evaluated at the time the closure is created: >
+       def GetClosure(nr: number): func
+         return (_) => {
+           echowindow nr
+         }
+       enddef
+
+       for n in range(4)
+           timer_start(500 * n, GetClosure(n))
+       endfor
+
+Using `echowindow` is useful in a timer, the messages go into a popup and will
+not interfere with what the user is doing when it triggers.
+
 
 Converting a function from legacy to Vim9 ~
                                        *convert_legacy_function_to_vim9*
@@ -1618,7 +1642,7 @@ type, it can not be used in Vim9 script.
                         *E1211* *E1217* *E1218* *E1219* *E1220* *E1221*
                         *E1222* *E1223* *E1224* *E1225* *E1226* *E1227*
                         *E1228* *E1238* *E1250* *E1251* *E1252* *E1253*
-                        *E1256* *E1297* *E1298*
+                        *E1256* *E1297* *E1298* *E1301*
 Types are checked for most builtin functions to make it easier to spot
 mistakes.
 
index 0223402a4be97a9710d333bc58d77e2f11894456..d88f0256b150ae3a157cee0e7fb7f138511aea4b 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Jul 5
+" Last Change: 2022 Sep 09
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
diff --git a/runtime/ftplugin/gitattributes.vim b/runtime/ftplugin/gitattributes.vim
new file mode 100644 (file)
index 0000000..2025d00
--- /dev/null
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language:    git attributes
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Last Change: 2022 Sep 08
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/gitignore.vim b/runtime/ftplugin/gitignore.vim
new file mode 100644 (file)
index 0000000..3502dd2
--- /dev/null
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language:    git ignore
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Last Change: 2022 Sep 10
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setl comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/jsonnet.vim b/runtime/ftplugin/jsonnet.vim
new file mode 100644 (file)
index 0000000..1e621e1
--- /dev/null
@@ -0,0 +1,17 @@
+" Vim filetype plugin
+" Language:        Jsonnet
+" Maintainer:      Cezary Drożak <cezary@drozak.net>
+" URL:             https://github.com/google/vim-jsonnet
+" Last Change:     2022-09-08
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+  finish
+endif
+
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
+setlocal commentstring=//\ %s
+
+let b:undo_ftplugin = "setlocal commentstring<"
index 2604257594c964c5611e9899da90108c533d677f..aaa61f71d92ec9536edacbc250e86728227a04cc 100644 (file)
@@ -1,46 +1,46 @@
 " Vim filetype plugin file.
-" Language:            Lua
+" Language:            Lua
 " Maintainer:          Doug Kearns <dougkearns@gmail.com>
 " Previous Maintainer: Max Ischenko <mfi@ukr.net>
-" Last Change:         2021 Nov 15
+" Contributor:         Dorai Sitaram <ds26@gte.com>
+" Last Change:         2022 Sep 05
 
-" Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
   finish
 endif
-
-" Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
 let s:cpo_save = &cpo
 set cpo&vim
 
-" Set 'formatoptions' to break comment lines but not other lines, and insert
-" the comment leader when hitting <CR> or using "o".
+setlocal comments=:--
+setlocal commentstring=--\ %s
 setlocal formatoptions-=t formatoptions+=croql
 
-setlocal comments=:--
-setlocal commentstring=--%s
+let &l:define = '\<function\|\<local\%(\s\+function\)\='
+
 setlocal suffixesadd=.lua
 
-let b:undo_ftplugin = "setlocal fo< com< cms< sua<"
+let b:undo_ftplugin = "setlocal cms< com< def< fo< sua<"
 
 if exists("loaded_matchit") && !exists("b:match_words")
   let b:match_ignorecase = 0
   let b:match_words =
-        \ '\<\%(do\|function\|if\)\>:' .
-        \ '\<\%(return\|else\|elseif\)\>:' .
-        \ '\<end\>,' .
-        \ '\<repeat\>:\<until\>,' .
-        \ '\%(--\)\=\[\(=*\)\[:]\1]'
-  let b:undo_ftplugin .= " | unlet! b:match_words b:match_ignorecase"
+       \ '\<\%(do\|function\|if\)\>:' ..
+       \ '\<\%(return\|else\|elseif\)\>:' ..
+       \ '\<end\>,' ..
+       \ '\<repeat\>:\<until\>,' ..
+       \ '\%(--\)\=\[\(=*\)\[:]\1]'
+  let b:undo_ftplugin ..= " | unlet! b:match_words b:match_ignorecase"
 endif
 
 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
-  let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" .
-       \              "All Files (*.*)\t*.*\n"
-  let b:undo_ftplugin .= " | unlet! b:browsefilter"
+  let b:browsefilter = "Lua Source Files (*.lua)\t*.lua\n" ..
+       \              "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
 endif
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/ftplugin/lynx.vim b/runtime/ftplugin/lynx.vim
new file mode 100644 (file)
index 0000000..b76c69f
--- /dev/null
@@ -0,0 +1,29 @@
+" Vim filetype plugin file
+" Language:    Lynx Web Browser Configuration
+" Maintainer:  Doug Kearns <dougkearns@gmail.com>
+" Last Change: 2022 Sep 09
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal comments=:#
+setlocal commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+let b:undo_ftplugin = "setl cms< com< fo<"
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "Lynx Configuration Files (lynx.cfg .lynxrc)\tlynx.cfg;.lynxrc\n" ..
+       \              "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
index 93a46f63e2053b927b420399f62873834ac1c787..b6fdb8f3e2eb585338ffab3bedd21b440016eb62 100644 (file)
@@ -1,12 +1,12 @@
 " Vim filetype plugin file
-" Language:    sh
-"
-" This runtime file is looking for a new maintainer.
-"
-" Former maintainer:   Dan Sharp
-" Last Changed: 20 Jan 2009
-
-if exists("b:did_ftplugin") | finish | endif
+" Language:            sh
+" Maintainer:          Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Dan Sharp
+" Last Change:         2022 Sep 07
+
+if exists("b:did_ftplugin")
+  finish
+endif
 let b:did_ftplugin = 1
 
 " Make sure the continuation lines below do not cause problems in
@@ -14,28 +14,35 @@ let b:did_ftplugin = 1
 let s:save_cpo = &cpo
 set cpo-=C
 
-setlocal commentstring=#%s
+setlocal comments=:#
+setlocal commentstring=#\ %s
+setlocal formatoptions-=t formatoptions+=croql
+
+let b:undo_ftplugin = "setl com< cms< fo<"
 
 " Shell:  thanks to Johannes Zellner
-if exists("loaded_matchit")
-    let s:sol = '\%(;\s*\|^\s*\)\@<='  " start of line
-    let b:match_words =
-    \ s:sol.'if\>:' . s:sol.'elif\>:' . s:sol.'else\>:' . s:sol. 'fi\>,' .
-    \ s:sol.'\%(for\|while\)\>:' . s:sol. 'done\>,' .
-    \ s:sol.'case\>:' . s:sol. 'esac\>'
+if exists("loaded_matchit") && !exists("b:match_words")
+  let b:match_ignorecase = 0
+  let s:sol = '\%(;\s*\|^\s*\)\@<='  " start of line
+  let b:match_words =
+       \  s:sol .. 'if\>:' .. s:sol.'elif\>:' .. s:sol.'else\>:' .. s:sol .. 'fi\>,' ..
+       \  s:sol .. '\%(for\|while\)\>:' .. s:sol .. 'done\>,' ..
+       \  s:sol .. 'case\>:' .. s:sol .. 'esac\>'
+  unlet s:sol
+  let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words"
 endif
 
 " Change the :browse e filter to primarily show shell-related files.
-if has("gui_win32")
-    let  b:browsefilter="Bourne Shell Scripts (*.sh)\t*.sh\n" .
-               \       "Korn Shell Scripts (*.ksh)\t*.ksh\n" .
-               \       "Bash Shell Scripts (*.bash)\t*.bash\n" .
-               \       "All Files (*.*)\t*.*\n"
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+    let  b:browsefilter = "Bourne Shell Scripts (*.sh)\t*.sh\n" ..
+               \         "Korn Shell Scripts (*.ksh)\t*.ksh\n" ..
+               \         "Bash Shell Scripts (*.bash)\t*.bash\n" ..
+               \         "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
 endif
 
-" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal cms< | unlet! b:browsefilter b:match_words"
-
 " Restore the saved compatibility options.
 let &cpo = s:save_cpo
 unlet s:save_cpo
+
+" vim: nowrap sw=2 sts=2 ts=8 noet:
index 772bfa0429986bcaa38bb789da1c0afcb707529c..60934d731dc46f8736f6d0955e8d1925c6079fd1 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:    Vim
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Aug 4
+" Last Change: 2022 Sep 09
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -48,17 +48,17 @@ setlocal isk+=#
 " Use :help to lookup the keyword under the cursor with K.
 setlocal keywordprg=:help
 
+" Comments starts with # in Vim9 script.  We have to guess which one to use.
 if "\n" .. getline(1, 10)->join("\n") =~# '\n\s*vim9\%[script]\>'
-  " Set 'comments' to format dashed lists in comments
-  setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#
-  " Comments starts with # in Vim9 script
   setlocal commentstring=#%s
 else
-  setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
-  " Comments starts with a double quote in legacy script
   setlocal commentstring=\"%s
 endif
 
+" Set 'comments' to format dashed lists in comments, both in Vim9 and legacy
+" script.
+setlocal com=sO:#\ -,mO:#\ \ ,eO:##,:#,sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
+
 " set 'include' to recognize import commands
 setlocal include=\\v^\\s*import\\s*(autoload)?
 
index c966498c90dbbc2f7e456ad649c034a26485575d..9d9fa6f40691dc3cf055ed6ff8b54834ba48f7fa 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:    Zimbu
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Nov 12
+" Last Change: 2022 Sep 07
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -28,7 +28,7 @@ endif
 
 " Set 'comments' to format dashed lists in comments.
 " And to keep Zudocu comment characters.
-setlocal comments=sO:#\ -,mO:#\ \ ,:#=,:#-,:#%,:#
+setlocal comments=sO:#\ -,mO:#\ \ ,exO:#/,s:/*,m:\ ,ex:*/,:#=,:#-,:#%,:#
 
 setlocal errorformat^=%f\ line\ %l\ col\ %c:\ %m,ERROR:\ %m
 
index 34410f1c620bf19d0efa9b4a454382c474665e4a..0ca8077305a0ba41205db1289144a968a71c1f41 100644 (file)
@@ -2,7 +2,7 @@
 " Language:             Zsh shell script
 " Maintainer:           Christian Brabandt <cb@256bit.org>
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2020-09-01
+" Latest Revision:      2021-04-03
 " License:              Vim (see :h license)
 " Repository:           https://github.com/chrisbra/vim-zsh
 
index 09c7d7a85a6aab9c49e992e4c00a03d9eac7356f..510f7e8f426c464562b0d106f6042ba843e20d7c 100644 (file)
@@ -3,6 +3,7 @@
 " Maintainer:          Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
 " Last Change:          2020 Aug 30
 "   https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
+"                       2022 Sep 07: b:undo_indent added by Doug Kearns
 " Original Author:     Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
 " Acknowledgement:      Based off of vim-javascript maintained by Darrick Wiebe 
 "                       http://www.vim.org/scripts/script.php?script_id=2765
@@ -22,6 +23,8 @@ setlocal nosmartindent
 setlocal indentexpr=GetJSONIndent(v:lnum)
 setlocal indentkeys=0{,0},0),0[,0],!^F,o,O,e
 
+let b:undo_indent = "setl inde< indk< si<"
+
 " Only define the function once.
 if exists("*GetJSONIndent")
   finish
diff --git a/runtime/syntax/gitattributes.vim b/runtime/syntax/gitattributes.vim
new file mode 100644 (file)
index 0000000..b6d997f
--- /dev/null
@@ -0,0 +1,63 @@
+" Vim syntax file
+" Language:    git attributes
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Filenames:   .gitattributes, *.git/info/attributes
+" Last Change: 2022 Sep 09
+
+if exists('b:current_syntax')
+    finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Comment
+syn keyword gitattributesTodo contained TODO FIXME XXX
+syn match gitattributesComment /^\s*#.*/ contains=gitattributesTodo
+
+" Pattern
+syn match gitattributesPattern /^\s*#\@!\(".\+"\|\S\+\)/ skipwhite
+            \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned skipwhite
+            \ contains=gitattributesGlob,gitattributesRange,gitattributesSeparator
+syn match gitattributesGlob /\\\@1<![?*]/ contained
+syn match gitattributesRange /\\\@1<!\[.\{-}\]/ contained
+syn match gitattributesSeparator '/' contained
+
+" Attribute
+syn match gitattributesAttrPrefixed /[!-]\?[A-Za-z0-9_.][-A-Za-z0-9_.]*/
+            \ transparent contained skipwhite
+            \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
+            \ contains=gitattributesPrefix,gitattributesName
+syn match gitattributesAttrAssigned /[A-Za-z0-9_.][-A-Za-z0-9_.]*=\S\+/
+            \ transparent contained skipwhite
+            \ nextgroup=gitattributesAttrPrefixed,gitattributesAttrAssigned
+            \ contains=gitattributesName,gitattributesAssign,gitattributesBoolean,gitattributesString
+syn match gitattributesName /[A-Za-z0-9_.][-A-Za-z0-9_.]*/
+            \ contained nextgroup=gitattributesAssign
+syn match gitattributesPrefix /[!-]/ contained
+            \ nextgroup=gitAttributesName
+syn match gitattributesAssign '=' contained
+            \ nextgroup=gitattributesBoolean,gitattributesString
+syn match gitattributesString /=\@1<=\S\+/ contained
+syn keyword gitattributesBoolean true false contained
+
+" Macro
+syn match gitattributesMacro /^\s*\[attr\]\s*\S\+/
+            \ nextgroup=gitattributesAttribute skipwhite
+
+hi def link gitattributesAssign Operator
+hi def link gitattributesBoolean Boolean
+hi def link gitattributesComment Comment
+hi def link gitattributesGlob Special
+hi def link gitattributesMacro Define
+hi def link gitattributesName Identifier
+hi def link gitattributesPrefix SpecialChar
+hi def link gitattributesRange Special
+hi def link gitattributesSeparator Delimiter
+hi def link gitattributesString String
+hi def link gitattributesTodo Todo
+
+let b:current_syntax = 'gitattributes'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/gitignore.vim b/runtime/syntax/gitignore.vim
new file mode 100644 (file)
index 0000000..8e6d098
--- /dev/null
@@ -0,0 +1,29 @@
+" Vim syntax file
+" Language:    git ignore
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Filenames:   .gitignore, *.git/info/exclude
+" Last Change: 2022 Sep 10
+
+if exists('b:current_syntax')
+    finish
+endif
+
+" Comment
+syn keyword gitignoreTodo contained TODO FIXME XXX
+syn match gitignoreComment /^#.*/ contains=gitignoreTodo
+
+" Pattern
+syn match gitignorePattern /^#\@!.*$/ contains=gitignoreNegation,gitignoreGlob,gitignoreRange,gitignoreSeparator
+syn match gitignoreNegation /^!/ contained
+syn match gitignoreGlob /\\\@1<![?*]/ contained
+syn match gitignoreRange /\\\@1<!\[.\{-}\]/ contained
+syn match gitignoreSeparator '/' contained
+
+hi def link gitignoreComment Comment
+hi def link gitignoreGlob Special
+hi def link gitignoreNegation SpecialChar
+hi def link gitignoreRange Special
+hi def link gitignoreSeparator Delimiter
+hi def link gitignoreTodo Todo
+
+let b:current_syntax = 'gitignore'
index b398e2e5c6188070a990a6a7d5bcf8e292e7220e..437a1ff11338cdf656aa9a3be7cd03964bf5996f 100644 (file)
@@ -1,11 +1,11 @@
 " Vim syntax file
-" Language:    Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2
-" Maintainer:  Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
-" First Author:        Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
-" Last Change: 2022 Mar 31
-" Options:     lua_version = 4 or 5
-"              lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2)
-"              default 5.2
+" Language:     Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2
+" Maintainer:   Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com>
+" First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
+" Last Change:  2022 Mar 31
+" Options:      lua_version = 4 or 5
+"               lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2)
+"               default 5.2
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -33,11 +33,11 @@ syn sync minlines=100
 syn keyword luaTodo            contained TODO FIXME XXX
 syn match   luaComment         "--.*$" contains=luaTodo,@Spell
 if lua_version == 5 && lua_subversion == 0
-  syn region luaComment        matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
+  syn region luaComment        matchgroup=luaCommentDelimiter start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell
   syn region luaInnerComment   contained transparent start="\[\[" end="\]\]"
 elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
   " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
-  syn region luaComment        matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
+  syn region luaComment        matchgroup=luaCommentDelimiter start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell
 endif
 
 " First line may start with #!
@@ -99,18 +99,18 @@ if lua_version < 5
 elseif lua_version == 5
   if lua_subversion == 0
     syn match  luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}#
-    syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
+    syn region luaString2 matchgroup=luaStringDelimiter start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell
   else
     if lua_subversion == 1
       syn match  luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}#
     else " Lua 5.2
       syn match  luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}#
     endif
-    syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
+    syn region luaString2 matchgroup=luaStringDelimiter start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell
   endif
 endif
-syn region luaString  start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
-syn region luaString  start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
+syn region luaString matchgroup=luaStringDelimiter start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell
+syn region luaString matchgroup=luaStringDelimiter start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell
 
 " integer number
 syn match luaNumber "\<\d\+\>"
@@ -333,27 +333,29 @@ endif
 " Define the default highlighting.
 " Only when an item doesn't have highlighting yet
 
-hi def link luaStatement               Statement
-hi def link luaRepeat          Repeat
-hi def link luaFor                     Repeat
-hi def link luaString          String
-hi def link luaString2         String
-hi def link luaNumber          Number
-hi def link luaOperator                Operator
-hi def link luaIn                      Operator
-hi def link luaConstant                Constant
-hi def link luaCond            Conditional
-hi def link luaElse            Conditional
-hi def link luaFunction                Function
-hi def link luaComment         Comment
-hi def link luaTodo            Todo
-hi def link luaTable           Structure
-hi def link luaError           Error
-hi def link luaParenError              Error
-hi def link luaBraceError              Error
-hi def link luaSpecial         SpecialChar
-hi def link luaFunc            Identifier
-hi def link luaLabel           Label
+hi def link luaStatement        Statement
+hi def link luaRepeat           Repeat
+hi def link luaFor              Repeat
+hi def link luaString           String
+hi def link luaString2          String
+hi def link luaStringDelimiter  luaString
+hi def link luaNumber           Number
+hi def link luaOperator         Operator
+hi def link luaIn               Operator
+hi def link luaConstant         Constant
+hi def link luaCond             Conditional
+hi def link luaElse             Conditional
+hi def link luaFunction         Function
+hi def link luaComment          Comment
+hi def link luaCommentDelimiter luaComment
+hi def link luaTodo             Todo
+hi def link luaTable            Structure
+hi def link luaError            Error
+hi def link luaParenError       Error
+hi def link luaBraceError       Error
+hi def link luaSpecial          SpecialChar
+hi def link luaFunc             Identifier
+hi def link luaLabel            Label
 
 
 let b:current_syntax = "lua"
index 694b3a7d95d28f8716890bb68bb7c17bc0944270..f00e448234d8f978cb74f667d87468192ba7ecd7 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Vim 9.0 script
 " Maintainer:  Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change: September 03, 2022
-" Version:     9.0-03
+" Last Change: September 09, 2022
+" Version:     9.0-04
 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
 
@@ -19,13 +19,13 @@ syn keyword vimTodo contained       COMBAK  FIXME   TODO    XXX
 syn cluster vimCommentGroup    contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained       a ar[gs] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
-syn keyword vimCommand contained       ab arga[dd] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
-syn keyword vimCommand contained       abc[lear] argd[elete] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endinterface ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
-syn keyword vimCommand contained       abo[veleft] argded[upe] au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endclass endt[ry] exi[t] filet fir[st] foldo[pen] gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
-syn keyword vimCommand contained       abstract argdo bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier echow[indow] enddef endw[hile] exp filetype fix[del] for gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
-syn keyword vimCommand contained       addd arge[dit] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
-syn keyword vimCommand contained       al[l] argg[lobal]
+syn keyword vimCommand contained       a ar[gs] argl[ocal] bad[d] bn[ext] breakl[ist] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier echow[indow] enddef endinterface ex files fini[sh] folddoc[losed] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
+syn keyword vimCommand contained       ab arga[dd] argu[ment] balt bo[tright] bro[wse] c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endenum endt[ry] exi[t] filet fir[st] foldo[pen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
+syn keyword vimCommand contained       abc[lear] argd[elete] as[cii] bd[elete] bp[revious] bufdo ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delfunction dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endfo[r] endw[hile] exp filetype fix[del] for grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
+syn keyword vimCommand contained       abo[veleft] argded[upe] au bel[owright] br[ewind] buffers cabc[lear] call cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfun ene[w] export filt[er] fo[ld] fun gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
+syn keyword vimCommand contained       abstract argdo bN[ext] bf[irst] brea[k] bun[load] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endfunc enum exu[sage] fin[d] foldc[lose] func gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] return rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
+syn keyword vimCommand contained       addd arge[dit] b[uffer] bl[ast] breaka[dd] bw[ipeout] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endclass endfunction eval f[ile] fina[lly] foldd[oopen] function h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
+syn keyword vimCommand contained       al[l] argg[lobal] ba[ll] bm[odified] breakd[el] cN[ext]
 syn match   vimCommand contained       "\<z[-+^.=]\=\>"
 syn keyword vimStdPlugin contained     Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
 
index bab89b916e794f7e3ef65840a17647ddcbf4b7f6..69671c59ca8ac1d8916e9f018a54d6aeb678546b 100644 (file)
@@ -2,7 +2,7 @@
 " Language:             Zsh shell script
 " Maintainer:           Christian Brabandt <cb@256bit.org>
 " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2020-11-21
+" Latest Revision:      2022-07-26
 " License:              Vim (see :h license)
 " Repository:           https://github.com/chrisbra/vim-zsh
 
@@ -19,9 +19,9 @@ function! s:ContainedGroup()
     " vim-pandoc syntax defines the @langname cluster for embedded syntax languages
     " However, if no syntax is defined yet, `syn list @zsh` will return
     " "No syntax items defined", so make sure the result is actually a valid syn cluster
-    for cluster in ['markdownHighlightzsh', 'zsh']
+    for cluster in ['markdownHighlight_zsh', 'zsh']
       try
-      " markdown syntax defines embedded clusters as @markdownhighlight<lang>,
+      " markdown syntax defines embedded clusters as @markdownhighlight_<lang>,
       " pandoc just uses @<lang>, so check both for both clusters
         let a=split(execute('syn list @'. cluster), "\n")
         if len(a) == 2 && a[0] =~# '^---' && a[1] =~? cluster
@@ -48,17 +48,28 @@ syn match   zshPOSIXQuoted      '\\u[0-9a-fA-F]\{1,4}'
 syn match   zshPOSIXQuoted      '\\U[1-9a-fA-F]\{1,8}'
 
 syn region  zshString           matchgroup=zshStringDelimiter start=+"+ end=+"+
-                                \ contains=zshQuoted,@zshDerefs,@zshSubst fold
+                                \ contains=zshQuoted,@zshDerefs,@zshSubstQuoted fold
 syn region  zshString           matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
 syn region  zshPOSIXString      matchgroup=zshStringDelimiter start=+\$'+
                                 \ skip=+\\[\\']+ end=+'+ contains=zshPOSIXQuoted,zshQuoted
 syn match   zshJobSpec          '%\(\d\+\|?\=\w\+\|[%+-]\)'
 
+syn match   zshNumber           '[+-]\=\<\d\+\>'
+syn match   zshNumber           '[+-]\=\<0x\x\+\>'
+syn match   zshNumber           '[+-]\=\<0\o\+\>'
+syn match   zshNumber           '[+-]\=\d\+#[-+]\=\w\+\>'
+syn match   zshNumber           '[+-]\=\d\+\.\d\+\>'
+
 syn keyword zshPrecommand       noglob nocorrect exec command builtin - time
 
 syn keyword zshDelimiter        do done end
 
-syn keyword zshConditional      if then elif else fi case in esac select
+syn keyword zshConditional      if then elif else fi esac select
+
+syn keyword zshCase             case nextgroup=zshCaseWord skipwhite
+syn match zshCaseWord           /\S\+/ nextgroup=zshCaseIn skipwhite contained transparent
+syn keyword zshCaseIn           in nextgroup=zshCasePattern skipwhite skipnl contained
+syn match zshCasePattern        /\S[^)]*)/ contained
 
 syn keyword zshRepeat           while until repeat
 
@@ -73,9 +84,13 @@ syn match   zshFunction         '^\s*\k\+\ze\s*()'
 
 syn match   zshOperator         '||\|&&\|;\|&!\='
 
-syn match   zshRedir            '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)'
-syn match   zshRedir            '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
-syn match   zshRedir            '|&\='
+                                " <<<, <, <>, and variants.
+syn match   zshRedir            '\d\=\(<<<\|<&\s*[0-9p-]\=\|<>\?\)'
+                                " >, >>, and variants.
+syn match   zshRedir            '\d\=\(>&\s*[0-9p-]\=\|&>>\?\|>>\?&\?\)[|!]\='
+                                " | and |&, but only if it's not preceeded or
+                                " followed by a | to avoid matching ||.
+syn match   zshRedir            '|\@1<!|&\=|\@!'
 
 syn region  zshHereDoc          matchgroup=zshRedir
                                 \ start='<\@<!<<\s*\z([^<]\S*\)'
@@ -125,7 +140,7 @@ syn keyword zshCommands         alias autoload bg bindkey break bye cap cd
                                 \ enable eval exec exit export false fc fg
                                 \ functions getcap getln getopts hash history
                                 \ jobs kill let limit log logout popd print
-                                \ printf pushd pushln pwd r read
+                                \ printf prompt pushd pushln pwd r read
                                 \ rehash return sched set setcap shift
                                 \ source stat suspend test times trap true
                                 \ ttyctl type ulimit umask unalias unfunction
@@ -139,10 +154,120 @@ syn case ignore
 syn match   zshOptStart
             \ /\v^\s*%(%(un)?setopt|set\s+[-+]o)/
             \ nextgroup=zshOption skipwhite
-syn match   zshOption nextgroup=zshOption,zshComment skipwhite contained /\v
-            \ <%(no_?)?%(
-            \ auto_?cd|auto_?pushd|cdable_?vars|cd_?silent|chase_?dots|chase_?links|posix_?cd|pushd_?ignore_?dups|pushd_?minus|pushd_?silent|pushd_?to_?home|always_?last_?prompt|always_?to_?end|auto_?list|auto_?menu|auto_?name_?dirs|auto_?param_?keys|auto_?param_?slash|auto_?remove_?slash|bash_?auto_?list|complete_?aliases|complete_?in_?word|glob_?complete|hash_?list_?all|list_?ambiguous|list_?beep|list_?packed|list_?rows_?first|list_?types|menu_?complete|rec_?exact|bad_?pattern|bare_?glob_?qual|brace_?ccl|case_?glob|case_?match|case_?paths|csh_?null_?glob|equals|extended_?glob|force_?float|glob|glob_?assign|glob_?dots|glob_?star_?short|glob_?subst|hist_?subst_?pattern|ignore_?braces|ignore_?close_?braces|ksh_?glob|magic_?equal_?subst|mark_?dirs|multibyte|nomatch|null_?glob|numeric_?glob_?sort|rc_?expand_?param|rematch_?pcre|sh_?glob|unset|warn_?create_?global|warn_?nested_?var|warnnestedvar|append_?history|bang_?hist|extended_?history|hist_?allow_?clobber|hist_?beep|hist_?expire_?dups_?first|hist_?fcntl_?lock|hist_?find_?no_?dups|hist_?ignore_?all_?dups|hist_?ignore_?dups|hist_?ignore_?space|hist_?lex_?words|hist_?no_?functions|hist_?no_?store|hist_?reduce_?blanks|hist_?save_?by_?copy|hist_?save_?no_?dups|hist_?verify|inc_?append_?history|inc_?append_?history_?time|share_?history|all_?export|global_?export|global_?rcs|rcs|aliases|clobber|clobber_?empty|correct|correct_?all|dvorak|flow_?control|ignore_?eof|interactive_?comments|hash_?cmds|hash_?dirs|hash_?executables_?only|mail_?warning|path_?dirs|path_?script|print_?eight_?bit|print_?exit_?value|rc_?quotes|rm_?star_?silent|rm_?star_?wait|short_?loops|short_?repeat|sun_?keyboard_?hack|auto_?continue|auto_?resume|bg_?nice|check_?jobs|check_?running_?jobs|hup|long_?list_?jobs|monitor|notify|posix_?jobs|prompt_?bang|prompt_?cr|prompt_?sp|prompt_?percent|prompt_?subst|transient_?rprompt|alias_?func_?def|c_?bases|c_?precedences|debug_?before_?cmd|err_?exit|err_?return|eval_?lineno|exec|function_?argzero|local_?loops|local_?options|local_?patterns|local_?traps|multi_?func_?def|multios|octal_?zeroes|pipe_?fail|source_?trace|typeset_?silent|typeset_?to_?unset|verbose|xtrace|append_?create|bash_?rematch|bsd_?echo|continue_?on_?error|csh_?junkie_?history|csh_?junkie_?loops|csh_?junkie_?quotes|csh_?nullcmd|ksh_?arrays|ksh_?autoload|ksh_?option_?print|ksh_?typeset|ksh_?zero_?subscript|posix_?aliases|posix_?argzero|posix_?builtins|posix_?identifiers|posix_?strings|posix_?traps|sh_?file_?expansion|sh_?nullcmd|sh_?option_?letters|sh_?word_?split|traps_?async|interactive|login|privileged|restricted|shin_?stdin|single_?command|beep|combining_?chars|emacs|overstrike|single_?line_?zle|vi|zle|brace_?expand|dot_?glob|hash_?all|hist_?append|hist_?expand|log|mail_?warn|one_?cmd|physical|prompt_?vars|stdin|track_?all|no_?match
-            \)>/
+syn keyword zshOption nextgroup=zshOption,zshComment skipwhite contained
+           \ auto_cd no_auto_cd autocd noautocd auto_pushd no_auto_pushd autopushd noautopushd cdable_vars
+           \ no_cdable_vars cdablevars nocdablevars cd_silent no_cd_silent cdsilent nocdsilent chase_dots
+           \ no_chase_dots chasedots nochasedots chase_links no_chase_links chaselinks nochaselinks posix_cd
+           \ posixcd no_posix_cd noposixcd pushd_ignore_dups no_pushd_ignore_dups pushdignoredups
+           \ nopushdignoredups pushd_minus no_pushd_minus pushdminus nopushdminus pushd_silent no_pushd_silent
+           \ pushdsilent nopushdsilent pushd_to_home no_pushd_to_home pushdtohome nopushdtohome
+           \ always_last_prompt no_always_last_prompt alwayslastprompt noalwayslastprompt always_to_end
+           \ no_always_to_end alwaystoend noalwaystoend auto_list no_auto_list autolist noautolist auto_menu
+           \ no_auto_menu automenu noautomenu auto_name_dirs no_auto_name_dirs autonamedirs noautonamedirs
+           \ auto_param_keys no_auto_param_keys autoparamkeys noautoparamkeys auto_param_slash
+           \ no_auto_param_slash autoparamslash noautoparamslash auto_remove_slash no_auto_remove_slash
+           \ autoremoveslash noautoremoveslash bash_auto_list no_bash_auto_list bashautolist nobashautolist
+           \ complete_aliases no_complete_aliases completealiases nocompletealiases complete_in_word
+           \ no_complete_in_word completeinword nocompleteinword glob_complete no_glob_complete globcomplete
+           \ noglobcomplete hash_list_all no_hash_list_all hashlistall nohashlistall list_ambiguous
+           \ no_list_ambiguous listambiguous nolistambiguous list_beep no_list_beep listbeep nolistbeep
+           \ list_packed no_list_packed listpacked nolistpacked list_rows_first no_list_rows_first listrowsfirst
+           \ nolistrowsfirst list_types no_list_types listtypes nolisttypes menu_complete no_menu_complete
+           \ menucomplete nomenucomplete rec_exact no_rec_exact recexact norecexact bad_pattern no_bad_pattern
+           \ badpattern nobadpattern bare_glob_qual no_bare_glob_qual bareglobqual nobareglobqual brace_ccl
+           \ no_brace_ccl braceccl nobraceccl case_glob no_case_glob caseglob nocaseglob case_match
+           \ no_case_match casematch nocasematch case_paths no_case_paths casepaths nocasepaths csh_null_glob
+           \ no_csh_null_glob cshnullglob nocshnullglob equals no_equals noequals extended_glob no_extended_glob
+           \ extendedglob noextendedglob force_float no_force_float forcefloat noforcefloat glob no_glob noglob
+           \ glob_assign no_glob_assign globassign noglobassign glob_dots no_glob_dots globdots noglobdots
+           \ glob_star_short no_glob_star_short globstarshort noglobstarshort glob_subst no_glob_subst globsubst
+           \ noglobsubst hist_subst_pattern no_hist_subst_pattern histsubstpattern nohistsubstpattern
+           \ ignore_braces no_ignore_braces ignorebraces noignorebraces ignore_close_braces
+           \ no_ignore_close_braces ignoreclosebraces noignoreclosebraces ksh_glob no_ksh_glob kshglob nokshglob
+           \ magic_equal_subst no_magic_equal_subst magicequalsubst nomagicequalsubst mark_dirs no_mark_dirs
+           \ markdirs nomarkdirs multibyte no_multibyte nomultibyte nomatch no_nomatch nonomatch null_glob
+           \ no_null_glob nullglob nonullglob numeric_glob_sort no_numeric_glob_sort numericglobsort
+           \ nonumericglobsort rc_expand_param no_rc_expand_param rcexpandparam norcexpandparam rematch_pcre
+           \ no_rematch_pcre rematchpcre norematchpcre sh_glob no_sh_glob shglob noshglob unset no_unset nounset
+           \ warn_create_global no_warn_create_global warncreateglobal nowarncreateglobal warn_nested_var
+           \ no_warn_nested_var warnnestedvar no_warnnestedvar append_history no_append_history appendhistory
+           \ noappendhistory bang_hist no_bang_hist banghist nobanghist extended_history no_extended_history
+           \ extendedhistory noextendedhistory hist_allow_clobber no_hist_allow_clobber histallowclobber
+           \ nohistallowclobber hist_beep no_hist_beep histbeep nohistbeep hist_expire_dups_first
+           \ no_hist_expire_dups_first histexpiredupsfirst nohistexpiredupsfirst hist_fcntl_lock
+           \ no_hist_fcntl_lock histfcntllock nohistfcntllock hist_find_no_dups no_hist_find_no_dups
+           \ histfindnodups nohistfindnodups hist_ignore_all_dups no_hist_ignore_all_dups histignorealldups
+           \ nohistignorealldups hist_ignore_dups no_hist_ignore_dups histignoredups nohistignoredups
+           \ hist_ignore_space no_hist_ignore_space histignorespace nohistignorespace hist_lex_words
+           \ no_hist_lex_words histlexwords nohistlexwords hist_no_functions no_hist_no_functions
+           \ histnofunctions nohistnofunctions hist_no_store no_hist_no_store histnostore nohistnostore
+           \ hist_reduce_blanks no_hist_reduce_blanks histreduceblanks nohistreduceblanks hist_save_by_copy
+           \ no_hist_save_by_copy histsavebycopy nohistsavebycopy hist_save_no_dups no_hist_save_no_dups
+           \ histsavenodups nohistsavenodups hist_verify no_hist_verify histverify nohistverify
+           \ inc_append_history no_inc_append_history incappendhistory noincappendhistory
+           \ inc_append_history_time no_inc_append_history_time incappendhistorytime noincappendhistorytime
+           \ share_history no_share_history sharehistory nosharehistory all_export no_all_export allexport
+           \ noallexport global_export no_global_export globalexport noglobalexport global_rcs no_global_rcs
+           \ globalrcs noglobalrcs rcs no_rcs norcs aliases no_aliases noaliases clobber no_clobber noclobber
+           \ clobber_empty no_clobber_empty clobberempty noclobberempty correct no_correct nocorrect correct_all
+           \ no_correct_all correctall nocorrectall dvorak no_dvorak nodvorak flow_control no_flow_control
+           \ flowcontrol noflowcontrol ignore_eof no_ignore_eof ignoreeof noignoreeof interactive_comments
+           \ no_interactive_comments interactivecomments nointeractivecomments hash_cmds no_hash_cmds hashcmds
+           \ nohashcmds hash_dirs no_hash_dirs hashdirs nohashdirs hash_executables_only
+           \ no_hash_executables_only hashexecutablesonly nohashexecutablesonly mail_warning no_mail_warning
+           \ mailwarning nomailwarning path_dirs no_path_dirs pathdirs nopathdirs path_script no_path_script
+           \ pathscript nopathscript print_eight_bit no_print_eight_bit printeightbit noprinteightbit
+           \ print_exit_value no_print_exit_value printexitvalue noprintexitvalue rc_quotes no_rc_quotes
+           \ rcquotes norcquotes rm_star_silent no_rm_star_silent rmstarsilent normstarsilent rm_star_wait
+           \ no_rm_star_wait rmstarwait normstarwait short_loops no_short_loops shortloops noshortloops
+           \ short_repeat no_short_repeat shortrepeat noshortrepeat sun_keyboard_hack no_sun_keyboard_hack
+           \ sunkeyboardhack nosunkeyboardhack auto_continue no_auto_continue autocontinue noautocontinue
+           \ auto_resume no_auto_resume autoresume noautoresume bg_nice no_bg_nice bgnice nobgnice check_jobs
+           \ no_check_jobs checkjobs nocheckjobs check_running_jobs no_check_running_jobs checkrunningjobs
+           \ nocheckrunningjobs hup no_hup nohup long_list_jobs no_long_list_jobs longlistjobs nolonglistjobs
+           \ monitor no_monitor nomonitor notify no_notify nonotify posix_jobs posixjobs no_posix_jobs
+           \ noposixjobs prompt_bang no_prompt_bang promptbang nopromptbang prompt_cr no_prompt_cr promptcr
+           \ nopromptcr prompt_sp no_prompt_sp promptsp nopromptsp prompt_percent no_prompt_percent
+           \ promptpercent nopromptpercent prompt_subst no_prompt_subst promptsubst nopromptsubst
+           \ transient_rprompt no_transient_rprompt transientrprompt notransientrprompt alias_func_def
+           \ no_alias_func_def aliasfuncdef noaliasfuncdef c_bases no_c_bases cbases nocbases c_precedences
+           \ no_c_precedences cprecedences nocprecedences debug_before_cmd no_debug_before_cmd debugbeforecmd
+           \ nodebugbeforecmd err_exit no_err_exit errexit noerrexit err_return no_err_return errreturn
+           \ noerrreturn eval_lineno no_eval_lineno evallineno noevallineno exec no_exec noexec function_argzero
+           \ no_function_argzero functionargzero nofunctionargzero local_loops no_local_loops localloops
+           \ nolocalloops local_options no_local_options localoptions nolocaloptions local_patterns
+           \ no_local_patterns localpatterns nolocalpatterns local_traps no_local_traps localtraps nolocaltraps
+           \ multi_func_def no_multi_func_def multifuncdef nomultifuncdef multios no_multios nomultios
+           \ octal_zeroes no_octal_zeroes octalzeroes nooctalzeroes pipe_fail no_pipe_fail pipefail nopipefail
+           \ source_trace no_source_trace sourcetrace nosourcetrace typeset_silent no_typeset_silent
+           \ typesetsilent notypesetsilent typeset_to_unset no_typeset_to_unset typesettounset notypesettounset
+           \ verbose no_verbose noverbose xtrace no_xtrace noxtrace append_create no_append_create appendcreate
+           \ noappendcreate bash_rematch no_bash_rematch bashrematch nobashrematch bsd_echo no_bsd_echo bsdecho
+           \ nobsdecho continue_on_error no_continue_on_error continueonerror nocontinueonerror
+           \ csh_junkie_history no_csh_junkie_history cshjunkiehistory nocshjunkiehistory csh_junkie_loops
+           \ no_csh_junkie_loops cshjunkieloops nocshjunkieloops csh_junkie_quotes no_csh_junkie_quotes
+           \ cshjunkiequotes nocshjunkiequotes csh_nullcmd no_csh_nullcmd cshnullcmd nocshnullcmd ksh_arrays
+           \ no_ksh_arrays ksharrays noksharrays ksh_autoload no_ksh_autoload kshautoload nokshautoload
+           \ ksh_option_print no_ksh_option_print kshoptionprint nokshoptionprint ksh_typeset no_ksh_typeset
+           \ kshtypeset nokshtypeset ksh_zero_subscript no_ksh_zero_subscript kshzerosubscript
+           \ nokshzerosubscript posix_aliases no_posix_aliases posixaliases noposixaliases posix_argzero
+           \ no_posix_argzero posixargzero noposixargzero posix_builtins no_posix_builtins posixbuiltins
+           \ noposixbuiltins posix_identifiers no_posix_identifiers posixidentifiers noposixidentifiers
+           \ posix_strings no_posix_strings posixstrings noposixstrings posix_traps no_posix_traps posixtraps
+           \ noposixtraps sh_file_expansion no_sh_file_expansion shfileexpansion noshfileexpansion sh_nullcmd
+           \ no_sh_nullcmd shnullcmd noshnullcmd sh_option_letters no_sh_option_letters shoptionletters
+           \ noshoptionletters sh_word_split no_sh_word_split shwordsplit noshwordsplit traps_async
+           \ no_traps_async trapsasync notrapsasync interactive no_interactive nointeractive login no_login
+           \ nologin privileged no_privileged noprivileged restricted no_restricted norestricted shin_stdin
+           \ no_shin_stdin shinstdin noshinstdin single_command no_single_command singlecommand nosinglecommand
+           \ beep no_beep nobeep combining_chars no_combining_chars combiningchars nocombiningchars emacs
+           \ no_emacs noemacs overstrike no_overstrike nooverstrike single_line_zle no_single_line_zle
+           \ singlelinezle nosinglelinezle vi no_vi novi zle no_zle nozle brace_expand no_brace_expand
+           \ braceexpand nobraceexpand dot_glob no_dot_glob dotglob nodotglob hash_all no_hash_all hashall
+           \ nohashall hist_append no_hist_append histappend nohistappend hist_expand no_hist_expand histexpand
+           \ nohistexpand log no_log nolog mail_warn no_mail_warn mailwarn nomailwarn one_cmd no_one_cmd onecmd
+           \ noonecmd physical no_physical nophysical prompt_vars no_prompt_vars promptvars nopromptvars stdin
+           \ no_stdin nostdin track_all no_track_all trackall notrackall
 syn case match
 
 syn keyword zshTypes            float integer local typeset declare private readonly
@@ -150,15 +275,12 @@ syn keyword zshTypes            float integer local typeset declare private read
 " XXX: this may be too much
 " syn match   zshSwitches         '\s\zs--\=[a-zA-Z0-9-]\+'
 
-syn match   zshNumber           '[+-]\=\<\d\+\>'
-syn match   zshNumber           '[+-]\=\<0x\x\+\>'
-syn match   zshNumber           '[+-]\=\<0\o\+\>'
-syn match   zshNumber           '[+-]\=\d\+#[-+]\=\w\+\>'
-syn match   zshNumber           '[+-]\=\d\+\.\d\+\>'
-
 " TODO: $[...] is the same as $((...)), so add that as well.
 syn cluster zshSubst            contains=zshSubst,zshOldSubst,zshMathSubst
+syn cluster zshSubstQuoted      contains=zshSubstQuoted,zshOldSubst,zshMathSubst
 exe 'syn region  zshSubst       matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. '  fold'
+exe 'syn region  zshSubstQuoted matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. '  fold'
+syn region  zshSubstQuoted       matchgroup=zshSubstDelim start='\${' skip='\\}' end='}' contains=@zshSubst,zshBrackets,zshQuoted fold
 syn region  zshParentheses      transparent start='(' skip='\\)' end=')' fold
 syn region  zshGlob             start='(#' end=')'
 syn region  zshMathSubst        matchgroup=zshSubstDelim transparent
@@ -201,6 +323,8 @@ hi def link zshJobSpec          Special
 hi def link zshPrecommand       Special
 hi def link zshDelimiter        Keyword
 hi def link zshConditional      Conditional
+hi def link zshCase             zshConditional
+hi def link zshCaseIn           zshCase
 hi def link zshException        Exception
 hi def link zshRepeat           Repeat
 hi def link zshKeyword          Keyword
@@ -223,6 +347,7 @@ hi def link zshTypes            Type
 hi def link zshSwitches         Special
 hi def link zshNumber           Number
 hi def link zshSubst            PreProc
+hi def link zshSubstQuoted      zshSubst
 hi def link zshMathSubst        zshSubst
 hi def link zshOldSubst         zshSubst
 hi def link zshSubstDelim       zshSubst