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