vim-patch:71b6d3397649 (#20144)

Update runtime files
71b6d33976
This commit is contained in:
Christian Clason 2022-09-10 14:54:13 +02:00 committed by GitHub
parent 2a1c65b330
commit 91a2e7a571
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 406 additions and 103 deletions

View File

@ -870,13 +870,15 @@ 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 "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

View File

@ -20,7 +20,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()".

View 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
" Only run this if enabled
if !exists("do_legacy_filetype")

View File

@ -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<'

View File

@ -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<'

View File

@ -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<"

View 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:

29
runtime/ftplugin/lynx.vim Normal file
View File

@ -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:

View 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
" Language: sh
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Dan Sharp
" Last Change: 2022 Sep 07
if exists("b:did_ftplugin") | finish | endif
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:

View 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")

View 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

View 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

View 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

View File

@ -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

View File

@ -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'

View 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"

View 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