xref: /vim-8.2.3635/runtime/syntax/zsh.vim (revision 23515b4e)
1071d4279SBram Moolenaar" Vim syntax file
2c81e5e79SBram Moolenaar" Language:             Zsh shell script
3f2571c61SBram Moolenaar" Maintainer:           Christian Brabandt <[email protected]>
4f2571c61SBram Moolenaar" Previous Maintainer:  Nikolai Weibull <[email protected]>
5*23515b4eSBram Moolenaar" Latest Revision:      2020-11-21
6f2571c61SBram Moolenaar" License:              Vim (see :h license)
7f2571c61SBram Moolenaar" Repository:           https://github.com/chrisbra/vim-zsh
8071d4279SBram Moolenaar
9c81e5e79SBram Moolenaarif exists("b:current_syntax")
10071d4279SBram Moolenaar  finish
11071d4279SBram Moolenaarendif
12071d4279SBram Moolenaar
13c81e5e79SBram Moolenaarlet s:cpo_save = &cpo
14c81e5e79SBram Moolenaarset cpo&vim
15071d4279SBram Moolenaar
16b17893aaSBram Moolenaarfunction! s:ContainedGroup()
17b17893aaSBram Moolenaar  " needs 7.4.2008 for execute() function
18b17893aaSBram Moolenaar  let result='TOP'
19b17893aaSBram Moolenaar    " vim-pandoc syntax defines the @langname cluster for embedded syntax languages
20b17893aaSBram Moolenaar    " However, if no syntax is defined yet, `syn list @zsh` will return
21b17893aaSBram Moolenaar    " "No syntax items defined", so make sure the result is actually a valid syn cluster
22b17893aaSBram Moolenaar    for cluster in ['markdownHighlightzsh', 'zsh']
23b17893aaSBram Moolenaar      try
24b17893aaSBram Moolenaar      " markdown syntax defines embedded clusters as @markdownhighlight<lang>,
25b17893aaSBram Moolenaar      " pandoc just uses @<lang>, so check both for both clusters
26b17893aaSBram Moolenaar        let a=split(execute('syn list @'. cluster), "\n")
27b17893aaSBram Moolenaar        if len(a) == 2 && a[0] =~# '^---' && a[1] =~? cluster
28b17893aaSBram Moolenaar          return  '@'. cluster
29f391327aSBram Moolenaar        endif
30b17893aaSBram Moolenaar      catch /E392/
31b17893aaSBram Moolenaar        " ignore
32b17893aaSBram Moolenaar      endtry
33b17893aaSBram Moolenaar    endfor
34b17893aaSBram Moolenaar    return result
35b17893aaSBram Moolenaarendfunction
36b17893aaSBram Moolenaar
37b17893aaSBram Moolenaarlet s:contained=s:ContainedGroup()
38b17893aaSBram Moolenaar
39b17893aaSBram Moolenaarsyn iskeyword @,48-57,_,192-255,#,-
40f391327aSBram Moolenaarif get(g:, 'zsh_fold_enable', 0)
41681baaf4SBram Moolenaar    setlocal foldmethod=syntax
42f391327aSBram Moolenaarendif
43071d4279SBram Moolenaar
44b17893aaSBram Moolenaarsyn match   zshPOSIXQuoted      '\\[xX][0-9a-fA-F]\{1,2}'
45b17893aaSBram Moolenaarsyn match   zshPOSIXQuoted      '\\[0-7]\{1,3}'
46b17893aaSBram Moolenaarsyn match   zshPOSIXQuoted      '\\u[0-9a-fA-F]\{1,4}'
47b17893aaSBram Moolenaarsyn match   zshPOSIXQuoted      '\\U[1-9a-fA-F]\{1,8}'
48c81e5e79SBram Moolenaarsyn match   zshQuoted           '\\.'
49c81e5e79SBram Moolenaarsyn region  zshString           matchgroup=zshStringDelimiter start=+"+ end=+"+
50f391327aSBram Moolenaar                                \ contains=zshQuoted,@zshDerefs,@zshSubst fold
51f391327aSBram Moolenaarsyn region  zshString           matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
52c81e5e79SBram Moolenaarsyn region  zshPOSIXString      matchgroup=zshStringDelimiter start=+\$'+
53b17893aaSBram Moolenaar                                \ skip=+\\[\\']+ end=+'+ contains=zshPOSIXQuoted,zshQuoted
54c81e5e79SBram Moolenaarsyn match   zshJobSpec          '%\(\d\+\|?\=\w\+\|[%+-]\)'
55071d4279SBram Moolenaar
56c81e5e79SBram Moolenaarsyn keyword zshPrecommand       noglob nocorrect exec command builtin - time
57071d4279SBram Moolenaar
58f2571c61SBram Moolenaarsyn keyword zshDelimiter        do done end
59071d4279SBram Moolenaar
60c81e5e79SBram Moolenaarsyn keyword zshConditional      if then elif else fi case in esac select
61071d4279SBram Moolenaar
62e37d50a5SBram Moolenaarsyn keyword zshRepeat           while until repeat
63e37d50a5SBram Moolenaar
64e37d50a5SBram Moolenaarsyn keyword zshRepeat           for foreach nextgroup=zshVariable skipwhite
65071d4279SBram Moolenaar
66c81e5e79SBram Moolenaarsyn keyword zshException        always
67c81e5e79SBram Moolenaar
68c81e5e79SBram Moolenaarsyn keyword zshKeyword          function nextgroup=zshKSHFunction skipwhite
69c81e5e79SBram Moolenaar
70f391327aSBram Moolenaarsyn match   zshKSHFunction      contained '\w\S\+'
71c81e5e79SBram Moolenaarsyn match   zshFunction         '^\s*\k\+\ze\s*()'
72c81e5e79SBram Moolenaar
73c81e5e79SBram Moolenaarsyn match   zshOperator         '||\|&&\|;\|&!\='
74c81e5e79SBram Moolenaar
75c81e5e79SBram Moolenaarsyn match   zshRedir            '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)'
76c81e5e79SBram Moolenaarsyn match   zshRedir            '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
77c81e5e79SBram Moolenaarsyn match   zshRedir            '|&\='
78c81e5e79SBram Moolenaar
79c81e5e79SBram Moolenaarsyn region  zshHereDoc          matchgroup=zshRedir
80e37d50a5SBram Moolenaar                                \ start='<\@<!<<\s*\z([^<]\S*\)'
81e37d50a5SBram Moolenaar                                \ end='^\z1\>'
827db25fedSBram Moolenaar                                \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
83c81e5e79SBram Moolenaarsyn region  zshHereDoc          matchgroup=zshRedir
84e37d50a5SBram Moolenaar                                \ start='<\@<!<<\s*\\\z(\S\+\)'
85e37d50a5SBram Moolenaar                                \ end='^\z1\>'
867db25fedSBram Moolenaar                                \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
87e37d50a5SBram Moolenaarsyn region  zshHereDoc          matchgroup=zshRedir
88e37d50a5SBram Moolenaar                                \ start='<\@<!<<-\s*\\\=\z(\S\+\)'
89e37d50a5SBram Moolenaar                                \ end='^\s*\z1\>'
907db25fedSBram Moolenaar                                \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString
91e37d50a5SBram Moolenaarsyn region  zshHereDoc          matchgroup=zshRedir
92e37d50a5SBram Moolenaar                                \ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+
93e37d50a5SBram Moolenaar                                \ end='^\z1\>'
94e37d50a5SBram Moolenaarsyn region  zshHereDoc          matchgroup=zshRedir
95e37d50a5SBram Moolenaar                                \ start=+<\@<!<<-\s*\(["']\)\z(\S\+\)\1+
96c81e5e79SBram Moolenaar                                \ end='^\s*\z1\>'
97c81e5e79SBram Moolenaar
98e37d50a5SBram Moolenaarsyn match   zshVariable         '\<\h\w*' contained
99e37d50a5SBram Moolenaar
100e37d50a5SBram Moolenaarsyn match   zshVariableDef      '\<\h\w*\ze+\=='
101c81e5e79SBram Moolenaar" XXX: how safe is this?
102e37d50a5SBram Moolenaarsyn region  zshVariableDef      oneline
10394237495SBram Moolenaar                                \ start='\$\@<!\<\h\w*\[' end='\]\ze+\?=\?'
104c81e5e79SBram Moolenaar                                \ contains=@zshSubst
105c81e5e79SBram Moolenaar
10694237495SBram Moolenaarsyn cluster zshDerefs           contains=zshShortDeref,zshLongDeref,zshDeref,zshDollarVar
107c81e5e79SBram Moolenaar
108c81e5e79SBram Moolenaarsyn match zshShortDeref       '\$[!#$*@?_-]\w\@!'
109c81e5e79SBram Moolenaarsyn match zshShortDeref       '\$[=^~]*[#+]*\d\+\>'
110071d4279SBram Moolenaar
111c81e5e79SBram Moolenaarsyn match zshLongDeref        '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)'
112c81e5e79SBram Moolenaarsyn match zshLongDeref        '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)'
113c81e5e79SBram Moolenaarsyn match zshLongDeref        '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)'
114c81e5e79SBram Moolenaar
11594237495SBram Moolenaarsyn match zshDollarVar        '\$\h\w*'
116c81e5e79SBram Moolenaarsyn match zshDeref            '\$[=^~]*[#+]*\h\w*\>'
117c81e5e79SBram Moolenaar
118c81e5e79SBram Moolenaarsyn match   zshCommands         '\%(^\|\s\)[.:]\ze\s'
119c81e5e79SBram Moolenaarsyn keyword zshCommands         alias autoload bg bindkey break bye cap cd
120c81e5e79SBram Moolenaar                                \ chdir clone comparguments compcall compctl
121c81e5e79SBram Moolenaar                                \ compdescribe compfiles compgroups compquote
122c81e5e79SBram Moolenaar                                \ comptags comptry compvalues continue dirs
123c81e5e79SBram Moolenaar                                \ disable disown echo echotc echoti emulate
124c81e5e79SBram Moolenaar                                \ enable eval exec exit export false fc fg
125c81e5e79SBram Moolenaar                                \ functions getcap getln getopts hash history
126c81e5e79SBram Moolenaar                                \ jobs kill let limit log logout popd print
12796f45c0bSBram Moolenaar                                \ printf pushd pushln pwd r read
12894237495SBram Moolenaar                                \ rehash return sched set setcap shift
129c81e5e79SBram Moolenaar                                \ source stat suspend test times trap true
130c81e5e79SBram Moolenaar                                \ ttyctl type ulimit umask unalias unfunction
13194237495SBram Moolenaar                                \ unhash unlimit unset  vared wait
132c81e5e79SBram Moolenaar                                \ whence where which zcompile zformat zftp zle
1337db25fedSBram Moolenaar                                \ zmodload zparseopts zprof zpty zrecompile
1347db25fedSBram Moolenaar                                \ zregexparse zsocket zstyle ztcp
135c81e5e79SBram Moolenaar
136f2571c61SBram Moolenaar" Options, generated by: echo ${(j:\n:)options[(I)*]} | sort
137fa735342SBram Moolenaar" Create a list of option names from zsh source dir:
138fa735342SBram Moolenaar"     #!/bin/zsh
139fa735342SBram Moolenaar"    topdir=/path/to/zsh-xxx
14096f45c0bSBram Moolenaar"    grep '^pindex([A-Za-z_]*)$' $topdir/Doc/Zsh/options.yo |
141fa735342SBram Moolenaar"    while read opt
142fa735342SBram Moolenaar"    do
143fa735342SBram Moolenaar"        echo ${${(L)opt#pindex\(}%\)}
144fa735342SBram Moolenaar"    done
145fa735342SBram Moolenaar
146f2571c61SBram Moolenaarsyn case ignore
147f2571c61SBram Moolenaar
14894237495SBram Moolenaarsyn match   zshOptStart /^\s*\%(\%(\%(un\)\?setopt\)\|set\s+[-+]o\)/ nextgroup=zshOption skipwhite
149f55e4c86SBram Moolenaarsyn match   zshOption /
150f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?aliases\>\)\|
15196f45c0bSBram Moolenaar      \ \%(\%(\<no_\?\)\?aliasfuncdef\>\)\|\%(\%(no_\?\)\?alias_func_def\>\)\|
152f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?allexport\>\)\|\%(\%(no_\?\)\?all_export\>\)\|
153f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?alwayslastprompt\>\)\|\%(\%(no_\?\)\?always_last_prompt\>\)\|\%(\%(no_\?\)\?always_lastprompt\>\)\|
154f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?alwaystoend\>\)\|\%(\%(no_\?\)\?always_to_end\>\)\|
155f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?appendcreate\>\)\|\%(\%(no_\?\)\?append_create\>\)\|
156f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?appendhistory\>\)\|\%(\%(no_\?\)\?append_history\>\)\|
157f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autocd\>\)\|\%(\%(no_\?\)\?auto_cd\>\)\|
158f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autocontinue\>\)\|\%(\%(no_\?\)\?auto_continue\>\)\|
159f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autolist\>\)\|\%(\%(no_\?\)\?auto_list\>\)\|
160f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?automenu\>\)\|\%(\%(no_\?\)\?auto_menu\>\)\|
161f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autonamedirs\>\)\|\%(\%(no_\?\)\?auto_name_dirs\>\)\|
162f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autoparamkeys\>\)\|\%(\%(no_\?\)\?auto_param_keys\>\)\|
163f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autoparamslash\>\)\|\%(\%(no_\?\)\?auto_param_slash\>\)\|
164f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autopushd\>\)\|\%(\%(no_\?\)\?auto_pushd\>\)\|
165f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autoremoveslash\>\)\|\%(\%(no_\?\)\?auto_remove_slash\>\)\|
166f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?autoresume\>\)\|\%(\%(no_\?\)\?auto_resume\>\)\|
167f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?badpattern\>\)\|\%(\%(no_\?\)\?bad_pattern\>\)\|
168f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?banghist\>\)\|\%(\%(no_\?\)\?bang_hist\>\)\|
169f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?bareglobqual\>\)\|\%(\%(no_\?\)\?bare_glob_qual\>\)\|
170f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?bashautolist\>\)\|\%(\%(no_\?\)\?bash_auto_list\>\)\|
171f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?bashrematch\>\)\|\%(\%(no_\?\)\?bash_rematch\>\)\|
172f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?beep\>\)\|
173f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?bgnice\>\)\|\%(\%(no_\?\)\?bg_nice\>\)\|
174f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?braceccl\>\)\|\%(\%(no_\?\)\?brace_ccl\>\)\|
175f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?braceexpand\>\)\|\%(\%(no_\?\)\?brace_expand\>\)\|
176f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?bsdecho\>\)\|\%(\%(no_\?\)\?bsd_echo\>\)\|
177f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?caseglob\>\)\|\%(\%(no_\?\)\?case_glob\>\)\|
178f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?casematch\>\)\|\%(\%(no_\?\)\?case_match\>\)\|
179f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cbases\>\)\|\%(\%(no_\?\)\?c_bases\>\)\|
180f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cdablevars\>\)\|\%(\%(no_\?\)\?cdable_vars\>\)\|\%(\%(no_\?\)\?cd_able_vars\>\)\|
181*23515b4eSBram Moolenaar      \ \%(\%(\<no_\?\)\?cdsilent\>\)\|\%(\%(no_\?\)\?cd_silent\>\)\|\%(\%(no_\?\)\?cd_silent\>\)\|
182f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?chasedots\>\)\|\%(\%(no_\?\)\?chase_dots\>\)\|
183f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?chaselinks\>\)\|\%(\%(no_\?\)\?chase_links\>\)\|
184f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?checkjobs\>\)\|\%(\%(no_\?\)\?check_jobs\>\)\|
18596f45c0bSBram Moolenaar      \ \%(\%(\<no_\?\)\?checkrunningjobs\>\)\|\%(\%(no_\?\)\?check_running_jobs\>\)\|
186f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?clobber\>\)\|
187*23515b4eSBram Moolenaar      \ \%(\%(\<no_\?\)\?clobberempty\>\)\|\%(\%(no_\?\)\?clobber_empty\>\)\|
188f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?combiningchars\>\)\|\%(\%(no_\?\)\?combining_chars\>\)\|
189f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?completealiases\>\)\|\%(\%(no_\?\)\?complete_aliases\>\)\|
190f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?completeinword\>\)\|\%(\%(no_\?\)\?complete_in_word\>\)\|
191f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?continueonerror\>\)\|\%(\%(no_\?\)\?continue_on_error\>\)\|
192f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?correct\>\)\|
193f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?correctall\>\)\|\%(\%(no_\?\)\?correct_all\>\)\|
194f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cprecedences\>\)\|\%(\%(no_\?\)\?c_precedences\>\)\|
195f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cshjunkiehistory\>\)\|\%(\%(no_\?\)\?csh_junkie_history\>\)\|
196f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cshjunkieloops\>\)\|\%(\%(no_\?\)\?csh_junkie_loops\>\)\|
197f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cshjunkiequotes\>\)\|\%(\%(no_\?\)\?csh_junkie_quotes\>\)\|
198f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?csh_nullcmd\>\)\|\%(\%(no_\?\)\?csh_null_cmd\>\)\|\%(\%(no_\?\)\?cshnullcmd\>\)\|\%(\%(no_\?\)\?csh_null_cmd\>\)\|
199f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?cshnullglob\>\)\|\%(\%(no_\?\)\?csh_null_glob\>\)\|
200f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?debugbeforecmd\>\)\|\%(\%(no_\?\)\?debug_before_cmd\>\)\|
201f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?dotglob\>\)\|\%(\%(no_\?\)\?dot_glob\>\)\|
202f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?dvorak\>\)\|
203f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?emacs\>\)\|
204f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?equals\>\)\|
205f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?errexit\>\)\|\%(\%(no_\?\)\?err_exit\>\)\|
206f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?errreturn\>\)\|\%(\%(no_\?\)\?err_return\>\)\|
20796f45c0bSBram Moolenaar      \ \%(\%(\<no_\?\)\?evallineno\>\)\|\%(\%(no_\?\)\?eval_lineno\>\)\|
208f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?exec\>\)\|
209f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?extendedglob\>\)\|\%(\%(no_\?\)\?extended_glob\>\)\|
210f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?extendedhistory\>\)\|\%(\%(no_\?\)\?extended_history\>\)\|
211f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?flowcontrol\>\)\|\%(\%(no_\?\)\?flow_control\>\)\|
212f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?forcefloat\>\)\|\%(\%(no_\?\)\?force_float\>\)\|
213f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?functionargzero\>\)\|\%(\%(no_\?\)\?function_argzero\>\)\|\%(\%(no_\?\)\?function_arg_zero\>\)\|
214f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?glob\>\)\|
215f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?globalexport\>\)\|\%(\%(no_\?\)\?global_export\>\)\|
216f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?globalrcs\>\)\|\%(\%(no_\?\)\?global_rcs\>\)\|
217f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?globassign\>\)\|\%(\%(no_\?\)\?glob_assign\>\)\|
218f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?globcomplete\>\)\|\%(\%(no_\?\)\?glob_complete\>\)\|
219f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?globdots\>\)\|\%(\%(no_\?\)\?glob_dots\>\)\|
220f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?glob_subst\>\)\|\%(\%(no_\?\)\?globsubst\>\)\|
221f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?globstarshort\>\)\|\%(\%(no_\?\)\?glob_star_short\>\)\|
222f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hashall\>\)\|\%(\%(no_\?\)\?hash_all\>\)\|
223f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hashcmds\>\)\|\%(\%(no_\?\)\?hash_cmds\>\)\|
224f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hashdirs\>\)\|\%(\%(no_\?\)\?hash_dirs\>\)\|
225f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hashexecutablesonly\>\)\|\%(\%(no_\?\)\?hash_executables_only\>\)\|
226f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hashlistall\>\)\|\%(\%(no_\?\)\?hash_list_all\>\)\|
227f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histallowclobber\>\)\|\%(\%(no_\?\)\?hist_allow_clobber\>\)\|
228f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histappend\>\)\|\%(\%(no_\?\)\?hist_append\>\)\|
229f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histbeep\>\)\|\%(\%(no_\?\)\?hist_beep\>\)\|
230f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hist_expand\>\)\|\%(\%(no_\?\)\?histexpand\>\)\|
231f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hist_expire_dups_first\>\)\|\%(\%(no_\?\)\?histexpiredupsfirst\>\)\|
232f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histfcntllock\>\)\|\%(\%(no_\?\)\?hist_fcntl_lock\>\)\|
233f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histfindnodups\>\)\|\%(\%(no_\?\)\?hist_find_no_dups\>\)\|
234f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histignorealldups\>\)\|\%(\%(no_\?\)\?hist_ignore_all_dups\>\)\|
235f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histignoredups\>\)\|\%(\%(no_\?\)\?hist_ignore_dups\>\)\|
236f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histignorespace\>\)\|\%(\%(no_\?\)\?hist_ignore_space\>\)\|
237f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histlexwords\>\)\|\%(\%(no_\?\)\?hist_lex_words\>\)\|
238f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histnofunctions\>\)\|\%(\%(no_\?\)\?hist_no_functions\>\)\|
239f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histnostore\>\)\|\%(\%(no_\?\)\?hist_no_store\>\)\|
240f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histreduceblanks\>\)\|\%(\%(no_\?\)\?hist_reduce_blanks\>\)\|
241f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histsavebycopy\>\)\|\%(\%(no_\?\)\?hist_save_by_copy\>\)\|
242f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histsavenodups\>\)\|\%(\%(no_\?\)\?hist_save_no_dups\>\)\|
243f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histsubstpattern\>\)\|\%(\%(no_\?\)\?hist_subst_pattern\>\)\|
244f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?histverify\>\)\|\%(\%(no_\?\)\?hist_verify\>\)\|
245f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?hup\>\)\|
246f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?ignorebraces\>\)\|\%(\%(no_\?\)\?ignore_braces\>\)\|
247f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?ignoreclosebraces\>\)\|\%(\%(no_\?\)\?ignore_close_braces\>\)\|
248f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?ignoreeof\>\)\|\%(\%(no_\?\)\?ignore_eof\>\)\|
249f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?incappendhistory\>\)\|\%(\%(no_\?\)\?inc_append_history\>\)\|
250f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?incappendhistorytime\>\)\|\%(\%(no_\?\)\?inc_append_history_time\>\)\|
251f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?interactive\>\)\|
252f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?interactivecomments\>\)\|\%(\%(no_\?\)\?interactive_comments\>\)\|
253f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?ksharrays\>\)\|\%(\%(no_\?\)\?ksh_arrays\>\)\|
254f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?kshautoload\>\)\|\%(\%(no_\?\)\?ksh_autoload\>\)\|
255f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?kshglob\>\)\|\%(\%(no_\?\)\?ksh_glob\>\)\|
256f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?kshoptionprint\>\)\|\%(\%(no_\?\)\?ksh_option_print\>\)\|
257f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?kshtypeset\>\)\|\%(\%(no_\?\)\?ksh_typeset\>\)\|
258f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?kshzerosubscript\>\)\|\%(\%(no_\?\)\?ksh_zero_subscript\>\)\|
259f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?listambiguous\>\)\|\%(\%(no_\?\)\?list_ambiguous\>\)\|
260f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?listbeep\>\)\|\%(\%(no_\?\)\?list_beep\>\)\|
261f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?listpacked\>\)\|\%(\%(no_\?\)\?list_packed\>\)\|
262f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?listrowsfirst\>\)\|\%(\%(no_\?\)\?list_rows_first\>\)\|
263f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?listtypes\>\)\|\%(\%(no_\?\)\?list_types\>\)\|
264f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?localloops\>\)\|\%(\%(no_\?\)\?local_loops\>\)\|
265f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?localoptions\>\)\|\%(\%(no_\?\)\?local_options\>\)\|
266f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?localpatterns\>\)\|\%(\%(no_\?\)\?local_patterns\>\)\|
267f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?localtraps\>\)\|\%(\%(no_\?\)\?local_traps\>\)\|
268f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?log\>\)\|
269f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?login\>\)\|
270f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?longlistjobs\>\)\|\%(\%(no_\?\)\?long_list_jobs\>\)\|
271f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?magicequalsubst\>\)\|\%(\%(no_\?\)\?magic_equal_subst\>\)\|
272f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?mark_dirs\>\)\|
273f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?mailwarn\>\)\|\%(\%(no_\?\)\?mail_warn\>\)\|
274f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?mailwarning\>\)\|\%(\%(no_\?\)\?mail_warning\>\)\|
275f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?markdirs\>\)\|
276f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?menucomplete\>\)\|\%(\%(no_\?\)\?menu_complete\>\)\|
277f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?monitor\>\)\|
278f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?multibyte\>\)\|\%(\%(no_\?\)\?multi_byte\>\)\|
279f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?multifuncdef\>\)\|\%(\%(no_\?\)\?multi_func_def\>\)\|
280f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?multios\>\)\|\%(\%(no_\?\)\?multi_os\>\)\|
281f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?nomatch\>\)\|\%(\%(no_\?\)\?no_match\>\)\|
282f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?notify\>\)\|
283f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?nullglob\>\)\|\%(\%(no_\?\)\?null_glob\>\)\|
284f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?numericglobsort\>\)\|\%(\%(no_\?\)\?numeric_glob_sort\>\)\|
285f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?octalzeroes\>\)\|\%(\%(no_\?\)\?octal_zeroes\>\)\|
286f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?onecmd\>\)\|\%(\%(no_\?\)\?one_cmd\>\)\|
287f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?overstrike\>\)\|\%(\%(no_\?\)\?over_strike\>\)\|
288f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pathdirs\>\)\|\%(\%(no_\?\)\?path_dirs\>\)\|
289f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pathscript\>\)\|\%(\%(no_\?\)\?path_script\>\)\|
290f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?physical\>\)\|
291f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pipefail\>\)\|\%(\%(no_\?\)\?pipe_fail\>\)\|
292f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixaliases\>\)\|\%(\%(no_\?\)\?posix_aliases\>\)\|
293f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixargzero\>\)\|\%(\%(no_\?\)\?posix_arg_zero\>\)\|\%(\%(no_\?\)\?posix_argzero\>\)\|
294f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixbuiltins\>\)\|\%(\%(no_\?\)\?posix_builtins\>\)\|
295f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixcd\>\)\|\%(\%(no_\?\)\?posix_cd\>\)\|
296f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixidentifiers\>\)\|\%(\%(no_\?\)\?posix_identifiers\>\)\|
297f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixjobs\>\)\|\%(\%(no_\?\)\?posix_jobs\>\)\|
298f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixstrings\>\)\|\%(\%(no_\?\)\?posix_strings\>\)\|
299f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?posixtraps\>\)\|\%(\%(no_\?\)\?posix_traps\>\)\|
300f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?printeightbit\>\)\|\%(\%(no_\?\)\?print_eight_bit\>\)\|
301f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?printexitvalue\>\)\|\%(\%(no_\?\)\?print_exit_value\>\)\|
302f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?privileged\>\)\|
303f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?promptbang\>\)\|\%(\%(no_\?\)\?prompt_bang\>\)\|
304f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?promptcr\>\)\|\%(\%(no_\?\)\?prompt_cr\>\)\|
305f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?promptpercent\>\)\|\%(\%(no_\?\)\?prompt_percent\>\)\|
306f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?promptsp\>\)\|\%(\%(no_\?\)\?prompt_sp\>\)\|
307f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?promptsubst\>\)\|\%(\%(no_\?\)\?prompt_subst\>\)\|
308f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?promptvars\>\)\|\%(\%(no_\?\)\?prompt_vars\>\)\|
309f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pushdignoredups\>\)\|\%(\%(no_\?\)\?pushd_ignore_dups\>\)\|
310f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pushdminus\>\)\|\%(\%(no_\?\)\?pushd_minus\>\)\|
311f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pushdsilent\>\)\|\%(\%(no_\?\)\?pushd_silent\>\)\|
312f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?pushdtohome\>\)\|\%(\%(no_\?\)\?pushd_to_home\>\)\|
313f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?rcexpandparam\>\)\|\%(\%(no_\?\)\?rc_expandparam\>\)\|\%(\%(no_\?\)\?rc_expand_param\>\)\|
314f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?rcquotes\>\)\|\%(\%(no_\?\)\?rc_quotes\>\)\|
315f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?rcs\>\)\|
316f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?recexact\>\)\|\%(\%(no_\?\)\?rec_exact\>\)\|
317f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?rematchpcre\>\)\|\%(\%(no_\?\)\?re_match_pcre\>\)\|\%(\%(no_\?\)\?rematch_pcre\>\)\|
318f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?restricted\>\)\|
319f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?rmstarsilent\>\)\|\%(\%(no_\?\)\?rm_star_silent\>\)\|
320f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?rmstarwait\>\)\|\%(\%(no_\?\)\?rm_star_wait\>\)\|
321f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?sharehistory\>\)\|\%(\%(no_\?\)\?share_history\>\)\|
322f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shfileexpansion\>\)\|\%(\%(no_\?\)\?sh_file_expansion\>\)\|
323f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shglob\>\)\|\%(\%(no_\?\)\?sh_glob\>\)\|
324f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shinstdin\>\)\|\%(\%(no_\?\)\?shin_stdin\>\)\|
325f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shnullcmd\>\)\|\%(\%(no_\?\)\?sh_nullcmd\>\)\|
326f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shoptionletters\>\)\|\%(\%(no_\?\)\?sh_option_letters\>\)\|
327f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shortloops\>\)\|\%(\%(no_\?\)\?short_loops\>\)\|
328*23515b4eSBram Moolenaar      \ \%(\%(\<no_\?\)\?shortrepeat\>\)\|\%(\%(no_\?\)\?short_repeat\>\)\|
329f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?shwordsplit\>\)\|\%(\%(no_\?\)\?sh_word_split\>\)\|
330f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?singlecommand\>\)\|\%(\%(no_\?\)\?single_command\>\)\|
331f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?singlelinezle\>\)\|\%(\%(no_\?\)\?single_line_zle\>\)\|
332f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?sourcetrace\>\)\|\%(\%(no_\?\)\?source_trace\>\)\|
333f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?stdin\>\)\|
334f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?sunkeyboardhack\>\)\|\%(\%(no_\?\)\?sun_keyboard_hack\>\)\|
335f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?trackall\>\)\|\%(\%(no_\?\)\?track_all\>\)\|
336f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?transientrprompt\>\)\|\%(\%(no_\?\)\?transient_rprompt\>\)\|
337f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?trapsasync\>\)\|\%(\%(no_\?\)\?traps_async\>\)\|
338f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?typesetsilent\>\)\|\%(\%(no_\?\)\?type_set_silent\>\)\|\%(\%(no_\?\)\?typeset_silent\>\)\|
339f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?unset\>\)\|
340f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?verbose\>\)\|
341f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?vi\>\)\|
34296f45c0bSBram Moolenaar      \ \%(\%(\<no_\?\)\?warnnestedvar\>\)\|\%(\%(no_\?\)\?warn_nested_var\>\)\|
343f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?warncreateglobal\>\)\|\%(\%(no_\?\)\?warn_create_global\>\)\|
344f55e4c86SBram Moolenaar      \ \%(\%(\<no_\?\)\?xtrace\>\)\|
3452f058491SBram Moolenaar      \ \%(\%(\<no_\?\)\?zle\>\)/ nextgroup=zshOption,zshComment skipwhite contained
346f2571c61SBram Moolenaar
347*23515b4eSBram Moolenaarsyn case match
348*23515b4eSBram Moolenaar
3492f058491SBram Moolenaarsyn keyword zshTypes            float integer local typeset declare private readonly
350c81e5e79SBram Moolenaar
351c81e5e79SBram Moolenaar" XXX: this may be too much
352c81e5e79SBram Moolenaar" syn match   zshSwitches         '\s\zs--\=[a-zA-Z0-9-]\+'
353c81e5e79SBram Moolenaar
354c81e5e79SBram Moolenaarsyn match   zshNumber           '[+-]\=\<\d\+\>'
355c81e5e79SBram Moolenaarsyn match   zshNumber           '[+-]\=\<0x\x\+\>'
356c81e5e79SBram Moolenaarsyn match   zshNumber           '[+-]\=\<0\o\+\>'
357c81e5e79SBram Moolenaarsyn match   zshNumber           '[+-]\=\d\+#[-+]\=\w\+\>'
358c81e5e79SBram Moolenaarsyn match   zshNumber           '[+-]\=\d\+\.\d\+\>'
359c81e5e79SBram Moolenaar
360e37d50a5SBram Moolenaar" TODO: $[...] is the same as $((...)), so add that as well.
361c81e5e79SBram Moolenaarsyn cluster zshSubst            contains=zshSubst,zshOldSubst,zshMathSubst
362b17893aaSBram Moolenaarexe 'syn region  zshSubst       matchgroup=zshSubstDelim transparent start=/\$(/ skip=/\\)/ end=/)/ contains='.s:contained. '  fold'
363681baaf4SBram Moolenaarsyn region  zshParentheses      transparent start='(' skip='\\)' end=')' fold
36494237495SBram Moolenaarsyn region  zshGlob             start='(#' end=')'
365c81e5e79SBram Moolenaarsyn region  zshMathSubst        matchgroup=zshSubstDelim transparent
366*23515b4eSBram Moolenaar                                \ start='\%(\$\?\)[<=>]\@<!((' skip='\\)' end='))'
367c81e5e79SBram Moolenaar                                \ contains=zshParentheses,@zshSubst,zshNumber,
368681baaf4SBram Moolenaar                                \ @zshDerefs,zshString keepend fold
369b17893aaSBram Moolenaar" The ms=s+1 prevents matching zshBrackets several times on opening brackets
370b17893aaSBram Moolenaar" (see https://github.com/chrisbra/vim-zsh/issues/21#issuecomment-576330348)
371b17893aaSBram Moolenaarsyn region  zshBrackets         contained transparent start='{'ms=s+1 skip='\\}'
372681baaf4SBram Moolenaar                                \ end='}' fold
373b17893aaSBram Moolenaarexe 'syn region  zshBrackets    transparent start=/{/ms=s+1 skip=/\\}/ end=/}/ contains='.s:contained. ' fold'
374b17893aaSBram Moolenaar
375c81e5e79SBram Moolenaarsyn region  zshSubst            matchgroup=zshSubstDelim start='\${' skip='\\}'
376681baaf4SBram Moolenaar                                \ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString fold
377b17893aaSBram Moolenaarexe 'syn region  zshOldSubst    matchgroup=zshSubstDelim start=/`/ skip=/\\[\\`]/ end=/`/ contains='.s:contained. ',zshOldSubst fold'
378c81e5e79SBram Moolenaar
379f2571c61SBram Moolenaarsyn sync    minlines=50 maxlines=90
380e37d50a5SBram Moolenaarsyn sync    match zshHereDocSync    grouphere   NONE '<<-\=\s*\%(\\\=\S\+\|\(["']\)\S\+\1\)'
381e37d50a5SBram Moolenaarsyn sync    match zshHereDocEndSync groupthere  NONE '^\s*EO\a\+\>'
382e37d50a5SBram Moolenaar
383*23515b4eSBram Moolenaarsyn keyword zshTodo             contained TODO FIXME XXX NOTE
384*23515b4eSBram Moolenaar
385*23515b4eSBram Moolenaarsyn region  zshComment          oneline start='\%(^\|\s\+\)#' end='$'
386*23515b4eSBram Moolenaar                                \ contains=zshTodo,@Spell fold
387*23515b4eSBram Moolenaar
388*23515b4eSBram Moolenaarsyn region  zshComment          start='^\s*#' end='^\%(\s*#\)\@!'
389*23515b4eSBram Moolenaar                                \ contains=zshTodo,@Spell fold
390*23515b4eSBram Moolenaar
391*23515b4eSBram Moolenaarsyn match   zshPreProc          '^\%1l#\%(!\|compdef\|autoload\).*$'
392*23515b4eSBram Moolenaar
393c81e5e79SBram Moolenaarhi def link zshTodo             Todo
394c81e5e79SBram Moolenaarhi def link zshComment          Comment
395c81e5e79SBram Moolenaarhi def link zshPreProc          PreProc
396c81e5e79SBram Moolenaarhi def link zshQuoted           SpecialChar
397b17893aaSBram Moolenaarhi def link zshPOSIXQuoted      SpecialChar
398c81e5e79SBram Moolenaarhi def link zshString           String
399c81e5e79SBram Moolenaarhi def link zshStringDelimiter  zshString
400c81e5e79SBram Moolenaarhi def link zshPOSIXString      zshString
401c81e5e79SBram Moolenaarhi def link zshJobSpec          Special
402c81e5e79SBram Moolenaarhi def link zshPrecommand       Special
403c81e5e79SBram Moolenaarhi def link zshDelimiter        Keyword
404c81e5e79SBram Moolenaarhi def link zshConditional      Conditional
405c81e5e79SBram Moolenaarhi def link zshException        Exception
406c81e5e79SBram Moolenaarhi def link zshRepeat           Repeat
407c81e5e79SBram Moolenaarhi def link zshKeyword          Keyword
408c81e5e79SBram Moolenaarhi def link zshFunction         None
409c81e5e79SBram Moolenaarhi def link zshKSHFunction      zshFunction
410c81e5e79SBram Moolenaarhi def link zshHereDoc          String
411c81e5e79SBram Moolenaarhi def link zshOperator         None
412c81e5e79SBram Moolenaarhi def link zshRedir            Operator
413c81e5e79SBram Moolenaarhi def link zshVariable         None
414e37d50a5SBram Moolenaarhi def link zshVariableDef      zshVariable
415c81e5e79SBram Moolenaarhi def link zshDereferencing    PreProc
416c81e5e79SBram Moolenaarhi def link zshShortDeref       zshDereferencing
417c81e5e79SBram Moolenaarhi def link zshLongDeref        zshDereferencing
418c81e5e79SBram Moolenaarhi def link zshDeref            zshDereferencing
41994237495SBram Moolenaarhi def link zshDollarVar        zshDereferencing
420c81e5e79SBram Moolenaarhi def link zshCommands         Keyword
42194237495SBram Moolenaarhi def link zshOptStart         Keyword
42294237495SBram Moolenaarhi def link zshOption           Constant
423c81e5e79SBram Moolenaarhi def link zshTypes            Type
424c81e5e79SBram Moolenaarhi def link zshSwitches         Special
425c81e5e79SBram Moolenaarhi def link zshNumber           Number
426c81e5e79SBram Moolenaarhi def link zshSubst            PreProc
427c81e5e79SBram Moolenaarhi def link zshMathSubst        zshSubst
428c81e5e79SBram Moolenaarhi def link zshOldSubst         zshSubst
429c81e5e79SBram Moolenaarhi def link zshSubstDelim       zshSubst
43094237495SBram Moolenaarhi def link zshGlob             zshSubst
431c81e5e79SBram Moolenaar
432071d4279SBram Moolenaarlet b:current_syntax = "zsh"
433071d4279SBram Moolenaar
434c81e5e79SBram Moolenaarlet &cpo = s:cpo_save
435c81e5e79SBram Moolenaarunlet s:cpo_save
436