forked from aniani/vim
		
	
		
			
				
	
	
		
			215 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:             Zsh shell script
 | |
| " Maintainer:           Christian Brabandt <cb@256bit.org>
 | |
| " Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
 | |
| " Latest Revision:      2017-04-10
 | |
| " License:              Vim (see :h license)
 | |
| " Repository:           https://github.com/chrisbra/vim-zsh
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| 
 | |
| if v:version > 704 || (v:version == 704 && has("patch1142"))
 | |
|     syn iskeyword @,48-57,_,192-255,#,-
 | |
| else
 | |
|     setlocal iskeyword+=-
 | |
| endif
 | |
| if get(g:, 'zsh_fold_enable', 0)
 | |
|     setlocal foldmethod=syntax
 | |
| endif
 | |
| 
 | |
| syn keyword zshTodo             contained TODO FIXME XXX NOTE
 | |
| 
 | |
| syn region  zshComment          oneline start='\%(^\|\s\+\)#' end='$'
 | |
|                                 \ contains=zshTodo,@Spell fold
 | |
| 
 | |
| syn region  zshComment          start='^\s*#' end='^\%(\s*#\)\@!'
 | |
|                                 \ contains=zshTodo,@Spell fold
 | |
| 
 | |
| syn match   zshPreProc          '^\%1l#\%(!\|compdef\|autoload\).*$'
 | |
| 
 | |
| syn match   zshQuoted           '\\.'
 | |
| syn region  zshString           matchgroup=zshStringDelimiter start=+"+ end=+"+
 | |
|                                 \ contains=zshQuoted,@zshDerefs,@zshSubst fold
 | |
| syn region  zshString           matchgroup=zshStringDelimiter start=+'+ end=+'+ fold
 | |
| " XXX: This should probably be more precise, but Zsh seems a bit confused about it itself
 | |
| syn region  zshPOSIXString      matchgroup=zshStringDelimiter start=+\$'+
 | |
|                                 \ end=+'+ contains=zshQuoted
 | |
| syn match   zshJobSpec          '%\(\d\+\|?\=\w\+\|[%+-]\)'
 | |
| 
 | |
| syn keyword zshPrecommand       noglob nocorrect exec command builtin - time
 | |
| 
 | |
| syn keyword zshDelimiter        do done end
 | |
| 
 | |
| syn keyword zshConditional      if then elif else fi case in esac select
 | |
| 
 | |
| syn keyword zshRepeat           while until repeat
 | |
| 
 | |
| syn keyword zshRepeat           for foreach nextgroup=zshVariable skipwhite
 | |
| 
 | |
| syn keyword zshException        always
 | |
| 
 | |
| syn keyword zshKeyword          function nextgroup=zshKSHFunction skipwhite
 | |
| 
 | |
| syn match   zshKSHFunction      contained '\w\S\+'
 | |
| syn match   zshFunction         '^\s*\k\+\ze\s*()'
 | |
| 
 | |
| syn match   zshOperator         '||\|&&\|;\|&!\='
 | |
| 
 | |
| syn match   zshRedir            '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)'
 | |
| syn match   zshRedir            '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
 | |
| syn match   zshRedir            '|&\='
 | |
| 
 | |
| syn region  zshHereDoc          matchgroup=zshRedir
 | |
|                                 \ start='<\@<!<<\s*\z([^<]\S*\)'
 | |
|                                 \ end='^\z1\>'
 | |
|                                 \ contains=@zshSubst
 | |
| syn region  zshHereDoc          matchgroup=zshRedir
 | |
|                                 \ start='<\@<!<<\s*\\\z(\S\+\)'
 | |
|                                 \ end='^\z1\>'
 | |
|                                 \ contains=@zshSubst
 | |
| syn region  zshHereDoc          matchgroup=zshRedir
 | |
|                                 \ start='<\@<!<<-\s*\\\=\z(\S\+\)'
 | |
|                                 \ end='^\s*\z1\>'
 | |
|                                 \ contains=@zshSubst
 | |
| syn region  zshHereDoc          matchgroup=zshRedir
 | |
|                                 \ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+
 | |
|                                 \ end='^\z1\>'
 | |
| syn region  zshHereDoc          matchgroup=zshRedir
 | |
