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: 2015-05-29 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 16setlocal iskeyword+=- 17 18syn keyword zshTodo contained TODO FIXME XXX NOTE 19 20syn region zshComment oneline start='\%(^\|\s*\)#' end='$' 21 \ contains=zshTodo,@Spell 22 23syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$' 24 25syn match zshQuoted '\\.' 26syn region zshString matchgroup=zshStringDelimiter start=+"+ end=+"+ 27 \ contains=zshQuoted,@zshDerefs,@zshSubst 28syn region zshString matchgroup=zshStringDelimiter start=+'+ end=+'+ 29" XXX: This should probably be more precise, but Zsh seems a bit confused about it itself 30syn region zshPOSIXString matchgroup=zshStringDelimiter start=+\$'+ 31 \ end=+'+ contains=zshQuoted 32syn match zshJobSpec '%\(\d\+\|?\=\w\+\|[%+-]\)' 33 34syn keyword zshPrecommand noglob nocorrect exec command builtin - time 35 36syn keyword zshDelimiter do done end 37 38syn keyword zshConditional if then elif else fi case in esac select 39 40syn keyword zshRepeat while until repeat 41 42syn keyword zshRepeat for foreach nextgroup=zshVariable skipwhite 43 44syn keyword zshException always 45 46syn keyword zshKeyword function nextgroup=zshKSHFunction skipwhite 47 48syn match zshKSHFunction contained '\k\+' 49syn match zshFunction '^\s*\k\+\ze\s*()' 50 51syn match zshOperator '||\|&&\|;\|&!\=' 52 53syn match zshRedir '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)' 54syn match zshRedir '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\=' 55syn match zshRedir '|&\=' 56 57syn region zshHereDoc matchgroup=zshRedir 58 \ start='<\@<!<<\s*\z([^<]\S*\)' 59 \ end='^\z1\>' 60 \ contains=@zshSubst 61syn region zshHereDoc matchgroup=zshRedir 62 \ start='<\@<!<<\s*\\\z(\S\+\)' 63 \ end='^\z1\>' 64 \ contains=@zshSubst 65syn region zshHereDoc matchgroup=zshRedir 66 \ start='<\@<!<<-\s*\\\=\z(\S\+\)' 67 \ end='^\s*\z1\>' 68 \ contains=@zshSubst 69syn region zshHereDoc matchgroup=zshRedir 70 \ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+ 71 \ end='^\z1\>' 72syn region zshHereDoc matchgroup=zshRedir 73 \ start=+<\@<!<<-\s*\(["']\)\z(\S\+\)\1+ 74 \ end='^\s*\z1\>' 75 76syn match zshVariable '\<\h\w*' contained 77 78syn match zshVariableDef '\<\h\w*\ze+\==' 79" XXX: how safe is this? 80syn region zshVariableDef oneline 81 \ start='\$\@<!\<\h\w*\[' end='\]\ze+\==' 82 \ contains=@zshSubst 83 84syn cluster zshDerefs contains=zshShortDeref,zshLongDeref,zshDeref 85 86if !exists("g:zsh_syntax_variables") 87 let s:zsh_syntax_variables = 'all' 88else 89 let s:zsh_syntax_variables = g:zsh_syntax_variables 90endif 91 92if s:zsh_syntax_variables =~ 'short\|all' 93 syn match zshShortDeref '\$[!#$*@?_-]\w\@!' 94 syn match zshShortDeref '\$[=^~]*[#+]*\d\+\>' 95endif 96 97if s:zsh_syntax_variables =~ 'long\|all' 98 syn match zshLongDeref '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)' 99 syn match zshLongDeref '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)' 100 syn match zshLongDeref '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)' 101endif 102 103if s:zsh_syntax_variables =~ 'all' 104 syn match zshDeref '\$[=^~]*[#+]*\h\w*\>' 105else 106 syn match zshDeref transparent contains=NONE '\$[=^~]*[#+]*\h\w*\>' 107endif 108 109syn match zshCommands '\%(^\|\s\)[.:]\ze\s' 110syn keyword zshCommands alias autoload bg bindkey break bye cap cd 111 \ chdir clone comparguments compcall compctl 112 \ compdescribe compfiles compgroups compquote 113 \ comptags comptry compvalues continue dirs 114 \ disable disown echo echotc echoti emulate 115 \ enable eval exec exit export false fc fg 116 \ functions getcap getln getopts hash history 117 \ jobs kill let limit log logout popd print 118 \ printf pushd pushln pwd r read readonly 119 \ rehash return sched set setcap setopt shift 120 \ source stat suspend test times trap true 121 \ ttyctl type ulimit umask unalias unfunction 122 \ unhash unlimit unset unsetopt vared wait 123 \ whence where which zcompile zformat zftp zle 124 \ zmodload zparseopts zprof zpty zregexparse 125 \ zsocket zstyle ztcp 126 127" Options, generated by: echo ${(j:\n:)options[(I)*]} | sort 128syn case ignore 129syn keyword zshOptions aliases allexport all_export alwayslastprompt 130 \ always_lastprompt alwaystoend always_to_end 131 \ appendhistory append_history autocd autocontinue 132 \ auto_continue autolist auto_list 133 \ automenu auto_menu autonamedirs auto_name_dirs 134 \ autoparamkeys auto_param_keys autoparamslash 135 \ auto_param_slash autopushd auto_pushd autoremoveslash 136 \ auto_remove_slash autoresume auto_resume badpattern 137 \ banghist bang_hist bareglobqual bare_glob_qual 138 \ bashautolist bash_auto_list bashrematch bash_rematch 139 \ beep bgnice braceccl brace_ccl braceexpand brace_expand 140 \ bsdecho bsd_echo caseglob case_glob casematch case_match 141 \ cbases cdablevars cd_able_vars chasedots chase_dots 142 \ chaselinks chase_links checkjobs check_jobs 143 \ clobber combiningchars combining_chars completealiases 144 \ complete_aliases completeinword complete_in_word 145 \ continueonerror continue_on_error correct 146 \ correctall correct_all cprecedences c_precedences 147 \ cshjunkiehistory csh_junkie_history cshjunkieloops 148 \ csh_junkie_loops cshjunkiequotes csh_junkie_quotes 149 \ cshnullcmd csh_null_cmd cshnullglob csh_null_glob 150 \ debugbeforecmd debug_before_cmd dotglob dot_glob dvorak 151 \ emacs equals errexit err_exit errreturn err_return evallineno 152 \ eval_lineno exec extendedglob extended_glob extendedhistory 153 \ extended_history flowcontrol flow_control forcefloat 154 \ force_float functionargzero function_arg_zero glob globalexport 155 \ global_export globalrcs global_rcs globassign glob_assign 156 \ globcomplete glob_complete globdots glob_dots glob_subst 157 \ globsubst hashall hash_all hashcmds hash_cmds hashdirs 158 \ hash_dirs hashexecutablesonly hash_executables_only hashlistall 159 \ hash_list_all histallowclobber hist_allow_clobber histappend 160 \ hist_append histbeep hist_beep hist_expand hist_expire_dups_first 161 \ histexpand histexpiredupsfirst histfcntllock hist_fcntl_lock 162 \ histfindnodups hist_find_no_dups histignorealldups 163 \ hist_ignore_all_dups histignoredups hist_ignore_dups 164 \ histignorespace hist_ignore_space histlexwords hist_lex_words 165 \ histnofunctions hist_no_functions histnostore hist_no_store 166 \ histreduceblanks hist_reduce_blanks histsavebycopy 167 \ hist_save_by_copy histsavenodups hist_save_no_dups 168 \ histsubstpattern hist_subst_pattern histverify hist_verify 169 \ hup ignorebraces ignore_braces ignoreclosebraces ignore_close_braces 170 \ ignoreeof ignore_eof incappendhistory inc_append_history 171 \ incappendhistorytime inc_append_history_time interactive 172 \ interactivecomments interactive_comments ksharrays ksh_arrays 173 \ kshautoload ksh_autoload kshglob ksh_glob kshoptionprint 174 \ ksh_option_print kshtypeset ksh_typeset kshzerosubscript 175 \ ksh_zero_subscript listambiguous list_ambiguous listbeep 176 \ list_beep listpacked list_packed listrowsfirst list_rows_first 177 \ listtypes list_types localloops local_loops localoptions 178 \ local_options localpatterns local_patterns localtraps 179 \ local_traps log login longlistjobs long_list_jobs magicequalsubst 180 \ magic_equal_subst mailwarn mail_warn mail_warning mark_dirs 181 \ mailwarning markdirs menucomplete menu_complete monitor 182 \ multibyte multi_byte multifuncdef multi_func_def multios 183 \ multi_os nomatch no_match notify nullglob null_glob numericglobsort 184 \ numeric_glob_sort octalzeroes octal_zeroes onecmd one_cmd 185 \ overstrike over_strike pathdirs path_dirs pathscript 186 \ path_script physical pipefail pipe_fail posixaliases 187 \ posix_aliases posixargzero posix_arg_zero posixbuiltins 188 \ posix_builtins posixcd posix_cd posixidentifiers posix_identifiers 189 \ posixjobs posix_jobs posixstrings posix_strings posixtraps 190 \ posix_traps printeightbit print_eight_bit printexitvalue 191 \ print_exit_value privileged promptbang prompt_bang promptcr 192 \ prompt_cr promptpercent prompt_percent promptsp prompt_sp 193 \ promptsubst prompt_subst promptvars prompt_vars pushdignoredups 194 \ pushd_ignore_dups pushdminus pushd_minus pushdsilent pushd_silent 195 \ pushdtohome pushd_to_home rcexpandparam rc_expandparam rcquotes 196 \ rc_quotes rcs recexact rec_exact rematchpcre re_match_pcre 197 \ restricted rmstarsilent rm_star_silent rmstarwait rm_star_wait 198 \ sharehistory share_history shfileexpansion sh_file_expansion 199 \ shglob sh_glob shinstdin shin_stdin shnullcmd sh_nullcmd 200 \ shoptionletters sh_option_letters shortloops short_loops shwordsplit 201 \ sh_word_split singlecommand single_command singlelinezle single_line_zle 202 \ sourcetrace source_trace stdin sunkeyboardhack sun_keyboard_hack 203 \ trackall track_all transientrprompt transient_rprompt 204 \ trapsasync trapasync typesetsilent type_set_silent unset verbose vi 205 \ warncreateglobal warn_create_global xtrace zle 206 207syn keyword zshOptions noaliases no_aliases noallexport no_allexport noall_export no_all_export noalwayslastprompt no_alwayslastprompt 208 \ noalways_lastprompt no_always_lastprompt noalwaystoend no_alwaystoend noalways_to_end no_always_to_end 209 \ noappendhistory no_appendhistory noappend_history no_append_history noautocd no_autocd noautocontinue no_autocontinue 210 \ noauto_continue no_auto_continue noautolist no_autolist noauto_list no_auto_list 211 \ noautomenu no_automenu noauto_menu no_auto_menu noautonamedirs no_autonamedirs noauto_name_dirs no_auto_name_dirs 212 \ noautoparamkeys no_autoparamkeys noauto_param_keys no_auto_param_keys noautoparamslash no_autoparamslash 213 \ noauto_param_slash no_auto_param_slash noautopushd no_autopushd noauto_pushd no_auto_pushd noautoremoveslash no_autoremoveslash 214 \ noauto_remove_slash no_auto_remove_slash noautoresume no_autoresume noauto_resume no_auto_resume nobadpattern no_badpattern 215 \ nobanghist no_banghist nobang_hist no_bang_hist nobareglobqual no_bareglobqual nobare_glob_qual no_bare_glob_qual 216 \ nobashautolist no_bashautolist nobash_auto_list no_bash_auto_list nobashrematch no_bashrematch nobash_rematch no_bash_rematch 217 \ nobeep no_beep nobgnice no_bgnice nobraceccl no_braceccl nobrace_ccl no_brace_ccl nobraceexpand no_braceexpand nobrace_expand no_brace_expand 218 \ nobsdecho no_bsdecho nobsd_echo no_bsd_echo nocaseglob no_caseglob nocase_glob no_case_glob nocasematch no_casematch nocase_match no_case_match 219 \ nocbases no_cbases nocdablevars no_cdablevars nocd_able_vars no_cd_able_vars nochasedots no_chasedots nochase_dots no_chase_dots 220 \ nochaselinks no_chaselinks nochase_links no_chase_links nocheckjobs no_checkjobs nocheck_jobs no_check_jobs 221 \ noclobber no_clobber nocombiningchars no_combiningchars nocombining_chars no_combining_chars nocompletealiases no_completealiases 222 \ nocomplete_aliases no_complete_aliases nocompleteinword no_completeinword nocomplete_in_word no_complete_in_word 223 \ nocontinueonerror no_continueonerror nocontinue_on_error no_continue_on_error nocorrect no_correct 224 \ nocorrectall no_correctall nocorrect_all no_correct_all nocprecedences no_cprecedences noc_precedences no_c_precedences 225 \ nocshjunkiehistory no_cshjunkiehistory nocsh_junkie_history no_csh_junkie_history nocshjunkieloops no_cshjunkieloops 226 \ nocsh_junkie_loops no_csh_junkie_loops nocshjunkiequotes no_cshjunkiequotes nocsh_junkie_quotes no_csh_junkie_quotes 227 \ nocshnullcmd no_cshnullcmd nocsh_null_cmd no_csh_null_cmd nocshnullglob no_cshnullglob nocsh_null_glob no_csh_null_glob 228 \ nodebugbeforecmd no_debugbeforecmd nodebug_before_cmd no_debug_before_cmd nodotglob no_dotglob nodot_glob no_dot_glob nodvorak no_dvorak 229 \ noemacs no_emacs noequals no_equals noerrexit no_errexit noerr_exit no_err_exit noerrreturn no_errreturn noerr_return no_err_return noevallineno no_evallineno 230 \ noeval_lineno no_eval_lineno noexec no_exec noextendedglob no_extendedglob noextended_glob no_extended_glob noextendedhistory no_extendedhistory 231 \ noextended_history no_extended_history noflowcontrol no_flowcontrol noflow_control no_flow_control noforcefloat no_forcefloat 232 \ noforce_float no_force_float nofunctionargzero no_functionargzero nofunction_arg_zero no_function_arg_zero noglob no_glob noglobalexport no_globalexport 233 \ noglobal_export no_global_export noglobalrcs no_globalrcs noglobal_rcs no_global_rcs noglobassign no_globassign noglob_assign no_glob_assign 234 \ noglobcomplete no_globcomplete noglob_complete no_glob_complete noglobdots no_globdots noglob_dots no_glob_dots noglob_subst no_glob_subst 235 \ noglobsubst no_globsubst nohashall no_hashall nohash_all no_hash_all nohashcmds no_hashcmds nohash_cmds no_hash_cmds nohashdirs no_hashdirs 236 \ nohash_dirs no_hash_dirs nohashexecutablesonly no_hashexecutablesonly nohash_executables_only no_hash_executables_only nohashlistall no_hashlistall 237 \ nohash_list_all no_hash_list_all nohistallowclobber no_histallowclobber nohist_allow_clobber no_hist_allow_clobber nohistappend no_histappend 238 \ nohist_append no_hist_append nohistbeep no_histbeep nohist_beep no_hist_beep nohist_expand no_hist_expand nohist_expire_dups_first no_hist_expire_dups_first 239 \ nohistexpand no_histexpand nohistexpiredupsfirst no_histexpiredupsfirst nohistfcntllock no_histfcntllock nohist_fcntl_lock no_hist_fcntl_lock 240 \ nohistfindnodups no_histfindnodups nohist_find_no_dups no_hist_find_no_dups nohistignorealldups no_histignorealldups 241 \ nohist_ignore_all_dups no_hist_ignore_all_dups nohistignoredups no_histignoredups nohist_ignore_dups no_hist_ignore_dups 242 \ nohistignorespace no_histignorespace nohist_ignore_space no_hist_ignore_space nohistlexwords no_histlexwords nohist_lex_words no_hist_lex_words 243 \ nohistnofunctions no_histnofunctions nohist_no_functions no_hist_no_functions nohistnostore no_histnostore nohist_no_store no_hist_no_store 244 \ nohistreduceblanks no_histreduceblanks nohist_reduce_blanks no_hist_reduce_blanks nohistsavebycopy no_histsavebycopy 245 \ nohist_save_by_copy no_hist_save_by_copy nohistsavenodups no_histsavenodups nohist_save_no_dups no_hist_save_no_dups 246 \ nohistsubstpattern no_histsubstpattern nohist_subst_pattern no_hist_subst_pattern nohistverify no_histverify nohist_verify no_hist_verify 247 \ nohup no_hup noignorebraces no_ignorebraces noignore_braces no_ignore_braces noignoreclosebraces no_ignoreclosebraces noignore_close_braces no_ignore_close_braces 248 \ noignoreeof no_ignoreeof noignore_eof no_ignore_eof noincappendhistory no_incappendhistory noinc_append_history no_inc_append_history 249 \ noincappendhistorytime no_incappendhistorytime noinc_append_history_time no_inc_append_history_time nointeractive no_interactive 250 \ nointeractivecomments no_interactivecomments nointeractive_comments no_interactive_comments noksharrays no_ksharrays noksh_arrays no_ksh_arrays 251 \ nokshautoload no_kshautoload noksh_autoload no_ksh_autoload nokshglob no_kshglob noksh_glob no_ksh_glob nokshoptionprint no_kshoptionprint 252 \ noksh_option_print no_ksh_option_print nokshtypeset no_kshtypeset noksh_typeset no_ksh_typeset nokshzerosubscript no_kshzerosubscript 253 \ noksh_zero_subscript no_ksh_zero_subscript nolistambiguous no_listambiguous nolist_ambiguous no_list_ambiguous nolistbeep no_listbeep 254 \ nolist_beep no_list_beep nolistpacked no_listpacked nolist_packed no_list_packed nolistrowsfirst no_listrowsfirst nolist_rows_first no_list_rows_first 255 \ nolisttypes no_listtypes nolist_types no_list_types nolocalloops no_localloops nolocal_loops no_local_loops nolocaloptions no_localoptions 256 \ nolocal_options no_local_options nolocalpatterns no_localpatterns nolocal_patterns no_local_patterns nolocaltraps no_localtraps 257 \ nolocal_traps no_local_traps nolog no_log nologin no_login nolonglistjobs no_longlistjobs nolong_list_jobs no_long_list_jobs nomagicequalsubst no_magicequalsubst 258 \ nomagic_equal_subst no_magic_equal_subst nomailwarn no_mailwarn nomail_warn no_mail_warn nomail_warning no_mail_warning nomark_dirs no_mark_dirs 259 \ nomailwarning no_mailwarning nomarkdirs no_markdirs nomenucomplete no_menucomplete nomenu_complete no_menu_complete nomonitor no_monitor 260 \ nomultibyte no_multibyte nomulti_byte no_multi_byte nomultifuncdef no_multifuncdef nomulti_func_def no_multi_func_def nomultios no_multios 261 \ nomulti_os no_multi_os nonomatch no_nomatch nono_match no_no_match nonotify no_notify nonullglob no_nullglob nonull_glob no_null_glob nonumericglobsort no_numericglobsort 262 \ nonumeric_glob_sort no_numeric_glob_sort nooctalzeroes no_octalzeroes nooctal_zeroes no_octal_zeroes noonecmd no_onecmd noone_cmd no_one_cmd 263 \ nooverstrike no_overstrike noover_strike no_over_strike nopathdirs no_pathdirs nopath_dirs no_path_dirs nopathscript no_pathscript 264 \ nopath_script no_path_script nophysical no_physical nopipefail no_pipefail nopipe_fail no_pipe_fail noposixaliases no_posixaliases 265 \ noposix_aliases no_posix_aliases noposixargzero no_posixargzero noposix_arg_zero no_posix_arg_zero noposixbuiltins no_posixbuiltins 266 \ noposix_builtins no_posix_builtins noposixcd no_posixcd noposix_cd no_posix_cd noposixidentifiers no_posixidentifiers noposix_identifiers no_posix_identifiers 267 \ noposixjobs no_posixjobs noposix_jobs no_posix_jobs noposixstrings no_posixstrings noposix_strings no_posix_strings noposixtraps no_posixtraps 268 \ noposix_traps no_posix_traps noprinteightbit no_printeightbit noprint_eight_bit no_print_eight_bit noprintexitvalue no_printexitvalue 269 \ noprint_exit_value no_print_exit_value noprivileged no_privileged nopromptbang no_promptbang noprompt_bang no_prompt_bang nopromptcr no_promptcr 270 \ noprompt_cr no_prompt_cr nopromptpercent no_promptpercent noprompt_percent no_prompt_percent nopromptsp no_promptsp noprompt_sp no_prompt_sp 271 \ nopromptsubst no_promptsubst noprompt_subst no_prompt_subst nopromptvars no_promptvars noprompt_vars no_prompt_vars nopushdignoredups no_pushdignoredups 272 \ nopushd_ignore_dups no_pushd_ignore_dups nopushdminus no_pushdminus nopushd_minus no_pushd_minus nopushdsilent no_pushdsilent nopushd_silent no_pushd_silent 273 \ nopushdtohome no_pushdtohome nopushd_to_home no_pushd_to_home norcexpandparam no_rcexpandparam norc_expandparam no_rc_expandparam norcquotes no_rcquotes 274 \ norc_quotes no_rc_quotes norcs no_rcs norecexact no_recexact norec_exact no_rec_exact norematchpcre no_rematchpcre nore_match_pcre no_re_match_pcre 275 \ norestricted no_restricted normstarsilent no_rmstarsilent norm_star_silent no_rm_star_silent normstarwait no_rmstarwait norm_star_wait no_rm_star_wait 276 \ nosharehistory no_sharehistory noshare_history no_share_history noshfileexpansion no_shfileexpansion nosh_file_expansion no_sh_file_expansion 277 \ noshglob no_shglob nosh_glob no_sh_glob noshinstdin no_shinstdin noshin_stdin no_shin_stdin noshnullcmd no_shnullcmd nosh_nullcmd no_sh_nullcmd 278 \ noshoptionletters no_shoptionletters nosh_option_letters no_sh_option_letters noshortloops no_shortloops noshort_loops no_short_loops noshwordsplit no_shwordsplit 279 \ nosh_word_split no_sh_word_split nosinglecommand no_singlecommand nosingle_command no_single_command nosinglelinezle no_singlelinezle nosingle_line_zle no_single_line_zle 280 \ nosourcetrace no_sourcetrace nosource_trace no_source_trace nostdin no_stdin nosunkeyboardhack no_sunkeyboardhack nosun_keyboard_hack no_sun_keyboard_hack 281 \ notrackall no_trackall notrack_all no_track_all notransientrprompt no_transientrprompt notransient_rprompt no_transient_rprompt 282 \ notrapsasync no_trapsasync notrapasync no_trapasync notypesetsilent no_typesetsilent notype_set_silent no_type_set_silent nounset no_unset noverbose no_verbose novi no_vi 283 \ nowarncreateglobal no_warncreateglobal nowarn_create_global no_warn_create_global noxtrace no_xtrace nozle no_zle 284syn case match 285 286syn keyword zshTypes float integer local typeset declare 287 288" XXX: this may be too much 289" syn match zshSwitches '\s\zs--\=[a-zA-Z0-9-]\+' 290 291syn match zshNumber '[+-]\=\<\d\+\>' 292syn match zshNumber '[+-]\=\<0x\x\+\>' 293syn match zshNumber '[+-]\=\<0\o\+\>' 294syn match zshNumber '[+-]\=\d\+#[-+]\=\w\+\>' 295syn match zshNumber '[+-]\=\d\+\.\d\+\>' 296 297" TODO: $[...] is the same as $((...)), so add that as well. 298syn cluster zshSubst contains=zshSubst,zshOldSubst,zshMathSubst 299syn region zshSubst matchgroup=zshSubstDelim transparent 300 \ start='\$(' skip='\\)' end=')' contains=TOP 301syn region zshParentheses transparent start='(' skip='\\)' end=')' 302syn region zshMathSubst matchgroup=zshSubstDelim transparent 303 \ start='\$((' skip='\\)' 304 \ matchgroup=zshSubstDelim end='))' 305 \ contains=zshParentheses,@zshSubst,zshNumber, 306 \ @zshDerefs,zshString 307syn region zshBrackets contained transparent start='{' skip='\\}' 308 \ end='}' 309syn region zshSubst matchgroup=zshSubstDelim start='\${' skip='\\}' 310 \ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString 311syn region zshOldSubst matchgroup=zshSubstDelim start=+`+ skip=+\\`+ 312 \ end=+`+ contains=TOP,zshOldSubst 313 314syn sync minlines=50 maxlines=90 315syn sync match zshHereDocSync grouphere NONE '<<-\=\s*\%(\\\=\S\+\|\(["']\)\S\+\1\)' 316syn sync match zshHereDocEndSync groupthere NONE '^\s*EO\a\+\>' 317 318hi def link zshTodo Todo 319hi def link zshComment Comment 320hi def link zshPreProc PreProc 321hi def link zshQuoted SpecialChar 322hi def link zshString String 323hi def link zshStringDelimiter zshString 324hi def link zshPOSIXString zshString 325hi def link zshJobSpec Special 326hi def link zshPrecommand Special 327hi def link zshDelimiter Keyword 328hi def link zshConditional Conditional 329hi def link zshException Exception 330hi def link zshRepeat Repeat 331hi def link zshKeyword Keyword 332hi def link zshFunction None 333hi def link zshKSHFunction zshFunction 334hi def link zshHereDoc String 335hi def link zshOperator None 336hi def link zshRedir Operator 337hi def link zshVariable None 338hi def link zshVariableDef zshVariable 339hi def link zshDereferencing PreProc 340if s:zsh_syntax_variables =~ 'short\|all' 341 hi def link zshShortDeref zshDereferencing 342else 343 hi def link zshShortDeref None 344endif 345if s:zsh_syntax_variables =~ 'long\|all' 346 hi def link zshLongDeref zshDereferencing 347else 348 hi def link zshLongDeref None 349endif 350if s:zsh_syntax_variables =~ 'all' 351 hi def link zshDeref zshDereferencing 352else 353 hi def link zshDeref None 354endif 355hi def link zshCommands Keyword 356hi def link zshOptions Constant 357hi def link zshTypes Type 358hi def link zshSwitches Special 359hi def link zshNumber Number 360hi def link zshSubst PreProc 361hi def link zshMathSubst zshSubst 362hi def link zshOldSubst zshSubst 363hi def link zshSubstDelim zshSubst 364 365let b:current_syntax = "zsh" 366 367let &cpo = s:cpo_save 368unlet s:cpo_save 369