"Fossies" - the Fresh Open Source Software Archive

Member "vim-8.2.1354/runtime/syntax/zsh.vim" (2 Aug 2020, 24883 Bytes) of package /linux/misc/vim-8.2.1354.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) vimscript source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

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