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