|                                 \ start=+<\@<!<<-\s*\(["']\)\z(\S\+\)\1+
 | |
|                                 \ end='^\s*\z1\>'
 | |
| 
 | |
| syn match   zshVariable         '\<\h\w*' contained
 | |
| 
 | |
| syn match   zshVariableDef      '\<\h\w*\ze+\=='
 | |
| " XXX: how safe is this?
 | |
| syn region  zshVariableDef      oneline
 | |
|                                 \ start='\$\@<!\<\h\w*\[' end='\]\ze+\?=\?'
 | |
|                                 \ contains=@zshSubst
 | |
| 
 | |
| syn cluster zshDerefs           contains=zshShortDeref,zshLongDeref,zshDeref,zshDollarVar
 | |
| 
 | |
| syn match zshShortDeref       '\$[!#$*@?_-]\w\@!'
 | |
| syn match zshShortDeref       '\$[=^~]*[#+]*\d\+\>'
 | |
| 
 | |
| syn match zshLongDeref        '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)'
 | |
| syn match zshLongDeref        '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)'
 | |
| syn match zshLongDeref        '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)'
 | |
| 
 | |
| syn match zshDollarVar        '\$\h\w*'
 | |
| syn match zshDeref            '\$[=^~]*[#+]*\h\w*\>'
 | |
| 
 | |
| syn match   zshCommands         '\%(^\|\s\)[.:]\ze\s'
 | |
| syn keyword zshCommands         alias autoload bg bindkey break bye cap cd
 | |
|                                 \ chdir clone comparguments compcall compctl
 | |
|                                 \ compdescribe compfiles compgroups compquote
 | |
|                                 \ comptags comptry compvalues continue dirs
 | |
|                                 \ disable disown echo echotc echoti emulate
 | |
|                                 \ enable eval exec exit export false fc fg
 | |
|                                 \ functions getcap getln getopts hash history
 | |
|                                 \ jobs kill let limit log logout popd print
 | |
|                                 \ printf pushd pushln pwd r read readonly
 | |
|                                 \ rehash return sched set setcap shift
 | |
|                                 \ source stat suspend test times trap true
 | |
|                                 \ ttyctl type ulimit umask unalias unfunction
 | |
|                                 \ unhash unlimit unset  vared wait
 | |
|                                 \ whence where which zcompile zformat zftp zle
 | |
|                                 \ zmodload zparseopts zprof zpty zregexparse
 | |
|                                 \ zsocket zstyle ztcp
 | |
| 
 | |
| " Options, generated by: echo ${(j:\n:)options[(I)*]} | sort
 | |
| " Create a list of option names from zsh source dir:
 | |
| "     #!/bin/zsh
 | |
| "    topdir=/path/to/zsh-xxx
 | |
| "    grep '^pindex([A-Za-z_]*)$' $topdir/Src/Doc/Zsh/optionsyo |
 | |
| "    while read opt
 | |
| "    do
 | |
| "        echo ${${(L)opt#pindex\(}%\)}
 | |
| "    done
 | |
| 
 | |
| syn case ignore
 | |
| 
 | |
| syn match   zshOptStart /^\s*\%(\%(\%(un\)\?setopt\)\|set\s+[-+]o\)/ nextgroup=zshOption skipwhite
 | |
| syn match   zshOption /\%(\%(no_\?\)\?aliases\)\|\%(\%(no_\?\)\?allexport\)\|\%(\%(no_\?\)\?all_export\)\|\%(\%(no_\?\)\?alwayslastprompt\)\|\%(\%(no_\?\)\?always_last_prompt\)\|\%(\%(no_\?\)\?always_lastprompt\)\|\%(\%(no_\?\)\?alwaystoend\)\|\%(\%(no_\?\)\?always_to_end\)\|\%(\%(no_\?\)\?appendcreate\)\|\%(\%(no_\?\)\?append_create\)\|\%(\%(no_\?\)\?appendhistory\)\|\%(\%(no_\?\)\?append_history\)\|\%(\%(no_\?\)\?autocd\)\|\%(\%(no_\?\)\?auto_cd\)\|\%(\%(no_\?\)\?autocontinue\)\|\%(\%(no_\?\)\?auto_continue\)\|\%(\%(no_\?\)\?autolist\)\|\%(\%(no_\?\)\?auto_list\)\|\%(\%(no_\?\)\?automenu\)\|\%(\%(no_\?\)\?auto_menu\)\|\%(\%(no_\?\)\?autonamedirs\)\|\%(\%(no_\?\)\?auto_name_dirs\)\|\%(\%(no_\?\)\?autoparamkeys\)\|\%(\%(no_\?\)\?auto_param_keys\)\|\%(\%(no_\?\)\?autoparamslash\)\|\%(\%(no_\?\)\?auto_param_slash\)\|\%(\%(no_\?\)\?autopushd\)\|\%(\%(no_\?\)\?auto_pushd\)\|\%(\%(no_\?\)\?autoremoveslash\)\|\%(\%(no_\?\)\?auto_remove_slash\)\|\%(\%(no_\?\)\?autoresume\)\|\%(\%(no_\?\)\?auto_resume\)\|\%(\%(no_\?\)\?badpattern\)\|\%(\%(no_\?\)\?bad_pattern\)\|\%(\%(no_\?\)\?banghist\)\|\%(\%(no_\?\)\?bang_hist\)\|\%(\%(no_\?\)\?bareglobqual\)\|\%(\%(no_\?\)\?bare_glob_qual\)\|\%(\%(no_\?\)\?bashautolist\)\|\%(\%(no_\?\)\?bash_auto_list\)\|\%(\%(no_\?\)\?bashrematch\)\|\%(\%(no_\?\)\?bash_rematch\)\|\%(\%(no_\?\)\?beep\)\|\%(\%(no_\?\)\?bgnice\)\|\%(\%(no_\?\)\?bg_nice\)\|\%(\%(no_\?\)\?braceccl\)\|\%(\%(no_\?\)\?brace_ccl\)\|\%(\%(no_\?\)\?braceexpand\)\|\%(\%(no_\?\)\?brace_expand\)\|\%(\%(no_\?\)\?bsdecho\)\|\%(\%(no_\?\)\?bsd_echo\)\|\%(\%(no_\?\)\?caseglob\)\|\%(\%(no_\?\)\?case_glob\)\|\%(\%(no_\?\)\?casematch\)\|\%(\%(no_\?\)\?case_match\)\|\%(\%(no_\?\)\?cbases\)\|\%(\%(no_\?\)\?c_bases\)\|\%(\%(no_\?\)\?cdablevars\)\|\%(\%(no_\?\)\?cdable_vars\)\|\%(\%(no_\?\)\?cd_able_vars\)\|\%(\%(no_\?\)\?chasedots\)\|\%(\%(no_\?\)\?chase_dots\)\|\%(\%(no_\?\)\?chaselinks\)\|\%(\%(no_\?\)\?chase_links\)\|\%(\%(no_\?\)\?checkjobs\)\|\%(\%(no_\?\)\?check_jobs\)\|\%(\%(no_\?\)\?clobber\)\|\%(\%(no_\?\)\?combiningchars\)\|\%(\%(no_\?\)\?combining_chars\)\|\%(\%(no_\?\)\?completealiases\)\|\%(\%(no_\?\)\?complete_aliases\)\|\%(\%(no_\?\)\?completeinword\)\|\%(\%(no_\?\)\?complete_in_word\)\|\%(\%(no_\?\)\?continueonerror\)\|\%(\%(no_\?\)\?continue_on_error\)\|\%(\%(no_\?\)\?correct\)\|\%(\%(no_\?\)\?correctall\)\|\%(\%(no_\?\)\?correct_all\)\|\%(\%(no_\?\)\?cprecedences\)\|\%(\%(no_\?\)\?c_precedences\)\|\%(\%(no_\?\)\?cshjunkiehistory\)\|\%(\%(no_\?\)\?csh_junkie_history\)\|\%(\%(no_\?\)\?cshjunkieloops\)\|\%(\%(no_\?\)\?csh_junkie_loops\)\|\%(\%(no_\?\)\?cshjunkiequotes\)\|\%(\%(no_\?\)\?csh_junkie_quotes\)\|\%(\%(no_\?\)\?csh_nullcmd\)\|\%(\%(no_\?\)\?csh_null_cmd\)\|\%(\%(no_\?\)\?cshnullcmd\)\|\%(\%(no_\?\)\?csh_null_cmd\)\|\%(\%(no_\?\)\?cshnullglob\)\|\%(\%(no_\?\)\?csh_null_glob\)\|\%(\%(no_\?\)\?debugbeforecmd\)\|\%(\%(no_\?\)\?debug_before_cmd\)\|\%(\%(no_\?\)\?dotglob\)\|\%(\%(no_\?\)\?dot_glob\)\|\%(\%(no_\?\)\?dvorak\)\|\%(\%(no_\?\)\?emacs\)\|\%(\%(no_\?\)\?equals\)\|\%(\%(no_\?\)\?errexit\)\|\%(\%(no_\?\)\?err_exit\)\|\%(\%(no_\?\)\?errreturn\)\|\%(\%(no_\?\)\?err_return\)\|\%(\%(no_\?\)\?evallineno\)\|\%(\%(no_\?\)\?eval_lineno\)\|\%(\%(no_\?\)\?exec\)\|\%(\%(no_\?\)\?extendedglob\)\|\%(\%(no_\?\)\?extended_glob\)\|\%(\%(no_\?\)\?extendedhistory\)\|\%(\%(no_\?\)\?extended_history\)\|\%(\%(no_\?\)\?flowcontrol\)\|\%(\%(no_\?\)\?flow_control\)\|\%(\%(no_\?\)\?forcefloat\)\|\%(\%(no_\?\)\?force_float\)\|\%(\%(no_\?\)\?functionargzero\)\|\%(\%(no_\?\)\?function_argzero\)\|\%(\%(no_\?\)\?function_arg_zero\)\|\%(\%(no_\?\)\?glob\)\|\%(\%(no_\?\)\?globalexport\)\|\%(\%(no_\?\)\?global_export\)\|\%(\%(no_\?\)\?globalrcs\)\|\%(\%(no_\?\)\?global_rcs\)\|\%(\%(no_\?\)\?globassign\)\|\%(\%(no_\?\)\?glob_assign\)\|\%(\%(no_\?\)\?globcomplete\)\|\%(\%(no_\?\)\?glob_complete\)\|\%(\%(no_\?\)\?globdots\)\|\%(\%(no_\?\)\?glob_dots\)\|\%(\%(no_\?\)\?glob_subst\)\|\%(\%(no_\?\)\?globsubst\)\|\%(\%(no_\?\)\?globstarshort\)\|\%(\%(no_\?\)\?glob_star_short\)\|\%(\%(no_\?\)\?hashall\)\|\%(\%(no_\?\)\?hash_all\)\|\%(\%(no_\?\)\?hashcmds\)\|\%(\%(no_\?\)\?hash_cmds\)\|\%(\%(no_\?\)\?hashdirs\)\|\%(\%(no_\?\)\?hash_dirs\)\|\%(\%(no_\?\)\?hashexecutablesonly\)\|\%(\%(no_\?\)\?hash_executables_only\)\|\%(\%(no_\?\)\?hashlistall\)\|\%(\%(no_\?\)\?hash_list_all\)\|\%(\%(no_\?\)\?histallowclobber\)\|\%(\%(no_\?\)\?hist_allow_clobber\)\|\%(\%(no_\?\)\?histappend\)\|\%(\%(no_\?\)\?hist_append\)\|\%(\%(no_\?\)\?histbeep\)\|\%(\%(no_\?\)\?hist_beep\)\|\%(\%(no_\?\)\?hist_expand\)\|\%(\%(no_\?\)\?hist_expire_dups_first\)\|\%(\%(no_\?\)\?histexpand\)\|\%(\%(no_\?\)\?histexpiredupsfirst\)\|\%(\%(no_\?\)\?histfcntllock\)\|\%(\%(no_\?\)\?hist_fcntl_lock\)\|\%(\%(no_\?\)\?histfindnodups\)\|\%(\%(no_\?\)\?hist_find_no_dups\)\|\%(\%(no_\?\)\?histignorealldups\)\|\%(\%(no_\?\)\?hist_ignore_all_dups\)\|\%(\%(no_\?\)\?histignoredups\)\|\%(\%(no_\?\)\?hist_ignore_dups\)\|\%(\%(no_\?\)\?histignorespace\)\|\%(\%(no_\?\)\?hist_ignore_space\)\|\%(\%(no_\?\)\?histlexwords\)\|\%(\%(no_\?\)\?hist_lex_words\)\|\%(\%(no_\?\)\?histnofunctions\)\|\%(\%(no_\?\)\?hist_no_functions\)\|\%(\%(no_\?\)\?histnostore\)\|\%(\%(no_\?\)\?hist_no_store\)\|\%(\%(no_\?\)\?histreduceblanks\)\|\%(\%(no_\?\)\?hist_reduce_blanks\)\|\%(\%(no_\?\)\?histsavebycopy\)\|\%(\%(no_\?\)\?hist_save_by_copy\)\|\%(\%(no_\?\)\?histsavenodups\)\|\%(\%(no_\?\)\?hist_save_no_dups\)\|\%(\%(no_\?\)\?histsubstpattern\)\|\%(\%(no_\?\)\?hist_subst_pattern\)\|\%(\%(no_\?\)\?histverify\)\|\%(\%(no_\?\)\?hist_verify\)\|\%(\%(no_\?\)\?hup\)\|\%(\%(no_\?\)\?ignorebraces\)\|\%(\%(no_\?\)\?ignore_braces\)\|\%(\%(no_\?\)\?ignoreclosebraces\)\|\%(\%(no_\?\)\?ignore_close_braces\)\|\%(\%(no_\?\)\?ignoreeof\)\|\%(\%(no_\?\)\?ignore_eof\)\|\%(\%(no_\?\)\?incappendhistory\)\|\%(\%(no_\?\)\?inc_append_history\)\|\%(\%(no_\?\)\?incappendhistorytime\)\|\%(\%(no_\?\)\?inc_append_history_time\)\|\%(\%(no_\?\)\?interactive\)\|\%(\%(no_\?\)\?interactivecomments\)\|\%(\%(no_\?\)\?interactive_comments\)\|\%(\%(no_\?\)\?ksharrays\)\|\%(\%(no_\?\)\?ksh_arrays\)\|\%(\%(no_\?\)\?kshautoload\)\|\%(\%(no_\?\)\?ksh_autoload\)\|\%(\%(no_\?\)\?kshglob\)\|\%(\%(no_\?\)\?ksh_glob\)\|\%(\%(no_\?\)\?kshoptionprint\)\|\%(\%(no_\?\)\?ksh_option_print\)\|\%(\%(no_\?\)\?kshtypeset\)\|\%(\%(no_\?\)\?ksh_typeset\)\|\%(\%(no_\?\)\?kshzerosubscript\)\|\%(\%(no_\?\)\?ksh_zero_subscript\)\|\%(\%(no_\?\)\?listambiguous\)\|\%(\%(no_\?\)\?list_ambiguous\)\|\%(\%(no_\?\)\?listbeep\)\|\%(\%(no_\?\)\?list_beep\)\|\%(\%(no_\?\)\?listpacked\)\|\%(\%(no_\?\)\?list_packed\)\|\%(\%(no_\?\)\?listrowsfirst\)\|\%(\%(no_\?\)\?list_rows_first\)\|\%(\%(no_\?\)\?listtypes\)\|\%(\%(no_\?\)\?list_types\)\|\%(\%(no_\?\)\?localloops\)\|\%(\%(no_\?\)\?local_loops\)\|\%(\%(no_\?\)\?localoptions\)\|\%(\%(no_\?\)\?local_options\)\|\%(\%(no_\?\)\?localpatterns\)\|\%(\%(no_\?\)\?local_patterns\)\|\%(\%(no_\?\)\?localtraps\)\|\%(\%(no_\?\)\?local_traps\)\|\%(\%(no_\?\)\?log\)\|\%(\%(no_\?\)\?login\)\|\%(\%(no_\?\)\?longlistjobs\)\|\%(\%(no_\?\)\?long_list_jobs\)\|\%(\%(no_\?\)\?magicequalsubst\)\|\%(\%(no_\?\)\?magic_equal_subst\)\|\%(\%(no_\?\)\?mailwarn\)\|\%(\%(no_\?\)\?mail_warn\)\|\%(\%(no_\?\)\?mail_warning\)\|\%(\%(no_\?\)\?mark_dirs\)\|\%(\%(no_\?\)\?mailwarning\)\|\%(\%(no_\?\)\?markdirs\)\|\%(\%(no_\?\)\?menucomplete\)\|\%(\%(no_\?\)\?menu_complete\)\|\%(\%(no_\?\)\?monitor\)\|\%(\%(no_\?\)\?multibyte\)\|\%(\%(no_\?\)\?multi_byte\)\|\%(\%(no_\?\)\?multifuncdef\)\|\%(\%(no_\?\)\?multi_func_def\)\|\%(\%(no_\?\)\?multios\)\|\%(\%(no_\?\)\?multi_os\)\|\%(\%(no_\?\)\?nomatch\)\|\%(\%(no_\?\)\?no_match\)\|\%(\%(no_\?\)\?notify\)\|\%(\%(no_\?\)\?nullglob\)\|\%(\%(no_\?\)\?null_glob\)\|\%(\%(no_\?\)\?numericglobsort\)\|\%(\%(no_\?\)\?numeric_glob_sort\)\|\%(\%(no_\?\)\?octalzeroes\)\|\%(\%(no_\?\)\?octal_zeroes\)\|\%(\%(no_\?\)\?onecmd\)\|\%(\%(no_\?\)\?one_cmd\)\|\%(\%(no_\?\)\?overstrike\)\|\%(\%(no_\?\)\?over_strike\)\|\%(\%(no_\?\)\?pathdirs\)\|\%(\%(no_\?\)\?path_dirs\)\|\%(\%(no_\?\)\?pathscript\)\|\%(\%(no_\?\)\?path_script\)\|\%(\%(no_\?\)\?physical\)\|\%(\%(no_\?\)\?pipefail\)\|\%(\%(no_\?\)\?pipe_fail\)\|\%(\%(no_\?\)\?posixaliases\)\|\%(\%(no_\?\)\?posix_aliases\)\|\%(\%(no_\?\)\?posixargzero\)\|\%(\%(no_\?\)\?posix_arg_zero\)\|\%(\%(no_\?\)\?posix_argzero\)\|\%(\%(no_\?\)\?posixbuiltins\)\|\%(\%(no_\?\)\?posix_builtins\)\|\%(\%(no_\?\)\?posixcd\)\|\%(\%(no_\?\)\?posix_cd\)\|\%(\%(no_\?\)\?posixidentifiers\)\|\%(\%(no_\?\)\?posix_identifiers\)\|\%(\%(no_\?\)\?posixjobs\)\|\%(\%(no_\?\)\?posix_jobs\)\|\%(\%(no_\?\)\?posixstrings\)\|\%(\%(no_\?\)\?posix_strings\)\|\%(\%(no_\?\)\?posixtraps\)\|\%(\%(no_\?\)\?posix_traps\)\|\%(\%(no_\?\)\?printeightbit\)\|\%(\%(no_\?\)\?print_eight_bit\)\|\%(\%(no_\?\)\?printexitvalue\)\|\%(\%(no_\?\)\?print_exit_value\)\|\%(\%(no_\?\)\?privileged\)\|\%(\%(no_\?\)\?promptbang\)\|\%(\%(no_\?\)\?prompt_bang\)\|\%(\%(no_\?\)\?promptcr\)\|\%(\%(no_\?\)\?prompt_cr\)\|\%(\%(no_\?\)\?promptpercent\)\|\%(\%(no_\?\)\?prompt_percent\)\|\%(\%(no_\?\)\?promptsp\)\|\%(\%(no_\?\)\?prompt_sp\)\|\%(\%(no_\?\)\?promptsubst\)\|\%(\%(no_\?\)\?prompt_subst\)\|\%(\%(no_\?\)\?promptvars\)\|\%(\%(no_\?\)\?prompt_vars\)\|\%(\%(no_\?\)\?pushdignoredups\)\|\%(\%(no_\?\)\?pushd_ignore_dups\)\|\%(\%(no_\?\)\?pushdminus\)\|\%(\%(no_\?\)\?pushd_minus\)\|\%(\%(no_\?\)\?pushdsilent\)\|\%(\%(no_\?\)\?pushd_silent\)\|\%(\%(no_\?\)\?pushdtohome\)\|\%(\%(no_\?\)\?pushd_to_home\)\|\%(\%(no_\?\)\?rcexpandparam\)\|\%(\%(no_\?\)\?rc_expandparam\)\|\%(\%(no_\?\)\?rc_expand_param\)\|\%(\%(no_\?\)\?rcquotes\)\|\%(\%(no_\?\)\?rc_quotes\)\|\%(\%(no_\?\)\?rcs\)\|\%(\%(no_\?\)\?recexact\)\|\%(\%(no_\?\)\?rec_exact\)\|\%(\%(no_\?\)\?rematchpcre\)\|\%(\%(no_\?\)\?re_match_pcre\)\|\%(\%(no_\?\)\?rematch_pcre\)\|\%(\%(no_\?\)\?restricted\)\|\%(\%(no_\?\)\?rmstarsilent\)\|\%(\%(no_\?\)\?rm_star_silent\)\|\%(\%(no_\?\)\?rmstarwait\)\|\%(\%(no_\?\)\?rm_star_wait\)\|\%(\%(no_\?\)\?sharehistory\)\|\%(\%(no_\?\)\?share_history\)\|\%(\%(no_\?\)\?shfileexpansion\)\|\%(\%(no_\?\)\?sh_file_expansion\)\|\%(\%(no_\?\)\?shglob\)\|\%(\%(no_\?\)\?sh_glob\)\|\%(\%(no_\?\)\?shinstdin\)\|\%(\%(no_\?\)\?shin_stdin\)\|\%(\%(no_\?\)\?shnullcmd\)\|\%(\%(no_\?\)\?sh_nullcmd\)\|\%(\%(no_\?\)\?shoptionletters\)\|\%(\%(no_\?\)\?sh_option_letters\)\|\%(\%(no_\?\)\?shortloops\)\|\%(\%(no_\?\)\?short_loops\)\|\%(\%(no_\?\)\?shwordsplit\)\|\%(\%(no_\?\)\?sh_word_split\)\|\%(\%(no_\?\)\?singlecommand\)\|\%(\%(no_\?\)\?single_command\)\|\%(\%(no_\?\)\?singlelinezle\)\|\%(\%(no_\?\)\?single_line_zle\)\|\%(\%(no_\?\)\?sourcetrace\)\|\%(\%(no_\?\)\?source_trace\)\|\%(\%(no_\?\)\?stdin\)\|\%(\%(no_\?\)\?sunkeyboardhack\)\|\%(\%(no_\?\)\?sun_keyboard_hack\)\|\%(\%(no_\?\)\?trackall\)\|\%(\%(no_\?\)\?track_all\)\|\%(\%(no_\?\)\?transientrprompt\)\|\%(\%(no_\?\)\?transient_rprompt\)\|\%(\%(no_\?\)\?trapsasync\)\|\%(\%(no_\?\)\?traps_async\)\|\%(\%(no_\?\)\?typesetsilent\)\|\%(\%(no_\?\)\?type_set_silent\)\|\%(\%(no_\?\)\?typeset_silent\)\|\%(\%(no_\?\)\?unset\)\|\%(\%(no_\?\)\?verbose\)\|\%(\%(no_\?\)\?vi\)\|\%(\%(no_\?\)\?warncreateglobal\)\|\%(\%(no_\?\)\?warn_create_global\)\|\%(\%(no_\?\)\?xtrace\)\|\%(\%(no_\?\)\?zle\)/ nextgroup=zshOption skipwhite contained
 | |
| 
 | |
| syn keyword zshTypes            float integer local typeset declare private
 | |
| 
 | |
| " XXX: this may be too much
 | |
| " syn match   zshSwitches         '\s\zs--\=[a-zA-Z0-9-]\+'
 | |
| 
 | |
| syn match   zshNumber           '[+-]\=\<\d\+\>'
 | |
| syn match   zshNumber           '[+-]\=\<0x\x\+\>'
 | |
| syn match   zshNumber           '[+-]\=\<0\o\+\>'
 | |
| syn match   zshNumber           '[+-]\=\d\+#[-+]\=\w\+\>'
 | |
| syn match   zshNumber           '[+-]\=\d\+\.\d\+\>'
 | |
| 
 | |
| " TODO: $[...] is the same as $((...)), so add that as well.
 | |
| syn cluster zshSubst            contains=zshSubst,zshOldSubst,zshMathSubst
 | |
| syn region  zshSubst            matchgroup=zshSubstDelim transparent
 | |
|                                 \ start='\$(' skip='\\)' end=')' contains=TOP fold
 | |
| syn region  zshParentheses      transparent start='(' skip='\\)' end=')' fold
 | |
| syn region  zshGlob             start='(#' end=')'
 | |
| syn region  zshMathSubst        matchgroup=zshSubstDelim transparent
 | |
|                                 \ start='\$((' skip='\\)' end='))'
 | |
|                                 \ contains=zshParentheses,@zshSubst,zshNumber,
 | |
|                                 \ @zshDerefs,zshString keepend fold
 | |
| syn region  zshBrackets         contained transparent start='{' skip='\\}'
 | |
|                                 \ end='}' fold
 | |
| syn region  zshBrackets         transparent start='{' skip='\\}'
 | |
|                                 \ end='}' contains=TOP fold
 | |
| syn region  zshSubst            matchgroup=zshSubstDelim start='\${' skip='\\}'
 | |
|                                 \ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString fold
 | |
| syn region  zshOldSubst         matchgroup=zshSubstDelim start=+`+ skip=+\\`+
 | |
|                                 \ end=+`+ contains=TOP,zshOldSubst fold
 | |
| 
 | |
| syn sync    minlines=50 maxlines=90
 | |
| syn sync    match zshHereDocSync    grouphere   NONE '<<-\=\s*\%(\\\=\S\+\|\(["']\)\S\+\1\)'
 | |
| syn sync    match zshHereDocEndSync groupthere  NONE '^\s*EO\a\+\>'
 | |
| 
 | |
| hi def link zshTodo             Todo
 | |
| hi def link zshComment          Comment
 | |
| hi def link zshPreProc          PreProc
 | |
| hi def link zshQuoted           SpecialChar
 | |
| hi def link zshString           String
 | |
| hi def link zshStringDelimiter  zshString
 | |
| hi def link zshPOSIXString      zshString
 | |
| hi def link zshJobSpec          Special
 | |
| hi def link zshPrecommand       Special
 | |
| hi def link zshDelimiter        Keyword
 | |
| hi def link zshConditional      Conditional
 | |
| hi def link zshException        Exception
 | |
| hi def link zshRepeat           Repeat
 | |
| hi def link zshKeyword          Keyword
 | |
| hi def link zshFunction         None
 | |
| hi def link zshKSHFunction      zshFunction
 | |
| hi def link zshHereDoc          String
 | |
| hi def link zshOperator         None
 | |
| hi def link zshRedir            Operator
 | |
| hi def link zshVariable         None
 | |
| hi def link zshVariableDef      zshVariable
 | |
| hi def link zshDereferencing    PreProc
 | |
| hi def link zshShortDeref       zshDereferencing
 | |
| hi def link zshLongDeref        zshDereferencing
 | |
| hi def link zshDeref            zshDereferencing
 | |
| hi def link zshDollarVar        zshDereferencing
 | |
| hi def link zshCommands         Keyword
 | |
| hi def link zshOptStart         Keyword
 | |
| hi def link zshOption           Constant
 | |
| hi def link zshTypes            Type
 | |
| hi def link zshSwitches         Special
 | |
| hi def link zshNumber           Number
 | |
| hi def link zshSubst            PreProc
 | |
| hi def link zshMathSubst        zshSubst
 | |
| hi def link zshOldSubst         zshSubst
 | |
| hi def link zshSubstDelim       zshSubst
 | |
| hi def link zshGlob             zshSubst
 | |
| 
 | |
| let b:current_syntax = "zsh"
 | |
| 
 | |
| let &cpo = s:cpo_save
 | |
| unlet s:cpo_save
 |