if exists("did_load_filetypes") finish endif let did_load_filetypes = 1 let s:cpo_save = &cpo set cpo&vim augroup filetypedetect if exists("*fnameescape") au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew,?\+.pacsave,?\+.pacnew \ exe "doau filetypedetect BufRead " . fnameescape(expand(":r")) au BufNewFile,BufRead *~ \ let s:name = expand("") | \ let s:short = substitute(s:name, '\~$', '', '') | \ if s:name != s:short && s:short != "" | \ exe "doau filetypedetect BufRead " . fnameescape(s:short) | \ endif | \ unlet! s:name s:short au BufNewFile,BufRead ?\+.in \ if expand(":t") != "configure.in" | \ exe "doau filetypedetect BufRead " . fnameescape(expand(":r")) | \ endif elseif &verbose > 0 echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()" endif if !exists("g:ft_ignore_pat") let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' endif func! s:StarSetf(ft) if expand("") !~ g:ft_ignore_pat exe 'setf ' . a:ft endif endfunc au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help au BufNewFile,BufRead *.inp call dist#ft#Check_inp() au BufNewFile,BufRead *.8th setf 8th au BufNewFile,BufRead *.aap setf aap au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps au BufNewFile,BufRead *.abap setf abap au BufNewFile,BufRead *.abc setf abc au BufNewFile,BufRead *.abl setf abel au BufNewFile,BufRead *.wrm setf acedb au BufNewFile,BufRead *.adb,*.ads,*.ada setf ada if has("vms") au BufNewFile,BufRead *.gpr,*.ada_m,*.adc setf ada else au BufNewFile,BufRead *.gpr setf ada endif au BufNewFile,BufRead *.tdf setf ahdl au BufNewFile,BufRead *.run setf ampl au BufNewFile,BufRead build.xml setf ant au BufNewFile,BufRead *.ino,*.pde setf arduino au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf setf apache au BufNewFile,BufRead */etc/apache2/sites-*/*.com setf apache au BufNewFile,BufRead *.a65 setf a65 au BufNewFile,BufRead *.scpt setf applescript au BufNewFile,BufRead *.am \ if expand("") !~? 'Makefile.am\>' | setf elf | endif au BufNewFile,BufRead .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf setf alsaconf au BufNewFile,BufRead *.aml setf aml au BufNewFile,BufRead apt.conf setf aptconf au BufNewFile,BufRead */.aptitude/config setf aptconf au BufNewFile,BufRead */etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf} setf aptconf au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch au BufNewFile,BufRead *.art setf art au BufNewFile,BufRead *.asciidoc,*.adoc setf asciidoc au BufNewFile,BufRead *.asn,*.asn1 setf asn au BufNewFile,BufRead *.asa \ if exists("g:filetype_asa") | \ exe "setf " . g:filetype_asa | \ else | \ setf aspvbs | \ endif au BufNewFile,BufRead *.asp \ if exists("g:filetype_asp") | \ exe "setf " . g:filetype_asp | \ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" | \ setf aspperl | \ else | \ setf aspvbs | \ endif au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf setf grub au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm() au BufNewFile,BufRead *.mar setf vmasm au BufNewFile,BufRead *.atl,*.as setf atlas au BufNewFile,BufRead *.au3 setf autoit au BufNewFile,BufRead *.ahk setf autohotkey au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am setf automake au BufNewFile,BufRead *.at setf m4 au BufNewFile,BufRead *.ave setf ave au BufNewFile,BufRead *.awk setf awk au BufNewFile,BufRead *.mch,*.ref,*.imp setf b au BufNewFile,BufRead *.bas call dist#ft#FTVB("basic") au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb au BufNewFile,BufRead *.iba,*.ibi setf ibasic au BufNewFile,BufRead *.fb,*.bi setf freebasic au BufNewFile,BufRead *.bat,*.sys setf dosbatch au BufNewFile,BufRead *.cmd \ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif au BufNewFile,BufRead *.btm call dist#ft#FTbtm() au BufNewFile,BufRead *.bc setf bc au BufNewFile,BufRead *.bdf setf bdf au BufNewFile,BufRead *.bib setf bib au BufNewFile,BufRead *.bst setf bst au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key setf named au BufNewFile,BufRead named.root setf bindzone au BufNewFile,BufRead *.db call dist#ft#BindzoneCheck('') au BufNewFile,BufRead *.bl setf blank au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old setf xml autocmd BufRead,BufNewFile *.bzl,WORKSPACE,BUILD.bazel setf bzl if has("fname_case") autocmd BufRead,BufNewFile BUILD setf bzl endif au BufNewFile,BufRead *.c call dist#ft#FTlpc() au BufNewFile,BufRead *.lpc,*.ulpc setf lpc au BufNewFile,BufRead calendar setf calendar au BufNewFile,BufRead *.cs setf cs au BufNewFile,BufRead *.csdl setf csdl au BufNewFile,BufRead *.cabal setf cabal au BufNewFile,BufRead *.toc setf cdrtoc au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao setf cdrdaoconf au BufNewFile,BufRead cfengine.conf setf cfengine au BufRead,BufNewFile *.chai setf chaiscript au BufNewFile,BufRead *.cdl setf cdl au BufNewFile,BufRead *.recipe setf conaryrecipe au BufNewFile,BufRead *.crm setf crm au BufNewFile,BufRead *.cyn setf cynpp au BufNewFile,BufRead *.cc \ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif au BufNewFile,BufRead *.cpp \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp if has("fname_case") au BufNewFile,BufRead *.C,*.H setf cpp endif au BufNewFile,BufRead *.h call dist#ft#FTheader() au BufNewFile,BufRead *.chf setf ch au BufNewFile,BufRead *.tlh setf cpp au BufNewFile,BufRead *.css setf css au BufNewFile,BufRead *.con setf cterm au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch \ setf debchangelog au BufNewFile,BufRead [cC]hange[lL]og \ if getline(1) =~ '; urgency=' \| setf debchangelog \| else \| setf changelog \| endif au BufNewFile,BufRead NEWS \ if getline(1) =~ '; urgency=' \| setf debchangelog \| endif au BufNewFile,BufRead *..ch setf chill au BufNewFile,BufRead *.ch call dist#ft#FTchange() au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro au BufNewFile,BufRead *.dcl,*.icl setf clean au BufNewFile,BufRead *.eni setf cl au BufNewFile,BufRead *.ent call dist#ft#FTent() au BufNewFile,BufRead *.prg \ if exists("g:filetype_prg") | \ exe "setf " . g:filetype_prg | \ else | \ setf clipper | \ endif au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc setf clojure au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in setf cmake au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc au BufNewFile,BufRead */cmus/{rc,*.theme} setf cmusrc au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol au BufNewFile,BufRead *.cpy \ if getline(1) =~ '^##' | \ setf python | \ else | \ setf cobol | \ endif au BufNewFile,BufRead *.atg setf coco au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf au BufNewFile,BufRead configure.in,configure.ac setf config au BufNewFile,BufRead *.cu,*.cuh setf cuda au BufNewFile,BufRead Dockerfile,*.Dockerfile setf dockerfile au BufNewFile,BufRead *.dcd setf dcd au BufNewFile,BufRead *enlightenment/*.cfg setf c au BufNewFile,BufRead *Eterm/*.cfg setf eterm au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw call dist#ft#EuphoriaCheck() if has("fname_case") au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck() endif au BufNewFile,BufRead lynx.cfg setf lynx au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake au BufNewFile,BufRead *.qc setf c au BufNewFile,BufRead *.cfg setf cfg au BufNewFile,BufRead *.feature setf cucumber au BufNewFile,BufRead *.csp,*.fdr setf csp au BufNewFile,BufRead *.pld setf cupl au BufNewFile,BufRead *.si setf cuplsim au BufNewFile,BufRead */debian/control setf debcontrol au BufNewFile,BufRead control \ if getline(1) =~ '^Source:' \| setf debcontrol \| endif au BufNewFile,BufRead */debian/copyright setf debcopyright au BufNewFile,BufRead copyright \ if getline(1) =~ '^Format:' \| setf debcopyright \| endif au BufNewFile,BufRead */etc/apt/sources.list setf debsources au BufNewFile,BufRead */etc/apt/sources.list.d/*.list setf debsources au BufNewFile,BufRead denyhosts.conf setf denyhosts au BufNewFile,BufRead */etc/dnsmasq.conf setf dnsmasq au BufNewFile,BufRead *.desc setf desc au BufNewFile,BufRead *.d call dist#ft#DtraceCheck() au BufNewFile,BufRead *.desktop,.directory setf desktop au BufNewFile,BufRead dict.conf,.dictrc setf dictconf au BufNewFile,BufRead dictd.conf setf dictdconf au BufNewFile,BufRead *.diff,*.rej setf diff au BufNewFile,BufRead *.patch \ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' | \ setf gitsendemail | \ else | \ setf diff | \ endif au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors au BufNewFile,BufRead *.rul \ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' | \ setf ishd | \ else | \ setf diva | \ endif au BufNewFile,BufRead *.com call dist#ft#BindzoneCheck('dcl') au BufNewFile,BufRead *.dot setf dot au BufNewFile,BufRead *.lid setf dylanlid au BufNewFile,BufRead *.intr setf dylanintr au BufNewFile,BufRead *.dylan setf dylan au BufNewFile,BufRead *.def setf def au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula au BufNewFile,BufRead *.ds setf datascript au BufNewFile,BufRead *.dsl setf dsl au BufNewFile,BufRead *.dtd setf dtd au BufNewFile,BufRead *.dts,*.dtsi setf dts au BufNewFile,BufRead *.ed\(f\|if\|o\) setf edif au BufNewFile,BufRead *.edn \ if getline(1) =~ '^\s*(\s*edif\>' | \ setf edif | \ else | \ setf clojure | \ endif au BufNewFile,BufRead .editorconfig setf dosini au BufNewFile,BufRead *.ecd setf ecd au BufNewFile,BufRead *.e,*.E call dist#ft#FTe() au BufNewFile,BufRead */etc/elinks.conf,*/.elinks/elinks.conf setf elinks au BufNewFile,BufRead *.erl,*.hrl,*.yaws setf erlang au BufNewFile,BufRead filter-rules setf elmfilt au BufNewFile,BufRead *esmtprc setf esmtprc au BufNewFile,BufRead *.ec,*.EC setf esqlc au BufNewFile,BufRead *.strl setf esterel au BufNewFile,BufRead *.csc setf csc au BufNewFile,BufRead exim.conf setf exim au BufNewFile,BufRead *.exp setf expect au BufNewFile,BufRead exports setf exports au BufNewFile,BufRead *.fal setf falcon au BufNewFile,BufRead *.fan,*.fwt setf fan au BufNewFile,BufRead *.factor setf factor au BufNewFile,BufRead .fetchmailrc setf fetchmail au BufNewFile,BufRead *.fex,*.focexec setf focexec au BufNewFile,BufRead auto.master setf conf au BufNewFile,BufRead *.mas,*.master setf master au BufNewFile,BufRead *.fs,*.ft,*.fth setf forth au BufNewFile,BufRead *.frt setf reva if has("fname_case") au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08 setf fortran endif au BufNewFile,BufRead *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08 setf fortran au BufNewFile,BufRead *.fsl setf framescript au BufNewFile,BufRead fstab,mtab setf fstab au BufNewFile,BufRead .gdbinit setf gdb au BufNewFile,BufRead *.mo,*.gdmo setf gdmo au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig setf gitconfig au BufNewFile,BufRead */.config/git/config setf gitconfig au BufNewFile,BufRead .gitmodules,*.git/modules/*/config setf gitconfig if !empty($XDG_CONFIG_HOME) au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig endif au BufNewFile,BufRead git-rebase-todo setf gitrebase au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail au BufNewFile,BufRead .msg.[0-9]* \ if getline(1) =~ '^From.*# This line is ignored.$' | \ setf gitsendemail | \ endif au BufNewFile,BufRead *.git/* \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' | \ setf git | \ endif au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc au BufNewFile,BufRead *.gp,.gprc setf gp au BufNewFile,BufRead */.gnupg/options setf gpg au BufNewFile,BufRead */.gnupg/gpg.conf setf gpg au BufNewFile,BufRead */usr/*/gnupg/options.skel setf gpg if !empty($GNUPGHOME) au BufNewFile,BufRead $GNUPGHOME/options setf gpg au BufNewFile,BufRead $GNUPGHOME/gpg.conf setf gpg endif au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash au BufNewFile,BufRead gitolite.conf setf gitolite au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc setf perl au BufNewFile,BufRead *.gpi setf gnuplot au BufNewFile,BufRead *.go setf go au BufNewFile,BufRead *.gs setf grads au BufNewFile,BufRead *.gretl setf gretl au BufNewFile,BufRead *.gradle,*.groovy setf groovy au BufNewFile,BufRead *.gsp setf gsp au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak setf group au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc au BufNewFile,BufRead *.haml setf haml au BufNewFile,BufRead *.hsc,*.hsm setf hamster au BufNewFile,BufRead *.hs,*.hs-boot setf haskell au BufNewFile,BufRead *.lhs setf lhaskell au BufNewFile,BufRead *.chs setf chaskell au BufNewFile,BufRead *.ht setf haste au BufNewFile,BufRead *.htpp setf hastepreproc au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum setf hercules au BufNewFile,BufRead *.hex,*.h32 setf hex au BufNewFile,BufRead *.t.html setf tilde au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call dist#ft#FThtml() au BufNewFile,BufRead *.erb,*.rhtml setf eruby au BufNewFile,BufRead *.html.m4 setf htmlm4 au BufNewFile,BufRead *.tmpl setf template au BufNewFile,BufRead */etc/host.conf setf hostconf au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny setf hostsaccess au BufNewFile,BufRead *.hb setf hb au BufNewFile,BufRead *.htt,*.htb setf httest au BufNewFile,BufRead *.icn setf icon au BufNewFile,BufRead *.idl call dist#ft#FTidl() au BufNewFile,BufRead *.odl,*.mof setf msidl au BufNewFile,BufRead */.icewm/menu setf icemenu au BufNewFile,BufRead .indent.pro setf indent au BufNewFile,BufRead indent.pro call dist#ft#ProtoCheck('indent') au BufNewFile,BufRead *.pro call dist#ft#ProtoCheck('idlang') au BufNewFile,BufRead indentrc setf indent au BufNewFile,BufRead *.inf,*.INF setf inform au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl setf fgl au BufNewFile,BufRead *.ini setf dosini au BufNewFile,BufRead inittab setf inittab au BufNewFile,BufRead *.iss setf iss au BufNewFile,BufRead *.ijs setf j au BufNewFile,BufRead *.jal,*.JAL setf jal au BufNewFile,BufRead *.jpl,*.jpr setf jam au BufNewFile,BufRead *.java,*.jav setf java au BufNewFile,BufRead *.jj,*.jjt setf javacc au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx,*.mjs setf javascript au BufNewFile,BufRead *.jsp setf jsp au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties au BufNewFile,BufRead *.clp setf jess au BufNewFile,BufRead *.jgr setf jgraph au BufNewFile,BufRead *.jov,*.j73,*.jovial setf jovial au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest setf json au BufNewFile,BufRead *.kix setf kix au BufNewFile,BufRead *.k setf kwt au BufNewFile,BufRead *.kv setf kivy au BufNewFile,BufRead *.ks setf kscript au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig au BufNewFile,BufRead *.ace,*.ACE setf lace au BufNewFile,BufRead *.latte,*.lte setf latte au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf setf limits au BufNewFile,BufRead *.sig setf lprolog au BufNewFile,BufRead *.ldif setf ldif au BufNewFile,BufRead *.ld setf ld au BufNewFile,BufRead *.less setf less au BufNewFile,BufRead *.lex,*.l,*.lxx,*.l++ setf lex au BufNewFile,BufRead */etc/libao.conf,*/.libao setf libao au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf setf sensors au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc setf lftp au BufNewFile,BufRead *.ll setf lifelines au BufNewFile,BufRead lilo.conf setf lilo if has("fname_case") au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,*.L,.emacs,.sawfishrc setf lisp else au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.jl,.emacs,.sawfishrc setf lisp endif au BufNewFile,BufRead sbclrc,.sbclrc setf lisp au BufNewFile,BufRead *.liquid setf liquid au BufNewFile,BufRead *.lite,*.lt setf lite au BufNewFile,BufRead */LiteStep/*/*.rc setf litestep au BufNewFile,BufRead */etc/login.access setf loginaccess au BufNewFile,BufRead */etc/login.defs setf logindefs au BufNewFile,BufRead *.lgt setf logtalk au BufNewFile,BufRead *.lot,*.lotos setf lotos au BufNewFile,BufRead *.lou,*.lout setf lout au BufNewFile,BufRead *.lua setf lua au BufNewFile,BufRead *.rockspec setf lua au BufNewFile,BufRead *.lsl setf lsl au BufNewFile,BufRead *.lss setf lss au BufNewFile,BufRead *.m4 \ if expand("") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif au BufNewFile,BufRead *.mgp setf mgp au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases setf mailaliases au BufNewFile,BufRead .mailcap,mailcap setf mailcap au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make au BufNewFile,BufRead *.ist,*.mst setf ist au BufNewFile,BufRead *.page setf mallard au BufNewFile,BufRead *.man setf man au BufNewFile,BufRead */etc/man.conf,man.config setf manconf au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple au BufNewFile,BufRead *.map setf map au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown au BufNewFile,BufRead *.mason,*.mhtml,*.comp setf mason au BufNewFile,BufRead *.m call dist#ft#FTm() au BufNewFile,BufRead *.nb setf mma au BufNewFile,BufRead *.mel setf mel au BufNewFile,BufRead hg-editor-*.txt setf hgcommit au BufNewFile,BufRead *.hgrc,*hgrc setf cfg au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages au BufNewFile,BufRead *.mf setf mf au BufNewFile,BufRead *.mp setf mp au BufNewFile,BufRead *.mgl setf mgl au BufNewFile,BufRead *.mix,*.mixal setf mix au BufNewFile,BufRead *.mms call dist#ft#FTmms() au BufNewFile,BufRead *.mmp setf mmp au BufNewFile,BufRead *.mod \ if getline(1) =~ '\' | \ setf lprolog | \ else | \ setf modsim3 | \ endif au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2 au BufNewFile,BufRead *.[mi][3g] setf modula3 au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk au BufNewFile,BufRead *.moo setf moo au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf au BufNewFile,BufRead mplayer.conf,*/.mplayer/config setf mplayerconf au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec setf srec au BufNewFile,BufRead mrxvtrc,.mrxvtrc setf mrxvtrc au BufNewFile,BufRead *.msql setf msql au BufNewFile,BufRead *.mysql setf mysql au BufNewFile,BufRead */etc/Muttrc.d/* call s:StarSetf('muttrc') au BufNewFile,BufRead *.rc,*.rch setf rc au BufRead,BufNewFile *.mu setf mupad au BufNewFile,BufRead *.mush setf mush au BufNewFile,BufRead Mutt{ng,}rc setf muttrc au BufRead,BufNewfile *.n1ql,*.nql setf n1ql au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural au BufNewFile,BufRead Neomuttrc setf neomuttrc au BufNewFile,BufRead .netrc setf netrc au BufNewFile,BufRead *.ninja setf ninja au BufNewFile,BufRead *.ncf setf ncf au BufNewFile,BufRead *.me \ if expand("") != "read.me" && expand("") != "click.me" | \ setf nroff | \ endif au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff au BufNewFile,BufRead *.[1-9] call dist#ft#FTnroff() au BufNewFile,BufRead *.mm call dist#ft#FTmm() au BufNewFile,BufRead *.nqc setf nqc au BufNewFile,BufRead *.nse setf lua au BufNewFile,BufRead *.nsi,*.nsh setf nsis au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit setf ocaml au BufNewFile,BufRead *.occ setf occam au BufNewFile,BufRead *.xom,*.xin setf omnimark au BufNewFile,BufRead *.or setf openroad au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl au BufNewFile,BufRead *.ora setf ora au BufNewFile,BufRead pf.conf setf pf au BufNewFile,BufRead */etc/pam.conf setf pamconf au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd au BufNewFile,BufRead *.pas setf pascal au BufNewFile,BufRead *.dpr setf pascal au BufNewFile,BufRead *.pdf setf pdf au BufNewFile,BufRead *.pcmk setf pcmk if has("fname_case") au BufNewFile,BufRead *.pl,*.PL call dist#ft#FTpl() else au BufNewFile,BufRead *.pl call dist#ft#FTpl() endif au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6 au BufNewFile,BufRead *.pm \ if getline(1) =~ "XPM2" | \ setf xpm2 | \ elseif getline(1) =~ "XPM" | \ setf xpm | \ else | \ setf perl | \ endif au BufNewFile,BufRead *.pod setf pod au BufNewFile,BufRead *.pod6 setf pod6 au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php au BufNewFile,BufRead *.pike,*.pmod setf pike au BufNewFile,BufRead *.cmod setf cmod au BufNewFile,BufRead */etc/pinforc,*/.pinforc setf pinfo au BufNewFile,BufRead *.rcp setf pilrc au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine au BufNewFile,BufRead Pipfile setf config au BufNewFile,BufRead Pipfile.lock setf json au BufNewFile,BufRead *.pli,*.pl1 setf pli au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm au BufNewFile,BufRead *.pls,*.plsql setf plsql au BufNewFile,BufRead *.plp setf plp au BufNewFile,BufRead *.po,*.pot setf po au BufNewFile,BufRead main.cf setf pfmain au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai setf postscr au BufNewFile,BufRead *.ppd setf ppd au BufNewFile,BufRead *.pov setf pov au BufNewFile,BufRead .povrayrc setf povini au BufNewFile,BufRead *.inc call dist#ft#FTinc() au BufNewFile,BufRead *printcap \ let b:ptcap_type = "print" | setf ptcap au BufNewFile,BufRead *termcap \ let b:ptcap_type = "term" | setf ptcap au BufNewFile,BufRead *.g setf pccts au BufNewFile,BufRead *.it,*.ih setf ppwiz au BufNewFile,BufRead *.obj setf obj au BufNewFile,BufRead *.pc setf proc au BufNewFile,BufRead *.action setf privoxy au BufNewFile,BufRead .procmail,.procmailrc setf procmail au BufNewFile,BufRead *.w call dist#ft#FTprogress_cweb() au BufNewFile,BufRead *.i call dist#ft#FTprogress_asm() au BufNewFile,BufRead *.p call dist#ft#FTprogress_pascal() au BufNewFile,BufRead *.psf setf psf au BufNewFile,BufRead INDEX,INFO \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' | \ setf psf | \ endif au BufNewFile,BufRead *.pdb setf prolog au BufNewFile,BufRead *.pml setf promela au BufNewFile,BufRead *.proto setf proto au BufNewFile,BufRead */etc/protocols setf protocols au BufNewFile,BufRead *.pyx,*.pxd setf pyrex au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc,*.ptl,*.pyi setf python au BufNewFile,BufRead *.rad,*.mat setf radiance au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison au BufNewFile,BufRead *\,v setf rcs au BufNewFile,BufRead .inputrc,inputrc setf readline au BufNewFile,BufRead *.reg \ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif au BufNewFile,BufRead *.rib setf rib au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit setf rexx if has("fname_case") au BufNewFile,BufRead *.s,*.S setf r else au BufNewFile,BufRead *.s setf r endif if has("fname_case") au BufNewFile,BufRead *.rd,*.Rd setf rhelp else au BufNewFile,BufRead *.rd setf rhelp endif if has("fname_case") au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw setf rnoweb else au BufNewFile,BufRead *.rnw,*.snw setf rnoweb endif if has("fname_case") au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd setf rmd else au BufNewFile,BufRead *.rmd,*.smd setf rmd endif if has("fname_case") au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst setf rrst else au BufNewFile,BufRead *.rrst,*.srst setf rrst endif au BufNewFile,BufRead *.r,*.R call dist#ft#FTr() au BufNewFile,BufRead .reminders,*.remind,*.rem setf remind au BufNewFile,BufRead resolv.conf setf resolv au BufNewFile,BufRead *.rnc setf rnc au BufNewFile,BufRead *.rng setf rng au BufNewFile,BufRead *.rpl setf rpl au BufNewFile,BufRead robots.txt setf robots au BufNewFile,BufRead *.x setf rpcgen au BufNewFile,BufRead *.rst setf rst au BufNewFile,BufRead *.rtf setf rtf au BufNewFile,BufRead .irbrc,irbrc setf ruby au BufNewFile,BufRead *.rb,*.rbw setf ruby au BufNewFile,BufRead *.gemspec setf ruby au BufNewFile,BufRead *.rs setf rust au BufNewFile,BufRead *.ru setf ruby au BufNewFile,BufRead Gemfile setf ruby au BufNewFile,BufRead *.builder,*.rxml,*.rjs setf ruby au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake setf ruby au BufNewFile,BufRead *.sl setf slang au BufNewFile,BufRead smb.conf setf samba au BufNewFile,BufRead *.sas setf sas au BufNewFile,BufRead *.sass setf sass au BufNewFile,BufRead *.sa setf sather au BufNewFile,BufRead *.scala setf scala au BufNewFile,BufRead *.sbt setf sbt au BufNewFile,BufRead *.sci,*.sce setf scilab au BufNewFile,BufRead *.scss setf scss au BufNewFile,BufRead *.sd setf sd au BufNewFile,BufRead *.sdl,*.pr setf sdl au BufNewFile,BufRead *.sed setf sed au BufNewFile,BufRead *.siv,*.sieve setf sieve au BufNewFile,BufRead sendmail.cf setf sm au BufNewFile,BufRead *.mc call dist#ft#McSetf() au BufNewFile,BufRead */etc/services setf services au BufNewFile,BufRead */etc/slp.conf setf slpconf au BufNewFile,BufRead */etc/slp.reg setf slpreg au BufNewFile,BufRead */etc/slp.spi setf slpspi au BufNewFile,BufRead */etc/serial.conf setf setserial au BufNewFile,BufRead *.sgm,*.sgml \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' | \ setf sgmllnx | \ elseif getline(1) =~ '' | \ setf xml | \ else | \ setf smil | \ endif au BufNewFile,BufRead *.smi \ if getline(1) =~ '\' | \ setf smil | \ else | \ setf mib | \ endif au BufNewFile,BufRead *.smt,*.smith setf smith au BufNewFile,BufRead *.sno,*.spt setf snobol4 au BufNewFile,BufRead *.mib,*.my setf mib au BufNewFile,BufRead *.hog,snort.conf,vision.conf setf hog au BufNewFile,BufRead *.rules call dist#ft#FTRules() au BufNewFile,BufRead *.spec setf spec au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup au BufNewFile,BufRead *.ice setf slice au BufNewFile,BufRead *.sp,*.spice setf spice au BufNewFile,BufRead *.spy,*.spi setf spyce au BufNewFile,BufRead squid.conf setf squid au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql au BufNewFile,BufRead *.sql call dist#ft#SQL() au BufNewFile,BufRead *.sqlj setf sqlj au BufNewFile,BufRead *.sqr,*.sqi setf sqr au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig au BufNewFile,BufRead sshd_config setf sshdconfig au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata au BufNewFile,BufRead *.class \ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl au BufNewFile,BufRead *.stp setf stp au BufNewFile,BufRead *.sml setf sml au BufNewFile,BufRead *.cm setf voscm au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl au BufNewFile,BufRead */systemd/*.{automount,mount,path,service,socket,swap,target,timer} setf systemd au BufNewFile,BufRead /etc/systemd/system/*.d/*.conf setf systemd au BufNewFile,BufRead /etc/systemd/system/*.d/.#* setf systemd au BufNewFile,BufRead *.sdc setf sdc au BufNewFile,BufRead */etc/sudoers,sudoers.tmp setf sudoers au BufNewFile,BufRead *.svg setf svg au BufNewFile,BufRead *.t \ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif au BufNewFile,BufRead tags setf tags au BufNewFile,BufRead *.tak setf tak au BufRead,BufNewFile {pending,completed,undo}.data setf taskdata au BufRead,BufNewFile *.task setf taskedit au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl setf tcl au BufNewFile,BufRead *.tli setf tli au BufNewFile,BufRead *.slt setf tsalt au BufRead,BufNewFile *.ttl setf teraterm au BufNewFile,BufRead *.ti setf terminfo au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex au BufNewFile,BufRead *.tex call dist#ft#FTtex() au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi setf context au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo au BufNewFile,BufRead texmf.cnf setf texmf au BufNewFile,BufRead .tidyrc,tidyrc setf tidy au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf au BufNewFile,BufRead {.,}tmux*.conf setf tmux au BufNewFile,BufReadPost *.tpp setf tpp au BufRead,BufNewFile *.treetop setf treetop au BufNewFile,BufRead trustees.conf setf trustees au BufNewFile,BufReadPost *.tssgm setf tssgm au BufNewFile,BufReadPost *.tssop setf tssop au BufNewFile,BufReadPost *.tsscl setf tsscl au BufNewFile,BufReadPost *.twig setf twig au BufNewFile,BufReadPost *.ts setf typescript au BufNewFile,BufRead *.uit,*.uil setf uil au BufNewFile,BufRead */etc/udev/udev.conf setf udevconf au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm au BufNewFile,BufRead */etc/udev/cdsymlinks.conf setf sh au BufNewFile,BufRead *.uc setf uc au BufNewFile,BufRead */etc/updatedb.conf setf updatedb au BufNewFile,BufRead */usr/share/upstart/*.conf setf upstart au BufNewFile,BufRead */usr/share/upstart/*.override setf upstart au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override setf upstart au BufNewFile,BufRead */.init/*.conf,*/.init/*.override setf upstart au BufNewFile,BufRead */.config/upstart/*.conf setf upstart au BufNewFile,BufRead */.config/upstart/*.override setf upstart au BufNewFile,BufRead *.vr,*.vri,*.vrh setf vera au BufNewFile,BufRead *.v setf verilog au BufNewFile,BufRead *.va,*.vams setf verilogams au BufNewFile,BufRead *.sv,*.svh setf systemverilog au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst setf vhdl au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc setf vim au BufNewFile,BufRead .viminfo,_viminfo setf viminfo au BufRead,BufNewFile *.hw,*.module,*.pkg \ if getline(1) =~ '' | \ let b:xf86conf_xfree86_version = 3 | \ endif | \ setf xf86conf au BufNewFile,BufRead */xorg.conf.d/*.conf \ let b:xf86conf_xfree86_version = 4 | \ setf xf86conf au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86conf_xfree86_version = 4 | setf xf86conf au BufNewFile,BufRead */etc/xinetd.conf setf xinetd au BufNewFile,BufRead *.xs setf xs au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults au BufNewFile,BufRead *.msc,*.msf setf xmath au BufNewFile,BufRead *.ms \ if !dist#ft#FTnroff() | setf xmath | endif au BufNewFile,BufRead *.xml call dist#ft#FTxml() au BufNewFile,BufRead *.xmi setf xml au BufNewFile,BufRead *.csproj,*.csproj.user setf xml au BufNewFile,BufRead *.ui setf xml au BufNewFile,BufRead *.tpm setf xml au BufNewFile,BufRead */etc/xdg/menus/*.menu setf xml au BufNewFile,BufRead fglrxrc setf xml au BufNewFile,BufRead *.wsdl setf xml au BufNewFile,BufRead *.xlf setf xml au BufNewFile,BufRead *.xliff setf xml au BufNewFile,BufRead *.xul setf xml au BufNewFile,BufRead *Xmodmap setf xmodmap au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy setf xquery au BufNewFile,BufRead *.xsd setf xsd au BufNewFile,BufRead *.xsl,*.xslt setf xslt au BufNewFile,BufRead *.yy,*.yxx,*.y++ setf yacc au BufNewFile,BufRead *.y call dist#ft#FTy() au BufNewFile,BufRead *.yaml,*.yml setf yaml au BufNewFile,BufRead *.raml setf raml au BufNewFile,BufRead */etc/yum.conf setf dosini au BufNewFile,BufRead *.zu setf zimbu au BufNewFile,BufRead *.zut setf zimbutempl au BufNewFile,BufRead *.dtml,*.pt,*.cpt call dist#ft#FThtml() au BufNewFile,BufRead *.zsql call dist#ft#SQL() au BufNewFile,BufRead *.z8a setf z8a augroup END if exists("myfiletypefile") && filereadable(expand(myfiletypefile)) execute "source " . myfiletypefile endif augroup filetypedetect au BufNewFile,BufRead * \ if !did_filetype() && expand("") !~ g:ft_ignore_pat \ | runtime! scripts.vim | endif au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/* call s:StarSetf('apachestyle') au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle') au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf* call s:StarSetf('apache') au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf* call s:StarSetf('apache') au BufNewFile,BufRead *asterisk/*.conf* call s:StarSetf('asterisk') au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm') au BufNewFile,BufRead bzr_log.* setf bzr if !has("fname_case") au BufNewFile,BufRead BUILD setf bzl endif au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone') au BufNewFile,BufRead */.calendar/*, \*/share/calendar/*/calendar.*,*/share/calendar/calendar.* \ call s:StarSetf('calendar') au BufNewFile,BufRead [cC]hange[lL]og* \ if getline(1) =~ '; urgency=' \| call s:StarSetf('debchangelog') \|else \| call s:StarSetf('changelog') \|endif au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/* call s:StarSetf('crontab') au BufNewFile,BufRead */etc/dnsmasq.d/* call s:StarSetf('dnsmasq') au BufNewFile,BufRead drac.* call s:StarSetf('dracula') au BufNewFile,BufRead */.fvwm/* call s:StarSetf('fvwm') au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook \ let b:fvwm_version = 1 | call s:StarSetf('fvwm') au BufNewFile,BufRead *fvwm2rc* \ if expand(":e") == "m4" \| call s:StarSetf('fvwm2m4') \|else \| let b:fvwm_version = 2 | call s:StarSetf('fvwm') \|endif au BufNewFile,BufRead */tmp/lltmp* call s:StarSetf('gedcom') au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* call s:StarSetf('gitconfig') au BufNewFile,BufRead */gitolite-admin/conf/* call s:StarSetf('gitolite') au BufNewFile,BufRead .gtkrc*,gtkrc* call s:StarSetf('gtkrc') au BufNewFile,BufRead Prl*.*,JAM*.* call s:StarSetf('jam') au! BufNewFile,BufRead *jarg* \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE' \| call s:StarSetf('jargon') \|endif au BufNewFile,BufRead *.properties_??_??_* call s:StarSetf('jproperties') au BufNewFile,BufRead Kconfig.* call s:StarSetf('kconfig') au BufNewFile,BufRead lilo.conf* call s:StarSetf('lilo') au BufNewFile,BufRead */etc/logcheck/*.d*/* call s:StarSetf('logcheck') au BufNewFile,BufRead [mM]akefile* call s:StarSetf('make') au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby') au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\} setf mail au BufNewFile,BufRead reportbug-* call s:StarSetf('mail') au BufNewFile,BufRead */etc/modutils/* \ if executable(expand("")) != 1 \| call s:StarSetf('modconf') \|endif au BufNewFile,BufRead */etc/modprobe.* call s:StarSetf('modconf') au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc') au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc* call s:StarSetf('muttrc') au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc* call s:StarSetf('neomuttrc') au BufNewFile,BufRead neomuttrc*,Neomuttrc* call s:StarSetf('neomuttrc') au BufNewFile,BufRead tmac.* call s:StarSetf('nroff') au BufNewFile,BufRead /etc/hostname.* call s:StarSetf('config') au BufNewFile,BufRead */etc/pam.d/* call s:StarSetf('pamconf') au BufNewFile,BufRead *printcap* \ if !did_filetype() \| let b:ptcap_type = "print" | call s:StarSetf('ptcap') \|endif au BufNewFile,BufRead *termcap* \ if !did_filetype() \| let b:ptcap_type = "term" | call s:StarSetf('ptcap') \|endif au BufRead,BufNewFile *.rdf call dist#ft#Redif() au BufNewFile,BufRead .reminders* call s:StarSetf('remind') au BufNewFile,BufRead sgml.catalog* call s:StarSetf('catalog') au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,,PKGBUILD* call dist#ft#SetFileTypeSH("bash") au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh") au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1)) au BufNewFile,BufRead .tcshrc* call dist#ft#SetFileTypeShell("tcsh") au BufNewFile,BufRead .login*,.cshrc* call dist#ft#CSH() au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl') au BufNewFile,BufRead *vimrc* call s:StarSetf('vim') au BufNewFile,BufRead svn-commit*.tmp setf svn au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults') au BufNewFile,BufRead XF86Config-4* \ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf') au BufNewFile,BufRead XF86Config* \ if getline(1) =~ '\' \| let b:xf86conf_xfree86_version = 3 \|endif \|call s:StarSetf('xf86conf') au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap') au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd') au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini') au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump* call s:StarSetf('zsh') au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh') au BufNewFile,BufRead *.text,README setf text au BufNewFile,BufRead *.txt \ if getline('$') !~ 'vim:.*ft=help' \| setf text \| endif runtime! ftdetect/*.vim augroup END au filetypedetect BufNewFile,BufRead,StdinReadPost * \ if !did_filetype() && expand("") !~ g:ft_ignore_pat \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' \ || getline(4) =~ '^#' || getline(5) =~ '^#') | \ setf FALLBACK conf | \ endif if has("menu") && has("gui_running") \ && !exists("did_install_syntax_menu") && &guioptions !~# "M" source :p:h/menu.vim endif func! TestFiletypeFuncs(testlist) let output = '' for f in a:testlist try exe f catch let output = output . "\n" . f . ": " . v:exception endtry endfor return output endfunc let &cpo = s:cpo_save unlet s:cpo_save if exists("did_load_filetypes") unlet did_load_filetypes endif silent! au! filetypedetect * if exists("did_load_ftplugin") finish endif let did_load_ftplugin = 1 augroup filetypeplugin au FileType * call s:LoadFTPlugin() func! s:LoadFTPlugin() if exists("b:undo_ftplugin") exe b:undo_ftplugin unlet! b:undo_ftplugin b:did_ftplugin endif let s = expand("") if s != "" if &cpo =~# "S" && exists("b:did_ftplugin") unlet b:did_ftplugin endif for name in split(s, '\.') exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim' endfor endif endfunc augroup END if exists("did_load_ftplugin") unlet did_load_ftplugin endif if exists("#filetypeplugin") silent! au! filetypeplugin * endif if exists("did_indent_on") finish endif let did_indent_on = 1 augroup filetypeindent au FileType * call s:LoadIndent() func! s:LoadIndent() if exists("b:undo_indent") exe b:undo_indent unlet! b:undo_indent b:did_indent endif let s = expand("") if s != "" if exists("b:did_indent") unlet b:did_indent endif for name in split(s, '\.') exe 'runtime! indent/' . name . '.vim' endfor endif endfunc augroup END if exists("did_indent_on") unlet did_indent_on endif silent! au! filetypeindent * if did_filetype() finish endif if exists("myscriptsfile") && filereadable(expand(myscriptsfile)) execute "source " . myscriptsfile if did_filetype() finish endif endif let s:cpo_save = &cpo set cpo&vim let s:line1 = getline(1) if s:line1 =~# "^#!" if s:line1 =~# '^#!\s*\S*\' let s:name = substitute(s:line1, '^#!.*\\s\+\(\i\+\).*', '\1', '') elseif s:line1 =~# '^#!\s*[^/\\ ]*\>\([^/\\]\|$\)' let s:name = substitute(s:line1, '^#!\s*\([^/\\ ]*\>\).*', '\1', '') else let s:name = substitute(s:line1, '^#!\s*\S*[/\\]\(\i\+\).*', '\1', '') endif if getline(3) =~# '^exec wish' let s:name = 'wish' endif if s:name =~# '^\(bash\d*\|\|ksh\d*\|sh\)\>' call dist#ft#SetFileTypeSH(s:line1) " defined in filetype.vim elseif s:name =~# '^csh\>' if exists("g:filetype_csh") call dist#ft#SetFileTypeShell(g:filetype_csh) else call dist#ft#SetFileTypeShell("csh") endif elseif s:name =~# '^tcsh\>' call dist#ft#SetFileTypeShell("tcsh") elseif s:name =~# '^zsh\>' set ft=zsh elseif s:name =~# '^\(tclsh\|wish\|expectk\|itclsh\|itkwish\)\>' set ft=tcl elseif s:name =~# '^expect\>' set ft=expect elseif s:name =~# '^gnuplot\>' set ft=gnuplot elseif s:name =~# 'make\>' set ft=make elseif s:name =~# '^pike\%(\>\|[0-9]\)' set ft=pike elseif s:name =~# 'lua' set ft=lua elseif s:name =~# 'perl6' set ft=perl6 elseif s:name =~# 'perl' set ft=perl elseif s:name =~# 'php' set ft=php elseif s:name =~# 'python' set ft=python elseif s:name =~# '^groovy\>' set ft=groovy elseif s:name =~# 'ruby' set ft=ruby elseif s:name =~# 'node\(js\)\=\>\|js\>' || s:name =~# 'rhino\>' set ft=javascript elseif s:name =~# '^bc\>' set ft=bc elseif s:name =~# 'sed\>' set ft=sed elseif s:name =~# 'ocaml' set ft=ocaml elseif s:name =~# 'awk\>' set ft=awk elseif s:name =~# 'wml' set ft=wml elseif s:name =~# 'scheme' set ft=scheme elseif s:name =~# 'cfengine' set ft=cfengine elseif s:name =~# 'escript' set ft=erlang elseif s:name =~# 'haskell' set ft=haskell elseif s:name =~# 'scala\>' set ft=scala elseif s:name =~# 'clojure' set ft=clojure endif unlet s:name else let s:line2 = getline(2) let s:line3 = getline(3) let s:line4 = getline(4) let s:line5 = getline(5) if s:line1 =~# '^:$' call dist#ft#SetFileTypeSH(s:line1) " defined in filetype.vim elseif s:line1 =~# '^#compdef\>' || s:line1 =~# '^#autoload\>' || \ "\n".s:line1."\n".s:line2."\n".s:line3."\n".s:line4."\n".s:line5 =~# '\n\s*emulate\s\+\%(-[LR]\s\+\)\=[ckz]\=sh\>' set ft=zsh elseif s:line1 =~# '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$' set ft=mail elseif s:line1 =~# '^<[%&].*>' set ft=mason elseif s:line1 =~# '^" *[vV]im$' set ft=vim elseif s:line1 =~? '-\*-.*C++.*-\*-' set ft=cpp elseif s:line1 =~# '^\*\* LambdaMOO Database, Format Version \%([1-3]\>\)\@!\d\+ \*\*$' set ft=moo elseif s:line1 =~# '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\|# HG changeset patch\)' \ || (s:line1 =~# '^--- ' && s:line2 =~# '^+++ ') \ || (s:line1 =~# '^\* looking for ' && s:line2 =~# '^\* comparing to ') \ || (s:line1 =~# '^\*\*\* ' && s:line2 =~# '^--- ') \ || (s:line1 =~# '^=== ' && ((s:line2 =~# '^=\{66\}' && s:line3 =~# '^--- ' && s:line4 =~# '^+++') || (s:line2 =~# '^--- ' && s:line3 =~# '^+++ '))) \ || (s:line1 =~# '^=== \(removed\|added\|renamed\|modified\)') set ft=diff elseif s:line1 =~# '^%![ \t]*PS' set ft=postscr elseif s:line1 =~# '^\s*dnl\>' \ || s:line2 =~# '^\s*dnl\>' \ || s:line3 =~# '^\s*dnl\>' \ || s:line4 =~# '^\s*dnl\>' \ || s:line5 =~# '^\s*dnl\>' set ft=m4 elseif $TERM == "amiga" \ && (s:line1 =~# "^;" || s:line1 =~? '^\.bra') set ft=amiga elseif s:line1 =~? '^ *proc[nd] *$' set ft=sicad elseif s:line1 =~# '^\*\*\*\* Purify' set ft=purifylog elseif s:line1 =~# '' set ft=xml elseif s:line1 =~# '\' set ft=html elseif s:line1 =~# '^%PDF-' set ft=pdf elseif s:line1 =~# '^\x\{7}: \x\{2} \=\x\{2} \=\x\{2} \=\x\{2} ' set ft=xxd elseif s:line1 =~# '^RCS file:' || s:line2 =~# '^RCS file:' set ft=rcslog elseif s:line2 =~# '^CVS:' || getline("$") =~# '^CVS: ' set ft=cvs elseif s:line1 =~# '^!R!' set ft=prescribe elseif s:line1 =~# '^SEND-PR:' set ft=sendpr elseif s:line1 =~# '^SNNS network definition file' set ft=snnsnet elseif s:line1 =~# '^SNNS pattern definition file' set ft=snnspat elseif s:line1 =~# '^SNNS result file' set ft=snnsres elseif s:line1 =~# '^%.\{-}[Vv]irata' \ || s:line2 =~# '^%.\{-}[Vv]irata' \ || s:line3 =~# '^%.\{-}[Vv]irata' \ || s:line4 =~# '^%.\{-}[Vv]irata' \ || s:line5 =~# '^%.\{-}[Vv]irata' set ft=virata elseif s:line1 =~# '[0-9:.]* *execve(' || s:line1 =~# '^__libc_start_main' set ft=strace elseif s:line1 =~# '^\* $$ JOB\>' || s:line1 =~# '^// *JOB\>' set ft=vsejcl elseif s:line4 =~# 'K & K Associates' || s:line2 =~# 'TAK 2000' set ft=takout elseif s:line3 =~# 'S Y S T E M S I M P R O V E D ' set ft=sindaout elseif getline(6) =~# 'Run Date: ' set ft=takcmp elseif getline(9) =~# 'Node File 1' set ft=sindacmp elseif s:line1.s:line2.s:line3.s:line4 =~# '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA' set ft=bindzone elseif s:line1 =~# '|\*\{1,80}' && s:line2 =~# 'VRC ' \ || s:line2 =~# '|\*\{1,80}' && s:line3 =~# 'VRC ' set ft=baan elseif s:line1 =~# '^==\d\+== valgrind' || s:line3 =~# '^==\d\+== Using valgrind' set ft=valgrind elseif s:line1 =~# '^PACKAGE DOCUMENTATION$' set ft=godoc elseif s:line1 =~# '^##RenderMan' set ft=rib elseif s:line1 =~# 'exec\s\+\S*scheme' || s:line2 =~# 'exec\s\+\S*scheme' set ft=scheme elseif s:line1 =~# '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' set ft=git elseif s:line1 == 'Flat profile:' \ && s:line2 == '' \ && s:line3 =~# '^Each sample counts as .* seconds.$' set ft=gprof elseif s:line1 =~? '-\*-.*erlang.*-\*-' set ft=erlang else let s:lnum = 1 while getline(s:lnum) =~# "^? " && s:lnum < line("$") let s:lnum += 1 endwhile if getline(s:lnum) =~# '^Index:\s\+\f\+$' set ft=diff elseif expand("%") =~# '\a\a_\a\a\($\|[.@]\)\|i18n$\|POSIX$\|translit_' let s:lnum = 1 while s:lnum < 100 && s:lnum < line("$") if getline(s:lnum) =~# '^LC_\(IDENTIFICATION\|CTYPE\|COLLATE\|MONETARY\|NUMERIC\|TIME\|MESSAGES\|PAPER\|TELEPHONE\|MEASUREMENT\|NAME\|ADDRESS\)$' setf fdcc break endif let s:lnum += 1 endwhile endif unlet s:lnum endif unlet s:line2 s:line3 s:line4 s:line5 endif let &cpo = s:cpo_save unlet s:cpo_save s:line1 if &compatible set nocompatible endif set backspace=indent,eol,start " Allow backspacing over everything in insert mode. set history=200 " keep 200 lines of command line history set ruler " show the cursor position all the time set showcmd " display incomplete commands set wildmenu " display completion matches in a status line set ttimeout " time out for key codes set ttimeoutlen=100 " wait up to 100ms after Esc for special key set display=truncate " Show @@@ in the last line if it is truncated. set scrolloff=5 " Show a few lines of context around the cursor. set backup " keep a backup file (restore to previous version) set nrformats-=octal " Do not recognize octal numbers for Ctrl-A and Ctrl-X set nolangremap set hlsearch if has('reltime') set incsearch endif " Don't use Ex mode, use Q for formatting. " Revert with ":unmap Q". map Q gq " CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, " so that you can undo CTRL-U after inserting a line break. " Revert with ":iunmap ". inoremap u " Only do this part when Vim was compiled with the +eval feature. if 1 " Enable file type detection. filetype plugin indent on endif if !exists(":DiffOrig") command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis \ | wincmd p | diffthis endif " Configurations for vim.wasm set encoding=utf-8 set laststatus=2 " Note: Configs for vim.wasm should be written in /root/.vim/vimrc if version < 700 finish endif let s:keepcpo= &cpo set cpo&vim let g:ada#DotWordRegex = '\a\w*\(\_s*\.\_s*\a\w*\)*' let g:ada#WordRegex = '\a\w*' let g:ada#Comment = "\\v^(\"[^\"]*\"|'.'|[^\"']){-}\\zs\\s*--.*" let g:ada#Keywords = [] for Item in ['abort', 'else', 'new', 'return', 'abs', 'elsif', 'not', 'reverse', 'abstract', 'end', 'null', 'accept', 'entry', 'select', 'access', 'exception', 'of', 'separate', 'aliased', 'exit', 'or', 'subtype', 'all', 'others', 'synchronized', 'and', 'for', 'out', 'array', 'function', 'overriding', 'tagged', 'at', 'task', 'generic', 'package', 'terminate', 'begin', 'goto', 'pragma', 'then', 'body', 'private', 'type', 'if', 'procedure', 'case', 'in', 'protected', 'until', 'constant', 'interface', 'use', 'is', 'raise', 'declare', 'range', 'when', 'delay', 'limited', 'record', 'while', 'delta', 'loop', 'rem', 'with', 'digits', 'renames', 'do', 'mod', 'requeue', 'xor'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'keyword', \ 'info': 'Ada keyword.', \ 'kind': 'k', \ 'icase': 1}] endfor if exists ('g:ada_with_gnat_project_files') for Item in ['project'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'keyword', \ 'info': 'GNAT projectfile keyword.', \ 'kind': 'k', \ 'icase': 1}] endfor endif for Item in ['Constraint_Error', 'Program_Error', 'Storage_Error', 'Tasking_Error', 'Status_Error', 'Mode_Error', 'Name_Error', 'Use_Error', 'Device_Error', 'End_Error', 'Data_Error', 'Layout_Error', 'Length_Error', 'Pattern_Error', 'Index_Error', 'Translation_Error', 'Time_Error', 'Argument_Error', 'Tag_Error', 'Picture_Error', 'Terminator_Error', 'Conversion_Error', 'Pointer_Error', 'Dereference_Error', 'Update_Error'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'exception', \ 'info': 'Ada standart exception.', \ 'kind': 'x', \ 'icase': 1}] endfor if exists ('g:ada_gnat_extensions') for Item in ['Assert_Failure'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'exception', \ 'info': 'GNAT exception.', \ 'kind': 'x', \ 'icase': 1}] endfor endif for Item in ['Boolean', 'Integer', 'Natural', 'Positive', 'Float', 'Character', 'Wide_Character', 'Wide_Wide_Character', 'String', 'Wide_String', 'Wide_Wide_String', 'Duration'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'type', \ 'info': 'Ada buildin type.', \ 'kind': 't', \ 'icase': 1}] endfor if exists ('g:ada_gnat_extensions') for Item in ['Short_Integer', 'Short_Short_Integer', 'Long_Integer', 'Long_Long_Integer', 'Short_Float', 'Short_Short_Float', 'Long_Float', 'Long_Long_Float'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'type', \ 'info': 'GNAT buildin type.', \ 'kind': 't', \ 'icase': 1}] endfor endif for Item in ['''Access', '''Address', '''Adjacent', '''Aft', '''Alignment', '''Base', '''Bit_Order', '''Body_Version', '''Callable', '''Caller', '''Ceiling', '''Class', '''Component_Size', '''Compose', '''Constrained', '''Copy_Sign', '''Count', '''Definite', '''Delta', '''Denorm', '''Digits', '''Emax', '''Exponent', '''External_Tag', '''Epsilon', '''First', '''First_Bit', '''Floor', '''Fore', '''Fraction', '''Identity', '''Image', '''Input', '''Large', '''Last', '''Last_Bit', '''Leading_Part', '''Length', '''Machine', '''Machine_Emax', '''Machine_Emin', '''Machine_Mantissa', '''Machine_Overflows', '''Machine_Radix', '''Machine_Rounding', '''Machine_Rounds', '''Mantissa', '''Max', '''Max_Size_In_Storage_Elements', '''Min', '''Mod', '''Model', '''Model_Emin', '''Model_Epsilon', '''Model_Mantissa', '''Model_Small', '''Modulus', '''Output', '''Partition_ID', '''Pos', '''Position', '''Pred', '''Priority', '''Range', '''Read', '''Remainder', '''Round', '''Rounding', '''Safe_Emax', '''Safe_First', '''Safe_Large', '''Safe_Last', '''Safe_Small', '''Scale', '''Scaling', '''Signed_Zeros', '''Size', '''Small', '''Storage_Pool', '''Storage_Size', '''Stream_Size', '''Succ', '''Tag', '''Terminated', '''Truncation', '''Unbiased_Rounding', '''Unchecked_Access', '''Val', '''Valid', '''Value', '''Version', '''Wide_Image', '''Wide_Value', '''Wide_Wide_Image', '''Wide_Wide_Value', '''Wide_Wide_Width', '''Wide_Width', '''Width', '''Write'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'attribute', \ 'info': 'Ada attribute.', \ 'kind': 'a', \ 'icase': 1}] endfor if exists ('g:ada_gnat_extensions') for Item in ['''Abort_Signal', '''Address_Size', '''Asm_Input', '''Asm_Output', '''AST_Entry', '''Bit', '''Bit_Position', '''Code_Address', '''Default_Bit_Order', '''Elaborated', '''Elab_Body', '''Elab_Spec', '''Emax', '''Enum_Rep', '''Epsilon', '''Fixed_Value', '''Has_Access_Values', '''Has_Discriminants', '''Img', '''Integer_Value', '''Machine_Size', '''Max_Interrupt_Priority', '''Max_Priority', '''Maximum_Alignment', '''Mechanism_Code', '''Null_Parameter', '''Object_Size', '''Passed_By_Reference', '''Range_Length', '''Storage_Unit', '''Target_Name', '''Tick', '''To_Address', '''Type_Class', '''UET_Address', '''Unconstrained_Array', '''Universal_Literal_String', '''Unrestricted_Access', '''VADS_Size', '''Value_Size', '''Wchar_T_Size', '''Word_Size'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'attribute', \ 'info': 'GNAT attribute.', \ 'kind': 'a', \ 'icase': 1}] endfor endif for Item in ['All_Calls_Remote', 'Assert', 'Assertion_Policy', 'Asynchronous', 'Atomic', 'Atomic_Components', 'Attach_Handler', 'Controlled', 'Convention', 'Detect_Blocking', 'Discard_Names', 'Elaborate', 'Elaborate_All', 'Elaborate_Body', 'Export', 'Import', 'Inline', 'Inspection_Point', 'Interface (Obsolescent)', 'Interrupt_Handler', 'Interrupt_Priority', 'Linker_Options', 'List', 'Locking_Policy', 'Memory_Size (Obsolescent)', 'No_Return', 'Normalize_Scalars', 'Optimize', 'Pack', 'Page', 'Partition_Elaboration_Policy', 'Preelaborable_Initialization', 'Preelaborate', 'Priority', 'Priority_Specific_Dispatching', 'Profile', 'Pure', 'Queueing_Policy', 'Relative_Deadline', 'Remote_Call_Interface', 'Remote_Types', 'Restrictions', 'Reviewable', 'Shared (Obsolescent)', 'Shared_Passive', 'Storage_Size', 'Storage_Unit (Obsolescent)', 'Suppress', 'System_Name (Obsolescent)', 'Task_Dispatching_Policy', 'Unchecked_Union', 'Unsuppress', 'Volatile', 'Volatile_Components'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'pragma', \ 'info': 'Ada pragma.', \ 'kind': 'p', \ 'icase': 1}] endfor if exists ('g:ada_gnat_extensions') for Item in ['Abort_Defer', 'Ada_83', 'Ada_95', 'Ada_05', 'Annotate', 'Ast_Entry', 'C_Pass_By_Copy', 'Comment', 'Common_Object', 'Compile_Time_Warning', 'Complex_Representation', 'Component_Alignment', 'Convention_Identifier', 'CPP_Class', 'CPP_Constructor', 'CPP_Virtual', 'CPP_Vtable', 'Debug', 'Elaboration_Checks', 'Eliminate', 'Export_Exception', 'Export_Function', 'Export_Object', 'Export_Procedure', 'Export_Value', 'Export_Valued_Procedure', 'Extend_System', 'External', 'External_Name_Casing', 'Finalize_Storage_Only', 'Float_Representation', 'Ident', 'Import_Exception', 'Import_Function', 'Import_Object', 'Import_Procedure', 'Import_Valued_Procedure', 'Initialize_Scalars', 'Inline_Always', 'Inline_Generic', 'Interface_Name', 'Interrupt_State', 'Keep_Names', 'License', 'Link_With', 'Linker_Alias', 'Linker_Section', 'Long_Float', 'Machine_Attribute', 'Main_Storage', 'Obsolescent', 'Passive', 'Polling', 'Profile_Warnings', 'Propagate_Exceptions', 'Psect_Object', 'Pure_Function', 'Restriction_Warnings', 'Source_File_Name', 'Source_File_Name_Project', 'Source_Reference', 'Stream_Convert', 'Style_Checks', 'Subtitle', 'Suppress_All', 'Suppress_Exception_Locations', 'Suppress_Initialization', 'Task_Info', 'Task_Name', 'Task_Storage', 'Thread_Body', 'Time_Slice', 'Title', 'Unimplemented_Unit', 'Universal_Data', 'Unreferenced', 'Unreserve_All_Interrupts', 'Use_VADS_Size', 'Validity_Checks', 'Warnings', 'Weak_External'] let g:ada#Keywords += [{ \ 'word': Item, \ 'menu': 'pragma', \ 'info': 'GNAT pragma.', \ 'kind': 'p', \ 'icase': 1}] endfor endif let g:ada#Ctags_Kinds = { \ 'P': ["packspec", "package specifications"], \ 'p': ["package", "packages"], \ 'T': ["typespec", "type specifications"], \ 't': ["type", "types"], \ 'U': ["subspec", "subtype specifications"], \ 'u': ["subtype", "subtypes"], \ 'c': ["component", "record type components"], \ 'l': ["literal", "enum type literals"], \ 'V': ["varspec", "variable specifications"], \ 'v': ["variable", "variables"], \ 'f': ["formal", "generic formal parameters"], \ 'n': ["constant", "constants"], \ 'x': ["exception", "user defined exceptions"], \ 'R': ["subprogspec", "subprogram specifications"], \ 'r': ["subprogram", "subprograms"], \ 'K': ["taskspec", "task specifications"], \ 'k': ["task", "tasks"], \ 'O': ["protectspec", "protected data specifications"], \ 'o': ["protected", "protected data"], \ 'E': ["entryspec", "task/protected data entry specifications"], \ 'e': ["entry", "task/protected data entries"], \ 'b': ["label", "labels"], \ 'i': ["identifier", "loop/declare identifiers"], \ 'a': ["autovar", "automatic variables"], \ 'y': ["annon", "loops and blocks with no identifier"]} function ada#Word (...) if a:0 > 1 let l:Line_Nr = a:1 let l:Column_Nr = a:2 - 1 else let l:Line_Nr = line('.') let l:Column_Nr = col('.') - 1 endif let l:Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' ) if l:Column_Nr > strlen(l:Line) let l:Line = getline(l:Line_Nr) let l:Search_Prev_Lines = 0 else let l:Search_Prev_Lines = 1 endif let l:New_Column = l:Column_Nr + 1 while 1 let l:New_Column = l:New_Column - 1 if l:New_Column < 0 let l:Line_Nr = l:Line_Nr - 1 if l:Line_Nr < 1 || !l:Search_Prev_Lines let l:Line_Nr = 1 let l:New_Column = 0 let l:Our_Match = match (l:Line, g:ada#WordRegex ) break endif let l:New_Line = substitute (getline (l:Line_Nr), g:ada#Comment, '', '' ) let l:New_Column = strlen (l:New_Line) - 1 let l:Column_Nr = l:Column_Nr + l:New_Column let l:Line = l:New_Line . l:Line endif let l:Match_End = l:New_Column + \ matchend (strpart (l:Line,l:New_Column), g:ada#WordRegex ) - 1 if l:Match_End >= l:New_Column && \ l:Match_End < l:Column_Nr let l:Our_Match = l:Match_End+1 + \ match (strpart (l:Line,l:Match_End+1), g:ada#WordRegex ) break endif endwhile if l:Our_Match < 0 return '' else let l:Line = strpart (l:Line, l:Our_Match) endif let l:Match_String = matchstr (l:Line, g:ada#WordRegex) let l:Last_Line = line ('$') let l:Line_Nr = line ('.') + 1 while l:Line_Nr <= l:Last_Line let l:Last_Match = l:Match_String let l:Line = l:Line . \ substitute (getline (l:Line_Nr), g:ada#Comment, '', '') let l:Match_String = matchstr (l:Line, g:ada#WordRegex) if l:Match_String == l:Last_Match break endif endwhile return substitute (l:Match_String, '\s\+', '', 'g') endfunction ada#Word function ada#List_Tag (...) if a:0 > 1 let l:Tag_Word = ada#Word (a:1, a:2) elseif a:0 > 0 let l:Tag_Word = a:1 else let l:Tag_Word = ada#Word () endif echo "Searching for" l:Tag_Word let l:Pattern = '^' . l:Tag_Word . '$' let l:Tag_List = taglist (l:Pattern) let l:Error_List = [] for Tag_Item in l:Tag_List if l:Tag_Item['kind'] == '' let l:Tag_Item['kind'] = 's' endif let l:Error_List += [ \ l:Tag_Item['filename'] . '|' . \ l:Tag_Item['cmd'] . '|' . \ l:Tag_Item['kind'] . "\t" . \ l:Tag_Item['name'] ] endfor set errorformat=%f\|%l\|%m cexpr l:Error_List cwindow endfunction ada#List_Tag function ada#Jump_Tag (Word, Mode) if a:Word == '' let l:Word = ada#Word() if l:Word == '' throw "NOT_FOUND: no identifier found." endif else let l:Word = a:Word endif echo "Searching for " . l:Word try execute a:Mode l:Word catch /.*:E426:.*/ let ignorecase = &ignorecase set ignorecase execute a:Mode l:Word let &ignorecase = ignorecase endtry return endfunction ada#Jump_Tag function ada#Insert_Backspace () let l:Line = getline ('.') if col ('.') > strlen (l:Line) && \ match (l:Line, '-- $') != -1 && \ match (&comments,'--') != -1 return "\\\" else return "\" endif return endfunction ada#InsertBackspace function! ada#User_Complete(findstart, base) if a:findstart == 1 let line = getline ('.') let start = col ('.') - 1 while start > 0 && line[start - 1] =~ '\i\|''' let start -= 1 endwhile return start else let l:Pattern = '^' . a:base . '.*$' for Tag_Item in g:ada#Keywords if l:Tag_Item['word'] =~? l:Pattern if complete_add (l:Tag_Item) == 0 return [] endif if complete_check () return [] endif endif endfor return [] endif endfunction ada#User_Complete function ada#Completion (cmd) set iskeyword+=46 return a:cmd . "\=ada#Completion_End ()\" endfunction ada#Completion function ada#Completion_End () set iskeyword-=46 return '' endfunction ada#Completion_End function ada#Create_Tags (option) if a:option == 'file' let l:Filename = fnamemodify (bufname ('%'), ':p') elseif a:option == 'dir' let l:Filename = \ fnamemodify (bufname ('%'), ':p:h') . "*.ada " . \ fnamemodify (bufname ('%'), ':p:h') . "*.adb " . \ fnamemodify (bufname ('%'), ':p:h') . "*.ads" else let l:Filename = a:option endif execute '!ctags --excmd=number ' . l:Filename endfunction ada#Create_Tags function ada#Switch_Session (New_Session) let l:sessionoptions=&sessionoptions try set sessionoptions=buffers,curdir,folds,globals,resize,slash,tabpages,tabpages,unix,winpos,winsize if a:New_Session != v:this_session if strlen (v:this_session) > 0 execute 'mksession! ' . v:this_session endif let v:this_session = a:New_Session augroup ada_session autocmd! autocmd VimLeavePre * execute 'mksession! ' . v:this_session augroup END endif finally let &sessionoptions=l:sessionoptions endtry return endfunction ada#Switch_Session if exists('g:ada_folding') && g:ada_folding[0] == 'g' let s:Fold_Collate = '^\([;)]*$\|' if stridx (g:ada_folding, 'i') >= 0 let s:Fold_Collate .= '\s\+\$\|' endif if stridx (g:ada_folding, 'b') >= 0 let s:Fold_Collate .= '\s\+\$\|' endif if stridx (g:ada_folding, 'p') >= 0 let s:Fold_Collate .= '\s\+\$\|' endif if stridx (g:ada_folding, 'x') >= 0 let s:Fold_Collate .= '\s\+\$\|' endif let s:Fold_Collate .= '--\)' function ada#Pretty_Print_Folding (Line) " {{{2 let l:Text = getline (a:Line) if l:Text =~ s:Fold_Collate let l:Level = "=" elseif l:Text =~ '^\s\+(' let l:Level = (indent (a:Line) + 1) / &shiftwidth else let l:Level = indent (a:Line) / &shiftwidth endif return l:Level endfunction ada#Pretty_Print_Folding " }}}2 endif function ada#Switch_Syntax_Option (option) syntax off if exists ('g:ada_' . a:option) unlet g:ada_{a:option} echo a:option . 'now off' else let g:ada_{a:option}=1 echo a:option . 'now on' endif syntax on endfunction ada#Switch_Syntax_Option function ada#Map_Menu (Text, Keys, Command) if a:Keys[0] == ':' execute \ "50amenu " . \ "Ada." . escape(a:Text, ' ') . \ "" . a:Keys . \ " :" . a:Command . "" execute \ "command -buffer " . \ a:Keys[1:] . \" :" . a:Command . "" elseif a:Keys[0] == '<' execute \ "50amenu " . \ "Ada." . escape(a:Text, ' ') . \ "" . a:Keys . \ " :" . a:Command . "" execute \ "nnoremap " . \ a:Keys . \" :" . a:Command . "" execute \ "inoremap " . \ a:Keys . \" :" . a:Command . "" else if exists("g:mapleader") let l:leader = g:mapleader else let l:leader = '\' endif execute \ "50amenu " . \ "Ada." . escape(a:Text, ' ') . \ "" . escape(l:leader . "a" . a:Keys , '\') . \ " :" . a:Command . "" execute \ "nnoremap " . \ " a" . a:Keys . \" :" . a:Command execute \ "inoremap " . \ " a" . a:Keys . \" :" . a:Command endif return endfunction function ada#Map_Popup (Text, Keys, Command) if exists("g:mapleader") let l:leader = g:mapleader else let l:leader = '\' endif execute \ "50amenu " . \ "PopUp." . escape(a:Text, ' ') . \ "" . escape(l:leader . "a" . a:Keys , '\') . \ " :" . a:Command . "" call ada#Map_Menu (a:Text, a:Keys, a:Command) return endfunction ada#Map_Popup lockvar g:ada#WordRegex lockvar g:ada#DotWordRegex lockvar g:ada#Comment lockvar! g:ada#Keywords lockvar! g:ada#Ctags_Kinds let &cpo = s:keepcpo unlet s:keepcpo finish " 1}}} if version < 700 finish endif function! adacomplete#Complete (findstart, base) if a:findstart == 1 return ada#User_Complete (a:findstart, a:base) else if exists ("g:ada_omni_with_keywords") call ada#User_Complete (a:findstart, a:base) endif let l:Pattern = '^' . a:base . '.*$' let l:Tag_List = taglist (l:Pattern) for Tag_Item in l:Tag_List if l:Tag_Item['kind'] == '' let l:Match_Item = { \ 'word': l:Tag_Item['name'], \ 'menu': l:Tag_Item['filename'], \ 'info': "Symbol from file " . l:Tag_Item['filename'] . " line " . l:Tag_Item['cmd'], \ 'kind': 's', \ 'icase': 1} else let l:Info = 'Symbol : ' . l:Tag_Item['name'] . "\n" let l:Info .= 'Of type : ' . g:ada#Ctags_Kinds[l:Tag_Item['kind']][1] . "\n" let l:Info .= 'Defined in File : ' . l:Tag_Item['filename'] . "\n" if has_key( l:Tag_Item, 'package') let l:Info .= 'Package : ' . l:Tag_Item['package'] . "\n" let l:Menu = l:Tag_Item['package'] elseif has_key( l:Tag_Item, 'separate') let l:Info .= 'Separate from Package : ' . l:Tag_Item['separate'] . "\n" let l:Menu = l:Tag_Item['separate'] elseif has_key( l:Tag_Item, 'packspec') let l:Info .= 'Package Specification : ' . l:Tag_Item['packspec'] . "\n" let l:Menu = l:Tag_Item['packspec'] elseif has_key( l:Tag_Item, 'type') let l:Info .= 'Datetype : ' . l:Tag_Item['type'] . "\n" let l:Menu = l:Tag_Item['type'] else let l:Menu = l:Tag_Item['filename'] endif let l:Match_Item = { \ 'word': l:Tag_Item['name'], \ 'menu': l:Menu, \ 'info': l:Info, \ 'kind': l:Tag_Item['kind'], \ 'icase': 1} endif if complete_add (l:Match_Item) == 0 return [] endif if complete_check () return [] endif endfor return [] endif endfunction adacomplete#Complete finish " 1}}} let s:cpo_save = &cpo set cpo&vim function! ccomplete#Complete(findstart, base) if a:findstart let line = getline('.') let start = col('.') - 1 let lastword = -1 while start > 0 if line[start - 1] =~ '\w' let start -= 1 elseif line[start - 1] =~ '\.' if lastword == -1 let lastword = start endif let start -= 1 elseif start > 1 && line[start - 2] == '-' && line[start - 1] == '>' if lastword == -1 let lastword = start endif let start -= 2 elseif line[start - 1] == ']' let n = 0 let start -= 1 while start > 0 let start -= 1 if line[start] == '[' if n == 0 break endif let n -= 1 elseif line[start] == ']' " nested [] let n += 1 endif endwhile else break endif endwhile if lastword == -1 let s:prepended = '' return start endif let s:prepended = strpart(line, start, lastword - start) return lastword endif let base = s:prepended . a:base if base == '' return [] endif let s:grepCache = {} let items = [] let s = 0 let arrays = 0 while 1 let e = match(base, '\.\|->\|\[', s) if e < 0 if s == 0 || base[s - 1] != ']' call add(items, strpart(base, s)) endif break endif if s == 0 || base[s - 1] != ']' call add(items, strpart(base, s, e - s)) endif if base[e] == '.' let s = e + 1 " skip over '.' elseif base[e] == '-' let s = e + 2 " skip over '->' else let n = 0 let s = e let e += 1 while e < len(base) if base[e] == ']' if n == 0 break endif let n -= 1 elseif base[e] == '[' " nested [...] let n += 1 endif let e += 1 endwhile let e += 1 call add(items, strpart(base, s, e - s)) let arrays += 1 let s = e endif endwhile let res = [] if searchdecl(items[0], 0, 1) == 0 let line = getline('.') let col = col('.') if stridx(strpart(line, 0, col), ';') != -1 let col2 = col - 1 while line[col2] != ';' let col2 -= 1 endwhile let line = strpart(line, col2 + 1) let col -= col2 endif if stridx(strpart(line, 0, col), ',') != -1 let col2 = col - 1 while line[col2] != ',' let col2 -= 1 endwhile if strpart(line, col2 + 1, col - col2 - 1) =~ ' *[^ ][^ ]* *[^ ]' let line = strpart(line, col2 + 1) let col -= col2 endif endif if len(items) == 1 let match = items[0] let kind = 'v' if match(line, '\<' . match . '\s*\[') > 0 let match .= '[' else let res = s:Nextitem(strpart(line, 0, col), [''], 0, 1) if len(res) > 0 if match(line, '\*[ \t(]*' . match . '\>') > 0 let match .= '->' else let match .= '.' endif endif endif let res = [{'match': match, 'tagline' : '', 'kind' : kind, 'info' : line}] elseif len(items) == arrays + 1 let match = items[0] let kind = 'v' let tagline = "\t/^" . line . '$/' let res = [{'match': match, 'tagline' : tagline, 'kind' : kind, 'info' : line}] else let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1) endif endif if len(items) == 1 || len(items) == arrays + 1 if len(items) == 1 let tags = taglist('^' . base) else let tags = taglist('^' . items[0] . '$') endif call filter(tags, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1') call filter(tags, '!has_key(v:val, "static") || !v:val["static"] || bufnr("%") == bufnr(v:val["filename"])') call extend(res, map(tags, 's:Tag2item(v:val)')) endif if len(res) == 0 let diclist = taglist('^' . items[0] . '$') call filter(diclist, 'has_key(v:val, "kind") ? v:val["kind"] != "m" : 1') let res = [] for i in range(len(diclist)) if has_key(diclist[i], 'typename') call extend(res, s:StructMembers(diclist[i]['typename'], items[1:], 1)) elseif has_key(diclist[i], 'typeref') call extend(res, s:StructMembers(diclist[i]['typeref'], items[1:], 1)) endif if diclist[i]['kind'] == 'v' let line = diclist[i]['cmd'] if line[0] == '/' && line[1] == '^' let col = match(line, '\<' . items[0] . '\>') call extend(res, s:Nextitem(strpart(line, 2, col - 2), items[1:], 0, 1)) endif endif endfor endif if len(res) == 0 && searchdecl(items[0], 1) == 0 let line = getline('.') let col = col('.') let res = s:Nextitem(strpart(line, 0, col), items[1:], 0, 1) endif let last = len(items) - 1 let brackets = '' while last >= 0 if items[last][0] != '[' break endif let brackets = items[last] . brackets let last -= 1 endwhile return map(res, 's:Tagline2item(v:val, brackets)') endfunc function! s:GetAddition(line, match, memarg, bracket) if a:bracket && match(a:line, a:match . '\s*\[') > 0 return '[' endif if len(s:SearchMembers(a:memarg, [''], 0)) > 0 if match(a:line, '\*[ \t(]*' . a:match . '\>') > 0 return '->' else return '.' endif endif return '' endfunction function! s:Tag2item(val) let res = {'match': a:val['name']} let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename']) let s = s:Dict2info(a:val) if s != '' let res['info'] = s endif let res['tagline'] = '' if has_key(a:val, "kind") let kind = a:val['kind'] let res['kind'] = kind if kind == 'v' let res['tagline'] = "\t" . a:val['cmd'] let res['dict'] = a:val elseif kind == 'f' let res['match'] = a:val['name'] . '(' endif endif return res endfunction function! s:Dict2info(dict) let info = '' for k in sort(keys(a:dict)) let info .= k . repeat(' ', 10 - len(k)) if k == 'cmd' let info .= substitute(matchstr(a:dict['cmd'], '/^\s*\zs.*\ze$/'), '\\\(.\)', '\1', 'g') else let info .= a:dict[k] endif let info .= "\n" endfor return info endfunc function! s:ParseTagline(line) let l = split(a:line, "\t") let d = {} if len(l) >= 3 let d['name'] = l[0] let d['filename'] = l[1] let d['cmd'] = l[2] let n = 2 if l[2] =~ '^/' while n < len(l) && l[n] !~ '/;"$' let n += 1 let d['cmd'] .= " " . l[n] endwhile endif for i in range(n + 1, len(l) - 1) if l[i] == 'file:' let d['static'] = 1 elseif l[i] !~ ':' let d['kind'] = l[i] else let d[matchstr(l[i], '[^:]*')] = matchstr(l[i], ':\zs.*') endif endfor endif return d endfunction function! s:Tagline2item(val, brackets) let line = a:val['tagline'] let add = s:GetAddition(line, a:val['match'], [a:val], a:brackets == '') let res = {'word': a:val['match'] . a:brackets . add } if has_key(a:val, 'info') let res['info'] = a:val['info'] else let s = s:Dict2info(s:ParseTagline(line)) if s != '' let res['info'] = s endif endif if has_key(a:val, 'kind') let res['kind'] = a:val['kind'] elseif add == '(' let res['kind'] = 'f' else let s = matchstr(line, '\t\(kind:\)\=\zs\S\ze\(\t\|$\)') if s != '' let res['kind'] = s endif endif if has_key(a:val, 'extra') let res['menu'] = a:val['extra'] return res endif let s = matchstr(line, '[^\t]*\t[^\t]*\t\zs\(/^.*$/\|[^\t]*\)\ze\(;"\t\|\t\|$\)') if s != '' let res['menu'] = s:Tagcmd2extra(s, a:val['match'], matchstr(line, '[^\t]*\t\zs[^\t]*\ze\t')) endif return res endfunction function! s:Tagcmd2extra(cmd, name, fname) if a:cmd =~ '^/^' let x = matchstr(a:cmd, '^/^\s*\zs.*\ze$/') let x = substitute(x, '\<' . a:name . '\>', '@@', '') let x = substitute(x, '\\\(.\)', '\1', 'g') let x = x . ' - ' . a:fname elseif a:cmd =~ '^\d*$' let x = a:fname . ' - ' . a:cmd else let x = a:cmd . ' - ' . a:fname endif return x endfunction function! s:Nextitem(lead, items, depth, all) let tokens = split(a:lead, '\s\+\|\<') let res = [] for tidx in range(len(tokens)) if tokens[tidx] !~ '^\h' continue endif if (tokens[tidx] == 'struct' || tokens[tidx] == 'union' || tokens[tidx] == 'class') && tidx + 1 < len(tokens) let res = s:StructMembers(tokens[tidx] . ':' . tokens[tidx + 1], a:items, a:all) break endif if index(['int', 'short', 'char', 'float', 'double', 'static', 'unsigned', 'extern'], tokens[tidx]) >= 0 continue endif let diclist = taglist('^' . tokens[tidx] . '$') for tagidx in range(len(diclist)) let item = diclist[tagidx] if has_key(item, 'typeref') call extend(res, s:StructMembers(item['typeref'], a:items, a:all)) continue endif if has_key(item, 'typename') call extend(res, s:StructMembers(item['typename'], a:items, a:all)) continue endif if item['kind'] != 't' continue endif if has_key(item, 'static') && item['static'] && bufnr('%') != bufnr(item['filename']) continue endif let cmd = item['cmd'] let ei = matchend(cmd, 'typedef\s\+') if ei > 1 let cmdtokens = split(strpart(cmd, ei), '\s\+\|\<') if len(cmdtokens) > 1 if cmdtokens[0] == 'struct' || cmdtokens[0] == 'union' || cmdtokens[0] == 'class' let name = '' for ti in range(len(cmdtokens) - 1) if cmdtokens[ti] =~ '^\w' let name = cmdtokens[ti] break endif endfor if name != '' call extend(res, s:StructMembers(cmdtokens[0] . ':' . name, a:items, a:all)) endif elseif a:depth < 10 call extend(res, s:Nextitem(cmdtokens[0], a:items, a:depth + 1, a:all)) endif endif endif endfor if len(res) > 0 break endif endfor return res endfunction function! s:StructMembers(typename, items, all) let fnames = join(map(tagfiles(), 'escape(v:val, " \\#%")')) if fnames == '' return [] endif let typename = a:typename let qflist = [] let cached = 0 if a:all == 0 let n = '1' " stop at first found match if has_key(s:grepCache, a:typename) let qflist = s:grepCache[a:typename] let cached = 1 endif else let n = '' endif if !cached while 1 exe 'silent! keepj noautocmd ' . n . 'vimgrep /\t' . typename . '\(\t\|$\)/j ' . fnames let qflist = getqflist() if len(qflist) > 0 || match(typename, "::") < 0 break endif let typename = substitute(typename, ':[^:]*::', ':', '') endwhile if a:all == 0 let s:grepCache[a:typename] = qflist endif endif let idx = 0 while 1 if idx >= len(a:items) let target = '' " No further items, matching all members break endif if a:items[idx][0] != '[' let target = a:items[idx] break endif let idx += 1 endwhile let matches = [] for l in qflist let memb = matchstr(l['text'], '[^\t]*') if memb =~ '^' . target if match(l['text'], "\tfile:") < 0 || bufnr('%') == bufnr(matchstr(l['text'], '\t\zs[^\t]*')) let item = {'match': memb, 'tagline': l['text']} let s = matchstr(l['text'], '\t\(kind:\)\=\zs\S\ze\(\t\|$\)') if s != '' let item['kind'] = s if s == 'f' let item['match'] = memb . '(' endif endif call add(matches, item) endif endif endfor if len(matches) > 0 let idx += 1 while 1 if idx >= len(a:items) return matches " No further items, return the result. endif if a:items[idx][0] != '[' break endif let idx += 1 endwhile return s:SearchMembers(matches, a:items[idx :], a:all) endif return [] endfunction function! s:SearchMembers(matches, items, all) let res = [] for i in range(len(a:matches)) let typename = '' if has_key(a:matches[i], 'dict') if has_key(a:matches[i].dict, 'typename') let typename = a:matches[i].dict['typename'] elseif has_key(a:matches[i].dict, 'typeref') let typename = a:matches[i].dict['typeref'] endif let line = "\t" . a:matches[i].dict['cmd'] else let line = a:matches[i]['tagline'] let e = matchend(line, '\ttypename:') if e < 0 let e = matchend(line, '\ttyperef:') endif if e > 0 let typename = matchstr(line, '[^\t]*', e) endif endif if typename != '' call extend(res, s:StructMembers(typename, a:items, a:all)) else let s = match(line, '\t\zs/^') if s > 0 let e = match(line, '\<' . a:matches[i]['match'] . '\>', s) if e > 0 call extend(res, s:Nextitem(strpart(line, s, e - s), a:items, 0, a:all)) endif endif endif if a:all == 0 && len(res) > 0 break endif endfor return res endfunc let &cpo = s:cpo_save unlet s:cpo_save let s:words = ["*","*'","*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-readably*","*read-eval*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","+","+'","-","-'","->","->>","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods",".","..","/","<","<=","=","==",">",">=","EMPTY-NODE","Throwable->map","accessor","aclone","add-classpath","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","amap","ancestors","and","apply","areduce","array-map","as->","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assert","assoc!","assoc","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","binding","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","booleans","bound-fn","bound-fn*","bound?","butlast","byte","byte-array","bytes","case","cast","cat","catch","char","char-array","char-escape-string","char-name-string","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","coll?","comment","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","cond","cond->","cond->>","condp","conj!","conj","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","declare","dedupe","def","default-data-readers","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","delay","delay?","deliver","denominator","deref","derive","descendants","destructure","disj!","disj","dissoc!","dissoc","distinct","distinct?","do","doall","dorun","doseq","dosync","dotimes","doto","double","double-array","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-data","ex-info","extend","extend-protocol","extend-type","extenders","extends?","false?","ffirst","file-seq","filter","filterv","finally","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn","fn","fn?","fnext","fnil","for","force","format","frequencies","future","future-call","future-cancel","future-cancelled?","future-done?","future?","gen-class","gen-interface","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","identical?","identity","if","if-let","if-not","if-some","ifn?","import","in-ns","inc","inc'","init-proxy","instance?","int","int-array","integer?","interleave","intern","interpose","into","into-array","ints","io!","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","lazy-cat","lazy-seq","let","let","letfn","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","locking","long","long-array","longs","loop","loop","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memfn","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","monitor-enter","monitor-exit","munge","name","namespace","namespace-munge","neg?","new","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","or","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop!","pop","pop-thread-bindings","pos?","pr","pr-str","prefer-method","prefers","primitives-classnames","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy","proxy-call-with-super","proxy-mappings","proxy-name","proxy-super","push-thread-bindings","pvalues","quot","quote","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","recur","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","refer-clojure","reify","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-watch","repeat","repeatedly","replace","replicate","require","reset!","reset-meta!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seque","sequence","sequential?","set!","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","slurp","some","some->","some->>","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","symbol","symbol?","sync","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","test","the-ns","thread-bound?","throw","time","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","try","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unquote","unquote-splicing","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","use","val","vals","var","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","vswap!","when","when-first","when-let","when-not","when-some","while","with-bindings","with-bindings*","with-in-str","with-loading-context","with-local-vars","with-meta","with-open","with-out-str","with-precision","with-redefs","with-redefs-fn","xml-seq","zero?","zipmap"] function! clojurecomplete#Complete(findstart, base) if a:findstart return searchpos('\<', 'bnW', line('.'))[1] - 1 else return { 'words': filter(copy(s:words), 'v:val =~# "\\V\\^' . a:base . '"') } endif endfunction let s:keepcpo= &cpo set cpo&vim function! s:context_echo(message, mode) redraw echo "\r" execute 'echohl' a:mode echomsg '[ConTeXt]' a:message echohl None endf function! s:sh() return has('win32') || has('win64') || has('win16') || has('win95') \ ? ['cmd.exe', '/C'] \ : ['/bin/sh', '-c'] endfunction if exists('*win_getid') function! s:win_getid() return win_getid() endf function! s:win_id2win(winid) return win_id2win(a:winid) endf else function! s:win_getid() return winnr() endf function! s:win_id2win(winnr) return a:winnr endf endif if has('job') let g:context_jobs = [] function! context#job_status() let l:jobs = filter(g:context_jobs, 'job_status(v:val) == "run"') let l:n = len(l:jobs) call s:context_echo( \ 'There '.(l:n == 1 ? 'is' : 'are').' '.(l:n == 0 ? 'no' : l:n) \ .' job'.(l:n == 1 ? '' : 's').' running' \ .(l:n == 0 ? '.' : ' (' . join(l:jobs, ', ').').'), \ 'ModeMsg') endfunction function! context#stop_jobs() let l:jobs = filter(g:context_jobs, 'job_status(v:val) == "run"') for job in l:jobs call job_stop(job) endfor sleep 1 let l:tmp = [] for job in l:jobs if job_status(job) == "run" call add(l:tmp, job) endif endfor let g:context_jobs = l:tmp if empty(g:context_jobs) call s:context_echo('Done. No jobs running.', 'ModeMsg') else call s:context_echo('There are still some jobs running. Please try again.', 'WarningMsg') endif endfunction function! context#callback(path, job, status) if index(g:context_jobs, a:job) != -1 && job_status(a:job) != 'run' " just in case call remove(g:context_jobs, index(g:context_jobs, a:job)) endif call s:callback(a:path, a:job, a:status) endfunction function! context#close_cb(channel) call job_status(ch_getjob(a:channel)) " Trigger exit_cb's callback for faster feedback endfunction function! s:typeset(path) call add(g:context_jobs, \ job_start(add(s:sh(), context#command() . ' ' . shellescape(fnamemodify(a:path, ":t"))), { \ 'close_cb' : 'context#close_cb', \ 'exit_cb' : function(get(b:, 'context_callback', get(g:, 'context_callback', 'context#callback')), \ [a:path]), \ 'in_io' : 'null' \ })) endfunction else " No jobs function! context#job_status() call s:context_echo('Not implemented', 'WarningMsg') endfunction! function! context#stop_jobs() call s:context_echo('Not implemented', 'WarningMsg') endfunction function! context#callback(path, job, status) call s:callback(a:path, a:job, a:status) endfunction function! s:typeset(path) execute '!' . context#command() . ' ' . shellescape(fnamemodify(a:path, ":t")) call call(get(b:, 'context_callback', get(g:, 'context_callback', 'context#callback')), \ [a:path, 0, v:shell_error]) endfunction endif " has('job') function! s:callback(path, job, status) abort if a:status < 0 " Assume the job was terminated return endif let l:winid = s:win_getid() " Save window id let l:efm = &l:errorformat " Save local errorformat let l:cwd = fnamemodify(getcwd(), ":p") " Save local working directory execute 'setl efm=' . escape(b:context_errorformat, ' ') try " Set cwd to expand error file correctly execute 'lcd' fnameescape(fnamemodify(a:path, ':h')) catch /.*/ execute 'setl efm=' . escape(l:efm, ' ') throw v:exception endtry try execute 'cgetfile' fnameescape(fnamemodify(a:path, ':r') . '.log') botright cwindow finally " Restore cwd and errorformat execute s:win_id2win(l:winid) . 'wincmd w' execute 'lcd ' . fnameescape(l:cwd) execute 'setl efm=' . escape(l:efm, ' ') endtry if a:status == 0 call s:context_echo('Success!', 'ModeMsg') else call s:context_echo('There are errors. ', 'ErrorMsg') endif endfunction function! context#command() return get(b:, 'context_mtxrun', get(g:, 'context_mtxrun', 'mtxrun')) \ . ' --script context --autogenerate --nonstopmode' \ . ' --synctex=' . (get(b:, 'context_synctex', get(g:, 'context_synctex', 0)) ? '1' : '0') \ . ' ' . get(b:, 'context_extra_options', get(g:, 'context_extra_options', '')) endfunction function! context#typeset(...) abort let l:path = fnamemodify(strlen(a:000[0]) > 0 ? a:1 : expand("%"), ":p") let l:cwd = fnamemodify(getcwd(), ":p") " Save local working directory call s:context_echo('Typesetting...', 'ModeMsg') execute 'lcd' fnameescape(fnamemodify(l:path, ":h")) try call s:typeset(l:path) finally " Restore local working directory execute 'lcd ' . fnameescape(l:cwd) endtry endfunction! let &cpo = s:keepcpo unlet s:keepcpo let s:keepcpo= &cpo set cpo&vim function! contextcomplete#Complete(findstart, base) if a:findstart == 1 if len(synstack(line('.'), 1)) > 0 && \ synIDattr(synstack(line('.'), 1)[0], "name") ==# 'contextMPGraphic' return syntaxcomplete#Complete(a:findstart, a:base) else return -3 endif else return syntaxcomplete#Complete(a:findstart, a:base) endif endfunction let &cpo = s:keepcpo unlet s:keepcpo let s:values = split("all additive-symbols align-content align-items align-self animation animation-delay animation-direction animation-duration animation-fill-mode animation-iteration-count animation-name animation-play-state animation-timing-function backface-visibility background background-attachment background-blend-mode background-clip background-color background-image background-origin background-position background-repeat background-size block-size border border-block-end border-block-end-color border-block-end-style border-block-end-width border-block-start border-block-start-color border-block-start-style border-block-start-width border-bottom border-bottom-color border-bottom-left-radius border-bottom-right-radius border-bottom-style border-bottom-width border-collapse border-color border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-inline-end border-inline-end-color border-inline-end-style border-inline-end-width border-inline-start border-inline-start-color border-inline-start-style border-inline-start-width border-left border-left-color border-left-style border-left-width border-radius border-right border-right-color border-right-style border-right-width border-spacing border-style border-top border-top-color border-top-left-radius border-top-right-radius border-top-style border-top-width border-width bottom box-decoration-break box-shadow box-sizing break-after break-before break-inside caption-side clear clip clip-path color columns column-count column-fill column-gap column-rule column-rule-color column-rule-style column-rule-width column-span column-width content counter-increment counter-reset cue cue-before cue-after cursor direction display empty-cells fallback filter flex flex-basis flex-direction flex-flow flex-grow flex-shrink flex-wrap float font font-family font-feature-settings font-kerning font-language-override font-size font-size-adjust font-stretch font-style font-synthesis font-variant font-variant-alternates font-variant-caps font-variant-east-asian font-variant-ligatures font-variant-numeric font-variant-position font-weight grid grid-area grid-auto-columns grid-auto-flow grid-auto-position grid-auto-rows grid-column grid-column-start grid-column-end grid-row grid-row-start grid-row-end grid-template grid-template-areas grid-template-rows grid-template-columns height hyphens image-rendering image-resolution image-orientation ime-mode inline-size isolation justify-content left letter-spacing line-break line-height list-style list-style-image list-style-position list-style-type margin margin-block-end margin-block-start margin-bottom margin-inline-end margin-inline-start margin-left margin-right margin-top marks mask mask-type max-block-size max-height max-inline-size max-width max-zoom min-block-size min-height min-inline-size min-width min-zoom mix-blend-mode negative object-fit object-position offset-block-end offset-block-start offset-inline-end offset-inline-start opacity order orientation orphans outline outline-color outline-offset outline-style outline-width overflow overflow-wrap overflow-x overflow-y pad padding padding-block-end padding-block-start padding-bottom padding-inline-end padding-inline-start padding-left padding-right padding-top page-break-after page-break-before page-break-inside pause-before pause-after pause perspective perspective-origin pointer-events position prefix quotes range resize rest rest-before rest-after right ruby-align ruby-merge ruby-position scroll-behavior scroll-snap-coordinate scroll-snap-destination scroll-snap-points-x scroll-snap-points-y scroll-snap-type scroll-snap-type-x scroll-snap-type-y shape-image-threshold shape-margin shape-outside speak speak-as suffix symbols system table-layout tab-size text-align text-align-last text-combine-upright text-decoration text-decoration-color text-decoration-line text-emphasis text-emphasis-color text-emphasis-position text-emphasis-style text-indent text-orientation text-overflow text-rendering text-shadow text-transform text-underline-position top touch-action transform transform-box transform-origin transform-style transition transition-delay transition-duration transition-property transition-timing-function unicode-bidi unicode-range user-zoom vertical-align visibility voice-balance voice-duration voice-family voice-pitch voice-rate voice-range voice-stress voice-volume white-space widows width will-change word-break word-spacing word-wrap writing-mode z-index zoom") function! csscomplete#CompleteCSS(findstart, base) if a:findstart let line = getline('.') let start = col('.') - 1 let compl_begin = col('.') - 2 while start >= 0 && line[start - 1] =~ '\%(\k\|-\)' let start -= 1 endwhile let b:compl_context = line[0:compl_begin] return start endif if exists("b:compl_context") let line = getline('.') let compl_begin = col('.') - 2 let after = line[compl_begin:] let line = b:compl_context unlet! b:compl_context else let line = a:base let after = '' endif let res = [] let res2 = [] let borders = {} let openbrace = strridx(line, '{') let closebrace = strridx(line, '}') let colon = strridx(line, ':') let semicolon = strridx(line, ';') let opencomm = strridx(line, '/*') let closecomm = strridx(line, '*/') let style = strridx(line, 'style\s*=') let atrule = strridx(line, '@') let exclam = strridx(line, '!') if openbrace > -1 let borders[openbrace] = "openbrace" endif if closebrace > -1 let borders[closebrace] = "closebrace" endif if colon > -1 let borders[colon] = "colon" endif if semicolon > -1 let borders[semicolon] = "semicolon" endif if opencomm > -1 let borders[opencomm] = "opencomm" endif if closecomm > -1 let borders[closecomm] = "closecomm" endif if style > -1 let borders[style] = "style" endif if atrule > -1 let borders[atrule] = "atrule" endif if exclam > -1 let borders[exclam] = "exclam" endif if len(borders) == 0 || borders[max(keys(borders))] =~ '^\%(openbrace\|semicolon\|opencomm\|closecomm\|style\)$' let entered_property = matchstr(line, '.\{-}\zs[a-zA-Z-]*$') for m in s:values if m =~? '^'.entered_property call add(res, m . ':') elseif m =~? entered_property call add(res2, m . ':') endif endfor return res + res2 elseif borders[max(keys(borders))] == 'colon' let prop = tolower(matchstr(line, '\zs[a-zA-Z-]*\ze\s*:[^:]\{-}$')) let wide_keywords = ["initial", "inherit", "unset"] let color_values = ["transparent", "rgb(", "rgba(", "hsl(", "hsla(", "#"] let border_style_values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"] let border_width_values = ["thin", "thick", "medium"] let list_style_type_values = ["decimal", "decimal-leading-zero", "arabic-indic", "armenian", "upper-armenian", "lower-armenian", "bengali", "cambodian", "khmer", "cjk-decimal", "devanagari", "georgian", "gujarati", "gurmukhi", "hebrew", "kannada", "lao", "malayalam", "mongolian", "myanmar", "oriya", "persian", "lower-roman", "upper-roman", "tamil", "telugu", "thai", "tibetan", "lower-alpha", "lower-latin", "upper-alpha", "upper-latin", "cjk-earthly-branch", "cjk-heavenly-stem", "lower-greek", "hiragana", "hiragana-iroha", "katakana", "katakana-iroha", "disc", "circle", "square", "disclosure-open", "disclosure-closed"] let timing_functions = ["cubic-bezier(", "steps(", "linear", "ease", "ease-in", "ease-in-out", "ease-out", "step-start", "step-end"] if prop == 'all' let values = [] elseif prop == 'additive-symbols' let values = [] elseif prop == 'align-content' let values = ["flex-start", "flex-end", "center", "space-between", "space-around", "stretch"] elseif prop == 'align-items' let values = ["flex-start", "flex-end", "center", "baseline", "stretch"] elseif prop == 'align-self' let values = ["auto", "flex-start", "flex-end", "center", "baseline", "stretch"] elseif prop == 'animation' let values = timing_functions + ["normal", "reverse", "alternate", "alternate-reverse"] + ["none", "forwards", "backwards", "both"] + ["running", "paused"] elseif prop == 'animation-delay' let values = [] elseif prop == 'animation-direction' let values = ["normal", "reverse", "alternate", "alternate-reverse"] elseif prop == 'animation-duration' let values = [] elseif prop == 'animation-fill-mode' let values = ["none", "forwards", "backwards", "both"] elseif prop == 'animation-iteration-count' let values = [] elseif prop == 'animation-name' let values = [] elseif prop == 'animation-play-state' let values = ["running", "paused"] elseif prop == 'animation-timing-function' let values = timing_functions elseif prop == 'background-attachment' let values = ["scroll", "fixed"] elseif prop == 'background-color' let values = color_values elseif prop == 'background-image' let values = ["url(", "none"] elseif prop == 'background-position' let vals = matchstr(line, '.*:\s*\zs.*') if vals =~ '^\%([a-zA-Z]\+\)\?$' let values = ["top", "center", "bottom"] elseif vals =~ '^[a-zA-Z]\+\s\+\%([a-zA-Z]\+\)\?$' let values = ["left", "center", "right"] else return [] endif elseif prop == 'background-repeat' let values = ["repeat", "repeat-x", "repeat-y", "no-repeat"] elseif prop == 'background-size' let values = ["auto", "contain", "cover"] elseif prop == 'background' let values = ["scroll", "fixed"] + color_values + ["url(", "none"] + ["top", "center", "bottom", "left", "right"] + ["repeat", "repeat-x", "repeat-y", "no-repeat"] + ["auto", "contain", "cover"] elseif prop =~ 'border\%(-top\|-right\|-bottom\|-left\|-block-start\|-block-end\)\?$' let vals = matchstr(line, '.*:\s*\zs.*') if vals =~ '^\%([a-zA-Z0-9.]\+\)\?$' let values = border_width_values elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\%([a-zA-Z]\+\)\?$' let values = border_style_values elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$' let values = color_values else return [] endif elseif prop =~ 'border-\%(top\|right\|bottom\|left\|block-start\|block-end\)-color' let values = color_values elseif prop =~ 'border-\%(top\|right\|bottom\|left\|block-start\|block-end\)-style' let values = border_style_values elseif prop =~ 'border-\%(top\|right\|bottom\|left\|block-start\|block-end\)-width' let values = border_width_values elseif prop == 'border-color' let values = color_values elseif prop == 'border-style' let values = border_style_values elseif prop == 'border-width' let values = border_width_values elseif prop == 'bottom' let values = ["auto"] elseif prop == 'box-decoration-break' let values = ["slice", "clone"] elseif prop == 'box-shadow' let values = ["inset"] elseif prop == 'box-sizing' let values = ["border-box", "content-box"] elseif prop =~ 'break-\%(before\|after\)' let values = ["auto", "always", "avoid", "left", "right", "page", "column", "region", "recto", "verso", "avoid-page", "avoid-column", "avoid-region"] elseif prop == 'break-inside' let values = ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region"] elseif prop == 'caption-side' let values = ["top", "bottom"] elseif prop == 'clear' let values = ["none", "left", "right", "both"] elseif prop == 'clip' let values = ["auto", "rect("] elseif prop == 'clip-path' let values = ["fill-box", "stroke-box", "view-box", "none"] elseif prop == 'color' let values = color_values elseif prop == 'columns' let values = [] elseif prop == 'column-count' let values = ['auto'] elseif prop == 'column-fill' let values = ['auto', 'balance'] elseif prop == 'column-rule-color' let values = color_values elseif prop == 'column-rule-style' let values = border_style_values elseif prop == 'column-rule-width' let values = border_width_values elseif prop == 'column-rule' let vals = matchstr(line, '.*:\s*\zs.*') if vals =~ '^\%([a-zA-Z0-9.]\+\)\?$' let values = border_width_values elseif vals =~ '^[a-zA-Z0-9.]\+\s\+\%([a-zA-Z]\+\)\?$' let values = border_style_values elseif vals =~ '^[a-zA-Z0-9.]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$' let values = color_values else return [] endif elseif prop == 'column-span' let values = ["none", "all"] elseif prop == 'column-width' let values = ["auto"] elseif prop == 'content' let values = ["normal", "attr(", "open-quote", "close-quote", "no-open-quote", "no-close-quote"] elseif prop =~ 'counter-\%(increment\|reset\)$' let values = ["none"] elseif prop =~ 'cue\%(-after\|-before\)\=$' let values = ["url("] elseif prop == 'cursor' let values = ["url(", "auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress"] elseif prop == 'direction' let values = ["ltr", "rtl"] elseif prop == 'display' let values = ["inline", "block", "list-item", "inline-list-item", "run-in", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none", "flex", "inline-flex", "grid", "inline-grid", "ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container", "contents"] elseif prop == 'elevation' let values = ["below", "level", "above", "higher", "lower"] elseif prop == 'empty-cells' let values = ["show", "hide"] elseif prop == 'fallback' let values = list_style_type_values elseif prop == 'filter' let values = ["blur(", "brightness(", "contrast(", "drop-shadow(", "grayscale(", "hue-rotate(", "invert(", "opacity(", "sepia(", "saturate("] elseif prop == 'flex-basis' let values = ["auto", "content"] elseif prop == 'flex-flow' let values = ["row", "row-reverse", "column", "column-reverse", "nowrap", "wrap", "wrap-reverse"] elseif prop == 'flex-grow' let values = [] elseif prop == 'flex-shrink' let values = [] elseif prop == 'flex-wrap' let values = ["nowrap", "wrap", "wrap-reverse"] elseif prop == 'flex' let values = ["nowrap", "wrap", "wrap-reverse"] + ["row", "row-reverse", "column", "column-reverse", "nowrap", "wrap", "wrap-reverse"] + ["auto", "content"] elseif prop == 'float' let values = ["left", "right", "none"] elseif prop == 'font-family' let values = ["sans-serif", "serif", "monospace", "cursive", "fantasy"] elseif prop == 'font-feature-settings' let values = ["normal", '"aalt"', '"abvf"', '"abvm"', '"abvs"', '"afrc"', '"akhn"', '"blwf"', '"blwm"', '"blws"', '"calt"', '"case"', '"ccmp"', '"cfar"', '"cjct"', '"clig"', '"cpct"', '"cpsp"', '"cswh"', '"curs"', '"cv', '"c2pc"', '"c2sc"', '"dist"', '"dlig"', '"dnom"', '"dtls"', '"expt"', '"falt"', '"fin2"', '"fin3"', '"fina"', '"flac"', '"frac"', '"fwid"', '"half"', '"haln"', '"halt"', '"hist"', '"hkna"', '"hlig"', '"hngl"', '"hojo"', '"hwid"', '"init"', '"isol"', '"ital"', '"jalt"', '"jp78"', '"jp83"', '"jp90"', '"jp04"', '"kern"', '"lfbd"', '"liga"', '"ljmo"', '"lnum"', '"locl"', '"ltra"', '"ltrm"', '"mark"', '"med2"', '"medi"', '"mgrk"', '"mkmk"', '"mset"', '"nalt"', '"nlck"', '"nukt"', '"numr"', '"onum"', '"opbd"', '"ordn"', '"ornm"', '"palt"', '"pcap"', '"pkna"', '"pnum"', '"pref"', '"pres"', '"pstf"', '"psts"', '"pwid"', '"qwid"', '"rand"', '"rclt"', '"rkrf"', '"rlig"', '"rphf"', '"rtbd"', '"rtla"', '"rtlm"', '"ruby"', '"salt"', '"sinf"', '"size"', '"smcp"', '"smpl"', '"ss01"', '"ss02"', '"ss03"', '"ss04"', '"ss05"', '"ss06"', '"ss07"', '"ss08"', '"ss09"', '"ss10"', '"ss11"', '"ss12"', '"ss13"', '"ss14"', '"ss15"', '"ss16"', '"ss17"', '"ss18"', '"ss19"', '"ss20"', '"ssty"', '"stch"', '"subs"', '"sups"', '"swsh"', '"titl"', '"tjmo"', '"tnam"', '"tnum"', '"trad"', '"twid"', '"unic"', '"valt"', '"vatu"', '"vert"', '"vhal"', '"vjmo"', '"vkna"', '"vkrn"', '"vpal"', '"vrt2"', '"zero"'] elseif prop == 'font-kerning' let values = ["auto", "normal", "none"] elseif prop == 'font-language-override' let values = ["normal"] elseif prop == 'font-size' let values = ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller"] elseif prop == 'font-size-adjust' let values = [] elseif prop == 'font-stretch' let values = ["normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"] elseif prop == 'font-style' let values = ["normal", "italic", "oblique"] elseif prop == 'font-synthesis' let values = ["none", "weight", "style"] elseif prop == 'font-variant-alternates' let values = ["normal", "historical-forms", "stylistic(", "styleset(", "character-variant(", "swash(", "ornaments(", "annotation("] elseif prop == 'font-variant-caps' let values = ["normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps"] elseif prop == 'font-variant-asian' let values = ["normal", "ruby", "jis78", "jis83", "jis90", "jis04", "simplified", "traditional"] elseif prop == 'font-variant-ligatures' let values = ["normal", "none", "common-ligatures", "no-common-ligatures", "discretionary-ligatures", "no-discretionary-ligatures", "historical-ligatures", "no-historical-ligatures", "contextual", "no-contextual"] elseif prop == 'font-variant-numeric' let values = ["normal", "ordinal", "slashed-zero", "lining-nums", "oldstyle-nums", "proportional-nums", "tabular-nums", "diagonal-fractions", "stacked-fractions"] elseif prop == 'font-variant-position' let values = ["normal", "sub", "super"] elseif prop == 'font-variant' let values = ["normal", "historical-forms", "stylistic(", "styleset(", "character-variant(", "swash(", "ornaments(", "annotation("] + ["small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "unicase", "titling-caps"] + ["ruby", "jis78", "jis83", "jis90", "jis04", "simplified", "traditional"] + ["none", "common-ligatures", "no-common-ligatures", "discretionary-ligatures", "no-discretionary-ligatures", "historical-ligatures", "no-historical-ligatures", "contextual", "no-contextual"] + ["ordinal", "slashed-zero", "lining-nums", "oldstyle-nums", "proportional-nums", "tabular-nums", "diagonal-fractions", "stacked-fractions"] + ["sub", "super"] elseif prop == 'font-weight' let values = ["normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900"] elseif prop == 'font' let values = ["normal", "italic", "oblique", "small-caps", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", "600", "700", "800", "900", "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "larger", "smaller", "sans-serif", "serif", "monospace", "cursive", "fantasy", "caption", "icon", "menu", "message-box", "small-caption", "status-bar"] elseif prop =~ '^\%(height\|width\)$' let values = ["auto", "border-box", "content-box", "max-content", "min-content", "available", "fit-content"] elseif prop =~ '^\%(left\|rigth\)$' let values = ["auto"] elseif prop == 'image-rendering' let values = ["auto", "crisp-edges", "pixelated"] elseif prop == 'image-orientation' let values = ["from-image", "flip"] elseif prop == 'ime-mode' let values = ["auto", "normal", "active", "inactive", "disabled"] elseif prop == 'inline-size' let values = ["auto", "border-box", "content-box", "max-content", "min-content", "available", "fit-content"] elseif prop == 'isolation' let values = ["auto", "isolate"] elseif prop == 'justify-content' let values = ["flex-start", "flex-end", "center", "space-between", "space-around"] elseif prop == 'letter-spacing' let values = ["normal"] elseif prop == 'line-break' let values = ["auto", "loose", "normal", "strict"] elseif prop == 'line-height' let values = ["normal"] elseif prop == 'list-style-image' let values = ["url(", "none"] elseif prop == 'list-style-position' let values = ["inside", "outside"] elseif prop == 'list-style-type' let values = list_style_type_values elseif prop == 'list-style' let values = list_style_type_values + ["inside", "outside"] + ["url(", "none"] elseif prop == 'margin' let values = ["auto"] elseif prop =~ 'margin-\%(right\|left\|top\|bottom\|block-start\|block-end\|inline-start\|inline-end\)$' let values = ["auto"] elseif prop == 'marks' let values = ["crop", "cross", "none"] elseif prop == 'mask' let values = ["url("] elseif prop == 'mask-type' let values = ["luminance", "alpha"] elseif prop == '\%(max\|min\)-\%(block\|inline\)-size' let values = ["auto", "border-box", "content-box", "max-content", "min-content", "available", "fit-content"] elseif prop == '\%(max\|min\)-\%(height\|width\)' let values = ["auto", "border-box", "content-box", "max-content", "min-content", "available", "fit-content"] elseif prop == '\%(max\|min\)-zoom' let values = ["auto"] elseif prop == 'mix-blend-mode' let values = ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"] elseif prop == 'opacity' let values = [] elseif prop == 'orientation' let values = ["auto", "portrait", "landscape"] elseif prop == 'orphans' let values = [] elseif prop == 'outline-offset' let values = [] elseif prop == 'outline-color' let values = color_values elseif prop == 'outline-style' let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"] elseif prop == 'outline-width' let values = ["thin", "thick", "medium"] elseif prop == 'outline' let vals = matchstr(line, '.*:\s*\zs.*') if vals =~ '^\%([a-zA-Z0-9,()#]\+\)\?$' let values = color_values elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+\%([a-zA-Z]\+\)\?$' let values = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"] elseif vals =~ '^[a-zA-Z0-9,()#]\+\s\+[a-zA-Z]\+\s\+\%([a-zA-Z(]\+\)\?$' let values = ["thin", "thick", "medium"] else return [] endif elseif prop == 'overflow-wrap' let values = ["normal", "break-word"] elseif prop =~ 'overflow\%(-x\|-y\)\=' let values = ["visible", "hidden", "scroll", "auto"] elseif prop == 'pad' let values = [] elseif prop == 'padding' let values = [] elseif prop =~ 'padding-\%(top\|right\|bottom\|left\|inline-start\|inline-end\|block-start\|block-end\)$' let values = [] elseif prop =~ 'page-break-\%(after\|before\)$' let values = ["auto", "always", "avoid", "left", "right", "recto", "verso"] elseif prop == 'page-break-inside' let values = ["auto", "avoid"] elseif prop =~ 'pause\%(-after\|-before\)\=$' let values = ["none", "x-weak", "weak", "medium", "strong", "x-strong"] elseif prop == 'perspective' let values = ["none"] elseif prop == 'perspective-origin' let values = ["top", "bottom", "left", "center", " right"] elseif prop == 'pointer-events' let values = ["auto", "none", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all"] elseif prop == 'position' let values = ["static", "relative", "absolute", "fixed", "sticky"] elseif prop == 'prefix' let values = [] elseif prop == 'quotes' let values = ["none"] elseif prop == 'range' let values = ["auto", "infinite"] elseif prop == 'resize' let values = ["none", "both", "horizontal", "vertical"] elseif prop =~ 'rest\%(-after\|-before\)\=$' let values = ["none", "x-weak", "weak", "medium", "strong", "x-strong"] elseif prop == 'ruby-align' let values = ["start", "center", "space-between", "space-around"] elseif prop == 'ruby-merge' let values = ["separate", "collapse", "auto"] elseif prop == 'ruby-position' let values = ["over", "under", "inter-character"] elseif prop == 'scroll-behavior' let values = ["auto", "smooth"] elseif prop == 'scroll-snap-coordinate' let values = ["none"] elseif prop == 'scroll-snap-destination' return [] elseif prop == 'scroll-snap-points-\%(x\|y\)$' let values = ["none", "repeat("] elseif prop == 'scroll-snap-type\%(-x\|-y\)\=$' let values = ["none", "mandatory", "proximity"] elseif prop == 'shape-image-threshold' let values = [] elseif prop == 'shape-margin' let values = [] elseif prop == 'shape-outside' let values = ["margin-box", "border-box", "padding-box", "content-box", 'inset(', 'circle(', 'ellipse(', 'polygon(', 'url('] elseif prop == 'speak' let values = ["auto", "none", "normal"] elseif prop == 'speak-as' let values = ["auto", "normal", "spell-out", "digits"] elseif prop == 'src' let values = ["url("] elseif prop == 'suffix' let values = [] elseif prop == 'symbols' let values = [] elseif prop == 'system' let vals = matchstr(line, '.*:\s*\zs.*') if vals =~ '^extends' let values = list_style_type_values else let values = ["cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed", "extends"] endif elseif prop == 'table-layout' let values = ["auto", "fixed"] elseif prop == 'tab-size' let values = [] elseif prop == 'text-align' let values = ["start", "end", "left", "right", "center", "justify", "match-parent"] elseif prop == 'text-align-last' let values = ["auto", "start", "end", "left", "right", "center", "justify"] elseif prop == 'text-combine-upright' let values = ["none", "all", "digits"] elseif prop == 'text-decoration-line' let values = ["none", "underline", "overline", "line-through", "blink"] elseif prop == 'text-decoration-color' let values = color_values elseif prop == 'text-decoration-style' let values = ["solid", "double", "dotted", "dashed", "wavy"] elseif prop == 'text-decoration' let values = ["none", "underline", "overline", "line-through", "blink"] + ["solid", "double", "dotted", "dashed", "wavy"] + color_values elseif prop == 'text-emphasis-color' let values = color_values elseif prop == 'text-emphasis-position' let values = ["over", "under", "left", "right"] elseif prop == 'text-emphasis-style' let values = ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame"] elseif prop == 'text-emphasis' let values = color_values + ["over", "under", "left", "right"] + ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame"] elseif prop == 'text-indent' let values = ["hanging", "each-line"] elseif prop == 'text-orientation' let values = ["mixed", "upright", "sideways", "sideways-right", "use-glyph-orientation"] elseif prop == 'text-overflow' let values = ["clip", "ellipsis"] elseif prop == 'text-rendering' let values = ["auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"] elseif prop == 'text-shadow' let values = color_values elseif prop == 'text-transform' let values = ["capitalize", "uppercase", "lowercase", "full-width", "none"] elseif prop == 'text-underline-position' let values = ["auto", "under", "left", "right"] elseif prop == 'touch-action' let values = ["auto", "none", "pan-x", "pan-y", "manipulation", "pan-left", "pan-right", "pan-top", "pan-down"] elseif prop == 'transform' let values = ["matrix(", "translate(", "translateX(", "translateY(", "scale(", "scaleX(", "scaleY(", "rotate(", "skew(", "skewX(", "skewY(", "matrix3d(", "translate3d(", "translateZ(", "scale3d(", "scaleZ(", "rotate3d(", "rotateX(", "rotateY(", "rotateZ(", "perspective("] elseif prop == 'transform-box' let values = ["border-box", "fill-box", "view-box"] elseif prop == 'transform-origin' let values = ["left", "center", "right", "top", "bottom"] elseif prop == 'transform-style' let values = ["flat", "preserve-3d"] elseif prop == 'top' let values = ["auto"] elseif prop == 'transition-property' let values = ["all", "none"] + s:values elseif prop == 'transition-duration' let values = [] elseif prop == 'transition-delay' let values = [] elseif prop == 'transition-timing-function' let values = timing_functions elseif prop == 'transition' let values = ["all", "none"] + s:values + timing_functions elseif prop == 'unicode-bidi' let values = ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"] elseif prop == 'unicode-range' let values = ["U+"] elseif prop == 'user-zoom' let values = ["zoom", "fixed"] elseif prop == 'vertical-align' let values = ["baseline", "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom"] elseif prop == 'visibility' let values = ["visible", "hidden", "collapse"] elseif prop == 'voice-volume' let values = ["silent", "x-soft", "soft", "medium", "loud", "x-loud"] elseif prop == 'voice-balance' let values = ["left", "center", "right", "leftwards", "rightwards"] elseif prop == 'voice-family' let values = [] elseif prop == 'voice-rate' let values = ["normal", "x-slow", "slow", "medium", "fast", "x-fast"] elseif prop == 'voice-pitch' let values = ["absolute", "x-low", "low", "medium", "high", "x-high"] elseif prop == 'voice-range' let values = ["absolute", "x-low", "low", "medium", "high", "x-high"] elseif prop == 'voice-stress' let values = ["normal", "strong", "moderate", "none", "reduced "] elseif prop == 'voice-duration' let values = ["auto"] elseif prop == 'white-space' let values = ["normal", "pre", "nowrap", "pre-wrap", "pre-line"] elseif prop == 'widows' let values = [] elseif prop == 'will-change' let values = ["auto", "scroll-position", "contents"] + s:values elseif prop == 'word-break' let values = ["normal", "break-all", "keep-all"] elseif prop == 'word-spacing' let values = ["normal"] elseif prop == 'word-wrap' let values = ["normal", "break-word"] elseif prop == 'writing-mode' let values = ["horizontal-tb", "vertical-rl", "vertical-lr", "sideways-rl", "sideways-lr"] elseif prop == 'z-index' let values = ["auto"] elseif prop == 'zoom' let values = ["auto"] else let element = tolower(matchstr(line, '\zs[a-zA-Z1-6]*\ze:[^:[:space:]]\{-}$')) if stridx('a,abbr,address,area,article,aside,audio,b,base,bdi,bdo,bgsound,blockquote,body,br,button,canvas,caption,center,cite,code,col,colgroup,command,content,data,datalist,dd,del,details,dfn,dialog,div,dl,dt,element,em,embed,fieldset,figcaption,figure,font,footer,form,frame,frameset,head,header,hgroup,hr,html,i,iframe,image,img,input,ins,isindex,kbd,keygen,label,legend,li,link,main,map,mark,menu,menuitem,meta,meter,nav,nobr,noframes,noscript,object,ol,optgroup,option,output,p,param,picture,pre,progress,q,rp,rt,rtc,ruby,s,samp,script,section,select,shadow,small,source,span,strong,style,sub,summary,sup,table,tbody,td,template,textarea,tfoot,th,thead,time,title,tr,track,u,ul,var,video,wbr', ','.element.',') > -1 let values = ["active", "any", "checked", "default", "dir(", "disabled", "empty", "enabled", "first", "first-child", "first-of-type", "fullscreen", "focus", "hover", "indeterminate", "in-range", "invalid", "lang(", "last-child", "last-of-type", "left", "link", "not(", "nth-child(", "nth-last-child(", "nth-last-of-type(", "nth-of-type(", "only-child", "only-of-type", "optional", "out-of-range", "read-only", "read-write", "required", "right", "root", "scope", "target", "valid", "visited", "first-line", "first-letter", "before", "after", "selection", "backdrop"] else return [] endif endif let values = wide_keywords + values let entered_value = matchstr(line, '.\{-}\zs[a-zA-Z0-9#,.(_-]*$') for m in values if m =~? '^'.entered_value call add(res, m) elseif m =~? entered_value call add(res2, m) endif endfor return res + res2 elseif borders[max(keys(borders))] == 'closebrace' return [] elseif borders[max(keys(borders))] == 'exclam' let entered_imp = matchstr(line, '.\{-}!\s*\zs[a-zA-Z ]*$') let values = ["important"] for m in values if m =~? '^'.entered_imp call add(res, m) endif endfor return res elseif borders[max(keys(borders))] == 'atrule' let afterat = matchstr(line, '.*@\zs.*') if afterat =~ '\s' let atrulename = matchstr(line, '.*@\zs[a-zA-Z-]\+\ze') if atrulename == 'media' let entered_atruleafter = matchstr(line, '.*@media\s\+\zs.*$') if entered_atruleafter =~ "([^)]*$" let entered_atruleafter = matchstr(entered_atruleafter, '(\s*\zs[^)]*$') let values = ["max-width", "min-width", "width", "max-height", "min-height", "height", "max-aspect-ration", "min-aspect-ration", "aspect-ratio", "orientation", "max-resolution", "min-resolution", "resolution", "scan", "grid", "update-frequency", "overflow-block", "overflow-inline", "max-color", "min-color", "color", "max-color-index", "min-color-index", "color-index", "monochrome", "inverted-colors", "pointer", "hover", "any-pointer", "any-hover", "light-level", "scripting"] else let values = ["screen", "print", "speech", "all", "not", "and", "("] endif elseif atrulename == 'supports' let entered_atruleafter = matchstr(line, '.*@supports\s\+\zs.*$') if entered_atruleafter =~ "([^)]*$" let entered_atruleafter = matchstr(entered_atruleafter, '(\s*\zs.*$') let values = s:values else let values = ["("] endif elseif atrulename == 'charset' let entered_atruleafter = matchstr(line, '.*@charset\s\+\zs.*$') let values = [ \ '"UTF-8";', '"ANSI_X3.4-1968";', '"ISO_8859-1:1987";', '"ISO_8859-2:1987";', '"ISO_8859-3:1988";', '"ISO_8859-4:1988";', '"ISO_8859-5:1988";', \ '"ISO_8859-6:1987";', '"ISO_8859-7:1987";', '"ISO_8859-8:1988";', '"ISO_8859-9:1989";', '"ISO-8859-10";', '"ISO_6937-2-add";', '"JIS_X0201";', \ '"JIS_Encoding";', '"Shift_JIS";', '"Extended_UNIX_Code_Packed_Format_for_Japanese";', '"Extended_UNIX_Code_Fixed_Width_for_Japanese";', \ '"BS_4730";', '"SEN_850200_C";', '"IT";', '"ES";', '"DIN_66003";', '"NS_4551-1";', '"NF_Z_62-010";', '"ISO-10646-UTF-1";', '"ISO_646.basic:1983";', \ '"INVARIANT";', '"ISO_646.irv:1983";', '"NATS-SEFI";', '"NATS-SEFI-ADD";', '"NATS-DANO";', '"NATS-DANO-ADD";', '"SEN_850200_B";', '"KS_C_5601-1987";', \ '"ISO-2022-KR";', '"EUC-KR";', '"ISO-2022-JP";', '"ISO-2022-JP-2";', '"JIS_C6220-1969-jp";', '"JIS_C6220-1969-ro";', '"PT";', '"greek7-old";', \ '"latin-greek";', '"NF_Z_62-010_(1973)";', '"Latin-greek-1";', '"ISO_5427";', '"JIS_C6226-1978";', '"BS_viewdata";', '"INIS";', '"INIS-8";', \ '"INIS-cyrillic";', '"ISO_5427:1981";', '"ISO_5428:1980";', '"GB_1988-80";', '"GB_2312-80";', '"NS_4551-2";', '"videotex-suppl";', '"PT2";', \ '"ES2";', '"MSZ_7795.3";', '"JIS_C6226-1983";', '"greek7";', '"ASMO_449";', '"iso-ir-90";', '"JIS_C6229-1984-a";', '"JIS_C6229-1984-b";', \ '"JIS_C6229-1984-b-add";', '"JIS_C6229-1984-hand";', '"JIS_C6229-1984-hand-add";', '"JIS_C6229-1984-kana";', '"ISO_2033-1983";', \ '"ANSI_X3.110-1983";', '"T.61-7bit";', '"T.61-8bit";', '"ECMA-cyrillic";', '"CSA_Z243.4-1985-1";', '"CSA_Z243.4-1985-2";', '"CSA_Z243.4-1985-gr";', \ '"ISO_8859-6-E";', '"ISO_8859-6-I";', '"T.101-G2";', '"ISO_8859-8-E";', '"ISO_8859-8-I";', '"CSN_369103";', '"JUS_I.B1.002";', '"IEC_P27-1";', \ '"JUS_I.B1.003-serb";', '"JUS_I.B1.003-mac";', '"greek-ccitt";', '"NC_NC00-10:81";', '"ISO_6937-2-25";', '"GOST_19768-74";', '"ISO_8859-supp";', \ '"ISO_10367-box";', '"latin-lap";', '"JIS_X0212-1990";', '"DS_2089";', '"us-dk";', '"dk-us";', '"KSC5636";', '"UNICODE-1-1-UTF-7";', '"ISO-2022-CN";', \ '"ISO-2022-CN-EXT";', '"ISO-8859-13";', '"ISO-8859-14";', '"ISO-8859-15";', '"ISO-8859-16";', '"GBK";', '"GB18030";', '"OSD_EBCDIC_DF04_15";', \ '"OSD_EBCDIC_DF03_IRV";', '"OSD_EBCDIC_DF04_1";', '"ISO-11548-1";', '"KZ-1048";', '"ISO-10646-UCS-2";', '"ISO-10646-UCS-4";', '"ISO-10646-UCS-Basic";', \ '"ISO-10646-Unicode-Latin1";', '"ISO-10646-J-1";', '"ISO-Unicode-IBM-1261";', '"ISO-Unicode-IBM-1268";', '"ISO-Unicode-IBM-1276";', \ '"ISO-Unicode-IBM-1264";', '"ISO-Unicode-IBM-1265";', '"UNICODE-1-1";', '"SCSU";', '"UTF-7";', '"UTF-16BE";', '"UTF-16LE";', '"UTF-16";', '"CESU-8";', \ '"UTF-32";', '"UTF-32BE";', '"UTF-32LE";', '"BOCU-1";', '"ISO-8859-1-Windows-3.0-Latin-1";', '"ISO-8859-1-Windows-3.1-Latin-1";', \ '"ISO-8859-2-Windows-Latin-2";', '"ISO-8859-9-Windows-Latin-5";', '"hp-roman8";', '"Adobe-Standard-Encoding";', '"Ventura-US";', \ '"Ventura-International";', '"DEC-MCS";', '"IBM850";', '"PC8-Danish-Norwegian";', '"IBM862";', '"PC8-Turkish";', '"IBM-Symbols";', '"IBM-Thai";', \ '"HP-Legal";', '"HP-Pi-font";', '"HP-Math8";', '"Adobe-Symbol-Encoding";', '"HP-DeskTop";', '"Ventura-Math";', '"Microsoft-Publishing";', \ '"Windows-31J";', '"GB2312";', '"Big5";', '"macintosh";', '"IBM037";', '"IBM038";', '"IBM273";', '"IBM274";', '"IBM275";', '"IBM277";', '"IBM278";', \ '"IBM280";', '"IBM281";', '"IBM284";', '"IBM285";', '"IBM290";', '"IBM297";', '"IBM420";', '"IBM423";', '"IBM424";', '"IBM437";', '"IBM500";', '"IBM851";', \ '"IBM852";', '"IBM855";', '"IBM857";', '"IBM860";', '"IBM861";', '"IBM863";', '"IBM864";', '"IBM865";', '"IBM868";', '"IBM869";', '"IBM870";', '"IBM871";', \ '"IBM880";', '"IBM891";', '"IBM903";', '"IBM904";', '"IBM905";', '"IBM918";', '"IBM1026";', '"EBCDIC-AT-DE";', '"EBCDIC-AT-DE-A";', '"EBCDIC-CA-FR";', \ '"EBCDIC-DK-NO";', '"EBCDIC-DK-NO-A";', '"EBCDIC-FI-SE";', '"EBCDIC-FI-SE-A";', '"EBCDIC-FR";', '"EBCDIC-IT";', '"EBCDIC-PT";', '"EBCDIC-ES";', \ '"EBCDIC-ES-A";', '"EBCDIC-ES-S";', '"EBCDIC-UK";', '"EBCDIC-US";', '"UNKNOWN-8BIT";', '"MNEMONIC";', '"MNEM";', '"VISCII";', '"VIQR";', '"KOI8-R";', \ '"HZ-GB-2312";', '"IBM866";', '"IBM775";', '"KOI8-U";', '"IBM00858";', '"IBM00924";', '"IBM01140";', '"IBM01141";', '"IBM01142";', '"IBM01143";', \ '"IBM01144";', '"IBM01145";', '"IBM01146";', '"IBM01147";', '"IBM01148";', '"IBM01149";', '"Big5-HKSCS";', '"IBM1047";', '"PTCP154";', '"Amiga-1251";', \ '"KOI7-switched";', '"BRF";', '"TSCII";', '"windows-1250";', '"windows-1251";', '"windows-1252";', '"windows-1253";', '"windows-1254";', '"windows-1255";', \ '"windows-1256";', '"windows-1257";', '"windows-1258";', '"TIS-620";'] elseif atrulename == 'namespace' let entered_atruleafter = matchstr(line, '.*@namespace\s\+\zs.*$') let values = ["url("] elseif atrulename == 'document' let entered_atruleafter = matchstr(line, '.*@document\s\+\zs.*$') let values = ["url(", "url-prefix(", "domain(", "regexp("] elseif atrulename == 'import' let entered_atruleafter = matchstr(line, '.*@import\s\+\zs.*$') if entered_atruleafter =~ "^[\"']" let filestart = matchstr(entered_atruleafter, '^.\zs.*') let files = split(glob(filestart.'*'), '\n') let values = map(copy(files), '"\"".v:val') elseif entered_atruleafter =~ "^url(" let filestart = matchstr(entered_atruleafter, "^url([\"']\\?\\zs.*") let files = split(glob(filestart.'*'), '\n') let values = map(copy(files), '"url(".v:val') else let values = ['"', 'url('] endif else return [] endif for m in values if m =~? '^'.entered_atruleafter if entered_atruleafter =~? '^"' && m =~? '^"' let m = m[1:] endif if b:after =~? '"' && stridx(m, '"') > -1 let m = m[0:stridx(m, '"')-1] endif call add(res, m) elseif m =~? entered_atruleafter if m =~? '^"' let m = m[1:] endif call add(res2, m) endif endfor return res + res2 endif let values = ["charset", "page", "media", "import", "font-face", "namespace", "supports", "keyframes", "viewport", "document"] let entered_atrule = matchstr(line, '.*@\zs[a-zA-Z-]*$') for m in values if m =~? '^'.entered_atrule call add(res, m .' ') elseif m =~? entered_atrule call add(res2, m .' ') endif endfor return res + res2 endif return [] endfunction if version < 700 finish endif function decada#Unit_Name () dict " {{{1 return substitute (substitute (expand ("%:t:r"), '__\|-', ".", "g"), '_$', "", '') endfunction decada#Unit_Name " }}}1 function decada#Make () dict " {{{1 let l:make_prg = substitute (g:self.Make_Command, '%<', self.Unit_Name(), '') let &errorformat = g:self.Error_Format let &makeprg = l:make_prg wall make copen set wrap wincmd W endfunction decada#Build " }}}1 function decada#Set_Session (...) dict " {{{1 if a:0 > 0 call ada#Switch_Session (a:1) elseif argc() == 0 && strlen (v:servername) > 0 call ada#Switch_Session ( \ expand('~')[0:-2] . ".vimfiles.session]decada_" . \ v:servername . ".vim") endif return endfunction decada#Set_Session " }}}1 function decada#New () " }}}1 let Retval = { \ 'Make' : function ('decada#Make'), \ 'Unit_Name' : function ('decada#Unit_Name'), \ 'Set_Session' : function ('decada#Set_Session'), \ 'Project_Dir' : '', \ 'Make_Command' : 'ACS COMPILE /Wait /Log /NoPreLoad /Optimize=Development /Debug %<', \ 'Error_Format' : '%+A%%ADAC-%t-%m,%C %#%m,%Zat line number %l in file %f,' . \ '%+I%%ada-I-%m,%C %#%m,%Zat line number %l in file %f'} return Retval endfunction decada#New " }}}1 finish " 1}}} if exists("g:loaded_getscript") finish endif let g:loaded_getscript= "v36" if &cp echoerr "GetLatestVimScripts is not vi-compatible; not loaded (you need to set nocp)" finish endif if v:version < 702 echohl WarningMsg echo "***warning*** this version of getscript needs vim 7.2" echohl Normal finish endif let s:keepcpo = &cpo set cpo&vim if !exists("g:getscript_cygwin") if has("win32") || has("win95") || has("win64") || has("win16") if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' let g:getscript_cygwin= 1 else let g:getscript_cygwin= 0 endif else let g:getscript_cygwin= 0 endif endif if !exists("g:GetLatestVimScripts_wget") if executable("wget") let g:GetLatestVimScripts_wget= "wget" elseif executable("curl") let g:GetLatestVimScripts_wget= "curl" else let g:GetLatestVimScripts_wget = 'echo "GetLatestVimScripts needs wget or curl"' let g:GetLatestVimScripts_options = "" endif endif if !exists("g:GetLatestVimScripts_options") if g:GetLatestVimScripts_wget == "wget" let g:GetLatestVimScripts_options= "-q -O" elseif g:GetLatestVimScripts_wget == "curl" let g:GetLatestVimScripts_options= "-s -O" else let g:GetLatestVimScripts_options= "" endif endif if !exists("g:GetLatestVimScripts_allowautoinstall") let g:GetLatestVimScripts_allowautoinstall= 1 endif if !exists("g:GetLatestVimScripts_scriptaddr") let g:GetLatestVimScripts_scriptaddr = 'http://vim.sourceforge.net/script.php?script_id=' endif let s:autoinstall= "" if g:GetLatestVimScripts_allowautoinstall if (has("win32") || has("gui_win32") || has("gui_win32s") || has("win16") || has("win64") || has("win32unix") || has("win95")) && &shell != "bash" let s:dotvim= "vimfiles" if !exists("g:GetLatestVimScripts_mv") let g:GetLatestVimScripts_mv= "ren" endif else let s:dotvim= ".vim" if !exists("g:GetLatestVimScripts_mv") let g:GetLatestVimScripts_mv= "mv" endif endif if exists("g:GetLatestVimScripts_autoinstalldir") && isdirectory(g:GetLatestVimScripts_autoinstalldir) let s:autoinstall= g:GetLatestVimScripts_autoinstalldir" elseif exists('$HOME') && isdirectory(expand("$HOME")."/".s:dotvim) let s:autoinstall= $HOME."/".s:dotvim endif endif com! -nargs=0 GetLatestVimScripts call getscript#GetLatestVimScripts() com! -nargs=0 GetScript call getscript#GetLatestVimScripts() silent! com -nargs=0 GLVS call getscript#GetLatestVimScripts() fun! getscript#GetLatestVimScripts() if executable(g:GetLatestVimScripts_wget) != 1 echoerr "GetLatestVimScripts needs ".g:GetLatestVimScripts_wget." which apparently is not available on your system" return endif if !exists("*fnameescape") echoerr "GetLatestVimScripts needs fnameescape() (provided by 7.1.299 or later)" return endif for datadir in split(&rtp,',') + [''] if isdirectory(datadir."/GetLatest") let datadir= datadir . "/GetLatest" break endif if filereadable(datadir."GetLatestVimScripts.dat") break endif endfor if datadir == "" echoerr 'Missing "GetLatest/" on your runtimepath - see :help glvs-dist-install' return endif if filewritable(datadir) != 2 echoerr "(getLatestVimScripts) Your ".datadir." isn't writable" return endif let datafile= datadir."/GetLatestVimScripts.dat" if !filereadable(datafile) echoerr "Your data file<".datafile."> isn't readable" return endif if !filewritable(datafile) echoerr "Your data file<".datafile."> isn't writable" return endif let eikeep = &ei let hlskeep = &hls let acdkeep = &acd set ei=all hls&vim noacd let origdir= getcwd() exe "cd ".fnameescape(substitute(datadir,'\','/','ge')) split exe "e ".fnameescape(substitute(datafile,'\','/','ge')) res 1000 let s:downloads = 0 let s:downerrors= 0 let lastline = line("$") let firstdir = substitute(&rtp,',.*$','','') let plugins = split(globpath(firstdir,"plugin/**/*.vim"),'\n') let plugins = plugins + split(globpath(firstdir,"AsNeeded/**/*.vim"),'\n') let foundscript = 0 for plugin in plugins $ exe "silent r ".fnameescape(plugin) exe "silent bwipe ".bufnr("#") while search('^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+','W') != 0 let depscript = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\d\+\s\+\d\+\s\+\(.*\)$','\1','e') let depscriptid = substitute(getline("."),'^"\s\+GetLatestVimScripts:\s\+\(\d\+\)\s\+.*$','\1','') let llp1 = lastline+1 let curline = line(".") let noai_script = substitute(depscript,'\s*:AutoInstall:\s*','','e') exe llp1 let srchline = search('^\s*'.depscriptid.'\s\+\d\+\s\+.*$','bW') if srchline == 0 let srchline= search('\<'.noai_script.'\>','bW') endif if srchline == 0 let keep_rega = @a let @a = substitute(getline(curline),'^"\s\+GetLatestVimScripts:\s\+','','') echomsg "Appending <".@a."> to ".datafile." for ".depscript exe lastline."put a" let @a = keep_rega let lastline = llp1 let curline = curline + 1 let foundscript = foundscript + 1 endif let curline = curline + 1 exe curline endwhile let llp1= lastline + 1 exe "silent! ".llp1.",$d" endfor if foundscript == 0 setlocal nomod endif setlocal lz 1 1 /^-----/,$g/^\s*\d/call s:GetOneScript() try silent! ?^-------? catch /^Vim\%((\a\+)\)\=:E114/ return endtry exe "norm! kz\" redraw! let s:msg = "" if s:downloads == 1 let s:msg = "Downloaded one updated script to <".datadir.">" elseif s:downloads == 2 let s:msg= "Downloaded two updated scripts to <".datadir.">" elseif s:downloads > 1 let s:msg= "Downloaded ".s:downloads." updated scripts to <".datadir.">" else let s:msg= "Everything was already current" endif if s:downerrors > 0 let s:msg= s:msg." (".s:downerrors." downloading errors)" endif echomsg s:msg if &mod silent! w! endif q! exe "cd ".fnameescape(substitute(origdir,'\','/','ge')) let &ei = eikeep let &hls = hlskeep let &acd = acdkeep setlocal nolz endfun fun! s:GetOneScript(...) let rega= @a let t_ti= &t_ti let t_te= &t_te let rs = &rs set t_ti= t_te= nors if a:0 >= 3 let scriptid = a:1 let srcid = a:2 let fname = a:3 let cmmnt = "" else let curline = getline(".") if curline =~ '^\s*#' let @a= rega return endif let parsepat = '^\s*\(\d\+\)\s\+\(\d\+\)\s\+\(.\{-}\)\(\s*#.*\)\=$' try let scriptid = substitute(curline,parsepat,'\1','e') catch /^Vim\%((\a\+)\)\=:E486/ let scriptid= 0 endtry try let srcid = substitute(curline,parsepat,'\2','e') catch /^Vim\%((\a\+)\)\=:E486/ let srcid= 0 endtry try let fname= substitute(curline,parsepat,'\3','e') catch /^Vim\%((\a\+)\)\=:E486/ let fname= "" endtry try let cmmnt= substitute(curline,parsepat,'\4','e') catch /^Vim\%((\a\+)\)\=:E486/ let cmmnt= "" endtry endif if scriptid == 0 || srcid == 0 let @a= rega return endif let doautoinstall= 0 if fname =~ ":AutoInstall:" let aicmmnt= substitute(fname,'\s\+:AutoInstall:\s\+',' ','') if s:autoinstall != "" let doautoinstall = g:GetLatestVimScripts_allowautoinstall endif else let aicmmnt= fname endif exe "norm z\" redraw! echo 'considering <'.aicmmnt.'> scriptid='.scriptid.' srcid='.srcid let scriptaddr = g:GetLatestVimScripts_scriptaddr.scriptid let tmpfile = tempname() let v:errmsg = "" let itry= 1 while itry <= 3 if has("win32") || has("win16") || has("win95") new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile).' '.shellescape(scriptaddr)|bw! else exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(tmpfile)." ".shellescape(scriptaddr) endif if itry == 1 exe "silent vsplit ".fnameescape(tmpfile) else silent! e % endif setlocal bh=wipe silent! 1 let findpkg= search('Click on the package to download','W') if findpkg > 0 break endif let itry= itry + 1 endwhile if findpkg == 0 || itry >= 4 silent q! call delete(tmpfile) let &t_ti = t_ti let &t_te = t_te let &rs = rs let s:downerrors = s:downerrors + 1 echomsg "***warning*** couldn'".'t find "Click on the package..." in description page for <'.aicmmnt.">" let @a= rega return endif let findsrcid= search('src_id=','W') if findsrcid == 0 silent q! call delete(tmpfile) let &t_ti = t_ti let &t_te = t_te let &rs = rs let s:downerrors = s:downerrors + 1 echomsg "***warning*** couldn'".'t find "src_id=" in description page for <'.aicmmnt.">" let @a= rega return endif let srcidpat = '^\s*\([^<]\+\)<.*$' let latestsrcid= substitute(getline("."),srcidpat,'\1','') let sname = substitute(getline("."),srcidpat,'\2','') " script name actually downloaded silent q! call delete(tmpfile) let srcid = srcid + 0 let latestsrcid = latestsrcid + 0 if latestsrcid > srcid let s:downloads= s:downloads + 1 if sname == bufname("%") let sname= "NEW_".sname endif echomsg ".downloading new <".sname.">" if has("win32") || has("win16") || has("win95") new|exe "silent r!".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id='.latestsrcid)|q else exe "silent !".g:GetLatestVimScripts_wget." ".g:GetLatestVimScripts_options." ".shellescape(sname)." ".shellescape('http://vim.sourceforge.net/scripts/download_script.php?src_id=').latestsrcid endif if doautoinstall if filereadable(sname) exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".shellescape(s:autoinstall) let curdir = fnameescape(substitute(getcwd(),'\','/','ge')) let installdir= curdir."/Installed" if !isdirectory(installdir) call mkdir(installdir) endif exe "cd ".fnameescape(s:autoinstall) let firstdir= substitute(&rtp,',.*$','','') let pname = substitute(sname,'\..*','.vim','') if filereadable(firstdir.'/AsNeeded/'.pname) let tgtdir= "AsNeeded" else let tgtdir= "plugin" endif if sname =~ '\.bz2$' exe "sil !bunzip2 ".shellescape(sname) let sname= substitute(sname,'\.bz2$','','') elseif sname =~ '\.gz$' exe "sil !gunzip ".shellescape(sname) let sname= substitute(sname,'\.gz$','','') elseif sname =~ '\.xz$' exe "sil !unxz ".shellescape(sname) let sname= substitute(sname,'\.xz$','','') else endif if sname =~ '\.zip$' exe "silent !unzip -o ".shellescape(sname) elseif sname =~ '\.tar$' exe "silent !tar -xvf ".shellescape(sname) elseif sname =~ '\.tgz$' exe "silent !tar -zxvf ".shellescape(sname) elseif sname =~ '\.taz$' exe "silent !tar -Zxvf ".shellescape(sname) elseif sname =~ '\.tbz$' exe "silent !tar -jxvf ".shellescape(sname) elseif sname =~ '\.txz$' exe "silent !tar -Jxvf ".shellescape(sname) elseif sname =~ '\.vba$' silent 1split if exists("g:vimball_home") let oldvimballhome= g:vimball_home endif let g:vimball_home= s:autoinstall exe "silent e ".fnameescape(sname) silent so % silent q if exists("oldvimballhome") let g:vimball_home= oldvimballhome else unlet g:vimball_home endif else endif if sname =~ '.vim$' exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".tgtdir else exe "silent !".g:GetLatestVimScripts_mv." ".shellescape(sname)." ".installdir endif if tgtdir != "plugin" exe "silent !".g:GetLatestVimScripts_mv." plugin/".shellescape(pname)." ".tgtdir endif let docdir= substitute(&rtp,',.*','','e')."/doc" exe "helptags ".fnameescape(docdir) exe "cd ".fnameescape(curdir) endif if fname !~ ':AutoInstall:' let modline=scriptid." ".latestsrcid." :AutoInstall: ".fname.cmmnt else let modline=scriptid." ".latestsrcid." ".fname.cmmnt endif else let modline=scriptid." ".latestsrcid." ".fname.cmmnt endif call setline(line("."),modline) endif let &t_ti = t_ti let &t_te = t_te let &rs = rs let @a = rega endfun let &cpo= s:keepcpo unlet s:keepcpo if version < 700 finish endif function gnat#Make () dict " {{{1 let &l:makeprg = self.Get_Command('Make') let &l:errorformat = self.Error_Format wall make copen set wrap wincmd W endfunction gnat#Make " }}}1 function gnat#Pretty () dict " {{{1 execute "!" . self.Get_Command('Pretty') endfunction gnat#Make " }}}1 function gnat#Find () dict " {{{1 execute "!" . self.Get_Command('Find') endfunction gnat#Find " }}}1 function gnat#Tags () dict " {{{1 execute "!" . self.Get_Command('Tags') edit tags call gnat#Insert_Tags_Header () update quit endfunction gnat#Tags " }}}1 function gnat#Set_Project_File (...) dict " {{{1 if a:0 > 0 let self.Project_File = a:1 if ! filereadable (self.Project_File) let self.Project_File = findfile ( \ fnamemodify (self.Project_File, ':r'), \ $ADA_PROJECT_PATH, \ 1) endif elseif strlen (self.Project_File) > 0 let self.Project_File = browse (0, 'GNAT Project File?', '', self.Project_File) elseif expand ("%:e") == 'gpr' let self.Project_File = browse (0, 'GNAT Project File?', '', expand ("%:e")) else let self.Project_File = browse (0, 'GNAT Project File?', '', 'default.gpr') endif if strlen (v:this_session) > 0 execute 'mksession! ' . v:this_session endif return endfunction gnat#Set_Project_File " }}}1 function gnat#Get_Command (Command) dict " {{{1 let l:Command = eval ('self.' . a:Command . '_Command') return eval (l:Command) endfunction gnat#Get_Command " }}}1 function gnat#Set_Session (...) dict " {{{1 if argc() == 1 && fnamemodify (argv(0), ':e') == 'gpr' call self.Set_Project_File (argv(0)) elseif strlen (v:servername) > 0 call self.Set_Project_File (v:servername . '.gpr') endif endfunction gnat#Set_Session " }}}1 function gnat#New () " {{{1 let l:Retval = { \ 'Make' : function ('gnat#Make'), \ 'Pretty' : function ('gnat#Pretty'), \ 'Find' : function ('gnat#Find'), \ 'Tags' : function ('gnat#Tags'), \ 'Set_Project_File' : function ('gnat#Set_Project_File'), \ 'Set_Session' : function ('gnat#Set_Session'), \ 'Get_Command' : function ('gnat#Get_Command'), \ 'Project_File' : '', \ 'Make_Command' : '"gnat make -P " . self.Project_File . " -F -gnatef "', \ 'Pretty_Command' : '"gnat pretty -P " . self.Project_File . " "', \ 'Find_Program' : '"gnat find -P " . self.Project_File . " -F "', \ 'Tags_Command' : '"gnat xref -P " . self.Project_File . " -v *.AD*"', \ 'Error_Format' : '%f:%l:%c: %trror: %m,' . \ '%f:%l:%c: %tarning: %m,' . \ '%f:%l:%c: (%ttyle) %m'} return l:Retval endfunction gnat#New " }}}1 function gnat#Insert_Tags_Header () " {{{1 1insert !_TAG_FILE_FORMAT 1 /extended format; --format=1 will not append ;" to lines/ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ !_TAG_PROGRAM_AUTHOR AdaCore /info@adacore.com/ !_TAG_PROGRAM_NAME gnatxref // !_TAG_PROGRAM_URL http://www.adacore.com /official site/ !_TAG_PROGRAM_VERSION 5.05w // . return endfunction gnat#Insert_Tags_Header " }}}1 finish " 1}}} fun s:check(cmd) let name = substitute(a:cmd, '\(\S*\).*', '\1', '') if !exists("s:have_" . name) let e = executable(name) if e < 0 let r = system(name . " --version") let e = (r !~ "not found" && r != "") endif exe "let s:have_" . name . "=" . e endif exe "return s:have_" . name endfun fun s:set_compression(line) let l:cm = char2nr(a:line[2]) if l:cm == 8 let l:xfl = char2nr(a:line[8]) if l:xfl == 2 let b:gzip_comp_arg = "-9" elseif l:xfl == 4 let b:gzip_comp_arg = "-1" endif endif endfun fun gzip#read(cmd) if !s:check(a:cmd) return endif silent! unlet b:gzip_comp_arg if a:cmd[0] == 'g' call s:set_compression(getline(1)) endif let pm_save = &pm set pm= let cpo_save = &cpo set cpo-=a cpo-=A let ma_save = &ma setlocal ma let write_save = &write set write if has("folding") let fen_save = &fen setlocal nofen endif let empty = line("'[") == 1 && line("']") == line("$") let tmp = tempname() let tmpe = tmp . "." . expand(":e") if exists('*fnameescape') let tmp_esc = fnameescape(tmp) let tmpe_esc = fnameescape(tmpe) else let tmp_esc = escape(tmp, ' ') let tmpe_esc = escape(tmpe, ' ') endif execute "silent '[,']w " . tmpe_esc call system(a:cmd . " " . s:escape(tmpe)) if !filereadable(tmp) echoerr "Error: Could not read uncompressed file" let ok = 0 else let ok = 1 let l = line("'[") - 1 if exists(":lockmarks") lockmarks '[,']d _ else '[,']d _ endif setlocal nobin if exists(":lockmarks") if empty execute "silent lockmarks " . l . "r ++edit " . tmp_esc else execute "silent lockmarks " . l . "r " . tmp_esc endif else execute "silent " . l . "r " . tmp_esc endif if empty silent $delete _ 1 endif call delete(tmp) silent! exe "bwipe " . tmp_esc silent! exe "bwipe " . tmpe_esc endif let b:uncompressOk = ok let &pm = pm_save let &cpo = cpo_save let &l:ma = ma_save let &write = write_save if has("folding") let &l:fen = fen_save endif if ok && empty if exists('*fnameescape') let fname = fnameescape(expand("%:r")) else let fname = escape(expand("%:r"), " \t\n*?[{`$\\%#'\"|!<") endif if &verbose >= 8 execute "doau BufReadPost " . fname else execute "silent! doau BufReadPost " . fname endif endif endfun fun gzip#write(cmd) if exists('b:uncompressOk') && !b:uncompressOk echomsg "Not compressing file because uncompress failed; reset b:uncompressOk to compress anyway" elseif s:check(a:cmd) let nm = resolve(expand("")) let nmt = s:tempname(nm) if rename(nm, nmt) == 0 if exists("b:gzip_comp_arg") call system(a:cmd . " " . b:gzip_comp_arg . " -- " . s:escape(nmt)) else call system(a:cmd . " -- " . s:escape(nmt)) endif call rename(nmt . "." . expand(":e"), nm) endif endif endfun fun gzip#appre(cmd) if s:check(a:cmd) let nm = expand("") silent! unlet b:gzip_comp_arg if a:cmd[0] == 'g' call s:set_compression(readfile(nm, "b", 1)[0]) endif let nmt = expand(":p:h") . "/X~=@l9q5" let nmte = nmt . "." . expand(":e") if rename(nm, nmte) == 0 if &patchmode != "" && getfsize(nm . &patchmode) == -1 call system(a:cmd . " -c -- " . s:escape(nmte) . " > " . s:escape(nmt)) call rename(nmte, nm . &patchmode) else call system(a:cmd . " -- " . s:escape(nmte)) endif call rename(nmt, nm) endif endif endfun fun s:tempname(name) let fn = fnamemodify(a:name, ":r") if !filereadable(fn) && !isdirectory(fn) return fn endif return fnamemodify(a:name, ":p:h") . "/X~=@l9q5" endfun fun s:escape(name) if exists("*shellescape") return shellescape(a:name) endif return "'" . a:name . "'" endfun let b:completingLangExtension = 0 let b:completingOptionsGHC = 0 let b:completingModule = 0 function! haskellcomplete#Complete(findstart, base) if a:findstart let l:line = getline('.') let l:start = col('.') - 1 if l:line =~ '^\s*{-#\s*LANGUAGE.*' while l:start >= 0 && l:line[l:start - 1] !~ '[, ]' let l:start -= 1 endwhile let b:completingLangExtension = 1 return l:start elseif l:line =~ '^\s*{-#\s*OPTIONS_GHC.*' while l:start >= 0 && l:line[l:start - 1] !~ '[, ]' let l:start -= 1 endwhile let b:completingOptionsGHC = 1 return l:start elseif l:line =~ '^\s*import\s*.*' while l:start >= 0 && l:line[l:start - 1] !~ ' ' let l:start -= 1 endwhile let b:completingModule = 1 return l:start endif return start endif if b:completingLangExtension if a:base ==? "" return s:langExtensions else let l:matches = [] for extension in s:langExtensions if extension =~? '^' . a:base call add(l:matches, extension) endif endfor return l:matches endif elseif b:completingOptionsGHC if a:base ==? "" return s:optionsGHC else let l:matches = [] for flag in s:optionsGHC if flag =~? '^' . a:base call add(l:matches, flag) endif endfor return l:matches endif elseif b:completingModule if a:base ==? "" return s:commonModules else let l:matches = [] for module in s:commonModules if module =~? '^' . a:base call add(l:matches, module) endif endfor return l:matches endif endif return -1 endfunction let s:langExtensions = \ [ "OverlappingInstances" \ , "UndecidableInstances" \ , "IncoherentInstances" \ , "DoRec" \ , "RecursiveDo" \ , "ParallelListComp" \ , "MultiParamTypeClasses" \ , "MonomorphismRestriction" \ , "FunctionalDependencies" \ , "Rank2Types" \ , "RankNTypes" \ , "PolymorphicComponents" \ , "ExistentialQuantification" \ , "ScopedTypeVariables" \ , "PatternSignatures" \ , "ImplicitParams" \ , "FlexibleContexts" \ , "FlexibleInstances" \ , "EmptyDataDecls" \ , "CPP" \ , "KindSignatures" \ , "BangPatterns" \ , "TypeSynonymInstances" \ , "TemplateHaskell" \ , "ForeignFunctionInterface" \ , "Arrows" \ , "Generics" \ , "ImplicitPrelude" \ , "NamedFieldPuns" \ , "PatternGuards" \ , "GeneralizedNewtypeDeriving" \ , "ExtensibleRecords" \ , "RestrictedTypeSynonyms" \ , "HereDocuments" \ , "MagicHash" \ , "TypeFamilies" \ , "StandaloneDeriving" \ , "UnicodeSyntax" \ , "UnliftedFFITypes" \ , "InterruptibleFFI" \ , "CApiFFI" \ , "LiberalTypeSynonyms" \ , "TypeOperators" \ , "RecordWildCards" \ , "RecordPuns" \ , "DisambiguateRecordFields" \ , "TraditionalRecordSyntax" \ , "OverloadedStrings" \ , "GADTs" \ , "GADTSyntax" \ , "MonoPatBinds" \ , "RelaxedPolyRec" \ , "ExtendedDefaultRules" \ , "UnboxedTuples" \ , "DeriveDataTypeable" \ , "DeriveGeneric" \ , "DefaultSignatures" \ , "InstanceSigs" \ , "ConstrainedClassMethods" \ , "PackageImports" \ , "ImpredicativeTypes" \ , "NewQualifiedOperators" \ , "PostfixOperators" \ , "QuasiQuotes" \ , "TransformListComp" \ , "MonadComprehensions" \ , "ViewPatterns" \ , "XmlSyntax" \ , "RegularPatterns" \ , "TupleSections" \ , "GHCForeignImportPrim" \ , "NPlusKPatterns" \ , "DoAndIfThenElse" \ , "MultiWayIf" \ , "LambdaCase" \ , "RebindableSyntax" \ , "ExplicitForAll" \ , "DatatypeContexts" \ , "MonoLocalBinds" \ , "DeriveFunctor" \ , "DeriveTraversable" \ , "DeriveFoldable" \ , "NondecreasingIndentation" \ , "SafeImports" \ , "Safe" \ , "Trustworthy" \ , "Unsafe" \ , "ConstraintKinds" \ , "PolyKinds" \ , "DataKinds" \ , "ParallelArrays" \ , "RoleAnnotations" \ , "OverloadedLists" \ , "EmptyCase" \ , "AutoDeriveTypeable" \ , "NegativeLiterals" \ , "BinaryLiterals" \ , "NumDecimals" \ , "NullaryTypeClasses" \ , "ExplicitNamespaces" \ , "AllowAmbiguousTypes" \ , "JavaScriptFFI" \ , "PatternSynonyms" \ , "PartialTypeSignatures" \ , "NamedWildCards" \ , "DeriveAnyClass" \ , "DeriveLift" \ , "StaticPointers" \ , "StrictData" \ , "Strict" \ , "ApplicativeDo" \ , "DuplicateRecordFields" \ , "TypeApplications" \ , "TypeInType" \ , "UndecidableSuperClasses" \ , "MonadFailDesugaring" \ , "TemplateHaskellQuotes" \ , "OverloadedLabels" \ , "TypeFamilyDependencies" \ , "DerivingStrategies" \ , "UnboxedSums" \ , "HexFloatLiterals" \ ] let s:optionsGHC = \ [ "-n" \ , "-v" \ , "-vn" \ , "-c" \ , "-hcsuf" \ , "-hidir" \ , "-hisuf" \ , "-o" \ , "-odir" \ , "-ohi" \ , "-osuf" \ , "-stubdir" \ , "-outputdir" \ , "-keep-hc-file" \ , "-keep-llvm-file" \ , "-keep-s-file" \ , "-keep-raw-s-file" \ , "-keep-tmp-files" \ , "-tmpdir" \ , "-ddump-hi" \ , "-ddump-hi-diffs" \ , "-ddump-minimal-imports" \ , "-fforce-recomp" \ , "-fno-force-recomp" \ , "-fbreak-on-exception" \ , "-fno-break-on-exception" \ , "-fbreak-on-error" \ , "-fno-break-on-error" \ , "-fprint-evld-with-show" \ , "-fno-print-evld-with-show" \ , "-fprint-bind-result" \ , "-fno-print-bind-result" \ , "-fno-print-bind-contents" \ , "-fno-implicit-import-qualified" \ , "-package-name" \ , "-no-auto-link-packages" \ , "-fglasgow-exts" \ , "-fno-glasgow-exts" \ , "-XOverlappingInstances" \ , "-XNoOverlappingInstances" \ , "-XIncoherentInstances" \ , "-XNoIncoherentInstances" \ , "-XUndecidableInstances" \ , "-XNoUndecidableInstances" \ , "-fcontext-stack=Nn" \ , "-XArrows" \ , "-XNoArrows" \ , "-XDisambiguateRecordFields" \ , "-XNoDisambiguateRecordFields" \ , "-XForeignFunctionInterface" \ , "-XNoForeignFunctionInterface" \ , "-XGenerics" \ , "-XNoGenerics" \ , "-XImplicitParams" \ , "-XNoImplicitParams" \ , "-firrefutable-tuples" \ , "-fno-irrefutable-tuples" \ , "-XNoImplicitPrelude" \ , "-XImplicitPrelude" \ , "-XRebindableSyntax" \ , "-XNoRebindableSyntax" \ , "-XNoMonomorphismRestriction" \ , "-XMonomorphismRrestriction" \ , "-XNoNPlusKPatterns" \ , "-XNPlusKPatterns" \ , "-XNoMonoPatBinds" \ , "-XMonoPatBinds" \ , "-XRelaxedPolyRec" \ , "-XNoRelaxedPolyRec" \ , "-XExtendedDefaultRules" \ , "-XNoExtendedDefaultRules" \ , "-XOverloadedStrings" \ , "-XNoOverloadedStrings" \ , "-XGADTs" \ , "-XNoGADTs" \ , "-XTypeFamilies" \ , "-XNoTypeFamilies" \ , "-XScopedTypeVariables" \ , "-XNoScopedTypeVariables" \ , "-XMonoLocalBinds" \ , "-XNoMonoLocalBinds" \ , "-XTemplateHaskell" \ , "-XNoTemplateHaskell" \ , "-XQuasiQuotes" \ , "-XNoQuasiQuotes" \ , "-XBangPatterns" \ , "-XNoBangPatterns" \ , "-XCPP" \ , "-XNoCPP" \ , "-XPatternGuards" \ , "-XNoPatternGuards" \ , "-XViewPatterns" \ , "-XNoViewPatterns" \ , "-XUnicodeSyntax" \ , "-XNoUnicodeSyntax" \ , "-XMagicHash" \ , "-XNoMagicHash" \ , "-XNewQualifiedOperators" \ , "-XNoNewQualifiedOperators" \ , "-XExplicitForALl" \ , "-XNoExplicitForAll" \ , "-XPolymorphicComponents" \ , "-XNoPolymorphicComponents" \ , "-XRank2Types" \ , "-XNoRank2Types" \ , "-XRankNTypes" \ , "-XNoRankNTypes" \ , "-XImpredicativeTypes" \ , "-XNoImpredicativeTypes" \ , "-XExistentialQuantification" \ , "-XNoExistentialQuantification" \ , "-XKindSignatures" \ , "-XNoKindSignatures" \ , "-XEmptyDataDecls" \ , "-XNoEmptyDataDecls" \ , "-XParallelListComp" \ , "-XNoParallelListComp" \ , "-XTransformListComp" \ , "-XNoTransformListComp" \ , "-XUnliftedFFITypes" \ , "-XNoUnliftedFFITypes" \ , "-XLiberalTypeSynonyms" \ , "-XNoLiberalTypeSynonyms" \ , "-XTypeOperators" \ , "-XNoTypeOperators" \ , "-XDoRec" \ , "-XNoDoRec" \ , "-XRecursiveDo" \ , "-XNoRecursiveDo" \ , "-XPArr" \ , "-XNoPArr" \ , "-XRecordWildCards" \ , "-XNoRecordWildCards" \ , "-XNamedFieldPuns" \ , "-XNoNamedFieldPuns" \ , "-XDisambiguateRecordFields" \ , "-XNoDisambiguateRecordFields" \ , "-XUnboxedTuples" \ , "-XNoUnboxedTuples" \ , "-XStandaloneDeriving" \ , "-XNoStandaloneDeriving" \ , "-XDeriveDataTypeable" \ , "-XNoDeriveDataTypeable" \ , "-XGeneralizedNewtypeDeriving" \ , "-XNoGeneralizedNewtypeDeriving" \ , "-XTypeSynonymInstances" \ , "-XNoTypeSynonymInstances" \ , "-XFlexibleContexts" \ , "-XNoFlexibleContexts" \ , "-XFlexibleInstances" \ , "-XNoFlexibleInstances" \ , "-XConstrainedClassMethods" \ , "-XNoConstrainedClassMethods" \ , "-XMultiParamTypeClasses" \ , "-XNoMultiParamTypeClasses" \ , "-XFunctionalDependencies" \ , "-XNoFunctionalDependencies" \ , "-XPackageImports" \ , "-XNoPackageImports" \ , "-W" \ , "-w" \ , "-w" \ , "-Wall" \ , "-w" \ , "-Werror" \ , "-Wwarn" \ , "-Wwarn" \ , "-Werror" \ , "-fwarn-unrecognised-pragmas" \ , "-fno-warn-unrecognised-pragmas" \ , "-fwarn-warnings-deprecations" \ , "-fno-warn-warnings-deprecations" \ , "-fwarn-deprecated-flags" \ , "-fno-warn-deprecated-flags" \ , "-fwarn-duplicate-exports" \ , "-fno-warn-duplicate-exports" \ , "-fwarn-hi-shadowing" \ , "-fno-warn-hi-shadowing" \ , "-fwarn-implicit-prelude" \ , "-fno-warn-implicit-prelude" \ , "-fwarn-incomplete-patterns" \ , "-fno-warn-incomplete-patterns" \ , "-fwarn-incomplete-record-updates" \ , "-fno-warn-incomplete-record-updates" \ , "-fwarn-lazy-unlifted-bindings" \ , "-fno-warn-lazy-unlifted-bindings" \ , "-fwarn-missing-fields" \ , "-fno-warn-missing-fields" \ , "-fwarn-missing-import-lists" \ , "-fnowarn-missing-import-lists" \ , "-fwarn-missing-methods" \ , "-fno-warn-missing-methods" \ , "-fwarn-missing-signatures" \ , "-fno-warn-missing-signatures" \ , "-fwarn-name-shadowing" \ , "-fno-warn-name-shadowing" \ , "-fwarn-orphans" \ , "-fno-warn-orphans" \ , "-fwarn-overlapping-patterns" \ , "-fno-warn-overlapping-patterns" \ , "-fwarn-tabs" \ , "-fno-warn-tabs" \ , "-fwarn-type-defaults" \ , "-fno-warn-type-defaults" \ , "-fwarn-monomorphism-restriction" \ , "-fno-warn-monomorphism-restriction" \ , "-fwarn-unused-binds" \ , "-fno-warn-unused-binds" \ , "-fwarn-unused-imports" \ , "-fno-warn-unused-imports" \ , "-fwarn-unused-matches" \ , "-fno-warn-unused-matches" \ , "-fwarn-unused-do-bind" \ , "-fno-warn-unused-do-bind" \ , "-fwarn-wrong-do-bind" \ , "-fno-warn-wrong-do-bind" \ , "-O" \ , "-O0" \ , "-On" \ , "-O0" \ , "-fcase-merge" \ , "-fno-case-merge" \ , "-fmethod-sharing" \ , "-fno-method-sharing" \ , "-fdo-eta-reduction" \ , "-fno-do-eta-reduction" \ , "-fdo-lambda-eta-expansion" \ , "-fno-do-lambda-eta-expansion" \ , "-fexcess-precision" \ , "-fno-excess-precision" \ , "-fignore-asserts" \ , "-fno-ignore-asserts" \ , "-fignore-interface-pragmas" \ , "-fno-ignore-interface-pragmas" \ , "-fomit-interface-pragmas" \ , "-fno-omit-interface-pragmas" \ , "-fsimplifier-phases" \ , "-fmax-simplifier-iterations" \ , "-fcse" \ , "-fno-cse" \ , "-fspecialise" \ , "-fno-specialise" \ , "-ffull-laziness" \ , "-fno-full-laziness" \ , "-ffloat-in" \ , "-fno-float-in" \ , "-fenable-rewrite-rules" \ , "-fno-enable-rewrite-rules" \ , "-fstrictness" \ , "-fno-strictness" \ , "-fstrictness=before=n" \ , "-fspec-constr" \ , "-fno-spec-constr" \ , "-fliberate-case" \ , "-fno-liberate-case" \ , "-fstatic-argument-transformation" \ , "-fno-static-argument-transformation" \ , "-funbox-strict-fields" \ , "-fno-unbox-strict-fields" \ , "-feager-blackholing" \ , "-auto" \ , "-no-auto" \ , "-auto-all" \ , "-no-auto-all" \ , "-caf-all" \ , "-no-caf-all" \ , "-hpcdir" \ , "-F" \ , "-cpp" \ , "-Dsymbol[=value]" \ , "-Usymbol" \ , "-Usymbol" \ , "-Idir" \ , "-fasm" \ , "-fvia-C" \ , "-fvia-C" \ , "-fasm" \ , "-fllvm" \ , "-fasm" \ , "-fno-code" \ , "-fbyte-code" \ , "-fobject-code" \ , "-shared" \ , "-dynamic" \ , "-framework" \ , "-framework-path" \ , "-llib" \ , "-Ldir" \ , "-main-is" \ , "--mk-dll" \ , "-no-hs-main" \ , "-rtsopts," \ , "-with-rtsopts=opts" \ , "-no-link" \ , "-split-objs" \ , "-fno-gen-manifest" \ , "-fno-embed-manifest" \ , "-fno-shared-implib" \ , "-dylib-install-name" \ , "-pgmL" \ , "-pgmP" \ , "-pgmc" \ , "-pgmm" \ , "-pgms" \ , "-pgma" \ , "-pgml" \ , "-pgmdll" \ , "-pgmF" \ , "-pgmwindres" \ , "-optL" \ , "-optP" \ , "-optF" \ , "-optc" \ , "-optlo" \ , "-optlc" \ , "-optm" \ , "-opta" \ , "-optl" \ , "-optdll" \ , "-optwindres" \ , "-msse2" \ , "-monly-[432]-regs" \ , "-fext-core" \ , "-dcore-lint" \ , "-ddump-asm" \ , "-ddump-bcos" \ , "-ddump-cmm" \ , "-ddump-cpranal" \ , "-ddump-cse" \ , "-ddump-deriv" \ , "-ddump-ds" \ , "-ddump-flatC" \ , "-ddump-foreign" \ , "-ddump-hpc" \ , "-ddump-inlinings" \ , "-ddump-llvm" \ , "-ddump-occur-anal" \ , "-ddump-opt-cmm" \ , "-ddump-parsed" \ , "-ddump-prep" \ , "-ddump-rn" \ , "-ddump-rules" \ , "-ddump-simpl" \ , "-ddump-simpl-phases" \ , "-ddump-simpl-iterations" \ , "-ddump-spec" \ , "-ddump-splices" \ , "-ddump-stg" \ , "-ddump-stranal" \ , "-ddump-tc" \ , "-ddump-types" \ , "-ddump-worker-wrapper" \ , "-ddump-if-trace" \ , "-ddump-tc-trace" \ , "-ddump-rn-trace" \ , "-ddump-rn-stats" \ , "-ddump-simpl-stats" \ , "-dsource-stats" \ , "-dcmm-lint" \ , "-dstg-lint" \ , "-dstg-stats" \ , "-dverbose-core2core" \ , "-dverbose-stg2stg" \ , "-dshow-passes" \ , "-dfaststring-stats" \ , "-fno-asm-mangling" \ , "-fno-ghci-sandbox" \ , "-fdiagnostics-color=" \ , "-fdiagnostics-show-caret" \ , "-fno-diagnostics-show-caret" \ , "-ferror-spans" \ , "-fhide-source-paths" \ , "-fprint-equality-relations" \ , "-fno-print-equality-relations" \ , "-fprint-expanded-synonyms" \ , "-fno-print-expanded-synonyms" \ , "-fprint-explicit-coercions" \ , "-fno-print-explicit-coercions" \ , "-fprint-explicit-foralls" \ , "-fno-print-explicit-foralls" \ , "-fprint-explicit-kinds" \ , "-fno-print-explicit-kinds" \ , "-fprint-explicit-runtime-rep" \ , "-fno-print-explicit-runtime-reps" \ , "-fprint-explicit-runtime-reps" \ , "-fno-print-explicit-runtime-reps" \ , "-fprint-potential-instances" \ , "-fno-print-potential-instances" \ , "-fprint-typechecker-elaboration" \ , "-fno-print-typechecker-elaboration" \ , "-fprint-unicode-syntax" \ , "-fno-print-unicode-syntax" \ , "-fshow-hole-constraints" \ , "-Rghc-timing" \ , "-v" \ , "-v" \ , "-F" \ , "-x" \ , "--exclude-module=" \ , "-ddump-mod-cycles" \ , "-dep-makefile" \ , "-dep-suffix" \ , "-dumpdir" \ , "-hcsuf" \ , "-hidir" \ , "-hisuf" \ , "-include-pkg-deps" \ , "-o" \ , "-odir" \ , "-ohi" \ , "-osuf" \ , "-outputdir" \ , "-stubdir" \ , "-keep-hc-file," \ , "-keep-hi-files" \ , "-no-keep-hi-files" \ , "-keep-llvm-file," \ , "-keep-o-files" \ , "-no-keep-o-files" \ , "-keep-s-file," \ , "-keep-tmp-files" \ , "-tmpdir" \ , "-i" \ , "-i[:]*" \ , "-ddump-hi" \ , "-ddump-hi-diffs" \ , "-ddump-minimal-imports" \ , "-fforce-recomp" \ , "-fno-force-recomp" \ , "-fignore-hpc-changes" \ , "-fno-ignore-hpc-changes" \ , "-fignore-optim-changes" \ , "-fno-ignore-optim-changes" \ , "-fbreak-on-error" \ , "-fno-break-on-error" \ , "-fbreak-on-exception" \ , "-fno-break-on-exception" \ , "-fghci-hist-size=" \ , "-flocal-ghci-history" \ , "-fno-local-ghci-history" \ , "-fprint-bind-result" \ , "-fno-print-bind-result" \ , "-fshow-loaded-modules" \ , "-ghci-script" \ , "-ignore-dot-ghci" \ , "-interactive-print" \ , "-clear-package-db" \ , "-distrust" \ , "-distrust-all-packages" \ , "-fpackage-trust" \ , "-global-package-db" \ , "-hide-all-packages" \ , "-hide-package" \ , "-ignore-package" \ , "-no-auto-link-packages" \ , "-no-global-package-db" \ , "-no-user-package-db" \ , "-package" \ , "-package-db" \ , "-package-env" \ , "-package-id" \ , "-this-unit-id" \ , "-trust" \ , "-user-package-db" \ , "-fdefer-out-of-scope-variables" \ , "-fno-defer-out-of-scope-variables" \ , "-fdefer-type-errors" \ , "-fno-defer-type-errors" \ , "-fdefer-typed-holes" \ , "-fno-defer-typed-holes" \ , "-fhelpful-errors" \ , "-fno-helpful-errors" \ , "-fmax-pmcheck-iterations=" \ , "-fshow-warning-groups" \ , "-fno-show-warning-groups" \ , "-W" \ , "-w" \ , "-w" \ , "-Wall" \ , "-w" \ , "-Wall-missed-specialisations" \ , "-Wno-all-missed-specialisations" \ , "-Wamp" \ , "-Wno-amp" \ , "-Wcompat" \ , "-Wno-compat" \ , "-Wcpp-undef" \ , "-Wdeferred-out-of-scope-variables" \ , "-Wno-deferred-out-of-scope-variables" \ , "-Wdeferred-type-errors" \ , "-Wno-deferred-type-errors" \ , "-Wdeprecated-flags" \ , "-Wno-deprecated-flags" \ , "-Wdeprecations" \ , "-Wno-deprecations" \ , "-Wdodgy-exports" \ , "-Wno-dodgy-exports" \ , "-Wdodgy-foreign-imports" \ , "-Wno-dodgy-foreign-import" \ , "-Wdodgy-imports" \ , "-Wno-dodgy-imports" \ , "-Wduplicate-constraints" \ , "-Wno-duplicate-constraints" \ , "-Wduplicate-exports" \ , "-Wno-duplicate-exports" \ , "-Wempty-enumerations" \ , "-Wno-empty-enumerations" \ , "-Werror" \ , "-Wwarn" \ , "-Weverything" \ , "-Whi-shadowing" \ , "-Wno-hi-shadowing" \ , "-Widentities" \ , "-Wno-identities" \ , "-Wimplicit-prelude" \ , "-Wno-implicit-prelude" \ , "-Wincomplete-patterns" \ , "-Wno-incomplete-patterns" \ , "-Wincomplete-record-updates" \ , "-Wno-incomplete-record-updates" \ , "-Wincomplete-uni-patterns" \ , "-Wno-incomplete-uni-patterns" \ , "-Winline-rule-shadowing" \ , "-Wno-inline-rule-shadowing" \ , "-Wmissed-specialisations" \ , "-Wno-missed-specialisations" \ , "-Wmissing-export-lists" \ , "-fnowarn-missing-export-lists" \ , "-Wmissing-exported-signatures" \ , "-Wno-missing-exported-signatures" \ , "-Wmissing-exported-sigs" \ , "-Wno-missing-exported-sigs" \ , "-Wmissing-fields" \ , "-Wno-missing-fields" \ , "-Wmissing-home-modules" \ , "-Wno-missing-home-modules" \ , "-Wmissing-import-lists" \ , "-fnowarn-missing-import-lists" \ , "-Wmissing-local-signatures" \ , "-Wno-missing-local-signatures" \ , "-Wmissing-local-sigs" \ , "-Wno-missing-local-sigs" \ , "-Wmissing-methods" \ , "-Wno-missing-methods" \ , "-Wmissing-monadfail-instances" \ , "-Wno-missing-monadfail-instances" \ , "-Wmissing-pattern-synonym-signatures" \ , "-Wno-missing-pattern-synonym-signatures" \ , "-Wmissing-signatures" \ , "-Wno-missing-signatures" \ , "-Wmonomorphism-restriction" \ , "-Wno-monomorphism-restriction" \ , "-Wname-shadowing" \ , "-Wno-name-shadowing" \ , "-Wno-compat" \ , "-Wcompat" \ , "-Wnoncanonical-monad-instances" \ , "-Wno-noncanonical-monad-instances" \ , "-Wnoncanonical-monadfail-instances" \ , "-Wno-noncanonical-monadfail-instances" \ , "-Wnoncanonical-monoid-instances" \ , "-Wno-noncanonical-monoid-instances" \ , "-Worphans" \ , "-Wno-orphans" \ , "-Woverflowed-literals" \ , "-Wno-overflowed-literals" \ , "-Woverlapping-patterns" \ , "-Wno-overlapping-patterns" \ , "-Wpartial-fields" \ , "-Wno-partial-fields" \ , "-Wpartial-type-signatures" \ , "-Wno-partial-type-signatures" \ , "-Wredundant-constraints" \ , "-Wno-redundant-constraints" \ , "-Wsafe" \ , "-Wno-safe" \ , "-Wsemigroup" \ , "-Wno-semigroup" \ , "-Wsimplifiable-class-constraints" \ , "-Wno-overlapping-patterns" \ , "-Wtabs" \ , "-Wno-tabs" \ , "-Wtrustworthy-safe" \ , "-Wno-safe" \ , "-Wtype-defaults" \ , "-Wno-type-defaults" \ , "-Wtyped-holes" \ , "-Wno-typed-holes" \ , "-Wunbanged-strict-patterns" \ , "-Wno-unbanged-strict-patterns" \ , "-Wunrecognised-pragmas" \ , "-Wno-unrecognised-pragmas" \ , "-Wunrecognised-warning-flags" \ , "-Wno-unrecognised-warning-flags" \ , "-Wunsafe" \ , "-Wno-unsafe" \ , "-Wunsupported-calling-conventions" \ , "-Wno-unsupported-calling-conventions" \ , "-Wunsupported-llvm-version" \ , "-Wno-monomorphism-restriction" \ , "-Wunticked-promoted-constructors" \ , "-Wno-unticked-promoted-constructors" \ , "-Wunused-binds" \ , "-Wno-unused-binds" \ , "-Wunused-do-bind" \ , "-Wno-unused-do-bind" \ , "-Wunused-foralls" \ , "-Wno-unused-foralls" \ , "-Wunused-imports" \ , "-Wno-unused-imports" \ , "-Wunused-local-binds" \ , "-Wno-unused-local-binds" \ , "-Wunused-matches" \ , "-Wno-unused-matches" \ , "-Wunused-pattern-binds" \ , "-Wno-unused-pattern-binds" \ , "-Wunused-top-binds" \ , "-Wno-unused-top-binds" \ , "-Wunused-type-patterns" \ , "-Wno-unused-type-patterns" \ , "-Wwarn" \ , "-Werror" \ , "-Wwarnings-deprecations" \ , "-Wno-warnings-deprecations" \ , "-Wwrong-do-bind" \ , "-Wno-wrong-do-bind" \ , "-O," \ , "-O0" \ , "-O0" \ , "-O2" \ , "-O0" \ , "-Odph" \ , "-fcall-arity" \ , "-fno-call-arity" \ , "-fcase-folding" \ , "-fno-case-folding" \ , "-fcase-merge" \ , "-fno-case-merge" \ , "-fcmm-elim-common-blocks" \ , "-fno-cmm-elim-common-blocks" \ , "-fcmm-sink" \ , "-fno-cmm-sink" \ , "-fcpr-anal" \ , "-fno-cpr-anal" \ , "-fcross-module-specialise" \ , "-fno-cross-module-specialise" \ , "-fcse" \ , "-fno-cse" \ , "-fdicts-cheap" \ , "-fno-dicts-cheap" \ , "-fdicts-strict" \ , "-fno-dicts-strict" \ , "-fdmd-tx-dict-sel" \ , "-fno-dmd-tx-dict-sel" \ , "-fdo-eta-reduction" \ , "-fno-do-eta-reduction" \ , "-fdo-lambda-eta-expansion" \ , "-fno-do-lambda-eta-expansion" \ , "-feager-blackholing" \ , "-fenable-rewrite-rules" \ , "-fno-enable-rewrite-rules" \ , "-fexcess-precision" \ , "-fno-excess-precision" \ , "-fexitification" \ , "-fno-exitification" \ , "-fexpose-all-unfoldings" \ , "-fno-expose-all-unfoldings" \ , "-ffloat-in" \ , "-fno-float-in" \ , "-ffull-laziness" \ , "-fno-full-laziness" \ , "-ffun-to-thunk" \ , "-fno-fun-to-thunk" \ , "-fignore-asserts" \ , "-fno-ignore-asserts" \ , "-fignore-interface-pragmas" \ , "-fno-ignore-interface-pragmas" \ , "-flate-dmd-anal" \ , "-fno-late-dmd-anal" \ , "-fliberate-case" \ , "-fno-liberate-case" \ , "-fliberate-case-threshold=" \ , "-fno-liberate-case-threshold" \ , "-fllvm-pass-vectors-in-regs" \ , "-fno-llvm-pass-vectors-in-regs" \ , "-floopification" \ , "-fno-loopification" \ , "-fmax-inline-alloc-size=" \ , "-fmax-inline-memcpy-insns=" \ , "-fmax-inline-memset-insns=" \ , "-fmax-relevant-binds=" \ , "-fno-max-relevant-bindings" \ , "-fmax-simplifier-iterations=" \ , "-fmax-uncovered-patterns=" \ , "-fmax-valid-substitutions=" \ , "-fno-max-valid-substitutions" \ , "-fmax-worker-args=" \ , "-fno-opt-coercion" \ , "-fno-pre-inlining" \ , "-fno-state-hack" \ , "-fomit-interface-pragmas" \ , "-fno-omit-interface-pragmas" \ , "-fomit-yields" \ , "-fno-omit-yields" \ , "-foptimal-applicative-do" \ , "-fno-optimal-applicative-do" \ , "-fpedantic-bottoms" \ , "-fno-pedantic-bottoms" \ , "-fregs-graph" \ , "-fno-regs-graph" \ , "-fregs-iterative" \ , "-fno-regs-iterative" \ , "-fsimpl-tick-factor=" \ , "-fsimplifier-phases=" \ , "-fsolve-constant-dicts" \ , "-fno-solve-constant-dicts" \ , "-fspec-constr" \ , "-fno-spec-constr" \ , "-fspec-constr-count=" \ , "-fno-spec-constr-count" \ , "-fspec-constr-keen" \ , "-fno-spec-constr-keen" \ , "-fspec-constr-threshold=" \ , "-fno-spec-constr-threshold" \ , "-fspecialise" \ , "-fno-specialise" \ , "-fspecialise-aggressively" \ , "-fno-specialise-aggressively" \ , "-fstatic-argument-transformation" \ , "-fno-static-argument-transformation" \ , "-fstg-cse" \ , "-fno-stg-cse" \ , "-fstrictness" \ , "-fno-strictness" \ , "-fstrictness-before=" \ , "-funbox-small-strict-fields" \ , "-fno-unbox-small-strict-fields" \ , "-funbox-strict-fields" \ , "-fno-unbox-strict-fields" \ , "-funfolding-creation-threshold=" \ , "-funfolding-dict-discount=" \ , "-funfolding-fun-discount=" \ , "-funfolding-keeness-factor=" \ , "-funfolding-use-threshold=" \ , "-fvectorisation-avoidance" \ , "-fno-vectorisation-avoidance" \ , "-fvectorise" \ , "-fno-vectorise" \ , "-fno-prof-auto" \ , "-fprof-auto" \ , "-fno-prof-cafs" \ , "-fprof-cafs" \ , "-fno-prof-count-entries" \ , "-fprof-count-entries" \ , "-fprof-auto" \ , "-fno-prof-auto" \ , "-fprof-auto-calls" \ , "-fno-prof-auto-calls" \ , "-fprof-auto-exported" \ , "-fno-prof-auto" \ , "-fprof-auto-top" \ , "-fno-prof-auto" \ , "-fprof-cafs" \ , "-fno-prof-cafs" \ , "-prof" \ , "-ticky" \ , "-fhpc" \ , "-cpp" \ , "-D[=]" \ , "-U" \ , "-I" \ , "-U" \ , "-dynamic" \ , "-too" \ , "-fasm" \ , "-fllvm" \ , "-fbyte-code" \ , "-fllvm" \ , "-fasm" \ , "-fno-code" \ , "-fobject-code" \ , "-fPIC" \ , "-fPIE" \ , "-fwrite-interface" \ , "-debug" \ , "-dylib-install-name" \ , "-dynamic" \ , "-dynload" \ , "-eventlog" \ , "-fno-embed-manifest" \ , "-fno-gen-manifest" \ , "-fno-shared-implib" \ , "-framework" \ , "-framework-path" \ , "-fwhole-archive-hs-libs" \ , "-L" \ , "-l" \ , "-main-is" \ , "-no-hs-main" \ , "-no-rtsopts-suggestions" \ , "-package" \ , "-pie" \ , "-rdynamic" \ , "-rtsopts[=]" \ , "-shared" \ , "-split-objs" \ , "-split-sections" \ , "-static" \ , "-staticlib" \ , "-threaded" \ , "-with-rtsopts=" \ , "-fplugin-opt=:" \ , "-fplugin=" \ , "-hide-all-plugin-packages" \ , "-plugin-package" \ , "-plugin-package-id" \ , "-pgma" \ , "-pgmc" \ , "-pgmdll" \ , "-pgmF" \ , "-pgmi" \ , "-pgmL" \ , "-pgml" \ , "-pgmlc" \ , "-pgmlibtool" \ , "-pgmlo" \ , "-pgmP" \ , "-pgms" \ , "-pgmwindres" \ , "-opta" \ , "-optc" \ , "-optdll" \ , "-optF" \ , "-opti" \ , "-optL" \ , "-optl" \ , "-optlc" \ , "-optlo" \ , "-optP" \ , "-optwindres" \ , "-msse2" \ , "-msse4.2" \ , "-dcmm-lint" \ , "-dcore-lint" \ , "-ddump-asm" \ , "-ddump-asm-expanded" \ , "-ddump-asm-liveness" \ , "-ddump-asm-native" \ , "-ddump-asm-regalloc" \ , "-ddump-asm-regalloc-stages" \ , "-ddump-asm-stats" \ , "-ddump-bcos" \ , "-ddump-cmm" \ , "-ddump-cmm-caf" \ , "-ddump-cmm-cbe" \ , "-ddump-cmm-cfg" \ , "-ddump-cmm-cps" \ , "-ddump-cmm-from-stg" \ , "-ddump-cmm-info" \ , "-ddump-cmm-proc" \ , "-ddump-cmm-procmap" \ , "-ddump-cmm-raw" \ , "-ddump-cmm-sink" \ , "-ddump-cmm-sp" \ , "-ddump-cmm-split" \ , "-ddump-cmm-switch" \ , "-ddump-cmm-verbose" \ , "-ddump-core-stats" \ , "-ddump-cse" \ , "-ddump-deriv" \ , "-ddump-ds" \ , "-ddump-ec-trace" \ , "-ddump-foreign" \ , "-ddump-if-trace" \ , "-ddump-inlinings" \ , "-ddump-json" \ , "-ddump-llvm" \ , "-ddump-occur-anal" \ , "-ddump-opt-cmm" \ , "-ddump-parsed" \ , "-ddump-parsed-ast" \ , "-ddump-prep" \ , "-ddump-rn" \ , "-ddump-rn-ast" \ , "-ddump-rn-stats" \ , "-ddump-rn-trace" \ , "-ddump-rule-firings" \ , "-ddump-rule-rewrites" \ , "-ddump-rules" \ , "-ddump-simpl" \ , "-ddump-simpl-iterations" \ , "-ddump-simpl-stats" \ , "-ddump-spec" \ , "-ddump-splices" \ , "-ddump-stg" \ , "-ddump-str-signatures" \ , "-ddump-stranal" \ , "-ddump-tc" \ , "-ddump-tc-ast" \ , "-ddump-tc-trace" \ , "-ddump-timings" \ , "-ddump-to-file" \ , "-ddump-types" \ , "-ddump-vect" \ , "-ddump-vt-trace" \ , "-ddump-worker-wrapper" \ , "-dfaststring-stats" \ , "-dinitial-unique=" \ , "-dno-debug-output" \ , "-ddebug-output" \ , "-dppr-case-as-let" \ , "-dppr-cols=" \ , "-dppr-debug" \ , "-dppr-user-length" \ , "-dshow-passes" \ , "-dstg-lint" \ , "-dsuppress-all" \ , "-dsuppress-coercions" \ , "-dsuppress-idinfo" \ , "-dsuppress-module-prefixes" \ , "-dsuppress-stg-free-vars" \ , "-dsuppress-ticks" \ , "-dsuppress-type-applications" \ , "-dsuppress-type-signatures" \ , "-dsuppress-unfoldings" \ , "-dsuppress-uniques" \ , "-dsuppress-var-kinds" \ , "-dth-dec-file=" \ , "-dunique-increment=" \ , "-dverbose-core2core" \ , "-dverbose-stg2stg" \ , "-falignment-sanitisation" \ , "-fcatch-bottoms" \ , "-fllvm-fill-undef-with-garbage" \ , "-g," \ , "-fexternal-interpreter" \ , "-fglasgow-exts" \ , "-fno-glasgow-exts" \ , "-ghcversion-file" \ , "-H" \ , "-j[]" \ ] let s:commonModules = \ [ "Distribution.Backpack" \ , "Distribution.Backpack.ComponentsGraph" \ , "Distribution.Backpack.Configure" \ , "Distribution.Backpack.ConfiguredComponent" \ , "Distribution.Backpack.DescribeUnitId" \ , "Distribution.Backpack.FullUnitId" \ , "Distribution.Backpack.LinkedComponent" \ , "Distribution.Backpack.ModSubst" \ , "Distribution.Backpack.ModuleShape" \ , "Distribution.Backpack.PreModuleShape" \ , "Distribution.CabalSpecVersion" \ , "Distribution.Compat.Binary" \ , "Distribution.Compat.CharParsing" \ , "Distribution.Compat.CreatePipe" \ , "Distribution.Compat.DList" \ , "Distribution.Compat.Directory" \ , "Distribution.Compat.Environment" \ , "Distribution.Compat.Exception" \ , "Distribution.Compat.Graph" \ , "Distribution.Compat.Internal.TempFile" \ , "Distribution.Compat.Lens" \ , "Distribution.Compat.Map.Strict" \ , "Distribution.Compat.Newtype" \ , "Distribution.Compat.Parsing" \ , "Distribution.Compat.Prelude.Internal" \ , "Distribution.Compat.ReadP" \ , "Distribution.Compat.Semigroup" \ , "Distribution.Compat.Stack" \ , "Distribution.Compat.Time" \ , "Distribution.Compiler" \ , "Distribution.FieldGrammar" \ , "Distribution.FieldGrammar.Class" \ , "Distribution.FieldGrammar.FieldDescrs" \ , "Distribution.FieldGrammar.Parsec" \ , "Distribution.FieldGrammar.Pretty" \ , "Distribution.InstalledPackageInfo" \ , "Distribution.License" \ , "Distribution.Make" \ , "Distribution.ModuleName" \ , "Distribution.Package" \ , "Distribution.PackageDescription" \ , "Distribution.PackageDescription.Check" \ , "Distribution.PackageDescription.Configuration" \ , "Distribution.PackageDescription.FieldGrammar" \ , "Distribution.PackageDescription.Parsec" \ , "Distribution.PackageDescription.PrettyPrint" \ , "Distribution.PackageDescription.Quirks" \ , "Distribution.PackageDescription.Utils" \ , "Distribution.ParseUtils" \ , "Distribution.Parsec.Class" \ , "Distribution.Parsec.Common" \ , "Distribution.Parsec.ConfVar" \ , "Distribution.Parsec.Field" \ , "Distribution.Parsec.FieldLineStream" \ , "Distribution.Parsec.Lexer" \ , "Distribution.Parsec.LexerMonad" \ , "Distribution.Parsec.Newtypes" \ , "Distribution.Parsec.ParseResult" \ , "Distribution.Parsec.Parser" \ , "Distribution.Pretty" \ , "Distribution.PrettyUtils" \ , "Distribution.ReadE" \ , "Distribution.SPDX" \ , "Distribution.SPDX.License" \ , "Distribution.SPDX.LicenseExceptionId" \ , "Distribution.SPDX.LicenseExpression" \ , "Distribution.SPDX.LicenseId" \ , "Distribution.SPDX.LicenseReference" \ , "Distribution.Simple" \ , "Distribution.Simple.Bench" \ , "Distribution.Simple.Build" \ , "Distribution.Simple.Build.Macros" \ , "Distribution.Simple.Build.PathsModule" \ , "Distribution.Simple.BuildPaths" \ , "Distribution.Simple.BuildTarget" \ , "Distribution.Simple.BuildToolDepends" \ , "Distribution.Simple.CCompiler" \ , "Distribution.Simple.Command" \ , "Distribution.Simple.Compiler" \ , "Distribution.Simple.Configure" \ , "Distribution.Simple.Doctest" \ , "Distribution.Simple.GHC" \ , "Distribution.Simple.GHCJS" \ , "Distribution.Simple.Haddock" \ , "Distribution.Simple.HaskellSuite" \ , "Distribution.Simple.Hpc" \ , "Distribution.Simple.Install" \ , "Distribution.Simple.InstallDirs" \ , "Distribution.Simple.JHC" \ , "Distribution.Simple.LHC" \ , "Distribution.Simple.LocalBuildInfo" \ , "Distribution.Simple.PackageIndex" \ , "Distribution.Simple.PreProcess" \ , "Distribution.Simple.PreProcess.Unlit" \ , "Distribution.Simple.Program" \ , "Distribution.Simple.Program.Ar" \ , "Distribution.Simple.Program.Builtin" \ , "Distribution.Simple.Program.Db" \ , "Distribution.Simple.Program.Find" \ , "Distribution.Simple.Program.GHC" \ , "Distribution.Simple.Program.HcPkg" \ , "Distribution.Simple.Program.Hpc" \ , "Distribution.Simple.Program.Internal" \ , "Distribution.Simple.Program.Ld" \ , "Distribution.Simple.Program.ResponseFile" \ , "Distribution.Simple.Program.Run" \ , "Distribution.Simple.Program.Script" \ , "Distribution.Simple.Program.Strip" \ , "Distribution.Simple.Program.Types" \ , "Distribution.Simple.Register" \ , "Distribution.Simple.Setup" \ , "Distribution.Simple.SrcDist" \ , "Distribution.Simple.Test" \ , "Distribution.Simple.Test.ExeV10" \ , "Distribution.Simple.Test.LibV09" \ , "Distribution.Simple.Test.Log" \ , "Distribution.Simple.UHC" \ , "Distribution.Simple.UserHooks" \ , "Distribution.Simple.Utils" \ , "Distribution.System" \ , "Distribution.TestSuite" \ , "Distribution.Text" \ , "Distribution.Types.AbiDependency" \ , "Distribution.Types.AbiHash" \ , "Distribution.Types.AnnotatedId" \ , "Distribution.Types.Benchmark" \ , "Distribution.Types.Benchmark.Lens" \ , "Distribution.Types.BenchmarkInterface" \ , "Distribution.Types.BenchmarkType" \ , "Distribution.Types.BuildInfo" \ , "Distribution.Types.BuildInfo.Lens" \ , "Distribution.Types.BuildType" \ , "Distribution.Types.Component" \ , "Distribution.Types.ComponentId" \ , "Distribution.Types.ComponentInclude" \ , "Distribution.Types.ComponentLocalBuildInfo" \ , "Distribution.Types.ComponentName" \ , "Distribution.Types.ComponentRequestedSpec" \ , "Distribution.Types.CondTree" \ , "Distribution.Types.Condition" \ , "Distribution.Types.Dependency" \ , "Distribution.Types.DependencyMap" \ , "Distribution.Types.ExeDependency" \ , "Distribution.Types.Executable" \ , "Distribution.Types.Executable.Lens" \ , "Distribution.Types.ExecutableScope" \ , "Distribution.Types.ExposedModule" \ , "Distribution.Types.ForeignLib" \ , "Distribution.Types.ForeignLib.Lens" \ , "Distribution.Types.ForeignLibOption" \ , "Distribution.Types.ForeignLibType" \ , "Distribution.Types.GenericPackageDescription" \ , "Distribution.Types.GenericPackageDescription.Lens" \ , "Distribution.Types.HookedBuildInfo" \ , "Distribution.Types.IncludeRenaming" \ , "Distribution.Types.InstalledPackageInfo" \ , "Distribution.Types.InstalledPackageInfo.FieldGrammar" \ , "Distribution.Types.InstalledPackageInfo.Lens" \ , "Distribution.Types.LegacyExeDependency" \ , "Distribution.Types.Lens" \ , "Distribution.Types.Library" \ , "Distribution.Types.Library.Lens" \ , "Distribution.Types.LocalBuildInfo" \ , "Distribution.Types.Mixin" \ , "Distribution.Types.Module" \ , "Distribution.Types.ModuleReexport" \ , "Distribution.Types.ModuleRenaming" \ , "Distribution.Types.MungedPackageId" \ , "Distribution.Types.MungedPackageName" \ , "Distribution.Types.PackageDescription" \ , "Distribution.Types.PackageDescription.Lens" \ , "Distribution.Types.PackageId" \ , "Distribution.Types.PackageId.Lens" \ , "Distribution.Types.PackageName" \ , "Distribution.Types.PkgconfigDependency" \ , "Distribution.Types.PkgconfigName" \ , "Distribution.Types.SetupBuildInfo" \ , "Distribution.Types.SetupBuildInfo.Lens" \ , "Distribution.Types.SourceRepo" \ , "Distribution.Types.SourceRepo.Lens" \ , "Distribution.Types.TargetInfo" \ , "Distribution.Types.TestSuite" \ , "Distribution.Types.TestSuite.Lens" \ , "Distribution.Types.TestSuiteInterface" \ , "Distribution.Types.TestType" \ , "Distribution.Types.UnitId" \ , "Distribution.Types.UnqualComponentName" \ , "Distribution.Types.Version" \ , "Distribution.Types.VersionInterval" \ , "Distribution.Types.VersionRange" \ , "Distribution.Utils.Generic" \ , "Distribution.Utils.IOData" \ , "Distribution.Utils.LogProgress" \ , "Distribution.Utils.MapAccum" \ , "Distribution.Utils.NubList" \ , "Distribution.Utils.Progress" \ , "Distribution.Utils.ShortText" \ , "Distribution.Verbosity" \ , "Distribution.Version" \ , "Language.Haskell.Extension" \ , "Graphics.GLU" \ , "Graphics.GLU.Callbacks" \ , "Graphics.GLU.Functions" \ , "Graphics.GLU.Tokens" \ , "Graphics.GLU.Types" \ , "Graphics.UI.GLUT" \ , "Graphics.UI.GLUT.Begin" \ , "Graphics.UI.GLUT.Callbacks" \ , "Graphics.UI.GLUT.Callbacks.Global" \ , "Graphics.UI.GLUT.Callbacks.Window" \ , "Graphics.UI.GLUT.Colormap" \ , "Graphics.UI.GLUT.Debugging" \ , "Graphics.UI.GLUT.DeviceControl" \ , "Graphics.UI.GLUT.Fonts" \ , "Graphics.UI.GLUT.GameMode" \ , "Graphics.UI.GLUT.Initialization" \ , "Graphics.UI.GLUT.Menu" \ , "Graphics.UI.GLUT.Objects" \ , "Graphics.UI.GLUT.Overlay" \ , "Graphics.UI.GLUT.State" \ , "Graphics.UI.GLUT.Window" \ , "Network.Browser" \ , "Network.BufferType" \ , "Network.HTTP" \ , "Network.HTTP.Auth" \ , "Network.HTTP.Base" \ , "Network.HTTP.Cookie" \ , "Network.HTTP.HandleStream" \ , "Network.HTTP.Headers" \ , "Network.HTTP.Proxy" \ , "Network.HTTP.Stream" \ , "Network.Stream" \ , "Network.StreamDebugger" \ , "Network.StreamSocket" \ , "Network.TCP" \ , "Test.HUnit" \ , "Test.HUnit.Base" \ , "Test.HUnit.Lang" \ , "Test.HUnit.Terminal" \ , "Test.HUnit.Text" \ , "Data.ObjectName" \ , "Graphics.Rendering.OpenGL" \ , "Graphics.Rendering.OpenGL.GL" \ , "Graphics.Rendering.OpenGL.GL.Antialiasing" \ , "Graphics.Rendering.OpenGL.GL.BeginEnd" \ , "Graphics.Rendering.OpenGL.GL.Bitmaps" \ , "Graphics.Rendering.OpenGL.GL.BufferObjects" \ , "Graphics.Rendering.OpenGL.GL.Clipping" \ , "Graphics.Rendering.OpenGL.GL.ColorSum" \ , "Graphics.Rendering.OpenGL.GL.Colors" \ , "Graphics.Rendering.OpenGL.GL.ConditionalRendering" \ , "Graphics.Rendering.OpenGL.GL.CoordTrans" \ , "Graphics.Rendering.OpenGL.GL.DebugOutput" \ , "Graphics.Rendering.OpenGL.GL.DisplayLists" \ , "Graphics.Rendering.OpenGL.GL.Evaluators" \ , "Graphics.Rendering.OpenGL.GL.Feedback" \ , "Graphics.Rendering.OpenGL.GL.FlushFinish" \ , "Graphics.Rendering.OpenGL.GL.Fog" \ , "Graphics.Rendering.OpenGL.GL.Framebuffer" \ , "Graphics.Rendering.OpenGL.GL.FramebufferObjects" \ , "Graphics.Rendering.OpenGL.GL.FramebufferObjects.Attachments" \ , "Graphics.Rendering.OpenGL.GL.FramebufferObjects.FramebufferObjects" \ , "Graphics.Rendering.OpenGL.GL.FramebufferObjects.Queries" \ , "Graphics.Rendering.OpenGL.GL.FramebufferObjects.RenderbufferObjects" \ , "Graphics.Rendering.OpenGL.GL.Hints" \ , "Graphics.Rendering.OpenGL.GL.LineSegments" \ , "Graphics.Rendering.OpenGL.GL.PerFragment" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.ColorTable" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.Convolution" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.Histogram" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.Minmax" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelMap" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelStorage" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.PixelTransfer" \ , "Graphics.Rendering.OpenGL.GL.PixelRectangles.Rasterization" \ , "Graphics.Rendering.OpenGL.GL.PixellikeObject" \ , "Graphics.Rendering.OpenGL.GL.Points" \ , "Graphics.Rendering.OpenGL.GL.Polygons" \ , "Graphics.Rendering.OpenGL.GL.PrimitiveMode" \ , "Graphics.Rendering.OpenGL.GL.QueryObjects" \ , "Graphics.Rendering.OpenGL.GL.RasterPos" \ , "Graphics.Rendering.OpenGL.GL.ReadCopyPixels" \ , "Graphics.Rendering.OpenGL.GL.Rectangles" \ , "Graphics.Rendering.OpenGL.GL.SavingState" \ , "Graphics.Rendering.OpenGL.GL.Selection" \ , "Graphics.Rendering.OpenGL.GL.Shaders" \ , "Graphics.Rendering.OpenGL.GL.Shaders.Attribs" \ , "Graphics.Rendering.OpenGL.GL.Shaders.Limits" \ , "Graphics.Rendering.OpenGL.GL.Shaders.ProgramBinaries" \ , "Graphics.Rendering.OpenGL.GL.Shaders.ProgramObjects" \ , "Graphics.Rendering.OpenGL.GL.Shaders.ShaderBinaries" \ , "Graphics.Rendering.OpenGL.GL.Shaders.ShaderObjects" \ , "Graphics.Rendering.OpenGL.GL.Shaders.Uniform" \ , "Graphics.Rendering.OpenGL.GL.StringQueries" \ , "Graphics.Rendering.OpenGL.GL.SyncObjects" \ , "Graphics.Rendering.OpenGL.GL.Tensor" \ , "Graphics.Rendering.OpenGL.GL.Texturing" \ , "Graphics.Rendering.OpenGL.GL.Texturing.Application" \ , "Graphics.Rendering.OpenGL.GL.Texturing.Environments" \ , "Graphics.Rendering.OpenGL.GL.Texturing.Objects" \ , "Graphics.Rendering.OpenGL.GL.Texturing.Parameters" \ , "Graphics.Rendering.OpenGL.GL.Texturing.Queries" \ , "Graphics.Rendering.OpenGL.GL.Texturing.Specification" \ , "Graphics.Rendering.OpenGL.GL.TransformFeedback" \ , "Graphics.Rendering.OpenGL.GL.VertexArrayObjects" \ , "Graphics.Rendering.OpenGL.GL.VertexArrays" \ , "Graphics.Rendering.OpenGL.GL.VertexSpec" \ , "Graphics.Rendering.OpenGL.GLU" \ , "Graphics.Rendering.OpenGL.GLU.Errors" \ , "Graphics.Rendering.OpenGL.GLU.Initialization" \ , "Graphics.Rendering.OpenGL.GLU.Matrix" \ , "Graphics.Rendering.OpenGL.GLU.Mipmapping" \ , "Graphics.Rendering.OpenGL.GLU.NURBS" \ , "Graphics.Rendering.OpenGL.GLU.Quadrics" \ , "Graphics.Rendering.OpenGL.GLU.Tessellation" \ , "Graphics.GL" \ , "Graphics.GL.AMD" \ , "Graphics.GL.AMD.BlendMinmaxFactor" \ , "Graphics.GL.AMD.DebugOutput" \ , "Graphics.GL.AMD.DepthClampSeparate" \ , "Graphics.GL.AMD.DrawBuffersBlend" \ , "Graphics.GL.AMD.FramebufferMultisampleAdvanced" \ , "Graphics.GL.AMD.FramebufferSamplePositions" \ , "Graphics.GL.AMD.GPUShaderHalfFloat" \ , "Graphics.GL.AMD.GPUShaderInt64" \ , "Graphics.GL.AMD.InterleavedElements" \ , "Graphics.GL.AMD.MultiDrawIndirect" \ , "Graphics.GL.AMD.NameGenDelete" \ , "Graphics.GL.AMD.OcclusionQueryEvent" \ , "Graphics.GL.AMD.PerformanceMonitor" \ , "Graphics.GL.AMD.PinnedMemory" \ , "Graphics.GL.AMD.QueryBufferObject" \ , "Graphics.GL.AMD.SamplePositions" \ , "Graphics.GL.AMD.SeamlessCubemapPerTexture" \ , "Graphics.GL.AMD.SparseTexture" \ , "Graphics.GL.AMD.StencilOperationExtended" \ , "Graphics.GL.AMD.TransformFeedback4" \ , "Graphics.GL.AMD.VertexShaderTessellator" \ , "Graphics.GL.APPLE" \ , "Graphics.GL.APPLE.AuxDepthStencil" \ , "Graphics.GL.APPLE.ClientStorage" \ , "Graphics.GL.APPLE.ElementArray" \ , "Graphics.GL.APPLE.Fence" \ , "Graphics.GL.APPLE.FloatPixels" \ , "Graphics.GL.APPLE.FlushBufferRange" \ , "Graphics.GL.APPLE.ObjectPurgeable" \ , "Graphics.GL.APPLE.RGB422" \ , "Graphics.GL.APPLE.RowBytes" \ , "Graphics.GL.APPLE.SpecularVector" \ , "Graphics.GL.APPLE.TextureRange" \ , "Graphics.GL.APPLE.TransformHint" \ , "Graphics.GL.APPLE.VertexArrayObject" \ , "Graphics.GL.APPLE.VertexArrayRange" \ , "Graphics.GL.APPLE.VertexProgramEvaluators" \ , "Graphics.GL.APPLE.YCbCr422" \ , "Graphics.GL.ARB" \ , "Graphics.GL.ARB.BaseInstance" \ , "Graphics.GL.ARB.BindlessTexture" \ , "Graphics.GL.ARB.BlendFuncExtended" \ , "Graphics.GL.ARB.BufferStorage" \ , "Graphics.GL.ARB.CLEvent" \ , "Graphics.GL.ARB.ClearBufferObject" \ , "Graphics.GL.ARB.ClearTexture" \ , "Graphics.GL.ARB.ClipControl" \ , "Graphics.GL.ARB.ColorBufferFloat" \ , "Graphics.GL.ARB.CompressedTexturePixelStorage" \ , "Graphics.GL.ARB.ComputeShader" \ , "Graphics.GL.ARB.ComputeVariableGroupSize" \ , "Graphics.GL.ARB.ConditionalRenderInverted" \ , "Graphics.GL.ARB.CopyBuffer" \ , "Graphics.GL.ARB.CopyImage" \ , "Graphics.GL.ARB.CullDistance" \ , "Graphics.GL.ARB.DebugOutput" \ , "Graphics.GL.ARB.DepthBufferFloat" \ , "Graphics.GL.ARB.DepthClamp" \ , "Graphics.GL.ARB.DepthTexture" \ , "Graphics.GL.ARB.DirectStateAccess" \ , "Graphics.GL.ARB.DrawBuffers" \ , "Graphics.GL.ARB.DrawBuffersBlend" \ , "Graphics.GL.ARB.DrawElementsBaseVertex" \ , "Graphics.GL.ARB.DrawIndirect" \ , "Graphics.GL.ARB.DrawInstanced" \ , "Graphics.GL.ARB.ES2Compatibility" \ , "Graphics.GL.ARB.ES31Compatibility" \ , "Graphics.GL.ARB.ES32Compatibility" \ , "Graphics.GL.ARB.ES3Compatibility" \ , "Graphics.GL.ARB.EnhancedLayouts" \ , "Graphics.GL.ARB.ExplicitUniformLocation" \ , "Graphics.GL.ARB.FragmentProgram" \ , "Graphics.GL.ARB.FragmentShader" \ , "Graphics.GL.ARB.FramebufferNoAttachments" \ , "Graphics.GL.ARB.FramebufferObjectCompatibility" \ , "Graphics.GL.ARB.FramebufferObjectCore" \ , "Graphics.GL.ARB.FramebufferSRGB" \ , "Graphics.GL.ARB.GPUShader5" \ , "Graphics.GL.ARB.GPUShaderFP64" \ , "Graphics.GL.ARB.GPUShaderInt64" \ , "Graphics.GL.ARB.GeometryShader4" \ , "Graphics.GL.ARB.GetProgramBinary" \ , "Graphics.GL.ARB.GetTextureSubImage" \ , "Graphics.GL.ARB.GlSpirv" \ , "Graphics.GL.ARB.HalfFloatPixel" \ , "Graphics.GL.ARB.HalfFloatVertex" \ , "Graphics.GL.ARB.ImagingCompatibility" \ , "Graphics.GL.ARB.ImagingCore" \ , "Graphics.GL.ARB.IndirectParameters" \ , "Graphics.GL.ARB.InstancedArrays" \ , "Graphics.GL.ARB.InternalformatQuery" \ , "Graphics.GL.ARB.InternalformatQuery2" \ , "Graphics.GL.ARB.InvalidateSubdata" \ , "Graphics.GL.ARB.MapBufferAlignment" \ , "Graphics.GL.ARB.MapBufferRange" \ , "Graphics.GL.ARB.MatrixPalette" \ , "Graphics.GL.ARB.MultiBind" \ , "Graphics.GL.ARB.MultiDrawIndirect" \ , "Graphics.GL.ARB.Multisample" \ , "Graphics.GL.ARB.Multitexture" \ , "Graphics.GL.ARB.OcclusionQuery" \ , "Graphics.GL.ARB.OcclusionQuery2" \ , "Graphics.GL.ARB.ParallelShaderCompile" \ , "Graphics.GL.ARB.PipelineStatisticsQuery" \ , "Graphics.GL.ARB.PixelBufferObject" \ , "Graphics.GL.ARB.PointParameters" \ , "Graphics.GL.ARB.PointSprite" \ , "Graphics.GL.ARB.PolygonOffsetClamp" \ , "Graphics.GL.ARB.ProgramInterfaceQuery" \ , "Graphics.GL.ARB.ProvokingVertex" \ , "Graphics.GL.ARB.QueryBufferObject" \ , "Graphics.GL.ARB.RobustnessCompatibility" \ , "Graphics.GL.ARB.RobustnessCore" \ , "Graphics.GL.ARB.SampleLocations" \ , "Graphics.GL.ARB.SampleShading" \ , "Graphics.GL.ARB.SamplerObjects" \ , "Graphics.GL.ARB.SeamlessCubeMap" \ , "Graphics.GL.ARB.SeamlessCubemapPerTexture" \ , "Graphics.GL.ARB.SeparateShaderObjects" \ , "Graphics.GL.ARB.ShaderAtomicCounters" \ , "Graphics.GL.ARB.ShaderImageLoadStore" \ , "Graphics.GL.ARB.ShaderObjects" \ , "Graphics.GL.ARB.ShaderStorageBufferObject" \ , "Graphics.GL.ARB.ShaderSubroutine" \ , "Graphics.GL.ARB.ShadingLanguage100" \ , "Graphics.GL.ARB.ShadingLanguageInclude" \ , "Graphics.GL.ARB.Shadow" \ , "Graphics.GL.ARB.ShadowAmbient" \ , "Graphics.GL.ARB.SparseBuffer" \ , "Graphics.GL.ARB.SparseTexture" \ , "Graphics.GL.ARB.SpirvExtensions" \ , "Graphics.GL.ARB.StencilTexturing" \ , "Graphics.GL.ARB.Sync" \ , "Graphics.GL.ARB.TessellationShader" \ , "Graphics.GL.ARB.TextureBarrier" \ , "Graphics.GL.ARB.TextureBorderClamp" \ , "Graphics.GL.ARB.TextureBufferObject" \ , "Graphics.GL.ARB.TextureBufferObjectRGB32" \ , "Graphics.GL.ARB.TextureBufferRange" \ , "Graphics.GL.ARB.TextureCompression" \ , "Graphics.GL.ARB.TextureCompressionBPTC" \ , "Graphics.GL.ARB.TextureCompressionRGTC" \ , "Graphics.GL.ARB.TextureCubeMap" \ , "Graphics.GL.ARB.TextureCubeMapArray" \ , "Graphics.GL.ARB.TextureEnvCombine" \ , "Graphics.GL.ARB.TextureEnvDot3" \ , "Graphics.GL.ARB.TextureFilterAnisotropic" \ , "Graphics.GL.ARB.TextureFilterMinmax" \ , "Graphics.GL.ARB.TextureFloat" \ , "Graphics.GL.ARB.TextureGather" \ , "Graphics.GL.ARB.TextureMirrorClampToEdge" \ , "Graphics.GL.ARB.TextureMirroredRepeat" \ , "Graphics.GL.ARB.TextureMultisample" \ , "Graphics.GL.ARB.TextureRG" \ , "Graphics.GL.ARB.TextureRGB10A2UI" \ , "Graphics.GL.ARB.TextureRectangle" \ , "Graphics.GL.ARB.TextureStencil8" \ , "Graphics.GL.ARB.TextureStorage" \ , "Graphics.GL.ARB.TextureStorageMultisample" \ , "Graphics.GL.ARB.TextureSwizzle" \ , "Graphics.GL.ARB.TextureView" \ , "Graphics.GL.ARB.TimerQuery" \ , "Graphics.GL.ARB.TransformFeedback2" \ , "Graphics.GL.ARB.TransformFeedback3" \ , "Graphics.GL.ARB.TransformFeedbackInstanced" \ , "Graphics.GL.ARB.TransformFeedbackOverflowQuery" \ , "Graphics.GL.ARB.TransposeMatrix" \ , "Graphics.GL.ARB.UniformBufferObject" \ , "Graphics.GL.ARB.VertexArrayBGRA" \ , "Graphics.GL.ARB.VertexArrayObject" \ , "Graphics.GL.ARB.VertexAttrib64Bit" \ , "Graphics.GL.ARB.VertexAttribBinding" \ , "Graphics.GL.ARB.VertexBlend" \ , "Graphics.GL.ARB.VertexBufferObject" \ , "Graphics.GL.ARB.VertexProgram" \ , "Graphics.GL.ARB.VertexShader" \ , "Graphics.GL.ARB.VertexType10f11f11fRev" \ , "Graphics.GL.ARB.VertexType2101010RevCompatibility" \ , "Graphics.GL.ARB.VertexType2101010RevCore" \ , "Graphics.GL.ARB.ViewportArray" \ , "Graphics.GL.ARB.WindowPos" \ , "Graphics.GL.ATI" \ , "Graphics.GL.ATI.DrawBuffers" \ , "Graphics.GL.ATI.ElementArray" \ , "Graphics.GL.ATI.EnvmapBumpmap" \ , "Graphics.GL.ATI.FragmentShader" \ , "Graphics.GL.ATI.MapObjectBuffer" \ , "Graphics.GL.ATI.Meminfo" \ , "Graphics.GL.ATI.PNTriangles" \ , "Graphics.GL.ATI.PixelFormatFloat" \ , "Graphics.GL.ATI.SeparateStencil" \ , "Graphics.GL.ATI.TextFragmentShader" \ , "Graphics.GL.ATI.TextureEnvCombine3" \ , "Graphics.GL.ATI.TextureFloat" \ , "Graphics.GL.ATI.TextureMirrorOnce" \ , "Graphics.GL.ATI.VertexArrayObject" \ , "Graphics.GL.ATI.VertexAttribArrayObject" \ , "Graphics.GL.ATI.VertexStreams" \ , "Graphics.GL.Compatibility30" \ , "Graphics.GL.Compatibility31" \ , "Graphics.GL.Compatibility32" \ , "Graphics.GL.Compatibility33" \ , "Graphics.GL.Compatibility40" \ , "Graphics.GL.Compatibility41" \ , "Graphics.GL.Compatibility42" \ , "Graphics.GL.Compatibility43" \ , "Graphics.GL.Compatibility44" \ , "Graphics.GL.Compatibility45" \ , "Graphics.GL.Compatibility46" \ , "Graphics.GL.Core30" \ , "Graphics.GL.Core31" \ , "Graphics.GL.Core32" \ , "Graphics.GL.Core33" \ , "Graphics.GL.Core40" \ , "Graphics.GL.Core41" \ , "Graphics.GL.Core42" \ , "Graphics.GL.Core43" \ , "Graphics.GL.Core44" \ , "Graphics.GL.Core45" \ , "Graphics.GL.Core46" \ , "Graphics.GL.EXT" \ , "Graphics.GL.EXT.ABGR" \ , "Graphics.GL.EXT.BGRA" \ , "Graphics.GL.EXT.BindableUniform" \ , "Graphics.GL.EXT.BlendColor" \ , "Graphics.GL.EXT.BlendEquationSeparate" \ , "Graphics.GL.EXT.BlendFuncSeparate" \ , "Graphics.GL.EXT.BlendMinmax" \ , "Graphics.GL.EXT.BlendSubtract" \ , "Graphics.GL.EXT.CMYKA" \ , "Graphics.GL.EXT.ClipVolumeHint" \ , "Graphics.GL.EXT.ColorSubtable" \ , "Graphics.GL.EXT.CompiledVertexArray" \ , "Graphics.GL.EXT.Convolution" \ , "Graphics.GL.EXT.CoordinateFrame" \ , "Graphics.GL.EXT.CopyTexture" \ , "Graphics.GL.EXT.CullVertex" \ , "Graphics.GL.EXT.DebugLabel" \ , "Graphics.GL.EXT.DebugMarker" \ , "Graphics.GL.EXT.DepthBoundsTest" \ , "Graphics.GL.EXT.DirectStateAccess" \ , "Graphics.GL.EXT.DrawBuffers2" \ , "Graphics.GL.EXT.DrawInstanced" \ , "Graphics.GL.EXT.DrawRangeElements" \ , "Graphics.GL.EXT.EglImageStorage" \ , "Graphics.GL.EXT.ExternalBuffer" \ , "Graphics.GL.EXT.FogCoord" \ , "Graphics.GL.EXT.FourTwoTwoPixels" \ , "Graphics.GL.EXT.FramebufferBlit" \ , "Graphics.GL.EXT.FramebufferMultisample" \ , "Graphics.GL.EXT.FramebufferMultisampleBlitScaled" \ , "Graphics.GL.EXT.FramebufferObject" \ , "Graphics.GL.EXT.FramebufferSRGB" \ , "Graphics.GL.EXT.GPUProgramParameters" \ , "Graphics.GL.EXT.GPUShader4" \ , "Graphics.GL.EXT.GeometryShader4" \ , "Graphics.GL.EXT.Histogram" \ , "Graphics.GL.EXT.IndexArrayFormats" \ , "Graphics.GL.EXT.IndexFunc" \ , "Graphics.GL.EXT.IndexMaterial" \ , "Graphics.GL.EXT.LightTexture" \ , "Graphics.GL.EXT.MemoryObject" \ , "Graphics.GL.EXT.MemoryObjectFd" \ , "Graphics.GL.EXT.MemoryObjectWin32" \ , "Graphics.GL.EXT.MultiDrawArrays" \ , "Graphics.GL.EXT.Multisample" \ , "Graphics.GL.EXT.PackedDepthStencil" \ , "Graphics.GL.EXT.PackedFloat" \ , "Graphics.GL.EXT.PackedPixels" \ , "Graphics.GL.EXT.PalettedTexture" \ , "Graphics.GL.EXT.PixelBufferObject" \ , "Graphics.GL.EXT.PixelTransform" \ , "Graphics.GL.EXT.PointParameters" \ , "Graphics.GL.EXT.PolygonOffset" \ , "Graphics.GL.EXT.PolygonOffsetClamp" \ , "Graphics.GL.EXT.ProvokingVertex" \ , "Graphics.GL.EXT.RasterMultisample" \ , "Graphics.GL.EXT.RescaleNormal" \ , "Graphics.GL.EXT.SecondaryColor" \ , "Graphics.GL.EXT.Semaphore" \ , "Graphics.GL.EXT.SemaphoreFd" \ , "Graphics.GL.EXT.SemaphoreWin32" \ , "Graphics.GL.EXT.SeparateShaderObjects" \ , "Graphics.GL.EXT.SeparateSpecularColor" \ , "Graphics.GL.EXT.ShaderFramebufferFetch" \ , "Graphics.GL.EXT.ShaderFramebufferFetchNonCoherent" \ , "Graphics.GL.EXT.ShaderImageLoadStore" \ , "Graphics.GL.EXT.SharedTexturePalette" \ , "Graphics.GL.EXT.StencilClearTag" \ , "Graphics.GL.EXT.StencilTwoSide" \ , "Graphics.GL.EXT.StencilWrap" \ , "Graphics.GL.EXT.Subtexture" \ , "Graphics.GL.EXT.Texture" \ , "Graphics.GL.EXT.Texture3D" \ , "Graphics.GL.EXT.TextureArray" \ , "Graphics.GL.EXT.TextureBufferObject" \ , "Graphics.GL.EXT.TextureCompressionLATC" \ , "Graphics.GL.EXT.TextureCompressionRGTC" \ , "Graphics.GL.EXT.TextureCompressionS3TC" \ , "Graphics.GL.EXT.TextureCubeMap" \ , "Graphics.GL.EXT.TextureEnvCombine" \ , "Graphics.GL.EXT.TextureEnvDot3" \ , "Graphics.GL.EXT.TextureFilterAnisotropic" \ , "Graphics.GL.EXT.TextureFilterMinmax" \ , "Graphics.GL.EXT.TextureInteger" \ , "Graphics.GL.EXT.TextureLODBias" \ , "Graphics.GL.EXT.TextureMirrorClamp" \ , "Graphics.GL.EXT.TextureObject" \ , "Graphics.GL.EXT.TexturePerturbNormal" \ , "Graphics.GL.EXT.TextureSNorm" \ , "Graphics.GL.EXT.TextureSRGB" \ , "Graphics.GL.EXT.TextureSRGBDecode" \ , "Graphics.GL.EXT.TextureSharedExponent" \ , "Graphics.GL.EXT.TextureSwizzle" \ , "Graphics.GL.EXT.TimerQuery" \ , "Graphics.GL.EXT.TransformFeedback" \ , "Graphics.GL.EXT.VertexArray" \ , "Graphics.GL.EXT.VertexArrayBGRA" \ , "Graphics.GL.EXT.VertexAttrib64Bit" \ , "Graphics.GL.EXT.VertexShader" \ , "Graphics.GL.EXT.VertexWeighting" \ , "Graphics.GL.EXT.Win32KeyedMutex" \ , "Graphics.GL.EXT.WindowRectangles" \ , "Graphics.GL.EXT.X11SyncObject" \ , "Graphics.GL.Functions" \ , "Graphics.GL.GREMEDY" \ , "Graphics.GL.GREMEDY.FrameTerminator" \ , "Graphics.GL.GREMEDY.StringMarker" \ , "Graphics.GL.GetProcAddress" \ , "Graphics.GL.Groups" \ , "Graphics.GL.HP" \ , "Graphics.GL.HP.ConvolutionBorderModes" \ , "Graphics.GL.HP.ImageTransform" \ , "Graphics.GL.HP.OcclusionTest" \ , "Graphics.GL.HP.TextureLighting" \ , "Graphics.GL.IBM" \ , "Graphics.GL.IBM.CullVertex" \ , "Graphics.GL.IBM.MultimodeDrawArrays" \ , "Graphics.GL.IBM.RasterposClip" \ , "Graphics.GL.IBM.StaticData" \ , "Graphics.GL.IBM.TextureMirroredRepeat" \ , "Graphics.GL.IBM.VertexArrayLists" \ , "Graphics.GL.INGR" \ , "Graphics.GL.INGR.BlendFuncSeparate" \ , "Graphics.GL.INGR.ColorClamp" \ , "Graphics.GL.INGR.InterlaceRead" \ , "Graphics.GL.INTEL" \ , "Graphics.GL.INTEL.BlackholeRender" \ , "Graphics.GL.INTEL.ConservativeRasterization" \ , "Graphics.GL.INTEL.FramebufferCmaa" \ , "Graphics.GL.INTEL.MapTexture" \ , "Graphics.GL.INTEL.ParallelArrays" \ , "Graphics.GL.INTEL.PerformanceQuery" \ , "Graphics.GL.KHR" \ , "Graphics.GL.KHR.BlendEquationAdvanced" \ , "Graphics.GL.KHR.BlendEquationAdvancedCoherent" \ , "Graphics.GL.KHR.ContextFlushControl" \ , "Graphics.GL.KHR.DebugCompatibility" \ , "Graphics.GL.KHR.DebugCore" \ , "Graphics.GL.KHR.NoError" \ , "Graphics.GL.KHR.ParallelShaderCompile" \ , "Graphics.GL.KHR.Robustness" \ , "Graphics.GL.KHR.TextureCompressionASTCHDR" \ , "Graphics.GL.KHR.TextureCompressionASTCLDR" \ , "Graphics.GL.MESA" \ , "Graphics.GL.MESA.PackInvert" \ , "Graphics.GL.MESA.ProgramBinaryFormats" \ , "Graphics.GL.MESA.ResizeBuffers" \ , "Graphics.GL.MESA.TileRasterOrder" \ , "Graphics.GL.MESA.WindowPos" \ , "Graphics.GL.MESA.YCbCrTexture" \ , "Graphics.GL.MESAX" \ , "Graphics.GL.MESAX.TextureStack" \ , "Graphics.GL.NV" \ , "Graphics.GL.NV.AlphaToCoverageDitherControl" \ , "Graphics.GL.NV.BindlessMultiDrawIndirect" \ , "Graphics.GL.NV.BindlessMultiDrawIndirectCount" \ , "Graphics.GL.NV.BindlessTexture" \ , "Graphics.GL.NV.BlendEquationAdvanced" \ , "Graphics.GL.NV.BlendEquationAdvancedCoherent" \ , "Graphics.GL.NV.BlendMinmaxFactor" \ , "Graphics.GL.NV.ClipSpaceWScaling" \ , "Graphics.GL.NV.CommandList" \ , "Graphics.GL.NV.ComputeProgram5" \ , "Graphics.GL.NV.ConditionalRender" \ , "Graphics.GL.NV.ConservativeRaster" \ , "Graphics.GL.NV.ConservativeRasterDilate" \ , "Graphics.GL.NV.ConservativeRasterPreSnap" \ , "Graphics.GL.NV.ConservativeRasterPreSnapTriangles" \ , "Graphics.GL.NV.CopyDepthToColor" \ , "Graphics.GL.NV.CopyImage" \ , "Graphics.GL.NV.DeepTexture3D" \ , "Graphics.GL.NV.DepthBufferFloat" \ , "Graphics.GL.NV.DepthClamp" \ , "Graphics.GL.NV.DrawTexture" \ , "Graphics.GL.NV.DrawVulkanImage" \ , "Graphics.GL.NV.Evaluators" \ , "Graphics.GL.NV.ExplicitMultisample" \ , "Graphics.GL.NV.Fence" \ , "Graphics.GL.NV.FillRectangle" \ , "Graphics.GL.NV.FloatBuffer" \ , "Graphics.GL.NV.FogDistance" \ , "Graphics.GL.NV.FragmentCoverageToColor" \ , "Graphics.GL.NV.FragmentProgram" \ , "Graphics.GL.NV.FragmentProgram2" \ , "Graphics.GL.NV.FramebufferMixedSamples" \ , "Graphics.GL.NV.FramebufferMultisampleCoverage" \ , "Graphics.GL.NV.GPUMulticast" \ , "Graphics.GL.NV.GPUProgram4" \ , "Graphics.GL.NV.GPUProgram5" \ , "Graphics.GL.NV.GPUShader5" \ , "Graphics.GL.NV.GeometryProgram4" \ , "Graphics.GL.NV.HalfFloat" \ , "Graphics.GL.NV.InternalformatSampleQuery" \ , "Graphics.GL.NV.LightMaxExponent" \ , "Graphics.GL.NV.MultisampleCoverage" \ , "Graphics.GL.NV.MultisampleFilterHint" \ , "Graphics.GL.NV.OcclusionQuery" \ , "Graphics.GL.NV.PackedDepthStencil" \ , "Graphics.GL.NV.ParameterBufferObject" \ , "Graphics.GL.NV.PathRenderingCompatibility" \ , "Graphics.GL.NV.PathRenderingCore" \ , "Graphics.GL.NV.PathRenderingSharedEdge" \ , "Graphics.GL.NV.PixelDataRange" \ , "Graphics.GL.NV.PointSprite" \ , "Graphics.GL.NV.PresentVideo" \ , "Graphics.GL.NV.PrimitiveRestart" \ , "Graphics.GL.NV.QueryResource" \ , "Graphics.GL.NV.QueryResourceTag" \ , "Graphics.GL.NV.RegisterCombiners" \ , "Graphics.GL.NV.RegisterCombiners2" \ , "Graphics.GL.NV.RobustnessVideoMemoryPurge" \ , "Graphics.GL.NV.SampleLocations" \ , "Graphics.GL.NV.ShaderBufferLoad" \ , "Graphics.GL.NV.ShaderBufferStore" \ , "Graphics.GL.NV.ShaderThreadGroup" \ , "Graphics.GL.NV.TessellationProgram5" \ , "Graphics.GL.NV.TexgenEmboss" \ , "Graphics.GL.NV.TexgenReflection" \ , "Graphics.GL.NV.TextureBarrier" \ , "Graphics.GL.NV.TextureEnvCombine4" \ , "Graphics.GL.NV.TextureExpandNormal" \ , "Graphics.GL.NV.TextureMultisample" \ , "Graphics.GL.NV.TextureRectangle" \ , "Graphics.GL.NV.TextureShader" \ , "Graphics.GL.NV.TextureShader2" \ , "Graphics.GL.NV.TextureShader3" \ , "Graphics.GL.NV.TransformFeedback" \ , "Graphics.GL.NV.TransformFeedback2" \ , "Graphics.GL.NV.UniformBufferUnifiedMemory" \ , "Graphics.GL.NV.VDPAUInterop" \ , "Graphics.GL.NV.VertexArrayRange" \ , "Graphics.GL.NV.VertexArrayRange2" \ , "Graphics.GL.NV.VertexAttribInteger64Bit" \ , "Graphics.GL.NV.VertexBufferUnifiedMemory" \ , "Graphics.GL.NV.VertexProgram" \ , "Graphics.GL.NV.VertexProgram2Option" \ , "Graphics.GL.NV.VertexProgram3" \ , "Graphics.GL.NV.VertexProgram4" \ , "Graphics.GL.NV.VideoCapture" \ , "Graphics.GL.NV.ViewportSwizzle" \ , "Graphics.GL.NVX" \ , "Graphics.GL.NVX.ConditionalRender" \ , "Graphics.GL.NVX.GPUMemoryInfo" \ , "Graphics.GL.NVX.LinkedGPUMulticast" \ , "Graphics.GL.OES" \ , "Graphics.GL.OES.ByteCoordinates" \ , "Graphics.GL.OES.CompressedPalettedTexture" \ , "Graphics.GL.OES.FixedPoint" \ , "Graphics.GL.OES.QueryMatrix" \ , "Graphics.GL.OES.ReadFormat" \ , "Graphics.GL.OES.SinglePrecision" \ , "Graphics.GL.OML" \ , "Graphics.GL.OML.Interlace" \ , "Graphics.GL.OML.Resample" \ , "Graphics.GL.OML.Subsample" \ , "Graphics.GL.OVR" \ , "Graphics.GL.OVR.Multiview" \ , "Graphics.GL.PGI" \ , "Graphics.GL.PGI.MiscHints" \ , "Graphics.GL.PGI.VertexHints" \ , "Graphics.GL.REND" \ , "Graphics.GL.REND.ScreenCoordinates" \ , "Graphics.GL.S3" \ , "Graphics.GL.S3.S3TC" \ , "Graphics.GL.SGI" \ , "Graphics.GL.SGI.ColorMatrix" \ , "Graphics.GL.SGI.ColorTable" \ , "Graphics.GL.SGI.TextureColorTable" \ , "Graphics.GL.SGIS" \ , "Graphics.GL.SGIS.DetailTexture" \ , "Graphics.GL.SGIS.FogFunction" \ , "Graphics.GL.SGIS.GenerateMipmap" \ , "Graphics.GL.SGIS.Multisample" \ , "Graphics.GL.SGIS.PixelTexture" \ , "Graphics.GL.SGIS.PointLineTexgen" \ , "Graphics.GL.SGIS.PointParameters" \ , "Graphics.GL.SGIS.SharpenTexture" \ , "Graphics.GL.SGIS.Texture4D" \ , "Graphics.GL.SGIS.TextureBorderClamp" \ , "Graphics.GL.SGIS.TextureColorMask" \ , "Graphics.GL.SGIS.TextureEdgeClamp" \ , "Graphics.GL.SGIS.TextureFilter4" \ , "Graphics.GL.SGIS.TextureLOD" \ , "Graphics.GL.SGIS.TextureSelect" \ , "Graphics.GL.SGIX" \ , "Graphics.GL.SGIX.Async" \ , "Graphics.GL.SGIX.AsyncHistogram" \ , "Graphics.GL.SGIX.AsyncPixel" \ , "Graphics.GL.SGIX.BlendAlphaMinmax" \ , "Graphics.GL.SGIX.CalligraphicFragment" \ , "Graphics.GL.SGIX.Clipmap" \ , "Graphics.GL.SGIX.ConvolutionAccuracy" \ , "Graphics.GL.SGIX.DepthTexture" \ , "Graphics.GL.SGIX.FlushRaster" \ , "Graphics.GL.SGIX.FogOffset" \ , "Graphics.GL.SGIX.FragmentLighting" \ , "Graphics.GL.SGIX.Framezoom" \ , "Graphics.GL.SGIX.IglooInterface" \ , "Graphics.GL.SGIX.Instruments" \ , "Graphics.GL.SGIX.Interlace" \ , "Graphics.GL.SGIX.IrInstrument1" \ , "Graphics.GL.SGIX.ListPriority" \ , "Graphics.GL.SGIX.PixelTexture" \ , "Graphics.GL.SGIX.PixelTiles" \ , "Graphics.GL.SGIX.PolynomialFFD" \ , "Graphics.GL.SGIX.ReferencePlane" \ , "Graphics.GL.SGIX.Resample" \ , "Graphics.GL.SGIX.ScalebiasHint" \ , "Graphics.GL.SGIX.Shadow" \ , "Graphics.GL.SGIX.ShadowAmbient" \ , "Graphics.GL.SGIX.Sprite" \ , "Graphics.GL.SGIX.Subsample" \ , "Graphics.GL.SGIX.TagSampleBuffer" \ , "Graphics.GL.SGIX.TextureAddEnv" \ , "Graphics.GL.SGIX.TextureCoordinateClamp" \ , "Graphics.GL.SGIX.TextureLODBias" \ , "Graphics.GL.SGIX.TextureMultiBuffer" \ , "Graphics.GL.SGIX.TextureScaleBias" \ , "Graphics.GL.SGIX.VertexPreclip" \ , "Graphics.GL.SGIX.YCrCb" \ , "Graphics.GL.SGIX.YCrCbA" \ , "Graphics.GL.SUN" \ , "Graphics.GL.SUN.ConvolutionBorderModes" \ , "Graphics.GL.SUN.GlobalAlpha" \ , "Graphics.GL.SUN.MeshArray" \ , "Graphics.GL.SUN.SliceAccum" \ , "Graphics.GL.SUN.TriangleList" \ , "Graphics.GL.SUN.Vertex" \ , "Graphics.GL.SUNX" \ , "Graphics.GL.SUNX.ConstantData" \ , "Graphics.GL.ThreeDFX" \ , "Graphics.GL.ThreeDFX.Multisample" \ , "Graphics.GL.ThreeDFX.Tbuffer" \ , "Graphics.GL.ThreeDFX.TextureCompressionFXT1" \ , "Graphics.GL.Tokens" \ , "Graphics.GL.Types" \ , "Graphics.GL.Version10" \ , "Graphics.GL.Version11" \ , "Graphics.GL.Version12" \ , "Graphics.GL.Version13" \ , "Graphics.GL.Version14" \ , "Graphics.GL.Version15" \ , "Graphics.GL.Version20" \ , "Graphics.GL.Version21" \ , "Graphics.GL.WIN" \ , "Graphics.GL.WIN.PhongShading" \ , "Graphics.GL.WIN.SpecularFog" \ , "Test.QuickCheck" \ , "Test.QuickCheck.All" \ , "Test.QuickCheck.Arbitrary" \ , "Test.QuickCheck.Exception" \ , "Test.QuickCheck.Function" \ , "Test.QuickCheck.Gen" \ , "Test.QuickCheck.Gen.Unsafe" \ , "Test.QuickCheck.Modifiers" \ , "Test.QuickCheck.Monadic" \ , "Test.QuickCheck.Poly" \ , "Test.QuickCheck.Property" \ , "Test.QuickCheck.Random" \ , "Test.QuickCheck.State" \ , "Test.QuickCheck.Test" \ , "Test.QuickCheck.Text" \ , "Data.StateVar" \ , "Graphics.Win32" \ , "Graphics.Win32.Control" \ , "Graphics.Win32.Dialogue" \ , "Graphics.Win32.GDI" \ , "Graphics.Win32.GDI.AlphaBlend" \ , "Graphics.Win32.GDI.Bitmap" \ , "Graphics.Win32.GDI.Brush" \ , "Graphics.Win32.GDI.Clip" \ , "Graphics.Win32.GDI.Font" \ , "Graphics.Win32.GDI.Graphics2D" \ , "Graphics.Win32.GDI.HDC" \ , "Graphics.Win32.GDI.Palette" \ , "Graphics.Win32.GDI.Path" \ , "Graphics.Win32.GDI.Pen" \ , "Graphics.Win32.GDI.Region" \ , "Graphics.Win32.GDI.Types" \ , "Graphics.Win32.Icon" \ , "Graphics.Win32.Key" \ , "Graphics.Win32.LayeredWindow" \ , "Graphics.Win32.Menu" \ , "Graphics.Win32.Message" \ , "Graphics.Win32.Misc" \ , "Graphics.Win32.Resource" \ , "Graphics.Win32.Window" \ , "Graphics.Win32.Window.AnimateWindow" \ , "Graphics.Win32.Window.ForegroundWindow" \ , "Graphics.Win32.Window.HotKey" \ , "Graphics.Win32.Window.IMM" \ , "Graphics.Win32.Window.PostMessage" \ , "Media.Win32" \ , "System.Win32" \ , "System.Win32.Automation" \ , "System.Win32.Automation.Input" \ , "System.Win32.Automation.Input.Key" \ , "System.Win32.Automation.Input.Mouse" \ , "System.Win32.Console" \ , "System.Win32.Console.CtrlHandler" \ , "System.Win32.Console.HWND" \ , "System.Win32.Console.Title" \ , "System.Win32.DLL" \ , "System.Win32.DebugApi" \ , "System.Win32.Encoding" \ , "System.Win32.Exception.Unsupported" \ , "System.Win32.File" \ , "System.Win32.FileMapping" \ , "System.Win32.HardLink" \ , "System.Win32.Info" \ , "System.Win32.Info.Computer" \ , "System.Win32.Info.Version" \ , "System.Win32.Mem" \ , "System.Win32.MinTTY" \ , "System.Win32.NLS" \ , "System.Win32.Path" \ , "System.Win32.Process" \ , "System.Win32.Registry" \ , "System.Win32.Security" \ , "System.Win32.Shell" \ , "System.Win32.SimpleMAPI" \ , "System.Win32.String" \ , "System.Win32.SymbolicLink" \ , "System.Win32.Thread" \ , "System.Win32.Time" \ , "System.Win32.Types" \ , "System.Win32.Utils" \ , "System.Win32.Word" \ , "Data.Array" \ , "Data.Array.Base" \ , "Data.Array.IArray" \ , "Data.Array.IO" \ , "Data.Array.IO.Internals" \ , "Data.Array.IO.Safe" \ , "Data.Array.MArray" \ , "Data.Array.MArray.Safe" \ , "Data.Array.ST" \ , "Data.Array.ST.Safe" \ , "Data.Array.Storable" \ , "Data.Array.Storable.Internals" \ , "Data.Array.Storable.Safe" \ , "Data.Array.Unboxed" \ , "Data.Array.Unsafe" \ , "Control.Concurrent.Async" \ , "Data.Attoparsec" \ , "Data.Attoparsec.ByteString" \ , "Data.Attoparsec.ByteString.Char8" \ , "Data.Attoparsec.ByteString.Lazy" \ , "Data.Attoparsec.Char8" \ , "Data.Attoparsec.Combinator" \ , "Data.Attoparsec.Internal" \ , "Data.Attoparsec.Internal.Types" \ , "Data.Attoparsec.Lazy" \ , "Data.Attoparsec.Number" \ , "Data.Attoparsec.Text" \ , "Data.Attoparsec.Text.Lazy" \ , "Data.Attoparsec.Types" \ , "Data.Attoparsec.Zepto" \ , "Control.Applicative" \ , "Control.Arrow" \ , "Control.Category" \ , "Control.Concurrent" \ , "Control.Concurrent.Chan" \ , "Control.Concurrent.MVar" \ , "Control.Concurrent.QSem" \ , "Control.Concurrent.QSemN" \ , "Control.Exception" \ , "Control.Exception.Base" \ , "Control.Monad" \ , "Control.Monad.Fail" \ , "Control.Monad.Fix" \ , "Control.Monad.IO.Class" \ , "Control.Monad.Instances" \ , "Control.Monad.ST" \ , "Control.Monad.ST.Lazy" \ , "Control.Monad.ST.Lazy.Safe" \ , "Control.Monad.ST.Lazy.Unsafe" \ , "Control.Monad.ST.Safe" \ , "Control.Monad.ST.Strict" \ , "Control.Monad.ST.Unsafe" \ , "Control.Monad.Zip" \ , "Data.Bifoldable" \ , "Data.Bifunctor" \ , "Data.Bitraversable" \ , "Data.Bits" \ , "Data.Bool" \ , "Data.Char" \ , "Data.Coerce" \ , "Data.Complex" \ , "Data.Data" \ , "Data.Dynamic" \ , "Data.Either" \ , "Data.Eq" \ , "Data.Fixed" \ , "Data.Foldable" \ , "Data.Function" \ , "Data.Functor" \ , "Data.Functor.Classes" \ , "Data.Functor.Compose" \ , "Data.Functor.Const" \ , "Data.Functor.Identity" \ , "Data.Functor.Product" \ , "Data.Functor.Sum" \ , "Data.IORef" \ , "Data.Int" \ , "Data.Ix" \ , "Data.Kind" \ , "Data.List" \ , "Data.List.NonEmpty" \ , "Data.Maybe" \ , "Data.Monoid" \ , "Data.Ord" \ , "Data.Proxy" \ , "Data.Ratio" \ , "Data.STRef" \ , "Data.STRef.Lazy" \ , "Data.STRef.Strict" \ , "Data.Semigroup" \ , "Data.String" \ , "Data.Traversable" \ , "Data.Tuple" \ , "Data.Type.Bool" \ , "Data.Type.Coercion" \ , "Data.Type.Equality" \ , "Data.Typeable" \ , "Data.Unique" \ , "Data.Version" \ , "Data.Void" \ , "Data.Word" \ , "Debug.Trace" \ , "Foreign" \ , "Foreign.C" \ , "Foreign.C.Error" \ , "Foreign.C.String" \ , "Foreign.C.Types" \ , "Foreign.Concurrent" \ , "Foreign.ForeignPtr" \ , "Foreign.ForeignPtr.Safe" \ , "Foreign.ForeignPtr.Unsafe" \ , "Foreign.Marshal" \ , "Foreign.Marshal.Alloc" \ , "Foreign.Marshal.Array" \ , "Foreign.Marshal.Error" \ , "Foreign.Marshal.Pool" \ , "Foreign.Marshal.Safe" \ , "Foreign.Marshal.Unsafe" \ , "Foreign.Marshal.Utils" \ , "Foreign.Ptr" \ , "Foreign.Safe" \ , "Foreign.StablePtr" \ , "Foreign.Storable" \ , "GHC.Arr" \ , "GHC.Base" \ , "GHC.ByteOrder" \ , "GHC.Char" \ , "GHC.Clock" \ , "GHC.Conc" \ , "GHC.Conc.IO" \ , "GHC.Conc.Signal" \ , "GHC.Conc.Sync" \ , "GHC.ConsoleHandler" \ , "GHC.Constants" \ , "GHC.Desugar" \ , "GHC.Enum" \ , "GHC.Environment" \ , "GHC.Err" \ , "GHC.Event" \ , "GHC.Exception" \ , "GHC.ExecutionStack" \ , "GHC.ExecutionStack.Internal" \ , "GHC.Exts" \ , "GHC.Fingerprint" \ , "GHC.Fingerprint.Type" \ , "GHC.Float" \ , "GHC.Float.ConversionUtils" \ , "GHC.Float.RealFracMethods" \ , "GHC.Foreign" \ , "GHC.ForeignPtr" \ , "GHC.GHCi" \ , "GHC.Generics" \ , "GHC.IO" \ , "GHC.IO.Buffer" \ , "GHC.IO.BufferedIO" \ , "GHC.IO.Device" \ , "GHC.IO.Encoding" \ , "GHC.IO.Encoding.CodePage" \ , "GHC.IO.Encoding.Failure" \ , "GHC.IO.Encoding.Iconv" \ , "GHC.IO.Encoding.Latin1" \ , "GHC.IO.Encoding.Types" \ , "GHC.IO.Encoding.UTF16" \ , "GHC.IO.Encoding.UTF32" \ , "GHC.IO.Encoding.UTF8" \ , "GHC.IO.Exception" \ , "GHC.IO.FD" \ , "GHC.IO.Handle" \ , "GHC.IO.Handle.FD" \ , "GHC.IO.Handle.Internals" \ , "GHC.IO.Handle.Lock" \ , "GHC.IO.Handle.Text" \ , "GHC.IO.Handle.Types" \ , "GHC.IO.IOMode" \ , "GHC.IO.Unsafe" \ , "GHC.IOArray" \ , "GHC.IORef" \ , "GHC.Int" \ , "GHC.List" \ , "GHC.MVar" \ , "GHC.Natural" \ , "GHC.Num" \ , "GHC.OldList" \ , "GHC.OverloadedLabels" \ , "GHC.PArr" \ , "GHC.Pack" \ , "GHC.Profiling" \ , "GHC.Ptr" \ , "GHC.RTS.Flags" \ , "GHC.Read" \ , "GHC.Real" \ , "GHC.Records" \ , "GHC.ST" \ , "GHC.STRef" \ , "GHC.Show" \ , "GHC.Stable" \ , "GHC.Stack" \ , "GHC.Stack.CCS" \ , "GHC.Stack.Types" \ , "GHC.StaticPtr" \ , "GHC.Stats" \ , "GHC.Storable" \ , "GHC.TopHandler" \ , "GHC.TypeLits" \ , "GHC.TypeNats" \ , "GHC.Unicode" \ , "GHC.Weak" \ , "GHC.Word" \ , "Numeric" \ , "Numeric.Natural" \ , "Prelude" \ , "System.CPUTime" \ , "System.Console.GetOpt" \ , "System.Environment" \ , "System.Environment.Blank" \ , "System.Exit" \ , "System.IO" \ , "System.IO.Error" \ , "System.IO.Unsafe" \ , "System.Info" \ , "System.Mem" \ , "System.Mem.StableName" \ , "System.Mem.Weak" \ , "System.Posix.Internals" \ , "System.Posix.Types" \ , "System.Timeout" \ , "Text.ParserCombinators.ReadP" \ , "Text.ParserCombinators.ReadPrec" \ , "Text.Printf" \ , "Text.Read" \ , "Text.Read.Lex" \ , "Text.Show" \ , "Text.Show.Functions" \ , "Type.Reflection" \ , "Type.Reflection.Unsafe" \ , "Unsafe.Coerce" \ , "Data.ByteString" \ , "Data.ByteString.Builder" \ , "Data.ByteString.Builder.Extra" \ , "Data.ByteString.Builder.Internal" \ , "Data.ByteString.Builder.Prim" \ , "Data.ByteString.Builder.Prim.Internal" \ , "Data.ByteString.Char8" \ , "Data.ByteString.Internal" \ , "Data.ByteString.Lazy" \ , "Data.ByteString.Lazy.Builder" \ , "Data.ByteString.Lazy.Builder.ASCII" \ , "Data.ByteString.Lazy.Builder.Extras" \ , "Data.ByteString.Lazy.Char8" \ , "Data.ByteString.Lazy.Internal" \ , "Data.ByteString.Short" \ , "Data.ByteString.Short.Internal" \ , "Data.ByteString.Unsafe" \ , "Data.CallStack" \ , "Data.CaseInsensitive" \ , "Data.CaseInsensitive.Unsafe" \ , "Network.CGI" \ , "Network.CGI.Compat" \ , "Network.CGI.Cookie" \ , "Network.CGI.Monad" \ , "Network.CGI.Protocol" \ , "Data.Graph" \ , "Data.IntMap" \ , "Data.IntMap.Internal" \ , "Data.IntMap.Internal.Debug" \ , "Data.IntMap.Lazy" \ , "Data.IntMap.Merge.Lazy" \ , "Data.IntMap.Merge.Strict" \ , "Data.IntMap.Strict" \ , "Data.IntSet" \ , "Data.IntSet.Internal" \ , "Data.Map" \ , "Data.Map.Internal" \ , "Data.Map.Internal.Debug" \ , "Data.Map.Lazy" \ , "Data.Map.Lazy.Merge" \ , "Data.Map.Merge.Lazy" \ , "Data.Map.Merge.Strict" \ , "Data.Map.Strict" \ , "Data.Map.Strict.Internal" \ , "Data.Map.Strict.Merge" \ , "Data.Sequence" \ , "Data.Sequence.Internal" \ , "Data.Sequence.Internal.Sorting" \ , "Data.Set" \ , "Data.Set.Internal" \ , "Data.Tree" \ , "Utils.Containers.Internal.BitQueue" \ , "Utils.Containers.Internal.BitUtil" \ , "Utils.Containers.Internal.StrictPair" \ , "Control.DeepSeq" \ , "System.Directory" \ , "System.Directory.Internal" \ , "System.Directory.Internal.Prelude" \ , "Control.Monad.Catch" \ , "Control.Monad.Catch.Pure" \ , "Control.Exception.Extensible" \ , "Data.Graph.Inductive" \ , "Data.Graph.Inductive.Basic" \ , "Data.Graph.Inductive.Example" \ , "Data.Graph.Inductive.Graph" \ , "Data.Graph.Inductive.Internal.Heap" \ , "Data.Graph.Inductive.Internal.Queue" \ , "Data.Graph.Inductive.Internal.RootPath" \ , "Data.Graph.Inductive.Internal.Thread" \ , "Data.Graph.Inductive.Monad" \ , "Data.Graph.Inductive.Monad.IOArray" \ , "Data.Graph.Inductive.Monad.STArray" \ , "Data.Graph.Inductive.NodeMap" \ , "Data.Graph.Inductive.PatriciaTree" \ , "Data.Graph.Inductive.Query" \ , "Data.Graph.Inductive.Query.ArtPoint" \ , "Data.Graph.Inductive.Query.BCC" \ , "Data.Graph.Inductive.Query.BFS" \ , "Data.Graph.Inductive.Query.DFS" \ , "Data.Graph.Inductive.Query.Dominators" \ , "Data.Graph.Inductive.Query.GVD" \ , "Data.Graph.Inductive.Query.Indep" \ , "Data.Graph.Inductive.Query.MST" \ , "Data.Graph.Inductive.Query.MaxFlow" \ , "Data.Graph.Inductive.Query.MaxFlow2" \ , "Data.Graph.Inductive.Query.Monad" \ , "Data.Graph.Inductive.Query.SP" \ , "Data.Graph.Inductive.Query.TransClos" \ , "Data.Graph.Inductive.Tree" \ , "System.FilePath" \ , "System.FilePath.Posix" \ , "System.FilePath.Windows" \ , "Numeric.Fixed" \ , "Annotations" \ , "ApiAnnotation" \ , "Ar" \ , "AsmCodeGen" \ , "AsmUtils" \ , "Avail" \ , "Bag" \ , "BasicTypes" \ , "BinFingerprint" \ , "BinIface" \ , "Binary" \ , "Bitmap" \ , "BkpSyn" \ , "BlockId" \ , "BooleanFormula" \ , "BufWrite" \ , "BuildTyCl" \ , "ByteCodeAsm" \ , "ByteCodeGen" \ , "ByteCodeInstr" \ , "ByteCodeItbls" \ , "ByteCodeLink" \ , "ByteCodeTypes" \ , "CLabel" \ , "CPrim" \ , "CSE" \ , "CallArity" \ , "CgUtils" \ , "Check" \ , "Class" \ , "CmdLineParser" \ , "Cmm" \ , "CmmBuildInfoTables" \ , "CmmCallConv" \ , "CmmCommonBlockElim" \ , "CmmContFlowOpt" \ , "CmmExpr" \ , "CmmImplementSwitchPlans" \ , "CmmInfo" \ , "CmmLayoutStack" \ , "CmmLex" \ , "CmmLint" \ , "CmmLive" \ , "CmmMachOp" \ , "CmmMonad" \ , "CmmNode" \ , "CmmOpt" \ , "CmmParse" \ , "CmmPipeline" \ , "CmmProcPoint" \ , "CmmSink" \ , "CmmSwitch" \ , "CmmType" \ , "CmmUtils" \ , "CoAxiom" \ , "CodeGen.Platform" \ , "CodeGen.Platform.ARM" \ , "CodeGen.Platform.ARM64" \ , "CodeGen.Platform.NoRegs" \ , "CodeGen.Platform.PPC" \ , "CodeGen.Platform.PPC_Darwin" \ , "CodeGen.Platform.SPARC" \ , "CodeGen.Platform.X86" \ , "CodeGen.Platform.X86_64" \ , "CodeOutput" \ , "Coercion" \ , "ConLike" \ , "Config" \ , "Constants" \ , "Convert" \ , "CoreArity" \ , "CoreFVs" \ , "CoreLint" \ , "CoreMonad" \ , "CoreOpt" \ , "CorePrep" \ , "CoreSeq" \ , "CoreStats" \ , "CoreSubst" \ , "CoreSyn" \ , "CoreTidy" \ , "CoreToStg" \ , "CoreUnfold" \ , "CoreUtils" \ , "CostCentre" \ , "Coverage" \ , "Ctype" \ , "DataCon" \ , "Debug" \ , "Debugger" \ , "DebuggerUtils" \ , "Demand" \ , "Desugar" \ , "Digraph" \ , "DmdAnal" \ , "DriverBkp" \ , "DriverMkDepend" \ , "DriverPhases" \ , "DriverPipeline" \ , "DsArrows" \ , "DsBinds" \ , "DsCCall" \ , "DsExpr" \ , "DsForeign" \ , "DsGRHSs" \ , "DsListComp" \ , "DsMeta" \ , "DsMonad" \ , "DsUsage" \ , "DsUtils" \ , "Dwarf" \ , "Dwarf.Constants" \ , "Dwarf.Types" \ , "DynFlags" \ , "DynamicLoading" \ , "Elf" \ , "Encoding" \ , "EnumSet" \ , "ErrUtils" \ , "Exception" \ , "Exitify" \ , "FV" \ , "FamInst" \ , "FamInstEnv" \ , "FastFunctions" \ , "FastMutInt" \ , "FastString" \ , "FastStringEnv" \ , "FieldLabel" \ , "FileCleanup" \ , "Finder" \ , "Fingerprint" \ , "FiniteMap" \ , "FlagChecker" \ , "FloatIn" \ , "FloatOut" \ , "ForeignCall" \ , "Format" \ , "FunDeps" \ , "GHC" \ , "GHCi" \ , "GhcMake" \ , "GhcMonad" \ , "GhcPlugins" \ , "GraphBase" \ , "GraphColor" \ , "GraphOps" \ , "GraphPpr" \ , "HaddockUtils" \ , "HeaderInfo" \ , "Hooks" \ , "Hoopl.Block" \ , "Hoopl.Collections" \ , "Hoopl.Dataflow" \ , "Hoopl.Graph" \ , "Hoopl.Label" \ , "Hoopl.Unique" \ , "HsBinds" \ , "HsDecls" \ , "HsDoc" \ , "HsDumpAst" \ , "HsExpr" \ , "HsExtension" \ , "HsImpExp" \ , "HsLit" \ , "HsPat" \ , "HsSyn" \ , "HsTypes" \ , "HsUtils" \ , "HscMain" \ , "HscStats" \ , "HscTypes" \ , "IOEnv" \ , "Id" \ , "IdInfo" \ , "IfaceEnv" \ , "IfaceSyn" \ , "IfaceType" \ , "Inst" \ , "InstEnv" \ , "Instruction" \ , "InteractiveEval" \ , "InteractiveEvalTypes" \ , "Json" \ , "Kind" \ , "KnownUniques" \ , "Lexeme" \ , "Lexer" \ , "LiberateCase" \ , "Linker" \ , "ListSetOps" \ , "ListT" \ , "Literal" \ , "Llvm" \ , "Llvm.AbsSyn" \ , "Llvm.MetaData" \ , "Llvm.PpLlvm" \ , "Llvm.Types" \ , "LlvmCodeGen" \ , "LlvmCodeGen.Base" \ , "LlvmCodeGen.CodeGen" \ , "LlvmCodeGen.Data" \ , "LlvmCodeGen.Ppr" \ , "LlvmCodeGen.Regs" \ , "LlvmMangler" \ , "LoadIface" \ , "Match" \ , "MatchCon" \ , "MatchLit" \ , "Maybes" \ , "MkCore" \ , "MkGraph" \ , "MkId" \ , "MkIface" \ , "Module" \ , "MonadUtils" \ , "NCGMonad" \ , "Name" \ , "NameCache" \ , "NameEnv" \ , "NameSet" \ , "NameShape" \ , "OccName" \ , "OccurAnal" \ , "OptCoercion" \ , "OrdList" \ , "Outputable" \ , "PIC" \ , "PPC.CodeGen" \ , "PPC.Cond" \ , "PPC.Instr" \ , "PPC.Ppr" \ , "PPC.RegInfo" \ , "PPC.Regs" \ , "PackageConfig" \ , "Packages" \ , "Pair" \ , "Panic" \ , "Parser" \ , "PatSyn" \ , "PipelineMonad" \ , "PlaceHolder" \ , "Platform" \ , "PlatformConstants" \ , "Plugins" \ , "PmExpr" \ , "PprBase" \ , "PprC" \ , "PprCmm" \ , "PprCmmDecl" \ , "PprCmmExpr" \ , "PprColour" \ , "PprCore" \ , "PprTyThing" \ , "PrelInfo" \ , "PrelNames" \ , "PrelRules" \ , "Pretty" \ , "PrimOp" \ , "ProfInit" \ , "RdrHsSyn" \ , "RdrName" \ , "Reg" \ , "RegAlloc.Graph.ArchBase" \ , "RegAlloc.Graph.ArchX86" \ , "RegAlloc.Graph.Coalesce" \ , "RegAlloc.Graph.Main" \ , "RegAlloc.Graph.Spill" \ , "RegAlloc.Graph.SpillClean" \ , "RegAlloc.Graph.SpillCost" \ , "RegAlloc.Graph.Stats" \ , "RegAlloc.Graph.TrivColorable" \ , "RegAlloc.Linear.Base" \ , "RegAlloc.Linear.FreeRegs" \ , "RegAlloc.Linear.JoinToTargets" \ , "RegAlloc.Linear.Main" \ , "RegAlloc.Linear.PPC.FreeRegs" \ , "RegAlloc.Linear.SPARC.FreeRegs" \ , "RegAlloc.Linear.StackMap" \ , "RegAlloc.Linear.State" \ , "RegAlloc.Linear.Stats" \ , "RegAlloc.Linear.X86.FreeRegs" \ , "RegAlloc.Linear.X86_64.FreeRegs" \ , "RegAlloc.Liveness" \ , "RegClass" \ , "RepType" \ , "RnBinds" \ , "RnEnv" \ , "RnExpr" \ , "RnFixity" \ , "RnHsDoc" \ , "RnModIface" \ , "RnNames" \ , "RnPat" \ , "RnSource" \ , "RnSplice" \ , "RnTypes" \ , "RnUnbound" \ , "RnUtils" \ , "RtClosureInspect" \ , "Rules" \ , "SAT" \ , "SMRep" \ , "SPARC.AddrMode" \ , "SPARC.Base" \ , "SPARC.CodeGen" \ , "SPARC.CodeGen.Amode" \ , "SPARC.CodeGen.Base" \ , "SPARC.CodeGen.CondCode" \ , "SPARC.CodeGen.Expand" \ , "SPARC.CodeGen.Gen32" \ , "SPARC.CodeGen.Gen64" \ , "SPARC.CodeGen.Sanity" \ , "SPARC.Cond" \ , "SPARC.Imm" \ , "SPARC.Instr" \ , "SPARC.Ppr" \ , "SPARC.Regs" \ , "SPARC.ShortcutJump" \ , "SPARC.Stack" \ , "SetLevels" \ , "SimplCore" \ , "SimplEnv" \ , "SimplMonad" \ , "SimplStg" \ , "SimplUtils" \ , "Simplify" \ , "SpecConstr" \ , "Specialise" \ , "SrcLoc" \ , "State" \ , "StaticPtrTable" \ , "StgCmm" \ , "StgCmmArgRep" \ , "StgCmmBind" \ , "StgCmmClosure" \ , "StgCmmCon" \ , "StgCmmEnv" \ , "StgCmmExpr" \ , "StgCmmExtCode" \ , "StgCmmForeign" \ , "StgCmmHeap" \ , "StgCmmHpc" \ , "StgCmmLayout" \ , "StgCmmMonad" \ , "StgCmmPrim" \ , "StgCmmProf" \ , "StgCmmTicky" \ , "StgCmmUtils" \ , "StgCse" \ , "StgLint" \ , "StgStats" \ , "StgSyn" \ , "Stream" \ , "StringBuffer" \ , "SysTools" \ , "SysTools.BaseDir" \ , "SysTools.ExtraObj" \ , "SysTools.Info" \ , "SysTools.Process" \ , "SysTools.Tasks" \ , "SysTools.Terminal" \ , "THNames" \ , "TargetReg" \ , "TcAnnotations" \ , "TcArrows" \ , "TcBackpack" \ , "TcBinds" \ , "TcCanonical" \ , "TcClassDcl" \ , "TcDefaults" \ , "TcDeriv" \ , "TcDerivInfer" \ , "TcDerivUtils" \ , "TcEnv" \ , "TcErrors" \ , "TcEvidence" \ , "TcExpr" \ , "TcFlatten" \ , "TcForeign" \ , "TcGenDeriv" \ , "TcGenFunctor" \ , "TcGenGenerics" \ , "TcHsSyn" \ , "TcHsType" \ , "TcIface" \ , "TcInstDcls" \ , "TcInteract" \ , "TcMType" \ , "TcMatches" \ , "TcPat" \ , "TcPatSyn" \ , "TcPluginM" \ , "TcRnDriver" \ , "TcRnExports" \ , "TcRnMonad" \ , "TcRnTypes" \ , "TcRules" \ , "TcSMonad" \ , "TcSigs" \ , "TcSimplify" \ , "TcSplice" \ , "TcTyClsDecls" \ , "TcTyDecls" \ , "TcType" \ , "TcTypeNats" \ , "TcTypeable" \ , "TcUnify" \ , "TcValidity" \ , "TidyPgm" \ , "TmOracle" \ , "ToIface" \ , "TrieMap" \ , "TyCoRep" \ , "TyCon" \ , "Type" \ , "TysPrim" \ , "TysWiredIn" \ , "UnVarGraph" \ , "UnariseStg" \ , "Unify" \ , "UniqDFM" \ , "UniqDSet" \ , "UniqFM" \ , "UniqMap" \ , "UniqSet" \ , "UniqSupply" \ , "Unique" \ , "Util" \ , "Var" \ , "VarEnv" \ , "VarSet" \ , "Vectorise" \ , "Vectorise.Builtins" \ , "Vectorise.Builtins.Base" \ , "Vectorise.Builtins.Initialise" \ , "Vectorise.Convert" \ , "Vectorise.Env" \ , "Vectorise.Exp" \ , "Vectorise.Generic.Description" \ , "Vectorise.Generic.PADict" \ , "Vectorise.Generic.PAMethods" \ , "Vectorise.Generic.PData" \ , "Vectorise.Monad" \ , "Vectorise.Monad.Base" \ , "Vectorise.Monad.Global" \ , "Vectorise.Monad.InstEnv" \ , "Vectorise.Monad.Local" \ , "Vectorise.Monad.Naming" \ , "Vectorise.Type.Classify" \ , "Vectorise.Type.Env" \ , "Vectorise.Type.TyConDecl" \ , "Vectorise.Type.Type" \ , "Vectorise.Utils" \ , "Vectorise.Utils.Base" \ , "Vectorise.Utils.Closure" \ , "Vectorise.Utils.Hoisting" \ , "Vectorise.Utils.PADict" \ , "Vectorise.Utils.Poly" \ , "Vectorise.Var" \ , "Vectorise.Vect" \ , "WorkWrap" \ , "WwLib" \ , "X86.CodeGen" \ , "X86.Cond" \ , "X86.Instr" \ , "X86.Ppr" \ , "X86.RegInfo" \ , "X86.Regs" \ , "Numeric.Half" \ , "Data.Hashable" \ , "Data.Hashable.Lifted" \ , "Language.Haskell.Lexer" \ , "Language.Haskell.ParseMonad" \ , "Language.Haskell.ParseUtils" \ , "Language.Haskell.Parser" \ , "Language.Haskell.Pretty" \ , "Language.Haskell.Syntax" \ , "Control.Monad" \ , "Data.Array" \ , "Data.Bits" \ , "Data.Char" \ , "Data.Complex" \ , "Data.Int" \ , "Data.Ix" \ , "Data.List" \ , "Data.Maybe" \ , "Data.Ratio" \ , "Data.Word" \ , "Foreign" \ , "Foreign.C" \ , "Foreign.C.Error" \ , "Foreign.C.String" \ , "Foreign.C.Types" \ , "Foreign.ForeignPtr" \ , "Foreign.Marshal" \ , "Foreign.Marshal.Alloc" \ , "Foreign.Marshal.Array" \ , "Foreign.Marshal.Error" \ , "Foreign.Marshal.Utils" \ , "Foreign.Ptr" \ , "Foreign.StablePtr" \ , "Foreign.Storable" \ , "Numeric" \ , "Prelude" \ , "System.Environment" \ , "System.Exit" \ , "System.IO" \ , "System.IO.Error" \ , "Array" \ , "Bits" \ , "CError" \ , "CForeign" \ , "CPUTime" \ , "CString" \ , "CTypes" \ , "Char" \ , "Complex" \ , "Directory" \ , "ForeignPtr" \ , "IO" \ , "Int" \ , "Ix" \ , "List" \ , "Locale" \ , "MarshalAlloc" \ , "MarshalArray" \ , "MarshalError" \ , "MarshalUtils" \ , "Maybe" \ , "Monad" \ , "Numeric" \ , "Prelude" \ , "Ptr" \ , "Random" \ , "Ratio" \ , "StablePtr" \ , "Storable" \ , "System" \ , "Time" \ , "Word" \ , "Trace.Hpc.Mix" \ , "Trace.Hpc.Reflect" \ , "Trace.Hpc.Tix" \ , "Trace.Hpc.Util" \ , "Text.Html" \ , "Text.Html.BlockTable" \ , "GHC.Integer.Logarithms.Compat" \ , "Math.NumberTheory.Logarithms" \ , "Math.NumberTheory.Powers.Integer" \ , "Math.NumberTheory.Powers.Natural" \ , "Control.Monad.Cont" \ , "Control.Monad.Cont.Class" \ , "Control.Monad.Error" \ , "Control.Monad.Error.Class" \ , "Control.Monad.Except" \ , "Control.Monad.Identity" \ , "Control.Monad.List" \ , "Control.Monad.RWS" \ , "Control.Monad.RWS.Class" \ , "Control.Monad.RWS.Lazy" \ , "Control.Monad.RWS.Strict" \ , "Control.Monad.Reader" \ , "Control.Monad.Reader.Class" \ , "Control.Monad.State" \ , "Control.Monad.State.Class" \ , "Control.Monad.State.Lazy" \ , "Control.Monad.State.Strict" \ , "Control.Monad.Trans" \ , "Control.Monad.Writer" \ , "Control.Monad.Writer.Class" \ , "Control.Monad.Writer.Lazy" \ , "Control.Monad.Writer.Strict" \ , "Network.Multipart" \ , "Network.Multipart.Header" \ , "Network" \ , "Network.BSD" \ , "Network.Socket" \ , "Network.Socket.ByteString" \ , "Network.Socket.ByteString.Lazy" \ , "Network.Socket.Internal" \ , "Network.URI" \ , "System.Locale" \ , "System.Time" \ , "Control.Parallel" \ , "Control.Parallel.Strategies" \ , "Control.Seq" \ , "Text.Parsec" \ , "Text.Parsec.ByteString" \ , "Text.Parsec.ByteString.Lazy" \ , "Text.Parsec.Char" \ , "Text.Parsec.Combinator" \ , "Text.Parsec.Error" \ , "Text.Parsec.Expr" \ , "Text.Parsec.Language" \ , "Text.Parsec.Perm" \ , "Text.Parsec.Pos" \ , "Text.Parsec.Prim" \ , "Text.Parsec.String" \ , "Text.Parsec.Text" \ , "Text.Parsec.Text.Lazy" \ , "Text.Parsec.Token" \ , "Text.ParserCombinators.Parsec" \ , "Text.ParserCombinators.Parsec.Char" \ , "Text.ParserCombinators.Parsec.Combinator" \ , "Text.ParserCombinators.Parsec.Error" \ , "Text.ParserCombinators.Parsec.Expr" \ , "Text.ParserCombinators.Parsec.Language" \ , "Text.ParserCombinators.Parsec.Perm" \ , "Text.ParserCombinators.Parsec.Pos" \ , "Text.ParserCombinators.Parsec.Prim" \ , "Text.ParserCombinators.Parsec.Token" \ , "Text.PrettyPrint" \ , "Text.PrettyPrint.Annotated" \ , "Text.PrettyPrint.Annotated.HughesPJ" \ , "Text.PrettyPrint.Annotated.HughesPJClass" \ , "Text.PrettyPrint.HughesPJ" \ , "Text.PrettyPrint.HughesPJClass" \ , "Control.Monad.Primitive" \ , "Data.Primitive" \ , "Data.Primitive.Addr" \ , "Data.Primitive.Array" \ , "Data.Primitive.ByteArray" \ , "Data.Primitive.MVar" \ , "Data.Primitive.MachDeps" \ , "Data.Primitive.MutVar" \ , "Data.Primitive.PrimArray" \ , "Data.Primitive.Ptr" \ , "Data.Primitive.SmallArray" \ , "Data.Primitive.Types" \ , "Data.Primitive.UnliftedArray" \ , "System.Cmd" \ , "System.Process" \ , "System.Process.Internals" \ , "System.Random" \ , "Text.Regex.Base" \ , "Text.Regex.Base.Context" \ , "Text.Regex.Base.Impl" \ , "Text.Regex.Base.RegexLike" \ , "Text.Regex" \ , "Text.Regex.Posix" \ , "Text.Regex.Posix.ByteString" \ , "Text.Regex.Posix.ByteString.Lazy" \ , "Text.Regex.Posix.Sequence" \ , "Text.Regex.Posix.String" \ , "Text.Regex.Posix.Wrap" \ , "Data.ByteString.Builder.Scientific" \ , "Data.Scientific" \ , "Data.Text.Lazy.Builder.Scientific" \ , "Data.List.Split" \ , "Data.List.Split.Internals" \ , "Control.Concurrent.STM" \ , "Control.Concurrent.STM.TArray" \ , "Control.Concurrent.STM.TBQueue" \ , "Control.Concurrent.STM.TChan" \ , "Control.Concurrent.STM.TMVar" \ , "Control.Concurrent.STM.TQueue" \ , "Control.Concurrent.STM.TSem" \ , "Control.Concurrent.STM.TVar" \ , "Control.Monad.STM" \ , "Data.Generics" \ , "Data.Generics.Aliases" \ , "Data.Generics.Basics" \ , "Data.Generics.Builders" \ , "Data.Generics.Instances" \ , "Data.Generics.Schemes" \ , "Data.Generics.Text" \ , "Data.Generics.Twins" \ , "Generics.SYB" \ , "Generics.SYB.Aliases" \ , "Generics.SYB.Basics" \ , "Generics.SYB.Builders" \ , "Generics.SYB.Instances" \ , "Generics.SYB.Schemes" \ , "Generics.SYB.Text" \ , "Generics.SYB.Twins" \ , "Language.Haskell.TH" \ , "Language.Haskell.TH.LanguageExtensions" \ , "Language.Haskell.TH.Lib" \ , "Language.Haskell.TH.Lib.Internal" \ , "Language.Haskell.TH.Ppr" \ , "Language.Haskell.TH.PprLib" \ , "Language.Haskell.TH.Quote" \ , "Language.Haskell.TH.Syntax" \ , "Data.Text" \ , "Data.Text.Array" \ , "Data.Text.Encoding" \ , "Data.Text.Encoding.Error" \ , "Data.Text.Foreign" \ , "Data.Text.IO" \ , "Data.Text.Internal" \ , "Data.Text.Internal.Builder" \ , "Data.Text.Internal.Builder.Functions" \ , "Data.Text.Internal.Builder.Int.Digits" \ , "Data.Text.Internal.Builder.RealFloat.Functions" \ , "Data.Text.Internal.Encoding.Fusion" \ , "Data.Text.Internal.Encoding.Fusion.Common" \ , "Data.Text.Internal.Encoding.Utf16" \ , "Data.Text.Internal.Encoding.Utf32" \ , "Data.Text.Internal.Encoding.Utf8" \ , "Data.Text.Internal.Functions" \ , "Data.Text.Internal.Fusion" \ , "Data.Text.Internal.Fusion.CaseMapping" \ , "Data.Text.Internal.Fusion.Common" \ , "Data.Text.Internal.Fusion.Size" \ , "Data.Text.Internal.Fusion.Types" \ , "Data.Text.Internal.IO" \ , "Data.Text.Internal.Lazy" \ , "Data.Text.Internal.Lazy.Encoding.Fusion" \ , "Data.Text.Internal.Lazy.Fusion" \ , "Data.Text.Internal.Lazy.Search" \ , "Data.Text.Internal.Private" \ , "Data.Text.Internal.Read" \ , "Data.Text.Internal.Search" \ , "Data.Text.Internal.Unsafe" \ , "Data.Text.Internal.Unsafe.Char" \ , "Data.Text.Internal.Unsafe.Shift" \ , "Data.Text.Lazy" \ , "Data.Text.Lazy.Builder" \ , "Data.Text.Lazy.Builder.Int" \ , "Data.Text.Lazy.Builder.RealFloat" \ , "Data.Text.Lazy.Encoding" \ , "Data.Text.Lazy.IO" \ , "Data.Text.Lazy.Internal" \ , "Data.Text.Lazy.Read" \ , "Data.Text.Read" \ , "Data.Text.Unsafe" \ , "System.Random.TF" \ , "System.Random.TF.Gen" \ , "System.Random.TF.Init" \ , "System.Random.TF.Instances" \ , "Data.Time" \ , "Data.Time.Calendar" \ , "Data.Time.Calendar.Easter" \ , "Data.Time.Calendar.Julian" \ , "Data.Time.Calendar.MonthDay" \ , "Data.Time.Calendar.OrdinalDate" \ , "Data.Time.Calendar.WeekDate" \ , "Data.Time.Clock" \ , "Data.Time.Clock.POSIX" \ , "Data.Time.Clock.System" \ , "Data.Time.Clock.TAI" \ , "Data.Time.Format" \ , "Data.Time.LocalTime" \ , "Control.Applicative.Backwards" \ , "Control.Applicative.Lift" \ , "Control.Monad.Signatures" \ , "Control.Monad.Trans.Accum" \ , "Control.Monad.Trans.Class" \ , "Control.Monad.Trans.Cont" \ , "Control.Monad.Trans.Error" \ , "Control.Monad.Trans.Except" \ , "Control.Monad.Trans.Identity" \ , "Control.Monad.Trans.List" \ , "Control.Monad.Trans.Maybe" \ , "Control.Monad.Trans.RWS" \ , "Control.Monad.Trans.RWS.Lazy" \ , "Control.Monad.Trans.RWS.Strict" \ , "Control.Monad.Trans.Reader" \ , "Control.Monad.Trans.Select" \ , "Control.Monad.Trans.State" \ , "Control.Monad.Trans.State.Lazy" \ , "Control.Monad.Trans.State.Strict" \ , "Control.Monad.Trans.Writer" \ , "Control.Monad.Trans.Writer.Lazy" \ , "Control.Monad.Trans.Writer.Strict" \ , "Data.Functor.Constant" \ , "Data.Functor.Reverse" \ , "Control.Monad.Trans.Instances" \ , "Data.Functor.Classes.Generic" \ , "Data.Functor.Classes.Generic.Internal" \ , "System.Posix" \ , "System.Posix.ByteString" \ , "System.Posix.ByteString.FilePath" \ , "System.Posix.Directory" \ , "System.Posix.Directory.ByteString" \ , "System.Posix.DynamicLinker" \ , "System.Posix.DynamicLinker.ByteString" \ , "System.Posix.DynamicLinker.Module" \ , "System.Posix.DynamicLinker.Module.ByteString" \ , "System.Posix.DynamicLinker.Prim" \ , "System.Posix.Env" \ , "System.Posix.Env.ByteString" \ , "System.Posix.Error" \ , "System.Posix.Fcntl" \ , "System.Posix.Files" \ , "System.Posix.Files.ByteString" \ , "System.Posix.IO" \ , "System.Posix.IO.ByteString" \ , "System.Posix.Process" \ , "System.Posix.Process.ByteString" \ , "System.Posix.Process.Internals" \ , "System.Posix.Resource" \ , "System.Posix.Semaphore" \ , "System.Posix.SharedMem" \ , "System.Posix.Signals" \ , "System.Posix.Signals.Exts" \ , "System.Posix.Temp" \ , "System.Posix.Temp.ByteString" \ , "System.Posix.Terminal" \ , "System.Posix.Terminal.ByteString" \ , "System.Posix.Time" \ , "System.Posix.Unistd" \ , "System.Posix.User" \ , "Data.HashMap.Lazy" \ , "Data.HashMap.Strict" \ , "Data.HashSet" \ , "Data.Vector" \ , "Data.Vector.Fusion.Bundle" \ , "Data.Vector.Fusion.Bundle.Monadic" \ , "Data.Vector.Fusion.Bundle.Size" \ , "Data.Vector.Fusion.Stream.Monadic" \ , "Data.Vector.Fusion.Util" \ , "Data.Vector.Generic" \ , "Data.Vector.Generic.Base" \ , "Data.Vector.Generic.Mutable" \ , "Data.Vector.Generic.Mutable.Base" \ , "Data.Vector.Generic.New" \ , "Data.Vector.Internal.Check" \ , "Data.Vector.Mutable" \ , "Data.Vector.Primitive" \ , "Data.Vector.Primitive.Mutable" \ , "Data.Vector.Storable" \ , "Data.Vector.Storable.Internal" \ , "Data.Vector.Storable.Mutable" \ , "Data.Vector.Unboxed" \ , "Data.Vector.Unboxed.Base" \ , "Data.Vector.Unboxed.Mutable" \ , "Text.XHtml" \ , "Text.XHtml.Debug" \ , "Text.XHtml.Frameset" \ , "Text.XHtml.Strict" \ , "Text.XHtml.Table" \ , "Text.XHtml.Transitional" \ , "Codec.Compression.GZip" \ , "Codec.Compression.Zlib" \ , "Codec.Compression.Zlib.Internal" \ , "Codec.Compression.Zlib.Raw" \ , "Web.Spock" \ , "Web.Spock.Config" \ , "Web.Spock.Internal.SessionManager" \ , "Web.Spock.Internal.SessionVault" \ , "Web.Spock.SessionActions" \ , "Web.Spock.Api" \ , "Web.Spock.Auth" \ , "Web.Spock.Action" \ , "Web.Spock.Core" \ , "Web.Spock.Internal.Cookies" \ , "Web.Spock.Internal.Util" \ , "Web.Spock.Routing" \ , "Web.Spock.Digestive" \ , "Database.Esqueleto" \ , "Database.Esqueleto.Internal.Language" \ , "Database.Esqueleto.Internal.Sql" \ , "Database.Esqueleto.PostgreSQL" \ , "Database.Persist" \ , "Database.Persist.Class" \ , "Database.Persist.Quasi" \ , "Database.Persist.Sql" \ , "Database.Persist.Sql.Types.Internal" \ , "Database.Persist.Sql.Util" \ , "Database.Persist.Types" \ , "Database.Persist.MySQL" \ , "Database.Persist.Postgresql" \ , "Database.Persist.Postgresql.JSON" \ , "Database.Persist.Redis" \ , "Database.Persist.Sqlite" \ , "Database.Sqlite" \ , "Servant.API" \ , "Servant.API.Alternative" \ , "Servant.API.BasicAuth" \ , "Servant.API.Capture" \ , "Servant.API.ContentTypes" \ , "Servant.API.Description" \ , "Servant.API.Empty" \ , "Servant.API.Experimental.Auth" \ , "Servant.API.Generic" \ , "Servant.API.Header" \ , "Servant.API.HttpVersion" \ , "Servant.API.Internal.Test.ComprehensiveAPI" \ , "Servant.API.IsSecure" \ , "Servant.API.Modifiers" \ , "Servant.API.QueryParam" \ , "Servant.API.Raw" \ , "Servant.API.RemoteHost" \ , "Servant.API.ReqBody" \ , "Servant.API.ResponseHeaders" \ , "Servant.API.Stream" \ , "Servant.API.Sub" \ , "Servant.API.TypeLevel" \ , "Servant.API.Vault" \ , "Servant.API.Verbs" \ , "Servant.API.WithNamedContext" \ , "Servant.Links" \ , "Servant.Utils.Enter" \ , "Servant.Utils.Links" \ , "Servant.Auth" \ , "Servant.Client" \ , "Servant.Client.Internal.HttpClient" \ , "Servant" \ , "Servant.Server" \ , "Servant.Server.Experimental.Auth" \ , "Servant.Server.Generic" \ , "Servant.Server.Internal" \ , "Servant.Server.Internal.BasicAuth" \ , "Servant.Server.Internal.Context" \ , "Servant.Server.Internal.Handler" \ , "Servant.Server.Internal.Router" \ , "Servant.Server.Internal.RoutingApplication" \ , "Servant.Server.Internal.ServantErr" \ , "Servant.Server.StaticFiles" \ , "Servant.Utils.StaticFiles" \ ] function! htmlcomplete#DetectOmniFlavor() if &filetype == 'xhtml' let b:html_omni_flavor = 'xhtml11' else let b:html_omni_flavor = 'html401s' endif endfunction function! htmlcomplete#CompleteTags(findstart, base) if a:findstart let line = getline('.') let start = col('.') - 1 let curline = line('.') let compl_begin = col('.') - 2 while start >= 0 && line[start - 1] =~ '\(\k\|[!:.-]\)' let start -= 1 endwhile if start >= 0 && line[start - 1] =~ '&' let b:entitiescompl = 1 let b:compl_context = '' return start endif let stylestart = searchpair('', '', '<\/style\>', "bnW") let styleend = searchpair('', '', '<\/style\>', "nW") if stylestart != 0 && styleend != 0 if stylestart <= curline && styleend >= curline let start = col('.') - 1 let b:csscompl = 1 while start >= 0 && line[start - 1] =~ '\(\k\|-\)' let start -= 1 endwhile endif endif let scriptstart = searchpair('', '', '<\/script\>', "bnW") let scriptend = searchpair('', '', '<\/script\>', "nW") if scriptstart != 0 && scriptend != 0 if scriptstart <= curline && scriptend >= curline let start = col('.') - 1 let b:jscompl = 1 let b:jsrange = [scriptstart, scriptend] while start >= 0 && line[start - 1] =~ '\k' let start -= 1 endwhile let b:js_extfiles = [] let l = line('.') let c = col('.') call cursor(1,1) while search('<\@<=script\>', 'W') && line('.') <= l if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment' let sname = matchstr(getline('.'), ']*src\s*=\s*\([''"]\)\zs.\{-}\ze\1') if filereadable(sname) let b:js_extfiles += readfile(sname) endif endif endwhile call cursor(1,1) let js_scripttags = [] while search('', 'W') && line('.') < l if matchstr(getline('.'), ']*src') == '' let js_scripttag = getline(line('.'), search('', 'W')) let js_scripttags += js_scripttag endif endwhile let b:js_extfiles += js_scripttags call cursor(l,c) unlet! l c endif endif if !exists("b:csscompl") && !exists("b:jscompl") let b:compl_context = getline('.')[0:(compl_begin)] if b:compl_context !~ '<[^>]*$' let i = 1 while 1 let context_line = getline(curline-i) if context_line =~ '<[^>]*$' let context_lines = getline(curline-i, curline-1) + [b:compl_context] let b:compl_context = join(context_lines, ' ') break elseif context_line =~ '>[^<]*$' || i == curline let b:compl_context = '' break endif let i += 1 endwhile unlet! i endif let b:compl_context = matchstr(b:compl_context, '.*\zs<.*') if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$' let start = col('.') - 1 while start >= 0 && line[start - 1] =~ '\k' let start -= 1 endwhile endif if &filetype =~? 'php' && b:compl_context =~ '^= 0 && line[start - 1] =~ '[a-zA-Z_0-9\x7f-\xff$]' let start -= 1 endwhile endif else let b:compl_context = getline('.')[0:compl_begin] endif return start else let res = [] let res2 = [] let context = b:compl_context if exists("b:csscompl") unlet! b:csscompl let context = b:compl_context unlet! b:compl_context return csscomplete#CompleteCSS(0, context) elseif exists("b:jscompl") unlet! b:jscompl return javascriptcomplete#CompleteJS(0, a:base) elseif exists("b:phpcompl") unlet! b:phpcompl let context = b:compl_context return phpcomplete#CompletePHP(0, a:base) else if len(b:compl_context) == 0 && !exists("b:entitiescompl") return [] endif let context = matchstr(b:compl_context, '.\zs.*') endif unlet! b:compl_context if exists("b:entitiescompl") unlet! b:entitiescompl if !exists("b:html_doctype") call htmlcomplete#CheckDoctype() endif if !exists("b:html_omni") call htmlcomplete#LoadData() endif let entities = b:html_omni['vimxmlentities'] if len(a:base) == 1 for m in entities if m =~ '^'.a:base call add(res, m.';') endif endfor return res else for m in entities if m =~? '^'.a:base call add(res, m.';') elseif m =~? a:base call add(res2, m.';') endif endfor return res + res2 endif endif if context =~ '>' if context =~ 'style[^>]\{-}>[^<]\{-}$' return csscomplete#CompleteCSS(0, context) elseif context =~ 'script[^>]\{-}>[^<]\{-}$' let b:jsrange = [line('.'), search('<\/script\>', 'nW')] return javascriptcomplete#CompleteJS(0, context) else return [] endif endif if context == '' let tag = '' else let tag = split(context)[0] if tag =~ '^[A-Z]*$' let uppercase_tag = 1 let tag = tolower(tag) else let uppercase_tag = 0 endif endif let attr = matchstr(context, '.*\s\zs.*') if context =~ '\s' if context =~? "\\(on[a-z]*\\|id\\|style\\|class\\)\\s*=\\s*[\"']" if context =~? "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$" if context =~? "class\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$" let search_for = "class" elseif context =~? "id\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$" let search_for = "id" endif call cursor(1,1) let head = getline(search(''), search('<\/head>')) let headjoined = join(copy(head), ' ') if headjoined =~ '\*[,', ' ', 'g') if search_for == 'class' let styleheadlines = split(stylehead) let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'") else let stylesheet = split(headjoined, '[{}]') let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'") call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'") call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'") let templines = join(classlines, ' ') let headclasslines = split(templines) call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'") endif let internal = 1 else let internal = 0 endif let styletable = [] let secimportfiles = [] let filestable = filter(copy(head), "v:val =~ '\\(@import\\|link.*stylesheet\\)'") for line in filestable if line =~ "@import" let styletable += [matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze")] elseif line =~ " 0 for line in secimport let secfile = matchstr(line, "import\\s\\+\\(url(\\)\\?[\"']\\?\\zs\\f\\+\\ze") let secfile = fnamemodify(file, ":p:h").'/'.secfile let secimportfiles += [secfile] endfor endif endif endfor let cssfiles = styletable + secimportfiles let classes = [] for file in cssfiles let classlines = [] if filereadable(file) let stylesheet = readfile(file) let stylefile = join(stylesheet, ' ') let stylefile = substitute(stylefile, '+>\*[,', ' ', 'g') if search_for == 'class' let stylesheet = split(stylefile) let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'") else let stylesheet = split(stylefile, '[{}]') let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'") call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'") call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'") let templines = join(classlines, ' ') let stylelines = split(templines) let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'") endif endif let classes += classlines endfor if internal == 1 let classes += headclasslines endif if search_for == 'class' let elements = {} for element in classes if element =~ '^\.' let class = matchstr(element, '^\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze') let class = substitute(class, ':.*', '', '') if has_key(elements, 'common') let elements['common'] .= ' '.class else let elements['common'] = class endif else let class = matchstr(element, '[a-zA-Z1-6]*\.\zs[a-zA-Z][a-zA-Z0-9_-]*\ze') let tagname = tolower(matchstr(element, '[a-zA-Z1-6]*\ze.')) if tagname != '' if has_key(elements, tagname) let elements[tagname] .= ' '.class else let elements[tagname] = class endif endif endif endfor if has_key(elements, tag) && has_key(elements, 'common') let values = split(elements[tag]." ".elements['common']) elseif has_key(elements, tag) && !has_key(elements, 'common') let values = split(elements[tag]) elseif !has_key(elements, tag) && has_key(elements, 'common') let values = split(elements['common']) else return [] endif elseif search_for == 'id' let filelines = getline(1, line('$')) let used_id_lines = filter(filelines, 'v:val =~ "id\\s*=\\s*[\"''][a-zA-Z0-9_-]\\+"') let id_string = join(used_id_lines, ' ') let id_list = split(id_string, 'id\s*=\s*') let used_id = map(id_list, 'matchstr(v:val, "[\"'']\\zs[a-zA-Z0-9_-]\\+\\ze")') let joined_used_id = ','.join(used_id, ',').',' let allvalues = map(classes, 'matchstr(v:val, ".*#\\zs[a-zA-Z0-9_-]\\+")') let values = [] for element in classes if joined_used_id !~ ','.element.',' let values += [element] endif endfor endif let classbase = matchstr(context, ".*[\"']") let classquote = matchstr(classbase, '.$') let entered_class = matchstr(attr, ".*=\\s*[\"']\\zs.*") for m in sort(values) if m =~? '^'.entered_class call add(res, m . classquote) elseif m =~? entered_class call add(res2, m . classquote) endif endfor return res + res2 elseif context =~? "style\\s*=\\s*[\"'][^\"']*$" return csscomplete#CompleteCSS(0, context) endif if context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$' let b:js_extfiles = [] let l = line('.') let c = col('.') call cursor(1,1) while search('<\@<=script\>', 'W') && line('.') <= l if synIDattr(synID(line('.'),col('.')-1,0),"name") !~? 'comment' let sname = matchstr(getline('.'), ']*src\s*=\s*\([''"]\)\zs.\{-}\ze\1') if filereadable(sname) let b:js_extfiles += readfile(sname) endif endif endwhile call cursor(1,1) let js_scripttags = [] while search('', 'W') && line('.') < l if matchstr(getline('.'), ']*src') == '' let js_scripttag = getline(line('.'), search('', 'W')) let js_scripttags += js_scripttag endif endwhile let b:js_extfiles += js_scripttags call cursor(l,c) let js_context = matchstr(a:base, '\k\+$') let js_shortcontext = substitute(a:base, js_context.'$', '', '') let b:compl_context = context let b:jsrange = [l, l] unlet! l c return javascriptcomplete#CompleteJS(0, js_context) endif let stripbase = matchstr(context, ".*\\(on[a-zA-Z]*\\|style\\|class\\)\\s*=\\s*[\"']\\zs.*") if stripbase !~ "[\"']" return [] endif endif if attr =~ "=\s*[\"']" || attr =~ "=\s*$" let attrname = matchstr(attr, '.*\ze\s*=') let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*") let values = [] if !exists("b:html_doctype") call htmlcomplete#CheckDoctype() endif if !exists("b:html_omni") call htmlcomplete#LoadData() endif if attrname == 'href' if entered_value =~ '^#' let file = join(getline(1, line('$')), ' ') let oneelement = split(file, "\\(meta \\)\\@ 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$' let item = item let m_menu = 'Bool' else let item .= '="' endif let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}] endfor else let final_menu = [] for i in range(len(menu)) let item = menu[i] if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$' let item = item else let item .= '="' endif let final_menu += [item] endfor return final_menu endif return final_menu endif let b:unaryTagsStack = "base meta link hr br param img area input col" if context =~ '^\/' if context =~ '^\/.' return [] else let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack") return [opentag.">"] endif endif if !exists("b:html_doctype") call htmlcomplete#CheckDoctype() endif if !exists("b:html_omni") call htmlcomplete#LoadData() endif let opentag = tolower(xmlcomplete#GetLastOpenTag("b:unaryTagsStack")) if opentag == '' || &filetype == 'php' && !has_key(b:html_omni, opentag) let tags = keys(b:html_omni) call filter(tags, 'v:val !~ "^vimxml"') else if has_key(b:html_omni, opentag) let tags = b:html_omni[opentag][0] else return [] endif endif if exists("uppercase_tag") && uppercase_tag == 1 let context = tolower(context) endif if opentag == '' let tags += [ \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">', \ '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/1999/xhtml">' \ ] endif for m in sort(tags) if m =~ '^'.context call add(res, m) elseif m =~ context call add(res2, m) endif endfor let menu = res + res2 if has_key(b:html_omni, 'vimxmltaginfo') let final_menu = [] for i in range(len(menu)) let item = menu[i] if has_key(b:html_omni['vimxmltaginfo'], item) let m_menu = b:html_omni['vimxmltaginfo'][item][0] let m_info = b:html_omni['vimxmltaginfo'][item][1] else let m_menu = '' let m_info = '' endif if &filetype == 'html' && exists("uppercase_tag") && uppercase_tag == 1 && item !~ 'DOCTYPE' let item = toupper(item) endif if item =~ 'DOCTYPE' let abbr = 'DOCTYPE '.matchstr(item, 'DTD \zsX\?HTML .\{-}\ze\/\/') else let abbr = item endif let final_menu += [{'abbr':abbr, 'word':item, 'menu':m_menu, 'info':m_info}] endfor else let final_menu = menu endif return final_menu endif endfunction function! htmlcomplete#LoadData() " {{{ if !exists("b:html_omni_flavor") if &filetype == 'html' let b:html_omni_flavor = 'html401t' else let b:html_omni_flavor = 'xhtml10s' endif endif if exists('g:xmldata_'.b:html_omni_flavor) exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor else exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim' exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor endif endfunction function! htmlcomplete#CheckDoctype() " {{{ if exists('b:html_omni_flavor') let old_flavor = b:html_omni_flavor else let old_flavor = '' endif let i = 1 while i < 10 && i < line("$") let line = getline(i) if line =~ '= 0 && line[start - 1] =~ '\k' let start -= 1 endwhile let b:compl_context = getline('.')[0:compl_begin] return start else let res = [] let res2 = [] let context = b:compl_context let shortcontext = substitute(context, a:base.'$', '', '') unlet! b:compl_context if exists("b:jsrange") let file = getline(b:jsrange[0],b:jsrange[1]) unlet! b:jsrange if len(b:js_extfiles) > 0 let file = b:js_extfiles + file endif else let file = getline(1, '$') endif if shortcontext =~ '\.$' let doms = ['style.'] let arrayprop = ['constructor', 'index', 'input', 'length', 'prototype'] let arraymeth = ['concat', 'join', 'pop', 'push', 'reverse', 'shift', \ 'splice', 'sort', 'toSource', 'toString', 'unshift', 'valueOf', \ 'watch', 'unwatch'] call map(arraymeth, 'v:val."("') let arrays = arrayprop + arraymeth let datemeth = ['getDate', 'getDay', 'getFullYear', 'getHours', 'getMilliseconds', \ 'getMinutes', 'getMonth', 'getSeconds', 'getTime', 'getTimezoneOffset', \ 'getUTCDate', 'getUTCDay', 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', \ 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds', \ 'getYear', 'parse', 'parse', \ 'setDate', 'setDay', 'setFullYear', 'setHours', 'setMilliseconds', \ 'setMinutes', 'setMonth', 'setSeconds', \ 'setUTCDate', 'setUTCDay', 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', \ 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setYear', 'setTime', \ 'toGMTString', 'toLocaleString', 'toLocaleDateString', 'toLocaleTimeString', \ 'toSource', 'toString', 'toUTCString', 'UTC', 'valueOf', 'watch', 'unwatch'] call map(datemeth, 'v:val."("') let dates = datemeth let funcprop = ['arguments', 'arguments.callee', 'arguments.caller', 'arguments.length', \ 'arity', 'constructor', 'length', 'prototype'] let funcmeth = ['apply', 'call', 'toSource', 'toString', 'valueOf'] call map(funcmeth, 'v:val."("') let funcs = funcprop + funcmeth let mathprop = ['E', 'LN2', 'LN10', 'LOG2E', 'LOG10E', 'PI', 'SQRT1_2', 'SQRT'] let mathmeth = ['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', \ 'log', 'max', 'min', 'pow', 'random', 'round', 'sin', 'sqrt', 'tan', \ 'watch', 'unwatch'] call map(mathmeth, 'v:val."("') let maths = mathprop + mathmeth let numbprop = ['MAX_VALUE', 'MIN_VALUE', 'NaN', 'NEGATIVE_INFINITY', 'POSITIVE_INFINITY', \ 'constructor', 'prototype'] let numbmeth = ['toExponential', 'toFixed', 'toPrecision', 'toSource', 'toString', 'valueOf', \ 'watch', 'unwatch'] call map(numbmeth, 'v:val."("') let numbs = numbprop + numbmeth let objeprop = ['constructor', 'prototype'] let objemeth = ['eval', 'toSource', 'toString', 'unwatch', 'watch', 'valueOf'] call map(objemeth, 'v:val."("') let objes = objeprop + objemeth let regeprop = ['constructor', 'global', 'ignoreCase', 'lastIndex', 'multiline', 'source', 'prototype'] let regemeth = ['exec', 'test', 'toSource', 'toString', 'watch', 'unwatch'] call map(regemeth, 'v:val."("') let reges = regeprop + regemeth let striprop = ['constructor', 'length', 'prototype'] let strimeth = ['anchor', 'big', 'blink', 'bold', 'charAt', 'charCodeAt', 'concat', \ 'fixed', 'fontcolor', 'fontsize', 'fromCharCode', 'indexOf', 'italics', \ 'lastIndexOf', 'link', 'match', 'replace', 'search', 'slice', 'small', \ 'split', 'strike', 'sub', 'substr', 'substring', 'sup', 'toLowerCase', \ 'toSource', 'toString', 'toUpperCase', 'watch', 'unwatch'] call map(strimeth, 'v:val."("') let stris = striprop + strimeth let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\k"') let juser_props1 = join(user_props1, ' ') let user_props1 = split(juser_props1, '\zethis\.') unlet! juser_props1 call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\k\\+\\ze")') let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\k"') let juser_props2 = join(user_props2, ' ') let user_props2 = split(juser_props2, '\zeprototype\.') unlet! juser_props2 call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\k\\+\\ze")') let user_props = user_props1 + user_props2 let anchprop = ['accessKey', 'charset', 'coords', 'href', 'hreflang', 'id', 'innerHTML', \ 'name', 'rel', 'rev', 'shape', 'tabIndex', 'target', 'type', 'onBlur', 'onFocus'] let anchmeth = ['blur', 'focus'] call map(anchmeth, 'v:val."("') let anths = anchprop + anchmeth let areaprop = ['accessKey', 'alt', 'coords', 'hash', 'host', 'hostname', 'href', 'id', \ 'noHref', 'pathname', 'port', 'protocol', 'search', 'shape', 'tabIndex', 'target'] let areameth = ['onClick', 'onDblClick', 'onMouseOut', 'onMouseOver'] call map(areameth, 'v:val."("') let areas = areaprop + areameth let baseprop = ['href', 'id', 'target'] let bases = baseprop let bodyprop = ['aLink', 'background', 'gbColor', 'id', 'link', 'scrollLeft', 'scrollTop', \ 'text', 'vLink'] let bodys = bodyprop let docuprop = ['anchors', 'applets', 'childNodes', 'embeds', 'forms', 'images', 'links', 'stylesheets', \ 'body', 'cookie', 'documentElement', 'domain', 'lastModified', 'referrer', 'title', 'URL'] let documeth = ['close', 'createAttribute', 'createElement', 'createTextNode', 'focus', 'getElementById', \ 'getElementsByName', 'getElementsByTagName', 'open', 'write', 'writeln', \ 'onClick', 'onDblClick', 'onFocus', 'onKeyDown', 'onKeyPress', 'onKeyUp', \ 'onMouseDown', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onResize'] call map(documeth, 'v:val."("') let docuxprop = ['attributes', 'childNodes', 'doctype', 'documentElement', 'firstChild', \ 'implementation', 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', \ 'nodeValue', 'ownerDocument', 'parentNode', 'previousSibling'] let docuxmeth = ['createAttribute', 'createCDATASection', \ 'createComment', 'createDocument', 'createDocumentFragment', \ 'createElement', 'createEntityReference', 'createProcessingInstruction', \ 'createTextNode'] call map(docuxmeth, 'v:val."("') let docus = docuprop + docuxprop + documeth + docuxmeth let formprop = ['elements', 'acceptCharset', 'action', 'encoding', 'enctype', 'id', 'length', \ 'method', 'name', 'tabIndex', 'target'] let formmeth = ['reset', 'submit', 'onReset', 'onSubmit'] call map(formmeth, 'v:val."("') let forms = formprop + formmeth let framprop = ['contentDocument', 'frameBorder', 'id', 'longDesc', 'marginHeight', 'marginWidth', \ 'name', 'noResize', 'scrolling', 'src'] let frammeth = ['blur', 'focus'] call map(frammeth, 'v:val."("') let frams = framprop + frammeth let fsetprop = ['cols', 'id', 'rows'] let fsetmeth = ['blur', 'focus'] call map(fsetmeth, 'v:val."("') let fsets = fsetprop + fsetmeth let histprop = ['length'] let histmeth = ['back', 'forward', 'go'] call map(histmeth, 'v:val."("') let hists = histprop + histmeth let ifraprop = ['align', 'frameBorder', 'height', 'id', 'longDesc', 'marginHeight', 'marginWidth', \ 'name', 'scrolling', 'src', 'width'] let ifras = ifraprop let imagprop = ['align', 'alt', 'border', 'complete', 'height', 'hspace', 'id', 'isMap', 'longDesc', \ 'lowSrc', 'name', 'src', 'useMap', 'vspace', 'width'] let imagmeth = ['onAbort', 'onError', 'onLoad'] call map(imagmeth, 'v:val."("') let imags = histprop + imagmeth let buttprop = ['accessKey', 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] let buttmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp'] call map(buttmeth, 'v:val."("') let butts = buttprop + buttmeth let checprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked', \ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] let checmeth = ['blur', 'click', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp'] call map(checmeth, 'v:val."("') let checs = checprop + checmeth let fileprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', \ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] let filemeth = ['blur', 'focus', 'onBlur', 'onClick', 'onFocus', 'onMouseDown', 'onMouseUp'] call map(filemeth, 'v:val."("') let files = fileprop + filemeth let hiddprop = ['defaultValue', 'form', 'id', 'name', 'type', 'value'] let hidds = hiddprop let passprop = ['accept', 'accessKey', 'defaultValue', \ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly', 'size', 'tabIndex', \ 'type', 'value'] let passmeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus', 'onKeyDown', \ 'onKeyPress', 'onKeyUp'] call map(passmeth, 'v:val."("') let passs = passprop + passmeth let radiprop = ['accept', 'accessKey', 'align', 'alt', 'checked', 'defaultChecked', \ 'disabled', 'form', 'id', 'name', 'tabIndex', 'type', 'value'] let radimeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus'] call map(radimeth, 'v:val."("') let radis = radiprop + radimeth let reseprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', \ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value'] let resemeth = ['blur', 'click', 'focus', 'select', 'onBlur', 'onFocus'] call map(resemeth, 'v:val."("') let reses = reseprop + resemeth let submprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', \ 'disabled', 'form', 'id', 'name', 'size', 'tabIndex', 'type', 'value'] let submmeth = ['blur', 'click', 'focus', 'select', 'onClick', 'onSelectStart'] call map(submmeth, 'v:val."("') let subms = submprop + submmeth let textprop = ['accept', 'accessKey', 'align', 'alt', 'defaultValue', \ 'disabled', 'form', 'id', 'maxLength', 'name', 'readOnly', \ 'size', 'tabIndex', 'type', 'value'] let textmeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus', 'onKeyDown', \ 'onKeyPress', 'onKeyUp', 'onSelect'] call map(textmeth, 'v:val."("') let texts = textprop + textmeth let linkprop = ['charset', 'disabled', 'href', 'hreflang', 'id', 'media', \ 'rel', 'rev', 'target', 'type'] let linkmeth = ['onLoad'] call map(linkmeth, 'v:val."("') let links = linkprop + linkmeth let locaprop = ['href', 'hash', 'host', 'hostname', 'pathname', 'port', 'protocol', \ 'search'] let locameth = ['assign', 'reload', 'replace'] call map(locameth, 'v:val."("') let locas = locaprop + locameth let metaprop = ['charset', 'content', 'disabled', 'httpEquiv', 'name', 'scheme'] let metas = metaprop let naviprop = ['plugins', 'appCodeName', 'appName', 'appVersion', 'cookieEnabled', \ 'platform', 'userAgent'] let navimeth = ['javaEnabled', 'taintEnabled'] call map(navimeth, 'v:val."("') let navis = naviprop + navimeth let objeprop = ['align', 'archive', 'border', 'code', 'codeBase', 'codeType', 'data', \ 'declare', 'form', 'height', 'hspace', 'id', 'name', 'standby', 'tabIndex', \ 'type', 'useMap', 'vspace', 'width'] let objes = objeprop let optiprop = ['defaultSelected', \ 'disabled', 'form', 'id', 'index', 'label', 'selected', 'text', 'value'] let optis = optiprop let screprop = ['availHeight', 'availWidth', 'colorDepth', 'height', 'width'] let scres = screprop let seleprop = ['options', 'disabled', 'form', 'id', 'length', 'multiple', 'name', \ 'selectedIndex', 'size', 'tabIndex', 'type', 'value'] let selemeth = ['blur', 'focus', 'remove', 'onBlur', 'onChange', 'onFocus'] call map(selemeth, 'v:val."("') let seles = seleprop + selemeth let stylprop = ['background', 'backgroundAttachment', 'backgroundColor', 'backgroundImage', \ 'backgroundPosition', 'backgroundRepeat', \ 'border', 'borderBottom', 'borderLeft', 'borderRight', 'borderTop', \ 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', \ 'borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle', \ 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', \ 'borderColor', 'borderStyle', 'borderWidth', 'margin', 'marginBottom', \ 'marginLeft', 'marginRight', 'marginTop', 'outline', 'outlineStyle', 'outlineWidth', \ 'outlineColor', 'outlineStyle', 'outlineWidth', 'padding', 'paddingBottom', \ 'paddingLeft', 'paddingRight', 'paddingTop', \ 'clear', 'clip', 'clipBottom', 'clipLeft', 'clipRight', 'clipTop', 'content', \ 'counterIncrement', 'counterReset', 'cssFloat', 'cursor', 'direction', \ 'display', 'markerOffset', 'marks', 'maxHeight', 'maxWidth', 'minHeight', \ 'minWidth', 'overflow', 'overflowX', 'overflowY', 'verticalAlign', 'visibility', \ 'width', \ 'listStyle', 'listStyleImage', 'listStylePosition', 'listStyleType', \ 'cssText', 'bottom', 'height', 'left', 'position', 'right', 'top', 'width', 'zindex', \ 'orphans', 'widows', 'page', 'pageBreakAfter', 'pageBreakBefore', 'pageBreakInside', \ 'borderCollapse', 'borderSpacing', 'captionSide', 'emptyCells', 'tableLayout', \ 'color', 'font', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', \ 'fontStyle', 'fontVariant', 'fontWeight', 'letterSpacing', 'lineHeight', 'quotes', \ 'textAlign', 'textIndent', 'textShadow', 'textTransform', 'textUnderlinePosition', \ 'unicodeBidi', 'whiteSpace', 'wordSpacing'] let styls = stylprop let tablprop = ['rows', 'tBodies', 'align', 'bgColor', 'border', 'caption', 'cellPadding', \ 'cellSpacing', 'frame', 'height', 'rules', 'summary', 'tFoot', 'tHead', 'width'] let tablmeth = ['createCaption', 'createTFoot', 'createTHead', 'deleteCaption', 'deleteRow', \ 'deleteTFoot', 'deleteTHead', 'insertRow'] call map(tablmeth, 'v:val."("') let tabls = tablprop + tablmeth let tdatprop = ['abbr', 'align', 'axis', 'bgColor', 'cellIndex', 'ch', 'chOff', \ 'colSpan', 'headers', 'noWrap', 'rowSpan', 'scope', 'vAlign', 'width'] let tdats = tdatprop let trowprop = ['cells', 'align', 'bgColor', 'ch', 'chOff', 'rowIndex', 'sectionRowIndex', \ 'vAlign'] let trowmeth = ['deleteCell', 'insertCell'] call map(trowmeth, 'v:val."("') let trows = trowprop + trowmeth let tareprop = ['accessKey', 'cols', 'defaultValue', \ 'disabled', 'form', 'id', 'name', 'readOnly', 'rows', \ 'tabIndex', 'type', 'value', 'selectionStart', 'selectionEnd'] let taremeth = ['blur', 'focus', 'select', 'onBlur', 'onChange', 'onFocus'] call map(taremeth, 'v:val."("') let tares = tareprop + taremeth let windprop = ['frames', 'closed', 'defaultStatus', 'encodeURI', 'event', 'history', \ 'length', 'location', 'name', 'onload', 'opener', 'parent', 'screen', 'self', \ 'status', 'top', 'XMLHttpRequest', 'ActiveXObject'] let windmeth = ['alert', 'blur', 'clearInterval', 'clearTimeout', 'close', 'confirm', 'focus', \ 'moveBy', 'moveTo', 'open', 'print', 'prompt', 'scrollBy', 'scrollTo', 'setInterval', \ 'setTimeout'] call map(windmeth, 'v:val."("') let winds = windprop + windmeth let xmlhprop = ['onreadystatechange', 'readyState', 'responseText', 'responseXML', \ 'status', 'statusText', 'parseError'] let xmlhmeth = ['abort', 'getAllResponseHeaders', 'getResponseHeaders', 'open', \ 'send', 'setRequestHeader'] call map(xmlhmeth, 'v:val."("') let xmlhs = xmlhprop + xmlhmeth let xdomattrprop = ['name', 'specified', 'value'] let xdomelemprop = ['attributes', 'childNodes', 'firstChild', 'lastChild', \ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', \ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling', 'tagName'] let xdomelemmeth = ['appendChild', 'cloneNode', 'getAttribute', 'getAttributeNode', \ 'getElementsByTagName', 'hasChildNodes', 'insertBefore', 'normalize', \ 'removeAttribute', 'removeAttributeNode', 'removeChild', 'replaceChild', \ 'setAttribute', 'setAttributeNode'] call map(xdomelemmeth, 'v:val."("') let xdomelems = xdomelemprop + xdomelemmeth let xdomnodeprop = ['attributes', 'childNodes', 'firstChild', 'lastChild', \ 'namespaceURI', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', \ 'ownerDocument', 'parentNode', 'prefix', 'previousSibling'] let xdomnodemeth = ['appendChild', 'cloneNode', \ 'hasChildNodes', 'insertBefore', 'removeChild', 'replaceChild'] call map(xdomnodemeth, 'v:val."("') let xdomnodes = xdomnodeprop + xdomnodemeth let xdomnliss = ['length', 'item('] let xdomerror = ['errorCode', 'reason', 'line', 'linepos', 'srcText', 'url', 'filepos'] let object = matchstr(shortcontext, '\zs\k\+\ze\(\[.\{-}\]\)\?\.$') if len(object) > 0 let decl_line = search(object.'.\{-}=\s*new\s*', 'bn') if decl_line > 0 let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\k\+\ze') if object_type == 'ActiveXObject' && matchstr(getline(decl_line), object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != '' let object_type = 'XMLHttpRequest' endif else let decl_line = search('var\s*'.object.'\s*=\s*\/', 'bn') if decl_line > 0 let object_type = 'RegExp' endif endif if decl_line == 0 && exists("b:js_extfiles") let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "'.object.'.\\{-}=\\s*new\\s*"') if len(dext_line) > 0 let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\k\+\ze') if object_type == 'ActiveXObject' && matchstr(dext_line[-1], object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != '' let object_type = 'XMLHttpRequest' endif else let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "var\s*'.object.'\\s*=\\s*\\/"') if len(dext_line) > 0 let object_type = 'RegExp' endif endif endif endif if !exists('object_type') let object_type = '' endif if object_type == 'Date' let values = dates elseif object_type == 'Image' let values = imags elseif object_type == 'Array' let values = arrays elseif object_type == 'Boolean' let values = arrays elseif object_type == 'XMLHttpRequest' let values = xmlhs elseif object_type == 'String' let values = stris elseif object_type == 'RegExp' let values = reges elseif object_type == 'Math' let values = maths endif if !exists('values') if shortcontext =~ 'Math\.$' let values = maths elseif shortcontext =~ 'anchors\(\[.\{-}\]\)\?\.$' let values = anths elseif shortcontext =~ 'area\.$' let values = areas elseif shortcontext =~ 'base\.$' let values = bases elseif shortcontext =~ 'body\.$' let values = bodys elseif shortcontext =~ 'document\.$' let values = docus elseif shortcontext =~ 'forms\(\[.\{-}\]\)\?\.$' let values = forms elseif shortcontext =~ 'frameset\.$' let values = fsets elseif shortcontext =~ 'history\.$' let values = hists elseif shortcontext =~ 'iframe\.$' let values = ifras elseif shortcontext =~ 'images\(\[.\{-}\]\)\?\.$' let values = imags elseif shortcontext =~ 'links\(\[.\{-}\]\)\?\.$' let values = links elseif shortcontext =~ 'location\.$' let values = locas elseif shortcontext =~ 'meta\.$' let values = metas elseif shortcontext =~ 'navigator\.$' let values = navis elseif shortcontext =~ 'object\.$' let values = objes elseif shortcontext =~ 'screen\.$' let values = scres elseif shortcontext =~ 'style\.$' let values = styls elseif shortcontext =~ 'table\.$' let values = tabls elseif shortcontext =~ 'TableData\.$' let values = tdats elseif shortcontext =~ 'TableRow\.$' let values = trows elseif shortcontext =~ 'window\.$' let values = winds elseif shortcontext =~ 'parseError\.$' let values = xdomerror elseif shortcontext =~ 'attributes\[\d\+\]\.$' let values = xdomattrprop else let values = user_props + arrays + dates + funcs + maths + numbs + objes + reges + stris let values += doms + anths + areas + bases + bodys + docus + forms + frams + fsets + hists let values += ifras + imags + links + locas + metas + navis + objes + scres let values += tabls + trows + tares + winds let values += xdomnodes + xdomnliss + xdomelems endif endif for m in values if m =~? '^'.a:base call add(res, m) elseif m =~? a:base call add(res2, m) endif endfor unlet! values return res + res2 endif let variables = filter(copy(file), 'v:val =~ "var\\s"') call map(variables, 'matchstr(v:val, ".\\{-}var\\s\\+\\zs.*\\ze")') call map(variables, 'substitute(v:val, ";\\|$", ",", "g")') let vars = [] for i in range(len(variables)) let comma_separated = split(variables[i], ',\s*') call map(comma_separated, 'matchstr(v:val, "\\k\\+")') let vars += comma_separated endfor let variables = sort(vars) unlet! vars let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\k\\+\\s*="') let u_vars = [] for i in range(len(undeclared_variables)) let split_equal = split(undeclared_variables[i], '\s*=') call map(split_equal, 'matchstr(v:val, "\\k\\+$")') let u_vars += split_equal endfor let variables += sort(u_vars) unlet! u_vars let functions = filter(copy(file), 'v:val =~ "^\\s*function\\s"') let arguments = copy(functions) call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\k\\+")') call map(functions, 'v:val."("') let functions = sort(functions) let b:js_menuinfo = {} for i in arguments let g:ia = i let f_elements = matchlist(i, 'function\s\+\(\k\+\)\s*(\(.\{-}\))') if len(f_elements) >= 3 let b:js_menuinfo[f_elements[1].'('] = f_elements[2] endif endfor call map(arguments, 'matchstr(v:val, "function.\\{-}(\\zs.\\{-}\\ze)")') let jargs = join(arguments, ',') let jargs = substitute(jargs, '\s', '', 'g') let arguments = split(jargs, ',') let arguments = sort(arguments) let builtin = ['alert(', 'confirm('] let htmldom = ['document', 'anchor', 'area', 'base', 'body', 'document', 'event', 'form', 'frame', 'frameset', 'history', 'iframe', 'image', 'input', 'link', 'location', 'meta', 'navigator', 'object', 'option', 'screen', 'select', 'table', 'tableData', 'tableHeader', 'tableRow', 'textarea', 'window'] call map(htmldom, 'v:val."."') let properties = ['decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', \ 'eval', 'Infinity', 'isFinite', 'isNaN', 'NaN', 'Number', 'parseFloat', \ 'parseInt', 'String', 'undefined', 'escape', 'unescape'] let keywords = ["Array", "Boolean", "Date", "Function", "Math", "Number", "Object", "RegExp", "String", "XMLHttpRequest", "ActiveXObject", "abstract", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double ", "else", "enum", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in ", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super ", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with"] let values = variables + functions + htmldom + arguments + builtin + properties + keywords for m in values if m =~? '^'.a:base call add(res, m) elseif m =~? a:base call add(res2, m) endif endfor let menu = res + res2 let final_menu = [] for i in range(len(menu)) let item = menu[i] if item =~ '($' let kind = 'f' if has_key(b:js_menuinfo, item) let m_info = b:js_menuinfo[item] else let m_info = '' endif else let kind = 'v' let m_info = '' endif let final_menu += [{'word':item, 'menu':m_info, 'kind':kind}] endfor let g:fm = final_menu return final_menu endfunction if &cp || exists("g:loaded_netrw") finish endif if v:version < 704 || (v:version == 704 && !has("patch213")) if !exists("s:needpatch213") unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch 213" endif let s:needpatch213= 1 finish endif let g:loaded_netrw = "v156" if !exists("s:NOTE") let s:NOTE = 0 let s:WARNING = 1 let s:ERROR = 2 endif let s:keepcpo= &cpo setl cpo&vim fun! netrw#ErrorMsg(level,msg,errnum) if a:level < g:netrw_errorlvl return endif if a:level == 1 let level= "**warning** (netrw) " elseif a:level == 2 let level= "**error** (netrw) " else let level= "**note** (netrw) " endif if g:netrw_use_errorwindow let s:winBeforeErr= winnr() if bufexists("NetrwMessage") && bufwinnr("NetrwMessage") > 0 exe bufwinnr("NetrwMessage")."wincmd w" setl ma noro if type(a:msg) == 3 for msg in a:msg NetrwKeepj call setline(line("$")+1,level.msg) endfor else NetrwKeepj call setline(line("$")+1,level.a:msg) endif NetrwKeepj $ else bo 1split sil! call s:NetrwEnew() sil! NetrwKeepj call s:NetrwSafeOptions() setl bt=nofile NetrwKeepj file NetrwMessage setl ma noro if type(a:msg) == 3 for msg in a:msg NetrwKeepj call setline(line("$")+1,level.msg) endfor else NetrwKeepj call setline(line("$"),level.a:msg) endif NetrwKeepj $ endif if &fo !~ '[ta]' syn clear syn match netrwMesgNote "^\*\*note\*\*" syn match netrwMesgWarning "^\*\*warning\*\*" syn match netrwMesgError "^\*\*error\*\*" hi link netrwMesgWarning WarningMsg hi link netrwMesgError Error endif setl ro nomod noma bh=wipe else if a:level == s:WARNING echohl WarningMsg elseif a:level == s:ERROR echohl Error endif if type(a:msg) == 3 for msg in a:msg unsilent echomsg level.msg endfor else unsilent echomsg level.a:msg endif echohl None endif endfun fun s:NetrwInit(varname,value) if !exists(a:varname) if type(a:value) == 0 exe "let ".a:varname."=".a:value elseif type(a:value) == 1 && a:value =~ '^[{[]' exe "let ".a:varname."=".a:value elseif type(a:value) == 1 exe "let ".a:varname."="."'".a:value."'" else exe "let ".a:varname."=".a:value endif endif endfun call s:NetrwInit("g:netrw_dirhist_cnt",0) if !exists("s:LONGLIST") call s:NetrwInit("s:THINLIST",0) call s:NetrwInit("s:LONGLIST",1) call s:NetrwInit("s:WIDELIST",2) call s:NetrwInit("s:TREELIST",3) call s:NetrwInit("s:MAXLIST" ,4) endif call s:NetrwInit("g:netrw_use_errorwindow",1) if !exists("g:netrw_dav_cmd") if executable("cadaver") let g:netrw_dav_cmd = "cadaver" elseif executable("curl") let g:netrw_dav_cmd = "curl" else let g:netrw_dav_cmd = "" endif endif if !exists("g:netrw_fetch_cmd") if executable("fetch") let g:netrw_fetch_cmd = "fetch -o" else let g:netrw_fetch_cmd = "" endif endif if !exists("g:netrw_file_cmd") if executable("elinks") call s:NetrwInit("g:netrw_file_cmd","elinks") elseif executable("links") call s:NetrwInit("g:netrw_file_cmd","links") endif endif if !exists("g:netrw_ftp_cmd") let g:netrw_ftp_cmd = "ftp" endif let s:netrw_ftp_cmd= g:netrw_ftp_cmd if !exists("g:netrw_ftp_options") let g:netrw_ftp_options= "-i -n" endif if !exists("g:netrw_http_cmd") if executable("elinks") let g:netrw_http_cmd = "elinks" call s:NetrwInit("g:netrw_http_xcmd","-source >") elseif executable("links") let g:netrw_http_cmd = "links" call s:NetrwInit("g:netrw_http_xcmd","-source >") elseif executable("curl") let g:netrw_http_cmd = "curl" call s:NetrwInit("g:netrw_http_xcmd","-o") elseif executable("wget") let g:netrw_http_cmd = "wget" call s:NetrwInit("g:netrw_http_xcmd","-q -O") elseif executable("fetch") let g:netrw_http_cmd = "fetch" call s:NetrwInit("g:netrw_http_xcmd","-o") else let g:netrw_http_cmd = "" endif endif call s:NetrwInit("g:netrw_http_put_cmd","curl -T") call s:NetrwInit("g:netrw_keepj","keepj") call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") call s:NetrwInit("g:netrw_rsync_cmd", "rsync") if !exists("g:netrw_scp_cmd") if executable("scp") call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") elseif executable("pscp") if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable('c:\private.ppk') call s:NetrwInit("g:netrw_scp_cmd", 'pscp -i c:\private.ppk') else call s:NetrwInit("g:netrw_scp_cmd", 'pscp -q') endif else call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") endif endif call s:NetrwInit("g:netrw_sftp_cmd" , "sftp") call s:NetrwInit("g:netrw_ssh_cmd" , "ssh") if (has("win32") || has("win95") || has("win64") || has("win16")) \ && exists("g:netrw_use_nt_rcp") \ && g:netrw_use_nt_rcp \ && executable( $SystemRoot .'/system32/rcp.exe') let s:netrw_has_nt_rcp = 1 let s:netrw_rcpmode = '-b' else let s:netrw_has_nt_rcp = 0 let s:netrw_rcpmode = '' endif if !exists("g:netrw_cygwin") if has("win32") || has("win95") || has("win64") || has("win16") if has("win32unix") && &shell =~ '\%(\\|\\)\%(\.exe\)\=$' let g:netrw_cygwin= 1 else let g:netrw_cygwin= 0 endif else let g:netrw_cygwin= 0 endif endif call s:NetrwInit("g:netrw_alto" , &sb) call s:NetrwInit("g:netrw_altv" , &spr) call s:NetrwInit("g:netrw_banner" , 1) call s:NetrwInit("g:netrw_browse_split", 0) call s:NetrwInit("g:netrw_bufsettings" , "noma nomod nonu nobl nowrap ro nornu") call s:NetrwInit("g:netrw_chgwin" , -1) call s:NetrwInit("g:netrw_compress" , "gzip") call s:NetrwInit("g:netrw_ctags" , "ctags") if exists("g:netrw_cursorline") && !exists("g:netrw_cursor") call netrw#ErrorMsg(s:NOTE,'g:netrw_cursorline is deprecated; use g:netrw_cursor instead',77) let g:netrw_cursor= g:netrw_cursorline endif call s:NetrwInit("g:netrw_cursor" , 2) let s:netrw_usercul = &cursorline let s:netrw_usercuc = &cursorcolumn call s:NetrwInit("g:netrw_cygdrive","/cygdrive") call s:NetrwInit("s:didstarstar",0) call s:NetrwInit("g:netrw_dirhist_cnt" , 0) call s:NetrwInit("g:netrw_decompress" , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }') call s:NetrwInit("g:netrw_dirhistmax" , 10) call s:NetrwInit("g:netrw_errorlvl" , s:NOTE) call s:NetrwInit("g:netrw_fastbrowse" , 1) call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') if !exists("g:netrw_ftp_list_cmd") if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin) let g:netrw_ftp_list_cmd = "ls -lF" let g:netrw_ftp_timelist_cmd = "ls -tlF" let g:netrw_ftp_sizelist_cmd = "ls -slF" else let g:netrw_ftp_list_cmd = "dir" let g:netrw_ftp_timelist_cmd = "dir" let g:netrw_ftp_sizelist_cmd = "dir" endif endif call s:NetrwInit("g:netrw_ftpmode",'binary') call s:NetrwInit("g:netrw_hide",1) if !exists("g:netrw_ignorenetrc") if &shell =~ '\c\<\%(cmd\|4nt\)\.exe$' let g:netrw_ignorenetrc= 1 else let g:netrw_ignorenetrc= 0 endif endif call s:NetrwInit("g:netrw_keepdir",1) if !exists("g:netrw_list_cmd") if g:netrw_scp_cmd =~ '^pscp' && executable("pscp") if (has("win32") || has("win95") || has("win64") || has("win16")) && filereadable("c:\\private.ppk") let g:netrw_scp_cmd ="pscp -i C:\\private.ppk" endif if exists("g:netrw_list_cmd_options") let g:netrw_list_cmd= g:netrw_scp_cmd." -ls USEPORT HOSTNAME: ".g:netrw_list_cmd_options else let g:netrw_list_cmd= g:netrw_scp_cmd." -ls USEPORT HOSTNAME:" endif elseif executable(g:netrw_ssh_cmd) if exists("g:netrw_list_cmd_options") let g:netrw_list_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME ls -FLa ".g:netrw_list_cmd_options else let g:netrw_list_cmd= g:netrw_ssh_cmd." USEPORT HOSTNAME ls -FLa" endif else let g:netrw_list_cmd= "" endif endif call s:NetrwInit("g:netrw_list_hide","") if exists("g:netrw_local_copycmd") let g:netrw_localcopycmd= g:netrw_local_copycmd call netrw#ErrorMsg(s:NOTE,"g:netrw_local_copycmd is deprecated in favor of g:netrw_localcopycmd",84) endif if !exists("g:netrw_localcmdshell") let g:netrw_localcmdshell= "" endif if !exists("g:netrw_localcopycmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin let g:netrw_localcopycmd= "cp" else let g:netrw_localcopycmd= expand("$COMSPEC")." /c copy" endif elseif has("unix") || has("macunix") let g:netrw_localcopycmd= "cp" else let g:netrw_localcopycmd= "" endif endif if !exists("g:netrw_localcopydircmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin let g:netrw_localcopydircmd= "cp -R" else let g:netrw_localcopycmd= expand("$COMSPEC")." /c xcopy /e /c /h /i /k" endif elseif has("unix") || has("macunix") let g:netrw_localcopydircmd= "cp -R" else let g:netrw_localcopycmd= "" endif endif if exists("g:netrw_local_mkdir") let g:netrw_localmkdir= g:netrw_local_mkdir call netrw#ErrorMsg(s:NOTE,"g:netrw_local_mkdir is deprecated in favor of g:netrw_localmkdir",87) endif if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin call s:NetrwInit("g:netrw_localmkdir","mkdir") else let g:netrw_localmkdir= expand("$COMSPEC")." /c mkdir" endif else call s:NetrwInit("g:netrw_localmkdir","mkdir") endif call s:NetrwInit("g:netrw_remote_mkdir","mkdir") if exists("g:netrw_local_movecmd") let g:netrw_localmovecmd= g:netrw_local_movecmd call netrw#ErrorMsg(s:NOTE,"g:netrw_local_movecmd is deprecated in favor of g:netrw_localmovecmd",88) endif if !exists("g:netrw_localmovecmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin let g:netrw_localmovecmd= "mv" else let g:netrw_localmovecmd= expand("$COMSPEC")." /c move" endif elseif has("unix") || has("macunix") let g:netrw_localmovecmd= "mv" else let g:netrw_localmovecmd= "" endif endif if v:version < 704 || !has("patch1109") if exists("g:netrw_local_rmdir") let g:netrw_localrmdir= g:netrw_local_rmdir call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86) endif if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin call s:NetrwInit("g:netrw_localrmdir","rmdir") else let g:netrw_localrmdir= expand("$COMSPEC")." /c rmdir" endif else call s:NetrwInit("g:netrw_localrmdir","rmdir") endif endif call s:NetrwInit("g:netrw_liststyle" , s:THINLIST) if g:netrw_liststyle < 0 || g:netrw_liststyle >= s:MAXLIST let g:netrw_liststyle= s:THINLIST endif if g:netrw_liststyle == s:LONGLIST && g:netrw_scp_cmd !~ '^pscp' let g:netrw_list_cmd= g:netrw_list_cmd." -l" endif call s:NetrwInit("g:netrw_markfileesc" , '*./[\~') call s:NetrwInit("g:netrw_maxfilenamelen", 32) call s:NetrwInit("g:netrw_menu" , 1) call s:NetrwInit("g:netrw_mkdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir") call s:NetrwInit("g:netrw_mousemaps" , (exists("+mouse") && &mouse =~# '[anh]')) call s:NetrwInit("g:netrw_retmap" , 0) if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin) call s:NetrwInit("g:netrw_chgperm" , "chmod PERM FILENAME") elseif has("win32") || has("win95") || has("win64") || has("win16") call s:NetrwInit("g:netrw_chgperm" , "cacls FILENAME /e /p PERM") else call s:NetrwInit("g:netrw_chgperm" , "chmod PERM FILENAME") endif call s:NetrwInit("g:netrw_preview" , 0) call s:NetrwInit("g:netrw_scpport" , "-P") call s:NetrwInit("g:netrw_servername" , "NETRWSERVER") call s:NetrwInit("g:netrw_sshport" , "-p") call s:NetrwInit("g:netrw_rename_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mv") call s:NetrwInit("g:netrw_rm_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm") call s:NetrwInit("g:netrw_rmdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rmdir") call s:NetrwInit("g:netrw_rmf_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME rm -f ") call s:NetrwInit("g:netrw_quickhelp",0) let s:QuickHelp= ["-:go up dir D:delete R:rename s:sort-by x:special", \ "(create new) %:file d:directory", \ "(windows split&open) o:horz v:vert p:preview", \ "i:style qf:file info O:obtain r:reverse", \ "(marks) mf:mark file mt:set target mm:move mc:copy", \ "(bookmarks) mb:make mB:delete qb:list gb:go to", \ "(history) qb:list u:go up U:go down", \ "(targets) mt:target Tb:use bookmark Th:use history"] call s:NetrwInit("g:netrw_sepchr" , (&enc == "euc-jp")? "\" : "\") if !exists("g:netrw_keepj") || g:netrw_keepj == "keepj" call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "sil keepj " : "keepj ") else call s:NetrwInit("s:netrw_silentxfer" , (exists("g:netrw_silent") && g:netrw_silent != 0)? "sil " : " ") endif call s:NetrwInit("g:netrw_sort_by" , "name") " alternatives: date , size call s:NetrwInit("g:netrw_sort_options" , "") call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse (z y x ...) if !exists("g:netrw_sort_sequence") if has("unix") let g:netrw_sort_sequence= '[\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$' else let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$' endif endif call s:NetrwInit("g:netrw_special_syntax" , 0) call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$') call s:NetrwInit("g:netrw_suppress_gx_mesg", 1) call s:NetrwInit("g:netrw_use_noswf" , 1) call s:NetrwInit("g:netrw_sizestyle" ,"b") call s:NetrwInit("g:netrw_timefmt","%c") if !exists("g:netrw_xstrlen") if exists("g:Align_xstrlen") let g:netrw_xstrlen= g:Align_xstrlen elseif exists("g:drawit_xstrlen") let g:netrw_xstrlen= g:drawit_xstrlen elseif &enc == "latin1" || !has("multi_byte") let g:netrw_xstrlen= 0 else let g:netrw_xstrlen= 1 endif endif call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.") call s:NetrwInit("g:netrw_win95ftp",1) call s:NetrwInit("g:netrw_winsize",50) call s:NetrwInit("g:netrw_wiw",1) if g:netrw_winsize > 100|let g:netrw_winsize= 100|endif call s:NetrwInit("g:netrw_fname_escape",' ?&;%') if has("win32") || has("win95") || has("win64") || has("win16") call s:NetrwInit("g:netrw_glob_escape",'*?`{[]$') else call s:NetrwInit("g:netrw_glob_escape",'*[]?`{~$\') endif call s:NetrwInit("g:netrw_menu_escape",'.&? \') call s:NetrwInit("g:netrw_tmpfile_escape",' &;') call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\\"") if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4') let s:treedepthstring= "│ " else let s:treedepthstring= "| " endif call s:NetrwInit("s:netrw_nbcd",'{}') if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on") let &l:bexpr = "netrw#BalloonHelp()" au FileType netrw setl beval au WinLeave * if &ft == "netrw" && exists("s:initbeval")|let &beval= s:initbeval|endif au VimEnter * let s:initbeval= &beval endif au WinEnter * if &ft == "netrw"|call s:NetrwInsureWinVars()|endif if g:netrw_keepj =~# "keepj" com! -nargs=* NetrwKeepj keepj else let g:netrw_keepj= "" com! -nargs=* NetrwKeepj endif if v:version >= 700 && has("balloon_eval") && has("syntax") && exists("g:syntax_on") && !exists("g:netrw_nobeval") fun! netrw#BalloonHelp() if &ft != "netrw" return "" endif if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval) let mesg= "" elseif v:beval_text == "Netrw" || v:beval_text == "Directory" || v:beval_text == "Listing" let mesg = "i: thin-long-wide-tree gh: quick hide/unhide of dot-files qf: quick file info %:open new file" elseif getline(v:beval_lnum) =~ '^"\s*/' let mesg = ": edit/enter o: edit/enter in horiz window t: edit/enter in new tab v:edit/enter in vert window" elseif v:beval_text == "Sorted" || v:beval_text == "by" let mesg = 's: sort by name, time, file size, extension r: reverse sorting order mt: mark target' elseif v:beval_text == "Sort" || v:beval_text == "sequence" let mesg = "S: edit sorting sequence" elseif v:beval_text == "Hiding" || v:beval_text == "Showing" let mesg = "a: hiding-showing-all ctrl-h: editing hiding list mh: hide/show by suffix" elseif v:beval_text == "Quick" || v:beval_text == "Help" let mesg = "Help: press " elseif v:beval_text == "Copy/Move" || v:beval_text == "Tgt" let mesg = "mt: mark target mc: copy marked file to target mm: move marked file to target" else let mesg= "" endif return mesg endfun endif fun! netrw#Explore(indx,dosplit,style,...) if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif if &ft != "netrw" let w:netrw_rexfile= expand("%:p") endif let curdir = simplify(b:netrw_curdir) let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') if !exists("g:netrw_cygwin") && (has("win32") || has("win95") || has("win64") || has("win16")) let curdir= substitute(curdir,'\','/','g') endif if a:0 > 0 if a:1 =~ "\\\s" && !filereadable(s:NetrwFile(a:1)) && !isdirectory(s:NetrwFile(a:1)) call netrw#Explore(a:indx,a:dosplit,a:style,substitute(a:1,'\\\(\s\)','\1','g')) return endif endif if has("clipboard") sil! let keepregstar = @* sil! let keepregplus = @+ endif sil! let keepregslash= @/ if a:dosplit || (&modified && &hidden == 0 && &bufhidden != "hide") || a:style == 6 call s:SaveWinVars() let winsz= g:netrw_winsize if a:indx > 0 let winsz= a:indx endif if a:style == 0 " Explore, Sexplore let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz if winsz == 0|let winsz= ""|endif exe "noswapfile ".winsz."wincmd s" elseif a:style == 1 "Explore!, Sexplore! let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz if winsz == 0|let winsz= ""|endif exe "keepalt noswapfile ".winsz."wincmd v" elseif a:style == 2 " Hexplore let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz if winsz == 0|let winsz= ""|endif exe "keepalt noswapfile bel ".winsz."wincmd s" elseif a:style == 3 " Hexplore! let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz if winsz == 0|let winsz= ""|endif exe "keepalt noswapfile abo ".winsz."wincmd s" elseif a:style == 4 " Vexplore let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz if winsz == 0|let winsz= ""|endif exe "keepalt noswapfile lefta ".winsz."wincmd v" elseif a:style == 5 " Vexplore! let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz if winsz == 0|let winsz= ""|endif exe "keepalt noswapfile rightb ".winsz."wincmd v" elseif a:style == 6 " Texplore call s:SaveBufVars() exe "keepalt tabnew ".fnameescape(curdir) call s:RestoreBufVars() endif call s:RestoreWinVars() endif NetrwKeepj norm! 0 if a:0 > 0 if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)) let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),'')) elseif a:1 == '.' let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd()) if dirname !~ '/$' let dirname= dirname."/" endif elseif a:1 =~ '\$' let dirname= simplify(expand(a:1)) elseif a:1 !~ '^\*\{1,2}/' && a:1 !~ '^\a\{3,}://' let dirname= simplify(a:1) else let dirname= a:1 endif else call s:NetrwClearExplore() return endif if dirname =~ '\.\./\=$' let dirname= simplify(fnamemodify(dirname,':p:h')) elseif dirname =~ '\.\.' || dirname == '.' let dirname= simplify(fnamemodify(dirname,':p')) endif if dirname =~ '^\*//' let pattern= substitute(dirname,'^\*//\(.*\)$','\1','') let starpat= 1 if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif elseif dirname =~ '^\*\*//' let pattern= substitute(dirname,'^\*\*//','','') let starpat= 2 elseif dirname =~ '/\*\*/' let prefixdir= substitute(dirname,'^\(.\{-}\)\*\*.*$','\1','') if prefixdir =~ '^/' || (prefixdir =~ '^\a:/' && (has("win32") || has("win95") || has("win64") || has("win16"))) let b:netrw_curdir = prefixdir else let b:netrw_curdir= getcwd().'/'.prefixdir endif let dirname= substitute(dirname,'^.\{-}\(\*\*/.*\)$','\1','') let starpat= 4 elseif dirname =~ '^\*/' let starpat= 3 elseif dirname=~ '^\*\*/' let starpat= 4 else let starpat= 0 endif if starpat == 0 && a:indx >= 0 if dirname == "" let dirname= curfiledir endif if dirname =~# '^scp://' || dirname =~ '^ftp://' call netrw#Nread(2,dirname) else if dirname == "" let dirname= getcwd() elseif (has("win32") || has("win95") || has("win64") || has("win16")) && !g:netrw_cygwin if dirname !~ '^[a-zA-Z]:' && dirname !~ '^\\\\\w\+' && dirname !~ '^//\w\+' let dirname= b:netrw_curdir."/".dirname endif elseif dirname !~ '^/' let dirname= b:netrw_curdir."/".dirname endif call netrw#LocalBrowseCheck(dirname) endif if exists("w:netrw_bannercnt") exe w:netrw_bannercnt endif elseif a:indx <= 0 if !mapcheck("","n") && !mapcheck("","n") && exists("b:netrw_curdir") let s:didstarstar= 1 nnoremap :Pexplore nnoremap :Nexplore endif if has("path_extra") if !exists("w:netrw_explore_indx") let w:netrw_explore_indx= 0 endif let indx = a:indx if indx == -1 if !exists("w:netrw_explore_list") " sanity check NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or improperly; see help for netrw-starstar",40) if has("clipboard") sil! let @* = keepregstar sil! let @+ = keepregstar endif sil! let @/ = keepregslash return endif let indx= w:netrw_explore_indx if indx < 0 | let indx= 0 | endif if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif let curfile= w:netrw_explore_list[indx] while indx < w:netrw_explore_listlen && curfile == w:netrw_explore_list[indx] let indx= indx + 1 endwhile if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif elseif indx == -2 if !exists("w:netrw_explore_list") " sanity check NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or improperly; see help for netrw-starstar",41) if has("clipboard") sil! let @* = keepregstar sil! let @+ = keepregstar endif sil! let @/ = keepregslash return endif let indx= w:netrw_explore_indx if indx < 0 | let indx= 0 | endif if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif let curfile= w:netrw_explore_list[indx] while indx >= 0 && curfile == w:netrw_explore_list[indx] let indx= indx - 1 endwhile if indx < 0 | let indx= 0 | endif else NetrwKeepj keepalt call s:NetrwClearExplore() let w:netrw_explore_indx= 0 if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif if starpat == 1 try exe "NetrwKeepj noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*" catch /^Vim\%((\a\+)\)\=:E480/ keepalt call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76) return endtry let w:netrw_explore_list = s:NetrwExploreListUniq(map(getqflist(),'bufname(v:val.bufnr)')) if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif elseif starpat == 2 try exe "sil NetrwKeepj noautocmd keepalt vimgrep /".pattern."/gj "."**/*" catch /^Vim\%((\a\+)\)\=:E480/ keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif if has("clipboard") sil! let @* = keepregstar sil! let @+ = keepregstar endif sil! let @/ = keepregslash return endtry let s:netrw_curdir = b:netrw_curdir let w:netrw_explore_list = getqflist() let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)')) if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif elseif starpat == 3 let filepat= substitute(dirname,'^\*/','','') let filepat= substitute(filepat,'^[%#<]','\\&','') let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n')) if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif elseif starpat == 4 let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n')) if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif endif " switch on starpat to build w:netrw_explore_list let w:netrw_explore_listlen = len(w:netrw_explore_list) if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/') keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) if has("clipboard") sil! let @* = keepregstar sil! let @+ = keepregstar endif sil! let @/ = keepregslash return endif endif " if indx ... endif let w:netrw_explore_indx= indx if indx >= w:netrw_explore_listlen || indx < 0 let indx = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0 let w:netrw_explore_indx= indx keepalt NetrwKeepj call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43) endif exe "let dirfile= w:netrw_explore_list[".indx."]" let newdir= substitute(dirfile,'/[^/]*$','','e') call netrw#LocalBrowseCheck(newdir) if !exists("w:netrw_liststyle") let w:netrw_liststyle= g:netrw_liststyle endif if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:LONGLIST keepalt NetrwKeepj call search('^'.substitute(dirfile,"^.*/","","").'\>',"W") else keepalt NetrwKeepj call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w") endif let w:netrw_explore_mtchcnt = indx + 1 let w:netrw_explore_bufnr = bufnr("%") let w:netrw_explore_line = line(".") keepalt NetrwKeepj call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}') else if !exists("g:netrw_quiet") keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44) endif if has("clipboard") sil! let @* = keepregstar sil! let @+ = keepregstar endif sil! let @/ = keepregslash return endif else if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/' sil! unlet w:netrw_treedict sil! unlet w:netrw_treetop endif let newdir= dirname if !exists("b:netrw_curdir") NetrwKeepj call netrw#LocalBrowseCheck(getcwd()) else NetrwKeepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir)) endif endif if exists("w:netrw_explore_indx") && exists("b:netrw_curdir") if !exists("s:explore_prvdir") || s:explore_prvdir != b:netrw_curdir let s:explore_prvdir = b:netrw_curdir let s:explore_match = "" let dirlen = strlen(b:netrw_curdir) if b:netrw_curdir !~ '/$' let dirlen= dirlen + 1 endif let prvfname= "" for fname in w:netrw_explore_list if fname =~ '^'.b:netrw_curdir if s:explore_match == "" let s:explore_match= '\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>' else let s:explore_match= s:explore_match.'\|\<'.escape(strpart(fname,dirlen),g:netrw_markfileesc).'\>' endif elseif fname !~ '^/' && fname != prvfname if s:explore_match == "" let s:explore_match= '\<'.escape(fname,g:netrw_markfileesc).'\>' else let s:explore_match= s:explore_match.'\|\<'.escape(fname,g:netrw_markfileesc).'\>' endif endif let prvfname= fname endfor exe "2match netrwMarkFile /".s:explore_match."/" endif echo "==Pexplore ==Nexplore" else 2match none if exists("s:explore_match") | unlet s:explore_match | endif if exists("s:explore_prvdir") | unlet s:explore_prvdir | endif echo " " endif let s:netrw_events= 2 if has("clipboard") sil! let @* = keepregstar sil! let @+ = keepregstar endif sil! let @/ = keepregslash endfun fun! netrw#Lexplore(count,rightside,...) let curwin= winnr() if a:0 > 0 && a:1 != "" let a1 = expand(a:1) exe "1wincmd w" if &ft == "netrw" exe "Explore ".fnameescape(a1) exe curwin."wincmd w" if exists("t:netrw_lexposn") unlet t:netrw_lexposn endif return endif exe curwin."wincmd w" else let a1= "" endif if exists("t:netrw_lexbufnr") let lexwinnr = bufwinnr(t:netrw_lexbufnr) else let lexwinnr= 0 endif if lexwinnr > 0 exe lexwinnr."wincmd w" let g:netrw_winsize = -winwidth(0) let t:netrw_lexposn = winsaveview() close if lexwinnr < curwin let curwin= curwin - 1 endif exe curwin."wincmd w" unlet t:netrw_lexbufnr else exe "1wincmd w" let keep_altv = g:netrw_altv let g:netrw_altv = 0 if a:count != 0 let netrw_winsize = g:netrw_winsize let g:netrw_winsize = a:count endif let curfile= expand("%") exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new" if a:0 > 0 && a1 != "" exe "Explore ".fnameescape(a1) elseif curfile =~ '^\a\{3,}://' exe "Explore ".substitute(curfile,'[^/\\]*$','','') else Explore . endif if a:count != 0 let g:netrw_winsize = netrw_winsize endif setlocal winfixwidth let g:netrw_altv = keep_altv let t:netrw_lexbufnr = bufnr("%") if exists("t:netrw_lexposn") call winrestview(t:netrw_lexposn) unlet t:netrw_lexposn endif endif if exists("g:netrw_chgwin") && g:netrw_chgwin == -1 if a:rightside let g:netrw_chgwin= 1 else let g:netrw_chgwin= 2 endif endif endfun fun! netrw#Clean(sys) if a:sys let choice= confirm("Remove personal and system copies of netrw?","&Yes\n&No") else let choice= confirm("Remove personal copy of netrw?","&Yes\n&No") endif let diddel= 0 let diddir= "" if choice == 1 for dir in split(&rtp,',') if filereadable(dir."/plugin/netrwPlugin.vim") if s:NetrwDelete(dir."/plugin/netrwPlugin.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/plugin/netrwPlugin.vim",55) |endif if s:NetrwDelete(dir."/autoload/netrwFileHandlers.vim")|call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwFileHandlers.vim",55)|endif if s:NetrwDelete(dir."/autoload/netrwSettings.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwSettings.vim",55) |endif if s:NetrwDelete(dir."/autoload/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrw.vim",55) |endif if s:NetrwDelete(dir."/syntax/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrw.vim",55) |endif if s:NetrwDelete(dir."/syntax/netrwlist.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrwlist.vim",55) |endif let diddir= dir let diddel= diddel + 1 if !a:sys|break|endif endif endfor endif echohl WarningMsg if diddel == 0 echomsg "netrw is either not installed or not removable" elseif diddel == 1 echomsg "removed one copy of netrw from <".diddir.">" else echomsg "removed ".diddel." copies of netrw" endif echohl None endfun fun! netrw#MakeTgt(dname) let svpos = winsaveview() let s:netrwmftgt_islocal= (a:dname !~ '^\a\{3,}://') if s:netrwmftgt_islocal let netrwmftgt= simplify(a:dname) else let netrwmftgt= a:dname endif if exists("s:netrwmftgt") && netrwmftgt == s:netrwmftgt unlet s:netrwmftgt s:netrwmftgt_islocal else let s:netrwmftgt= netrwmftgt endif if g:netrw_fastbrowse <= 1 call s:NetrwRefresh((b:netrw_curdir !~ '\a\{3,}://'),b:netrw_curdir) endif call winrestview(svpos) endfun fun! netrw#Obtain(islocal,fname,...) if type(a:fname) == 1 let fnamelist= [ a:fname ] elseif type(a:fname) == 3 let fnamelist= a:fname else call netrw#ErrorMsg(s:ERROR,"attempting to use NetrwObtain on something not a filename or a list",62) return endif if a:0 > 0 let tgtdir= a:1 else let tgtdir= getcwd() endif if exists("b:netrw_islocal") && b:netrw_islocal if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir let topath= s:ComposePath(tgtdir,"") if (has("win32") || has("win95") || has("win64") || has("win16")) for fname in fnamelist call system(g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) return endif endfor else let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) call system(g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) return endif endif elseif !exists("b:netrw_curdir") call netrw#ErrorMsg(s:ERROR,"local browsing directory doesn't exist!",36) else call netrw#ErrorMsg(s:WARNING,"local browsing directory and current directory are identical",37) endif else if type(a:fname) == 1 call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.a:fname) endif call s:NetrwMethod(b:netrw_curdir) if b:netrw_method == 4 if exists("g:netrw_port") && g:netrw_port != "" let useport= " ".g:netrw_scpport." ".g:netrw_port else let useport= "" endif if b:netrw_fname =~ '/' let path= substitute(b:netrw_fname,'^\(.*/\).\{-}$','\1','') else let path= "" endif let filelist= join(map(deepcopy(fnamelist),'s:ShellEscape(g:netrw_machine.":".path.v:val,1)')) call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) elseif b:netrw_method == 2 call s:SaveBufVars()|sil NetrwKeepj new|call s:RestoreBufVars() let tmpbufnr= bufnr("%") setl ff=unix if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" NetrwKeepj put =g:netrw_ftpmode endif if exists("b:netrw_fname") && b:netrw_fname != "" call setline(line("$")+1,'cd "'.b:netrw_fname.'"') endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif for fname in fnamelist call setline(line("$")+1,'get "'.fname.'"') endfor if exists("g:netrw_port") && g:netrw_port != "" call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) else call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) endif if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' let debugkeep= &debug setl debug=msg call netrw#ErrorMsg(s:ERROR,getline(1),4) let &debug= debugkeep endif elseif b:netrw_method == 3 call s:SaveBufVars()|sil NetrwKeepj new|call s:RestoreBufVars() let tmpbufnr= bufnr("%") setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif if exists("g:netrw_uid") && g:netrw_uid != "" if exists("g:netrw_ftp") && g:netrw_ftp == 1 NetrwKeepj put =g:netrw_uid if exists("s:netrw_passwd") && s:netrw_passwd != "" NetrwKeepj put ='\"'.s:netrw_passwd.'\"' endif elseif exists("s:netrw_passwd") NetrwKeepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' endif endif if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" NetrwKeepj put =g:netrw_ftpmode endif if exists("b:netrw_fname") && b:netrw_fname != "" NetrwKeepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"') endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif for fname in fnamelist NetrwKeepj call setline(line("$")+1,'get "'.fname.'"') endfor NetrwKeepj norm! 1Gdd call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) if getline(1) !~ "^$" if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,getline(1),5) endif endif elseif b:netrw_method == 9 if a:fname =~ '/' let localfile= substitute(a:fname,'^.*/','','') else let localfile= a:fname endif call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1).s:ShellEscape(localfile)." ".s:ShellEscape(tgtdir)) elseif !exists("b:netrw_method") || b:netrw_method < 0 return else if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"current protocol not supported for obtaining file",97) endif return endif if type(a:fname) == 1 && exists("s:netrw_users_stl") NetrwKeepj call s:SetupNetrwStatusLine(s:netrw_users_stl) endif endif if exists("tmpbufnr") if bufnr("%") != tmpbufnr exe tmpbufnr."bw!" else q! endif endif endfun fun! netrw#Nread(mode,fname) let svpos= winsaveview() call netrw#NetRead(a:mode,a:fname) call winrestview(svpos) if exists("w:netrw_liststyle") && w:netrw_liststyle != s:TREELIST if exists("w:netrw_bannercnt") exe w:netrw_bannercnt endif endif endfun fun! s:NetrwOptionRestore(vt) if !exists("{a:vt}netrw_optionsave") call s:RestorePosn(s:netrw_nbcd) return endif unlet {a:vt}netrw_optionsave if exists("+acd") if exists("{a:vt}netrw_acdkeep") let curdir = getcwd() let &l:acd = {a:vt}netrw_acdkeep unlet {a:vt}netrw_acdkeep if &l:acd call s:NetrwLcd(curdir) endif endif endif if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif if exists("{a:vt}netrw_blkeep") |let &l:bl = {a:vt}netrw_blkeep |unlet {a:vt}netrw_blkeep |endif if exists("{a:vt}netrw_btkeep") |let &l:bt = {a:vt}netrw_btkeep |unlet {a:vt}netrw_btkeep |endif if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif if exists("{a:vt}netrw_cedit") |let &cedit = {a:vt}netrw_cedit |unlet {a:vt}netrw_cedit |endif if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif if exists("{a:vt}netrw_diffkeep") |let &l:diff = {a:vt}netrw_diffkeep |unlet {a:vt}netrw_diffkeep |endif if exists("{a:vt}netrw_fenkeep") |let &l:fen = {a:vt}netrw_fenkeep |unlet {a:vt}netrw_fenkeep |endif if exists("g:netrw_ffkep") && g:netrw_ffkeep if exists("{a:vt}netrw_ffkeep") |let &l:ff = {a:vt}netrw_ffkeep |unlet {a:vt}netrw_ffkeep |endif endif if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif if exists("{a:vt}netrw_iskkeep") |let &l:isk = {a:vt}netrw_iskkeep |unlet {a:vt}netrw_iskkeep |endif if exists("{a:vt}netrw_lskeep") |let &l:ls = {a:vt}netrw_lskeep |unlet {a:vt}netrw_lskeep |endif if exists("{a:vt}netrw_makeep") |let &l:ma = {a:vt}netrw_makeep |unlet {a:vt}netrw_makeep |endif if exists("{a:vt}netrw_magickeep")|let &l:magic = {a:vt}netrw_magickeep |unlet {a:vt}netrw_magickeep|endif if exists("{a:vt}netrw_modkeep") |let &l:mod = {a:vt}netrw_modkeep |unlet {a:vt}netrw_modkeep |endif if exists("{a:vt}netrw_nukeep") |let &l:nu = {a:vt}netrw_nukeep |unlet {a:vt}netrw_nukeep |endif if exists("{a:vt}netrw_rnukeep") |let &l:rnu = {a:vt}netrw_rnukeep |unlet {a:vt}netrw_rnukeep |endif if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif if exists("{a:vt}netrw_rokeep") |let &l:ro = {a:vt}netrw_rokeep |unlet {a:vt}netrw_rokeep |endif if exists("{a:vt}netrw_selkeep") |let &l:sel = {a:vt}netrw_selkeep |unlet {a:vt}netrw_selkeep |endif if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif if has("clipboard") if exists("{a:vt}netrw_starkeep") |let @* = {a:vt}netrw_starkeep |unlet {a:vt}netrw_starkeep |endif endif if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif if exists("{a:vt}netrw_wrapkeep") |let &l:wrap = {a:vt}netrw_wrapkeep |unlet {a:vt}netrw_wrapkeep |endif if exists("{a:vt}netrw_writekeep")|let &l:write = {a:vt}netrw_writekeep |unlet {a:vt}netrw_writekeep|endif if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif if exists("{a:vt}netrw_swfkeep") if &directory == "" let &l:directory= getcwd() sil! let &l:swf = {a:vt}netrw_swfkeep setl directory= unlet {a:vt}netrw_swfkeep elseif &l:swf != {a:vt}netrw_swfkeep if !g:netrw_use_noswf sil! let &l:swf= {a:vt}netrw_swfkeep endif unlet {a:vt}netrw_swfkeep endif endif if exists("{a:vt}netrw_dirkeep") && isdirectory(s:NetrwFile({a:vt}netrw_dirkeep)) && g:netrw_keepdir let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g') if exists("{a:vt}netrw_dirkeep") call s:NetrwLcd(dirkeep) unlet {a:vt}netrw_dirkeep endif endif if has("clipboard") if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif endif if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif call s:RestorePosn(s:netrw_nbcd) if &ft != "netrw" filetype detect endif endfun fun! s:NetrwOptionSave(vt) if !exists("{a:vt}netrw_optionsave") let {a:vt}netrw_optionsave= 1 else return endif let s:yykeep = @@ if exists("&l:acd")|let {a:vt}netrw_acdkeep = &l:acd|endif let {a:vt}netrw_aikeep = &l:ai let {a:vt}netrw_awkeep = &l:aw let {a:vt}netrw_bhkeep = &l:bh let {a:vt}netrw_blkeep = &l:bl let {a:vt}netrw_btkeep = &l:bt let {a:vt}netrw_bombkeep = &l:bomb let {a:vt}netrw_cedit = &cedit let {a:vt}netrw_cikeep = &l:ci let {a:vt}netrw_cinkeep = &l:cin let {a:vt}netrw_cinokeep = &l:cino let {a:vt}netrw_comkeep = &l:com let {a:vt}netrw_cpokeep = &l:cpo let {a:vt}netrw_diffkeep = &l:diff let {a:vt}netrw_fenkeep = &l:fen if !exists("g:netrw_ffkeep") || g:netrw_ffkeep let {a:vt}netrw_ffkeep = &l:ff endif let {a:vt}netrw_fokeep = &l:fo " formatoptions let {a:vt}netrw_gdkeep = &l:gd " gdefault let {a:vt}netrw_hidkeep = &l:hidden let {a:vt}netrw_imkeep = &l:im let {a:vt}netrw_iskkeep = &l:isk let {a:vt}netrw_lskeep = &l:ls let {a:vt}netrw_makeep = &l:ma let {a:vt}netrw_magickeep = &l:magic let {a:vt}netrw_modkeep = &l:mod let {a:vt}netrw_nukeep = &l:nu let {a:vt}netrw_rnukeep = &l:rnu let {a:vt}netrw_repkeep = &l:report let {a:vt}netrw_rokeep = &l:ro let {a:vt}netrw_selkeep = &l:sel let {a:vt}netrw_spellkeep = &l:spell if !g:netrw_use_noswf let {a:vt}netrw_swfkeep = &l:swf endif if has("clipboard") let {a:vt}netrw_starkeep = @* endif let {a:vt}netrw_tskeep = &l:ts let {a:vt}netrw_twkeep = &l:tw " textwidth let {a:vt}netrw_wigkeep = &l:wig " wildignore let {a:vt}netrw_wrapkeep = &l:wrap let {a:vt}netrw_writekeep = &l:write if g:netrw_keepdir let {a:vt}netrw_dirkeep = getcwd() endif if has("clipboard") if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif endif sil! let {a:vt}netrw_regslash= @/ endfun fun! s:NetrwSafeOptions() if exists("+acd") | setl noacd | endif setl noai setl noaw setl nobl setl nobomb setl bt=nofile setl noci setl nocin setl bh=hide setl cino= setl com= setl cpo-=a setl cpo-=A setl fo=nroql2 setl nohid setl noim setl isk+=@ isk+=* isk+=/ setl magic if g:netrw_use_noswf setl noswf endif setl report=10000 setl sel=inclusive setl nospell setl tw=0 setl wig= setl cedit& call s:NetrwCursor() if &ft == "netrw" sil! keepalt NetrwKeepj doau FileType netrw endif endfun fun! NetrwStatusLine() if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list") let &stl = s:netrw_users_stl let &laststatus = s:netrw_users_ls if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif if exists("w:netrw_explore_line") |unlet w:netrw_explore_line |endif return "" else return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen endif endfun fun! netrw#NetRead(mode,...) call s:NetrwOptionSave("w:") call s:NetrwSafeOptions() call s:RestoreCursorline() setl bl if a:mode == 0 " read remote file before current line let readcmd = "0r" elseif a:mode == 1 " read file after current line let readcmd = "r" elseif a:mode == 2 " replace with remote file let readcmd = "%r" elseif a:mode == 3 " skip read of file (leave as temporary) let readcmd = "t" else exe a:mode let readcmd = "r" endif let ichoice = (a:0 == 0)? 0 : 1 let tmpfile= s:GetTempfile("") if tmpfile == "" return endif while ichoice <= a:0 if exists("b:netrw_lastfile") && a:0 == 0 let choice = b:netrw_lastfile let ichoice= ichoice + 1 else exe "let choice= a:" . ichoice if match(choice,"?") == 0 echomsg 'NetRead Usage:' echomsg ':Nread machine:path uses rcp' echomsg ':Nread "machine path" uses ftp with <.netrc>' echomsg ':Nread "machine id password path" uses ftp' echomsg ':Nread dav://machine[:port]/path uses cadaver' echomsg ':Nread fetch://machine/path uses fetch' echomsg ':Nread ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' echomsg ':Nread http://[user@]machine/path uses http wget' echomsg ':Nread file:///path uses elinks' echomsg ':Nread https://[user@]machine/path uses http wget' echomsg ':Nread rcp://[user@]machine/path uses rcp' echomsg ':Nread rsync://machine[:port]/path uses rsync' echomsg ':Nread scp://[user@]machine[[:#]port]/path uses scp' echomsg ':Nread sftp://[user@]machine[[:#]port]/path uses sftp' sleep 4 break elseif match(choice,'^"') != -1 if match(choice,'"$') != -1 let choice= strpart(choice,1,strlen(choice)-2) else let choice = strpart(choice,1,strlen(choice)-1) let wholechoice = "" while match(choice,'"$') == -1 let wholechoice = wholechoice . " " . choice let ichoice = ichoice + 1 if ichoice > a:0 if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",3) endif return endif let choice= a:{ichoice} endwhile let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) endif endif endif let ichoice= ichoice + 1 call s:NetrwMethod(choice) if !exists("b:netrw_method") || b:netrw_method < 0 return endif let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^https\=://' NetrwKeepj call s:NetrwBrowse(0,choice) return endif if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 echo "(netrw) Processing your read request..." endif if b:netrw_method == 1 " read with rcp if s:netrw_has_nt_rcp == 1 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_machine .'.'. g:netrw_uid else let uid_machine = g:netrw_machine .'.'. $USERNAME endif else if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_uid .'@'. g:netrw_machine else let uid_machine = g:netrw_machine endif endif call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".s:ShellEscape(uid_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 2 " read with ftp + <.netrc> let netrw_fname= b:netrw_fname NetrwKeepj call s:SaveBufVars()|new|NetrwKeepj call s:RestoreBufVars() let filtbuf= bufnr("%") setl ff=unix NetrwKeepj put =g:netrw_ftpmode if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile) if exists("g:netrw_port") && g:netrw_port != "" call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) else call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) endif if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' let debugkeep = &debug setl debug=msg NetrwKeepj call netrw#ErrorMsg(s:ERROR,getline(1),4) let &debug = debugkeep endif call s:SaveBufVars() keepj bd! if bufname("%") == "" && getline("$") == "" && line('$') == 1 q! endif call s:RestoreBufVars() let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) NetrwKeepj call s:SaveBufVars()|new|NetrwKeepj call s:RestoreBufVars() let filtbuf= bufnr("%") setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif if exists("g:netrw_uid") && g:netrw_uid != "" if exists("g:netrw_ftp") && g:netrw_ftp == 1 NetrwKeepj put =g:netrw_uid if exists("s:netrw_passwd") NetrwKeepj put ='\"'.s:netrw_passwd.'\"' endif elseif exists("s:netrw_passwd") NetrwKeepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' endif endif if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" NetrwKeepj put =g:netrw_ftpmode endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif NetrwKeepj put ='get \"'.netrw_fname.'\" '.tmpfile NetrwKeepj norm! 1Gdd call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) if getline(1) !~ "^$" if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,getline(1),5) endif endif call s:SaveBufVars()|keepj bd!|call s:RestoreBufVars() let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 4 " read with scp if exists("g:netrw_port") && g:netrw_port != "" let useport= " ".g:netrw_scpport." ".g:netrw_port else let useport= "" endif if g:netrw_scp_cmd =~ '^scp' && (has("win32") || has("win95") || has("win64") || has("win16")) let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') else let tmpfile_get = tmpfile endif call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile_get,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 5 if g:netrw_http_cmd == "" if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"neither the wget nor the fetch command is available",6) endif return endif if match(b:netrw_fname,"#") == -1 || exists("g:netrw_http_xcmd") if exists("g:netrw_http_xcmd") call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_cmd." ".s:ShellEscape(b:netrw_http."://".g:netrw_machine.b:netrw_fname,1)." ".g:netrw_http_xcmd." ".s:ShellEscape(tmpfile,1)) else call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(b:netrw_http."://".g:netrw_machine.b:netrw_fname,1)) endif let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) else let netrw_html= substitute(b:netrw_fname,"#.*$","","") let netrw_tag = substitute(b:netrw_fname,"^.*#","","") call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(b:netrw_http."://".g:netrw_machine.netrw_html,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) exe 'NetrwKeepj norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\" endif let b:netrw_lastfile = choice setl ro nomod elseif b:netrw_method == 6 if !executable(g:netrw_dav_cmd) call netrw#ErrorMsg(s:ERROR,g:netrw_dav_cmd." is not executable",73) return endif if g:netrw_dav_cmd =~ "curl" call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_dav_cmd." ".s:ShellEscape("dav://".g:netrw_machine.b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) else let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif if exists("g:netrw_uid") && exists("s:netrw_passwd") && g:netrw_uid != "" NetrwKeepj put ='user '.g:netrw_uid.' '.s:netrw_passwd endif NetrwKeepj put ='get '.netrw_fname.' '.tmpfile NetrwKeepj put ='quit' NetrwKeepj norm! 1Gdd call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd) keepj bd! endif let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 7 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 8 if g:netrw_fetch_cmd == "" if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"fetch command not available",7) endif return endif if exists("g:netrw_option") && g:netrw_option =~ ":https\=" let netrw_option= "http" else let netrw_option= "ftp" endif if exists("g:netrw_uid") && g:netrw_uid != "" && exists("s:netrw_passwd") && s:netrw_passwd != "" call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1)) else call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1)) endif let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice setl ro nomod elseif b:netrw_method == 9 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice elseif b:netrw_method == 10 && exists("g:netrw_file_cmd") call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_file_cmd." ".s:ShellEscape(b:netrw_fname,1)." ".tmpfile) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice else call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",8) endif endwhile if exists("b:netrw_method") unlet b:netrw_method unlet b:netrw_fname endif if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' && tmpfile !~ '.tar.xz$' && tmpfile !~ '.txz' NetrwKeepj call s:NetrwDelete(tmpfile) endif NetrwKeepj call s:NetrwOptionRestore("w:") endfun fun! netrw#NetWrite(...) range let mod= 0 call s:NetrwOptionSave("w:") call s:NetrwSafeOptions() let tmpfile= s:GetTempfile("") if tmpfile == "" return endif if a:0 == 0 let ichoice = 0 else let ichoice = 1 endif let curbufname= expand("%") if &binary exe "sil NetrwKeepj w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile) elseif g:netrw_cygwin let cygtmpfile= substitute(tmpfile,g:netrw_cygdrive.'/\(.\)','\1:','') exe "sil NetrwKeepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile) else exe "sil NetrwKeepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile) endif if curbufname == "" 0file! endif while ichoice <= a:0 if exists("b:netrw_lastfile") && a:0 == 0 let choice = b:netrw_lastfile let ichoice= ichoice + 1 else exe "let choice= a:" . ichoice if match(choice,"?") == 0 echomsg 'NetWrite Usage:"' echomsg ':Nwrite machine:path uses rcp' echomsg ':Nwrite "machine path" uses ftp with <.netrc>' echomsg ':Nwrite "machine id password path" uses ftp' echomsg ':Nwrite dav://[user@]machine/path uses cadaver' echomsg ':Nwrite fetch://[user@]machine/path uses fetch' echomsg ':Nwrite ftp://machine[#port]/path uses ftp (autodetects <.netrc>)' echomsg ':Nwrite rcp://machine/path uses rcp' echomsg ':Nwrite rsync://[user@]machine/path uses rsync' echomsg ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' echomsg ':Nwrite sftp://[user@]machine/path uses sftp' sleep 4 break elseif match(choice,"^\"") != -1 if match(choice,"\"$") != -1 let choice=strpart(choice,1,strlen(choice)-2) else let choice = strpart(choice,1,strlen(choice)-1) let wholechoice = "" while match(choice,"\"$") == -1 let wholechoice= wholechoice . " " . choice let ichoice = ichoice + 1 if choice > a:0 if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"Unbalanced string in filename '". wholechoice ."'",13) endif return endif let choice= a:{ichoice} endwhile let choice= strpart(wholechoice,1,strlen(wholechoice)-1) . " " . strpart(choice,0,strlen(choice)-1) endif endif endif let ichoice= ichoice + 1 NetrwKeepj call s:NetrwMethod(choice) if !exists("b:netrw_method") || b:netrw_method < 0 return endif if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 echo "(netrw) Processing your write request..." endif if b:netrw_method == 1 if s:netrw_has_nt_rcp == 1 if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_machine .'.'. g:netrw_uid else let uid_machine = g:netrw_machine .'.'. $USERNAME endif else if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_uid .'@'. g:netrw_machine else let uid_machine = g:netrw_machine endif endif call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(uid_machine.":".b:netrw_fname,1)) let b:netrw_lastfile = choice elseif b:netrw_method == 2 let netrw_fname = b:netrw_fname let bhkeep = &l:bh let curbuf = bufnr("%") setl bh=hide keepj keepalt enew setl ff=unix NetrwKeepj put =g:netrw_ftpmode if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif NetrwKeepj call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"') if exists("g:netrw_port") && g:netrw_port != "" call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) else call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) endif if getline(1) !~ "^$" if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,getline(1),14) endif let mod=1 endif let filtbuf= bufnr("%") exe curbuf."b!" let &l:bh = bhkeep exe filtbuf."bw!" let b:netrw_lastfile = choice elseif b:netrw_method == 3 let netrw_fname = b:netrw_fname let bhkeep = &l:bh let curbuf = bufnr("%") setl bh=hide keepj keepalt enew setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif if exists("g:netrw_uid") && g:netrw_uid != "" if exists("g:netrw_ftp") && g:netrw_ftp == 1 NetrwKeepj put =g:netrw_uid if exists("s:netrw_passwd") && s:netrw_passwd != "" NetrwKeepj put ='\"'.s:netrw_passwd.'\"' endif elseif exists("s:netrw_passwd") && s:netrw_passwd != "" NetrwKeepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' endif endif NetrwKeepj put =g:netrw_ftpmode if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif NetrwKeepj put ='put \"'.tmpfile.'\" \"'.netrw_fname.'\"' let b:netrw_lastfile = choice NetrwKeepj norm! 1Gdd call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) if getline(1) !~ "^$" if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,getline(1),15) endif let mod=1 endif let filtbuf= bufnr("%") exe curbuf."b!" let &l:bh= bhkeep exe filtbuf."bw!" elseif b:netrw_method == 4 if exists("g:netrw_port") && g:netrw_port != "" let useport= " ".g:netrw_scpport." ".fnameescape(g:netrw_port) else let useport= "" endif call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)) let b:netrw_lastfile = choice elseif b:netrw_method == 5 let curl= substitute(g:netrw_http_put_cmd,'\s\+.*$',"","") if executable(curl) let url= g:netrw_choice call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) elseif !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd".">".",16) endif elseif b:netrw_method == 6 let netrw_fname = escape(b:netrw_fname,g:netrw_fname_escape) let bhkeep = &l:bh let curbuf = bufnr("%") setl bh=hide keepj keepalt enew setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif if exists("g:netrw_uid") && exists("s:netrw_passwd") && g:netrw_uid != "" NetrwKeepj put ='user '.g:netrw_uid.' '.s:netrw_passwd endif NetrwKeepj put ='put '.tmpfile.' '.netrw_fname NetrwKeepj norm! 1Gdd call s:NetrwExe(s:netrw_silentxfer."%!".g:netrw_dav_cmd) let filtbuf= bufnr("%") exe curbuf."b!" let &l:bh = bhkeep exe filtbuf."bw!" let b:netrw_lastfile = choice elseif b:netrw_method == 7 call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)) let b:netrw_lastfile = choice elseif b:netrw_method == 9 let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_uid .'@'. g:netrw_machine else let uid_machine = g:netrw_machine endif let bhkeep = &l:bh let curbuf = bufnr("%") setl bh=hide keepj keepalt enew setl ff=unix call setline(1,'put "'.escape(tmpfile,'\').'" '.netrw_fname) let sftpcmd= substitute(g:netrw_sftp_cmd,"%TEMPFILE%",escape(tmpfile,'\'),"g") call s:NetrwExe(s:netrw_silentxfer."%!".sftpcmd.' '.s:ShellEscape(uid_machine,1)) let filtbuf= bufnr("%") exe curbuf."b!" let &l:bh = bhkeep exe filtbuf."bw!" let b:netrw_lastfile = choice else call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17) let leavemod= 1 endif endwhile if s:FileReadable(tmpfile) call s:NetrwDelete(tmpfile) endif call s:NetrwOptionRestore("w:") if a:firstline == 1 && a:lastline == line("$") let &mod= mod elseif !exists("leavemod") setl nomod endif endfun fun! netrw#NetSource(...) if a:0 > 0 && a:1 == '?' echomsg 'NetSource Usage:' echomsg ':Nsource dav://machine[:port]/path uses cadaver' echomsg ':Nsource fetch://machine/path uses fetch' echomsg ':Nsource ftp://[user@]machine[:port]/path uses ftp autodetects <.netrc>' echomsg ':Nsource http[s]://[user@]machine/path uses http wget' echomsg ':Nsource rcp://[user@]machine/path uses rcp' echomsg ':Nsource rsync://machine[:port]/path uses rsync' echomsg ':Nsource scp://[user@]machine[[:#]port]/path uses scp' echomsg ':Nsource sftp://[user@]machine[[:#]port]/path uses sftp' sleep 4 else let i= 1 while i <= a:0 call netrw#NetRead(3,a:{i}) if s:FileReadable(s:netrw_tmpfile) exe "so ".fnameescape(s:netrw_tmpfile) if delete(s:netrw_tmpfile) call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".s:netrw_tmpfile.">!",103) endif unlet s:netrw_tmpfile else call netrw#ErrorMsg(s:ERROR,"unable to source <".a:{i}.">!",48) endif let i= i + 1 endwhile endif endfun fun! netrw#SetTreetop(...) if exists("w:netrw_treetop") let inittreetop= w:netrw_treetop unlet w:netrw_treetop endif if exists("w:netrw_treedict") unlet w:netrw_treedict endif if a:1 == "" && exists("inittreetop") let treedir= s:NetrwTreePath(inittreetop) else if isdirectory(s:NetrwFile(a:1)) let treedir= a:1 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') let treedir= b:netrw_curdir."/".a:1 else let netrwbuf= bufnr("%") call netrw#ErrorMsg(s:ERROR,"sorry, ".a:1." doesn't seem to be a directory!",95) exe bufwinnr(netrwbuf)."wincmd w" let treedir= "." endif endif let islocal= expand("%") !~ '^\a\{3,}://' if islocal call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) else call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) endif endfun fun! s:NetrwGetFile(readcmd, tfile, method) if a:readcmd == 't' return endif let rfile= bufname("%") if exists("*NetReadFixup") let line2= line("$") endif if a:readcmd[0] == '%' if g:netrw_cygwin let tfile= substitute(a:tfile,g:netrw_cygdrive.'/\(.\)','\1:','') else let tfile= a:tfile endif exe "sil! keepalt file ".fnameescape(tfile) if rfile =~ '\.zip$' call zip#Browse(tfile) elseif rfile =~ '\.tar$' call tar#Browse(tfile) elseif rfile =~ '\.tar\.gz$' call tar#Browse(tfile) elseif rfile =~ '\.tar\.bz2$' call tar#Browse(tfile) elseif rfile =~ '\.tar\.xz$' call tar#Browse(tfile) elseif rfile =~ '\.txz$' call tar#Browse(tfile) else NetrwKeepj e! endif exe "sil! NetrwKeepj keepalt file ".fnameescape(rfile) let iskkeep= &l:isk setl isk-=/ let &l:isk= iskkeep let line1 = 1 let line2 = line("$") elseif !&ma NetrwKeepj call netrw#ErrorMsg(s:WARNING,"attempt to read<".a:tfile."> into a non-modifiable buffer!",94) return elseif s:FileReadable(a:tfile) let curline = line(".") let lastline= line("$") exe "NetrwKeepj ".a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile) let line1= curline + 1 let line2= line("$") - lastline + 1 else NetrwKeepj call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9) return endif if exists("*NetReadFixup") NetrwKeepj call NetReadFixup(a:method, line1, line2) endif if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu NetrwKeepj call s:UpdateBuffersMenu() endif endfun fun! s:NetrwMethod(choice) if strlen(substitute(a:choice,'[^/]','','g')) < 3 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78) let b:netrw_method = -1 return endif if exists("g:netrw_machine") let curmachine= g:netrw_machine else let curmachine= "N O T A HOST" endif if exists("g:netrw_port") let netrw_port= g:netrw_port endif let s:netrw_ftp_cmd= g:netrw_ftp_cmd let b:netrw_method = 0 let g:netrw_machine = "" let b:netrw_fname = "" let g:netrw_port = "" let g:netrw_choice = a:choice let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$' let mf = '^\(\S\+\)\s\+\(\S\+\)$' let ftpurm = '^ftp://\(\([^/]*\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$' let rcpurm = '^rcp://\%(\([^/]*\)@\)\=\([^/]\{-}\)/\(.*\)$' let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$' let scpurm = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$' let httpurm = '^https\=://\([^/]\{-}\)\(/.*\)\=$' let davurm = '^davs\=://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$' let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$' let fetchurm = '^fetch://\(\([^/]*\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$' let sftpurm = '^sftp://\([^/]\{-}\)/\(.*\)\=$' let fileurm = '^file\=://\(.*\)$' if match(a:choice,rcpurm) == 0 let b:netrw_method = 1 let userid = substitute(a:choice,rcpurm,'\1',"") let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"") let b:netrw_fname = substitute(a:choice,rcpurm,'\3',"") if userid != "" let g:netrw_uid= userid endif elseif match(a:choice,scpurm) == 0 let b:netrw_method = 4 let g:netrw_machine = substitute(a:choice,scpurm,'\1',"") let g:netrw_port = substitute(a:choice,scpurm,'\2',"") let b:netrw_fname = substitute(a:choice,scpurm,'\3',"") elseif match(a:choice,httpurm) == 0 let b:netrw_method = 5 let g:netrw_machine= substitute(a:choice,httpurm,'\1',"") let b:netrw_fname = substitute(a:choice,httpurm,'\2',"") let b:netrw_http = (a:choice =~ '^https:')? "https" : "http" elseif match(a:choice,davurm) == 0 let b:netrw_method= 6 if a:choice =~ 'davs:' let g:netrw_machine= 'https://'.substitute(a:choice,davurm,'\1/\2',"") else let g:netrw_machine= 'http://'.substitute(a:choice,davurm,'\1/\2',"") endif let b:netrw_fname = substitute(a:choice,davurm,'\3',"") elseif match(a:choice,rsyncurm) == 0 let b:netrw_method = 7 let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"") let b:netrw_fname = substitute(a:choice,rsyncurm,'\2',"") elseif match(a:choice,ftpurm) == 0 let userid = substitute(a:choice,ftpurm,'\2',"") let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"") let g:netrw_port = substitute(a:choice,ftpurm,'\4',"") let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"") if userid != "" let g:netrw_uid= userid endif if curmachine != g:netrw_machine if exists("s:netwr_hup[".g:netrw_machine."]") call NetUserPass("ftp:".g:netrw_machine) elseif exists("s:netrw_passwd") unlet s:netrw_passwd endif if exists("netrw_port") unlet netrw_port endif endif if exists("g:netrw_uid") && exists("s:netrw_passwd") let b:netrw_method = 3 else let host= substitute(g:netrw_machine,'\..*$','','') if exists("s:netrw_hup[host]") call NetUserPass("ftp:".host) elseif (has("win32") || has("win95") || has("win64") || has("win16")) && s:netrw_ftp_cmd =~# '-[sS]:' if g:netrw_ftp_cmd =~# '-[sS]:\S*MACHINE\>' let s:netrw_ftp_cmd= substitute(g:netrw_ftp_cmd,'\',g:netrw_machine,'') endif let b:netrw_method= 2 elseif s:FileReadable(expand("$HOME/.netrc")) && !g:netrw_ignorenetrc let b:netrw_method= 2 else if !exists("g:netrw_uid") || g:netrw_uid == "" call NetUserPass() elseif !exists("s:netrw_passwd") || s:netrw_passwd == "" call NetUserPass(g:netrw_uid) endif let b:netrw_method= 3 endif endif elseif match(a:choice,fetchurm) == 0 let b:netrw_method = 8 let g:netrw_userid = substitute(a:choice,fetchurm,'\2',"") let g:netrw_machine= substitute(a:choice,fetchurm,'\3',"") let b:netrw_option = substitute(a:choice,fetchurm,'\4',"") let b:netrw_fname = substitute(a:choice,fetchurm,'\5',"") elseif match(a:choice,mipf) == 0 let b:netrw_method = 3 let g:netrw_machine = substitute(a:choice,mipf,'\1',"") let g:netrw_uid = substitute(a:choice,mipf,'\2',"") let s:netrw_passwd = substitute(a:choice,mipf,'\3',"") let b:netrw_fname = substitute(a:choice,mipf,'\4',"") call NetUserPass(g:netrw_machine,g:netrw_uid,s:netrw_passwd) elseif match(a:choice,mf) == 0 if exists("g:netrw_uid") && exists("s:netrw_passwd") let b:netrw_method = 3 let g:netrw_machine = substitute(a:choice,mf,'\1',"") let b:netrw_fname = substitute(a:choice,mf,'\2',"") elseif s:FileReadable(expand("$HOME/.netrc")) let b:netrw_method = 2 let g:netrw_machine = substitute(a:choice,mf,'\1',"") let b:netrw_fname = substitute(a:choice,mf,'\2',"") endif elseif match(a:choice,sftpurm) == 0 let b:netrw_method = 9 let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"") let b:netrw_fname = substitute(a:choice,sftpurm,'\2',"") elseif match(a:choice,rcphf) == 0 let b:netrw_method = 1 let userid = substitute(a:choice,rcphf,'\2',"") let g:netrw_machine = substitute(a:choice,rcphf,'\3',"") let b:netrw_fname = substitute(a:choice,rcphf,'\4',"") if userid != "" let g:netrw_uid= userid endif elseif match(a:choice,fileurm) == 0 && exists("g:netrw_file_cmd") let b:netrw_method = 10 let b:netrw_fname = substitute(a:choice,fileurm,'\1',"") else if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:WARNING,"cannot determine method (format: protocol://[user@]hostname[:port]/[path])",45) endif let b:netrw_method = -1 endif if g:netrw_port != "" let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','') elseif exists("netrw_port") let g:netrw_port= netrw_port endif endfun if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp fun! NetReadFixup(method, line1, line2) let method = a:method + 0 let line1 = a:line1 + 0 let line2 = a:line2 + 0 if type(method) != 0 || type(line1) != 0 || type(line2) != 0 || method < 0 || line1 <= 0 || line2 <= 0 return endif if method == 3 " ftp (no <.netrc>) let fourblanklines= line2 - 3 if fourblanklines >= line1 exe "sil NetrwKeepj ".fourblanklines.",".line2."g/^\s*$/d" call histdel("/",-1) endif endif endfun endif fun! NetUserPass(...) if !exists('s:netrw_hup') let s:netrw_hup= {} endif if a:0 == 0 if !exists("g:netrw_machine") let g:netrw_machine= input('Enter hostname: ') endif if !exists("g:netrw_uid") || g:netrw_uid == "" let g:netrw_uid= input('Enter username: ') endif let s:netrw_passwd= inputsecret("Enter Password: ") let host = substitute(g:netrw_machine,'\..*$','','') if !exists('s:netrw_hup[host]') let s:netrw_hup[host]= {} endif let s:netrw_hup[host].uid = g:netrw_uid let s:netrw_hup[host].passwd = s:netrw_passwd elseif a:0 == 1 if a:1 =~ '^ftp:' let host = substitute(a:1,'^ftp:','','') let host = substitute(host,'\..*','','') if exists("s:netrw_hup[host]") let g:netrw_uid = s:netrw_hup[host].uid let s:netrw_passwd = s:netrw_hup[host].passwd else let g:netrw_uid = input("Enter UserId: ") let s:netrw_passwd = inputsecret("Enter Password: ") endif else if exists("g:netrw_machine") if g:netrw_machine =~ '[0-9.]\+' let host= g:netrw_machine else let host= substitute(g:netrw_machine,'\..*$','','') endif else let g:netrw_machine= input('Enter hostname: ') endif let g:netrw_uid = a:1 if exists("g:netrw_passwd") let s:netrw_passwd= g:netrw_passwd else let s:netrw_passwd = inputsecret("Enter Password: ") endif endif if exists("host") if !exists('s:netrw_hup[host]') let s:netrw_hup[host]= {} endif let s:netrw_hup[host].uid = g:netrw_uid let s:netrw_hup[host].passwd = s:netrw_passwd endif elseif a:0 == 2 let g:netrw_uid = a:1 let s:netrw_passwd = a:2 elseif a:0 == 3 let host = substitute(a:1,'^\a\+:','','') let host = substitute(host,'\..*$','','') if !exists('s:netrw_hup[host]') let s:netrw_hup[host]= {} endif let s:netrw_hup[host].uid = a:2 let s:netrw_hup[host].passwd = a:3 let g:netrw_uid = s:netrw_hup[host].uid let s:netrw_passwd = s:netrw_hup[host].passwd endif endfun fun! s:ExplorePatHls(pattern) let repat= substitute(a:pattern,'^**/\{1,2}','','') let repat= escape(repat,'][.\') let repat= '\<'.substitute(repat,'\*','\\(\\S\\+ \\)*\\S\\+','g').'\>' return repat endfun fun! s:NetrwBookHistHandler(chg,curdir) if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 return endif let ykeep = @@ let curbufnr = bufnr("%") if a:chg == 0 if exists("s:netrwmarkfilelist_{curbufnr}") call s:NetrwBookmark(0) echo "bookmarked marked files" else call s:MakeBookmark(a:curdir) echo "bookmarked the current directory" endif elseif a:chg == 1 if exists("g:netrw_bookmarklist[v:count-1]") exe "NetrwKeepj e ".fnameescape(g:netrw_bookmarklist[v:count-1]) else echomsg "Sorry, bookmark#".v:count." doesn't exist!" endif elseif a:chg == 2 let didwork= 0 if exists("g:netrw_bookmarklist") let cnt= 1 for bmd in g:netrw_bookmarklist echo printf("Netrw Bookmark#%-2d: %s",cnt,g:netrw_bookmarklist[cnt-1]) let didwork = 1 let cnt = cnt + 1 endfor endif let cnt = g:netrw_dirhist_cnt let first = 1 let histcnt = 0 if g:netrw_dirhistmax > 0 while ( first || cnt != g:netrw_dirhist_cnt ) if exists("g:netrw_dirhist_{cnt}") echo printf("Netrw History#%-2d: %s",histcnt,g:netrw_dirhist_{cnt}) let didwork= 1 endif let histcnt = histcnt + 1 let first = 0 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax if cnt < 0 let cnt= cnt + g:netrw_dirhistmax endif endwhile else let g:netrw_dirhist_cnt= 0 endif if didwork call inputsave()|call input("Press to continue")|call inputrestore() endif elseif a:chg == 3 if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir if g:netrw_dirhistmax > 0 let g:netrw_dirhist_cnt = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir endif endif elseif a:chg == 4 if g:netrw_dirhistmax > 0 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - v:count1 ) % g:netrw_dirhistmax if g:netrw_dirhist_cnt < 0 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax endif else let g:netrw_dirhist_cnt= 0 endif if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") setl ma noro sil! NetrwKeepj %d _ setl nomod endif exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) else if g:netrw_dirhistmax > 0 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + v:count1 ) % g:netrw_dirhistmax else let g:netrw_dirhist_cnt= 0 endif echo "Sorry, no predecessor directory exists yet" endif elseif a:chg == 5 if g:netrw_dirhistmax > 0 let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") setl ma noro sil! NetrwKeepj %d _ setl nomod endif exe "NetrwKeepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}) else let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax if g:netrw_dirhist_cnt < 0 let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax endif echo "Sorry, no successor directory exists yet" endif else let g:netrw_dirhist_cnt= 0 echo "Sorry, no successor directory exists yet (g:netrw_dirhistmax is ".g:netrw_dirhistmax.")" endif elseif a:chg == 6 if exists("s:netrwmarkfilelist_{curbufnr}") call s:NetrwBookmark(1) echo "removed marked files from bookmarks" else let iremove = v:count let dremove = g:netrw_bookmarklist[iremove - 1] call s:MergeBookmarks() NetrwKeepj call remove(g:netrw_bookmarklist,iremove-1) echo "removed ".dremove." from g:netrw_bookmarklist" endif endif call s:NetrwBookmarkMenu() call s:NetrwTgtMenu() let @@= ykeep endfun fun! s:NetrwBookHistRead() if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 return endif let ykeep= @@ if !exists("s:netrw_initbookhist") let home = s:NetrwHome() let savefile= home."/.netrwbook" if filereadable(s:NetrwFile(savefile)) exe "keepalt NetrwKeepj so ".savefile endif if g:netrw_dirhistmax > 0 let savefile= home."/.netrwhist" if filereadable(s:NetrwFile(savefile)) exe "keepalt NetrwKeepj so ".savefile endif let s:netrw_initbookhist= 1 au VimLeave * call s:NetrwBookHistSave() endif endif let @@= ykeep endfun fun! s:NetrwBookHistSave() if !exists("g:netrw_dirhistmax") || g:netrw_dirhistmax <= 0 return endif let savefile= s:NetrwHome()."/.netrwhist" 1split call s:NetrwEnew() if g:netrw_use_noswf setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 noswf else setl cino= com= cpo-=a cpo-=A fo=nroql2 tw=0 report=10000 endif setl nocin noai noci magic nospell nohid wig= noaw setl ma noro write if exists("+acd") | setl noacd | endif sil! NetrwKeepj keepalt %d _ sil! keepalt file .netrwhist call setline(1,"let g:netrw_dirhistmax =".g:netrw_dirhistmax) call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt) let lastline = line("$") let cnt = 1 while cnt <= g:netrw_dirhist_cnt call setline((cnt+lastline),'let g:netrw_dirhist_'.cnt."='".g:netrw_dirhist_{cnt}."'") let cnt= cnt + 1 endwhile exe "sil! w! ".savefile sil NetrwKeepj %d _ if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] let savefile= s:NetrwHome()."/.netrwbook" if filereadable(s:NetrwFile(savefile)) let booklist= deepcopy(g:netrw_bookmarklist) exe "sil NetrwKeepj keepalt so ".savefile for bdm in booklist if index(g:netrw_bookmarklist,bdm) == -1 call add(g:netrw_bookmarklist,bdm) endif endfor call sort(g:netrw_bookmarklist) endif call setline(1,"let g:netrw_bookmarklist= ".string(g:netrw_bookmarklist)) exe "sil! w! ".savefile endif let bgone= bufnr("%") q! exe "keepalt ".bgone."bwipe!" endfun fun! s:NetrwBrowse(islocal,dirname) if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif if a:islocal && !exists("w:netrw_rexfile") && bufname("#") != "" let w:netrw_rexfile= bufname("#") endif if !exists("s:netrw_initbookhist") NetrwKeepj call s:NetrwBookHistRead() endif if a:dirname !~ '^\a\{3,}://' let dirname= simplify(a:dirname) else let dirname= a:dirname endif if exists("s:netrw_skipbrowse") unlet s:netrw_skipbrowse return endif if !exists("*shellescape") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69) return endif if !exists("*fnameescape") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing fnameescape()",70) return endif call s:NetrwOptionSave("w:") if exists("s:netrwmarkfilelist_{bufnr('%')}") exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" endif if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep call s:NetrwLcd(dirname) call s:NetrwSafeOptions() elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' if bufname(dirname) != "" exe "NetrwKeepj b ".bufname(dirname) else let path= substitute(dirname,'[*=@|]\r\=$','','e') call s:RemotePathAnalysis(dirname) call s:NetrwEnew(dirname) call s:NetrwSafeOptions() setl ma noro let b:netrw_curdir = dirname let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path exe "sil! NetrwKeepj keepalt file ".fnameescape(url) exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) sil call netrw#NetRead(2,url) if s:path =~ '.bz2' exe "sil NetrwKeepj keepalt doau BufReadPost ".fnameescape(substitute(s:fname,'\.bz2$','','')) elseif s:path =~ '.gz' exe "sil NetrwKeepj keepalt doau BufReadPost ".fnameescape(substitute(s:fname,'\.gz$','','')) elseif s:path =~ '.gz' exe "sil NetrwKeepj keepalt doau BufReadPost ".fnameescape(substitute(s:fname,'\.txz$','','')) else exe "sil NetrwKeepj keepalt doau BufReadPost ".fnameescape(s:fname) endif endif call s:SetBufWinVars() call s:NetrwOptionRestore("w:") setl ma nomod noro return endif call s:UseBufWinVars() let b:netrw_browser_active = 1 let dirname = dirname let s:last_sort_by = g:netrw_sort_by NetrwKeepj call s:NetrwMenu(1) let svpos = winsaveview() let reusing= s:NetrwGetBuffer(a:islocal,dirname) if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" else 2match none endif if reusing && line("$") > 1 call s:NetrwOptionRestore("w:") setl noma nomod nowrap return endif let b:netrw_curdir= dirname if b:netrw_curdir =~ '[/\\]$' let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e') endif if b:netrw_curdir =~ '\a:$' && (has("win32") || has("win95") || has("win64") || has("win16")) let b:netrw_curdir= b:netrw_curdir."/" endif if b:netrw_curdir == '' if has("amiga") let b:netrw_curdir= getcwd() else let b:netrw_curdir= '/' endif endif if !a:islocal && b:netrw_curdir !~ '/$' let b:netrw_curdir= b:netrw_curdir.'/' endif if a:islocal call s:LocalFastBrowser() if !g:netrw_keepdir if !exists("&l:acd") || !&l:acd call s:NetrwLcd(b:netrw_curdir) endif endif else if dirname =~# "^NetrwTreeListing\>" let dirname= b:netrw_curdir elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir") let dirname= substitute(b:netrw_curdir,'\\','/','g') if dirname !~ '/$' let dirname= dirname.'/' endif let b:netrw_curdir = dirname else let dirname = substitute(dirname,'\\','/','g') endif let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$' if dirname !~ dirpat if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20) endif NetrwKeepj call s:NetrwOptionRestore("w:") setl noma nomod nowrap return endif let b:netrw_curdir= dirname endif " (additional remote handling) NetrwKeepj call s:NetrwMaps(a:islocal) NetrwKeepj call s:NetrwCommands(a:islocal) NetrwKeepj call s:PerformListing(a:islocal) call s:NetrwOptionRestore("w:") if exists("s:rexposn_".bufnr("%")) NetrwKeepj call winrestview(s:rexposn_{bufnr('%')}) if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt NetrwKeepj exe w:netrw_bannercnt endif else NetrwKeepj call s:SetRexDir(a:islocal,b:netrw_curdir) endif if v:version >= 700 && has("balloon_eval") && &beval == 0 && &l:bexpr == "" && !exists("g:netrw_nobeval") let &l:bexpr= "netrw#BalloonHelp()" setl beval endif if reusing call winrestview(svpos) endif return endfun fun! s:NetrwFile(fname) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST let fname= substitute(a:fname,'^'.s:treedepthstring.'\+','','') else let fname= a:fname endif if g:netrw_keepdir if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif if !exists("g:netrw_cygwin") && (has("win32") || has("win95") || has("win64") || has("win16")) if fname =~ '^\' || fname =~ '^\a:\' let ret= fname else let ret= s:ComposePath(b:netrw_curdir,fname) endif elseif fname =~ '^/' let ret= fname else let ret= s:ComposePath(b:netrw_curdir,fname) endif else let ret= fname endif return ret endfun fun! s:NetrwFileInfo(islocal,fname) let ykeep= @@ if a:islocal let lsopt= "-lsad" if g:netrw_sizestyle =~# 'H' let lsopt= "-lsadh" elseif g:netrw_sizestyle =~# 'h' let lsopt= "-lsadh --si" endif if (has("unix") || has("macunix")) && executable("/bin/ls") if getline(".") == "../" echo system("/bin/ls ".lsopt." ".s:ShellEscape("..")) elseif w:netrw_liststyle == s:TREELIST && getline(".") !~ '^'.s:treedepthstring echo system("/bin/ls ".lsopt." ".s:ShellEscape(b:netrw_curdir)) elseif exists("b:netrw_curdir") echo system("/bin/ls ".lsopt." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,a:fname))) else echo system("/bin/ls ".lsopt." ".s:ShellEscape(s:NetrwFile(a:fname))) endif else if !isdirectory(s:NetrwFile(a:fname)) && !filereadable(s:NetrwFile(a:fname)) && a:fname =~ '[*@/]' let fname= substitute(a:fname,".$","","") else let fname= a:fname endif let t = getftime(s:NetrwFile(fname)) let sz = getfsize(s:NetrwFile(fname)) if g:netrw_sizestyle =~# "[hH]" let sz= s:NetrwHumanReadable(sz) endif echo a:fname.": ".sz." ".strftime(g:netrw_timefmt,getftime(s:NetrwFile(fname))) endif else echo "sorry, \"qf\" not supported yet for remote files" endif let @@= ykeep endfun fun! s:NetrwFullPath(filename) let filename= a:filename if filename !~ '^/' let filename= resolve(getcwd().'/'.filename) endif if filename != "/" && filename =~ '/$' let filename= substitute(filename,'/$','','') endif return filename endfun fun! s:NetrwGetBuffer(islocal,dirname) let dirname= a:dirname if !exists("s:netrwbuf") let s:netrwbuf= {} endif if has_key(s:netrwbuf,s:NetrwFullPath(dirname)) let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] if !bufexists(bufnum) call remove(s:netrwbuf,s:NetrwFullPath(dirname)) let bufnum= -1 endif else let bufnum= -1 endif if bufnum < 0 " get enew buffer and name it call s:NetrwEnew(dirname) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST if !exists("s:netrw_treelistnum") let s:netrw_treelistnum= 1 else let s:netrw_treelistnum= s:netrw_treelistnum + 1 endif let w:netrw_treebufnr= bufnr("%") exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum) if g:netrw_use_noswf setl nobl bt=nofile noswf else setl nobl bt=nofile endif nnoremap [[ :sil call TreeListMove('[[') nnoremap ]] :sil call TreeListMove(']]') nnoremap [] :sil call TreeListMove('[]') nnoremap ][ :sil call TreeListMove('][') else let escdirname = fnameescape(dirname) exe 'sil! keepj keepalt file '.escdirname let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") endif else " Re-use the buffer let eikeep= &ei setl ei=all if getline(2) =~# '^" Netrw Directory Listing' exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum else exe "sil! NetrwKeepj noswapfile keepalt b ".bufnum endif if bufname("%") == '.' exe "sil! NetrwKeepj keepalt file ".fnameescape(getcwd()) endif let &ei= eikeep if line("$") <= 1 && getline(1) == "" NetrwKeepj call s:NetrwListSettings(a:islocal) return 0 elseif g:netrw_fastbrowse == 0 || (a:islocal && g:netrw_fastbrowse == 1) NetrwKeepj call s:NetrwListSettings(a:islocal) sil NetrwKeepj %d _ return 0 elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST sil NetrwKeepj %d _ NetrwKeepj call s:NetrwListSettings(a:islocal) return 0 else return 1 endif endif let fname= expand("%") NetrwKeepj call s:NetrwListSettings(a:islocal) exe "sil! NetrwKeepj keepalt file ".fnameescape(fname) sil! keepalt NetrwKeepj %d _ return 0 endfun fun! s:NetrwGetcwd(doesc) let curdir= substitute(getcwd(),'\\','/','ge') if curdir !~ '[\/]$' let curdir= curdir.'/' endif if a:doesc let curdir= fnameescape(curdir) endif return curdir endfun fun! s:NetrwGetWord() let keepsol= &l:sol setl nosol call s:UseBufWinVars() if !exists("w:netrw_liststyle") if exists("g:netrw_liststyle") let w:netrw_liststyle= g:netrw_liststyle else let w:netrw_liststyle= s:THINLIST endif endif if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt NetrwKeepj norm! 0 let dirname= "./" let curline= getline('.') if curline =~# '"\s*Sorted by\s' NetrwKeepj norm s let s:netrw_skipbrowse= 1 echo 'Pressing "s" also works' elseif curline =~# '"\s*Sort sequence:' let s:netrw_skipbrowse= 1 echo 'Press "S" to edit sorting sequence' elseif curline =~# '"\s*Quick Help:' NetrwKeepj norm ? let s:netrw_skipbrowse= 1 elseif curline =~# '"\s*\%(Hiding\|Showing\):' NetrwKeepj norm a let s:netrw_skipbrowse= 1 echo 'Pressing "a" also works' elseif line("$") > w:netrw_bannercnt exe 'sil NetrwKeepj '.w:netrw_bannercnt endif elseif w:netrw_liststyle == s:THINLIST NetrwKeepj norm! 0 let dirname= substitute(getline('.'),'\t -->.*$','','') elseif w:netrw_liststyle == s:LONGLIST NetrwKeepj norm! 0 let dirname= substitute(getline('.'),'^\(\%(\S\+ \)*\S\+\).\{-}$','\1','e') elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') let dirname= substitute(dirname,'\t -->.*$','','') else let dirname= getline('.') if !exists("b:netrw_cpf") let b:netrw_cpf= 0 exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' call histdel("/",-1) endif let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf if filestart == 0 NetrwKeepj norm! 0ma else call cursor(line("."),filestart+1) NetrwKeepj norm! ma endif let rega= @a let eofname= filestart + b:netrw_cpf + 1 if eofname <= col("$") call cursor(line("."),filestart+b:netrw_cpf+1) NetrwKeepj norm! "ay`a else NetrwKeepj norm! "ay$ endif let dirname = @a let @a = rega let dirname= substitute(dirname,'\s\+$','','e') endif let dirname= substitute(dirname,"@$","","") let dirname= substitute(dirname,"\*$","","") let &l:sol= keepsol return dirname endfun fun! s:NetrwListSettings(islocal) let fname= bufname("%") setl bt=nofile nobl ma nonu nowrap noro nornu exe "sil! keepalt file ".fnameescape(fname) if g:netrw_use_noswf setl noswf endif exe "setl ts=".(g:netrw_maxfilenamelen+1) setl isk+=.,~,- if g:netrw_fastbrowse > a:islocal setl bh=hide else setl bh=delete endif endfun fun! s:NetrwListStyle(islocal) let ykeep = @@ let fname = s:NetrwGetWord() if !exists("w:netrw_liststyle")|let w:netrw_liststyle= g:netrw_liststyle|endif let svpos = winsaveview() let w:netrw_liststyle = (w:netrw_liststyle + 1) % s:MAXLIST if w:netrw_liststyle == s:THINLIST let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') elseif w:netrw_liststyle == s:LONGLIST let g:netrw_list_cmd = g:netrw_list_cmd." -l" elseif w:netrw_liststyle == s:WIDELIST let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') else NetrwKeepj call netrw#ErrorMsg(s:WARNING,"bad value for g:netrw_liststyle (=".w:netrw_liststyle.")",46) let g:netrw_liststyle = s:THINLIST let w:netrw_liststyle = g:netrw_liststyle let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge') endif setl ma noro sil! NetrwKeepj %d _ setl nomod NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call s:NetrwCursor() NetrwKeepj call winrestview(svpos) let @@= ykeep endfun fun! s:NetrwBannerCtrl(islocal) let ykeep= @@ let g:netrw_banner= !g:netrw_banner let svpos= winsaveview() call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) let fname= s:NetrwGetWord() sil NetrwKeepj $ let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') if result <= 0 && exists("w:netrw_bannercnt") exe "NetrwKeepj ".w:netrw_bannercnt endif let @@= ykeep endfun fun! s:NetrwBookmark(del,...) if a:0 == 0 if &ft == "netrw" let curbufnr = bufnr("%") if exists("s:netrwmarkfilelist_{curbufnr}") let svpos = winsaveview() let islocal= expand("%") !~ '^\a\{3,}://' for fname in s:netrwmarkfilelist_{curbufnr} if a:del|call s:DeleteBookmark(fname)|else|call s:MakeBookmark(fname)|endif endfor let curdir = exists("b:netrw_curdir")? b:netrw_curdir : getcwd() call s:NetrwUnmarkList(curbufnr,curdir) NetrwKeepj call s:NetrwRefresh(islocal,s:NetrwBrowseChgDir(islocal,'./')) NetrwKeepj call winrestview(svpos) else let fname= s:NetrwGetWord() if a:del|call s:DeleteBookmark(fname)|else|call s:MakeBookmark(fname)|endif endif else let fname= expand("%") if a:del|call s:DeleteBookmark(fname)|else|call s:MakeBookmark(fname)|endif endif else let islocal= expand("%") !~ '^\a\{3,}://' let i = 1 while i <= a:0 if islocal if v:version > 704 || (v:version == 704 && has("patch656")) let mbfiles= glob(fnameescape(a:{i}),0,1,1) else let mbfiles= glob(fnameescape(a:{i}),0,1) endif else let mbfiles= [a:{i}] endif for mbfile in mbfiles if a:del|call s:DeleteBookmark(mbfile)|else|call s:MakeBookmark(mbfile)|endif endfor let i= i + 1 endwhile endif call s:NetrwBookmarkMenu() endfun fun! s:NetrwBookmarkMenu() if !exists("s:netrw_menucnt") return endif if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu if exists("g:NetrwTopLvlMenu") exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks' exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete' endif if !exists("s:netrw_initbookhist") call s:NetrwBookHistRead() endif if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] && g:netrw_dirhistmax > 0 let cnt= 1 for bmd in g:netrw_bookmarklist let bmd= escape(bmd,g:netrw_menu_escape) exe 'sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\" exe 'sil! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB" let cnt= cnt + 1 endfor endif if g:netrw_dirhistmax > 0 let cnt = g:netrw_dirhist_cnt let first = 1 let histcnt = 0 while ( first || cnt != g:netrw_dirhist_cnt ) let histcnt = histcnt + 1 let priority = g:netrw_dirhist_cnt + histcnt if exists("g:netrw_dirhist_{cnt}") let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape) exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\" endif let first = 0 let cnt = ( cnt - 1 ) % g:netrw_dirhistmax if cnt < 0 let cnt= cnt + g:netrw_dirhistmax endif endwhile endif endif endfun fun! s:NetrwBrowseChgDir(islocal,newdir,...) let ykeep= @@ if !exists("b:netrw_curdir") let @@= ykeep return endif call s:SavePosn(s:netrw_nbcd) NetrwKeepj call s:NetrwOptionSave("s:") NetrwKeepj call s:NetrwSafeOptions() if (has("win32") || has("win95") || has("win64") || has("win16")) let dirname = substitute(b:netrw_curdir,'\\','/','ge') else let dirname = b:netrw_curdir endif let newdir = a:newdir let dolockout = 0 let dorestore = 1 if g:netrw_banner if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt && line("$") >= w:netrw_bannercnt if getline(".") =~# 'Quick Help' let g:netrw_quickhelp= (g:netrw_quickhelp + 1)%len(s:QuickHelp) setl ma noro nowrap NetrwKeepj call setline(line('.'),'" Quick Help: :help '.s:QuickHelp[g:netrw_quickhelp]) setl noma nomod nowrap call s:RestorePosn(s:netrw_nbcd) NetrwKeepj call s:NetrwOptionRestore("s:") endif endif endif if has("amiga") let dirpat= '[\/:]$' else let dirpat= '[\/]$' endif if dirname !~ dirpat let dirname= dirname.'/' endif if newdir !~ dirpat && !(a:islocal && isdirectory(s:NetrwFile(s:ComposePath(dirname,newdir)))) let s:rexposn_{bufnr("%")}= winsaveview() if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") && newdir !~ '^\(/\|\a:\)' let dirname= s:NetrwTreeDir(a:islocal) if dirname =~ '/$' let dirname= dirname.newdir else let dirname= dirname."/".newdir endif elseif newdir =~ '^\(/\|\a:\)' let dirname= newdir else let dirname= s:ComposePath(dirname,newdir) endif if a:0 < 1 NetrwKeepj call s:NetrwOptionRestore("s:") let curdir= b:netrw_curdir if !exists("s:didsplit") if type(g:netrw_browse_split) == 3 call s:NetrwServerEdit(a:islocal,dirname) return elseif g:netrw_browse_split == 1 keepalt new if !&ea keepalt wincmd _ endif call s:SetRexDir(a:islocal,curdir) elseif g:netrw_browse_split == 2 keepalt rightb vert new if !&ea keepalt wincmd | endif call s:SetRexDir(a:islocal,curdir) elseif g:netrw_browse_split == 3 keepalt tabnew if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif call s:SetRexDir(a:islocal,curdir) elseif g:netrw_browse_split == 4 if s:NetrwPrevWinOpen(2) == 3 let @@= ykeep return endif call s:SetRexDir(a:islocal,curdir) else call s:NetrwMenu(0) if g:netrw_chgwin >= 1 if winnr("$")+1 == g:netrw_chgwin let curwin= winnr() exe "NetrwKeepj keepalt ".winnr("$")."wincmd w" vs exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd ".curwin endif exe "NetrwKeepj keepalt ".g:netrw_chgwin."wincmd w" endif call s:SetRexDir(a:islocal,curdir) endif endif if a:islocal if exists("g:netrw_altfile") && g:netrw_altfile exe "NetrwKeepj keepalt e! ".fnameescape(dirname) else exe "NetrwKeepj e! ".fnameescape(dirname) endif call s:NetrwCursor() if &hidden || &bufhidden == "hide" let dorestore= 0 endif else endif let dolockout= 1 if exists("g:Netrw_funcref") if type(g:Netrw_funcref) == 2 NetrwKeepj call g:Netrw_funcref() elseif type(g:Netrw_funcref) == 3 for Fncref in g:Netrw_funcref if type(FncRef) == 2 NetrwKeepj call FncRef() endif endfor endif endif endif elseif newdir =~ '^/' let dirname = newdir NetrwKeepj call s:SetRexDir(a:islocal,dirname) NetrwKeepj call s:NetrwOptionRestore("s:") norm! m` elseif newdir == './' NetrwKeepj call s:SetRexDir(a:islocal,dirname) norm! m` elseif newdir == '../' if w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") setl noro ma NetrwKeepj %d _ endif if has("amiga") if a:islocal let dirname= substitute(dirname,'^\(.*[/:]\)\([^/]\+$\)','\1','') let dirname= substitute(dirname,'/$','','') else let dirname= substitute(dirname,'^\(.*[/:]\)\([^/]\+/$\)','\1','') endif elseif !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) if a:islocal let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','') if dirname == "" let dirname= '/' endif else let dirname= substitute(dirname,'^\(\a\{3,}://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','') endif if dirname =~ '^\a:$' let dirname= dirname.'/' endif else if a:islocal let dirname= substitute(dirname,'^\(.*\)/\([^/]\+\)/$','\1','') if dirname == "" let dirname= '/' endif else let dirname= substitute(dirname,'^\(\a\{3,}://.\{-}/\{1,2}\)\(.\{-}\)\([^/]\+\)/$','\1\2','') endif endif NetrwKeepj call s:SetRexDir(a:islocal,dirname) norm m` elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") setl noro ma if !(exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")) NetrwKeepj %d _ endif let treedir = s:NetrwTreeDir(a:islocal) let s:treecurpos = winsaveview() let haskey = 0 if has_key(w:netrw_treedict,treedir) let haskey= 1 else endif if !haskey && treedir !~ '[/@]$' if has_key(w:netrw_treedict,treedir."/") let treedir= treedir."/" let haskey = 1 else endif endif if !haskey && treedir =~ '/$' let treedir= substitute(treedir,'/$','','') if has_key(w:netrw_treedict,treedir) let haskey = 1 else endif endif if haskey call remove(w:netrw_treedict,treedir) let dirname= w:netrw_treetop else let dirname= substitute(treedir,'/*$','/','') endif NetrwKeepj call s:SetRexDir(a:islocal,dirname) let s:treeforceredraw = 1 else let dirname = s:ComposePath(dirname,newdir) NetrwKeepj call s:SetRexDir(a:islocal,dirname) norm m` endif if dorestore NetrwKeepj call s:NetrwOptionRestore("s:") endif call s:RestorePosn(s:netrw_nbcd) if dolockout && dorestore if filewritable(dirname) setl ma noro nomod else setl ma ro nomod endif endif let @@= ykeep return dirname endfun fun! s:NetrwBrowseUpDir(islocal) if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt-1 return endif if !exists("w:netrw_liststyle") || w:netrw_liststyle != s:TREELIST call s:SavePosn(s:netrw_nbcd) endif norm! 0 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") let curline= getline(".") let swwline= winline() - 1 if exists("w:netrw_treetop") let b:netrw_curdir= w:netrw_treetop endif let curdir= b:netrw_curdir if a:islocal call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) else call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) endif if !search('\c^'.s:treedepthstring.curline,'cw') if !search('\c^'.curline,'cw') sil! NetrwKeepj 1 endif endif exe "sil! NetrwKeepj norm! z\" while winline() < swwline let curwinline= winline() exe "sil! NetrwKeepj norm! \" if curwinline == winline() break endif endwhile else if exists("b:netrw_curdir") let curdir= b:netrw_curdir else let curdir= expand(getcwd()) endif if a:islocal call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) else call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) endif if has_key(s:netrw_nbcd,bufnr("%")) call s:RestorePosn(s:netrw_nbcd) elseif exists("w:netrw_bannercnt") exe w:netrw_bannercnt else 1 endif endif let curdir= substitute(curdir,'^.*[\/]','','') call search('\<'.curdir.'\>','wc') endfun fun! netrw#BrowseX(fname,remote) if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && fname =~ '/$' && fname !~ '^https\=:') norm! gf endif let ykeep = @@ let screenposn = winsaveview() let awkeep = &aw set noaw if a:fname =~ '/core\(\.\d\+\)\=$' if exists("g:Netrw_corehandler") if type(g:Netrw_corehandler) == 2 call g:Netrw_corehandler(s:NetrwFile(a:fname)) elseif type(g:Netrw_corehandler) == 3 for Fncref in g:Netrw_corehandler if type(FncRef) == 2 call FncRef(a:fname) endif endfor endif call winrestview(screenposn) let @@= ykeep let &aw= awkeep return endif endif let exten= substitute(a:fname,'.*\.\(.\{-}\)','\1','e') if has("win32") || has("win95") || has("win64") || has("win16") let exten= substitute(exten,'^.*$','\L&\E','') endif if a:remote == 1 setl bh=delete call netrw#NetRead(3,a:fname) let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') if rename(s:netrw_tmpfile,newname) == 0 let fname= newname else let fname= s:netrw_tmpfile endif else let fname= a:fname if fname =~ '^\~' && expand("$HOME") != "" let fname= s:NetrwFile(substitute(fname,'^\~',expand("$HOME"),'')) endif endif if g:netrw_suppress_gx_mesg if &srr =~ "%s" if (has("win32") || has("win95") || has("win64") || has("win16")) let redir= substitute(&srr,"%s","nul","") else let redir= substitute(&srr,"%s","/dev/null","") endif elseif (has("win32") || has("win95") || has("win64") || has("win16")) let redir= &srr . "nul" else let redir= &srr . "/dev/null" endif endif if exists("g:netrw_browsex_viewer") if g:netrw_browsex_viewer =~ '\s' let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " let oviewer = '' let cnt = 1 while !executable(viewer) && viewer != oviewer let viewer = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\1','') let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." " let cnt = cnt + 1 let oviewer = viewer endwhile else let viewer = g:netrw_browsex_viewer let viewopt = "" endif endif if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' let ret= netrwFileHandlers#Invoke(exten,fname) elseif exists("g:netrw_browsex_viewer") && executable(viewer) call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) let ret= v:shell_error elseif has("win32") || has("win64") if executable("start") call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) elseif executable("rundll32") call s:NetrwExe('sil! !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) else call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) endif call inputsave()|call input("Press to continue")|call inputrestore() let ret= v:shell_error elseif has("win32unix") let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') if executable("start") call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) elseif executable("rundll32") call s:NetrwExe('sil !rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) elseif executable("cygstart") call s:NetrwExe('sil !cygstart '.s:ShellEscape(fname,1)) else call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) endif call inputsave()|call input("Press to continue")|call inputrestore() let ret= v:shell_error elseif has("unix") && executable("kfmclient") && s:CheckIfKde() call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) let ret= v:shell_error elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) let ret= v:shell_error elseif has("unix") && executable("xdg-open") call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) let ret= v:shell_error elseif has("macunix") && executable("open") call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir) let ret= v:shell_error else let ret= netrwFileHandlers#Invoke(exten,fname) endif if ret let ret= netrwFileHandlers#Invoke(exten,fname) endif redraw! if a:remote == 1 setl bh=delete bt=nofile if g:netrw_use_noswf setl noswf endif exe "sil! NetrwKeepj norm! \" endif call winrestview(screenposn) let @@ = ykeep let &aw= awkeep endfun fun! netrw#BrowseXVis() let atkeep = @@ norm! gvy call netrw#BrowseX(@@,netrw#CheckIfRemote()) let @@ = atkeep endfun fun! netrw#CheckIfRemote() if expand("%") =~ '^\a\{3,}://' return 1 else return 0 endif endfun fun! s:NetrwChgPerm(islocal,curdir) let ykeep = @@ call inputsave() let newperm= input("Enter new permission: ") call inputrestore() let chgperm= substitute(g:netrw_chgperm,'\',s:ShellEscape(expand("")),'') let chgperm= substitute(chgperm,'\',s:ShellEscape(newperm),'') call system(chgperm) if v:shell_error != 0 NetrwKeepj call netrw#ErrorMsg(1,"changing permission on file<".expand("")."> seems to have failed",75) endif if a:islocal NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) endif let @@= ykeep endfun fun! s:CheckIfKde() if !exists("s:haskdeinit") if has("unix") && executable("ps") && !has("win32unix") let s:haskdeinit= system("ps -e") =~ '\ 704 || (v:version == 704 && has("patch656")) let filelist= glob(s:ComposePath(fnameescape(a:direntry),a:expr),0,1,1) if a:pare let filelist= map(filelist,'substitute(v:val, "^.*/", "", "")') endif else let filelist= glob(s:ComposePath(fnameescape(a:direntry),a:expr),0,1) if a:pare let filelist= map(filelist,'substitute(v:val, "^.*/", "", "")') endif endif return filelist endfun fun! s:NetrwForceFile(islocal,newfile) if a:newfile =~ '[/@*=|\\]$' let newfile= substitute(a:newfile,'.$','','') else let newfile= a:newfile endif if a:islocal call s:NetrwBrowseChgDir(a:islocal,newfile) else call s:NetrwBrowse(a:islocal,s:NetrwBrowseChgDir(a:islocal,newfile)) endif endfun fun! s:NetrwHide(islocal) let ykeep= @@ let svpos= winsaveview() if exists("s:netrwmarkfilelist_{bufnr('%')}") for fname in s:netrwmarkfilelist_{bufnr("%")} if match(g:netrw_list_hide,'\<'.fname.'\>') != -1 let g:netrw_list_hide= substitute(g:netrw_list_hide,'..\<'.escape(fname,g:netrw_fname_escape).'\>..','','') let g:netrw_list_hide= substitute(g:netrw_list_hide,',,',',','g') let g:netrw_list_hide= substitute(g:netrw_list_hide,'^,\|,$','','') else if exists("g:netrw_list_hide") && g:netrw_list_hide != "" let g:netrw_list_hide= g:netrw_list_hide.',\<'.escape(fname,g:netrw_fname_escape).'\>' else let g:netrw_list_hide= '\<'.escape(fname,g:netrw_fname_escape).'\>' endif endif endfor NetrwKeepj call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) let g:netrw_hide= 1 else let g:netrw_hide=(g:netrw_hide+1)%3 exe "NetrwKeepj norm! 0" if g:netrw_hide && g:netrw_list_hide == "" NetrwKeepj call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49) let @@= ykeep return endif endif NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) let @@= ykeep endfun fun! s:NetrwHideEdit(islocal) let ykeep= @@ let svpos= winsaveview() call inputsave() let newhide= input("Edit Hiding List: ",g:netrw_list_hide) call inputrestore() let g:netrw_list_hide= newhide sil NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./")) call winrestview(svpos) let @@= ykeep endfun fun! s:NetrwHidden(islocal) let ykeep= @@ let svpos= winsaveview() if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') elseif s:Strlen(g:netrw_list_hide) >= 1 let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' else let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' endif NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) let @@= ykeep endfun fun! s:NetrwHome() if exists("g:netrw_home") let home= g:netrw_home else for home in split(&rtp,',') + [''] if isdirectory(s:NetrwFile(home)) && filewritable(s:NetrwFile(home)) | break | endif let basehome= substitute(home,'[/\\]\.vim$','','') if isdirectory(s:NetrwFile(basehome)) && filewritable(s:NetrwFile(basehome)) let home= basehome."/.vim" break endif endfor if home == "" let home= substitute(&rtp,',.*$','','') endif if (has("win32") || has("win95") || has("win64") || has("win16")) let home= substitute(home,'/','\\','g') endif endif if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) if exists("g:netrw_mkdir") call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) else call mkdir(home) endif endif let g:netrw_home= home return home endfun fun! s:NetrwLeftmouse(islocal) if exists("s:netrwdrag") return endif let ykeep= @@ while getchar(0) != 0 endwhile call feedkeys("\") let c = getchar() let mouse_lnum = v:mouse_lnum let wlastline = line('w$') let lastline = line('$') if mouse_lnum >= wlastline + 1 || v:mouse_win != winnr() let @@= ykeep return endif if v:mouse_col > virtcol('.') let @@= ykeep return endif if a:islocal if exists("b:netrw_curdir") NetrwKeepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) endif else if exists("b:netrw_curdir") NetrwKeepj call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord())) endif endif let @@= ykeep endfun fun! s:NetrwCLeftmouse(islocal) call s:NetrwMarkFileTgt(a:islocal) endfun fun! s:NetrwServerEdit(islocal,fname) let islocal = a:islocal%2 " =0: remote =1: local let ctrlr = a:islocal >= 2 " =0: not used =1: used if (islocal && isdirectory(s:NetrwFile(a:fname))) || (!islocal && a:fname =~ '/$') let g:netrw_browse_split= 0 if exists("s:netrw_browse_split") && exists("s:netrw_browse_split_".winnr()) let g:netrw_browse_split= s:netrw_browse_split_{winnr()} unlet s:netrw_browse_split_{winnr()} endif call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,a:fname)) return endif if has("clientserver") && executable("gvim") if exists("g:netrw_browse_split") && type(g:netrw_browse_split) == 3 let srvrname = g:netrw_browse_split[0] let tabnum = g:netrw_browse_split[1] let winnum = g:netrw_browse_split[2] if serverlist() !~ '\<'.srvrname.'\>' if !ctrlr if exists("g:netrw_browse_split") unlet g:netrw_browse_split endif let g:netrw_browse_split= 0 if exists("s:netrw_browse_split_".winnr()) let g:netrw_browse_split= s:netrw_browse_split_{winnr()} endif call s:NetrwBrowseChgDir(islocal,a:fname) return elseif has("win32") && executable("start") call system("start gvim --servername ".srvrname) else call system("gvim --servername ".srvrname) endif endif call remote_send(srvrname,":tabn ".tabnum."\") call remote_send(srvrname,":".winnum."wincmd w\") call remote_send(srvrname,":e ".fnameescape(s:NetrwFile(a:fname))."\") else if serverlist() !~ '\<'.g:netrw_servername.'\>' if !ctrlr if exists("g:netrw_browse_split") unlet g:netrw_browse_split endif let g:netrw_browse_split= 0 call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,a:fname)) return else if has("win32") && executable("start") call system("start gvim --servername ".g:netrw_servername) else call system("gvim --servername ".g:netrw_servername) endif endif endif while 1 try call remote_send(g:netrw_servername,":e ".fnameescape(s:NetrwFile(a:fname))."\") break catch /^Vim\%((\a\+)\)\=:E241/ sleep 200m endtry endwhile if exists("g:netrw_browse_split") if type(g:netrw_browse_split) != 3 let s:netrw_browse_split_{winnr()}= g:netrw_browse_split endif unlet g:netrw_browse_split endif let g:netrw_browse_split= [g:netrw_servername,1,1] endif else call netrw#ErrorMsg(s:ERROR,"you need a gui-capable vim and client-server to use ",98) endif endfun fun! s:NetrwSLeftmouse(islocal) let s:ngw= s:NetrwGetWord() call s:NetrwMarkFile(a:islocal,s:ngw) endfun fun! s:NetrwSLeftdrag(islocal) if !exists("s:netrwdrag") let s:netrwdrag = winnr() if a:islocal nno :call NetrwSLeftrelease(1) else nno :call NetrwSLeftrelease(0) endif endif let ngw = s:NetrwGetWord() if !exists("s:ngw") || s:ngw != ngw call s:NetrwMarkFile(a:islocal,ngw) endif let s:ngw= ngw endfun fun! s:NetrwSLeftrelease(islocal) if exists("s:netrwdrag") nunmap let ngw = s:NetrwGetWord() if !exists("s:ngw") || s:ngw != ngw call s:NetrwMarkFile(a:islocal,ngw) endif if exists("s:ngw") unlet s:ngw endif unlet s:netrwdrag endif endfun fun! s:NetrwListHide() let ykeep= @@ let listhide= g:netrw_list_hide let sep = strpart(substitute('/~@#$%^&*{};:,<.>?|1234567890','['.escape(listhide,'-]^\').']','','ge'),1,1) while listhide != "" if listhide =~ ',' let hide = substitute(listhide,',.*$','','e') let listhide = substitute(listhide,'^.\{-},\(.*\)$','\1','e') else let hide = listhide let listhide = "" endif if g:netrw_hide == 1 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' elseif g:netrw_hide == 2 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' endif endwhile if g:netrw_hide == 2 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' endif exe 'sil! NetrwKeepj 1,$g@^\s*$@d' let @@= ykeep endfun fun! s:NetrwMakeDir(usrhost) let ykeep= @@ call inputsave() let newdirname= input("Please give directory name: ") call inputrestore() if newdirname == "" let @@= ykeep return endif if a:usrhost == "" let fullnewdir= b:netrw_curdir.'/'.newdirname if isdirectory(s:NetrwFile(fullnewdir)) if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24) endif let @@= ykeep return endif if s:FileReadable(fullnewdir) if !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25) endif let @@= ykeep return endif if exists("*mkdir") if has("unix") call mkdir(fullnewdir,"p",xor(0777, system("umask"))) else call mkdir(fullnewdir,"p") endif else let netrw_origdir= s:NetrwGetcwd(1) call s:NetrwLcd(b:netrw_curdir) call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) if v:shell_error != 0 let @@= ykeep call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) return endif if !g:netrw_keepdir call s:NetrwLcd(netrw_origdir) endif endif if v:shell_error == 0 let svpos= winsaveview() call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) call winrestview(svpos) elseif !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",26) endif elseif !exists("b:netrw_method") || b:netrw_method == 4 let mkdircmd = s:MakeSshCmd(g:netrw_mkdir_cmd) let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname call s:NetrwExe("sil! !".mkdircmd." ".s:ShellEscape(newdirname,1)) if v:shell_error == 0 let svpos= winsaveview() NetrwKeepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) NetrwKeepj call winrestview(svpos) elseif !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27) endif elseif b:netrw_method == 2 let svpos= winsaveview() if exists("b:netrw_fname") let remotepath= b:netrw_fname else let remotepath= "" endif call s:NetrwRemoteFtpCmd(remotepath,g:netrw_remote_mkdir.' "'.newdirname.'"') NetrwKeepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) NetrwKeepj call winrestview(svpos) elseif b:netrw_method == 3 let svpos= winsaveview() if exists("b:netrw_fname") let remotepath= b:netrw_fname else let remotepath= "" endif call s:NetrwRemoteFtpCmd(remotepath,g:netrw_remote_mkdir.' "'.newdirname.'"') NetrwKeepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) NetrwKeepj call winrestview(svpos) endif let @@= ykeep endfun fun! s:TreeSqueezeDir(islocal) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") let curdepth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') let stopline = (exists("w:netrw_bannercnt")? (w:netrw_bannercnt + 1) : 1) let depth = strchars(substitute(curdepth,' ','','g')) let srch = -1 if depth >= 2 NetrwKeepj norm! 0 let curdepthm1= substitute(curdepth,'^'.s:treedepthstring,'','') let srch = search('^'.curdepthm1.'\%('.s:treedepthstring.'\)\@!','bW',stopline) elseif depth == 1 NetrwKeepj norm! 0 let treedepthchr= substitute(s:treedepthstring,' ','','') let srch = search('^[^'.treedepthchr.']','bW',stopline) endif if srch > 0 call s:NetrwBrowse(a:islocal,s:NetrwBrowseChgDir(a:islocal,s:NetrwGetWord())) exe srch endif endif endfun fun! s:NetrwMaps(islocal) if g:netrw_mousemaps && g:netrw_retmap if !hasmapto("NetrwReturn") if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$' nmap <2-leftmouse> NetrwReturn elseif maparg("","n") == "" nmap NetrwReturn endif endif nno NetrwReturn :Rexplore endif if a:islocal nnoremap a :call NetrwHide(1) nnoremap - :call NetrwBrowseUpDir(1) nnoremap % :call NetrwOpenFile(1) nnoremap c :call NetrwLcd(b:netrw_curdir) nnoremap C :call NetrwSetChgwin() nnoremap :call netrw#LocalBrowseCheck(NetrwBrowseChgDir(1,NetrwGetWord())) nnoremap :call NetrwServerEdit(3,NetrwGetWord()) nnoremap d :call NetrwMakeDir("") nnoremap gb :call NetrwBookHistHandler(1,b:netrw_curdir) nnoremap gd :call NetrwForceChgDir(1,NetrwGetWord()) nnoremap gf :call NetrwForceFile(1,NetrwGetWord()) nnoremap gh :call NetrwHidden(1) nnoremap gn :call netrw#SetTreetop(NetrwGetWord()) nnoremap gp :call NetrwChgPerm(1,b:netrw_curdir) nnoremap I :call NetrwBannerCtrl(1) nnoremap i :call NetrwListStyle(1) nnoremap ma :call NetrwMarkFileArgList(1,0) nnoremap mA :call NetrwMarkFileArgList(1,1) nnoremap mb :call NetrwBookHistHandler(0,b:netrw_curdir) nnoremap mB :call NetrwBookHistHandler(6,b:netrw_curdir) nnoremap mc :call NetrwMarkFileCopy(1) nnoremap md :call NetrwMarkFileDiff(1) nnoremap me :call NetrwMarkFileEdit(1) nnoremap mf :call NetrwMarkFile(1,NetrwGetWord()) nnoremap mF :call NetrwUnmarkList(bufnr("%"),b:netrw_curdir) nnoremap mg :call NetrwMarkFileGrep(1) nnoremap mh :call NetrwMarkHideSfx(1) nnoremap mm :call NetrwMarkFileMove(1) nnoremap mp :call NetrwMarkFilePrint(1) nnoremap mr :call NetrwMarkFileRegexp(1) nnoremap ms :call NetrwMarkFileSource(1) nnoremap mT :call NetrwMarkFileTag(1) nnoremap mt :call NetrwMarkFileTgt(1) nnoremap mu :call NetrwUnMarkFile(1) nnoremap mv :call NetrwMarkFileVimCmd(1) nnoremap mx :call NetrwMarkFileExe(1,0) nnoremap mX :call NetrwMarkFileExe(1,1) nnoremap mz :call NetrwMarkFileCompress(1) nnoremap O :call NetrwObtain(1) nnoremap o :call NetrwSplit(3) nnoremap p :call NetrwPreview(NetrwBrowseChgDir(1,NetrwGetWord(),1)) nnoremap P :call NetrwPrevWinOpen(1) nnoremap qb :call NetrwBookHistHandler(2,b:netrw_curdir) nnoremap qf :call NetrwFileInfo(1,NetrwGetWord()) nnoremap qF :call NetrwMarkFileQFEL(1,getqflist()) nnoremap qL :call NetrwMarkFileQFEL(1,getloclist(v:count)) nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'exe "norm! 0"call NetrwRefresh(1,NetrwBrowseChgDir(1,'./')) nnoremap s :call NetrwSortStyle(1) nnoremap S :call NetSortSequence(1) nnoremap Tb :call NetrwSetTgt(1,'b',v:count1) nnoremap t :call NetrwSplit(4) nnoremap Th :call NetrwSetTgt(1,'h',v:count) nnoremap u :call NetrwBookHistHandler(4,expand("%")) nnoremap U :call NetrwBookHistHandler(5,expand("%")) nnoremap v :call NetrwSplit(5) nnoremap x :call netrw#BrowseX(NetrwBrowseChgDir(1,NetrwGetWord(),0),0)" nnoremap X :call NetrwLocalExecute(expand(""))" if !hasmapto('NetrwHideEdit') nmap NetrwHideEdit endif nnoremap NetrwHideEdit :call NetrwHideEdit(1) if !hasmapto('NetrwRefresh') nmap NetrwRefresh endif nnoremap NetrwRefresh :call NetrwRefresh(1,NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './')) if s:didstarstar || !mapcheck("","n") nnoremap :Nexplore endif if s:didstarstar || !mapcheck("","n") nnoremap :Pexplore endif if !hasmapto('NetrwTreeSqueeze') nmap NetrwTreeSqueeze endif nnoremap NetrwTreeSqueeze :call TreeSqueezeDir(1) let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) if g:netrw_mousemaps == 1 nmap NetrwLeftmouse nno NetrwLeftmouse :call NetrwLeftmouse(1) nmap NetrwCLeftmouse nno NetrwCLeftmouse :call NetrwCLeftmouse(1) nmap NetrwMiddlemouse nno NetrwMiddlemouse :call NetrwPrevWinOpen(1) nmap NetrwSLeftmouse nno NetrwSLeftmouse :call NetrwSLeftmouse(1) nmap NetrwSLeftdrag nno NetrwSLeftdrag :call NetrwSLeftdrag(1) nmap <2-leftmouse> Netrw2Leftmouse nmap Netrw2Leftmouse - imap ILeftmouse imap IMiddlemouse exe 'nnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'vnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' endif exe 'nnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'nnoremap D :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'nnoremap R :call NetrwLocalRename("'.mapsafecurdir.'")' exe 'nnoremap d :call NetrwMakeDir("")' exe 'vnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'vnoremap D :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'vnoremap R :call NetrwLocalRename("'.mapsafecurdir.'")' nnoremap :he netrw-quickhelp call netrw#UserMaps(1) else " remote call s:RemotePathAnalysis(b:netrw_curdir) nnoremap a :call NetrwHide(0) nnoremap - :call NetrwBrowseUpDir(0) nnoremap % :call NetrwOpenFile(0) nnoremap C :call NetrwSetChgwin() nnoremap :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) nnoremap :call NetrwBrowse(0,NetrwBrowseChgDir(0,NetrwGetWord())) nnoremap :call NetrwServerEdit(2,NetrwGetWord()) nnoremap gb :call NetrwBookHistHandler(1,b:netrw_curdir) nnoremap gd :call NetrwForceChgDir(0,NetrwGetWord()) nnoremap gf :call NetrwForceFile(0,NetrwGetWord()) nnoremap gh :call NetrwHidden(0) nnoremap gp :call NetrwChgPerm(0,b:netrw_curdir) nnoremap I :call NetrwBannerCtrl(1) nnoremap i :call NetrwListStyle(0) nnoremap ma :call NetrwMarkFileArgList(0,0) nnoremap mA :call NetrwMarkFileArgList(0,1) nnoremap mb :call NetrwBookHistHandler(0,b:netrw_curdir) nnoremap mB :call NetrwBookHistHandler(6,b:netrw_curdir) nnoremap mc :call NetrwMarkFileCopy(0) nnoremap md :call NetrwMarkFileDiff(0) nnoremap me :call NetrwMarkFileEdit(0) nnoremap mf :call NetrwMarkFile(0,NetrwGetWord()) nnoremap mF :call NetrwUnmarkList(bufnr("%"),b:netrw_curdir) nnoremap mg :call NetrwMarkFileGrep(0) nnoremap mh :call NetrwMarkHideSfx(0) nnoremap mm :call NetrwMarkFileMove(0) nnoremap mp :call NetrwMarkFilePrint(0) nnoremap mr :call NetrwMarkFileRegexp(0) nnoremap ms :call NetrwMarkFileSource(0) nnoremap mT :call NetrwMarkFileTag(0) nnoremap mt :call NetrwMarkFileTgt(0) nnoremap mu :call NetrwUnMarkFile(0) nnoremap mv :call NetrwMarkFileVimCmd(0) nnoremap mx :call NetrwMarkFileExe(0,0) nnoremap mX :call NetrwMarkFileExe(0,1) nnoremap mz :call NetrwMarkFileCompress(0) nnoremap O :call NetrwObtain(0) nnoremap o :call NetrwSplit(0) nnoremap p :call NetrwPreview(NetrwBrowseChgDir(1,NetrwGetWord(),1)) nnoremap P :call NetrwPrevWinOpen(0) nnoremap qb :call NetrwBookHistHandler(2,b:netrw_curdir) nnoremap qf :call NetrwFileInfo(0,NetrwGetWord()) nnoremap qF :call NetrwMarkFileQFEL(0,getqflist()) nnoremap qL :call NetrwMarkFileQFEL(0,getloclist(v:count)) nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'exe "norm! 0"call NetrwBrowse(0,NetrwBrowseChgDir(0,'./')) nnoremap s :call NetrwSortStyle(0) nnoremap S :call NetSortSequence(0) nnoremap Tb :call NetrwSetTgt(0,'b',v:count1) nnoremap t :call NetrwSplit(1) nnoremap Th :call NetrwSetTgt(0,'h',v:count) nnoremap u :call NetrwBookHistHandler(4,b:netrw_curdir) nnoremap U :call NetrwBookHistHandler(5,b:netrw_curdir) nnoremap v :call NetrwSplit(2) nnoremap x :call netrw#BrowseX(NetrwBrowseChgDir(0,NetrwGetWord()),1) if !hasmapto('NetrwHideEdit') nmap NetrwHideEdit endif nnoremap NetrwHideEdit :call NetrwHideEdit(0) if !hasmapto('NetrwRefresh') nmap NetrwRefresh endif if !hasmapto('NetrwTreeSqueeze') nmap NetrwTreeSqueeze endif nnoremap NetrwTreeSqueeze :call TreeSqueezeDir(0) let mapsafepath = escape(s:path, s:netrw_map_escape) let mapsafeusermach = escape(((s:user == "")? "" : s:user."@").s:machine, s:netrw_map_escape) nnoremap NetrwRefresh :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) if g:netrw_mousemaps == 1 nmap NetrwLeftmouse nno NetrwLeftmouse :call NetrwLeftmouse(0) nmap NetrwCLeftmouse nno NetrwCLeftmouse :call NetrwCLeftmouse(0) nmap NetrwSLeftmouse nno NetrwSLeftmouse :call NetrwSLeftmouse(0) nmap NetrwSLeftdrag nno NetrwSLeftdrag :call NetrwSLeftdrag(0) nmap NetrwMiddlemouse nno NetrwMiddlemouse :call NetrwPrevWinOpen(0) nmap <2-leftmouse> Netrw2Leftmouse nmap Netrw2Leftmouse - imap ILeftmouse imap IMiddlemouse imap ISLeftmouse exe 'nnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' endif exe 'nnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'nnoremap d :call NetrwMakeDir("'.mapsafeusermach.'")' exe 'nnoremap D :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'nnoremap R :call NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap D :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap R :call NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")' nnoremap :he netrw-quickhelp call netrw#UserMaps(0) endif endfun fun! s:NetrwCommands(islocal) com! -nargs=* -complete=file -bang NetrwMB call s:NetrwBookmark(0,) com! -nargs=* NetrwC call s:NetrwSetChgwin() com! Rexplore if exists("w:netrw_rexlocal")|call s:NetrwRexplore(w:netrw_rexlocal,exists("w:netrw_rexdir")? w:netrw_rexdir : ".")|else|call netrw#ErrorMsg(s:WARNING,"win#".winnr()." not a former netrw window",79)|endif if a:islocal com! -buffer -nargs=+ -complete=file MF call s:NetrwMarkFiles(1,) else com! -buffer -nargs=+ -complete=file MF call s:NetrwMarkFiles(0,) endif com! -buffer -nargs=? -complete=file MT call s:NetrwMarkTarget() endfun fun! s:NetrwMarkFiles(islocal,...) let curdir = s:NetrwGetCurdir(a:islocal) let i = 1 while i <= a:0 if a:islocal if v:version > 704 || (v:version == 704 && has("patch656")) let mffiles= glob(fnameescape(a:{i}),0,1,1) else let mffiles= glob(fnameescape(a:{i}),0,1) endif else let mffiles= [a:{i}] endif for mffile in mffiles call s:NetrwMarkFile(a:islocal,mffile) endfor let i= i + 1 endwhile endfun fun! s:NetrwMarkTarget(...) if a:0 == 0 || (a:0 == 1 && a:1 == "") let curdir = s:NetrwGetCurdir(1) let tgt = b:netrw_curdir else let curdir = s:NetrwGetCurdir((a:1 =~ '^\a\{3,}://')? 0 : 1) let tgt = a:1 endif let s:netrwmftgt = tgt let s:netrwmftgt_islocal = tgt !~ '^\a\{3,}://' let curislocal = b:netrw_curdir !~ '^\a\{3,}://' let svpos = winsaveview() call s:NetrwRefresh(curislocal,s:NetrwBrowseChgDir(curislocal,'./')) call winrestview(svpos) endfun fun! s:NetrwMarkFile(islocal,fname) if empty(a:fname) return endif let curdir = s:NetrwGetCurdir(a:islocal) let ykeep = @@ let curbufnr= bufnr("%") if a:fname =~ '^\a' let leader= '\<' else let leader= '' endif if a:fname =~ '\a$' let trailer = '\>[@=|\/\*]\=\ze\%( \|\t\|$\)' else let trailer = '[@=|\/\*]\=\ze\%( \|\t\|$\)' endif if exists("s:netrwmarkfilelist_".curbufnr) let b:netrw_islocal= a:islocal if index(s:netrwmarkfilelist_{curbufnr},a:fname) == -1 call add(s:netrwmarkfilelist_{curbufnr},a:fname) let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|'.leader.escape(a:fname,g:netrw_markfileesc).trailer else call filter(s:netrwmarkfilelist_{curbufnr},'v:val != a:fname') if s:netrwmarkfilelist_{curbufnr} == [] call s:NetrwUnmarkList(curbufnr,curdir) else let s:netrwmarkfilemtch_{curbufnr}= "" let first = 1 for fname in s:netrwmarkfilelist_{curbufnr} if first let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.leader.escape(fname,g:netrw_markfileesc).trailer else let s:netrwmarkfilemtch_{curbufnr}= s:netrwmarkfilemtch_{curbufnr}.'\|'.leader.escape(fname,g:netrw_markfileesc).trailer endif let first= 0 endfor endif endif else let s:netrwmarkfilelist_{curbufnr}= [] call add(s:netrwmarkfilelist_{curbufnr},substitute(a:fname,'[|@]$','','')) if a:fname =~ '/$' let s:netrwmarkfilemtch_{curbufnr}= leader.escape(a:fname,g:netrw_markfileesc) else let s:netrwmarkfilemtch_{curbufnr}= leader.escape(a:fname,g:netrw_markfileesc).trailer endif endif if exists("s:netrwmarkfilelist") let dname= s:ComposePath(b:netrw_curdir,a:fname) if index(s:netrwmarkfilelist,dname) == -1 call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) else call filter(s:netrwmarkfilelist,'v:val != "'.dname.'"') if s:netrwmarkfilelist == [] unlet s:netrwmarkfilelist endif endif else let s:netrwmarkfilelist= [] call add(s:netrwmarkfilelist,s:ComposePath(b:netrw_curdir,a:fname)) endif if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" if exists("g:did_drchip_netrwlist_syntax") exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" endif else 2match none endif let @@= ykeep endfun fun! s:NetrwMarkFileArgList(islocal,tomflist) let svpos = winsaveview() let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if a:tomflist while argc() let fname= argv(0) exe "argdel ".fnameescape(fname) call s:NetrwMarkFile(a:islocal,fname) endwhile else if exists("s:netrwmarkfilelist") for fname in s:netrwmarkfilelist exe "argadd ".fnameescape(fname) endfor " for every file in the marked list call s:NetrwUnmarkList(curbufnr,curdir) NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) endif endif endfun fun! s:NetrwMarkFileCompress(islocal) let svpos = winsaveview() let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if exists("s:netrwmarkfilelist_{curbufnr}") && exists("g:netrw_compress") && exists("g:netrw_decompress") for fname in s:netrwmarkfilelist_{curbufnr} let sfx= substitute(fname,'^.\{-}\(\.\a\+\)$','\1','') if exists("g:netrw_decompress['".sfx."']") let exe= g:netrw_decompress[sfx] let exe= netrw#WinPath(exe) if a:islocal if g:netrw_keepdir let fname= s:ShellEscape(s:ComposePath(curdir,fname)) endif else let fname= s:ShellEscape(b:netrw_curdir.fname,1) endif if executable(exe) if a:islocal call system(exe." ".fname) else NetrwKeepj call s:RemoteSystem(exe." ".fname) endif else NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) endif endif unlet sfx if exists("exe") unlet exe elseif a:islocal call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) else NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) endif endfor " for every file in the marked list call s:NetrwUnmarkList(curbufnr,curdir) NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) endif endfun fun! s:NetrwMarkFileCopy(islocal,...) let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if b:netrw_curdir !~ '/$' if !exists("b:netrw_curdir") let b:netrw_curdir= curdir endif let b:netrw_curdir= b:netrw_curdir."/" endif if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if !exists("s:netrwmftgt") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"your marked file target is empty! (:help netrw-mt)",67) return 0 endif if a:islocal && s:netrwmftgt_islocal if !executable(g:netrw_localcopycmd) && g:netrw_localcopycmd !~ '^'.expand("$COMSPEC").'\s' call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) return endif if simplify(s:netrwmftgt) == simplify(b:netrw_curdir) if len(s:netrwmarkfilelist_{bufnr('%')}) == 1 let args = s:ShellEscape(b:netrw_curdir.s:netrwmarkfilelist_{bufnr('%')}[0]) let oldname = s:netrwmarkfilelist_{bufnr('%')}[0] elseif a:0 == 1 let args = s:ShellEscape(b:netrw_curdir.a:1) let oldname = a:1 else let s:recursive= 1 for oldname in s:netrwmarkfilelist_{bufnr("%")} let ret= s:NetrwMarkFileCopy(a:islocal,oldname) if ret == 0 break endif endfor unlet s:recursive call s:NetrwUnmarkList(curbufnr,curdir) return ret endif call inputsave() let newname= input("Copy ".oldname." to : ",oldname,"file") call inputrestore() if newname == "" return 0 endif let args= s:ShellEscape(oldname) let tgt = s:ShellEscape(s:netrwmftgt.'/'.newname) else let args= join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"s:ShellEscape(b:netrw_curdir.\"/\".v:val)")) let tgt = s:ShellEscape(s:netrwmftgt) endif if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) let args= substitute(args,'/','\\','g') let tgt = substitute(tgt, '/','\\','g') endif if args =~ "'" |let args= substitute(args,"'\\(.*\\)'",'\1','')|endif if tgt =~ "'" |let tgt = substitute(tgt ,"'\\(.*\\)'",'\1','')|endif if args =~ '//'|let args= substitute(args,'//','/','g')|endif if tgt =~ '//'|let tgt = substitute(tgt ,'//','/','g')|endif if isdirectory(s:NetrwFile(args)) let copycmd= g:netrw_localcopydircmd if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) let tgt= tgt.'\'.substitute(a:1,'^.*[\\/]','','') endif else let copycmd= g:netrw_localcopycmd endif if g:netrw_localcopycmd =~ '\s' let copycmd = substitute(copycmd,'\s.*$','','') let copycmdargs = substitute(copycmd,'^.\{-}\(\s.*\)$','\1','') let copycmd = netrw#WinPath(copycmd).copycmdargs else let copycmd = netrw#WinPath(copycmd) endif call system(copycmd." '".args."' '".tgt."'") if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",101) else call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localcopycmd<".g:netrw_localcopycmd.">; it doesn't work!",80) endif return 0 endif elseif a:islocal && !s:netrwmftgt_islocal NetrwKeepj call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt) elseif !a:islocal && s:netrwmftgt_islocal NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt) elseif !a:islocal && !s:netrwmftgt_islocal let curdir = getcwd() let tmpdir = s:GetTempfile("") if tmpdir !~ '/' let tmpdir= curdir."/".tmpdir endif if exists("*mkdir") call mkdir(tmpdir) else call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) return endif endif if isdirectory(s:NetrwFile(tmpdir)) call s:NetrwLcd(tmpdir) NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) if getcwd() == tmpdir for fname in s:netrwmarkfilelist_{bufnr('%')} NetrwKeepj call s:NetrwDelete(fname) endfor call s:NetrwLcd(curdir) if v:version < 704 || !has("patch1109") call s:NetrwExe("sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) return endif else if delete(tmpdir,"d") call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".tmpdir.">!",103) endif endif else call s:NetrwLcd(curdir) endif endif endif call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer if exists("s:recursive") else endif if g:netrw_fastbrowse <= 1 NetrwKeepj call s:LocalBrowseRefresh() else if !exists("s:recursive") NetrwKeepj call s:NetrwUnmarkList(curbufnr,curdir) endif if s:netrwmftgt_islocal NetrwKeepj call s:NetrwRefreshDir(s:netrwmftgt_islocal,s:netrwmftgt) endif if a:islocal && s:netrwmftgt != curdir NetrwKeepj call s:NetrwRefreshDir(a:islocal,curdir) endif endif return 1 endfun fun! s:NetrwMarkFileDiff(islocal) let curbufnr= bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif let curdir= s:NetrwGetCurdir(a:islocal) if exists("s:netrwmarkfilelist_{".curbufnr."}") let cnt = 0 for fname in s:netrwmarkfilelist let cnt= cnt + 1 if cnt == 1 exe "NetrwKeepj e ".fnameescape(fname) diffthis elseif cnt == 2 || cnt == 3 vsplit wincmd l exe "NetrwKeepj e ".fnameescape(fname) diffthis else break endif endfor call s:NetrwUnmarkList(curbufnr,curdir) endif endfun fun! s:NetrwMarkFileEdit(islocal) let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if exists("s:netrwmarkfilelist_{curbufnr}") call s:SetRexDir(a:islocal,curdir) let flist= join(map(deepcopy(s:netrwmarkfilelist), "fnameescape(v:val)")) call s:NetrwUnmarkAll() exe "sil args ".flist endif echo "(use :bn, :bp to navigate files; :Rex to return)" endfun fun! s:NetrwMarkFileQFEL(islocal,qfel) call s:NetrwUnmarkAll() let curbufnr= bufnr("%") if !empty(a:qfel) for entry in a:qfel let bufnmbr= entry["bufnr"] if !exists("s:netrwmarkfilelist_{curbufnr}") call s:NetrwMarkFile(a:islocal,bufname(bufnmbr)) elseif index(s:netrwmarkfilelist_{curbufnr},bufname(bufnmbr)) == -1 call s:NetrwMarkFile(a:islocal,bufname(bufnmbr)) else endif endfor echo "(use me to edit marked files)" else call netrw#ErrorMsg(s:WARNING,"can't convert quickfix error list; its empty!",92) endif endfun fun! s:NetrwMarkFileExe(islocal,enbloc) let svpos = winsaveview() let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if a:enbloc == 0 if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if exists("s:netrwmarkfilelist_{curbufnr}") call inputsave() let cmd= input("Enter command: ","","file") call inputrestore() if cmd == "" return endif for fname in s:netrwmarkfilelist_{curbufnr} if a:islocal if g:netrw_keepdir let fname= s:ShellEscape(netrw#WinPath(s:ComposePath(curdir,fname))) endif else let fname= s:ShellEscape(netrw#WinPath(b:netrw_curdir.fname)) endif if cmd =~ '%' let xcmd= substitute(cmd,'%',fname,'g') else let xcmd= cmd.' '.fname endif if a:islocal let ret= system(xcmd) else let ret= s:RemoteSystem(xcmd) endif if v:shell_error < 0 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"command<".xcmd."> failed, aborting",54) break else echo ret endif endfor call s:NetrwUnmarkList(curbufnr,curdir) NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) else NetrwKeepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif else " apply command to global list of files, en bloc call inputsave() let cmd= input("Enter command: ","","file") call inputrestore() if cmd == "" return endif if cmd =~ '%' let cmd= substitute(cmd,'%',join(map(s:netrwmarkfilelist,'s:ShellEscape(v:val)'),' '),'g') else let cmd= cmd.' '.join(map(s:netrwmarkfilelist,'s:ShellEscape(v:val)'),' ') endif if a:islocal call system(cmd) if v:shell_error < 0 NetrwKeepj call netrw#ErrorMsg(s:ERROR,"command<".xcmd."> failed, aborting",54) endif else let ret= s:RemoteSystem(cmd) endif call s:NetrwUnmarkAll() NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) endif endfun fun! s:NetrwMarkHideSfx(islocal) let svpos = winsaveview() let curbufnr = bufnr("%") if exists("s:netrwmarkfilelist_{curbufnr}") for fname in s:netrwmarkfilelist_{curbufnr} if fname =~ '\.' let sfxpat= "^.*".substitute(fname,'^.*\(\.[^. ]\+\)$','\1','') else let sfxpat= '^\%(\%(\.\)\@!.\)*$' endif let inhidelist= 0 if g:netrw_list_hide != "" let itemnum = 0 let hidelist= split(g:netrw_list_hide,',') for hidepat in hidelist if sfxpat == hidepat let inhidelist= 1 break endif let itemnum= itemnum + 1 endfor endif if inhidelist call remove(hidelist,itemnum) let g:netrw_list_hide= join(hidelist,",") elseif g:netrw_list_hide != "" let g:netrw_list_hide= g:netrw_list_hide.",".sfxpat else let g:netrw_list_hide= sfxpat endif endfor NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) else NetrwKeepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif endfun fun! s:NetrwMarkFileVimCmd(islocal) let svpos = winsaveview() let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if exists("s:netrwmarkfilelist_{curbufnr}") call inputsave() let cmd= input("Enter vim command: ","","file") call inputrestore() if cmd == "" return endif for fname in s:netrwmarkfilelist_{curbufnr} if a:islocal 1split exe "sil! NetrwKeepj keepalt e ".fnameescape(fname) exe cmd exe "sil! keepalt wq!" else echo "sorry, \"mv\" not supported yet for remote files" endif endfor call s:NetrwUnmarkList(curbufnr,curdir) NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) else NetrwKeepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif endfun fun! s:NetrwMarkHideSfx(islocal) let svpos = winsaveview() let curbufnr = bufnr("%") if exists("s:netrwmarkfilelist_{curbufnr}") for fname in s:netrwmarkfilelist_{curbufnr} if fname =~ '\.' let sfxpat= "^.*".substitute(fname,'^.*\(\.[^. ]\+\)$','\1','') else let sfxpat= '^\%(\%(\.\)\@!.\)*$' endif let inhidelist= 0 if g:netrw_list_hide != "" let itemnum = 0 let hidelist= split(g:netrw_list_hide,',') for hidepat in hidelist if sfxpat == hidepat let inhidelist= 1 break endif let itemnum= itemnum + 1 endfor endif if inhidelist call remove(hidelist,itemnum) let g:netrw_list_hide= join(hidelist,",") elseif g:netrw_list_hide != "" let g:netrw_list_hide= g:netrw_list_hide.",".sfxpat else let g:netrw_list_hide= sfxpat endif endfor NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) else NetrwKeepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59) endif endfun fun! s:NetrwMarkFileGrep(islocal) let svpos = winsaveview() let curbufnr = bufnr("%") let curdir = s:NetrwGetCurdir(a:islocal) if exists("s:netrwmarkfilelist") let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "fnameescape(v:val)")) call s:NetrwUnmarkAll() else let netrwmarkfilelist= "*" endif call inputsave() let pat= input("Enter pattern: ","") call inputrestore() let patbang = "" if pat =~ '^!' let patbang = "!" let pat = strpart(pat,2) endif if pat =~ '^\i' let pat = escape(pat,'/') let pat = '/'.pat.'/' else let nonisi = pat[0] endif try exe "NetrwKeepj noautocmd vimgrep".patbang." ".pat." ".netrwmarkfilelist catch /^Vim\%((\a\+)\)\=:E480/ NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pat.">",76) return endtry echo "(use :cn, :cp to navigate, :Rex to return)" 2match none NetrwKeepj call winrestview(svpos) if exists("nonisi") if pat =~# nonisi.'j$\|'.nonisi.'gj$\|'.nonisi.'jg$' call s:NetrwMarkFileQFEL(a:islocal,getqflist()) endif endif endfun fun! s:NetrwMarkFileMove(islocal) let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if !exists("s:netrwmftgt") NetrwKeepj call netrw#ErrorMsg(2,"your marked file target is empty! (:help netrw-mt)",67) return 0 endif if a:islocal && s:netrwmftgt_islocal if !executable(g:netrw_localmovecmd) && g:netrw_localmovecmd !~ '^'.expand("$COMSPEC").'\s' call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) return endif let tgt = s:ShellEscape(s:netrwmftgt) if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) let tgt = substitute(tgt, '/','\\','g') if g:netrw_localmovecmd =~ '\s' let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') let movecmd = netrw#WinPath(movecmd).movecmdargs else let movecmd = netrw#WinPath(movecmd) endif else let movecmd = netrw#WinPath(g:netrw_localmovecmd) endif for fname in s:netrwmarkfilelist_{bufnr("%")} if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) let fname= substitute(fname,'/','\\','g') endif let ret= system(movecmd." ".s:ShellEscape(fname)." ".tgt) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",100) else call netrw#ErrorMsg(s:ERROR,"tried using g:netrw_localmovecmd<".g:netrw_localmovecmd.">; it doesn't work!",54) endif break endif endfor elseif a:islocal && !s:netrwmftgt_islocal let mflist= s:netrwmarkfilelist_{bufnr("%")} NetrwKeepj call s:NetrwMarkFileCopy(a:islocal) for fname in mflist let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') let ok = s:NetrwLocalRmFile(b:netrw_curdir,barefname,1) endfor unlet mflist elseif !a:islocal && s:netrwmftgt_islocal let mflist= s:netrwmarkfilelist_{bufnr("%")} NetrwKeepj call s:NetrwMarkFileCopy(a:islocal) for fname in mflist let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') let ok = s:NetrwRemoteRmFile(b:netrw_curdir,barefname,1) endfor unlet mflist elseif !a:islocal && !s:netrwmftgt_islocal let mflist= s:netrwmarkfilelist_{bufnr("%")} NetrwKeepj call s:NetrwMarkFileCopy(a:islocal) for fname in mflist let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') let ok = s:NetrwRemoteRmFile(b:netrw_curdir,barefname,1) endfor unlet mflist endif call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer if !s:netrwmftgt_islocal NetrwKeepj call s:NetrwRefreshDir(s:netrwmftgt_islocal,s:netrwmftgt) endif if a:islocal NetrwKeepj call s:NetrwRefreshDir(a:islocal,b:netrw_curdir) endif if g:netrw_fastbrowse <= 1 NetrwKeepj call s:LocalBrowseRefresh() endif endfun fun! s:NetrwMarkFilePrint(islocal) let curbufnr= bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif let curdir= s:NetrwGetCurdir(a:islocal) if exists("s:netrwmarkfilelist_{curbufnr}") let netrwmarkfilelist = s:netrwmarkfilelist_{curbufnr} call s:NetrwUnmarkList(curbufnr,curdir) for fname in netrwmarkfilelist if a:islocal if g:netrw_keepdir let fname= s:ComposePath(curdir,fname) endif else let fname= curdir.fname endif 1split exe "sil NetrwKeepj e ".fnameescape(fname) hardcopy q endfor 2match none endif endfun fun! s:NetrwMarkFileRegexp(islocal) call inputsave() let regexp= input("Enter regexp: ","","file") call inputrestore() if a:islocal let curdir= s:NetrwGetCurdir(a:islocal) let dirname = escape(b:netrw_curdir,g:netrw_glob_escape) if v:version > 704 || (v:version == 704 && has("patch656")) let files = glob(s:ComposePath(dirname,regexp),0,0,1) else let files = glob(s:ComposePath(dirname,regexp),0,0) endif let filelist= split(files,"\n") for fname in filelist NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','','')) endfor else let eikeep = &ei let areg = @a sil NetrwKeepj %y a setl ei=all ma 1split NetrwKeepj call s:NetrwEnew() NetrwKeepj call s:NetrwSafeOptions() sil NetrwKeepj norm! "ap NetrwKeepj 2 let bannercnt= search('^" =====','W') exe "sil NetrwKeepj 1,".bannercnt."d" setl bt=nofile if g:netrw_liststyle == s:LONGLIST sil NetrwKeepj %s/\s\{2,}\S.*$//e call histdel("/",-1) elseif g:netrw_liststyle == s:WIDELIST sil NetrwKeepj %s/\s\{2,}/\r/ge call histdel("/",-1) elseif g:netrw_liststyle == s:TREELIST exe 'sil NetrwKeepj %s/^'.s:treedepthstring.' //e' sil! NetrwKeepj g/^ .*$/d call histdel("/",-1) call histdel("/",-1) endif let regexp= substitute(regexp,'\*','.*','g') exe "sil! NetrwKeepj v/".escape(regexp,'/')."/d" call histdel("/",-1) let filelist= getline(1,line("$")) q! for filename in filelist NetrwKeepj call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','','')) endfor unlet filelist let @a = areg let &ei = eikeep endif echo " (use me to edit marked files)" endfun fun! s:NetrwMarkFileSource(islocal) let curbufnr= bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif let curdir= s:NetrwGetCurdir(a:islocal) if exists("s:netrwmarkfilelist_{curbufnr}") let netrwmarkfilelist = s:netrwmarkfilelist_{bufnr("%")} call s:NetrwUnmarkList(curbufnr,curdir) for fname in netrwmarkfilelist if a:islocal if g:netrw_keepdir let fname= s:ComposePath(curdir,fname) endif else let fname= curdir.fname endif exe "so ".fnameescape(fname) endfor 2match none endif endfun fun! s:NetrwMarkFileTag(islocal) let svpos = winsaveview() let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) NetrwKeepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66) return endif if exists("s:netrwmarkfilelist") let netrwmarkfilelist= join(map(deepcopy(s:netrwmarkfilelist), "s:ShellEscape(v:val,".!a:islocal.")")) call s:NetrwUnmarkAll() if a:islocal if executable(g:netrw_ctags) call system(g:netrw_ctags." ".netrwmarkfilelist) else call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) endif else let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) call netrw#Obtain(a:islocal,"tags") let curdir= b:netrw_curdir 1split NetrwKeepj e tags let path= substitute(curdir,'^\(.*\)/[^/]*$','\1/','') exe 'NetrwKeepj %s/\t\(\S\+\)\t/\t'.escape(path,"/\n\r\\").'\1\t/e' call histdel("/",-1) wq! endif 2match none call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) call winrestview(svpos) endif endfun fun! s:NetrwMarkFileTgt(islocal) let svpos = winsaveview() let curdir = s:NetrwGetCurdir(a:islocal) let hadtgt = exists("s:netrwmftgt") if !exists("w:netrw_bannercnt") let w:netrw_bannercnt= b:netrw_bannercnt endif if line(".") < w:netrw_bannercnt if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") && s:netrwmftgt == b:netrw_curdir unlet s:netrwmftgt s:netrwmftgt_islocal if g:netrw_fastbrowse <= 1 call s:LocalBrowseRefresh() endif call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) call winrestview(svpos) return else let s:netrwmftgt= b:netrw_curdir endif else let curword= s:NetrwGetWord() let tgtdir = s:ComposePath(curdir,curword) if a:islocal && isdirectory(s:NetrwFile(tgtdir)) let s:netrwmftgt = tgtdir elseif !a:islocal && tgtdir =~ '/$' let s:netrwmftgt = tgtdir else let s:netrwmftgt = curdir endif endif if a:islocal let s:netrwmftgt= simplify(s:netrwmftgt) endif if g:netrw_cygwin let s:netrwmftgt= substitute(system("cygpath ".s:ShellEscape(s:netrwmftgt)),'\n$','','') let s:netrwmftgt= substitute(s:netrwmftgt,'\n$','','') endif let s:netrwmftgt_islocal= a:islocal if g:netrw_fastbrowse <= 1 call s:LocalBrowseRefresh() endif if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,w:netrw_treetop)) else call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) endif call winrestview(svpos) if !hadtgt sil! NetrwKeepj norm! j endif endfun fun! s:NetrwGetCurdir(islocal) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST let b:netrw_curdir = s:NetrwTreePath(w:netrw_treetop) elseif !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif if b:netrw_curdir !~ '\<\a\{3,}://' let curdir= b:netrw_curdir if g:netrw_keepdir == 0 call s:NetrwLcd(curdir) endif endif return b:netrw_curdir endfun fun! s:NetrwOpenFile(islocal) let ykeep= @@ call inputsave() let fname= input("Enter filename: ") call inputrestore() if fname !~ '[/\\]' if exists("b:netrw_curdir") if exists("g:netrw_quiet") let netrw_quiet_keep = g:netrw_quiet endif let g:netrw_quiet = 1 let s:rexposn_{bufnr("%")}= winsaveview() if b:netrw_curdir =~ '/$' exe "NetrwKeepj e ".fnameescape(b:netrw_curdir.fname) else exe "e ".fnameescape(b:netrw_curdir."/".fname) endif if exists("netrw_quiet_keep") let g:netrw_quiet= netrw_quiet_keep else unlet g:netrw_quiet endif endif else exe "NetrwKeepj e ".fnameescape(fname) endif let @@= ykeep endfun fun! netrw#Shrink() let curwin = winnr() let wiwkeep = &wiw set wiw=1 if &ft == "netrw" if winwidth(0) > g:netrw_wiw let t:netrw_winwidth= winwidth(0) exe "vert resize ".g:netrw_wiw wincmd l if winnr() == curwin wincmd h endif else exe "vert resize ".t:netrw_winwidth endif elseif exists("t:netrw_lexbufnr") exe bufwinnr(t:netrw_lexbufnr)."wincmd w" if winwidth(bufwinnr(t:netrw_lexbufnr)) > g:netrw_wiw let t:netrw_winwidth= winwidth(0) exe "vert resize ".g:netrw_wiw wincmd l if winnr() == curwin wincmd h endif elseif winwidth(bufwinnr(t:netrw_lexbufnr)) >= 0 exe "vert resize ".t:netrw_winwidth else call netrw#Lexplore(0,0) endif else call netrw#Lexplore(0,0) endif let wiw= wiwkeep endfun fun! s:NetSortSequence(islocal) let ykeep= @@ let svpos= winsaveview() call inputsave() let newsortseq= input("Edit Sorting Sequence: ",g:netrw_sort_sequence) call inputrestore() let g:netrw_sort_sequence= newsortseq NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) let @@= ykeep endfun fun! s:NetrwUnmarkList(curbufnr,curdir) if exists("s:netrwmarkfilelist") for mfile in s:netrwmarkfilelist_{a:curbufnr} let dfile = s:ComposePath(a:curdir,mfile) " prepend directory to mfile let idx = index(s:netrwmarkfilelist,dfile) " get index in list of dfile call remove(s:netrwmarkfilelist,idx) " remove from global list endfor if s:netrwmarkfilelist == [] unlet s:netrwmarkfilelist endif unlet s:netrwmarkfilelist_{a:curbufnr} endif if exists("s:netrwmarkfilemtch_{a:curbufnr}") unlet s:netrwmarkfilemtch_{a:curbufnr} endif 2match none endfun fun! s:NetrwUnmarkAll() if exists("s:netrwmarkfilelist") unlet s:netrwmarkfilelist endif sil call s:NetrwUnmarkAll2() 2match none endfun fun! s:NetrwUnmarkAll2() redir => netrwmarkfilelist_let let redir END let netrwmarkfilelist_list= split(netrwmarkfilelist_let,'\n') " convert let string into a let list call filter(netrwmarkfilelist_list,"v:val =~ '^s:netrwmarkfilelist_'") " retain only those vars that start as s:netrwmarkfilelist_ call map(netrwmarkfilelist_list,"substitute(v:val,'\\s.*$','','')") " remove what the entries are equal to for flist in netrwmarkfilelist_list let curbufnr= substitute(flist,'s:netrwmarkfilelist_','','') unlet s:netrwmarkfilelist_{curbufnr} unlet s:netrwmarkfilemtch_{curbufnr} endfor endfun fun! s:NetrwUnMarkFile(islocal) let svpos = winsaveview() let curbufnr = bufnr("%") if exists("s:netrwmarkfilelist") unlet s:netrwmarkfilelist endif let ibuf= 1 while ibuf < bufnr("$") if exists("s:netrwmarkfilelist_".ibuf) unlet s:netrwmarkfilelist_{ibuf} unlet s:netrwmarkfilemtch_{ibuf} endif let ibuf = ibuf + 1 endwhile 2match none call winrestview(svpos) endfun fun! s:NetrwMenu(domenu) if !exists("g:NetrwMenuPriority") let g:NetrwMenuPriority= 80 endif if has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu if !exists("s:netrw_menu_enabled") && a:domenu let s:netrw_menu_enabled= 1 exe 'sil! menu '.g:NetrwMenuPriority.'.1 '.g:NetrwTopLvlMenu.'Help ' exe 'sil! menu '.g:NetrwMenuPriority.'.5 '.g:NetrwTopLvlMenu.'-Sep1- :' exe 'sil! menu '.g:NetrwMenuPriority.'.6 '.g:NetrwTopLvlMenu.'Go\ Up\ Directory- -' exe 'sil! menu '.g:NetrwMenuPriority.'.7 '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewerx x' if g:netrw_dirhistmax > 0 exe 'sil! menu '.g:NetrwMenuPriority.'.8.1 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Current\ Directorymb mb' exe 'sil! menu '.g:NetrwMenuPriority.'.8.4 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Prev\ Dir\ (History)u u' exe 'sil! menu '.g:NetrwMenuPriority.'.8.5 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Goto\ Next\ Dir\ (History)U U' exe 'sil! menu '.g:NetrwMenuPriority.'.8.6 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Listqb qb' else exe 'sil! menu '.g:NetrwMenuPriority.'.8 '.g:NetrwTopLvlMenu.'Bookmarks\ and\ History :echo "(disabled)"'."\" endif exe 'sil! menu '.g:NetrwMenuPriority.'.9.1 '.g:NetrwTopLvlMenu.'Browsing\ Control.Horizontal\ Splito o' exe 'sil! menu '.g:NetrwMenuPriority.'.9.2 '.g:NetrwTopLvlMenu.'Browsing\ Control.Vertical\ Splitv v' exe 'sil! menu '.g:NetrwMenuPriority.'.9.3 '.g:NetrwTopLvlMenu.'Browsing\ Control.New\ Tabt t' exe 'sil! menu '.g:NetrwMenuPriority.'.9.4 '.g:NetrwTopLvlMenu.'Browsing\ Control.Previewp p' exe 'sil! menu '.g:NetrwMenuPriority.'.9.5 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ File\ Hiding\ List'." \'" exe 'sil! menu '.g:NetrwMenuPriority.'.9.6 '.g:NetrwTopLvlMenu.'Browsing\ Control.Edit\ Sorting\ SequenceS S' exe 'sil! menu '.g:NetrwMenuPriority.'.9.7 '.g:NetrwTopLvlMenu.'Browsing\ Control.Quick\ Hide/Unhide\ Dot\ Files'."gh gh" exe 'sil! menu '.g:NetrwMenuPriority.'.9.8 '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing'." \" exe 'sil! menu '.g:NetrwMenuPriority.'.9.9 '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options:NetrwSettings '.":NetrwSettings\" exe 'sil! menu '.g:NetrwMenuPriority.'.10 '.g:NetrwTopLvlMenu.'Delete\ File/DirectoryD D' exe 'sil! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Create\ New\ File% %' exe 'sil! menu '.g:NetrwMenuPriority.'.11.1 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window '."\" exe 'sil! menu '.g:NetrwMenuPriority.'.11.2 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directoryp p' exe 'sil! menu '.g:NetrwMenuPriority.'.11.3 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ WindowP P' exe 'sil! menu '.g:NetrwMenuPriority.'.11.4 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Windowo o' exe 'sil! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Tabt t' exe 'sil! menu '.g:NetrwMenuPriority.'.11.5 '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ New\ Vertical\ Windowv v' exe 'sil! menu '.g:NetrwMenuPriority.'.12.1 '.g:NetrwTopLvlMenu.'Explore.Directory\ Name :Explore ' exe 'sil! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (curdir\ only):Explore\ */ :Explore */' exe 'sil! menu '.g:NetrwMenuPriority.'.12.2 '.g:NetrwTopLvlMenu.'Explore.Filenames\ Matching\ Pattern\ (+subdirs):Explore\ **/ :Explore **/' exe 'sil! menu '.g:NetrwMenuPriority.'.12.3 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (curdir\ only):Explore\ *// :Explore *//' exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Files\ Containing\ String\ Pattern\ (+subdirs):Explore\ **// :Explore **//' exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Next\ Match:Nexplore :Nexplore' exe 'sil! menu '.g:NetrwMenuPriority.'.12.4 '.g:NetrwTopLvlMenu.'Explore.Prev\ Match:Pexplore :Pexplore' exe 'sil! menu '.g:NetrwMenuPriority.'.13 '.g:NetrwTopLvlMenu.'Make\ Subdirectoryd d' exe 'sil! menu '.g:NetrwMenuPriority.'.14.1 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Filemf mf' exe 'sil! menu '.g:NetrwMenuPriority.'.14.2 '.g:NetrwTopLvlMenu.'Marked\ Files.Mark\ Files\ by\ Regexpmr mr' exe 'sil! menu '.g:NetrwMenuPriority.'.14.3 '.g:NetrwTopLvlMenu.'Marked\ Files.Hide-Show-List\ Controla a' exe 'sil! menu '.g:NetrwMenuPriority.'.14.4 '.g:NetrwTopLvlMenu.'Marked\ Files.Copy\ To\ Targetmc mc' exe 'sil! menu '.g:NetrwMenuPriority.'.14.5 '.g:NetrwTopLvlMenu.'Marked\ Files.DeleteD D' exe 'sil! menu '.g:NetrwMenuPriority.'.14.6 '.g:NetrwTopLvlMenu.'Marked\ Files.Diffmd md' exe 'sil! menu '.g:NetrwMenuPriority.'.14.7 '.g:NetrwTopLvlMenu.'Marked\ Files.Editme me' exe 'sil! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmdmx mx' exe 'sil! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Targetmm mm' exe 'sil! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.ObtainO O' exe 'sil! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Printmp mp' exe 'sil! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.ReplaceR R' exe 'sil! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Targetmt mt' exe 'sil! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.TagmT mT' exe 'sil! menu '.g:NetrwMenuPriority.'.14.15 '.g:NetrwTopLvlMenu.'Marked\ Files.Zip/Unzip/Compress/Uncompressmz mz' exe 'sil! menu '.g:NetrwMenuPriority.'.15 '.g:NetrwTopLvlMenu.'Obtain\ FileO O' exe 'sil! menu '.g:NetrwMenuPriority.'.16.1.1 '.g:NetrwTopLvlMenu.'Style.Listing.thini :let w:netrw_liststyle=0' exe 'sil! menu '.g:NetrwMenuPriority.'.16.1.1 '.g:NetrwTopLvlMenu.'Style.Listing.longi :let w:netrw_liststyle=1' exe 'sil! menu '.g:NetrwMenuPriority.'.16.1.1 '.g:NetrwTopLvlMenu.'Style.Listing.widei :let w:netrw_liststyle=2' exe 'sil! menu '.g:NetrwMenuPriority.'.16.1.1 '.g:NetrwTopLvlMenu.'Style.Listing.treei :let w:netrw_liststyle=3' exe 'sil! menu '.g:NetrwMenuPriority.'.16.2.1 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show.Show\ Alla :let g:netrw_hide=0' exe 'sil! menu '.g:NetrwMenuPriority.'.16.2.3 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show.Normala :let g:netrw_hide=1' exe 'sil! menu '.g:NetrwMenuPriority.'.16.2.2 '.g:NetrwTopLvlMenu.'Style.Normal-Hide-Show.Hidden\ Onlya :let g:netrw_hide=2' exe 'sil! menu '.g:NetrwMenuPriority.'.16.3 '.g:NetrwTopLvlMenu.'Style.Reverse\ Sorting\ Order'."r r" exe 'sil! menu '.g:NetrwMenuPriority.'.16.4.1 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method.Names :let g:netrw_sort_by="name"' exe 'sil! menu '.g:NetrwMenuPriority.'.16.4.2 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method.Times :let g:netrw_sort_by="time"' exe 'sil! menu '.g:NetrwMenuPriority.'.16.4.3 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method.Sizes :let g:netrw_sort_by="size"' exe 'sil! menu '.g:NetrwMenuPriority.'.16.4.3 '.g:NetrwTopLvlMenu.'Style.Sorting\ Method.Extens :let g:netrw_sort_by="exten"' exe 'sil! menu '.g:NetrwMenuPriority.'.17 '.g:NetrwTopLvlMenu.'Rename\ File/DirectoryR R' exe 'sil! menu '.g:NetrwMenuPriority.'.18 '.g:NetrwTopLvlMenu.'Set\ Current\ Directoryc c' let s:netrw_menucnt= 28 call s:NetrwBookmarkMenu() " provide some history! uses priorities 2,3, reserves 4, 8.2.x call s:NetrwTgtMenu() " let bookmarks and history be easy targets elseif !a:domenu let s:netrwcnt = 0 let curwin = winnr() windo if getline(2) =~# "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif exe curwin."wincmd w" if s:netrwcnt <= 1 exe 'sil! unmenu '.g:NetrwTopLvlMenu sil! unlet s:netrw_menu_enabled endif endif return endif endfun fun! s:NetrwObtain(islocal) let ykeep= @@ if exists("s:netrwmarkfilelist_{bufnr('%')}") let islocal= s:netrwmarkfilelist_{bufnr('%')}[1] !~ '^\a\{3,}://' call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) else call netrw#Obtain(a:islocal,expand("")) endif let @@= ykeep endfun fun! s:NetrwPrevWinOpen(islocal) let ykeep= @@ let curdir = b:netrw_curdir let origwin = winnr() let lastwinnr = winnr("$") let curword = s:NetrwGetWord() let choice = 0 let s:treedir = s:NetrwTreeDir(a:islocal) let curdir = s:treedir let didsplit = 0 if lastwinnr == 1 if g:netrw_preview let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s" else let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" endif let didsplit = 1 else NetrwKeepj call s:SaveBufVars() let eikeep= &ei setl ei=all wincmd p let prevwinnr = winnr() let prevbufnr = bufnr("%") let prevbufname = bufname("%") let prevmod = &mod let bnrcnt = 0 NetrwKeepj call s:RestoreBufVars() if prevmod windo if winbufnr(0) == prevbufnr | let bnrcnt=bnrcnt+1 | endif exe prevwinnr."wincmd w" if bnrcnt == 1 && &hidden == 0 let choice = confirm("Save modified buffer<".prevbufname."> first?","&Yes\n&No\n&Cancel") let &ei= eikeep if choice == 1 let v:errmsg= "" sil w if v:errmsg != "" call netrw#ErrorMsg(s:ERROR,"unable to write <".(exists("prevbufname")? prevbufname : 'n/a').">!",30) exe origwin."wincmd w" let &ei = eikeep let @@ = ykeep return choice endif elseif choice == 2 echomsg "**note** changes to ".prevbufname." abandoned" else exe origwin."wincmd w" let &ei= eikeep let @@ = ykeep return choice endif endif endif let &ei= eikeep endif let b:netrw_curdir= curdir if a:islocal < 2 if a:islocal call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(a:islocal,curword)) else call s:NetrwBrowse(a:islocal,s:NetrwBrowseChgDir(a:islocal,curword)) endif endif let @@= ykeep return choice endfun fun! s:NetrwUpload(fname,tgt,...) if a:tgt =~ '^\a\{3,}://' let tgtdir= substitute(a:tgt,'^\a\{3,}://[^/]\+/\(.\{-}\)$','\1','') else let tgtdir= substitute(a:tgt,'^\(.*\)/[^/]*$','\1','') endif if a:0 > 0 let fromdir= a:1 else let fromdir= getcwd() endif if type(a:fname) == 1 1split exe "NetrwKeepj e ".fnameescape(s:NetrwFile(a:fname)) if a:tgt =~ '/$' let wfname= substitute(a:fname,'^.*/','','') exe "w! ".fnameescape(a:tgt.wfname) else exe "w ".fnameescape(a:tgt) endif q! elseif type(a:fname) == 3 let curdir= getcwd() if a:tgt =~ '^scp:' call s:NetrwLcd(fromdir) let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) if exists("g:netrw_port") && g:netrw_port != "" let useport= " ".g:netrw_scpport." ".g:netrw_port else let useport= "" endif let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) call s:NetrwLcd(curdir) elseif a:tgt =~ '^ftp:' call s:NetrwMethod(a:tgt) if b:netrw_method == 2 let netrw_fname = b:netrw_fname sil NetrwKeepj new NetrwKeepj put =g:netrw_ftpmode if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif NetrwKeepj call setline(line("$")+1,'lcd "'.fromdir.'"') if tgtdir == "" let tgtdir= '/' endif NetrwKeepj call setline(line("$")+1,'cd "'.tgtdir.'"') for fname in a:fname NetrwKeepj call setline(line("$")+1,'put "'.s:NetrwFile(fname).'"') endfor if exists("g:netrw_port") && g:netrw_port != "" call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1)) else call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)) endif sil NetrwKeepj g/Local directory now/d call histdel("/",-1) if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' call netrw#ErrorMsg(s:ERROR,getline(1),14) else bw!|q endif elseif b:netrw_method == 3 let netrw_fname= b:netrw_fname NetrwKeepj call s:SaveBufVars()|sil NetrwKeepj new|NetrwKeepj call s:RestoreBufVars() let tmpbufnr= bufnr("%") setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif if exists("g:netrw_uid") && g:netrw_uid != "" if exists("g:netrw_ftp") && g:netrw_ftp == 1 NetrwKeepj put =g:netrw_uid if exists("s:netrw_passwd") NetrwKeepj call setline(line("$")+1,'"'.s:netrw_passwd.'"') endif elseif exists("s:netrw_passwd") NetrwKeepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' endif endif NetrwKeepj call setline(line("$")+1,'lcd "'.fromdir.'"') if exists("b:netrw_fname") && b:netrw_fname != "" NetrwKeepj call setline(line("$")+1,'cd "'.b:netrw_fname.'"') endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif for fname in a:fname NetrwKeepj call setline(line("$")+1,'put "'.fname.'"') endfor NetrwKeepj norm! 1Gdd call s:NetrwExe(s:netrw_silentxfer."%!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) sil NetrwKeepj g/Local directory now/d call histdel("/",-1) if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying ' let debugkeep= &debug setl debug=msg call netrw#ErrorMsg(s:ERROR,getline(1),15) let &debug = debugkeep let mod = 1 else bw!|q endif elseif !exists("b:netrw_method") || b:netrw_method < 0 return endif else call netrw#ErrorMsg(s:ERROR,"can't obtain files with protocol from<".a:tgt.">",63) endif endif endfun fun! s:NetrwPreview(path) range let ykeep= @@ NetrwKeepj call s:NetrwOptionSave("s:") NetrwKeepj call s:NetrwSafeOptions() if has("quickfix") if !isdirectory(s:NetrwFile(a:path)) if g:netrw_preview && !g:netrw_alto let pvhkeep = &pvh let winsz = (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize let &pvh = winwidth(0) - winsz endif exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path) if exists("pvhkeep") let &pvh= pvhkeep endif elseif !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38) endif elseif !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39) endif NetrwKeepj call s:NetrwOptionRestore("s:") let @@= ykeep endfun fun! s:NetrwRefresh(islocal,dirname) setl ma noro let ykeep = @@ let screenposn = winsaveview() sil! NetrwKeepj %d _ if a:islocal NetrwKeepj call netrw#LocalBrowseCheck(a:dirname) else NetrwKeepj call s:NetrwBrowse(a:islocal,a:dirname) endif NetrwKeepj call winrestview(screenposn) if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" else 2match none endif let @@= ykeep endfun fun! s:NetrwRefreshDir(islocal,dirname) if g:netrw_fastbrowse == 0 let tgtwin= bufwinnr(a:dirname) if tgtwin > 0 let curwin= winnr() exe tgtwin."wincmd w" NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) exe curwin."wincmd w" elseif bufnr(a:dirname) > 0 let bn= bufnr(a:dirname) exe "sil keepj bd ".bn endif elseif g:netrw_fastbrowse <= 1 NetrwKeepj call s:LocalBrowseRefresh() endif endfun fun! s:NetrwSetChgwin(...) if a:0 > 0 if a:1 == "" " :NetrwC win# let g:netrw_chgwin= winnr() else " :NetrwC let g:netrw_chgwin= a:1 endif elseif v:count > 0 " [count]C let g:netrw_chgwin= v:count else " C let g:netrw_chgwin= winnr() endif echo "editing window now set to window#".g:netrw_chgwin endfun fun! s:NetrwSetSort() let ykeep= @@ if w:netrw_liststyle == s:LONGLIST let seqlist = substitute(g:netrw_sort_sequence,'\$','\\%(\t\\|\$\\)','ge') else let seqlist = g:netrw_sort_sequence endif if seqlist == "" let seqlist= '*' elseif seqlist !~ '\*' let seqlist= seqlist.',*' endif let priority = 1 while seqlist != "" if seqlist =~ ',' let seq = substitute(seqlist,',.*$','','e') let seqlist = substitute(seqlist,'^.\{-},\(.*\)$','\1','e') else let seq = seqlist let seqlist = "" endif if priority < 10 let spriority= "00".priority.g:netrw_sepchr elseif priority < 100 let spriority= "0".priority.g:netrw_sepchr else let spriority= priority.g:netrw_sepchr endif if w:netrw_bannercnt > line("$") return endif if seq == '*' let starpriority= spriority else exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/'.seq.'/s/^/'.spriority.'/' call histdel("/",-1) exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e' NetrwKeepj call histdel("/",-1) endif let priority = priority + 1 endwhile if exists("starpriority") exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/e' NetrwKeepj call histdel("/",-1) endif exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e' NetrwKeepj call histdel("/",-1) let @@= ykeep endfun fun! s:NetrwSetTgt(islocal,bookhist,choice) if a:bookhist == 'b' let choice= a:choice - 1 if exists("g:netrw_bookmarklist[".choice."]") call netrw#MakeTgt(g:netrw_bookmarklist[choice]) else echomsg "Sorry, bookmark#".a:choice." doesn't exist!" endif elseif a:bookhist == 'h' let choice= (a:choice % g:netrw_dirhistmax) + 1 if exists("g:netrw_dirhist_".choice) let histentry = g:netrw_dirhist_{choice} call netrw#MakeTgt(histentry) else echomsg "Sorry, history#".a:choice." not available!" endif endif if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif call s:NetrwRefresh(a:islocal,b:netrw_curdir) endfun fun! s:NetrwSortStyle(islocal) NetrwKeepj call s:NetrwSaveWordPosn() let svpos= winsaveview() let g:netrw_sort_by= (g:netrw_sort_by =~# '^n')? 'time' : (g:netrw_sort_by =~# '^t')? 'size' : (g:netrw_sort_by =~# '^siz')? 'exten' : 'name' NetrwKeepj norm! 0 NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call winrestview(svpos) endfun fun! s:NetrwSplit(mode) let ykeep= @@ call s:SaveWinVars() if a:mode == 0 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize if winsz == 0|let winsz= ""|endif exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" let s:didsplit= 1 NetrwKeepj call s:RestoreWinVars() NetrwKeepj call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord())) unlet s:didsplit elseif a:mode == 1 let newdir = s:NetrwBrowseChgDir(0,s:NetrwGetWord()) tabnew let s:didsplit= 1 NetrwKeepj call s:RestoreWinVars() NetrwKeepj call s:NetrwBrowse(0,newdir) unlet s:didsplit elseif a:mode == 2 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize if winsz == 0|let winsz= ""|endif exe (g:netrw_altv? "rightb " : "lefta ").winsz."wincmd v" let s:didsplit= 1 NetrwKeepj call s:RestoreWinVars() NetrwKeepj call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord())) unlet s:didsplit elseif a:mode == 3 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize if winsz == 0|let winsz= ""|endif exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" let s:didsplit= 1 NetrwKeepj call s:RestoreWinVars() NetrwKeepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) unlet s:didsplit elseif a:mode == 4 let cursorword = s:NetrwGetWord() let eikeep = &ei let netrw_winnr = winnr() let netrw_line = line(".") let netrw_col = virtcol(".") NetrwKeepj norm! H0 let netrw_hline = line(".") setl ei=all exe "NetrwKeepj norm! ".netrw_hline."G0z\" exe "NetrwKeepj norm! ".netrw_line."G0".netrw_col."\" let &ei = eikeep let netrw_curdir = s:NetrwTreeDir(0) tabnew let b:netrw_curdir = netrw_curdir let s:didsplit = 1 NetrwKeepj call s:RestoreWinVars() NetrwKeepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,cursorword)) if &ft == "netrw" setl ei=all exe "NetrwKeepj norm! ".netrw_hline."G0z\" exe "NetrwKeepj norm! ".netrw_line."G0".netrw_col."\" let &ei= eikeep endif unlet s:didsplit elseif a:mode == 5 let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize if winsz == 0|let winsz= ""|endif exe (g:netrw_altv? "rightb " : "lefta ").winsz."wincmd v" let s:didsplit= 1 NetrwKeepj call s:RestoreWinVars() NetrwKeepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord())) unlet s:didsplit else NetrwKeepj call netrw#ErrorMsg(s:ERROR,"(NetrwSplit) unsupported mode=".a:mode,45) endif let @@= ykeep endfun fun! s:NetrwTgtMenu() if !exists("s:netrw_menucnt") return endif if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu if exists("g:NetrwTopLvlMenu") exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Targets' endif if !exists("s:netrw_initbookhist") call s:NetrwBookHistRead() endif let tgtdict={} if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] && g:netrw_dirhistmax > 0 let cnt= 1 for bmd in g:netrw_bookmarklist if has_key(tgtdict,bmd) let cnt= cnt + 1 continue endif let tgtdict[bmd]= cnt let ebmd= escape(bmd,g:netrw_menu_escape) exe 'sil! menu '.g:NetrwMenuPriority.".19.1.".cnt." ".g:NetrwTopLvlMenu.'Targets.'.ebmd." :call netrw#MakeTgt('".bmd."')\" let cnt= cnt + 1 endfor endif if exists("g:netrw_dirhistmax") && g:netrw_dirhistmax > 0 let histcnt = 1 while histcnt <= g:netrw_dirhistmax let priority = g:netrw_dirhist_cnt + histcnt if exists("g:netrw_dirhist_{histcnt}") let histentry = g:netrw_dirhist_{histcnt} if has_key(tgtdict,histentry) let histcnt = histcnt + 1 continue endif let tgtdict[histentry] = histcnt let ehistentry = escape(histentry,g:netrw_menu_escape) exe 'sil! menu '.g:NetrwMenuPriority.".19.2.".priority." ".g:NetrwTopLvlMenu.'Targets.'.ehistentry." :call netrw#MakeTgt('".histentry."')\" endif let histcnt = histcnt + 1 endwhile endif endif endfun fun! s:NetrwTreeDir(islocal) if exists("s:treedir") let treedir= s:treedir unlet s:treedir return treedir endif if !exists("b:netrw_curdir") || b:netrw_curdir == "" let b:netrw_curdir= getcwd() endif let treedir = b:netrw_curdir let s:treecurpos= winsaveview() if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST let curline= substitute(getline('.'),"\t -->.*$",'','') if curline =~ '/$' let treedir= substitute(getline('.'),'^\%('.s:treedepthstring.'\)*\([^'.s:treedepthstring.'].\{-}\)$','\1','e') elseif curline =~ '@$' let treedir= resolve(substitute(substitute(getline('.'),'@.*$','','e'),'^|*\s*','','e')) else let treedir= "" endif if curline !~ '^'.s:treedepthstring && getline('.') != '..' sil! NetrwKeepj %d _ return b:netrw_curdir endif let potentialdir= s:NetrwFile(substitute(curline,'^'.s:treedepthstring.'\+ \(.*\)@$','\1','')) let treedir = s:NetrwTreePath(w:netrw_treetop) endif let treedir= substitute(treedir,'//$','/','') return treedir endfun fun! s:NetrwTreeDisplay(dir,depth) setl nofen if a:depth == "" call setline(line("$")+1,'../') endif if a:dir =~ '^\a\{3,}://' if a:dir == w:netrw_treetop let shortdir= a:dir else let shortdir= substitute(a:dir,'^.*/\([^/]\+\)/$','\1/','e') endif call setline(line("$")+1,a:depth.shortdir) else let shortdir= substitute(a:dir,'^.*/','','e') call setline(line("$")+1,a:depth.shortdir.'/') endif let dir= a:dir let depth= s:treedepthstring.a:depth for entry in w:netrw_treedict[dir] if dir =~ '/$' let direntry= substitute(dir.entry,'[@/]$','','e') else let direntry= substitute(dir.'/'.entry,'[@/]$','','e') endif if entry =~ '/$' && has_key(w:netrw_treedict,direntry) NetrwKeepj call s:NetrwTreeDisplay(direntry,depth) elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/') NetrwKeepj call s:NetrwTreeDisplay(direntry.'/',depth) elseif entry =~ '@$' && has_key(w:netrw_treedict,direntry.'@') NetrwKeepj call s:NetrwTreeDisplay(direntry.'/',depth) else sil! NetrwKeepj call setline(line("$")+1,depth.entry) endif endfor endfun fun! s:NetrwRefreshTreeDict(dir) for entry in w:netrw_treedict[a:dir] let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') if entry =~ '/$' && has_key(w:netrw_treedict,direntry) NetrwKeepj call s:NetrwRefreshTreeDict(direntry) let liststar = s:NetrwGlob(direntry,'*',1) let listdotstar = s:NetrwGlob(direntry,'.*',1) let w:netrw_treedict[direntry] = liststar + listdotstar elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/') NetrwKeepj call s:NetrwRefreshTreeDict(direntry.'/') let liststar = s:NetrwGlob(direntry.'/','*',1) let listdotstar= s:NetrwGlob(direntry.'/','.*',1) let w:netrw_treedict[direntry]= liststar + listdotstar elseif entry =~ '@$' && has_key(w:netrw_treedict,direntry.'@') NetrwKeepj call s:NetrwRefreshTreeDict(direntry.'/') let liststar = s:NetrwGlob(direntry.'/','*',1) let listdotstar= s:NetrwGlob(direntry.'/','.*',1) else endif endfor endfun fun! s:NetrwTreeListing(dirname) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST if !exists("w:netrw_treetop") let w:netrw_treetop= a:dirname elseif (w:netrw_treetop =~ ('^'.a:dirname) && s:Strlen(a:dirname) < s:Strlen(w:netrw_treetop)) || a:dirname !~ ('^'.w:netrw_treetop) let w:netrw_treetop= a:dirname endif if !exists("w:netrw_treedict") let w:netrw_treedict= {} endif exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$g@^\.\.\=/$@d _' let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$")) exe "sil! NetrwKeepj ".w:netrw_bannercnt.",$d _" if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt let fname= expand("") else let fname= "" endif NetrwKeepj call s:NetrwTreeDisplay(w:netrw_treetop,"") while getline(1) =~ '^\s*$' && byte2line(1) > 0 1d endwhile exe "setl ".g:netrw_bufsettings return endif endfun fun! s:NetrwTreePath(treetop) let svpos = winsaveview() let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') let depth = substitute(depth,'^'.s:treedepthstring,'','') let curline= getline('.') if curline =~ '/$' let treedir= substitute(curline,'^\%('.s:treedepthstring.'\)*\([^'.s:treedepthstring.'].\{-}\)$','\1','e') elseif curline =~ '@\s\+-->' let treedir= substitute(curline,'^\%('.s:treedepthstring.'\)*\([^'.s:treedepthstring.'].\{-}\)$','\1','e') let treedir= substitute(treedir,'@\s\+-->.*$','','e') else let treedir= "" endif while depth != "" && search('^'.depth.'[^'.s:treedepthstring.'].\{-}/$','bW') let dirname= substitute(getline('.'),'^\('.s:treedepthstring.'\)*','','e') let treedir= dirname.treedir let depth = substitute(depth,'^'.s:treedepthstring,'','') endwhile if a:treetop =~ '/$' let treedir= a:treetop.treedir else let treedir= a:treetop.'/'.treedir endif let treedir= substitute(treedir,'//$','/','') call winrestview(svpos) return treedir endfun fun! s:NetrwWideListing() if w:netrw_liststyle == s:WIDELIST setl ma noro let b:netrw_cpf= 0 if line("$") >= w:netrw_bannercnt exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif' NetrwKeepj call histdel("/",-1) else return endif let b:netrw_cpf= b:netrw_cpf + 2 let w:netrw_fpl= winwidth(0)/b:netrw_cpf if w:netrw_fpl <= 0 let w:netrw_fpl= 1 endif exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'S",submatch(0)),"\\")/' NetrwKeepj call histdel("/",-1) let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl let newcolstart = w:netrw_bannercnt + fpc let newcolend = newcolstart + fpc - 1 if has("clipboard") sil! let keepregstar = @* sil! let keepregplus = @+ endif while line("$") >= newcolstart if newcolend > line("$") | let newcolend= line("$") | endif let newcolqty= newcolend - newcolstart exe newcolstart if newcolqty == 0 exe "sil! NetrwKeepj norm! 0\$hx".w:netrw_bannercnt."G$p" else exe "sil! NetrwKeepj norm! 0\".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p' endif exe "sil! NetrwKeepj ".newcolstart.','.newcolend.'d _' exe 'sil! NetrwKeepj '.w:netrw_bannercnt endwhile if has("clipboard") sil! let @*= keepregstar sil! let @+= keepregplus endif exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$s/\s\+$//e' NetrwKeepj call histdel("/",-1) exe 'nno w :call search(''^.\\|\s\s\zs\S'',''W'')'."\" exe 'nno b :call search(''^.\\|\s\s\zs\S'',''bW'')'."\" exe "setl ".g:netrw_bufsettings return else if hasmapto("w","n") sil! nunmap w endif if hasmapto("b","n") sil! nunmap b endif endif endfun fun! s:PerformListing(islocal) sil! setl ft=netrw NetrwKeepj call s:NetrwSafeOptions() setl noro ma if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") sil! NetrwKeepj %d _ endif NetrwKeepj call s:NetrwBookHistHandler(3,b:netrw_curdir) if g:netrw_banner NetrwKeepj call setline(1,'" ============================================================================') if exists("g:netrw_pchk") NetrwKeepj call setline(2,'" Netrw Directory Listing') else NetrwKeepj call setline(2,'" Netrw Directory Listing (netrw '.g:loaded_netrw.')') endif if exists("g:netrw_pchk") let curdir= substitute(b:netrw_curdir,expand("$HOME"),'~','') else let curdir= b:netrw_curdir endif if exists("g:netrw_bannerbackslash") && g:netrw_bannerbackslash NetrwKeepj call setline(3,'" '.substitute(curdir,'/','\\','g')) else NetrwKeepj call setline(3,'" '.curdir) endif let w:netrw_bannercnt= 3 NetrwKeepj exe "sil! NetrwKeepj ".w:netrw_bannercnt else NetrwKeepj 1 let w:netrw_bannercnt= 1 endif let sortby= g:netrw_sort_by if g:netrw_sort_direction =~# "^r" let sortby= sortby." reversed" endif if g:netrw_banner if g:netrw_sort_by =~# "^n" NetrwKeepj put ='\" Sorted by '.sortby NetrwKeepj put ='\" Sort sequence: '.g:netrw_sort_sequence let w:netrw_bannercnt= w:netrw_bannercnt + 2 else NetrwKeepj put ='\" Sorted by '.sortby let w:netrw_bannercnt= w:netrw_bannercnt + 1 endif exe "sil! NetrwKeepj ".w:netrw_bannercnt endif if g:netrw_banner if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") NetrwKeepj put ='' if s:netrwmftgt_islocal sil! NetrwKeepj call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (local)') else sil! NetrwKeepj call setline(line("."),'" Copy/Move Tgt: '.s:netrwmftgt.' (remote)') endif let w:netrw_bannercnt= w:netrw_bannercnt + 1 else endif exe "sil! NetrwKeepj ".w:netrw_bannercnt endif if g:netrw_banner if g:netrw_list_hide != "" && g:netrw_hide if g:netrw_hide == 1 NetrwKeepj put ='\" Hiding: '.g:netrw_list_hide else NetrwKeepj put ='\" Showing: '.g:netrw_list_hide endif let w:netrw_bannercnt= w:netrw_bannercnt + 1 endif exe "NetrwKeepj ".w:netrw_bannercnt let quickhelp = g:netrw_quickhelp%len(s:QuickHelp) NetrwKeepj put ='\" Quick Help: :help '.s:QuickHelp[quickhelp] NetrwKeepj put ='\" ==============================================================================' let w:netrw_bannercnt= w:netrw_bannercnt + 2 endif if g:netrw_banner let w:netrw_bannercnt= w:netrw_bannercnt + 1 exe "sil! NetrwKeepj ".w:netrw_bannercnt endif if a:islocal NetrwKeepj call s:LocalListing() else " remote NetrwKeepj let badresult= s:NetrwRemoteListing() if badresult return endif endif if !exists("w:netrw_bannercnt") let w:netrw_bannercnt= 0 endif if !g:netrw_banner || line("$") >= w:netrw_bannercnt if g:netrw_hide && g:netrw_list_hide != "" NetrwKeepj call s:NetrwListHide() endif if !g:netrw_banner || line("$") >= w:netrw_bannercnt if g:netrw_sort_by =~# "^n" NetrwKeepj call s:NetrwSetSort() if !g:netrw_banner || w:netrw_bannercnt < line("$") if g:netrw_sort_direction =~# 'n' exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options else exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options endif endif exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e' NetrwKeepj call histdel("/",-1) elseif g:netrw_sort_by =~# "^ext" exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$g+/+s/^/001'.g:netrw_sepchr.'/' NetrwKeepj call histdel("/",-1) exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+[./]+s/^/002'.g:netrw_sepchr.'/' NetrwKeepj call histdel("/",-1) exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$v+['.g:netrw_sepchr.'/]+s/^\(.*\.\)\(.\{-\}\)$/\2'.g:netrw_sepchr.'&/e' NetrwKeepj call histdel("/",-1) if !g:netrw_banner || w:netrw_bannercnt < line("$") if g:netrw_sort_direction =~# 'n' exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options else exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options endif endif exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^.\{-}'.g:netrw_sepchr.'//e' NetrwKeepj call histdel("/",-1) elseif a:islocal if !g:netrw_banner || w:netrw_bannercnt < line("$") if g:netrw_sort_direction =~# 'n' exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options else exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options endif exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e' NetrwKeepj call histdel("/",-1) endif endif elseif g:netrw_sort_direction =~# 'r' if !g:netrw_banner || w:netrw_bannercnt < line('$') exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt call histdel("/",-1) endif endif endif NetrwKeepj call s:NetrwWideListing() NetrwKeepj call s:NetrwTreeListing(b:netrw_curdir) if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST)) g/@$/call s:ShowLink() endif if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) exe 'sil! '.w:netrw_bannercnt sil! NetrwKeepj norm! 0 else endif let w:netrw_prvdir= b:netrw_curdir NetrwKeepj call s:SetBufWinVars() NetrwKeepj call s:NetrwOptionRestore("w:") exe "setl ".g:netrw_bufsettings if g:netrw_liststyle == s:LONGLIST exe "setl ts=".(g:netrw_maxfilenamelen+1) endif if exists("s:treecurpos") NetrwKeepj call winrestview(s:treecurpos) unlet s:treecurpos endif endfun fun! s:SetupNetrwStatusLine(statline) if !exists("s:netrw_setup_statline") let s:netrw_setup_statline= 1 if !exists("s:netrw_users_stl") let s:netrw_users_stl= &stl endif if !exists("s:netrw_users_ls") let s:netrw_users_ls= &laststatus endif let keepa= @a redir @a try hi User9 catch /^Vim\%((\a\{3,})\)\=:E411/ if &bg == "dark" hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue else hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue endif endtry redir END let @a= keepa endif let &stl=a:statline setl laststatus=2 redraw endfun fun! s:NetrwRemoteFtpCmd(path,listcmd) if !exists("w:netrw_method") if exists("b:netrw_method") let w:netrw_method= b:netrw_method else call netrw#ErrorMsg(2,"(s:NetrwRemoteFtpCmd) internal netrw error",93) return endif endif let ffkeep= &ff setl ma ff=unix noro exe "sil! NetrwKeepj ".w:netrw_bannercnt.",$d _" if w:netrw_method == 2 || w:netrw_method == 5 " {{{3 if a:path != "" NetrwKeepj put ='cd \"'.a:path.'\"' endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif NetrwKeepj call setline(line("$")+1,a:listcmd) if exists("g:netrw_port") && g:netrw_port != "" exe s:netrw_silentxfer." NetrwKeepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1)." ".s:ShellEscape(g:netrw_port,1) else exe s:netrw_silentxfer." NetrwKeepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".s:ShellEscape(g:netrw_machine,1) endif elseif w:netrw_method == 3 " {{{3 setl ff=unix if exists("g:netrw_port") && g:netrw_port != "" NetrwKeepj put ='open '.g:netrw_machine.' '.g:netrw_port else NetrwKeepj put ='open '.g:netrw_machine endif let host= substitute(g:netrw_machine,'\..*$','','') if exists("s:netrw_hup") && exists("s:netrw_hup[host]") call NetUserPass("ftp:".host) endif if exists("g:netrw_uid") && g:netrw_uid != "" if exists("g:netrw_ftp") && g:netrw_ftp == 1 NetrwKeepj put =g:netrw_uid if exists("s:netrw_passwd") && s:netrw_passwd != "" NetrwKeepj put ='\"'.s:netrw_passwd.'\"' endif elseif exists("s:netrw_passwd") NetrwKeepj put ='user \"'.g:netrw_uid.'\" \"'.s:netrw_passwd.'\"' endif endif if a:path != "" NetrwKeepj put ='cd \"'.a:path.'\"' endif if exists("g:netrw_ftpextracmd") NetrwKeepj put =g:netrw_ftpextracmd endif NetrwKeepj call setline(line("$")+1,a:listcmd) if exists("w:netrw_bannercnt") call s:NetrwExe(s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." ".g:netrw_ftp_options) endif elseif w:netrw_method == 9 " {{{3 setl ff=unix let &ff= ffkeep return else " {{{3 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . bufname("%") . ">",23) endif if has("win32") || has("win95") || has("win64") || has("win16") sil! NetrwKeepj %s/\r$//e NetrwKeepj call histdel("/",-1) endif if a:listcmd == "dir" sil! NetrwKeepj g/d\%([-r][-w][-x]\)\{3}/NetrwKeepj s@$@/@e sil! NetrwKeepj g/l\%([-r][-w][-x]\)\{3}/NetrwKeepj s/$/@/e NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST) exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e' NetrwKeepj call histdel("/",-1) endif endif if !search('^\.\/$\|\s\.\/$','wn') exe 'NetrwKeepj '.w:netrw_bannercnt NetrwKeepj put ='./' endif if !search('^\.\.\/$\|\s\.\.\/$','wn') exe 'NetrwKeepj '.w:netrw_bannercnt NetrwKeepj put ='../' endif let &ff= ffkeep endfun fun! s:NetrwRemoteListing() if !exists("w:netrw_bannercnt") && exists("s:bannercnt") let w:netrw_bannercnt= s:bannercnt endif if !exists("w:netrw_bannercnt") && exists("b:bannercnt") let w:netrw_bannercnt= s:bannercnt endif call s:RemotePathAnalysis(b:netrw_curdir) if exists("b:netrw_method") && b:netrw_method =~ '[235]' if !executable("ftp") if !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ftp",18) endif call s:NetrwOptionRestore("w:") return -1 endif elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == '' if !exists("g:netrw_quiet") if g:netrw_list_cmd == "" NetrwKeepj call netrw#ErrorMsg(s:ERROR,"your g:netrw_list_cmd is empty; perhaps ".g:netrw_ssh_cmd." is not executable on your system",47) else NetrwKeepj call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19) endif endif NetrwKeepj call s:NetrwOptionRestore("w:") return -1 endif " (remote handling sanity check) if exists("b:netrw_method") let w:netrw_method= b:netrw_method endif if s:method == "ftp" let s:method = "ftp" let listcmd = g:netrw_ftp_list_cmd if g:netrw_sort_by =~# '^t' let listcmd= g:netrw_ftp_timelist_cmd elseif g:netrw_sort_by =~# '^s' let listcmd= g:netrw_ftp_sizelist_cmd endif call s:NetrwRemoteFtpCmd(s:path,listcmd) if search('[Nn]o such file or directory\|Failed to change directory') let mesg= getline(".") if exists("w:netrw_bannercnt") setl ma exe w:netrw_bannercnt.",$d _" setl noma endif NetrwKeepj call s:NetrwOptionRestore("w:") call netrw#ErrorMsg(s:WARNING,mesg,96) return -1 endif if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST) exe "sil! keepalt NetrwKeepj ".w:netrw_bannercnt if g:netrw_ftp_browse_reject != "" exe "sil! keepalt NetrwKeepj g/".g:netrw_ftp_browse_reject."/NetrwKeepj d" NetrwKeepj call histdel("/",-1) endif sil! NetrwKeepj %s/\r$//e NetrwKeepj call histdel("/",-1) let line1= line(".") exe "sil! NetrwKeepj ".w:netrw_bannercnt let line2= search('\.\.\/\%(\s\|$\)','cnW') if line2 == 0 sil! NetrwKeepj put='../' endif exe "sil! NetrwKeepj ".line1 sil! NetrwKeepj norm! 0 if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(\|\d\+\)\s\+//' NetrwKeepj call histdel("/",-1) else " normal ftp cleanup exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e' exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e' exe "sil! NetrwKeepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e' NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) endif endif else let listcmd= s:MakeSshCmd(g:netrw_list_cmd) if g:netrw_scp_cmd =~ '^pscp' exe "NetrwKeepj r! ".listcmd.s:ShellEscape(s:path, 1) sil! NetrwKeepj g/^Listing directory/NetrwKeepj d sil! NetrwKeepj g/^d[-rwx][-rwx][-rwx]/NetrwKeepj s+$+/+e sil! NetrwKeepj g/^l[-rwx][-rwx][-rwx]/NetrwKeepj s+$+@+e NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) if g:netrw_liststyle != s:LONGLIST sil! NetrwKeepj g/^[dlsp-][-rwx][-rwx][-rwx]/NetrwKeepj s/^.*\s\(\S\+\)$/\1/e NetrwKeepj call histdel("/",-1) endif else if s:path == "" exe "NetrwKeepj keepalt r! ".listcmd else exe "NetrwKeepj keepalt r! ".listcmd.' '.s:ShellEscape(fnameescape(s:path),1) endif endif if g:netrw_ssh_browse_reject != "" exe "sil! g/".g:netrw_ssh_browse_reject."/NetrwKeepj d" NetrwKeepj call histdel("/",-1) endif endif if w:netrw_liststyle == s:LONGLIST if s:method == "ftp" exe "sil! NetrwKeepj ".w:netrw_bannercnt while getline('.') =~# g:netrw_ftp_browse_reject sil! NetrwKeepj d endwhile let line1= line(".") sil! NetrwKeepj 1 sil! NetrwKeepj call search('^\.\.\/\%(\s\|$\)','W') let line2= line(".") if line2 == 0 if b:netrw_curdir != '/' exe 'sil! NetrwKeepj '.w:netrw_bannercnt."put='../'" endif endif exe "sil! NetrwKeepj ".line1 sil! NetrwKeepj norm! 0 endif if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s/^\(\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(\|\d\+\)\s\+\)\(\w.*\)$/\2\t\1/' elseif exists("w:netrw_bannercnt") && w:netrw_bannercnt <= line("$") exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$s/ -> .*$//e' exe 'sil NetrwKeepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2 \t\1/e' exe 'sil NetrwKeepj '.w:netrw_bannercnt NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) NetrwKeepj call histdel("/",-1) endif endif return 0 endfun fun! s:NetrwRemoteRm(usrhost,path) range let svpos= winsaveview() let all= 0 if exists("s:netrwmarkfilelist_{bufnr('%')}") for fname in s:netrwmarkfilelist_{bufnr("%")} let ok= s:NetrwRemoteRmFile(a:path,fname,all) if ok =~# 'q\%[uit]' break elseif ok =~# 'a\%[ll]' let all= 1 endif endfor call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) else let keepsol = &l:sol setl nosol let ctr = a:firstline while ctr <= a:lastline exe "NetrwKeepj ".ctr let ok= s:NetrwRemoteRmFile(a:path,s:NetrwGetWord(),all) if ok =~# 'q\%[uit]' break elseif ok =~# 'a\%[ll]' let all= 1 endif let ctr= ctr + 1 endwhile let &l:sol = keepsol endif NetrwKeepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) NetrwKeepj call winrestview(svpos) endfun fun! s:NetrwRemoteRmFile(path,rmfile,all) let all= a:all let ok = "" if a:rmfile !~ '^"' && (a:rmfile =~ '@$' || a:rmfile !~ '[\/]$') if !all echohl Statement call inputsave() let ok= input("Confirm deletion of file<".a:rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") call inputrestore() echohl NONE if ok == "" let ok="no" endif let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') if ok =~# 'a\%[ll]' let all= 1 endif endif if all || ok =~# 'y\%[es]' || ok == "" if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) let path= a:path if path =~ '^\a\{3,}://' let path= substitute(path,'^\a\{3,}://[^/]\+/','','') endif sil! NetrwKeepj .,$d _ call s:NetrwRemoteFtpCmd(path,"delete ".'"'.a:rmfile.'"') else let netrw_rm_cmd= s:MakeSshCmd(g:netrw_rm_cmd) if !exists("b:netrw_curdir") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) let ok="q" else let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') if remotedir != "" let netrw_rm_cmd= netrw_rm_cmd." ".s:ShellEscape(fnameescape(remotedir.a:rmfile)) else let netrw_rm_cmd= netrw_rm_cmd." ".s:ShellEscape(fnameescape(a:rmfile)) endif let ret= system(netrw_rm_cmd) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#ErrorMsg(s:ERROR,"remove failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",102) else call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) endif elseif ret != 0 call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60) endif endif endif elseif ok =~# 'q\%[uit]' endif else if !all call inputsave() let ok= input("Confirm deletion of directory<".a:rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") call inputrestore() if ok == "" let ok="no" endif let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') if ok =~# 'a\%[ll]' let all= 1 endif endif if all || ok =~# 'y\%[es]' || ok == "" if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) NetrwKeepj call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile) else let rmfile = substitute(a:path.a:rmfile,'/$','','') let netrw_rmdir_cmd = s:MakeSshCmd(netrw#WinPath(g:netrw_rmdir_cmd)).' '.s:ShellEscape(netrw#WinPath(rmfile)) let ret= system(netrw_rmdir_cmd) if v:shell_error != 0 let netrw_rmf_cmd= s:MakeSshCmd(netrw#WinPath(g:netrw_rmf_cmd)).' '.s:ShellEscape(netrw#WinPath(substitute(rmfile,'[\/]$','','e'))) let ret= system(netrw_rmf_cmd) if v:shell_error != 0 && !exists("g:netrw_quiet") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22) endif endif endif elseif ok =~# 'q\%[uit]' endif endif return ok endfun fun! s:NetrwRemoteRename(usrhost,path) range let svpos = winsaveview() let ctr = a:firstline let rename_cmd = s:MakeSshCmd(g:netrw_rename_cmd) if exists("s:netrwmarkfilelist_{bufnr('%')}") for oldname in s:netrwmarkfilelist_{bufnr("%")} if exists("subfrom") let newname= substitute(oldname,subfrom,subto,'') else call inputsave() let newname= input("Moving ".oldname." to : ",oldname) call inputrestore() if newname =~ '^s/' let subfrom = substitute(newname,'^s/\([^/]*\)/.*/$','\1','') let subto = substitute(newname,'^s/[^/]*/\(.*\)/$','\1','') let newname = substitute(oldname,subfrom,subto,'') endif endif if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) NetrwKeepj call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) else let oldname= s:ShellEscape(a:path.oldname) let newname= s:ShellEscape(a:path.newname) let ret = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname) endif endfor call s:NetrwUnMarkFile(1) else let keepsol= &l:sol setl nosol while ctr <= a:lastline exe "NetrwKeepj ".ctr let oldname= s:NetrwGetWord() call inputsave() let newname= input("Moving ".oldname." to : ",oldname) call inputrestore() if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3) call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname) else let oldname= s:ShellEscape(a:path.oldname) let newname= s:ShellEscape(a:path.newname) let ret = system(netrw#WinPath(rename_cmd).' '.oldname.' '.newname) endif let ctr= ctr + 1 endwhile let &l:sol= keepsol endif NetrwKeepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./')) NetrwKeepj call winrestview(svpos) endfun fun! netrw#FileUrlRead(fname) let fname = a:fname if fname =~ '^file://localhost/' let fname= substitute(fname,'^file://localhost/','file:///','') endif if (has("win32") || has("win95") || has("win64") || has("win16")) if fname =~ '^file:///\=\a[|:]/' let fname = substitute(fname,'^file:///\=\(\a\)[|:]/','file://\1:/','') endif endif let fname2396 = netrw#RFC2396(fname) let fname2396e= fnameescape(fname2396) let plainfname= substitute(fname2396,'file://\(.*\)','\1',"") if (has("win32") || has("win95") || has("win64") || has("win16")) if plainfname =~ '^/\+\a:' let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') endif endif exe "sil doau BufReadPre ".fname2396e exe 'NetrwKeepj r '.plainfname exe 'sil! bdelete '.plainfname exe 'keepalt file! '.plainfname NetrwKeepj 1d setl nomod exe "sil doau BufReadPost ".fname2396e endfun fun! netrw#LocalBrowseCheck(dirname) let ykeep= @@ if isdirectory(s:NetrwFile(a:dirname)) if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname) || g:netrw_fastbrowse <= 1 sil! NetrwKeepj keepalt call s:NetrwBrowse(1,a:dirname) elseif &ft == "netrw" && line("$") == 1 sil! NetrwKeepj keepalt call s:NetrwBrowse(1,a:dirname) elseif exists("s:treeforceredraw") unlet s:treeforceredraw sil! NetrwKeepj keepalt call s:NetrwBrowse(1,a:dirname) endif return endif if exists("g:netrw_fastbrowse") && g:netrw_fastbrowse == 0 && g:netrw_liststyle != s:TREELIST let ibuf = 1 let buflast = bufnr("$") while ibuf <= buflast if bufwinnr(ibuf) == -1 && isdirectory(s:NetrwFile(bufname(ibuf))) exe "sil! keepj keepalt ".ibuf."bw!" endif let ibuf= ibuf + 1 endwhile endif let @@= ykeep endfun fun! s:LocalBrowseRefresh() if !exists("s:netrw_browselist") return endif if !exists("w:netrw_bannercnt") return endif if exists("s:netrw_events") && s:netrw_events == 1 let s:netrw_events= 2 return endif let itab = 1 let buftablist = [] let ykeep = @@ while itab <= tabpagenr("$") let buftablist = buftablist + tabpagebuflist() let itab = itab + 1 tabn endwhile let curwin = winnr() let ibl = 0 for ibuf in s:netrw_browselist if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 exe "sil! keepj bd ".fnameescape(ibuf) call remove(s:netrw_browselist,ibl) continue elseif index(tabpagebuflist(),ibuf) != -1 exe bufwinnr(ibuf)."wincmd w" if getline(".") =~# 'Quick Help' let g:netrw_quickhelp= g:netrw_quickhelp - 1 endif if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST NetrwKeepj call s:NetrwRefreshTreeDict(w:netrw_treetop) endif NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) endif let ibl= ibl + 1 endfor exe curwin."wincmd w" let @@= ykeep endfun fun! s:LocalFastBrowser() if !exists("s:netrw_browselist") let s:netrw_browselist= [] endif if empty(s:netrw_browselist) || bufnr("%") > s:netrw_browselist[-1] call add(s:netrw_browselist,bufnr("%")) endif if g:netrw_fastbrowse <= 1 && !exists("#ShellCmdPost") && !exists("s:netrw_events") let s:netrw_events= 1 augroup AuNetrwEvent au! if (has("win32") || has("win95") || has("win64") || has("win16")) au ShellCmdPost * call s:LocalBrowseRefresh() else au ShellCmdPost,FocusGained * call s:LocalBrowseRefresh() endif augroup END elseif g:netrw_fastbrowse > 1 && exists("#ShellCmdPost") && exists("s:netrw_events") unlet s:netrw_events augroup AuNetrwEvent au! augroup END augroup! AuNetrwEvent endif endfun fun! s:LocalListing() let dirname = b:netrw_curdir let dirnamelen = strlen(b:netrw_curdir) let filelist = s:NetrwGlob(dirname,"*",0) let filelist = filelist + s:NetrwGlob(dirname,".*",0) if g:netrw_cygwin == 0 && (has("win32") || has("win95") || has("win64") || has("win16")) elseif index(filelist,'..') == -1 && b:netrw_curdir !~ '/' let filelist= filelist+[s:ComposePath(b:netrw_curdir,"../")] endif if get(g:, 'netrw_dynamic_maxfilenamelen', 0) let filelistcopy = map(deepcopy(filelist),'fnamemodify(v:val, ":t")') let g:netrw_maxfilenamelen = max(map(filelistcopy,'len(v:val)')) + 1 endif for filename in filelist if getftype(filename) == "link" let pfile= filename."@" elseif getftype(filename) == "socket" let pfile= filename."=" elseif getftype(filename) == "fifo" let pfile= filename."|" elseif isdirectory(s:NetrwFile(filename)) let pfile= filename."/" elseif exists("b:netrw_curdir") && b:netrw_curdir !~ '^.*://' && !isdirectory(s:NetrwFile(filename)) if (has("win32") || has("win95") || has("win64") || has("win16")) if filename =~ '\.[eE][xX][eE]$' || filename =~ '\.[cC][oO][mM]$' || filename =~ '\.[bB][aA][tT]$' let pfile= filename."*" else let pfile= filename endif elseif executable(filename) let pfile= filename."*" else let pfile= filename endif else let pfile= filename endif if pfile =~ '//$' let pfile= substitute(pfile,'//$','/','e') endif let pfile= strpart(pfile,dirnamelen) let pfile= substitute(pfile,'^[/\\]','','e') if w:netrw_liststyle == s:LONGLIST let sz = getfsize(filename) if g:netrw_sizestyle =~# "[hH]" let sz= s:NetrwHumanReadable(sz) endif let fsz = strpart(" ",1,15-strlen(sz)).sz let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename)) endif if g:netrw_sort_by =~# "^t" let t = getftime(filename) let ft = strpart("000000000000000000",1,18-strlen(t)).t let ftpfile= ft.'/'.pfile sil! NetrwKeepj put=ftpfile elseif g:netrw_sort_by =~ "^s" let sz = getfsize(filename) if g:netrw_sizestyle =~# "[hH]" let sz= s:NetrwHumanReadable(sz) endif let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz let fszpfile= fsz.'/'.pfile sil! NetrwKeepj put =fszpfile else sil! NetrwKeepj put=pfile endif endfor sil! NetrwKeepj g/^$/d sil! NetrwKeepj %s/\r$//e call histdel("/",-1) exe "setl ts=".(g:netrw_maxfilenamelen+1) endfun fun! s:NetrwLocalExecute(cmd) let ykeep= @@ if !executable(a:cmd) call netrw#ErrorMsg(s:ERROR,"the file<".a:cmd."> is not executable!",89) let @@= ykeep return endif let optargs= input(":!".a:cmd,"","file") let result= system(a:cmd.optargs) let result = substitute(result,"\e\\[[0-9;]*m","","g") echomsg result let @@= ykeep endfun fun! s:NetrwLocalRename(path) range let ykeep = @@ let ctr = a:firstline let svpos = winsaveview() if exists("s:netrwmarkfilelist_{bufnr('%')}") for oldname in s:netrwmarkfilelist_{bufnr("%")} if exists("subfrom") let newname= substitute(oldname,subfrom,subto,'') else call inputsave() let newname= input("Moving ".oldname." to : ",oldname,"file") call inputrestore() if newname =~ '' let newname = substitute(newname,'^.*','','') elseif newname =~ '' let newname = substitute(newname,'[^/]*','','') endif if newname =~ '^s/' let subfrom = substitute(newname,'^s/\([^/]*\)/.*/$','\1','') let subto = substitute(newname,'^s/[^/]*/\(.*\)/$','\1','') let newname = substitute(oldname,subfrom,subto,'') endif endif call rename(oldname,newname) endfor call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir) else while ctr <= a:lastline exe "NetrwKeepj ".ctr if line(".") < w:netrw_bannercnt let ctr= ctr + 1 continue endif let curword= s:NetrwGetWord() if curword == "./" || curword == "../" let ctr= ctr + 1 continue endif NetrwKeepj norm! 0 let oldname= s:ComposePath(a:path,curword) call inputsave() let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e')) call inputrestore() call rename(oldname,newname) let ctr= ctr + 1 endwhile endif NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) NetrwKeepj call winrestview(svpos) let @@= ykeep endfun fun! s:NetrwLocalRm(path) range let ykeep = @@ let ret = 0 let all = 0 let svpos = winsaveview() if exists("s:netrwmarkfilelist_{bufnr('%')}") for fname in s:netrwmarkfilelist_{bufnr("%")} let ok= s:NetrwLocalRmFile(a:path,fname,all) if ok =~# 'q\%[uit]' || ok == "no" break elseif ok =~# 'a\%[ll]' let all= 1 endif endfor call s:NetrwUnMarkFile(1) else let keepsol= &l:sol setl nosol let ctr = a:firstline while ctr <= a:lastline exe "NetrwKeepj ".ctr if line(".") < w:netrw_bannercnt let ctr= ctr + 1 continue endif let curword= s:NetrwGetWord() if curword == "./" || curword == "../" let ctr= ctr + 1 continue endif let ok= s:NetrwLocalRmFile(a:path,curword,all) if ok =~# 'q\%[uit]' || ok == "no" break elseif ok =~# 'a\%[ll]' let all= 1 endif let ctr= ctr + 1 endwhile let &l:sol= keepsol endif if bufname("%") != "NetrwMessage" NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./')) NetrwKeepj call winrestview(svpos) endif let @@= ykeep endfun fun! s:NetrwLocalRmFile(path,fname,all) let all= a:all let ok = "" NetrwKeepj norm! 0 let rmfile= s:NetrwFile(s:ComposePath(a:path,a:fname)) if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$') if !all echohl Statement call inputsave() let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") call inputrestore() echohl NONE if ok == "" let ok="no" endif let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') if ok =~# 'a\%[ll]' let all= 1 endif endif if all || ok =~# 'y\%[es]' || ok == "" let ret= s:NetrwDelete(rmfile) endif else if !all echohl Statement call inputsave() let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ") call inputrestore() let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e') if ok == "" let ok="no" endif if ok =~# 'a\%[ll]' let all= 1 endif endif let rmfile= substitute(rmfile,'[\/]$','','e') if all || ok =~# 'y\%[es]' || ok == "" if v:version < 704 || !has("patch1109") call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile)) if v:shell_error != 0 let errcode= s:NetrwDelete(rmfile) if errcode != 0 if has("unix") call system("rm ".s:ShellEscape(rmfile)) if v:shell_error != 0 && !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",34) let ok="no" endif elseif !exists("g:netrw_quiet") call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",35) let ok="no" endif endif endif else if delete(rmfile,"d") call netrw#ErrorMsg(s:ERROR,"unable to delete directory <".rmfile.">!",103) endif endif endif endif return ok endfun fun! s:WinNames(id) let curwin= winnr() 1wincmd w exe curwin."wincmd w" endfun fun! netrw#Access(ilist) if a:ilist == 0 if exists("s:netrwmarkfilelist_".bufnr('%')) return s:netrwmarkfilelist_{bufnr('%')} else return "no-list-buf#".bufnr('%') endif elseif a:ilist == 1 return s:netrwmftgt endfun fun! netrw#Call(funcname,...) if a:0 > 0 exe "call s:".a:funcname."(".string(a:000).")" else exe "call s:".a:funcname."()" endif endfun fun! netrw#Expose(varname) if exists("s:".a:varname) exe "let retval= s:".a:varname if exists("g:netrw_pchk") if type(retval) == 3 let retval = copy(retval) let i = 0 while i < len(retval) let retval[i]= substitute(retval[i],expand("$HOME"),'~','') let i = i + 1 endwhile endif return string(retval) endif else let retval= "n/a" endif return retval endfun fun! netrw#Modify(varname,newvalue) exe "let s:".a:varname."= ".string(a:newvalue) endfun fun! netrw#RFC2396(fname) let fname = escape(substitute(a:fname,'%\(\x\x\)','\=nr2char("0x".submatch(1))','ge')," \t") return fname endfun fun! netrw#UserMaps(islocal) if exists("g:Netrw_UserMaps") && type(g:Netrw_UserMaps) == 3 for umap in g:Netrw_UserMaps if type(umap[0]) == 1 && type(umap[1]) == 1 exe "nno ".umap[0]." :call UserMaps(".a:islocal.",'".umap[1]."')" else call netrw#ErrorMsg(s:WARNING,"ignoring usermap <".string(umap[0])."> -- not a [string,funcref] entry",99) endif endfor endif endfun fun! netrw#WinPath(path) if (!g:netrw_cygwin || &shell !~ '\%(\\|\\)\%(\.exe\)\=$') && (has("win32") || has("win95") || has("win64") || has("win16")) let path = substitute(a:path,g:netrw_cygdrive.'/\(.\)','\1:','') let path = substitute(path, '\(\\\|/\)$', '', 'g') let path = substitute(path, '\ ', ' ', 'g') let path = substitute(path, '/', '\', 'g') else let path= a:path endif return path endfun fun! s:ComposePath(base,subdir) if has("amiga") let ec = a:base[s:Strlen(a:base)-1] if ec != '/' && ec != ':' let ret = a:base."/" . a:subdir else let ret = a:base.a:subdir endif elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) let ret= a:subdir elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) if a:base =~ '[/\\]$' let ret= a:base.a:subdir else let ret= a:base.'/'.a:subdir endif elseif a:base =~ '^\a\{3,}://' let urlbase = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\1','') let curpath = substitute(a:base,'^\(\a\+://.\{-}/\)\(.*\)$','\2','') if a:subdir == '../' if curpath =~ '[^/]/[^/]\+/$' let curpath= substitute(curpath,'[^/]\+/$','','') else let curpath="" endif let ret= urlbase.curpath else let ret= urlbase.curpath.a:subdir endif else let ret = substitute(a:base."/".a:subdir,"//","/","g") if a:base =~ '^//' let ret= '/'.ret endif let ret= simplify(ret) endif return ret endfun fun! s:DeleteBookmark(fname) call s:MergeBookmarks() if exists("g:netrw_bookmarklist") let indx= index(g:netrw_bookmarklist,a:fname) if indx == -1 let indx= 0 while indx < len(g:netrw_bookmarklist) if g:netrw_bookmarklist[indx] =~ a:fname call remove(g:netrw_bookmarklist,indx) let indx= indx - 1 endif let indx= indx + 1 endwhile else call remove(g:netrw_bookmarklist,indx) endif endif endfun fun! s:FileReadable(fname) if g:netrw_cygwin let ret= filereadable(s:NetrwFile(substitute(a:fname,g:netrw_cygdrive.'/\(.\)','\1:/',''))) else let ret= filereadable(s:NetrwFile(a:fname)) endif return ret endfun fun! s:GetTempfile(fname) if !exists("b:netrw_tmpfile") let tmpfile= tempname() let tmpfile= substitute(tmpfile,'\','/','ge') if !isdirectory(s:NetrwFile(substitute(tmpfile,'[^/]\+$','','e'))) NetrwKeepj call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2) return "" endif let s:netrw_tmpfile= tmpfile " used by netrw#NetSource() and netrw#BrowseX() if g:netrw_cygwin != 0 let tmpfile = substitute(tmpfile,'^\(\a\):',g:netrw_cygdrive.'/\1','e') elseif has("win32") || has("win95") || has("win64") || has("win16") if !exists("+shellslash") || !&ssl let tmpfile = substitute(tmpfile,'/','\','g') endif else let tmpfile = tmpfile endif let b:netrw_tmpfile= tmpfile else let tmpfile= b:netrw_tmpfile endif if a:fname != "" if a:fname =~ '\.[^./]\+$' if a:fname =~ '\.tar\.gz$' || a:fname =~ '\.tar\.bz2$' || a:fname =~ '\.tar\.xz$' let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') elseif a:fname =~ '.txz$' let suffix = ".txz".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') else let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e') endif let tmpfile= substitute(tmpfile,'\.tmp$','','e') let tmpfile .= suffix let s:netrw_tmpfile= tmpfile " supports netrw#NetSource() endif endif return tmpfile endfun fun! s:MakeSshCmd(sshcmd) if s:user == "" let sshcmd = substitute(a:sshcmd,'\',s:machine,'') else let sshcmd = substitute(a:sshcmd,'\',s:user."@".s:machine,'') endif if exists("g:netrw_port") && g:netrw_port != "" let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.g:netrw_port,'') elseif exists("s:port") && s:port != "" let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.s:port,'') else let sshcmd= substitute(sshcmd,"USEPORT ",'','') endif return sshcmd endfun fun! s:MakeBookmark(fname) if !exists("g:netrw_bookmarklist") let g:netrw_bookmarklist= [] endif if index(g:netrw_bookmarklist,a:fname) == -1 if isdirectory(s:NetrwFile(a:fname)) && a:fname !~ '/$' call add(g:netrw_bookmarklist,a:fname.'/') elseif a:fname !~ '/' call add(g:netrw_bookmarklist,getcwd()."/".a:fname) else call add(g:netrw_bookmarklist,a:fname) endif call sort(g:netrw_bookmarklist) endif endfun fun! s:MergeBookmarks() let savefile= s:NetrwHome()."/.netrwbook" if filereadable(s:NetrwFile(savefile)) NetrwKeepj call s:NetrwBookHistSave() NetrwKeepj call delete(savefile) endif endfun fun! s:NetrwBMShow() redir => bmshowraw menu redir END let bmshowlist = split(bmshowraw,'\n') if bmshowlist != [] let bmshowfuncs= filter(bmshowlist,'v:val =~# "\\d\\+_BMShow()"') if bmshowfuncs != [] let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','') if bmshowfunc =~# '^call.*BMShow()' exe "sil! NetrwKeepj ".bmshowfunc endif endif endif endfun fun! s:NetrwCursor() if !exists("w:netrw_liststyle") let w:netrw_liststyle= g:netrw_liststyle endif if &ft != "netrw" let &l:cursorline = s:netrw_usercul let &l:cursorcolumn = s:netrw_usercuc elseif g:netrw_cursor == 4 setl cursorline setl cursorcolumn elseif g:netrw_cursor == 3 if w:netrw_liststyle == s:WIDELIST setl cursorline setl cursorcolumn else setl cursorline let &l:cursorcolumn = s:netrw_usercuc endif elseif g:netrw_cursor == 2 let &l:cursorcolumn = s:netrw_usercuc setl cursorline elseif g:netrw_cursor == 1 let &l:cursorcolumn = s:netrw_usercuc if w:netrw_liststyle == s:WIDELIST setl cursorline else let &l:cursorline = s:netrw_usercul endif else let &l:cursorline = s:netrw_usercul let &l:cursorcolumn = s:netrw_usercuc endif endfun fun! s:RestoreCursorline() if exists("s:netrw_usercul") let &l:cursorline = s:netrw_usercul endif if exists("s:netrw_usercuc") let &l:cursorcolumn = s:netrw_usercuc endif endfun fun! s:NetrwDelete(path) let path = netrw#WinPath(a:path) if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) if exists("+shellslash") let sskeep= &shellslash setl noshellslash let result = delete(path) let &shellslash = sskeep else let result= delete(path) endif else let result= delete(path) endif if result < 0 NetrwKeepj call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71) endif return result endfun fun! s:NetrwEnew(...) if exists("b:netrw_bannercnt") |let netrw_bannercnt = b:netrw_bannercnt |endif if exists("b:netrw_browser_active") |let netrw_browser_active = b:netrw_browser_active |endif if exists("b:netrw_cpf") |let netrw_cpf = b:netrw_cpf |endif if exists("b:netrw_curdir") |let netrw_curdir = b:netrw_curdir |endif if exists("b:netrw_explore_bufnr") |let netrw_explore_bufnr = b:netrw_explore_bufnr |endif if exists("b:netrw_explore_indx") |let netrw_explore_indx = b:netrw_explore_indx |endif if exists("b:netrw_explore_line") |let netrw_explore_line = b:netrw_explore_line |endif if exists("b:netrw_explore_list") |let netrw_explore_list = b:netrw_explore_list |endif if exists("b:netrw_explore_listlen")|let netrw_explore_listlen = b:netrw_explore_listlen|endif if exists("b:netrw_explore_mtchcnt")|let netrw_explore_mtchcnt = b:netrw_explore_mtchcnt|endif if exists("b:netrw_fname") |let netrw_fname = b:netrw_fname |endif if exists("b:netrw_lastfile") |let netrw_lastfile = b:netrw_lastfile |endif if exists("b:netrw_liststyle") |let netrw_liststyle = b:netrw_liststyle |endif if exists("b:netrw_method") |let netrw_method = b:netrw_method |endif if exists("b:netrw_option") |let netrw_option = b:netrw_option |endif if exists("b:netrw_prvdir") |let netrw_prvdir = b:netrw_prvdir |endif NetrwKeepj call s:NetrwOptionRestore("w:") let netrw_keepdiff= &l:diff noswapfile NetrwKeepj keepalt enew! let &l:diff= netrw_keepdiff NetrwKeepj call s:NetrwOptionSave("w:") if exists("netrw_bannercnt") |let b:netrw_bannercnt = netrw_bannercnt |endif if exists("netrw_browser_active") |let b:netrw_browser_active = netrw_browser_active |endif if exists("netrw_cpf") |let b:netrw_cpf = netrw_cpf |endif if exists("netrw_curdir") |let b:netrw_curdir = netrw_curdir |endif if exists("netrw_explore_bufnr") |let b:netrw_explore_bufnr = netrw_explore_bufnr |endif if exists("netrw_explore_indx") |let b:netrw_explore_indx = netrw_explore_indx |endif if exists("netrw_explore_line") |let b:netrw_explore_line = netrw_explore_line |endif if exists("netrw_explore_list") |let b:netrw_explore_list = netrw_explore_list |endif if exists("netrw_explore_listlen")|let b:netrw_explore_listlen = netrw_explore_listlen|endif if exists("netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt = netrw_explore_mtchcnt|endif if exists("netrw_fname") |let b:netrw_fname = netrw_fname |endif if exists("netrw_lastfile") |let b:netrw_lastfile = netrw_lastfile |endif if exists("netrw_liststyle") |let b:netrw_liststyle = netrw_liststyle |endif if exists("netrw_method") |let b:netrw_method = netrw_method |endif if exists("netrw_option") |let b:netrw_option = netrw_option |endif if exists("netrw_prvdir") |let b:netrw_prvdir = netrw_prvdir |endif if a:0 > 0 let b:netrw_curdir= a:1 if b:netrw_curdir =~ '/$' if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST setl nobl file NetrwTreeListing setl nobl bt=nowrite bh=hide nno [ :sil call TreeListMove('[') nno ] :sil call TreeListMove(']') else exe "sil! keepalt file ".fnameescape(b:netrw_curdir) endif endif endif endfun fun! s:NetrwExe(cmd) if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] set shell& shellcmdflag& shellxquote& shellxescape& set shellquote& shellpipe& shellredir& shellslash& exe a:cmd let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell else exe a:cmd endif endfun fun! s:NetrwInsureWinVars() if !exists("w:netrw_liststyle") let curbuf = bufnr("%") let curwin = winnr() let iwin = 1 while iwin <= winnr("$") exe iwin."wincmd w" if winnr() != curwin && bufnr("%") == curbuf && exists("w:netrw_liststyle") let winvars= w: break endif let iwin= iwin + 1 endwhile exe "keepalt ".curwin."wincmd w" if exists("winvars") for k in keys(winvars) let w:{k}= winvars[k] endfor endif endif endfun fun! s:NetrwLcd(newdir) try exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) catch /^Vim\%((\a\+)\)\=:E344/ if (has("win32") || has("win95") || has("win64") || has("win16")) && !g:netrw_cygwin if a:newdir =~ '^\\\\\w\+' || a:newdir =~ '^//\w\+' let dirname = '\' exe 'NetrwKeepj sil lcd '.fnameescape(dirname) endif endif catch /^Vim\%((\a\+)\)\=:E472/ call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) if exists("w:netrw_prvdir") let a:newdir= w:netrw_prvdir else call s:NetrwOptionRestore("w:") exe "setl ".g:netrw_bufsettings let a:newdir= dirname return endif endtry endfun fun! s:NetrwSaveWordPosn() let s:netrw_saveword= '^'.fnameescape(getline('.')).'$' endfun fun! s:NetrwHumanReadable(sz) if g:netrw_sizestyle == 'h' if a:sz >= 1000000000 let sz = printf("%.1f",a:sz/1000000000.0)."g" elseif a:sz >= 10000000 let sz = printf("%d",a:sz/1000000)."m" elseif a:sz >= 1000000 let sz = printf("%.1f",a:sz/1000000.0)."m" elseif a:sz >= 10000 let sz = printf("%d",a:sz/1000)."k" elseif a:sz >= 1000 let sz = printf("%.1f",a:sz/1000.0)."k" else let sz= a:sz endif elseif g:netrw_sizestyle == 'H' if a:sz >= 1073741824 let sz = printf("%.1f",a:sz/1073741824.0)."G" elseif a:sz >= 10485760 let sz = printf("%d",a:sz/1048576)."M" elseif a:sz >= 1048576 let sz = printf("%.1f",a:sz/1048576.0)."M" elseif a:sz >= 10240 let sz = printf("%d",a:sz/1024)."K" elseif a:sz >= 1024 let sz = printf("%.1f",a:sz/1024.0)."K" else let sz= a:sz endif else let sz= a:sz endif return sz endfun fun! s:NetrwRestoreWordPosn() sil! call search(s:netrw_saveword,'w') endfun fun! s:RestoreBufVars() if exists("s:netrw_curdir") |let b:netrw_curdir = s:netrw_curdir |endif if exists("s:netrw_lastfile") |let b:netrw_lastfile = s:netrw_lastfile |endif if exists("s:netrw_method") |let b:netrw_method = s:netrw_method |endif if exists("s:netrw_fname") |let b:netrw_fname = s:netrw_fname |endif if exists("s:netrw_machine") |let b:netrw_machine = s:netrw_machine |endif if exists("s:netrw_browser_active")|let b:netrw_browser_active = s:netrw_browser_active|endif endfun fun! s:RemotePathAnalysis(dirname) let dirpat = '^\(\w\{-}\)://\(\(\w\+\)@\)\=\([^/:#]\+\)\%([:#]\(\d\+\)\)\=/\(.*\)$' let s:method = substitute(a:dirname,dirpat,'\1','') let s:user = substitute(a:dirname,dirpat,'\3','') let s:machine = substitute(a:dirname,dirpat,'\4','') let s:port = substitute(a:dirname,dirpat,'\5','') let s:path = substitute(a:dirname,dirpat,'\6','') let s:fname = substitute(s:path,'^.*/\ze.','','') if s:machine =~ '@' let dirpat = '^\(.*\)@\(.\{-}\)$' let s:user = s:user.'@'.substitute(s:machine,dirpat,'\1','') let s:machine = substitute(s:machine,dirpat,'\2','') endif endfun fun! s:RemoteSystem(cmd) if !executable(g:netrw_ssh_cmd) NetrwKeepj call netrw#ErrorMsg(s:ERROR,"g:netrw_ssh_cmd<".g:netrw_ssh_cmd."> is not executable!",52) elseif !exists("b:netrw_curdir") NetrwKeepj call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53) else let cmd = s:MakeSshCmd(g:netrw_ssh_cmd." USEPORT HOSTNAME") let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','') if remotedir != "" let cmd= cmd.' cd '.s:ShellEscape(remotedir).";" else let cmd= cmd.' ' endif let cmd= cmd.a:cmd let ret= system(cmd) endif return ret endfun fun! s:RestoreWinVars() if exists("s:bannercnt") |let w:netrw_bannercnt = s:bannercnt |unlet s:bannercnt |endif if exists("s:col") |let w:netrw_col = s:col |unlet s:col |endif if exists("s:curdir") |let w:netrw_curdir = s:curdir |unlet s:curdir |endif if exists("s:explore_bufnr") |let w:netrw_explore_bufnr = s:explore_bufnr |unlet s:explore_bufnr |endif if exists("s:explore_indx") |let w:netrw_explore_indx = s:explore_indx |unlet s:explore_indx |endif if exists("s:explore_line") |let w:netrw_explore_line = s:explore_line |unlet s:explore_line |endif if exists("s:explore_listlen")|let w:netrw_explore_listlen = s:explore_listlen|unlet s:explore_listlen|endif if exists("s:explore_list") |let w:netrw_explore_list = s:explore_list |unlet s:explore_list |endif if exists("s:explore_mtchcnt")|let w:netrw_explore_mtchcnt = s:explore_mtchcnt|unlet s:explore_mtchcnt|endif if exists("s:fpl") |let w:netrw_fpl = s:fpl |unlet s:fpl |endif if exists("s:hline") |let w:netrw_hline = s:hline |unlet s:hline |endif if exists("s:line") |let w:netrw_line = s:line |unlet s:line |endif if exists("s:liststyle") |let w:netrw_liststyle = s:liststyle |unlet s:liststyle |endif if exists("s:method") |let w:netrw_method = s:method |unlet s:method |endif if exists("s:prvdir") |let w:netrw_prvdir = s:prvdir |unlet s:prvdir |endif if exists("s:treedict") |let w:netrw_treedict = s:treedict |unlet s:treedict |endif if exists("s:treetop") |let w:netrw_treetop = s:treetop |unlet s:treetop |endif if exists("s:winnr") |let w:netrw_winnr = s:winnr |unlet s:winnr |endif endfun fun! s:NetrwRexplore(islocal,dirname) if exists("s:netrwdrag") return endif if &ft == "netrw" && exists("w:netrw_rexfile") && w:netrw_rexfile != "" exe "NetrwKeepj e ".w:netrw_rexfile unlet w:netrw_rexfile return endif let w:netrw_rexfile= expand("%") if !exists("w:netrw_rexlocal") return endif if w:netrw_rexlocal NetrwKeepj call netrw#LocalBrowseCheck(w:netrw_rexdir) else NetrwKeepj call s:NetrwBrowse(0,w:netrw_rexdir) endif if exists("s:initbeval") setl beval endif if exists("s:rexposn_".bufnr("%")) NetrwKeepj call winrestview(s:rexposn_{bufnr('%')}) if exists("s:rexposn_".bufnr('%')) unlet s:rexposn_{bufnr('%')} endif else endif if exists("s:explore_match") exe "2match netrwMarkFile /".s:explore_match."/" endif endfun fun! s:SaveBufVars() if exists("b:netrw_curdir") |let s:netrw_curdir = b:netrw_curdir |endif if exists("b:netrw_lastfile") |let s:netrw_lastfile = b:netrw_lastfile |endif if exists("b:netrw_method") |let s:netrw_method = b:netrw_method |endif if exists("b:netrw_fname") |let s:netrw_fname = b:netrw_fname |endif if exists("b:netrw_machine") |let s:netrw_machine = b:netrw_machine |endif if exists("b:netrw_browser_active")|let s:netrw_browser_active = b:netrw_browser_active|endif endfun fun! s:SavePosn(posndict) let a:posndict[bufnr("%")]= winsaveview() return a:posndict endfun fun! s:RestorePosn(posndict) if has_key(a:posndict,bufnr("%")) call winrestview(a:posndict[bufnr("%")]) endif endfun fun! s:SaveWinVars() if exists("w:netrw_bannercnt") |let s:bannercnt = w:netrw_bannercnt |endif if exists("w:netrw_col") |let s:col = w:netrw_col |endif if exists("w:netrw_curdir") |let s:curdir = w:netrw_curdir |endif if exists("w:netrw_explore_bufnr") |let s:explore_bufnr = w:netrw_explore_bufnr |endif if exists("w:netrw_explore_indx") |let s:explore_indx = w:netrw_explore_indx |endif if exists("w:netrw_explore_line") |let s:explore_line = w:netrw_explore_line |endif if exists("w:netrw_explore_listlen")|let s:explore_listlen = w:netrw_explore_listlen|endif if exists("w:netrw_explore_list") |let s:explore_list = w:netrw_explore_list |endif if exists("w:netrw_explore_mtchcnt")|let s:explore_mtchcnt = w:netrw_explore_mtchcnt|endif if exists("w:netrw_fpl") |let s:fpl = w:netrw_fpl |endif if exists("w:netrw_hline") |let s:hline = w:netrw_hline |endif if exists("w:netrw_line") |let s:line = w:netrw_line |endif if exists("w:netrw_liststyle") |let s:liststyle = w:netrw_liststyle |endif if exists("w:netrw_method") |let s:method = w:netrw_method |endif if exists("w:netrw_prvdir") |let s:prvdir = w:netrw_prvdir |endif if exists("w:netrw_treedict") |let s:treedict = w:netrw_treedict |endif if exists("w:netrw_treetop") |let s:treetop = w:netrw_treetop |endif if exists("w:netrw_winnr") |let s:winnr = w:netrw_winnr |endif endfun fun! s:SetBufWinVars() if exists("w:netrw_liststyle") |let b:netrw_liststyle = w:netrw_liststyle |endif if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif if exists("w:netrw_prvdir") |let b:netrw_prvdir = w:netrw_prvdir |endif if exists("w:netrw_explore_indx") |let b:netrw_explore_indx = w:netrw_explore_indx |endif if exists("w:netrw_explore_listlen")|let b:netrw_explore_listlen= w:netrw_explore_listlen|endif if exists("w:netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt= w:netrw_explore_mtchcnt|endif if exists("w:netrw_explore_bufnr") |let b:netrw_explore_bufnr = w:netrw_explore_bufnr |endif if exists("w:netrw_explore_line") |let b:netrw_explore_line = w:netrw_explore_line |endif if exists("w:netrw_explore_list") |let b:netrw_explore_list = w:netrw_explore_list |endif endfun fun! s:SetRexDir(islocal,dirname) let w:netrw_rexdir = a:dirname let w:netrw_rexlocal = a:islocal let s:rexposn_{bufnr("%")} = winsaveview() endfun fun! s:ShowLink() if exists("b:netrw_curdir") norm! $?\a let fname = b:netrw_curdir.'/'.s:NetrwGetWord() let resname = resolve(fname) if resname =~ '^\M'.b:netrw_curdir.'/' let dirlen = strlen(b:netrw_curdir) let resname = strpart(resname,dirlen+1) endif let modline = getline(".")."\t --> ".resname setl noro ma call setline(".",modline) setl ro noma nomod endif endfun fun! s:ShowStyle() if !exists("w:netrw_liststyle") let liststyle= g:netrw_liststyle else let liststyle= w:netrw_liststyle endif if liststyle == s:THINLIST return s:THINLIST.":thin" elseif liststyle == s:LONGLIST return s:LONGLIST.":long" elseif liststyle == s:WIDELIST return s:WIDELIST.":wide" elseif liststyle == s:TREELIST return s:TREELIST.":tree" else return 'n/a' endif endfun fun! s:Strlen(x) if v:version >= 703 && exists("*strdisplaywidth") let ret= strdisplaywidth(a:x) elseif type(g:Align_xstrlen) == 1 exe "let ret= ".g:Align_xstrlen."('".substitute(a:x,"'","''","g")."')" elseif g:Align_xstrlen == 1 let ret= strlen(substitute(a:x,'.','c','g')) elseif g:Align_xstrlen == 2 let ret=strlen(substitute(a:x, '.\Z', 'x', 'g')) elseif g:Align_xstrlen == 3 let modkeep= &l:mod exe "norm! o\" call setline(line("."),a:x) let ret= virtcol("$") - 1 d NetrwKeepj norm! k let &l:mod= modkeep else let ret= strlen(a:x) endif return ret endfun fun! s:ShellEscape(s, ...) if (has('win32') || has('win64')) && $SHELL == '' && &shellslash return printf('"%s"', substitute(a:s, '"', '""', 'g')) endif let f = a:0 > 0 ? a:1 : 0 return shellescape(a:s, f) endfun fun! s:TreeListMove(dir) let curline = getline('.') let prvline = (line(".") > 1)? getline(line(".")-1) : '' let nxtline = (line(".") < line("$"))? getline(line(".")+1) : '' let curindent = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') let indentm1 = substitute(curindent,'^'.s:treedepthstring,'','') let treedepthchr = substitute(s:treedepthstring,' ','','g') let stopline = exists("w:netrw_bannercnt")? w:netrw_bannercnt : 1 if curline !~ '/$' if a:dir == '[[' && prvline != '' NetrwKeepj norm! 0 let nl = search('^'.indentm1.'\%('.s:treedepthstring.'\)\@!','bWe',stopline) " search backwards elseif a:dir == '[]' && nxtline != '' NetrwKeepj norm! 0 let nl = search('^\%('.curindent.'\)\@!','We') " search forwards if nl != 0 NetrwKeepj norm! k else NetrwKeepj norm! G endif endif endif endfun fun! s:UpdateBuffersMenu() if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu try sil emenu Buffers.Refresh\ menu catch /^Vim\%((\a\+)\)\=:E/ let v:errmsg= "" sil NetrwKeepj call s:NetrwBMShow() endtry endif endfun fun! s:UseBufWinVars() if exists("b:netrw_liststyle") && !exists("w:netrw_liststyle") |let w:netrw_liststyle = b:netrw_liststyle |endif if exists("b:netrw_bannercnt") && !exists("w:netrw_bannercnt") |let w:netrw_bannercnt = b:netrw_bannercnt |endif if exists("b:netrw_method") && !exists("w:netrw_method") |let w:netrw_method = b:netrw_method |endif if exists("b:netrw_prvdir") && !exists("w:netrw_prvdir") |let w:netrw_prvdir = b:netrw_prvdir |endif if exists("b:netrw_explore_indx") && !exists("w:netrw_explore_indx") |let w:netrw_explore_indx = b:netrw_explore_indx |endif if exists("b:netrw_explore_listlen") && !exists("w:netrw_explore_listlen")|let w:netrw_explore_listlen = b:netrw_explore_listlen|endif if exists("b:netrw_explore_mtchcnt") && !exists("w:netrw_explore_mtchcnt")|let w:netrw_explore_mtchcnt = b:netrw_explore_mtchcnt|endif if exists("b:netrw_explore_bufnr") && !exists("w:netrw_explore_bufnr") |let w:netrw_explore_bufnr = b:netrw_explore_bufnr |endif if exists("b:netrw_explore_line") && !exists("w:netrw_explore_line") |let w:netrw_explore_line = b:netrw_explore_line |endif if exists("b:netrw_explore_list") && !exists("w:netrw_explore_list") |let w:netrw_explore_list = b:netrw_explore_list |endif endfun fun! s:UserMaps(islocal,funcname) if !exists("b:netrw_curdir") let b:netrw_curdir= getcwd() endif let Funcref = function(a:funcname) let result = Funcref(a:islocal) if type(result) == 1 if result == "refresh" call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) elseif result != "" exe result endif elseif type(result) == 3 for action in result if action == "refresh" call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) elseif action != "" exe action endif endfor endif endfun let &cpo= s:keepcpo unlet s:keepcpo function! netrw_gitignore#Hide(...) let additional_files = a:000 let default_files = ['.gitignore', '.git/info/exclude'] let global_gitignore = expand(substitute(system("git config --global core.excludesfile"), '\n', '', 'g')) if global_gitignore !=# '' let default_files = add(default_files, global_gitignore) endif let system_gitignore = expand(substitute(system("git config --system core.excludesfile"), '\n', '', 'g')) if system_gitignore !=# '' let default_files = add(default_files, system_gitignore) endif if additional_files !=# [] let files = extend(default_files, additional_files) else let files = default_files endif let gitignore_files = [] for file in files if filereadable(file) let gitignore_files = add(gitignore_files, file) endif endfor let gitignore_lines = [] for file in gitignore_files for line in readfile(file) if line !~# '^#' && line !~# '^$' let gitignore_lines = add(gitignore_lines, line) endif endfor endfor let escaped_lines = [] for line in gitignore_lines let escaped = line let escaped = substitute(escaped, '\*\*', '*', 'g') let escaped = substitute(escaped, '\.', '\\.', 'g') let escaped = substitute(escaped, '\$', '\\$', 'g') let escaped = substitute(escaped, '*', '.*', 'g') let escaped = substitute(escaped, '\(\[[^]]*\)\zs\\\.', '\.', 'g') let escaped = substitute(escaped, '\(\[[^]]*\)\zs\\\$', '\$', 'g') let escaped = substitute(escaped, '\(\[[^]]*\)\zs\.\*', '*', 'g') let escaped_lines = add(escaped_lines, escaped) endfor return join(escaped_lines, ',') endfunction if exists("g:loaded_netrwFileHandlers") || &cp finish endif let g:loaded_netrwFileHandlers= "v11b" if v:version < 702 echohl WarningMsg echo "***warning*** this version of netrwFileHandlers needs vim 7.2" echohl Normal finish endif let s:keepcpo= &cpo set cpo&vim fun! netrwFileHandlers#Invoke(exten,fname) let exten= a:exten if exten =~ '[@:,$!=\-+%?;~]' let specials= { \ '@' : 'AT', \ ':' : 'COLON', \ ',' : 'COMMA', \ '$' : 'DOLLAR', \ '!' : 'EXCLAMATION', \ '=' : 'EQUAL', \ '-' : 'MINUS', \ '+' : 'PLUS', \ '%' : 'PERCENT', \ '?' : 'QUESTION', \ ';' : 'SEMICOLON', \ '~' : 'TILDE'} let exten= substitute(a:exten,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge') endif if a:exten != "" && exists("*NFH_".exten) exe "let ret= NFH_".exten.'("'.a:fname.'")' elseif a:exten != "" && exists("*s:NFH_".exten) exe "let ret= s:NFH_".a:exten.'("'.a:fname.'")' endif return 0 endfun fun! s:NFH_html(pagefile) let page= substitute(a:pagefile,'^','file://','') if executable("mozilla") exe "!mozilla ".shellescape(page,1) elseif executable("netscape") exe "!netscape ".shellescape(page,1) else return 0 endif return 1 endfun fun! s:NFH_htm(pagefile) let page= substitute(a:pagefile,'^','file://','') if executable("mozilla") exe "!mozilla ".shellescape(page,1) elseif executable("netscape") exe "!netscape ".shellescape(page,1) else return 0 endif return 1 endfun fun! s:NFH_jpg(jpgfile) if executable("gimp") exe "silent! !gimp -s ".shellescape(a:jpgfile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1) else return 0 endif return 1 endfun fun! s:NFH_gif(giffile) if executable("gimp") exe "silent! !gimp -s ".shellescape(a:giffile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1) else return 0 endif return 1 endfun fun! s:NFH_png(pngfile) if executable("gimp") exe "silent! !gimp -s ".shellescape(a:pngfile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1) else return 0 endif return 1 endfun fun! s:NFH_pnm(pnmfile) if executable("gimp") exe "silent! !gimp -s ".shellescape(a:pnmfile,1) elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1) else return 0 endif return 1 endfun fun! s:NFH_bmp(bmpfile) if executable("gimp") exe "silent! !gimp -s ".a:bmpfile elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1) else return 0 endif return 1 endfun fun! s:NFH_pdf(pdf) if executable("gs") exe 'silent! !gs '.shellescape(a:pdf,1) elseif executable("pdftotext") exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1) else return 0 endif return 1 endfun fun! s:NFH_doc(doc) if executable("oowriter") exe 'silent! !oowriter '.shellescape(a:doc,1) redraw! else return 0 endif return 1 endfun fun! s:NFH_sxw(sxw) if executable("oowriter") exe 'silent! !oowriter '.shellescape(a:sxw,1) redraw! else return 0 endif return 1 endfun fun! s:NFH_xls(xls) if executable("oocalc") exe 'silent! !oocalc '.shellescape(a:xls,1) redraw! else return 0 endif return 1 endfun fun! s:NFH_ps(ps) if executable("gs") exe "silent! !gs ".shellescape(a:ps,1) redraw! elseif executable("ghostscript") exe "silent! !ghostscript ".shellescape(a:ps,1) redraw! elseif executable("gswin32") exe "silent! !gswin32 ".shellescape(a:ps,1) redraw! else return 0 endif return 1 endfun fun! s:NFH_eps(eps) if executable("gs") exe "silent! !gs ".shellescape(a:eps,1) redraw! elseif executable("ghostscript") exe "silent! !ghostscript ".shellescape(a:eps,1) redraw! elseif executable("ghostscript") exe "silent! !ghostscript ".shellescape(a:eps,1) redraw! elseif executable("gswin32") exe "silent! !gswin32 ".shellescape(a:eps,1) redraw! else return 0 endif return 1 endfun fun! s:NFH_fig(fig) if executable("xfig") exe "silent! !xfig ".a:fig redraw! else return 0 endif return 1 endfun fun! s:NFH_obj(obj) if has("unix") && executable("tgif") exe "silent! !tgif ".a:obj redraw! else return 0 endif return 1 endfun let &cpo= s:keepcpo unlet s:keepcpo if exists("g:loaded_netrwSettings") || &cp finish endif let g:loaded_netrwSettings = "v15" if v:version < 700 echohl WarningMsg echo "***warning*** this version of netrwSettings needs vim 7.0" echohl Normal finish endif fun! netrwSettings#NetrwSettings() call netrw#SavePosn() if !exists("g:loaded_netrw") echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None return endif above wincmd s enew setlocal noswapfile bh=wipe set ft=vim file Netrw\ Settings if !exists("g:netrw_liststyle") let g:netrw_liststyle= 0 let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa" endif if !exists("g:netrw_silent") let g:netrw_silent= 0 endif if !exists("g:netrw_use_nt_rcp") let g:netrw_use_nt_rcp= 0 endif if !exists("g:netrw_ftp") let g:netrw_ftp= 0 endif if !exists("g:netrw_ignorenetrc") let g:netrw_ignorenetrc= 0 endif put ='+ ---------------------------------------------' put ='+ NetrwSettings: by Charles E. Campbell' put ='+ Press with cursor atop any line for help' put ='+ ---------------------------------------------' let s:netrw_settings_stop= line(".") put ='' put ='+ Netrw Protocol Commands' put = 'let g:netrw_dav_cmd = '.g:netrw_dav_cmd put = 'let g:netrw_fetch_cmd = '.g:netrw_fetch_cmd put = 'let g:netrw_ftp_cmd = '.g:netrw_ftp_cmd put = 'let g:netrw_http_cmd = '.g:netrw_http_cmd put = 'let g:netrw_rcp_cmd = '.g:netrw_rcp_cmd put = 'let g:netrw_rsync_cmd = '.g:netrw_rsync_cmd put = 'let g:netrw_scp_cmd = '.g:netrw_scp_cmd put = 'let g:netrw_sftp_cmd = '.g:netrw_sftp_cmd put = 'let g:netrw_ssh_cmd = '.g:netrw_ssh_cmd let s:netrw_protocol_stop= line(".") put = '' put ='+Netrw Transfer Control' put = 'let g:netrw_cygwin = '.g:netrw_cygwin put = 'let g:netrw_ftp = '.g:netrw_ftp put = 'let g:netrw_ftpmode = '.g:netrw_ftpmode put = 'let g:netrw_ignorenetrc = '.g:netrw_ignorenetrc put = 'let g:netrw_sshport = '.g:netrw_sshport put = 'let g:netrw_silent = '.g:netrw_silent put = 'let g:netrw_use_nt_rcp = '.g:netrw_use_nt_rcp put = 'let g:netrw_win95ftp = '.g:netrw_win95ftp let s:netrw_xfer_stop= line(".") put ='' put ='+ Netrw Messages' put ='let g:netrw_use_errorwindow = '.g:netrw_use_errorwindow put = '' put ='+ Netrw Browser Control' if exists("g:netrw_altfile") put = 'let g:netrw_altfile = '.g:netrw_altfile else put = 'let g:netrw_altfile = 0' endif put = 'let g:netrw_alto = '.g:netrw_alto put = 'let g:netrw_altv = '.g:netrw_altv put = 'let g:netrw_banner = '.g:netrw_banner if exists("g:netrw_bannerbackslash") put = 'let g:netrw_bannerbackslash = '.g:netrw_bannerbackslash else put = '\" let g:netrw_bannerbackslash = (not defined)' endif put = 'let g:netrw_browse_split = '.g:netrw_browse_split if exists("g:netrw_browsex_viewer") put = 'let g:netrw_browsex_viewer = '.g:netrw_browsex_viewer else put = '\" let g:netrw_browsex_viewer = (not defined)' endif put = 'let g:netrw_compress = '.g:netrw_compress if exists("g:Netrw_corehandler") put = 'let g:Netrw_corehandler = '.g:Netrw_corehandler else put = '\" let g:Netrw_corehandler = (not defined)' endif put = 'let g:netrw_ctags = '.g:netrw_ctags put = 'let g:netrw_cursor = '.g:netrw_cursor let decompressline= line("$") put = 'let g:netrw_decompress = '.string(g:netrw_decompress) if exists("g:netrw_dynamic_maxfilenamelen") put = 'let g:netrw_dynamic_maxfilenamelen='.g:netrw_dynamic_maxfilenamelen else put = '\" let g:netrw_dynamic_maxfilenamelen= (not defined)' endif put = 'let g:netrw_dirhistmax = '.g:netrw_dirhistmax put = 'let g:netrw_errorlvl = '.g:netrw_errorlvl put = 'let g:netrw_fastbrowse = '.g:netrw_fastbrowse let fnameescline= line("$") put = 'let g:netrw_fname_escape = '.string(g:netrw_fname_escape) put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject put = 'let g:netrw_ftp_list_cmd = '.g:netrw_ftp_list_cmd put = 'let g:netrw_ftp_sizelist_cmd = '.g:netrw_ftp_sizelist_cmd put = 'let g:netrw_ftp_timelist_cmd = '.g:netrw_ftp_timelist_cmd let globescline= line("$") put = 'let g:netrw_glob_escape = '.string(g:netrw_glob_escape) put = 'let g:netrw_hide = '.g:netrw_hide if exists("g:netrw_home") put = 'let g:netrw_home = '.g:netrw_home else put = '\" let g:netrw_home = (not defined)' endif put = 'let g:netrw_keepdir = '.g:netrw_keepdir put = 'let g:netrw_list_cmd = '.g:netrw_list_cmd put = 'let g:netrw_list_hide = '.g:netrw_list_hide put = 'let g:netrw_liststyle = '.g:netrw_liststyle put = 'let g:netrw_localcopycmd = '.g:netrw_localcopycmd put = 'let g:netrw_localmkdir = '.g:netrw_localmkdir put = 'let g:netrw_localmovecmd = '.g:netrw_localmovecmd put = 'let g:netrw_localrmdir = '.g:netrw_localrmdir put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen put = 'let g:netrw_menu = '.g:netrw_menu put = 'let g:netrw_mousemaps = '.g:netrw_mousemaps put = 'let g:netrw_mkdir_cmd = '.g:netrw_mkdir_cmd if exists("g:netrw_nobeval") put = 'let g:netrw_nobeval = '.g:netrw_nobeval else put = '\" let g:netrw_nobeval = (not defined)' endif put = 'let g:netrw_remote_mkdir = '.g:netrw_remote_mkdir put = 'let g:netrw_preview = '.g:netrw_preview put = 'let g:netrw_rename_cmd = '.g:netrw_rename_cmd put = 'let g:netrw_retmap = '.g:netrw_retmap put = 'let g:netrw_rm_cmd = '.g:netrw_rm_cmd put = 'let g:netrw_rmdir_cmd = '.g:netrw_rmdir_cmd put = 'let g:netrw_rmf_cmd = '.g:netrw_rmf_cmd put = 'let g:netrw_sort_by = '.g:netrw_sort_by put = 'let g:netrw_sort_direction = '.g:netrw_sort_direction put = 'let g:netrw_sort_options = '.g:netrw_sort_options put = 'let g:netrw_sort_sequence = '.g:netrw_sort_sequence put = 'let g:netrw_servername = '.g:netrw_servername put = 'let g:netrw_special_syntax = '.g:netrw_special_syntax put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject put = 'let g:netrw_ssh_cmd = '.g:netrw_ssh_cmd put = 'let g:netrw_scpport = '.g:netrw_scpport put = 'let g:netrw_sepchr = '.g:netrw_sepchr put = 'let g:netrw_sshport = '.g:netrw_sshport put = 'let g:netrw_timefmt = '.g:netrw_timefmt let tmpfileescline= line("$") put ='let g:netrw_tmpfile_escape...' put = 'let g:netrw_use_noswf = '.g:netrw_use_noswf put = 'let g:netrw_xstrlen = '.g:netrw_xstrlen put = 'let g:netrw_winsize = '.g:netrw_winsize put ='' put ='+ For help, place cursor on line and press ' 1d silent %s/^+/"/e res 99 silent %s/= \([^0-9].*\)$/= '\1'/e silent %s/= $/= ''/e 1 call setline(decompressline,"let g:netrw_decompress = ".substitute(string(g:netrw_decompress),"^'\\(.*\\)'$",'\1','')) call setline(fnameescline, "let g:netrw_fname_escape = '".escape(g:netrw_fname_escape,"'")."'") call setline(globescline, "let g:netrw_glob_escape = '".escape(g:netrw_glob_escape,"'")."'") call setline(tmpfileescline,"let g:netrw_tmpfile_escape = '".escape(g:netrw_tmpfile_escape,"'")."'") set nomod nmap :call NetrwSettingHelp() nnoremap :call NetrwSettingHelp() let tmpfile= tempname() exe 'au BufWriteCmd Netrw\ Settings silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod' endfun fun! NetrwSettingHelp() let curline = getline(".") if curline =~ '=' let varhelp = substitute(curline,'^\s*let ','','e') let varhelp = substitute(varhelp,'\s*=.*$','','e') try exe "he ".varhelp catch /^Vim\%((\a\+)\)\=:E149/ echo "***sorry*** no help available for <".varhelp.">" endtry elseif line(".") < s:netrw_settings_stop he netrw-settings elseif line(".") < s:netrw_protocol_stop he netrw-externapp elseif line(".") < s:netrw_xfer_stop he netrw-variables else he netrw-browse-var endif endfun let paste#paste_cmd = {'n': ":call paste#Paste()"} let paste#paste_cmd['v'] = '"-c' . paste#paste_cmd['n'] let paste#paste_cmd['i'] = "\\\"+gP" func! paste#Paste() let ove = &ve set ve=all normal! `^ if @+ != '' normal! "+gP endif let c = col(".") normal! i if col(".") < c " compensate for i moving the cursor left normal! l endif let &ve = ove endfunc if !exists('g:phpcomplete_relax_static_constraint') let g:phpcomplete_relax_static_constraint = 0 endif if !exists('g:phpcomplete_complete_for_unknown_classes') let g:phpcomplete_complete_for_unknown_classes = 0 endif if !exists('g:phpcomplete_search_tags_for_variables') let g:phpcomplete_search_tags_for_variables = 0 endif if !exists('g:phpcomplete_min_num_of_chars_for_namespace_completion') let g:phpcomplete_min_num_of_chars_for_namespace_completion = 1 endif if !exists('g:phpcomplete_parse_docblock_comments') let g:phpcomplete_parse_docblock_comments = 0 endif if !exists('g:phpcomplete_cache_taglists') let g:phpcomplete_cache_taglists = 1 endif if !exists('s:cache_classstructures') let s:cache_classstructures = {} endif if !exists('s:cache_tags') let s:cache_tags = {} endif if !exists('s:cache_tags_checksum') let s:cache_tags_checksum = '' endif let s:script_path = fnamemodify(resolve(expand(':p')), ':h') function! phpcomplete#CompletePHP(findstart, base) " {{{ if a:findstart unlet! b:php_menu let pos = getpos('.') let phpbegin = searchpairpos('', 'bWn', \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') let phpend = searchpairpos('', 'Wn', \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') if phpbegin == [0,0] && phpend == [0,0] let htmlbegin = htmlcomplete#CompleteTags(1, '') let cursor_col = pos[2] let base = getline('.')[htmlbegin : cursor_col] let b:php_menu = htmlcomplete#CompleteTags(0, base) return htmlbegin else let line = getline('.') let start = col('.') - 1 let compl_begin = col('.') - 2 while start >= 0 && line[start - 1] =~ '[\\a-zA-Z_0-9\x7f-\xff$]' let start -= 1 endwhile let b:phpbegin = phpbegin let b:compl_context = phpcomplete#GetCurrentInstruction(line('.'), max([0, col('.') - 2]), phpbegin) return start endif endif if exists("b:php_menu") return b:php_menu endif if !exists('g:php_builtin_functions') call phpcomplete#LoadData() endif if exists("b:compl_context") let context = b:compl_context unlet! b:compl_context if a:base != "" let context = substitute(context, '\s*[$a-zA-Z_0-9\x7f-\xff]*$', '', '') end else let context = '' end try let eventignore = &eventignore let &eventignore = 'all' let winheight = winheight(0) let winnr = winnr() let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) if context =~? '^use\s' || context ==? 'use' return phpcomplete#CompleteUse(a:base) endif if context =~ '\(->\|::\)$' let classname = phpcomplete#GetClassName(line('.'), context, current_namespace, imports) if classname != '' if classname =~ '\' let classname_parts = split(classname, '\') let namespace = join(classname_parts[0:-2], '\') let classname = classname_parts[-1] else let namespace = '\' endif let classlocation = phpcomplete#GetClassLocation(classname, namespace) else let classlocation = '' endif if classlocation != '' if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname)) return phpcomplete#CompleteBuiltInClass(context, classname, a:base) endif if filereadable(classlocation) let classfile = readfile(classlocation) let classcontent = '' let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname) let sccontent = split(classcontent, "\n") let visibility = expand('%:p') == fnamemodify(classlocation, ':p') ? 'private' : 'public' return phpcomplete#CompleteUserClass(context, a:base, sccontent, visibility) endif endif return phpcomplete#CompleteUnknownClass(a:base, context) elseif context =~? 'implements' return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports) elseif context =~? 'instanceof' return phpcomplete#CompleteClassName(a:base, ['c', 'n'], current_namespace, imports) elseif context =~? 'extends\s\+.\+$' && a:base == '' return ['implements'] elseif context =~? 'extends' let kinds = context =~? 'class\s' ? ['c'] : ['i'] return phpcomplete#CompleteClassName(a:base, kinds, current_namespace, imports) elseif context =~? 'class [a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' return filter(['extends', 'implements'], 'stridx(v:val, a:base) == 0') elseif context =~? 'new' return phpcomplete#CompleteClassName(a:base, ['c'], current_namespace, imports) endif if a:base =~ '^\$' return phpcomplete#CompleteVariable(a:base) else return phpcomplete#CompleteGeneral(a:base, current_namespace, imports) endif finally silent! exec winnr.'resize '.winheight let &eventignore = eventignore endtry endfunction function! phpcomplete#CompleteUse(base) " {{{ let res = [] if a:base =~? '^\' let base = substitute(a:base, '^\', '', '') else let base = a:base endif let namespace_match_pattern = substitute(base, '\\', '\\\\', 'g') let classname_match_pattern = matchstr(base, '[^\\]\+$') let namespace_for_class = substitute(substitute(namespace_match_pattern, '\\\\', '\\', 'g'), '\\*'.classname_match_pattern.'$', '', '') if len(namespace_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion if len(classname_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion let tags = phpcomplete#GetTaglist('^\('.namespace_match_pattern.'\|'.classname_match_pattern.'\)') else let tags = phpcomplete#GetTaglist('^'.namespace_match_pattern) endif let patched_ctags_detected = 0 let namespaced_matches = [] let no_namespace_matches = [] for tag in tags if has_key(tag, 'namespace') let patched_ctags_detected = 1 endif if tag.kind ==? 'n' && tag.name =~? '^'.namespace_match_pattern let patched_ctags_detected = 1 call add(namespaced_matches, {'word': tag.name, 'kind': 'n', 'menu': tag.filename, 'info': tag.filename }) elseif has_key(tag, 'namespace') && (tag.kind ==? 'c' || tag.kind ==? 'i' || tag.kind ==? 't') && tag.namespace ==? namespace_for_class call add(namespaced_matches, {'word': namespace_for_class.'\'.tag.name, 'kind': tag.kind, 'menu': tag.filename, 'info': tag.filename }) elseif (tag.kind ==? 'c' || tag.kind ==? 'i' || tag.kind ==? 't') call add(no_namespace_matches, {'word': namespace_for_class.'\'.tag.name, 'kind': tag.kind, 'menu': tag.filename, 'info': tag.filename }) endif endfor if patched_ctags_detected no_namespace_matches = [] endif let res += namespaced_matches + no_namespace_matches endif if base !~ '\' let builtin_classnames = filter(keys(copy(g:php_builtin_classnames)), 'v:val =~? "^'.classname_match_pattern.'"') for classname in builtin_classnames call add(res, {'word': g:php_builtin_classes[tolower(classname)].name, 'kind': 'c'}) endfor let builtin_interfacenames = filter(keys(copy(g:php_builtin_interfacenames)), 'v:val =~? "^'.classname_match_pattern.'"') for interfacename in builtin_interfacenames call add(res, {'word': g:php_builtin_interfaces[tolower(interfacename)].name, 'kind': 'i'}) endfor endif for comp in res let comp.word = substitute(comp.word, '^\\', '', '') endfor return res endfunction function! phpcomplete#CompleteGeneral(base, current_namespace, imports) " {{{ if a:base =~? '^\' let leading_slash = '\' else let leading_slash = '' endif let file = getline(1, '$') call filter(file, \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') let jfile = join(file, ' ') let int_values = split(jfile, 'function\s\+') let int_functions = {} for i in int_values let f_name = matchstr(i, \ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze') if f_name =~? '^'.substitute(a:base, '\\', '\\\\', 'g') let f_args = matchstr(i, \ '^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*\(;\|{\|$\)') let int_functions[f_name.'('] = f_args.')' endif endfor let file = getline(1, '$') call filter(file, 'v:val =~ "define\\s*("') let jfile = join(file, ' ') let int_values = split(jfile, 'define\s*(\s*') let int_constants = {} for i in int_values let c_name = matchstr(i, '\(["'']\)\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze\1') if c_name != '' && c_name =~# '^'.substitute(a:base, '\\', '\\\\', 'g') let int_constants[leading_slash.c_name] = '' endif endfor let ext_functions = {} let ext_constants = {} let ext_classes = {} let ext_traits = {} let ext_interfaces = {} let ext_namespaces = {} let base = substitute(a:base, '^\\', '', '') let [tag_match_pattern, namespace_for_tag] = phpcomplete#ExpandClassName(a:base, a:current_namespace, a:imports) let namespace_match_pattern = substitute((namespace_for_tag == '' ? '' : namespace_for_tag.'\').tag_match_pattern, '\\', '\\\\', 'g') let tags = [] if len(namespace_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion && len(tag_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion && tag_match_pattern != namespace_match_pattern let tags = phpcomplete#GetTaglist('\c^\('.tag_match_pattern.'\|'.namespace_match_pattern.'\)') elseif len(namespace_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion let tags = phpcomplete#GetTaglist('\c^'.namespace_match_pattern) elseif len(tag_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion let tags = phpcomplete#GetTaglist('\c^'.tag_match_pattern) endif for tag in tags if !has_key(tag, 'namespace') || tag.namespace ==? a:current_namespace || tag.namespace ==? namespace_for_tag if has_key(tag, 'namespace') let full_name = tag.namespace.'\'.tag.name " absolute namespaced name (without leading '\') let base_parts = split(a:base, '\') if len(base_parts) > 1 let namespace_part = join(base_parts[0:-2], '\') else let namespace_part = '' endif let relative_name = (namespace_part == '' ? '' : namespace_part.'\').tag.name endif if tag.kind ==? 'n' && tag.name =~? '^'.namespace_match_pattern let info = tag.name.' - '.tag.filename let full_name = tag.name let base_parts = split(a:base, '\') let full_name_parts = split(full_name, '\') if len(base_parts) > 1 if has_key(a:imports, base_parts[0]) && a:imports[base_parts[0]].kind == 'n' let import = a:imports[base_parts[0]] let relative_name = substitute(full_name, '^'.substitute(import.name, '\\', '\\\\', 'g'), base_parts[0], '') else let relative_name = strpart(full_name, stridx(full_name, a:base)) endif else let relative_name = strpart(full_name, stridx(full_name, a:base)) endif if leading_slash == '' let ext_namespaces[relative_name.'\'] = info else let ext_namespaces['\'.full_name.'\'] = info endif elseif tag.kind ==? 'f' && !has_key(tag, 'class') " class related functions (methods) completed elsewhere, only works with patched ctags if has_key(tag, 'signature') let prototype = tag.signature[1:-2] " drop the ()s around the string else let prototype = matchstr(tag.cmd, \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') endif let info = prototype.') - '.tag.filename if !has_key(tag, 'namespace') let ext_functions[tag.name.'('] = info else if tag.namespace ==? namespace_for_tag if leading_slash == '' let ext_functions[relative_name.'('] = info else let ext_functions['\'.full_name.'('] = info endif endif endif elseif tag.kind ==? 'd' let info = ' - '.tag.filename if !has_key(tag, 'namespace') let ext_constants[tag.name] = info else if tag.namespace ==? namespace_for_tag if leading_slash == '' let ext_constants[relative_name] = info else let ext_constants['\'.full_name] = info endif endif endif elseif tag.kind ==? 'c' || tag.kind ==? 'i' || tag.kind ==? 't' let info = ' - '.tag.filename let key = '' if !has_key(tag, 'namespace') let key = tag.name else if tag.namespace ==? namespace_for_tag if leading_slash == '' let key = relative_name else let key = '\'.full_name endif endif endif if key != '' if tag.kind ==? 'c' let ext_classes[key] = info elseif tag.kind ==? 'i' let ext_interfaces[key] = info elseif tag.kind ==? 't' let ext_traits[key] = info endif endif endif endif endfor let builtin_constants = {} let builtin_classnames = {} let builtin_interfaces = {} let builtin_functions = {} let builtin_keywords = {} let base = substitute(a:base, '^\', '', '') if a:current_namespace == '\' || (a:base =~ '^\\' && a:base =~ '^\\[^\\]*$') for [classname, info] in items(g:php_builtin_classnames) if classname =~? '^'.base let builtin_classnames[leading_slash.g:php_builtin_classes[tolower(classname)].name] = info endif endfor for [interfacename, info] in items(g:php_builtin_interfacenames) if interfacename =~? '^'.base let builtin_interfaces[leading_slash.g:php_builtin_interfaces[tolower(interfacename)].name] = info endif endfor endif for [constant, info] in items(g:php_constants) if constant =~# '^'.base let builtin_constants[leading_slash.constant] = info endif endfor if leading_slash == '' " keywords should not be completed when base starts with '\' for [constant, info] in items(g:php_keywords) if constant =~? '^'.a:base let builtin_keywords[constant] = info endif endfor endif for [function_name, info] in items(g:php_builtin_functions) if function_name =~? '^'.base let builtin_functions[leading_slash.function_name] = info endif endfor call extend(int_constants, ext_constants) call extend(int_functions, ext_functions) call extend(int_functions, builtin_functions) for [imported_name, import] in items(a:imports) if imported_name =~? '^'.base if import.kind ==? 'c' if import.builtin let builtin_classnames[imported_name] = ' '.import.name else let ext_classes[imported_name] = ' '.import.name.' - '.import.filename endif elseif import.kind ==? 'i' if import.builtin let builtin_interfaces[imported_name] = ' '.import.name else let ext_interfaces[imported_name] = ' '.import.name.' - '.import.filename endif elseif import.kind ==? 't' let ext_traits[imported_name] = ' '.import.name.' - '.import.filename endif if import.kind == 'n' let ext_namespaces[imported_name.'\'] = ' '.import.name.' - '.import.filename endif end endfor let all_values = {} call extend(all_values, int_functions) call extend(all_values, ext_namespaces) call extend(all_values, int_constants) call extend(all_values, builtin_constants) call extend(all_values, ext_classes) call extend(all_values, ext_interfaces) call extend(all_values, ext_traits) call extend(all_values, builtin_classnames) call extend(all_values, builtin_interfaces) call extend(all_values, builtin_keywords) let final_list = [] let int_list = sort(keys(all_values)) for i in int_list if has_key(ext_namespaces, i) let final_list += [{'word':i, 'kind':'n', 'menu': ext_namespaces[i], 'info': ext_namespaces[i]}] elseif has_key(int_functions, i) let final_list += \ [{'word':i, \ 'info':i.int_functions[i], \ 'menu':int_functions[i], \ 'kind':'f'}] elseif has_key(ext_classes, i) || has_key(builtin_classnames, i) let info = has_key(ext_classes, i) ? ext_classes[i] : builtin_classnames[i].' - builtin' let final_list += [{'word':i, 'kind': 'c', 'menu': info, 'info': i.info}] elseif has_key(ext_interfaces, i) || has_key(builtin_interfaces, i) let info = has_key(ext_interfaces, i) ? ext_interfaces[i] : builtin_interfaces[i].' - builtin' let final_list += [{'word':i, 'kind': 'i', 'menu': info, 'info': i.info}] elseif has_key(ext_traits, i) let final_list += [{'word':i, 'kind': 't', 'menu': ext_traits[i], 'info': ext_traits[i]}] elseif has_key(int_constants, i) || has_key(builtin_constants, i) let info = has_key(int_constants, i) ? int_constants[i] : ' - builtin' let final_list += [{'word':i, 'kind': 'd', 'menu': info, 'info': i.info}] else let final_list += [{'word':i}] endif endfor return final_list endfunction function! phpcomplete#CompleteUnknownClass(base, context) " {{{ let res = [] if g:phpcomplete_complete_for_unknown_classes != 1 return [] endif if a:base =~ '^\$' let adddollar = '$' else let adddollar = '' endif let file = getline(1, '$') if a:context =~ '::' let variables = filter(deepcopy(file), \ 'v:val =~ "^\\s*\\(static\\|static\\s\\+\\(public\\|var\\)\\|\\(public\\|var\\)\\s\\+static\\)\\s\\+\\$"') elseif a:context =~ '->' let variables = filter(deepcopy(file), \ 'v:val =~ "^\\s*\\(public\\|var\\)\\s\\+\\$"') endif let jvars = join(variables, ' ') let svars = split(jvars, '\$') let int_vars = {} for i in svars let c_var = matchstr(i, \ '^\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze') if c_var != '' let int_vars[adddollar.c_var] = '' endif endfor call filter(deepcopy(file), \ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("') let jfile = join(file, ' ') let int_values = split(jfile, 'function\s\+') let int_functions = {} for i in int_values let f_name = matchstr(i, \ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze') let f_args = matchstr(i, \ '^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*\(;\|{\|$\)') let int_functions[f_name.'('] = f_args.')' endfor let ext_functions = {} let tags = phpcomplete#GetTaglist('^'.substitute(a:base, '^\$', '', '')) for tag in tags if tag.kind ==? 'f' let item = tag.name if has_key(tag, 'signature') let prototype = tag.signature[1:-2] else let prototype = matchstr(tag.cmd, \ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?') endif let ext_functions[item.'('] = prototype.') - '.tag['filename'] endif endfor call extend(int_functions, ext_functions) let all_values = {} call extend(all_values, int_functions) call extend(all_values, int_vars) " external variables are already in call extend(all_values, g:php_builtin_object_functions) for m in sort(keys(all_values)) if m =~ '\(^\|::\)'.a:base call add(res, m) endif endfor let start_list = res let final_list = [] for i in start_list if has_key(int_vars, i) let class = ' ' if all_values[i] != '' let class = i.' class ' endif let final_list += [{'word':i, 'info':class.all_values[i], 'kind':'v'}] else let final_list += \ [{'word':substitute(i, '.*::', '', ''), \ 'info':i.all_values[i], \ 'menu':all_values[i], \ 'kind':'f'}] endif endfor return final_list endfunction function! phpcomplete#CompleteVariable(base) " {{{ let res = [] let file = getline(1, '$') let jfile = join(file, ' ') let int_vals = split(jfile, '\ze\$') let int_vars = {} for i in int_vals if i =~? '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new' let val = matchstr(i, \ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*') else let val = matchstr(i, \ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*') endif if val != '' let int_vars[val] = '' endif endfor call extend(int_vars, g:php_builtin_vars) if g:phpcomplete_search_tags_for_variables let ext_vars = {} let tags = phpcomplete#GetTaglist('\C^'.substitute(a:base, '^\$', '', '')) for tag in tags if tag.kind ==? 'v' let item = tag.name let m_menu = '' if tag.cmd =~? tag['name'].'\s*=\s*new\s\+' let m_menu = matchstr(tag.cmd, \ '\c=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze') endif let ext_vars['$'.item] = m_menu endif endfor call extend(int_vars, ext_vars) endif for m in sort(keys(int_vars)) if m =~# '^\'.a:base call add(res, m) endif endfor let int_list = res let int_dict = [] for i in int_list if int_vars[i] != '' let class = ' ' if int_vars[i] != '' let class = i.' class ' endif let int_dict += [{'word':i, 'info':class.int_vars[i], 'menu':int_vars[i], 'kind':'v'}] else let int_dict += [{'word':i, 'kind':'v'}] endif endfor return int_dict endfunction function! phpcomplete#CompleteClassName(base, kinds, current_namespace, imports) " {{{ let kinds = sort(a:kinds) let res = [] if a:base =~? '^\' let leading_slash = '\' let base = substitute(a:base, '^\', '', '') else let leading_slash = '' let base = a:base endif let file = getline(1, '$') let filterstr = '' if kinds == ['c', 'i'] let filterstr = 'v:val =~? "\\(class\\|interface\\)\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"' elseif kinds == ['c', 'n'] let filterstr = 'v:val =~? "\\(class\\|namespace\\)\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"' elseif kinds == ['c'] let filterstr = 'v:val =~? "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"' elseif kinds == ['i'] let filterstr = 'v:val =~? "interface\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"' endif call filter(file, filterstr) for line in file let c_name = matchstr(line, '\c\(class\|interface\)\s*\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*') let kind = (line =~? '^\s*class' ? 'c' : 'i') if c_name != '' && c_name =~? '^'.base call add(res, {'word': c_name, 'kind': kind}) endif endfor let [tag_match_pattern, namespace_for_class] = phpcomplete#ExpandClassName(a:base, a:current_namespace, a:imports) let tags = [] if len(tag_match_pattern) >= g:phpcomplete_min_num_of_chars_for_namespace_completion let tags = phpcomplete#GetTaglist('^\c'.tag_match_pattern) endif if len(tags) let base_parts = split(a:base, '\') if len(base_parts) > 1 let namespace_part = join(base_parts[0:-2], '\').'\' else let namespace_part = '' endif let no_namespace_matches = [] let namespaced_matches = [] let seen_namespaced_tag = 0 for tag in tags if has_key(tag, 'namespace') let seen_namespaced_tag = 1 endif let relative_name = namespace_part.tag.name if !has_key(tag, 'namespace') && index(kinds, tag.kind) != -1 && stridx(tolower(tag.name), tolower(base[len(namespace_part):])) == 0 call add(no_namespace_matches, {'word': leading_slash.relative_name, 'kind': tag.kind, 'menu': tag.filename, 'info': tag.filename }) endif if has_key(tag, 'namespace') && index(kinds, tag.kind) != -1 && tag.namespace ==? namespace_for_class let full_name = tag.namespace.'\'.tag.name " absolute namespaced name (without leading '\') call add(namespaced_matches, {'word': leading_slash == '\' ? leading_slash.full_name : relative_name, 'kind': tag.kind, 'menu': tag.filename, 'info': tag.filename }) endif endfor if seen_namespaced_tag && namespace_part != '' let no_namespace_matches = [] endif let res += no_namespace_matches + namespaced_matches endif let base_parts = split(base, '\') if a:current_namespace == '\' || (leading_slash == '\' && len(base_parts) < 2) if index(kinds, 'c') != -1 let builtin_classnames = filter(keys(copy(g:php_builtin_classnames)), 'v:val =~? "^'.substitute(a:base, '\\', '', 'g').'"') for classname in builtin_classnames let menu = '' if has_key(g:php_builtin_classes[tolower(classname)].methods, '__construct') let menu = g:php_builtin_classes[tolower(classname)]['methods']['__construct']['signature'] endif call add(res, {'word': leading_slash.g:php_builtin_classes[tolower(classname)].name, 'kind': 'c', 'menu': menu}) endfor endif if index(kinds, 'i') != -1 let builtin_interfaces = filter(keys(copy(g:php_builtin_interfaces)), 'v:val =~? "^'.substitute(a:base, '\\', '', 'g').'"') for interfacename in builtin_interfaces call add(res, {'word': leading_slash.g:php_builtin_interfaces[interfacename]['name'], 'kind': 'i', 'menu': ''}) endfor endif endif for [imported_name, import] in items(a:imports) if imported_name =~? '^'.base && index(kinds, import.kind) != -1 let menu = import.name.(import.builtin ? ' - builtin' : '') call add(res, {'word': imported_name, 'kind': import.kind, 'menu': menu}) endif endfor let res = sort(res, 'phpcomplete#CompareCompletionRow') return res endfunction function! phpcomplete#CompareCompletionRow(i1, i2) " {{{ return a:i1.word == a:i2.word ? 0 : a:i1.word > a:i2.word ? 1 : -1 endfunction function! s:getNextCharWithPos(filelines, current_pos) " {{{ let line_no = a:current_pos[0] let col_no = a:current_pos[1] let last_line = a:filelines[len(a:filelines) - 1] let end_pos = [len(a:filelines) - 1, strlen(last_line) - 1] if line_no > end_pos[0] || line_no == end_pos[0] && col_no > end_pos[1] return ['EOF', 'EOF'] endif if col_no + 1 < strlen(a:filelines[line_no]) let col_no += 1 else let line_no += 1 while strlen(a:filelines[line_no]) == 0 let line_no += 1 endwhile let col_no = 0 endif if line_no == end_pos[0] && col_no > end_pos[1] return ['EOF', 'EOF'] endif return [[line_no, col_no], a:filelines[line_no][col_no]] endfunction " }}} function! phpcomplete#EvaluateModifiers(modifiers, required_modifiers, prohibited_modifiers) " {{{ if len(a:modifiers) == 0 && len(a:required_modifiers) == 0 return 1 else for required_modifier in a:required_modifiers if index(a:modifiers, required_modifier) == -1 return 0 endif endfor for modifier in a:modifiers if index(a:prohibited_modifiers, modifier) != -1 return 0 endif endfor return 1 endif endfunction function! phpcomplete#CompleteUserClass(context, base, sccontent, visibility) " {{{ let final_list = [] let res = [] let required_modifiers = [] let prohibited_modifiers = [] if a:visibility == 'public' let prohibited_modifiers += ['private', 'protected'] endif let static_con = '' if a:context =~ '::$' && a:context !~? 'parent::$' if g:phpcomplete_relax_static_constraint != 1 let required_modifiers += ['static'] endif elseif a:context =~ '->$' let prohibited_modifiers += ['static'] endif let all_function = filter(deepcopy(a:sccontent), \ 'v:val =~ "^\\s*\\(public\\s\\+\\|protected\\s\\+\\|private\\s\\+\\|final\\s\\+\\|abstract\\s\\+\\|static\\s\\+\\)*function"') let functions = [] for i in all_function let modifiers = split(matchstr(tolower(i), '\zs.\+\zefunction'), '\s\+') if phpcomplete#EvaluateModifiers(modifiers, required_modifiers, prohibited_modifiers) == 1 call add(functions, i) endif endfor let c_functions = {} let c_doc = {} for i in functions let f_name = matchstr(i, \ 'function\s*&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze') let f_args = matchstr(i, \ 'function\s*&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*\(;\|{\|\_$\)') if f_name != '' && stridx(f_name, '__') != 0 let c_functions[f_name.'('] = f_args if g:phpcomplete_parse_docblock_comments let c_doc[f_name.'('] = phpcomplete#GetDocBlock(a:sccontent, 'function\s*&\?\<'.f_name.'\>') endif endif endfor if a:context =~ '::$' && a:context !~? 'parent::$' let required_modifiers += ['static'] endif let all_variable = filter(deepcopy(a:sccontent), \ 'v:val =~ "\\(^\\s*\\(var\\s\\+\\|public\\s\\+\\|protected\\s\\+\\|private\\s\\+\\|final\\s\\+\\|abstract\\s\\+\\|static\\s\\+\\)\\+\\$\\|^\\s*\\(\\/\\|\\*\\)*\\s*@property\\s\\+\\S\\+\\s\\S\\{-}\\s*$\\)"') let variables = [] for i in all_variable let modifiers = split(matchstr(tolower(i), '\zs.\+\ze\$'), '\s\+') if phpcomplete#EvaluateModifiers(modifiers, required_modifiers, prohibited_modifiers) == 1 call add(variables, i) endif endfor let static_vars = split(join(variables, ' '), '\$') let c_variables = {} let var_index = 0 for i in static_vars let c_var = matchstr(i, \ '^\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze') if c_var != '' if a:context =~ '::$' let c_var = '$'.c_var endif let c_variables[c_var] = '' if g:phpcomplete_parse_docblock_comments && len(get(variables, var_index)) > 0 let c_doc[c_var] = phpcomplete#GetDocBlock(a:sccontent, variables[var_index]) endif let var_index += 1 endif endfor let constants = filter(deepcopy(a:sccontent), \ 'v:val =~ "^\\s*const\\s\\+"') let jcons = join(constants, ' ') let scons = split(jcons, 'const') let c_constants = {} let const_index = 0 for i in scons let c_con = matchstr(i, \ '^\s*\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze') if c_con != '' let c_constants[c_con] = '' if g:phpcomplete_parse_docblock_comments && len(get(constants, const_index)) > 0 let c_doc[c_con] = phpcomplete#GetDocBlock(a:sccontent, constants[const_index]) endif let const_index += 1 endif endfor let all_values = {} call extend(all_values, c_functions) call extend(all_values, c_variables) call extend(all_values, c_constants) for m in sort(keys(all_values)) if stridx(m, a:base) == 0 call add(res, m) endif endfor let start_list = res let final_list = [] for i in start_list let docblock = phpcomplete#ParseDocBlock(get(c_doc, i, '')) if has_key(c_variables, i) let final_list += \ [{'word': i, \ 'info':phpcomplete#FormatDocBlock(docblock), \ 'menu':get(docblock.var, 'type', ''), \ 'kind':'v'}] elseif has_key(c_constants, i) let info = phpcomplete#FormatDocBlock(docblock) if info != '' let info = "\n".info endif let final_list += \ [{'word':i, \ 'info':i.info, \ 'menu':all_values[i], \ 'kind':'d'}] else let return_type = get(docblock.return, 'type', '') if return_type != '' let return_type = ' | '.return_type endif let info = phpcomplete#FormatDocBlock(docblock) if info != '' let info = "\n".info endif let final_list += \ [{'word':substitute(i, '.*::', '', ''), \ 'info':i.all_values[i].')'.info, \ 'menu':all_values[i].')'.return_type, \ 'kind':'f'}] endif endfor return final_list endfunction function! phpcomplete#CompleteBuiltInClass(context, classname, base) " {{{ let class_info = g:php_builtin_classes[tolower(a:classname)] let res = [] if a:context =~ '->$' " complete for everything instance related for [method_name, method_info] in items(class_info.methods) if stridx(method_name, '__') != 0 && (a:base == '' || method_name =~? '^'.a:base) call add(res, {'word':method_name.'(', 'kind': 'f', 'menu': method_info.signature, 'info': method_info.signature }) endif endfor for [property_name, property_info] in items(class_info.properties) if a:base == '' || property_name =~? '^'.a:base call add(res, {'word':property_name, 'kind': 'v', 'menu': property_info.type, 'info': property_info.type }) endif endfor elseif a:context =~ '::$' " complete for everything static for [method_name, method_info] in items(class_info.static_methods) if a:base == '' || method_name =~? '^'.a:base call add(res, {'word':method_name.'(', 'kind': 'f', 'menu': method_info.signature, 'info': method_info.signature }) endif endfor for [property_name, property_info] in items(class_info.static_properties) if a:base == '' || property_name =~? '^'.a:base call add(res, {'word':property_name, 'kind': 'v', 'menu': property_info.type, 'info': property_info.type }) endif endfor for [constant_name, constant_info] in items(class_info.constants) if a:base == '' || constant_name =~? '^'.a:base call add(res, {'word':constant_name, 'kind': 'd', 'menu': constant_info, 'info': constant_info}) endif endfor endif return res endfunction function! phpcomplete#GetTaglist(pattern) " {{{ let cache_checksum = '' if g:phpcomplete_cache_taglists == 1 for tagfile in sort(tagfiles()) let cache_checksum .= fnamemodify(tagfile, ':p').':'.getftime(tagfile).'$' endfor if s:cache_tags_checksum != cache_checksum let s:cache_tags = {} endif if has_key(s:cache_tags, a:pattern) return s:cache_tags[a:pattern] endif endif let tags = taglist(a:pattern) for tag in tags for prop in keys(tag) if prop == 'cmd' || prop == 'static' || prop == 'kind' || prop == 'builtin' continue endif let tag[prop] = substitute(tag[prop], '\\\\', '\\', 'g') endfor endfor let s:cache_tags[a:pattern] = tags let has_key = has_key(s:cache_tags, a:pattern) let s:cache_tags_checksum = cache_checksum return tags endfunction function! phpcomplete#GetCurrentInstruction(line_number, col_number, phpbegin) " {{{ let col_number = a:col_number let line_number = a:line_number let line = getline(a:line_number) let current_char = -1 let instruction = '' let parent_depth = 0 let bracket_depth = 0 let stop_chars = [ \ '!', '@', '%', '^', '&', \ '*', '/', '-', '+', '=', \ ':', '>', '<', '.', '?', \ ';', '(', '|', '[' \ ] let phpbegin_length = len(matchstr(getline(a:phpbegin[0]), '\zs= 0 && bracket_depth >= 0 && synIDName !~? 'comment\|string' if index(stop_chars, current_char) != -1 let do_break = 1 if (prev_char == '-' && current_char == '>') || (current_char == '-' && next_char == '>') let do_break = 0 endif if (prev_char == ':' && current_char == ':') || (current_char == ':' && next_char == ':') let do_break = 0 endif if do_break break endif endif if first_coma_break_pos == -1 && current_char == ',' let first_coma_break_pos = len(instruction) endif endif if synIDName =~? 'phpBraceFunc\|phpParent\|Delimiter' if current_char == '(' let parent_depth += 1 elseif current_char == ')' let parent_depth -= 1 elseif current_char == '[' let bracket_depth += 1 elseif current_char == ']' let bracket_depth -= 1 endif endif if (current_char == '{' || current_char == '}') && synIDName =~? 'phpBraceFunc\|phpParent\|Delimiter' break endif if [line_number, col_number] == phpbegin_end break endif let instruction = current_char.instruction let col_number -= 1 if col_number == -1 let line_number -= 1 let line = getline(line_number) let col_number = strlen(line) endif endwhile let instruction = substitute(instruction, '^\s\+', '', '') if first_coma_break_pos != -1 if instruction !~? '^use' && instruction !~? '^class' " use ... statements and class delcarations should not be broken up by comas let pos = (-1 * first_coma_break_pos) + 1 let instruction = instruction[pos :] endif endif if instruction =~? '\c^\(if\|while\|foreach\|for\)\s*(' let instruction = substitute(instruction, '^\(if\|while\|foreach\|for\)\s*(\s*', '', '') let i = 0 let depth = 1 while i < len(instruction) if instruction[i] == '(' let depth += 1 endif if instruction[i] == ')' let depth -= 1 endif if depth == 0 break end let i += 1 endwhile let instruction = instruction[i + 1 : len(instruction)] endif let instruction = substitute(instruction, '\v^(^\s+)|(\s+)$', '', 'g') return instruction endfunction " }}} function! phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, imports, methodstack) " {{{ let classname_candidate = a:classname_candidate let class_candidate_namespace = a:class_candidate_namespace let methodstack = a:methodstack let unknown_result = ['', ''] let prev_method_is_array = (methodstack[0] =~ '\v^[^([]+\[' ? 1 : 0) let classname_candidate_is_array = (classname_candidate =~ '\[\]$' ? 1 : 0) if prev_method_is_array if classname_candidate_is_array let classname_candidate = substitute(classname_candidate, '\[\]$', '', '') else return unknown_result endif endif if (len(methodstack) == 1) let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, a:imports) return [classname_candidate, class_candidate_namespace] else call remove(methodstack, 0) let method_is_array = (methodstack[0] =~ '\v^[^[]+\[' ? 1 : 0) let method = matchstr(methodstack[0], '\v^\$*\zs[^[(]+\ze') let classlocation = phpcomplete#GetClassLocation(classname_candidate, class_candidate_namespace) if classlocation == 'VIMPHP_BUILTINOBJECT' && has_key(g:php_builtin_classes, tolower(classname_candidate)) let class_info = g:php_builtin_classes[tolower(classname_candidate)] if has_key(class_info['methods'], method) return phpcomplete#GetCallChainReturnType(class_info['methods'][method].return_type, '\', a:imports, methodstack) endif if has_key(class_info['properties'], method) return phpcomplete#GetCallChainReturnType(class_info['properties'][method].type, '\', a:imports, methodstack) endif if has_key(class_info['static_methods'], method) return phpcomplete#GetCallChainReturnType(class_info['static_methods'][method].return_type, '\', a:imports, methodstack) endif if has_key(class_info['static_properties'], method) return phpcomplete#GetCallChainReturnType(class_info['static_properties'][method].type, '\', a:imports, methodstack) endif return unknown_result elseif classlocation != '' && filereadable(classlocation) let classcontents = phpcomplete#GetCachedClassContents(classlocation, classname_candidate) for classstructure in classcontents let docblock_target_pattern = 'function\s\+&\?'.method.'\>\|\(public\|private\|protected\|var\).\+\$'.method.'\>\|@property.\+\$'.method.'\>' let doc_str = phpcomplete#GetDocBlock(split(classstructure.content, '\n'), docblock_target_pattern) let return_type_hint = phpcomplete#GetFunctionReturnTypeHint(split(classstructure.content, '\n'), 'function\s\+&\?'.method.'\>') if doc_str != '' || return_type_hint != '' break endif endfor if doc_str != '' || return_type_hint != '' let docblock = phpcomplete#ParseDocBlock(doc_str) if has_key(docblock.return, 'type') || has_key(docblock.var, 'type') || len(docblock.properties) > 0 || return_type_hint != '' if return_type_hint == '' let type = has_key(docblock.return, 'type') ? docblock.return.type : has_key(docblock.var, 'type') ? docblock.var.type : '' if type == '' for property in docblock.properties if property.description =~? method let type = property.type break endif endfor endif else let type = return_type_hint end if type =~ '\\' let parts = split(substitute(type, '^\\', '', ''), '\') let class_candidate_namespace = join(parts[0:-2], '\') let classname_candidate = parts[-1] if has_key(classstructure.imports, class_candidate_namespace) let class_candidate_namespace = classstructure.imports[class_candidate_namespace].name endif else let returnclass = type if has_key(classstructure.imports, returnclass) if has_key(classstructure.imports[returnclass], 'namespace') let fullnamespace = classstructure.imports[returnclass].namespace else let fullnamespace = class_candidate_namespace endif else let fullnamespace = class_candidate_namespace endif if returnclass == 'self' || returnclass == 'static' || returnclass == '$this' || returnclass == 'self[]' || returnclass == 'static[]' || returnclass == '$this[]' if returnclass =~ '\[\]$' let classname_candidate = a:classname_candidate.'[]' else let classname_candidate = a:classname_candidate endif let class_candidate_namespace = a:class_candidate_namespace else let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(returnclass, fullnamespace, a:imports) endif endif return phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, a:imports, methodstack) endif endif return unknown_result else return unknown_result endif endif endfunction " }}} function! phpcomplete#GetMethodStack(line) " {{{ let methodstack = [] let i = 0 let end = len(a:line) let current_part = '' let parent_depth = 0 let in_string = 0 let string_start = '' let next_char = '' while i < end let current_char = a:line[i] let next_char = i + 1 < end ? a:line[i + 1] : '' let prev_char = i >= 1 ? a:line[i - 1] : '' let prev_prev_char = i >= 2 ? a:line[i - 2] : '' if in_string == 0 && parent_depth == 0 && ((current_char == '-' && next_char == '>') || (current_char == ':' && next_char == ':')) call add(methodstack, current_part) let current_part = '' let i += 2 continue endif if current_char == "'" || current_char == '"' if prev_char != '\' || (prev_char == '\' && prev_prev_char == '\') if in_string if current_char == string_start let in_string = 0 endif else " ... and we are not in a string let in_string = 1 let string_start = current_char endif endif endif if !in_string && a:line[i] == '(' let parent_depth += 1 endif if !in_string && a:line[i] == ')' let parent_depth -= 1 endif let current_part .= current_char let i += 1 endwhile if current_part != '' call add(methodstack, current_part) endif return methodstack endfunction function! phpcomplete#GetClassName(start_line, context, current_namespace, imports) " {{{ let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let function_name_pattern = '[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*' let function_invocation_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*(' let variable_name_pattern = '\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' let classname_candidate = '' let class_candidate_namespace = a:current_namespace let class_candidate_imports = a:imports let methodstack = phpcomplete#GetMethodStack(a:context) if a:context =~? '\$this->' || a:context =~? '\(self\|static\)::' || a:context =~? 'parent::' let i = 1 while i < a:start_line let line = getline(a:start_line - i) if line =~ '^}' return '' endif if line =~? '\v^\s*(abstract\s+|final\s+)*\s*class\s' let class_name = matchstr(line, '\cclass\s\+\zs'.class_name_pattern.'\ze') let extended_class = matchstr(line, '\cclass\s\+'.class_name_pattern.'\s\+extends\s\+\zs'.class_name_pattern.'\ze') let classname_candidate = a:context =~? 'parent::' ? extended_class : class_name if classname_candidate != '' let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate endif endif let i += 1 endwhile elseif a:context =~? '(\s*new\s\+'.class_name_pattern.'\s*)->' let classname_candidate = matchstr(a:context, '\cnew\s\+\zs'.class_name_pattern.'\ze') let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate elseif get(methodstack, 0) =~# function_invocation_pattern let function_name = matchstr(methodstack[0], '^\s*\zs'.function_name_pattern) let function_file = phpcomplete#GetFunctionLocation(function_name, a:current_namespace) if function_file == '' let function_file = phpcomplete#GetFunctionLocation(function_name, '\') endif if function_file == 'VIMPHP_BUILTINFUNCTION' let return_type = matchstr(g:php_builtin_functions[function_name.'('], '\v\|\s+\zs.+$') let classname_candidate = return_type let class_candidate_namespace = '\' elseif function_file != '' && filereadable(function_file) let file_lines = readfile(function_file) let docblock_str = phpcomplete#GetDocBlock(file_lines, 'function\s*&\?\<'.function_name.'\>') let return_type_hint = phpcomplete#GetFunctionReturnTypeHint(file_lines, 'function\s*&\?'.function_name.'\>') let docblock = phpcomplete#ParseDocBlock(docblock_str) let type = has_key(docblock.return, 'type') ? docblock.return.type : return_type_hint if type != '' let classname_candidate = type let [class_candidate_namespace, function_imports] = phpcomplete#GetCurrentNameSpace(file_lines) let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports) endif endif if classname_candidate != '' let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate endif else let object = methodstack[0] let object_is_array = (object =~ '\v^[^[]+\[' ? 1 : 0) let object = matchstr(object, variable_name_pattern) let function_boundary = phpcomplete#GetCurrentFunctionBoundaries() let search_end_line = max([1, function_boundary[0][0]]) let lines = reverse(getline(search_end_line, a:start_line - 1)) let constant_object = matchstr(a:context, '\zs'.class_name_pattern.'\ze::') if constant_object != '' let classname_candidate = constant_object endif if classname_candidate == '' for line in lines if line =~# '@var\s\+'.object.'\s\+'.class_name_pattern let classname_candidate = matchstr(line, '@var\s\+'.object.'\s\+\zs'.class_name_pattern.'\(\[\]\)\?') let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports) break endif if line =~# '@var\s\+'.class_name_pattern.'\s\+'.object let classname_candidate = matchstr(line, '@var\s\+\zs'.class_name_pattern.'\(\[\]\)\?\ze'.'\s\+'.object) let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports) break endif endfor endif if classname_candidate != '' let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate endif let i = 1 for line in lines " {{{ if line =~# '^\s*'.object.'\s*=\s*new\s\+'.class_name_pattern && !object_is_array let classname_candidate = matchstr(line, object.'\c\s*=\s*new\s*\zs'.class_name_pattern.'\ze') let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports) break endif if line =~# '^\s*'.object.'\s*=&\?\s*'.class_name_pattern.'\s*::\s*getInstance' && !object_is_array let classname_candidate = matchstr(line, object.'\s*=&\?\s*\zs'.class_name_pattern.'\ze\s*::\s*getInstance') let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports) break endif if line =~# '^\s*'.object.'\s*=&\?\s*'.class_name_pattern.'\s*::\s*$\?[a-zA-Z_0-9\x7f-\xff]\+' let classname = matchstr(line, '^\s*'.object.'\s*=&\?\s*\zs'.class_name_pattern.'\ze\s*::') if has_key(a:imports, classname) && a:imports[classname].kind == 'c' let classname = a:imports[classname].name endif if has_key(g:php_builtin_classes, tolower(classname)) let sub_methodstack = phpcomplete#GetMethodStack(matchstr(line, '^\s*'.object.'\s*=&\?\s*\s\+\zs.*')) let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname, '\', {}, sub_methodstack) return classname_candidate else let [classname, namespace_for_class] = phpcomplete#ExpandClassName(classname, a:current_namespace, a:imports) let sub_methodstack = phpcomplete#GetMethodStack(matchstr(line, '^\s*'.object.'\s*=&\?\s*\s\+\zs.*')) let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType( \ classname, \ namespace_for_class, \ a:imports, \ sub_methodstack) return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate endif endif if line =~? 'function\(\s\+'.function_name_pattern.'\)\?\s*(' let function_lines = join(reverse(copy(lines)), " ") if function_lines =~? 'function\(\s\+'.function_name_pattern.'\)\?\s*(.\{-}'.class_name_pattern.'\s\+'.object && !object_is_array let f_args = matchstr(function_lines, '\cfunction\(\s\+'.function_name_pattern.'\)\?\s*(\zs.\{-}\ze)') let args = split(f_args, '\s*\zs,\ze\s*') for arg in args if arg =~# object.'\(,\|$\)' let classname_candidate = matchstr(arg, '\s*\zs'.class_name_pattern.'\ze\s\+'.object) let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports) break endif endfor if classname_candidate != '' break endif endif let match_line = substitute(line, '\\', '\\\\', 'g') let sccontent = getline(0, a:start_line - i) let doc_str = phpcomplete#GetDocBlock(sccontent, match_line) if doc_str != '' let docblock = phpcomplete#ParseDocBlock(doc_str) for param in docblock.params if param.name =~? object let classname_candidate = matchstr(param.type, class_name_pattern.'\(\[\]\)\?') let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, a:current_namespace, a:imports) break endif endfor if classname_candidate != '' break endif endif endif if line =~# '^\s*'.object.'\s*=&\?\s\+\(clone\)\?\s*'.variable_name_pattern let start_col = match(line, '^\s*'.object.'\C\s*=\zs&\?\s\+\(clone\)\?\s*'.variable_name_pattern) let filelines = reverse(copy(lines)) let [pos, char] = s:getNextCharWithPos(filelines, [len(filelines) - i, start_col]) let chars_read = 1 let last_pos = pos let real_lines_offset = len(function_boundary) == 1 ? 1 : function_boundary[0][0] while char != 'EOF' && chars_read < 1000 let last_pos = pos let [pos, char] = s:getNextCharWithPos(filelines, pos) let chars_read += 1 if char == ';' let synIDName = synIDattr(synID(real_lines_offset + pos[0], pos[1] + 1, 0), 'name') if synIDName !~? 'comment\|string' break endif endif endwhile let prev_context = phpcomplete#GetCurrentInstruction(real_lines_offset + last_pos[0], last_pos[1], b:phpbegin) if prev_context == '' return endif let prev_class = phpcomplete#GetClassName(a:start_line - i, prev_context, a:current_namespace, a:imports) if stridx(prev_class, '\') != -1 let classname_parts = split(prev_class, '\\\+') let classname_candidate = classname_parts[-1] let class_candidate_namespace = join(classname_parts[0:-2], '\') else let classname_candidate = prev_class let class_candidate_namespace = '\' endif break endif if line =~# '^\s*'.object.'\s*=&\?\s*'.function_invocation_pattern let start_col = match(line, '\C^\s*'.object.'\s*=\zs&\?\s*'.function_invocation_pattern) let filelines = reverse(copy(lines)) let [pos, char] = s:getNextCharWithPos(filelines, [len(filelines) - i, start_col]) let chars_read = 1 let last_pos = pos let real_lines_offset = len(function_boundary) == 1 ? 1 : function_boundary[0][0] while char != 'EOF' && chars_read < 1000 let last_pos = pos let [pos, char] = s:getNextCharWithPos(filelines, pos) let chars_read += 1 if char == ';' let synIDName = synIDattr(synID(real_lines_offset + pos[0], pos[1] + 1, 0), 'name') if synIDName !~? 'comment\|string' break endif endif endwhile let prev_context = phpcomplete#GetCurrentInstruction(real_lines_offset + last_pos[0], last_pos[1], b:phpbegin) if prev_context == '' return endif let function_name = matchstr(prev_context, '^'.function_invocation_pattern.'\ze') let function_name = matchstr(function_name, '^\zs.\+\ze\s*($') " strip the trailing ( let [function_name, function_namespace] = phpcomplete#ExpandClassName(function_name, a:current_namespace, a:imports) let function_file = phpcomplete#GetFunctionLocation(function_name, function_namespace) if function_file == '' let function_file = phpcomplete#GetFunctionLocation(function_name, '\') endif if function_file == 'VIMPHP_BUILTINFUNCTION' let return_type = matchstr(g:php_builtin_functions[function_name.'('], '\v\|\s+\zs.+$') let classname_candidate = return_type let class_candidate_namespace = '\' break elseif function_file != '' && filereadable(function_file) let file_lines = readfile(function_file) let docblock_str = phpcomplete#GetDocBlock(file_lines, 'function\s*&\?\<'.function_name.'\>') let return_type_hint = phpcomplete#GetFunctionReturnTypeHint(file_lines, 'function\s*&\?'.function_name.'\>') let docblock = phpcomplete#ParseDocBlock(docblock_str) let type = has_key(docblock.return, 'type') ? docblock.return.type : return_type_hint if type != '' let classname_candidate = type let [class_candidate_namespace, function_imports] = phpcomplete#GetCurrentNameSpace(file_lines) let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports) break endif endif endif if line =~? 'foreach\s*(.\{-}\s\+'.object.'\s*)' let sub_context = matchstr(line, 'foreach\s*(\s*\zs.\{-}\ze\s\+as') let prev_class = phpcomplete#GetClassName(a:start_line - i, sub_context, a:current_namespace, a:imports) if prev_class =~ '\[\]$' let prev_class = matchstr(prev_class, '\v^[^[]+') else return endif if stridx(prev_class, '\') != -1 let classname_parts = split(prev_class, '\\\+') let classname_candidate = classname_parts[-1] let class_candidate_namespace = join(classname_parts[0:-2], '\') else let classname_candidate = prev_class let class_candidate_namespace = '\' endif break endif if line =~? 'catch\s*(\zs'.class_name_pattern.'\ze\s\+'.object let classname = matchstr(line, 'catch\s*(\zs'.class_name_pattern.'\ze\s\+'.object) if stridx(classname, '\') != -1 let classname_parts = split(classname, '\\\+') let classname_candidate = classname_parts[-1] let class_candidate_namespace = join(classname_parts[0:-2], '\') else let classname_candidate = classname let class_candidate_namespace = '\' endif break endif let i += 1 endfor " }}} if classname_candidate != '' let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(classname_candidate, class_candidate_namespace, class_candidate_imports, methodstack) return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate endif if g:phpcomplete_search_tags_for_variables let tags = phpcomplete#GetTaglist('^'.substitute(object, '^\$', '', '')) if len(tags) == 0 return else for tag in tags if tag.kind ==? 'v' && tag.cmd =~? '=\s*new\s\+\zs'.class_name_pattern.'\ze' let classname = matchstr(tag.cmd, '=\s*new\s\+\zs'.class_name_pattern.'\ze') let classname = substitute(classname, '\\\(\_.\)', '\1', 'g') return classname endif endfor endif endif endif endfunction function! phpcomplete#GetClassLocation(classname, namespace) " {{{ if has_key(g:php_builtin_classes, tolower(a:classname)) && (a:namespace == '' || a:namespace == '\') return 'VIMPHP_BUILTINOBJECT' endif if has_key(g:php_builtin_interfaces, tolower(a:classname)) && (a:namespace == '' || a:namespace == '\') return 'VIMPHP_BUILTINOBJECT' endif if a:namespace == '' || a:namespace == '\' let search_namespace = '\' else let search_namespace = tolower(a:namespace) endif let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) let i = 1 while i < line('.') let line = getline(line('.')-i) if line =~? '^\s*\(abstract\s\+\|final\s\+\)*\s*\(class\|interface\|trait\)\s*'.a:classname.'\(\s\+\|$\|{\)' && tolower(current_namespace) == search_namespace return expand('%:p') else let i += 1 continue endif endwhile let no_namespace_candidate = '' let tags = phpcomplete#GetTaglist('^'.a:classname.'$') for tag in tags if tag.kind == 'c' || tag.kind == 'i' || tag.kind == 't' if !has_key(tag, 'namespace') let no_namespace_candidate = tag.filename else if search_namespace == tolower(tag.namespace) return tag.filename endif endif endif endfor if no_namespace_candidate != '' return no_namespace_candidate endif return '' endfunction function! phpcomplete#GetFunctionLocation(function_name, namespace) " {{{ if has_key(g:php_builtin_functions, a:function_name.'(') return 'VIMPHP_BUILTINFUNCTION' endif let i = 1 let buffer_lines = getline(1, line('$')) for line in buffer_lines if line =~? '^\s*function\s\+&\?'.a:function_name.'\s*(' return expand('%:p') endif endfor if a:namespace == '' || a:namespace == '\' let search_namespace = '\' else let search_namespace = tolower(a:namespace) endif let no_namespace_candidate = '' let tags = phpcomplete#GetTaglist('\c^'.a:function_name.'$') for tag in tags if tag.kind == 'f' if !has_key(tag, 'namespace') let no_namespace_candidate = tag.filename else if search_namespace == tolower(tag.namespace) return tag.filename endif endif endif endfor if no_namespace_candidate != '' return no_namespace_candidate endif return '' endfunction function! phpcomplete#GetCachedClassContents(classlocation, class_name) " {{{ let full_file_path = fnamemodify(a:classlocation, ':p') let cache_key = full_file_path.'#'.a:class_name.'#'.getftime(full_file_path) if has_key(s:cache_classstructures, cache_key) let classcontents = s:cache_classstructures[cache_key] let valid = 1 for classstructure in classcontents if getftime(classstructure.file) != classstructure.mtime let valid = 0 call phpcomplete#ClearCachedClassContents(classstructure.file) endif endfor if valid return classcontents else call remove(s:cache_classstructures, cache_key) call phpcomplete#ClearCachedClassContents(full_file_path) endif else call phpcomplete#ClearCachedClassContents(full_file_path) endif let classfile = readfile(a:classlocation) let classcontents = phpcomplete#GetClassContentsStructure(full_file_path, classfile, a:class_name) let s:cache_classstructures[cache_key] = classcontents return classcontents endfunction " }}} function! phpcomplete#ClearCachedClassContents(full_file_path) " {{{ for [cache_key, cached_value] in items(s:cache_classstructures) if stridx(cache_key, a:full_file_path.'#') == 0 call remove(s:cache_classstructures, cache_key) endif endfor endfunction " }}} function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_name) " {{{ let full_file_path = fnamemodify(a:file_path, ':p') let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let cfile = join(a:file_lines, "\n") let result = [] let phpcomplete_original_window = winnr() silent! below 1new silent! 0put =cfile call search('\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)') let cfline = line('.') call search('{') let endline = line('.') let content = join(getline(cfline, endline), "\n") if content =~? 'extends' let extends_string = matchstr(content, '\(class\|interface\)\_s\+'.a:class_name.'\_.\+extends\_s\+\zs\('.class_name_pattern.'\(,\|\_s\)*\)\+\ze\(extends\|{\)') let extended_classes = map(split(extends_string, '\(,\|\_s\)\+'), 'substitute(v:val, "\\_s\\+", "", "g")') else let extended_classes = '' endif if content =~? 'implements' let implements_string = matchstr(content, 'class\_s\+'.a:class_name.'\_.\+implements\_s\+\zs\('.class_name_pattern.'\(,\|\_s\)*\)\+\ze') let implemented_interfaces = map(split(implements_string, '\(,\|\_s\)\+'), 'substitute(v:val, "\\_s\\+", "", "g")') else let implemented_interfaces = [] endif call searchpair('{', '', '}', 'W') let class_closing_bracket_line = line('.') let doc_line = cfline - 1 if getline(doc_line) =~? '^\s*\*/' while doc_line != 0 if getline(doc_line) =~? '^\s*/\*\*' let cfline = doc_line break endif let doc_line -= 1 endwhile endif let classcontent = join(getline(cfline, class_closing_bracket_line), "\n") let used_traits = [] call cursor(endline + 1, 1) let keep_searching = 1 while keep_searching != 0 let [lnum, col] = searchpos('\c^\s\+use\s\+'.class_name_pattern, 'cW', class_closing_bracket_line) let syn_name = synIDattr(synID(lnum, col, 0), "name") if syn_name =~? 'string\|comment' call cursor(lnum + 1, 1) continue endif let trait_line = getline(lnum) if trait_line !~? ';' let l = lnum let search_line = trait_line while search_line !~? ';' && l > 0 let l += 1 let search_line = getline(l) let trait_line .= ' '.substitute(search_line, '\(^\s\+\|\s\+$\)', '', 'g') endwhile endif let use_expression = matchstr(trait_line, '^\s*use\s\+\zs.\{-}\ze;') let use_parts = map(split(use_expression, '\s*,\s*'), 'substitute(v:val, "\\s+", " ", "g")') let used_traits += map(use_parts, 'substitute(v:val, "\\s", "", "g")') call cursor(lnum + 1, 1) if [lnum, col] == [0, 0] let keep_searching = 0 endif endwhile silent! bw! % let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(a:file_lines[0:cfline]) exe phpcomplete_original_window.'wincmd w' call add(result, { \ 'class': a:class_name, \ 'content': classcontent, \ 'namespace': current_namespace, \ 'imports': imports, \ 'file': full_file_path, \ 'mtime': getftime(full_file_path), \ }) let all_extends = used_traits if len(extended_classes) > 0 call extend(all_extends, extended_classes) endif if len(implemented_interfaces) > 0 call extend(all_extends, implemented_interfaces) endif if len(all_extends) > 0 for class in all_extends let [class, namespace] = phpcomplete#ExpandClassName(class, current_namespace, imports) if namespace == '' let namespace = '\' endif let classlocation = phpcomplete#GetClassLocation(class, namespace) if classlocation == "VIMPHP_BUILTINOBJECT" if has_key(g:php_builtin_classes, tolower(class)) let result += [phpcomplete#GenerateBuiltinClassStub('class', g:php_builtin_classes[tolower(class)])] endif if has_key(g:php_builtin_interfaces, tolower(class)) let result += [phpcomplete#GenerateBuiltinClassStub('interface', g:php_builtin_interfaces[tolower(class)])] endif elseif classlocation != '' && filereadable(classlocation) let full_file_path = fnamemodify(classlocation, ':p') let result += phpcomplete#GetClassContentsStructure(full_file_path, readfile(full_file_path), class) elseif tolower(current_namespace) == tolower(namespace) && match(join(a:file_lines, "\n"), '\c\(class\|interface\|trait\)\_s\+'.class.'\(\>\|$\)') != -1 let result += phpcomplete#GetClassContentsStructure(full_file_path, a:file_lines, class) endif endfor endif return result endfunction function! phpcomplete#GetClassContents(classlocation, class_name) " {{{ let classcontents = phpcomplete#GetCachedClassContents(a:classlocation, a:class_name) let result = [] for classstructure in classcontents call add(result, classstructure.content) endfor return join(result, "\n") endfunction function! phpcomplete#GenerateBuiltinClassStub(type, class_info) " {{{ let re = a:type.' '.a:class_info['name']." {" if has_key(a:class_info, 'constants') for [name, initializer] in items(a:class_info.constants) let re .= "\n\tconst ".name." = ".initializer.";" endfor endif if has_key(a:class_info, 'properties') for [name, info] in items(a:class_info.properties) let re .= "\n\t// @var $".name." ".info.type let re .= "\n\tpublic $".name.";" endfor endif if has_key(a:class_info, 'static_properties') for [name, info] in items(a:class_info.static_properties) let re .= "\n\t// @var ".name." ".info.type let re .= "\n\tpublic static ".name." = ".info.initializer.";" endfor endif if has_key(a:class_info, 'methods') for [name, info] in items(a:class_info.methods) if name =~ '^__' continue endif let re .= "\n\t/**" let re .= "\n\t * ".name let re .= "\n\t *" let re .= "\n\t * @return ".info.return_type let re .= "\n\t */" let re .= "\n\tpublic function ".name."(".info.signature."){" let re .= "\n\t}" endfor endif if has_key(a:class_info, 'static_methods') for [name, info] in items(a:class_info.static_methods) let re .= "\n\t/**" let re .= "\n\t * ".name let re .= "\n\t *" let re .= "\n\t * @return ".info.return_type let re .= "\n\t */" let re .= "\n\tpublic static function ".name."(".info.signature."){" let re .= "\n\t}" endfor endif let re .= "\n}" return { a:type : a:class_info['name'], \ 'content': re, \ 'namespace': '', \ 'imports': {}, \ 'file': 'VIMPHP_BUILTINOBJECT', \ 'mtime': 0, \ } endfunction " }}} function! phpcomplete#GetDocBlock(sccontent, search) " {{{ let i = 0 let l = 0 let comment_start = -1 let comment_end = -1 let sccontent_len = len(a:sccontent) while (i < sccontent_len) let line = a:sccontent[i] if line =~? a:search if line =~? '@property' let doc_line = i while doc_line != sccontent_len - 1 if a:sccontent[doc_line] =~? '^\s*\*/' let l = doc_line break endif let doc_line += 1 endwhile else let l = i - 1 endif while l != 0 let line = a:sccontent[l] if line =~? '^\s*\/\*\*.\+\*\/\s*$' return substitute(line, '\v^\s*(\/\*\*\s*)|(\s*\*\/)\s*$', '', 'g') elseif line =~? '^\s*\*/' let comment_end = l break elseif line !~? '^\s*$' break endif let l -= 1 endwhile if comment_end == -1 return '' end while l >= 0 let line = a:sccontent[l] if line =~? '^\s*/\*\*' let comment_start = l break endif let l -= 1 endwhile if comment_start == -1 return '' end let comment_start += 1 " we dont need the /** let comment_end -= 1 " we dont need the */ let docblock = join(map(copy(a:sccontent[comment_start :comment_end]), 'substitute(v:val, "^\\s*\\*\\s*", "", "")'), "\n") return docblock endif let i += 1 endwhile return '' endfunction function! phpcomplete#ParseDocBlock(docblock) " {{{ let res = { \ 'description': '', \ 'params': [], \ 'return': {}, \ 'throws': [], \ 'var': {}, \ 'properties': [], \ } let res.description = substitute(matchstr(a:docblock, '\zs\_.\{-}\ze\(@type\|@var\|@param\|@return\|$\)'), '\(^\_s*\|\_s*$\)', '', 'g') let docblock_lines = split(a:docblock, "\n") let param_lines = filter(copy(docblock_lines), 'v:val =~? "^@param"') for param_line in param_lines let parts = matchlist(param_line, '@param\s\+\(\S\+\)\s\+\(\S\+\)\s*\(.*\)') if len(parts) > 0 call add(res.params, { \ 'line': parts[0], \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(parts, 1, '')), \ 'name': get(parts, 2, ''), \ 'description': get(parts, 3, '')}) endif endfor let return_line = filter(copy(docblock_lines), 'v:val =~? "^@return"') if len(return_line) > 0 let return_parts = matchlist(return_line[0], '@return\s\+\(\S\+\)\s*\(.*\)') let res['return'] = { \ 'line': return_parts[0], \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(return_parts, 1, '')), \ 'description': get(return_parts, 2, '')} endif let exception_lines = filter(copy(docblock_lines), 'v:val =~? "^\\(@throws\\|@exception\\)"') for exception_line in exception_lines let parts = matchlist(exception_line, '^\(@throws\|@exception\)\s\+\(\S\+\)\s*\(.*\)') if len(parts) > 0 call add(res.throws, { \ 'line': parts[0], \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(parts, 2, '')), \ 'description': get(parts, 3, '')}) endif endfor let var_line = filter(copy(docblock_lines), 'v:val =~? "^\\(@var\\|@type\\)"') if len(var_line) > 0 let var_parts = matchlist(var_line[0], '\(@var\|@type\)\s\+\(\S\+\)\s*\(.*\)') let res['var'] = { \ 'line': var_parts[0], \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(var_parts, 2, '')), \ 'description': get(var_parts, 3, '')} endif let property_lines = filter(copy(docblock_lines), 'v:val =~? "^@property"') for property_line in property_lines let parts = matchlist(property_line, '\(@property\)\s\+\(\S\+\)\s*\(.*\)') if len(parts) > 0 call add(res.properties, { \ 'line': parts[0], \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(parts, 2, '')), \ 'description': get(parts, 3, '')}) endif endfor return res endfunction function! phpcomplete#GetFunctionReturnTypeHint(sccontent, search) let i = 0 let l = 0 let function_line_start = -1 let function_line_end = -1 let sccontent_len = len(a:sccontent) let return_type = '' while (i < sccontent_len) let line = a:sccontent[i] if line =~? a:search let l = i let function_line_start = i while l < sccontent_len let line = a:sccontent[l] if line =~? '\V{' let function_line_end = l break endif let l += 1 endwhile break endif let i += 1 endwhile if function_line_start != -1 && function_line_end != -1 let function_line = join(a:sccontent[function_line_start :function_line_end], " ") let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let return_type = matchstr(function_line, '\c\s*:\s*\zs'.class_name_pattern.'\ze\s*{') endif return return_type endfunction function! phpcomplete#GetTypeFromDocBlockParam(docblock_type) " {{{ if a:docblock_type !~ '|' return a:docblock_type endif let primitive_types = [ \ 'string', 'float', 'double', 'int', \ 'scalar', 'array', 'bool', 'void', 'mixed', \ 'null', 'callable', 'resource', 'object'] let primitive_types += map(copy(primitive_types), 'v:val."[]"') let types = split(a:docblock_type, '|') for type in types if index(primitive_types, type) == -1 return type endif endfor return types[0] endfunction function! phpcomplete#FormatDocBlock(info) " {{{ let res = '' if len(a:info.description) let res .= "Description:\n".join(map(split(a:info['description'], "\n"), '"\t".v:val'), "\n")."\n" endif if len(a:info.params) let res .= "\nArguments:\n" for arginfo in a:info.params let res .= "\t".arginfo['name'].' '.arginfo['type'] if len(arginfo.description) > 0 let res .= ': '.arginfo['description'] endif let res .= "\n" endfor endif if has_key(a:info.return, 'type') let res .= "\nReturn:\n\t".a:info['return']['type'] if len(a:info.return.description) > 0 let res .= ": ".a:info['return']['description'] endif let res .= "\n" endif if len(a:info.throws) let res .= "\nThrows:\n" for excinfo in a:info.throws let res .= "\t".excinfo['type'] if len(excinfo['description']) > 0 let res .= ": ".excinfo['description'] endif let res .= "\n" endfor endif if has_key(a:info.var, 'type') let res .= "Type:\n\t".a:info['var']['type']."\n" if len(a:info['var']['description']) > 0 let res .= ': '.a:info['var']['description'] endif endif return res endfunction! function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{ let original_window = winnr() silent! below 1new silent! 0put =a:file_lines normal! G while 1 let block_start_pos = searchpos('\c\(class\|trait\|function\|interface\)\s\+\_.\{-}\zs{', 'Web') if block_start_pos == [0, 0] break endif let block_end_pos = searchpairpos('{', '', '}\|\%$', 'W', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') if block_end_pos != [0, 0] silent! exec block_start_pos[0].','.block_end_pos[0].'d _' else silent! exec block_start_pos[0].',$d _' endif endwhile normal! G let file_lines = reverse(getline(1, line('.') - 1)) silent! bw! % exe original_window.'wincmd w' let namespace_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let i = 0 let file_length = len(file_lines) let imports = {} let current_namespace = '\' while i < file_length let line = file_lines[i] if line =~? '^\(' if line =~? ';' let use_line = line else let l = i let search_line = line let use_line = line while search_line !~? ';' && l > 0 let l -= 1 let search_line = file_lines[l] let use_line .= ' '.substitute(search_line, '\(^\s\+\|\s\+$\)', '', 'g') endwhile endif let use_expression = matchstr(use_line, '^\c\s*use\s\+\zs.\{-}\ze;') let use_parts = map(split(use_expression, '\s*,\s*'), 'substitute(v:val, "\\s+", " ", "g")') for part in use_parts if part =~? '\s\+as\s\+' let [object, name] = split(part, '\s\+as\s\+\c') let object = substitute(object, '^\\', '', '') let name = substitute(name, '^\\', '', '') else let object = part let name = part let object = substitute(object, '^\\', '', '') let name = substitute(name, '^\\', '', '') if name =~? '\\' let name = matchstr(name, '\\\zs[^\\]\+\ze$') endif endif let imports[name] = {'name': object, 'kind': ''} endfor for [key, import] in items(imports) if import.name =~ '\\' let patched_ctags_detected = 0 let [classname, namespace_for_classes] = phpcomplete#ExpandClassName(import.name, '\', {}) let namespace_name_candidate = substitute(import.name, '\\', '\\\\', 'g') let tags = phpcomplete#GetTaglist('^\('.namespace_name_candidate.'\|'.classname.'\)$') if len(tags) > 0 for tag in tags if tag.kind == 'n' && tag.name == import.name call extend(import, tag) let import['builtin'] = 0 let patched_ctags_detected = 1 break endif if (tag.kind == 'c' || tag.kind == 'i' || tag.kind == 't') && tag.name == classname if has_key(tag, 'namespace') let patched_ctags_detected = 1 if tag.namespace == namespace_for_classes call extend(import, tag) let import['builtin'] = 0 break endif elseif !exists('no_namespace_candidate') let tag.namespace = namespace_for_classes let no_namespace_candidate = tag endif endif endfor if exists('no_namespace_candidate') && !patched_ctags_detected call extend(import, no_namespace_candidate) let import['builtin'] = 0 endif else let ns = matchstr(import.name, '\c\zs[a-zA-Z0-9\\]\+\ze\\' . name) if len(ns) > 0 let import['name'] = name let import['namespace'] = ns let import['builtin'] = 0 endif endif else if has_key(g:php_builtin_classnames, tolower(import.name)) let import['kind'] = 'c' let import['builtin'] = 1 elseif has_key(g:php_builtin_interfacenames, tolower(import.name)) let import['kind'] = 'i' let import['builtin'] = 1 else let tags = phpcomplete#GetTaglist('^'.import['name'].'$') for tag in tags if !has_key(tag, 'namespace') && (tag.kind == 'n' || tag.kind == 'c' || tag.kind == 'i' || tag.kind == 't') call extend(import, tag) let import['builtin'] = 0 break endif endfor endif endif if exists('no_namespace_candidate') unlet no_namespace_candidate endif endfor endif let i += 1 endwhile let sorted_imports = {} for name in sort(keys(imports)) let sorted_imports[name] = imports[name] endfor return [current_namespace, sorted_imports] endfunction function! phpcomplete#GetCurrentFunctionBoundaries() " {{{ let old_cursor_pos = [line('.'), col('.')] let current_line_no = old_cursor_pos[0] let function_pattern = '\c\(.*\%#\)\@!\_^\s*\zs\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\_.\{-}(\_.\{-})\_.\{-}{' let func_start_pos = searchpos(function_pattern, 'Wbc') if func_start_pos == [0, 0] call cursor(old_cursor_pos[0], old_cursor_pos[1]) return 0 endif call search('\cfunction\_.\{-}(\_.\{-})\_.\{-}{', 'Wce') let func_end_pos = searchpairpos('{', '', '}', 'W') if func_end_pos == [0, 0] let func_end_pos = [line('$'), len(getline(line('$')))] endif if func_start_pos[0] <= current_line_no && current_line_no <= func_end_pos[0] call cursor(old_cursor_pos[0], old_cursor_pos[1]) return [func_start_pos, func_end_pos] endif call cursor(old_cursor_pos[0], old_cursor_pos[1]) return 0 endfunction function! phpcomplete#ExpandClassName(classname, current_namespace, imports) " {{{ if has_key(a:imports, a:classname) && (a:imports[a:classname].kind == 'c' || a:imports[a:classname].kind == 'i' || a:imports[a:classname].kind == 't') let namespace = has_key(a:imports[a:classname], 'namespace') ? a:imports[a:classname].namespace : '' return [a:imports[a:classname].name, namespace] endif if a:classname !~ '^\' && a:classname =~ '\\' let classname_parts = split(a:classname, '\\\+') if has_key(a:imports, classname_parts[0]) && a:imports[classname_parts[0]].kind == 'n' let classname_parts[0] = a:imports[classname_parts[0]].name let namespace = join(classname_parts[0:-2], '\') let classname = classname_parts[-1] return [classname, namespace] endif endif let namespace = '' let classname = a:classname if a:classname =~ '\\' || (a:current_namespace != '\' && a:current_namespace != '') if a:classname !~ '^\' let classname = a:current_namespace.'\'.substitute(a:classname, '^\\', '', '') else let classname = substitute(a:classname, '^\\', '', '') endif let classname_parts = split(classname, '\\\+') if len(classname_parts) > 1 let namespace = join(classname_parts[0:-2], '\') let classname = classname_parts[-1] endif endif return [classname, namespace] endfunction function! phpcomplete#LoadData() " {{{ let g:php_keywords={'PHP_SELF':'','argv':'','argc':'','GATEWAY_INTERFACE':'','SERVER_ADDR':'','SERVER_NAME':'','SERVER_SOFTWARE':'','SERVER_PROTOCOL':'','REQUEST_METHOD':'','REQUEST_TIME':'','QUERY_STRING':'','DOCUMENT_ROOT':'','HTTP_ACCEPT':'','HTTP_ACCEPT_CHARSET':'','HTTP_ACCEPT_ENCODING':'','HTTP_ACCEPT_LANGUAGE':'','HTTP_CONNECTION':'','HTTP_POST':'','HTTP_REFERER':'','HTTP_USER_AGENT':'','HTTPS':'','REMOTE_ADDR':'','REMOTE_HOST':'','REMOTE_PORT':'','SCRIPT_FILENAME':'','SERVER_ADMIN':'','SERVER_PORT':'','SERVER_SIGNATURE':'','PATH_TRANSLATED':'','SCRIPT_NAME':'','REQUEST_URI':'','PHP_AUTH_DIGEST':'','PHP_AUTH_USER':'','PHP_AUTH_PW':'','AUTH_TYPE':'','and':'','or':'','xor':'','__FILE__':'','exception':'','__LINE__':'','as':'','break':'','case':'','class':'','const':'','continue':'','declare':'','default':'','do':'','echo':'','else':'','elseif':'','enddeclare':'','endfor':'','endforeach':'','endif':'','endswitch':'','endwhile':'','extends':'','for':'','foreach':'','function':'','global':'','if':'','new':'','static':'','switch':'','use':'','var':'','while':'','final':'','php_user_filter':'','interface':'','implements':'','public':'','private':'','protected':'','abstract':'','clone':'','try':'','catch':'','throw':'','cfunction':'','old_function':'','this':'','INI_USER': '','INI_PERDIR': '','INI_SYSTEM': '','INI_ALL': '','ABDAY_1': '','ABDAY_2': '','ABDAY_3': '','ABDAY_4': '','ABDAY_5': '','ABDAY_6': '','ABDAY_7': '','DAY_1': '','DAY_2': '','DAY_3': '','DAY_4': '','DAY_5': '','DAY_6': '','DAY_7': '','ABMON_1': '','ABMON_2': '','ABMON_3': '','ABMON_4': '','ABMON_5': '','ABMON_6': '','ABMON_7': '','ABMON_8': '','ABMON_9': '','ABMON_10': '','ABMON_11': '','ABMON_12': '','MON_1': '','MON_2': '','MON_3': '','MON_4': '','MON_5': '','MON_6': '','MON_7': '','MON_8': '','MON_9': '','MON_10': '','MON_11': '','MON_12': '','AM_STR': '','D_T_FMT': '','ALT_DIGITS': '',} let g:php_builtin_functions = {} let g:php_builtin_classes = {} let g:php_builtin_interfaces = {} let g:php_constants = {} let g:php_builtin_object_functions = {} let g:php_builtin_classnames = {} let required_class_hash_keys = ['constants', 'properties', 'static_properties', 'methods', 'static_methods'] let g:php_builtin_interfacenames = {} let php_control = { \ 'include(': 'string filename | resource', \ 'include_once(': 'string filename | resource', \ 'require(': 'string filename | resource', \ 'require_once(': 'string filename | resource', \ } call extend(g:php_builtin_functions, php_control) let g:php_builtin_vars ={ \ '$GLOBALS':'', \ '$_SERVER':'', \ '$_GET':'', \ '$_POST':'', \ '$_COOKIE':'', \ '$_FILES':'', \ '$_ENV':'', \ '$_REQUEST':'', \ '$_SESSION':'', \ '$HTTP_SERVER_VARS':'', \ '$HTTP_ENV_VARS':'', \ '$HTTP_COOKIE_VARS':'', \ '$HTTP_GET_VARS':'', \ '$HTTP_POST_VARS':'', \ '$HTTP_POST_FILES':'', \ '$HTTP_SESSION_VARS':'', \ '$php_errormsg':'', \ '$this':'', \ } endfunction if !has('python3') echo "Error: Required vim compiled with +python3" finish endif function! python3complete#Complete(findstart, base) if a:findstart == 1 let line = getline('.') let idx = col('.') while idx > 0 let idx -= 1 let c = line[idx] if c =~ '\w' continue elseif ! c =~ '\.' let idx = -1 break else break endif endwhile return idx else let line = getline('.') let idx = col('.') let cword = '' while idx > 0 let idx -= 1 let c = line[idx] if c =~ '\w' || c =~ '\.' let cword = c . cword continue elseif strlen(cword) > 0 || idx == 0 break endif endwhile execute "py3 vimpy3complete('" . cword . "', '" . a:base . "')" return g:python3complete_completions endif endfunction function! s:DefPython() py3 << PYTHONEOF import sys, tokenize, io, types from token import NAME, DEDENT, NEWLINE, STRING debugstmts=[] def dbg(s): debugstmts.append(s) def showdbg(): for d in debugstmts: print("DBG: %s " % d) def vimpy3complete(context,match): global debugstmts debugstmts = [] try: import vim cmpl = Completer() cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')")) all = cmpl.get_completions(context,match) all.sort(key=lambda x:x['abbr'].replace('_','z')) dictstr = '[' # have to do this for double quoting for cmpl in all: dictstr += '{' for x in cmpl: dictstr += '"%s":"%s",' % (x,cmpl[x]) dictstr += '"icase":0},' if dictstr[-1] == ',': dictstr = dictstr[:-1] dictstr += ']' #dbg("dict: %s" % dictstr) vim.command("silent let g:python3complete_completions = %s" % dictstr) #dbg("Completion dict:\n%s" % all) except vim.error: dbg("VIM Error: %s" % vim.error) class Completer(object): def __init__(self): self.compldict = {} self.parser = PyParser() def evalsource(self,text,line=0): sc = self.parser.parse(text,line) src = sc.get_code() dbg("source: %s" % src) try: exec(src,self.compldict) except: dbg("parser: %s, %s" % (sys.exc_info()[0],sys.exc_info()[1])) for l in sc.locals: try: exec(l,self.compldict) except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l)) def _cleanstr(self,doc): return doc.replace('"',' ').replace("'",' ') def get_arguments(self,func_obj): def _ctor(class_ob): try: return class_ob.__init__ except AttributeError: for base in class_ob.__bases__: rc = _ctor(base) if rc is not None: return rc return None arg_offset = 1 if type(func_obj) == type: func_obj = _ctor(func_obj) elif type(func_obj) == types.MethodType: arg_offset = 1 else: arg_offset = 0 arg_text='' if type(func_obj) in [types.FunctionType, types.LambdaType,types.MethodType]: try: cd = func_obj.__code__ real_args = cd.co_varnames[arg_offset:cd.co_argcount] defaults = func_obj.__defaults__ or [] defaults = ["=%s" % name for name in defaults] defaults = [""] * (len(real_args)-len(defaults)) + defaults items = [a+d for a,d in zip(real_args,defaults)] if func_obj.__code__.co_flags & 0x4: items.append("...") if func_obj.__code__.co_flags & 0x8: items.append("***") arg_text = (','.join(items)) + ')' except: dbg("arg completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1])) pass if len(arg_text) == 0: # The doc string sometimes contains the function signature # this works for alot of C modules that are part of the # standard library doc = func_obj.__doc__ if doc: doc = doc.lstrip() pos = doc.find('\n') if pos > 0: sigline = doc[:pos] lidx = sigline.find('(') ridx = sigline.find(')') if lidx > 0 and ridx > 0: arg_text = sigline[lidx+1:ridx] + ')' if len(arg_text) == 0: arg_text = ')' return arg_text def get_completions(self,context,match): #dbg("get_completions('%s','%s')" % (context,match)) stmt = '' if context: stmt += str(context) if match: stmt += str(match) try: result = None all = {} ridx = stmt.rfind('.') if len(stmt) > 0 and stmt[-1] == '(': result = eval(_sanitize(stmt[:-1]), self.compldict) doc = result.__doc__ if doc is None: doc = '' args = self.get_arguments(result) return [{'word':self._cleanstr(args),'info':self._cleanstr(doc)}] elif ridx == -1: match = stmt all = self.compldict else: match = stmt[ridx+1:] stmt = _sanitize(stmt[:ridx]) result = eval(stmt, self.compldict) all = dir(result) dbg("completing: stmt:%s" % stmt) completions = [] try: maindoc = result.__doc__ except: maindoc = ' ' if maindoc is None: maindoc = ' ' for m in all: if m == "_PyCmplNoType": continue #this is internal try: dbg('possible completion: %s' % m) if m.find(match) == 0: if result is None: inst = all[m] else: inst = getattr(result,m) try: doc = inst.__doc__ except: doc = maindoc typestr = str(inst) if doc is None or doc == '': doc = maindoc wrd = m[len(match):] c = {'word':wrd, 'abbr':m, 'info':self._cleanstr(doc)} if "function" in typestr: c['word'] += '(' c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) elif "method" in typestr: c['word'] += '(' c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) elif "module" in typestr: c['word'] += '.' elif "type" in typestr: c['word'] += '(' c['abbr'] += '(' completions.append(c) except: i = sys.exc_info() dbg("inner completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt)) return completions except: i = sys.exc_info() dbg("completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt)) return [] class Scope(object): def __init__(self,name,indent,docstr=''): self.subscopes = [] self.docstr = docstr self.locals = [] self.parent = None self.name = name self.indent = indent def add(self,sub): #print('push scope: [%s@%s]' % (sub.name,sub.indent)) sub.parent = self self.subscopes.append(sub) return sub def doc(self,str): d = str.replace('\n',' ') d = d.replace('\t',' ') while d.find(' ') > -1: d = d.replace(' ',' ') while d[0] in '"\'\t ': d = d[1:] while d[-1] in '"\'\t ': d = d[:-1] dbg("Scope(%s)::docstr = %s" % (self,d)) self.docstr = d def local(self,loc): self._checkexisting(loc) self.locals.append(loc) def copy_decl(self,indent=0): return Scope(self.name,indent,self.docstr) def _checkexisting(self,test): if test.find('=') > -1: var = test.split('=')[0].strip() for l in self.locals: if l.find('=') > -1 and var == l.split('=')[0].strip(): self.locals.remove(l) def get_code(self): str = "" if len(self.docstr) > 0: str += '"""'+self.docstr+'"""\n' for l in self.locals: if l.startswith('import'): str += l+'\n' str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n' for sub in self.subscopes: str += sub.get_code() for l in self.locals: if not l.startswith('import'): str += l+'\n' return str def pop(self,indent): #print('pop scope: [%s] to [%s]' % (self.indent,indent)) outer = self while outer.parent != None and outer.indent >= indent: outer = outer.parent return outer def currentindent(self): #print('parse current indent: %s' % self.indent) return ' '*self.indent def childindent(self): #print('parse child indent: [%s]' % (self.indent+1)) return ' '*(self.indent+1) class Class(Scope): def __init__(self, name, supers, indent, docstr=''): Scope.__init__(self,name,indent, docstr) self.supers = supers def copy_decl(self,indent=0): c = Class(self.name,self.supers,indent, self.docstr) for s in self.subscopes: c.add(s.copy_decl(indent+1)) return c def get_code(self): str = '%sclass %s' % (self.currentindent(),self.name) if len(self.supers) > 0: str += '(%s)' % ','.join(self.supers) str += ':\n' if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n' if len(self.subscopes) > 0: for s in self.subscopes: str += s.get_code() else: str += '%spass\n' % self.childindent() return str class Function(Scope): def __init__(self, name, params, indent, docstr=''): Scope.__init__(self,name,indent, docstr) self.params = params def copy_decl(self,indent=0): return Function(self.name,self.params,indent, self.docstr) def get_code(self): str = "%sdef %s(%s):\n" % \ (self.currentindent(),self.name,','.join(self.params)) if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n' str += "%spass\n" % self.childindent() return str class PyParser: def __init__(self): self.top = Scope('global',0) self.scope = self.top self.parserline = 0 def _parsedotname(self,pre=None): #returns (dottedname, nexttoken) name = [] if pre is None: tokentype, token, indent = self.donext() if tokentype != NAME and token != '*': return ('', token) else: token = pre name.append(token) while True: tokentype, token, indent = self.donext() if token != '.': break tokentype, token, indent = self.donext() if tokentype != NAME: break name.append(token) return (".".join(name), token) def _parseimportlist(self): imports = [] while True: name, token = self._parsedotname() if not name: break name2 = '' if token == 'as': name2, token = self._parsedotname() imports.append((name, name2)) while token != "," and "\n" not in token: tokentype, token, indent = self.donext() if token != ",": break return imports def _parenparse(self): name = '' names = [] level = 1 while True: tokentype, token, indent = self.donext() if token in (')', ',') and level == 1: if '=' not in name: name = name.replace(' ', '') names.append(name.strip()) name = '' if token == '(': level += 1 name += "(" elif token == ')': level -= 1 if level == 0: break else: name += ")" elif token == ',' and level == 1: pass else: name += "%s " % str(token) return names def _parsefunction(self,indent): self.scope=self.scope.pop(indent) tokentype, fname, ind = self.donext() if tokentype != NAME: return None tokentype, open, ind = self.donext() if open != '(': return None params=self._parenparse() tokentype, colon, ind = self.donext() if colon != ':': return None return Function(fname,params,indent) def _parseclass(self,indent): self.scope=self.scope.pop(indent) tokentype, cname, ind = self.donext() if tokentype != NAME: return None super = [] tokentype, thenext, ind = self.donext() if thenext == '(': super=self._parenparse() elif thenext != ':': return None return Class(cname,super,indent) def _parseassignment(self): assign='' tokentype, token, indent = self.donext() if tokentype == tokenize.STRING or token == 'str': return '""' elif token == '(' or token == 'tuple': return '()' elif token == '[' or token == 'list': return '[]' elif token == '{' or token == 'dict': return '{}' elif tokentype == tokenize.NUMBER: return '0' elif token == 'open' or token == 'file': return 'file' elif token == 'None': return '_PyCmplNoType()' elif token == 'type': return 'type(_PyCmplNoType)' #only for method resolution else: assign += token level = 0 while True: tokentype, token, indent = self.donext() if token in ('(','{','['): level += 1 elif token in (']','}',')'): level -= 1 if level == 0: break elif level == 0: if token in (';','\n'): break assign += token return "%s" % assign def donext(self): type, token, (lineno, indent), end, self.parserline = next(self.gen) if lineno == self.curline: #print('line found [%s] scope=%s' % (line.replace('\n',''),self.scope.name)) self.currentscope = self.scope return (type, token, indent) def _adjustvisibility(self): newscope = Scope('result',0) scp = self.currentscope while scp != None: if type(scp) == Function: slice = 0 #Handle 'self' params if scp.parent != None and type(scp.parent) == Class: slice = 1 newscope.local('%s = %s' % (scp.params[0],scp.parent.name)) for p in scp.params[slice:]: i = p.find('=') if len(p) == 0: continue pvar = '' ptype = '' if i == -1: pvar = p ptype = '_PyCmplNoType()' else: pvar = p[:i] ptype = _sanitize(p[i+1:]) if pvar.startswith('**'): pvar = pvar[2:] ptype = '{}' elif pvar.startswith('*'): pvar = pvar[1:] ptype = '[]' newscope.local('%s = %s' % (pvar,ptype)) for s in scp.subscopes: ns = s.copy_decl(0) newscope.add(ns) for l in scp.locals: newscope.local(l) scp = scp.parent self.currentscope = newscope return self.currentscope #p.parse(vim.current.buffer[:],vim.eval("line('.')")) def parse(self,text,curline=0): self.curline = int(curline) buf = io.StringIO(''.join(text) + '\n') self.gen = tokenize.generate_tokens(buf.readline) self.currentscope = self.scope try: freshscope=True while True: tokentype, token, indent = self.donext() #dbg( 'main: token=[%s] indent=[%s]' % (token,indent)) if tokentype == DEDENT or token == "pass": self.scope = self.scope.pop(indent) elif token == 'def': func = self._parsefunction(indent) if func is None: print("function: syntax error...") continue dbg("new scope: function") freshscope = True self.scope = self.scope.add(func) elif token == 'class': cls = self._parseclass(indent) if cls is None: print("class: syntax error...") continue freshscope = True dbg("new scope: class") self.scope = self.scope.add(cls) elif token == 'import': imports = self._parseimportlist() for mod, alias in imports: loc = "import %s" % mod if len(alias) > 0: loc += " as %s" % alias self.scope.local(loc) freshscope = False elif token == 'from': mod, token = self._parsedotname() if not mod or token != "import": print("from: syntax error...") continue names = self._parseimportlist() for name, alias in names: loc = "from %s import %s" % (mod,name) if len(alias) > 0: loc += " as %s" % alias self.scope.local(loc) freshscope = False elif tokentype == STRING: if freshscope: self.scope.doc(token) elif tokentype == NAME: name,token = self._parsedotname(token) if token == '=': stmt = self._parseassignment() dbg("parseassignment: %s = %s" % (name, stmt)) if stmt != None: self.scope.local("%s = %s" % (name,stmt)) freshscope = False except StopIteration: #thrown on EOF pass except: dbg("parse error: %s, %s @ %s" % (sys.exc_info()[0], sys.exc_info()[1], self.parserline)) return self._adjustvisibility() def _sanitize(str): val = '' level = 0 for c in str: if c in ('(','{','['): level += 1 elif c in (']','}',')'): level -= 1 elif level == 0: val += c return val sys.path.extend(['.','..']) PYTHONEOF endfunction call s:DefPython() if !has('python') echo "Error: Required vim compiled with +python" finish endif function! pythoncomplete#Complete(findstart, base) if a:findstart == 1 let line = getline('.') let idx = col('.') while idx > 0 let idx -= 1 let c = line[idx] if c =~ '\w' continue elseif ! c =~ '\.' let idx = -1 break else break endif endwhile return idx else let line = getline('.') let idx = col('.') let cword = '' while idx > 0 let idx -= 1 let c = line[idx] if c =~ '\w' || c =~ '\.' let cword = c . cword continue elseif strlen(cword) > 0 || idx == 0 break endif endwhile execute "python vimcomplete('" . cword . "', '" . a:base . "')" return g:pythoncomplete_completions endif endfunction function! s:DefPython() python << PYTHONEOF import sys, tokenize, cStringIO, types from token import NAME, DEDENT, NEWLINE, STRING debugstmts=[] def dbg(s): debugstmts.append(s) def showdbg(): for d in debugstmts: print "DBG: %s " % d def vimcomplete(context,match): global debugstmts debugstmts = [] try: import vim def complsort(x,y): try: xa = x['abbr'] ya = y['abbr'] if xa[0] == '_': if xa[1] == '_' and ya[0:2] == '__': return xa > ya elif ya[0:2] == '__': return -1 elif y[0] == '_': return xa > ya else: return 1 elif ya[0] == '_': return -1 else: return xa > ya except: return 0 cmpl = Completer() cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')")) all = cmpl.get_completions(context,match) all.sort(complsort) dictstr = '[' # have to do this for double quoting for cmpl in all: dictstr += '{' for x in cmpl: dictstr += '"%s":"%s",' % (x,cmpl[x]) dictstr += '"icase":0},' if dictstr[-1] == ',': dictstr = dictstr[:-1] dictstr += ']' #dbg("dict: %s" % dictstr) vim.command("silent let g:pythoncomplete_completions = %s" % dictstr) #dbg("Completion dict:\n%s" % all) except vim.error: dbg("VIM Error: %s" % vim.error) class Completer(object): def __init__(self): self.compldict = {} self.parser = PyParser() def evalsource(self,text,line=0): sc = self.parser.parse(text,line) src = sc.get_code() dbg("source: %s" % src) try: exec(src) in self.compldict except: dbg("parser: %s, %s" % (sys.exc_info()[0],sys.exc_info()[1])) for l in sc.locals: try: exec(l) in self.compldict except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l)) def _cleanstr(self,doc): return doc.replace('"',' ').replace("'",' ') def get_arguments(self,func_obj): def _ctor(obj): try: return class_ob.__init__.im_func except AttributeError: for base in class_ob.__bases__: rc = _find_constructor(base) if rc is not None: return rc return None arg_offset = 1 if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj) elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func else: arg_offset = 0 arg_text='' if type(func_obj) in [types.FunctionType, types.LambdaType]: try: cd = func_obj.func_code real_args = cd.co_varnames[arg_offset:cd.co_argcount] defaults = func_obj.func_defaults or '' defaults = map(lambda name: "=%s" % name, defaults) defaults = [""] * (len(real_args)-len(defaults)) + defaults items = map(lambda a,d: a+d, real_args, defaults) if func_obj.func_code.co_flags & 0x4: items.append("...") if func_obj.func_code.co_flags & 0x8: items.append("***") arg_text = (','.join(items)) + ')' except: dbg("arg completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1])) pass if len(arg_text) == 0: # The doc string sometimes contains the function signature # this works for alot of C modules that are part of the # standard library doc = func_obj.__doc__ if doc: doc = doc.lstrip() pos = doc.find('\n') if pos > 0: sigline = doc[:pos] lidx = sigline.find('(') ridx = sigline.find(')') if lidx > 0 and ridx > 0: arg_text = sigline[lidx+1:ridx] + ')' if len(arg_text) == 0: arg_text = ')' return arg_text def get_completions(self,context,match): dbg("get_completions('%s','%s')" % (context,match)) stmt = '' if context: stmt += str(context) if match: stmt += str(match) try: result = None all = {} ridx = stmt.rfind('.') if len(stmt) > 0 and stmt[-1] == '(': result = eval(_sanitize(stmt[:-1]), self.compldict) doc = result.__doc__ if doc is None: doc = '' args = self.get_arguments(result) return [{'word':self._cleanstr(args),'info':self._cleanstr(doc)}] elif ridx == -1: match = stmt all = self.compldict else: match = stmt[ridx+1:] stmt = _sanitize(stmt[:ridx]) result = eval(stmt, self.compldict) all = dir(result) dbg("completing: stmt:%s" % stmt) completions = [] try: maindoc = result.__doc__ except: maindoc = ' ' if maindoc is None: maindoc = ' ' for m in all: if m == "_PyCmplNoType": continue #this is internal try: dbg('possible completion: %s' % m) if m.find(match) == 0: if result is None: inst = all[m] else: inst = getattr(result,m) try: doc = inst.__doc__ except: doc = maindoc typestr = str(inst) if doc is None or doc == '': doc = maindoc wrd = m[len(match):] c = {'word':wrd, 'abbr':m, 'info':self._cleanstr(doc)} if "function" in typestr: c['word'] += '(' c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) elif "method" in typestr: c['word'] += '(' c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) elif "module" in typestr: c['word'] += '.' elif "class" in typestr: c['word'] += '(' c['abbr'] += '(' completions.append(c) except: i = sys.exc_info() dbg("inner completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt)) return completions except: i = sys.exc_info() dbg("completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt)) return [] class Scope(object): def __init__(self,name,indent,docstr=''): self.subscopes = [] self.docstr = docstr self.locals = [] self.parent = None self.name = name self.indent = indent def add(self,sub): #print 'push scope: [%s@%s]' % (sub.name,sub.indent) sub.parent = self self.subscopes.append(sub) return sub def doc(self,str): d = str.replace('\n',' ') d = d.replace('\t',' ') while d.find(' ') > -1: d = d.replace(' ',' ') while d[0] in '"\'\t ': d = d[1:] while d[-1] in '"\'\t ': d = d[:-1] dbg("Scope(%s)::docstr = %s" % (self,d)) self.docstr = d def local(self,loc): self._checkexisting(loc) self.locals.append(loc) def copy_decl(self,indent=0): return Scope(self.name,indent,self.docstr) def _checkexisting(self,test): if test.find('=') > -1: var = test.split('=')[0].strip() for l in self.locals: if l.find('=') > -1 and var == l.split('=')[0].strip(): self.locals.remove(l) def get_code(self): str = "" if len(self.docstr) > 0: str += '"""'+self.docstr+'"""\n' for l in self.locals: if l.startswith('import'): str += l+'\n' str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n' for sub in self.subscopes: str += sub.get_code() for l in self.locals: if not l.startswith('import'): str += l+'\n' return str def pop(self,indent): #print 'pop scope: [%s] to [%s]' % (self.indent,indent) outer = self while outer.parent != None and outer.indent >= indent: outer = outer.parent return outer def currentindent(self): #print 'parse current indent: %s' % self.indent return ' '*self.indent def childindent(self): #print 'parse child indent: [%s]' % (self.indent+1) return ' '*(self.indent+1) class Class(Scope): def __init__(self, name, supers, indent, docstr=''): Scope.__init__(self,name,indent, docstr) self.supers = supers def copy_decl(self,indent=0): c = Class(self.name,self.supers,indent, self.docstr) for s in self.subscopes: c.add(s.copy_decl(indent+1)) return c def get_code(self): str = '%sclass %s' % (self.currentindent(),self.name) if len(self.supers) > 0: str += '(%s)' % ','.join(self.supers) str += ':\n' if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n' if len(self.subscopes) > 0: for s in self.subscopes: str += s.get_code() else: str += '%spass\n' % self.childindent() return str class Function(Scope): def __init__(self, name, params, indent, docstr=''): Scope.__init__(self,name,indent, docstr) self.params = params def copy_decl(self,indent=0): return Function(self.name,self.params,indent, self.docstr) def get_code(self): str = "%sdef %s(%s):\n" % \ (self.currentindent(),self.name,','.join(self.params)) if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n' str += "%spass\n" % self.childindent() return str class PyParser: def __init__(self): self.top = Scope('global',0) self.scope = self.top self.parserline = 0 def _parsedotname(self,pre=None): #returns (dottedname, nexttoken) name = [] if pre is None: tokentype, token, indent = self.next() if tokentype != NAME and token != '*': return ('', token) else: token = pre name.append(token) while True: tokentype, token, indent = self.next() if token != '.': break tokentype, token, indent = self.next() if tokentype != NAME: break name.append(token) return (".".join(name), token) def _parseimportlist(self): imports = [] while True: name, token = self._parsedotname() if not name: break name2 = '' if token == 'as': name2, token = self._parsedotname() imports.append((name, name2)) while token != "," and "\n" not in token: tokentype, token, indent = self.next() if token != ",": break return imports def _parenparse(self): name = '' names = [] level = 1 while True: tokentype, token, indent = self.next() if token in (')', ',') and level == 1: if '=' not in name: name = name.replace(' ', '') names.append(name.strip()) name = '' if token == '(': level += 1 name += "(" elif token == ')': level -= 1 if level == 0: break else: name += ")" elif token == ',' and level == 1: pass else: name += "%s " % str(token) return names def _parsefunction(self,indent): self.scope=self.scope.pop(indent) tokentype, fname, ind = self.next() if tokentype != NAME: return None tokentype, open, ind = self.next() if open != '(': return None params=self._parenparse() tokentype, colon, ind = self.next() if colon != ':': return None return Function(fname,params,indent) def _parseclass(self,indent): self.scope=self.scope.pop(indent) tokentype, cname, ind = self.next() if tokentype != NAME: return None super = [] tokentype, next, ind = self.next() if next == '(': super=self._parenparse() elif next != ':': return None return Class(cname,super,indent) def _parseassignment(self): assign='' tokentype, token, indent = self.next() if tokentype == tokenize.STRING or token == 'str': return '""' elif token == '(' or token == 'tuple': return '()' elif token == '[' or token == 'list': return '[]' elif token == '{' or token == 'dict': return '{}' elif tokentype == tokenize.NUMBER: return '0' elif token == 'open' or token == 'file': return 'file' elif token == 'None': return '_PyCmplNoType()' elif token == 'type': return 'type(_PyCmplNoType)' #only for method resolution else: assign += token level = 0 while True: tokentype, token, indent = self.next() if token in ('(','{','['): level += 1 elif token in (']','}',')'): level -= 1 if level == 0: break elif level == 0: if token in (';','\n'): break assign += token return "%s" % assign def next(self): type, token, (lineno, indent), end, self.parserline = self.gen.next() if lineno == self.curline: #print 'line found [%s] scope=%s' % (line.replace('\n',''),self.scope.name) self.currentscope = self.scope return (type, token, indent) def _adjustvisibility(self): newscope = Scope('result',0) scp = self.currentscope while scp != None: if type(scp) == Function: slice = 0 #Handle 'self' params if scp.parent != None and type(scp.parent) == Class: slice = 1 newscope.local('%s = %s' % (scp.params[0],scp.parent.name)) for p in scp.params[slice:]: i = p.find('=') if len(p) == 0: continue pvar = '' ptype = '' if i == -1: pvar = p ptype = '_PyCmplNoType()' else: pvar = p[:i] ptype = _sanitize(p[i+1:]) if pvar.startswith('**'): pvar = pvar[2:] ptype = '{}' elif pvar.startswith('*'): pvar = pvar[1:] ptype = '[]' newscope.local('%s = %s' % (pvar,ptype)) for s in scp.subscopes: ns = s.copy_decl(0) newscope.add(ns) for l in scp.locals: newscope.local(l) scp = scp.parent self.currentscope = newscope return self.currentscope #p.parse(vim.current.buffer[:],vim.eval("line('.')")) def parse(self,text,curline=0): self.curline = int(curline) buf = cStringIO.StringIO(''.join(text) + '\n') self.gen = tokenize.generate_tokens(buf.readline) self.currentscope = self.scope try: freshscope=True while True: tokentype, token, indent = self.next() #dbg( 'main: token=[%s] indent=[%s]' % (token,indent)) if tokentype == DEDENT or token == "pass": self.scope = self.scope.pop(indent) elif token == 'def': func = self._parsefunction(indent) if func is None: print "function: syntax error..." continue dbg("new scope: function") freshscope = True self.scope = self.scope.add(func) elif token == 'class': cls = self._parseclass(indent) if cls is None: print "class: syntax error..." continue freshscope = True dbg("new scope: class") self.scope = self.scope.add(cls) elif token == 'import': imports = self._parseimportlist() for mod, alias in imports: loc = "import %s" % mod if len(alias) > 0: loc += " as %s" % alias self.scope.local(loc) freshscope = False elif token == 'from': mod, token = self._parsedotname() if not mod or token != "import": print "from: syntax error..." continue names = self._parseimportlist() for name, alias in names: loc = "from %s import %s" % (mod,name) if len(alias) > 0: loc += " as %s" % alias self.scope.local(loc) freshscope = False elif tokentype == STRING: if freshscope: self.scope.doc(token) elif tokentype == NAME: name,token = self._parsedotname(token) if token == '=': stmt = self._parseassignment() dbg("parseassignment: %s = %s" % (name, stmt)) if stmt != None: self.scope.local("%s = %s" % (name,stmt)) freshscope = False except StopIteration: #thrown on EOF pass except: dbg("parse error: %s, %s @ %s" % (sys.exc_info()[0], sys.exc_info()[1], self.parserline)) return self._adjustvisibility() def _sanitize(str): val = '' level = 0 for c in str: if c in ('(','{','['): level += 1 elif c in (']','}',')'): level -= 1 elif level == 0: val += c return val sys.path.extend(['.','..']) PYTHONEOF endfunction call s:DefPython() function s:CacheRstFold() if !g:rst_fold_enabled return endif let closure = {'header_types': {}, 'max_level': 0, 'levels': {}} function closure.Process(match) dict let curline = getcurpos()[1] if has_key(self.levels, curline - 1) return endif let lines = split(a:match, '\n') let key = repeat(lines[-1][0], len(lines)) if !has_key(self.header_types, key) let self.max_level += 1 let self.header_types[key] = self.max_level endif let self.levels[curline] = self.header_types[key] endfunction let save_cursor = getcurpos() let save_mark = getpos("'[") silent keeppatterns %s/\v^%(%(([=`:.'"~^_*+#-])\1+\n)?.{1,2}\n([=`:.'"~^_*+#-])\2+)|%(%(([=`:.''"~^_*+#-])\3{2,}\n)?.{3,}\n([=`:.''"~^_*+#-])\4{2,})$/\=closure.Process(submatch(0))/gn call setpos('.', save_cursor) call setpos("'[", save_mark) let b:RstFoldCache = closure.levels endfunction function RstFold#GetRstFold() if !g:rst_fold_enabled return endif if !has_key(b:, 'RstFoldCache') call s:CacheRstFold() endif if has_key(b:RstFoldCache, v:lnum) return '>' . b:RstFoldCache[v:lnum] else return '=' endif endfunction function RstFold#GetRstFoldText() if !g:rst_fold_enabled return endif if !has_key(b:, 'RstFoldCache') call s:CacheRstFold() endif let indent = repeat(' ', b:RstFoldCache[v:foldstart] - 1) let thisline = getline(v:foldstart) let text = thisline =~ '^\([=`:.''"~^_*+#-]\)\1\+$' ? getline(v:foldstart + 1) : thisline return indent . text endfunction function! s:ErrMsg(msg) echohl ErrorMsg echo a:msg echohl None endfunction if !has('ruby') call s:ErrMsg( "Error: Rubycomplete requires vim compiled with +ruby" ) call s:ErrMsg( "Error: falling back to syntax completion" ) setlocal omnifunc=syntaxcomplete#Complete finish endif if version < 700 call s:ErrMsg( "Error: Required vim >= 7.0" ) finish endif if !exists("g:rubycomplete_rails") let g:rubycomplete_rails = 0 endif if !exists("g:rubycomplete_classes_in_global") let g:rubycomplete_classes_in_global = 0 endif if !exists("g:rubycomplete_buffer_loading") let g:rubycomplete_buffer_loading = 0 endif if !exists("g:rubycomplete_include_object") let g:rubycomplete_include_object = 0 endif if !exists("g:rubycomplete_include_objectspace") let g:rubycomplete_include_objectspace = 0 endif let s:rubycomplete_debug = 0 function! s:dprint(msg) if s:rubycomplete_debug == 1 echom a:msg endif endfunction function! s:GetBufferRubyModule(name, ...) if a:0 == 1 let [snum,enum] = s:GetBufferRubyEntity(a:name, "module", a:1) else let [snum,enum] = s:GetBufferRubyEntity(a:name, "module") endif return snum . '..' . enum endfunction function! s:GetBufferRubyClass(name, ...) if a:0 >= 1 let [snum,enum] = s:GetBufferRubyEntity(a:name, "class", a:1) else let [snum,enum] = s:GetBufferRubyEntity(a:name, "class") endif return snum . '..' . enum endfunction function! s:GetBufferRubySingletonMethods(name) endfunction function! s:GetBufferRubyEntity( name, type, ... ) let lastpos = getpos(".") let lastline = lastpos if (a:0 >= 1) let lastline = [ 0, a:1, 0, 0 ] call cursor( a:1, 0 ) endif let stopline = 1 let crex = '^\s*\<' . a:type . '\>\s*\<' . escape(a:name, '*') . '\>\s*\(<\s*.*\s*\)\?' let [lnum,lcol] = searchpos( crex, 'w' ) if lnum == 0 && lcol == 0 call cursor(lastpos[1], lastpos[2]) return [0,0] endif let curpos = getpos(".") let [enum,ecol] = searchpairpos( crex, '', '\(end\|}\)', 'W' ) call cursor(lastpos[1], lastpos[2]) if lnum > enum return [0,0] endif return [lnum,enum] endfunction function! s:IsInClassDef() return s:IsPosInClassDef( line('.') ) endfunction function! s:IsPosInClassDef(pos) let [snum,enum] = s:GetBufferRubyEntity( '.*', "class" ) let ret = 'nil' if snum < a:pos && a:pos < enum let ret = snum . '..' . enum endif return ret endfunction function! s:GetRubyVarType(v) let stopline = 1 let vtp = '' let pos = getpos('.') let sstr = '^\s*#\s*@var\s*'.escape(a:v, '*').'\>\s\+[^ \t]\+\s*$' let [lnum,lcol] = searchpos(sstr,'nb',stopline) if lnum != 0 && lcol != 0 call setpos('.',pos) let str = getline(lnum) let vtp = substitute(str,sstr,'\1','') return vtp endif call setpos('.',pos) let ctors = '\(now\|new\|open\|get_instance' if exists('g:rubycomplete_rails') && g:rubycomplete_rails == 1 && s:rubycomplete_rails_loaded == 1 let ctors = ctors.'\|find\|create' else endif let ctors = ctors.'\)' let fstr = '=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%[xwQqr][(\[{@]\|[A-Za-z0-9@:\-()\.]\+...\?\|lambda\|&\)' let sstr = ''.escape(a:v, '*').'\>\s*[+\-*/]*'.fstr let [lnum,lcol] = searchpos(sstr,'nb',stopline) if lnum != 0 && lcol != 0 let str = matchstr(getline(lnum),fstr,lcol) let str = substitute(str,'^=\s*','','') call setpos('.',pos) if str == '"' || str == '''' || stridx(tolower(str), '%q[') != -1 return 'String' elseif str == '[' || stridx(str, '%w[') != -1 return 'Array' elseif str == '{' return 'Hash' elseif str == '/' || str == '%r{' return 'Regexp' elseif strlen(str) >= 4 && stridx(str,'..') != -1 return 'Range' elseif stridx(str, 'lambda') != -1 || str == '&' return 'Proc' elseif strlen(str) > 4 let l = stridx(str,'.') return str[0:l-1] end return '' endif call setpos('.',pos) return '' endfunction function! rubycomplete#Init() execute "ruby VimRubyCompletion.preload_rails" endfunction function! rubycomplete#Complete(findstart, base) if a:findstart let line = getline('.') let idx = col('.') while idx > 0 let idx -= 1 let c = line[idx-1] if c =~ '\w' continue elseif ! c =~ '\.' let idx = -1 break else break endif endwhile return idx else let g:rubycomplete_completions = [] execute "ruby VimRubyCompletion.get_completions('" . a:base . "')" return g:rubycomplete_completions endif endfunction function! s:DefRuby() ruby << RUBYEOF # {{{ ruby completion begin require 'rubygems' # let's assume this is safe...? rescue Exception #ignore? end class VimRubyCompletion # {{{ constants @@debug = false @@ReservedWords = [ ] @@Operators = [ "%", "&", "*", "**", "+", "-", "/", # }}} constants # {{{ buffer analysis magic def load_requires custom_paths = VIM::evaluate("get(g:, 'rubycomplete_load_paths', [])") if !custom_paths.empty? $LOAD_PATH.concat(custom_paths).uniq! end buf = VIM::Buffer.current enum = buf.line_number nums = Range.new( 1, enum ) nums.each do |x| ln = buf[x] begin if /.*require_relative\s*(.*)$/.match( ln ) eval( "require %s" % File.expand_path($1) ) elsif /.*require\s*(["'].*?["'])/.match( ln ) eval( "require %s" % $1 ) end rescue Exception => e dprint e.inspect end end end def load_gems fpath = VIM::evaluate("get(g:, 'rubycomplete_gemfile_path', 'Gemfile')") return unless File.file?(fpath) && File.readable?(fpath) want_bundler = VIM::evaluate("get(g:, 'rubycomplete_use_bundler')") parse_file = !want_bundler begin require 'bundler' Bundler.setup Bundler.require rescue Exception parse_file = true end if parse_file File.new(fpath).each_line do |line| begin require $1 if /\s*gem\s*['"]([^'"]+)/.match(line) rescue Exception end end end end def load_buffer_class(name) dprint "load_buffer_class(%s) START" % name classdef = get_buffer_entity(name, 's:GetBufferRubyClass("%s")') return if classdef == nil pare = /^\s*class\s*(.*)\s*<\s*(.*)\s*\n/.match( classdef ) load_buffer_class( $2 ) if pare != nil && $2 != name # load parent class if needed mixre = /.*\n\s*(include|prepend)\s*(.*)\s*\n/.match( classdef ) load_buffer_module( $2 ) if mixre != nil && $2 != name # load mixins if needed begin eval classdef rescue Exception VIM::evaluate( "s:ErrMsg( 'Problem loading class \"%s\", was it already completed?' )" % name ) end dprint "load_buffer_class(%s) END" % name end def load_buffer_module(name) dprint "load_buffer_module(%s) START" % name classdef = get_buffer_entity(name, 's:GetBufferRubyModule("%s")') return if classdef == nil begin eval classdef rescue Exception VIM::evaluate( "s:ErrMsg( 'Problem loading module \"%s\", was it already completed?' )" % name ) end dprint "load_buffer_module(%s) END" % name end def get_buffer_entity(name, vimfun) loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading") return nil if loading_allowed.to_i.zero? return nil if /(\"|\')+/.match( name ) buf = VIM::Buffer.current nums = eval( VIM::evaluate( vimfun % name ) ) return nil if nums == nil return nil if nums.min == nums.max && nums.min == 0 dprint "get_buffer_entity START" visited = [] clscnt = 0 bufname = VIM::Buffer.current.name classdef = "" cur_line = VIM::Buffer.current.line_number while (nums != nil && !(nums.min == 0 && nums.max == 0) ) dprint "visited: %s" % visited.to_s break if visited.index( nums ) visited << nums nums.each do |x| if x != cur_line next if x == 0 ln = buf[x] is_const = false if /^\s*(module|class|def|include)\s+/.match(ln) || is_const = /^\s*?[A-Z]([A-z]|[1-9])*\s*?[|]{0,2}=\s*?.+\s*?/.match(ln) clscnt += 1 if /class|module/.match($1) # We must make sure to load each constant only once to avoid errors if is_const ln.gsub!(/\s*?[|]{0,2}=\s*?/, '||=') end #dprint "\$1$1 classdef += "%s\n" % ln classdef += "end\n" if /def\s+/.match(ln) dprint ln end end end nm = "%s(::.*)*\", %s, \"" % [ name, nums.last ] nums = eval( VIM::evaluate( vimfun % nm ) ) dprint "nm: \"%s\"" % nm dprint "vimfun: %s" % (vimfun % nm) dprint "got nums: %s" % nums.to_s end if classdef.length > 1 classdef += "end\n"*clscnt # classdef = "class %s\n%s\nend\n" % [ bufname.gsub( /\/|\\/, "_" ), classdef ] end dprint "get_buffer_entity END" dprint "classdef====start" lns = classdef.split( "\n" ) lns.each { |x| dprint x } dprint "classdef====end" return classdef end def get_var_type( receiver ) if /(\"|\')+/.match( receiver ) else VIM::evaluate("s:GetRubyVarType('%s')" % receiver) end end def dprint( txt ) print txt if @@debug end def escape_vim_singlequote_string(str) str.to_s.gsub(/'/,"\\'") end def get_buffer_entity_list( type ) # this will be a little expensive. loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading") allow_aggressive_load = VIM::evaluate("exists('g:rubycomplete_classes_in_global') && g:rubycomplete_classes_in_global") return [] if allow_aggressive_load.to_i.zero? || loading_allowed.to_i.zero? buf = VIM::Buffer.current eob = buf.length ret = [] rg = 1..eob re = eval( "/^\s*%s\s*([A-Za-z0-9_:-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/" % type ) rg.each do |x| if re.match( buf[x] ) next if type == "def" && eval( VIM::evaluate("s:IsPosInClassDef(%s)" % x) ) != nil ret.push $1 end end return ret end def get_buffer_modules return get_buffer_entity_list( "modules" ) end def get_buffer_methods return get_buffer_entity_list( "def" ) end def get_buffer_classes return get_buffer_entity_list( "class" ) end def load_rails allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails") return if allow_rails.to_i.zero? buf_path = VIM::evaluate('expand("%:p")') file_name = VIM::evaluate('expand("%:t")') vim_dir = VIM::evaluate('getcwd()') file_dir = buf_path.gsub( file_name, '' ) file_dir.gsub!( /\\/, "/" ) vim_dir.gsub!( /\\/, "/" ) vim_dir << "/" dirs = [ vim_dir, file_dir ] sdirs = [ "", "./", "../", "../../", "../../../", "../../../../" ] rails_base = nil dirs.each do |dir| sdirs.each do |sub| trail = "%s%s" % [ dir, sub ] tcfg = "%sconfig" % trail if File.exists?( tcfg ) rails_base = trail break end end break if rails_base end return if rails_base == nil $:.push rails_base unless $:.index( rails_base ) rails_config = rails_base + "config/" rails_lib = rails_base + "lib/" $:.push rails_config unless $:.index( rails_config ) $:.push rails_lib unless $:.index( rails_lib ) bootfile = rails_config + "boot.rb" envfile = rails_config + "environment.rb" if File.exists?( bootfile ) && File.exists?( envfile ) begin require bootfile require envfile begin require 'console_app' require 'console_with_helpers' rescue Exception dprint "Rails 1.1+ Error %s" % $! # assume 1.0 end #eval( "Rails::Initializer.run" ) #not necessary? VIM::command('let s:rubycomplete_rails_loaded = 1') dprint "rails loaded" rescue Exception dprint "Rails Error %s" % $! VIM::evaluate( "s:ErrMsg('Error loading rails environment')" ) end end end def get_rails_helpers allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails") rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded') return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero? buf_path = VIM::evaluate('expand("%:p")') buf_path.gsub!( /\\/, "/" ) path_elm = buf_path.split( "/" ) dprint "buf_path: %s" % buf_path types = [ "app", "db", "lib", "test", "components", "script" ] i = nil ret = [] type = nil types.each do |t| i = path_elm.index( t ) break if i end type = path_elm[i] type.downcase! dprint "type: %s" % type case type when "app" i += 1 subtype = path_elm[i] subtype.downcase! dprint "subtype: %s" % subtype case subtype when "views" ret += ActionView::Base.instance_methods ret += ActionView::Base.methods when "controllers" ret += ActionController::Base.instance_methods ret += ActionController::Base.methods when "models" ret += ActiveRecord::Base.instance_methods ret += ActiveRecord::Base.methods end when "db" ret += ActiveRecord::ConnectionAdapters::SchemaStatements.instance_methods ret += ActiveRecord::ConnectionAdapters::SchemaStatements.methods end return ret end def add_rails_columns( cls ) allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails") rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded') return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero? begin eval( "#{cls}.establish_connection" ) return [] unless eval( "#{cls}.ancestors.include?(ActiveRecord::Base).to_s" ) col = eval( "#{cls}.column_names" ) return col if col rescue dprint "add_rails_columns err: (cls: %s) %s" % [ cls, $! ] return [] end return [] end def clean_sel(sel, msg) ret = sel.reject{|x|x.nil?}.uniq ret = ret.grep(/^#{Regexp.quote(msg)}/) if msg != nil ret end def get_rails_view_methods allow_rails = VIM::evaluate("exists('g:rubycomplete_rails') && g:rubycomplete_rails") rails_loaded = VIM::evaluate('s:rubycomplete_rails_loaded') return [] if allow_rails.to_i.zero? || rails_loaded.to_i.zero? buf_path = VIM::evaluate('expand("%:p")') buf_path.gsub!( /\\/, "/" ) pelm = buf_path.split( "/" ) idx = pelm.index( "views" ) return [] unless idx idx += 1 clspl = pelm[idx].camelize.pluralize cls = clspl.singularize ret = [] begin ret += eval( "#{cls}.instance_methods" ) ret += eval( "#{clspl}Helper.instance_methods" ) rescue Exception dprint "Error: Unable to load rails view helpers for %s: %s" % [ cls, $! ] end return ret end # }}} buffer analysis magic # {{{ main completion code def self.preload_rails a = VimRubyCompletion.new if VIM::evaluate("has('nvim')") == 0 require 'thread' Thread.new(a) do |b| begin b.load_rails rescue end end end a.load_rails rescue end def self.get_completions(base) b = VimRubyCompletion.new b.get_completions base end def get_completions(base) loading_allowed = VIM::evaluate("exists('g:rubycomplete_buffer_loading') && g:rubycomplete_buffer_loading") if loading_allowed.to_i == 1 load_requires load_rails end want_gems = VIM::evaluate("get(g:, 'rubycomplete_load_gemfile')") load_gems unless want_gems.to_i.zero? input = VIM::Buffer.current.line cpos = VIM::Window.current.cursor[1] - 1 input = input[0..cpos] input += base input.sub!(/.*[ \t\n\"\\'`><=;|&{(]/, '') # Readline.basic_word_break_characters input.sub!(/self\./, '') input.sub!(/.*((\.\.[\[(]?)|([\[(]))/, '') dprint 'input %s' % input message = nil receiver = nil methods = [] variables = [] classes = [] constants = [] case input when /^(\/[^\/]*\/)\.([^.]*)$/ # Regexp receiver = $1 message = Regexp.quote($2) methods = Regexp.instance_methods(true) when /^([^\]]*\])\.([^.]*)$/ # Array receiver = $1 message = Regexp.quote($2) methods = Array.instance_methods(true) when /^([^\}]*\})\.([^.]*)$/ # Proc or Hash receiver = $1 message = Regexp.quote($2) methods = Proc.instance_methods(true) | Hash.instance_methods(true) when /^(:[^:.]*)$/ # Symbol dprint "symbol" if Symbol.respond_to?(:all_symbols) receiver = $1 message = $1.sub( /:/, '' ) methods = Symbol.all_symbols.collect{|s| s.id2name} methods.delete_if { |c| c.match( /'/ ) } end when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods dprint "const or cls" receiver = $1 methods = Object.constants methods.grep(/^#{receiver}/).collect{|e| "::" + e} when /^(((::)?[A-Z][^:.\(]*)+?)::?([^:.]*)$/ # Constant or class methods receiver = $1 message = Regexp.quote($4) dprint "const or cls 2 [recv: \'%s\', msg: \'%s\']" % [ receiver, message ] load_buffer_class( receiver ) load_buffer_module( receiver ) begin classes = eval("#{receiver}.constants") #methods = eval("#{receiver}.methods") rescue Exception dprint "exception: %s" % $! methods = [] end methods.grep(/^#{message}/).collect{|e| receiver + "::" + e} when /^(:[^:.]+)\.([^.]*)$/ # Symbol dprint "symbol" receiver = $1 message = Regexp.quote($2) methods = Symbol.instance_methods(true) when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ # Numeric dprint "numeric" receiver = $1 message = Regexp.quote($4) begin methods = eval(receiver).methods rescue Exception methods = [] end when /^(\$[^.]*)$/ #global dprint "global" methods = global_variables.grep(Regexp.new(Regexp.quote($1))) when /^((\.?[^.]+)+?)\.([^.]*)$/ # variable dprint "variable" receiver = $1 message = Regexp.quote($3) load_buffer_class( receiver ) cv = eval("self.class.constants") vartype = get_var_type( receiver ) dprint "vartype: %s" % vartype invalid_vartype = ['', "gets"] if !invalid_vartype.include?(vartype) load_buffer_class( vartype ) begin methods = eval("#{vartype}.instance_methods") variables = eval("#{vartype}.instance_variables") rescue Exception dprint "load_buffer_class err: %s" % $! end elsif (cv).include?(receiver) # foo.func and foo is local var. methods = eval("#{receiver}.methods") vartype = receiver elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver vartype = receiver # Foo::Bar.func begin methods = eval("#{receiver}.methods") rescue Exception end else # func1.func2 ObjectSpace.each_object(Module){|m| next if m.name != "IRB::Context" and /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name methods.concat m.instance_methods(false) } end variables += add_rails_columns( "#{vartype}" ) if vartype && !invalid_vartype.include?(vartype) when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/ message = $1 methods = Range.instance_methods(true) when /^\.([^.]*)$/ # unknown(maybe String) message = Regexp.quote($1) methods = String.instance_methods(true) else dprint "default/other" inclass = eval( VIM::evaluate("s:IsInClassDef()") ) if inclass != nil dprint "inclass" classdef = "%s\n" % VIM::Buffer.current[ inclass.min ] found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef ) if found != nil receiver = $1 message = input load_buffer_class( receiver ) begin methods = eval( "#{receiver}.instance_methods" ) variables += add_rails_columns( "#{receiver}" ) rescue Exception found = nil end end end if inclass == nil || found == nil dprint "inclass == nil" methods = get_buffer_methods methods += get_rails_view_methods cls_const = Class.constants constants = cls_const.select { |c| /^[A-Z_-]+$/.match( c ) } classes = eval("self.class.constants") - constants classes += get_buffer_classes classes += get_buffer_modules include_objectspace = VIM::evaluate("exists('g:rubycomplete_include_objectspace') && g:rubycomplete_include_objectspace") ObjectSpace.each_object(Class) { |cls| classes << cls.to_s } if include_objectspace == "1" message = receiver = input end methods += get_rails_helpers methods += Kernel.public_methods end include_object = VIM::evaluate("exists('g:rubycomplete_include_object') && g:rubycomplete_include_object") methods = clean_sel( methods, message ) methods = (methods-Object.instance_methods) if include_object == "0" rbcmeth = (VimRubyCompletion.instance_methods-Object.instance_methods) # lets remove those rubycomplete methods methods = (methods-rbcmeth) variables = clean_sel( variables, message ) classes = clean_sel( classes, message ) - ["VimRubyCompletion"] constants = clean_sel( constants, message ) valid = [] valid += methods.collect { |m| { :name => m.to_s, :type => 'm' } } valid += variables.collect { |v| { :name => v.to_s, :type => 'v' } } valid += classes.collect { |c| { :name => c.to_s, :type => 't' } } valid += constants.collect { |d| { :name => d.to_s, :type => 'd' } } valid.sort! { |x,y| x[:name] <=> y[:name] } outp = "" rg = 0..valid.length rg.step(150) do |x| stpos = 0+x enpos = 150+x valid[stpos..enpos].each { |c| outp += "{'word':'%s','item':'%s','kind':'%s'}," % [ c[:name], c[:name], c[:type] ].map{|x|escape_vim_singlequote_string(x)} } outp.sub!(/,$/, '') VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp) outp = "" end end # }}} main completion code end # VimRubyCompletion # }}} ruby completion RUBYEOF endfunction let s:rubycomplete_rails_loaded = 0 call s:DefRuby() function! rust#Jump(mode, function) range let cnt = v:count1 normal! m' if a:mode ==# 'v' norm! gv endif let foldenable = &foldenable set nofoldenable while cnt > 0 execute "call Jump_" . a:function . "()" let cnt = cnt - 1 endwhile let &foldenable = foldenable endfunction function! s:Jump_Back() call search('{', 'b') keepjumps normal! w99[{ endfunction function! s:Jump_Forward() normal! j0 call search('{', 'b') keepjumps normal! w99[{% call search('{') endfunction function! rust#Run(bang, args) let args = s:ShellTokenize(a:args) if a:bang let idx = index(l:args, '--') if idx != -1 let rustc_args = idx == 0 ? [] : l:args[:idx-1] let args = l:args[idx+1:] else let rustc_args = l:args let args = [] endif else let rustc_args = [] endif let b:rust_last_rustc_args = l:rustc_args let b:rust_last_args = l:args call s:WithPath(function("s:Run"), rustc_args, args) endfunction function! s:Run(dict, rustc_args, args) let exepath = a:dict.tmpdir.'/'.fnamemodify(a:dict.path, ':t:r') if has('win32') let exepath .= '.exe' endif let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path) let rustc_args = [relpath, '-o', exepath] + a:rustc_args let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" let pwd = a:dict.istemp ? a:dict.tmpdir : '' let output = s:system(pwd, shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)'))) if output != '' echohl WarningMsg echo output echohl None endif if !v:shell_error exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)')) endif endfunction function! rust#Expand(bang, args) let args = s:ShellTokenize(a:args) if a:bang && !empty(l:args) let pretty = remove(l:args, 0) else let pretty = "expanded" endif call s:WithPath(function("s:Expand"), pretty, args) endfunction function! s:Expand(dict, pretty, args) try let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" if a:pretty =~? '^\%(everybody_loops$\|flowgraph=\)' let flag = '--xpretty' else let flag = '--pretty' endif let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path) let args = [relpath, '-Z', 'unstable-options', l:flag, a:pretty] + a:args let pwd = a:dict.istemp ? a:dict.tmpdir : '' let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)'))) if v:shell_error echohl WarningMsg echo output echohl None else new silent put =output 1 d setl filetype=rust setl buftype=nofile setl bufhidden=hide setl noswapfile let suffix = 1 let basename = fnamemodify(a:dict.path, ':t:r') while 1 let bufname = basename if suffix > 1 | let bufname .= ' ('.suffix.')' | endif let bufname .= '.pretty.rs' if bufexists(bufname) let suffix += 1 continue endif exe 'silent noautocmd keepalt file' fnameescape(bufname) break endwhile endif endtry endfunction function! rust#CompleteExpand(lead, line, pos) if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$' let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph=", "everybody_loops"] if !empty(a:lead) call filter(list, "v:val[:len(a:lead)-1] == a:lead") endif return list endif return glob(escape(a:lead, "*?[") . '*', 0, 1) endfunction function! rust#Emit(type, args) let args = s:ShellTokenize(a:args) call s:WithPath(function("s:Emit"), a:type, args) endfunction function! s:Emit(dict, type, args) try let output_path = a:dict.tmpdir.'/output' let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path) let args = [relpath, '--emit', a:type, '-o', output_path] + a:args let pwd = a:dict.istemp ? a:dict.tmpdir : '' let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)'))) if output != '' echohl WarningMsg echo output echohl None endif if !v:shell_error new exe 'silent keepalt read' fnameescape(output_path) 1 d if a:type == "llvm-ir" setl filetype=llvm let extension = 'll' elseif a:type == "asm" setl filetype=asm let extension = 's' endif setl buftype=nofile setl bufhidden=hide setl noswapfile if exists('l:extension') let suffix = 1 let basename = fnamemodify(a:dict.path, ':t:r') while 1 let bufname = basename if suffix > 1 | let bufname .= ' ('.suffix.')' | endif let bufname .= '.'.extension if bufexists(bufname) let suffix += 1 continue endif exe 'silent noautocmd keepalt file' fnameescape(bufname) break endwhile endif endif endtry endfunction function! s:WithPath(func, ...) let buf = bufnr('') let saved = {} let dict = {} try let saved.write = &write set write let dict.path = expand('%') let pathisempty = empty(dict.path) let dict.tmpdir = tempname() call mkdir(dict.tmpdir) if pathisempty || !saved.write let dict.istemp = 1 if !pathisempty let filename = expand('%:t:r').".rs" else let filename = 'unnamed.rs' endif let dict.tmpdir_relpath = filename let dict.path = dict.tmpdir.'/'.filename let saved.mod = &mod set nomod silent exe 'keepalt write! ' . fnameescape(dict.path) if pathisempty silent keepalt 0file endif else let dict.istemp = 0 update endif call call(a:func, [dict] + a:000) finally if bufexists(buf) for [opt, value] in items(saved) silent call setbufvar(buf, '&'.opt, value) unlet value " avoid variable type mismatches endfor endif if has_key(dict, 'tmpdir') | silent call s:RmDir(dict.tmpdir) | endif endtry endfunction function! rust#AppendCmdLine(text) call setcmdpos(getcmdpos()) let cmd = getcmdline() . a:text return cmd endfunction function! s:ShellTokenize(text) let l:state = 0 let l:current = '' let l:args = [] for c in split(a:text, '\zs') if l:state == 0 || l:state == 1 " unquoted if l:c ==# ' ' if l:state == 0 | continue | endif call add(l:args, l:current) let l:current = '' let l:state = 0 elseif l:c ==# '\' let l:state = 2 elseif l:c ==# '"' let l:state = 3 elseif l:c ==# "'" let l:state = 5 else let l:current .= l:c let l:state = 1 endif elseif l:state == 2 " unquoted backslash if l:c !=# "\n" " can it even be \n? let l:current .= l:c endif let l:state = 1 elseif l:state == 3 " double-quote if l:c ==# '\' let l:state = 4 elseif l:c ==# '"' let l:state = 1 else let l:current .= l:c endif elseif l:state == 4 " double-quoted backslash if stridx('$`"\', l:c) >= 0 let l:current .= l:c elseif l:c ==# "\n" " is this even possible? else let l:current .= '\'.l:c endif let l:state = 3 elseif l:state == 5 " single-quoted if l:c == "'" let l:state = 1 else let l:current .= l:c endif endif endfor if l:state != 0 call add(l:args, l:current) endif return l:args endfunction function! s:RmDir(path) if empty(a:path) echoerr 'Attempted to delete empty path' return 0 elseif a:path == '/' || a:path == $HOME echoerr 'Attempted to delete protected path: ' . a:path return 0 endif return system("rm -rf " . shellescape(a:path)) endfunction function! s:system(pwd, cmd) let cmd = a:cmd if !empty(a:pwd) let cmd = 'cd ' . shellescape(a:pwd) . ' && ' . cmd endif return system(cmd) endfunction function! s:has_webapi() if !exists("*webapi#http#post") try call webapi#http#post() catch endtry endif return exists("*webapi#http#post") endfunction function! rust#Play(count, line1, line2, ...) abort redraw let l:rust_playpen_url = get(g:, 'rust_playpen_url', 'https://play.rust-lang.org/') let l:rust_shortener_url = get(g:, 'rust_shortener_url', 'https://is.gd/') if !s:has_webapi() echohl ErrorMsg | echomsg ':RustPlay depends on webapi.vim (https://github.com/mattn/webapi-vim)' | echohl None return endif let bufname = bufname('%') if a:count < 1 let content = join(getline(a:line1, a:line2), "\n") else let save_regcont = @" let save_regtype = getregtype('"') silent! normal! gvy let content = @" call setreg('"', save_regcont, save_regtype) endif let body = l:rust_playpen_url."?code=".webapi#http#encodeURI(content) if strlen(body) > 5000 echohl ErrorMsg | echomsg 'Buffer too large, max 5000 encoded characters ('.strlen(body).')' | echohl None return endif let payload = "format=simple&url=".webapi#http#encodeURI(body) let res = webapi#http#post(l:rust_shortener_url.'create.php', payload, {}) let url = res.content redraw | echomsg 'Done: '.url endfunction if !exists("g:rustfmt_autosave") let g:rustfmt_autosave = 0 endif if !exists("g:rustfmt_command") let g:rustfmt_command = "rustfmt" endif if !exists("g:rustfmt_options") let g:rustfmt_options = "" endif if !exists("g:rustfmt_fail_silently") let g:rustfmt_fail_silently = 0 endif let s:got_fmt_error = 0 function! s:RustfmtCommandRange(filename, line1, line2) let l:arg = {"file": shellescape(a:filename), "range": [a:line1, a:line2]} return printf("%s %s --write-mode=overwrite --file-lines '[%s]'", g:rustfmt_command, g:rustfmt_options, json_encode(l:arg)) endfunction function! s:RustfmtCommand(filename) return g:rustfmt_command . " --write-mode=overwrite " . g:rustfmt_options . " " . shellescape(a:filename) endfunction function! s:RunRustfmt(command, curw, tmpname) if exists("*systemlist") let out = systemlist(a:command) else let out = split(system(a:command), '\r\?\n') endif if v:shell_error == 0 || v:shell_error == 3 try | silent undojoin | catch | endtry call rename(a:tmpname, expand('%')) silent edit! let &syntax = &syntax if s:got_fmt_error let s:got_fmt_error = 0 call setloclist(0, []) lwindow endif elseif g:rustfmt_fail_silently == 0 let errors = [] for line in out let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\):\s*\(\d\+:\d\+\s*\)\?\s*error: \(.*\)') if !empty(tokens) call add(errors, {"filename": @%, \"lnum": tokens[2], \"col": tokens[3], \"text": tokens[5]}) endif endfor if empty(errors) % | " Couldn't detect rustfmt error format, output errors endif if !empty(errors) call setloclist(0, errors, 'r') echohl Error | echomsg "rustfmt returned error" | echohl None endif let s:got_fmt_error = 1 lwindow call delete(a:tmpname) endif call winrestview(a:curw) endfunction function! rustfmt#FormatRange(line1, line2) let l:curw = winsaveview() let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt" call writefile(getline(1, '$'), l:tmpname) let command = s:RustfmtCommandRange(l:tmpname, a:line1, a:line2) call s:RunRustfmt(command, l:curw, l:tmpname) endfunction function! rustfmt#Format() let l:curw = winsaveview() let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt" call writefile(getline(1, '$'), l:tmpname) let command = s:RustfmtCommand(l:tmpname) call s:RunRustfmt(command, l:curw, l:tmpname) endfunction if !exists('g:spellfile_URL') if executable("curl") || executable("wget") || executable("fetch") let g:spellfile_URL = 'http://ftp.vim.org/pub/vim/runtime/spell' else let g:spellfile_URL = 'ftp://ftp.vim.org/pub/vim/runtime/spell' endif endif let s:spellfile_URL = '' " Start with nothing so that s:donedict is reset. function! spellfile#LoadFile(lang) if !exists(":Nread") if &verbose echomsg 'spellfile#LoadFile(): Nread command is not available.' endif return endif let lang = tolower(a:lang) if s:spellfile_URL != g:spellfile_URL let s:donedict = {} let s:spellfile_URL = g:spellfile_URL endif if has_key(s:donedict, lang . &enc) if &verbose echomsg 'spellfile#LoadFile(): Tried this language/encoding before.' endif return endif let s:donedict[lang . &enc] = 1 let [dirlist, dirchoices] = spellfile#GetDirChoices() if len(dirlist) == 0 let dir_to_create = spellfile#WritableSpellDir() if &verbose || dir_to_create != '' echomsg 'spellfile#LoadFile(): There is no writable spell directory.' endif if dir_to_create != '' if confirm("Shall I create " . dir_to_create, "&Yes\n&No", 2) == 1 call mkdir(dir_to_create, "p") let [dirlist, dirchoices] = spellfile#GetDirChoices() endif endif if len(dirlist) == 0 return endif endif let msg = 'Cannot find spell file for "' . lang . '" in ' . &enc let msg .= "\nDo you want me to try downloading it?" if confirm(msg, "&Yes\n&No", 2) == 1 let enc = &encoding if enc == 'iso-8859-15' let enc = 'latin1' endif let fname = lang . '.' . enc . '.spl' new let newbufnr = winbufnr(0) setlocal bin fenc= echo 'Downloading ' . fname . '...' call spellfile#Nread(fname) if getline(2) !~ 'VIMspell' if newbufnr != winbufnr(0) let winnr = bufwinnr(newbufnr) if winnr == -1 echomsg "download buffer disappeared, opening a new one" new setlocal bin fenc= else exe winnr . "wincmd w" endif endif if newbufnr == winbufnr(0) g/^/d else let newbufnr = winbufnr(0) endif let fname = lang . '.ascii.spl' echo 'Could not find it, trying ' . fname . '...' call spellfile#Nread(fname) if getline(2) !~ 'VIMspell' echo 'Sorry, downloading failed' exe newbufnr . "bwipe!" return endif endif 1d set nomod let msg = "In which directory do you want to write the file:" for i in range(len(dirlist)) let msg .= "\n" . (i + 1) . '. ' . dirlist[i] endfor let dirchoice = confirm(msg, dirchoices) - 2 if dirchoice >= 0 if exists('*fnameescape') let dirname = fnameescape(dirlist[dirchoice]) else let dirname = escape(dirlist[dirchoice], ' ') endif setlocal fenc= exe "write " . dirname . '/' . fname let msg = "Do you want me to try getting the .sug file?\n" let msg .= "This will improve making suggestions for spelling mistakes,\n" let msg .= "but it uses quite a bit of memory." if confirm(msg, "&No\n&Yes") == 2 g/^/d let fname = substitute(fname, '\.spl$', '.sug', '') echo 'Downloading ' . fname . '...' call spellfile#Nread(fname) if getline(2) =~ 'VIMsug' 1d exe "write " . dirname . '/' . fname set nomod else echo 'Sorry, downloading failed' if newbufnr != winbufnr(0) let winnr = bufwinnr(newbufnr) if winnr != -1 exe winnr . "wincmd w" endif endif if newbufnr == winbufnr(0) set nomod endif endif endif endif exe newbufnr . "bwipe" endif endfunc function! spellfile#Nread(fname) if exists("g:netrw_use_errorwindow") let save_ew = g:netrw_use_errorwindow endif let g:netrw_use_errorwindow=0 if g:spellfile_URL =~ '^ftp://' let machine = substitute(g:spellfile_URL, 'ftp://\([^/]*\).*', '\1', '') let dir = substitute(g:spellfile_URL, 'ftp://[^/]*/\(.*\)', '\1', '') exe 'Nread "' . machine . ' anonymous vim7user ' . dir . '/' . a:fname . '"' else exe 'Nread ' g:spellfile_URL . '/' . a:fname endif if exists("save_ew") let g:netrw_use_errorwindow = save_ew else unlet g:netrw_use_errorwindow endif endfunc function! spellfile#GetDirChoices() let dirlist = [] let dirchoices = '&Cancel' for dir in split(globpath(&rtp, 'spell'), "\n") if filewritable(dir) == 2 call add(dirlist, dir) let dirchoices .= "\n&" . len(dirlist) endif endfor return [dirlist, dirchoices] endfunc function! spellfile#WritableSpellDir() if has("unix") return $HOME . "/.vim/spell" endif for dir in split(&rtp, ',') if filewritable(dir) == 2 return dir . "/spell" endif endfor return '' endfunction if exists('&omnifunc') if &omnifunc == "" setlocal omnifunc=sqlcomplete#Complete endif endif if exists('g:loaded_sql_completion') finish endif let g:loaded_sql_completion = 160 let s:keepcpo= &cpo set cpo&vim let s:sql_file_table = "" let s:sql_file_procedure = "" let s:sql_file_view = "" let s:tbl_name = [] let s:tbl_alias = [] let s:tbl_cols = [] let s:syn_list = [] let s:syn_value = [] let s:save_inc = "" let s:save_exc = "" if !exists('g:omni_syntax_group_include_sql') let g:omni_syntax_group_include_sql = '' endif if !exists('g:omni_syntax_group_exclude_sql') let g:omni_syntax_group_exclude_sql = '' endif let s:save_inc = g:omni_syntax_group_include_sql let s:save_exc = g:omni_syntax_group_exclude_sql let s:save_prev_table = "" if !exists('g:omni_sql_use_tbl_alias') let g:omni_sql_use_tbl_alias = 'a' endif if !exists('g:omni_sql_precache_syntax_groups') let g:omni_sql_precache_syntax_groups = [ \ 'syntax\w*', \ 'sqlKeyword\w*', \ 'sqlFunction\w*', \ 'sqlOption\w*', \ 'sqlType\w*', \ 'sqlStatement\w*' \ ] endif if !exists('g:omni_sql_ignorecase') let g:omni_sql_ignorecase = &ignorecase endif if !exists('g:omni_sql_include_owner') let g:omni_sql_include_owner = 0 if exists('g:loaded_dbext') if g:loaded_dbext >= 300 let g:omni_sql_include_owner = 1 endif endif endif if !exists('g:omni_sql_default_compl_type') let g:omni_sql_default_compl_type = 'table' endif function! sqlcomplete#Complete(findstart, base) let compl_type = 'table' if exists('b:sql_compl_type') let compl_type = b:sql_compl_type endif let begindot = 0 if a:findstart let line = getline('.') let start = col('.') - 1 let lastword = -1 if line[start - 1] == '.' let begindot = 1 endif while start > 0 if line[start - 1] !~ '\(\w\|\.\)' break elseif line[start - 1] =~ '\w' let start -= 1 elseif line[start - 1] =~ '\.' && \ compl_type =~ 'column\|table\|view\|procedure' if lastword != -1 && compl_type == 'column' \ && g:omni_sql_include_owner == 0 break endif if lastword == -1 && compl_type == 'column' && begindot == 1 let lastword = start endif if lastword == -1 && \ compl_type =~ '\<\(table\|view\|procedure\|column\|column_csv\)\>' && \ g:omni_sql_include_owner == 0 let lastword = start break endif let start -= 1 else break endif endwhile if lastword == -1 let s:prepended = '' return start endif let s:prepended = strpart(line, start, lastword - start) return lastword endif let base = s:prepended . a:base let compl_list = [] let compl_type = g:omni_sql_default_compl_type if exists('b:sql_compl_type') let compl_type = b:sql_compl_type unlet b:sql_compl_type endif if compl_type == 'tableReset' let compl_type = 'table' let base = '' endif if compl_type == 'table' || \ compl_type == 'procedure' || \ compl_type == 'view' if s:SQLCCheck4dbext() == -1 return [] endif if g:loaded_dbext >= 300 let saveSetting = DB_listOption('dict_show_owner') exec 'DBSetOption dict_show_owner='.(g:omni_sql_include_owner==1?'1':'0') endif let compl_type_uc = substitute(compl_type, '\w\+', '\u&', '') let s:sql_file_{compl_type} = DB_getDictionaryName(compl_type_uc) if s:sql_file_{compl_type} != "" if filereadable(s:sql_file_{compl_type}) let compl_list = readfile(s:sql_file_{compl_type}) endif endif if g:loaded_dbext > 300 exec 'DBSetOption dict_show_owner='.saveSetting endif elseif compl_type =~? 'column' if s:SQLCCheck4dbext() == -1 return [] endif if base == "" let base = s:save_prev_table endif let owner = '' let column = '' if base =~ '\.' let owner = matchstr( base, '^\zs.*\ze\..*\..*' ) let table = matchstr( base, '^\(.*\.\)\?\zs.*\ze\..*' ) let column = matchstr( base, '.*\.\zs.*' ) if g:omni_sql_include_owner == 1 && owner == '' && table != '' && column != '' let owner = table let table = column let column = '' endif let found = -1 if g:omni_sql_include_owner == 1 && owner == '' if filereadable(s:sql_file_table) let tbl_list = readfile(s:sql_file_table) let found = index( tbl_list, ((table != '')?(table.'.'):'').column) endif endif else if compl_type == 'column' && s:save_prev_table != '' let table = s:save_prev_table let list_type = '' let compl_list = s:SQLCGetColumns(table, list_type) if ! empty(compl_list) let compl_list = filter(deepcopy(compl_list), 'v:val=~"^'.base.'"' ) if ! empty(compl_list) return compl_list endif endif endif let table = base endif if table != "" let s:save_prev_table = base let list_type = '' if compl_type == 'column_csv' let list_type = 'csv' endif if g:omni_sql_include_owner == 1 && owner != '' && table != '' let compl_list = s:SQLCGetColumns(owner.'.'.table, list_type) else let compl_list = s:SQLCGetColumns(table, list_type) endif if column != '' let compl_list = map(compl_list, 'table.".".v:val') if owner != '' let compl_list = map(compl_list, 'owner.".".v:val') endif else let base = '' endif if compl_type == 'column_csv' let compl_list = [join(compl_list, ', ')] endif endif elseif compl_type == 'resetCache' let s:tbl_name = [] let s:tbl_alias = [] let s:tbl_cols = [] let s:syn_list = [] let s:syn_value = [] if s:sql_file_table != "" if g:loaded_dbext >= 2300 call DB_DictionaryDelete("table") else DBCompleteTables! endif endif if s:sql_file_procedure != "" if g:loaded_dbext >= 2300 call DB_DictionaryDelete("procedure") else DBCompleteProcedures! endif endif if s:sql_file_view != "" if g:loaded_dbext >= 2300 call DB_DictionaryDelete("view") else DBCompleteViews! endif endif let s:sql_file_table = "" let s:sql_file_procedure = "" let s:sql_file_view = "" let msg = "All SQL cached items have been removed." call s:SQLCWarningMsg(msg) :sleep 2 else let compl_list = s:SQLCGetSyntaxList(compl_type) endif if base != '' let expr = 'v:val '.(g:omni_sql_ignorecase==1?'=~?':'=~#').' "\\(^'.base.'\\|^\\(\\w\\+\\.\\)\\?'.base.'\\)"' let compl_list = filter(deepcopy(compl_list), expr) if empty(compl_list) && compl_type == 'table' && base =~ '\.$' let list_type = '' let compl_list = s:SQLCGetColumns(base, list_type) endif endif if exists('b:sql_compl_savefunc') && b:sql_compl_savefunc != "" let &omnifunc = b:sql_compl_savefunc endif if empty(compl_list) call s:SQLCWarningMsg( 'Could not find type['.compl_type.'] using prepend[.'.s:prepended.'] base['.a:base.']' ) endif return compl_list endfunc function! sqlcomplete#PreCacheSyntax(...) let syn_group_arr = [] let syn_items = [] if a:0 > 0 if type(a:1) != 3 call s:SQLCWarningMsg("Parameter is not a list. Example:['syntaxGroup1', 'syntaxGroup2']") return '' endif let syn_group_arr = a:1 else let syn_group_arr = g:omni_sql_precache_syntax_groups endif if !empty(syn_group_arr) for group_name in syn_group_arr let syn_items = extend( syn_items, s:SQLCGetSyntaxList(group_name) ) endfor endif return syn_items endfunction function! sqlcomplete#ResetCacheSyntax(...) let syn_group_arr = [] if a:0 > 0 if type(a:1) != 3 call s:SQLCWarningMsg("Parameter is not a list. Example:['syntaxGroup1', 'syntaxGroup2']") return '' endif let syn_group_arr = a:1 else let syn_group_arr = g:omni_sql_precache_syntax_groups endif if !empty(syn_group_arr) for group_name in syn_group_arr let list_idx = index(s:syn_list, group_name, 0, &ignorecase) if list_idx > -1 call remove( s:syn_list, list_idx ) call remove( s:syn_value, list_idx ) endif endfor endif endfunction function! sqlcomplete#Map(type) let b:sql_compl_type=a:type if &omnifunc != "" && &omnifunc != 'sqlcomplete#Complete' let b:sql_compl_savefunc=&omnifunc endif let &omnifunc='sqlcomplete#Complete' endfunction function! sqlcomplete#DrillIntoTable() if pumvisible() call sqlcomplete#Map('column') call feedkeys("\\\", 'n') else exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_right.'", "n")' endif return "" endfunction function! sqlcomplete#DrillOutOfColumns() if pumvisible() call sqlcomplete#Map('tableReset') call feedkeys("\\") else exec 'call feedkeys("\'.g:ftplugin_sql_omni_key_left.'", "n")' endif return "" endfunction function! s:SQLCWarningMsg(msg) echohl WarningMsg echomsg 'SQLComplete:'.a:msg echohl None endfunction function! s:SQLCErrorMsg(msg) echohl ErrorMsg echomsg 'SQLComplete:'.a:msg echohl None endfunction function! s:SQLCGetSyntaxList(syn_group) let syn_group = a:syn_group let compl_list = [] let list_idx = index(s:syn_list, syn_group, 0, &ignorecase) if list_idx > -1 let compl_list = s:syn_value[list_idx] else let s:save_inc = g:omni_syntax_group_include_sql let s:save_exc = g:omni_syntax_group_exclude_sql let g:omni_syntax_group_include_sql = '' let g:omni_syntax_group_exclude_sql = '' if syn_group == 'syntax' let syn_value = syntaxcomplete#OmniSyntaxList() else let g:omni_syntax_group_include_sql = syn_group let syn_value = syntaxcomplete#OmniSyntaxList(syn_group) endif let g:omni_syntax_group_include_sql = s:save_inc let g:omni_syntax_group_exclude_sql = s:save_exc let s:syn_list = add( s:syn_list, syn_group ) let s:syn_value = add( s:syn_value, syn_value ) let compl_list = syn_value endif return compl_list endfunction function! s:SQLCCheck4dbext() if !exists('g:loaded_dbext') let msg = "The dbext plugin must be loaded for dynamic SQL completion" call s:SQLCErrorMsg(msg) :sleep 2 return -1 elseif g:loaded_dbext < 600 let msg = "The dbext plugin must be at least version 5.30 " . \ " for dynamic SQL completion" call s:SQLCErrorMsg(msg) :sleep 2 return -1 endif return 1 endfunction function! s:SQLCAddAlias(table_name, table_alias, cols) let table_name = matchstr(a:table_name, '\%(.\{-}\.\)\?\zs\(.*\)' ) let table_alias = a:table_alias let cols = a:cols if g:omni_sql_use_tbl_alias != 'n' if table_alias == '' if 'da' =~? g:omni_sql_use_tbl_alias if table_name =~ '_' let save_keyword = &iskeyword setlocal iskeyword-=_ let table_alias = substitute( \ table_name, \ '\<[[:alpha:]]\+\>_\?', \ '\=strpart(submatch(0), 0, 1)', \ 'g' \ ) let &iskeyword = save_keyword elseif table_name =~ '\u\U' let table_alias = substitute( \ table_name, '\(\u\)\U*', '\1', 'g') else let table_alias = strpart(table_name, 0, 1) endif endif endif if table_alias != '' let table_alias = substitute(table_alias, '\w\zs\.\?\s*$', '.', '') if 'a' =~? g:omni_sql_use_tbl_alias && a:table_alias == '' let table_alias = inputdialog("Enter table alias:", table_alias) endif endif if table_alias != '' let cols = substitute(cols, '\<\w', table_alias.'&', 'g') endif endif return cols endfunction function! s:SQLCGetObjectOwner(object) let owner = matchstr( a:object, '^\("\|\[\)\?\zs\.\{-}\ze\("\|\]\)\?\.' ) return owner endfunction function! s:SQLCGetColumns(table_name, list_type) if a:table_name =~ '\.' let owner = matchstr( a:table_name, '^\zs.*\ze\..*\..*' ) let table = matchstr( a:table_name, '^\(.*\.\)\?\zs.*\ze\..*' ) let column = matchstr( a:table_name, '.*\.\zs.*' ) if g:omni_sql_include_owner == 1 && owner == '' && table != '' && column != '' let owner = table let table = column let column = '' endif else let owner = '' let table = matchstr(a:table_name, '^["\[\]a-zA-Z0-9_ ]\+\ze\.\?') let column = '' endif let table_name = table let table_cols = [] let table_alias = '' let move_to_top = 1 let table_name = substitute(table_name, '\s*\(.\{-}\)\s*$', '\1', 'g') let table_name = substitute(table_name, '^\c\(WHERE\|AND\|OR\)\s\+', '', '') if g:loaded_dbext >= 300 let saveSettingAlias = DB_listOption('use_tbl_alias') exec 'DBSetOption use_tbl_alias=n' endif let table_name_stripped = substitute(table_name, '["\[\]]*', '', 'g') let list_idx = index(s:tbl_name, table_name_stripped, 0, &ignorecase) if list_idx > -1 let table_cols = split(s:tbl_cols[list_idx], '\n') else let list_idx = index(s:tbl_alias, table_name_stripped, 0, &ignorecase) if list_idx > -1 let table_alias = table_name_stripped let table_name = s:tbl_name[list_idx] let table_cols = split(s:tbl_cols[list_idx], '\n') endif endif if list_idx == -1 let saveY = @y let saveSearch = @/ let saveWScan = &wrapscan let curline = line(".") let curcol = col(".") setlocal nowrapscan exec 'silent! normal! ?\<\c\(select\|update\|delete\|;\)\>'."\n" exec 'silent! normal! vl/\c\(\\|\\|\\|;\s*$\|\%$\)'."\n".'"yy' let query = @y let query = substitute(query, "\n", ' ', 'g') let found = 0 if query =~? '^\(select\|update\|delete\)' let found = 1 let table_name_new = matchstr(@y, \ '\c\(\\|\\|,\)\s*'. \ '\zs\(\("\|\[\)\?\w\+\("\|\]\)\?\.\)\?'. \ '\("\|\[\)\?\w\+\("\|\]\)\?\ze'. \ '\s\+\%(as\s\+\)\?\<'. \ matchstr(table_name, '.\{-}\ze\.\?$'). \ '\>'. \ '\s*\.\@!.*'. \ '\(\\|$\)'. \ '.*' \ ) if table_name_new != '' let table_alias = table_name if g:omni_sql_include_owner == 1 let table_name = matchstr( table_name_new, '^\zs\(.\{-}\.\)\?\(.\{-}\.\)\?.*\ze' ) else let table_name = matchstr( table_name_new, '^\(.\{-}\.\)\?\zs\(.\{-}\.\)\?.*\ze' ) endif let list_idx = index(s:tbl_name, table_name, 0, &ignorecase) if list_idx > -1 let table_cols = split(s:tbl_cols[list_idx]) let s:tbl_name[list_idx] = table_name let s:tbl_alias[list_idx] = table_alias else let list_idx = index(s:tbl_alias, table_name, 0, &ignorecase) if list_idx > -1 let table_cols = split(s:tbl_cols[list_idx]) let s:tbl_name[list_idx] = table_name let s:tbl_alias[list_idx] = table_alias endif endif endif else let found = 1 endif let @y = saveY let @/ = saveSearch let &wrapscan = saveWScan call cursor(curline, curcol) if found == 0 if g:loaded_dbext > 300 exec 'DBSetOption use_tbl_alias='.saveSettingAlias endif return [] endif endif if empty(table_cols) let table_cols_str = DB_getListColumn((owner!=''?owner.'.':'').table_name, 1, 1) if table_cols_str != "" let s:tbl_name = add( s:tbl_name, table_name ) let s:tbl_alias = add( s:tbl_alias, table_alias ) let s:tbl_cols = add( s:tbl_cols, table_cols_str ) let table_cols = split(table_cols_str, '\n') endif endif if g:loaded_dbext > 300 exec 'DBSetOption use_tbl_alias='.saveSettingAlias endif if a:list_type == 'csv' && !empty(table_cols) let cols = join(table_cols, ', ') let cols = s:SQLCAddAlias(table_name, table_alias, cols) let table_cols = [cols] endif return table_cols endfunction let &cpo= s:keepcpo unlet s:keepcpo if exists('+omnifunc') if &omnifunc == "" setlocal omnifunc=syntaxcomplete#Complete endif endif if exists('g:loaded_syntax_completion') finish endif let g:loaded_syntax_completion = 130 let s:cpo_save = &cpo set cpo&vim if !exists('g:omni_syntax_ignorecase') let g:omni_syntax_ignorecase = &ignorecase endif if !exists('g:omni_syntax_use_iskeyword') let g:omni_syntax_use_iskeyword = 1 endif if !exists('g:omni_syntax_use_single_byte') let g:omni_syntax_use_single_byte = 1 endif if !exists('g:omni_syntax_use_iskeyword_numeric') let g:omni_syntax_use_iskeyword_numeric = 1 endif if !exists('g:omni_syntax_minimum_length') let g:omni_syntax_minimum_length = 0 endif let s:syn_remove_words = 'matchgroup=,contains,'. \ 'links to,start=,end=' let s:cache_name = [] let s:cache_list = [] let s:prepended = '' function! syntaxcomplete#Complete(findstart, base) if !exists('b:omni_syntax_ignorecase') if exists('g:omni_syntax_ignorecase') let b:omni_syntax_ignorecase = g:omni_syntax_ignorecase else let b:omni_syntax_ignorecase = &ignorecase endif endif if a:findstart let line = getline('.') let start = col('.') - 1 let lastword = -1 while start > 0 if line[start - 1] =~ '\k' let start -= 1 let lastword = a:findstart else break endif endwhile if lastword == -1 let s:prepended = '' return start endif let s:prepended = strpart(line, start, (col('.') - 1) - start) return start endif let base = s:prepended let filetype = substitute(&filetype, '\.', '_', 'g') let list_idx = index(s:cache_name, filetype, 0, &ignorecase) if list_idx > -1 let compl_list = s:cache_list[list_idx] else let compl_list = OmniSyntaxList() let s:cache_name = add( s:cache_name, filetype ) let s:cache_list = add( s:cache_list, compl_list ) endif if base != '' let expr = 'v:val '.(g:omni_syntax_ignorecase==1?'=~?':'=~#')." '^".escape(base, '\\/.*$^~[]').".*'" let compl_list = filter(deepcopy(compl_list), expr) endif return compl_list endfunc function! syntaxcomplete#OmniSyntaxList(...) if a:0 > 0 let parms = [] if 3 == type(a:1) let parms = a:1 elseif 1 == type(a:1) let parms = split(a:1, ',') endif return OmniSyntaxList( parms ) else return OmniSyntaxList() endif endfunc function! OmniSyntaxList(...) let list_parms = [] if a:0 > 0 if 3 == type(a:1) let list_parms = a:1 elseif 1 == type(a:1) let list_parms = split(a:1, ',') endif endif if !exists('b:omni_syntax_use_iskeyword') if exists('g:omni_syntax_use_iskeyword') let b:omni_syntax_use_iskeyword = g:omni_syntax_use_iskeyword else let b:omni_syntax_use_iskeyword = 1 endif endif if !exists('b:omni_syntax_minimum_length') if exists('g:omni_syntax_minimum_length') let b:omni_syntax_minimum_length = g:omni_syntax_minimum_length else let b:omni_syntax_minimum_length = 0 endif endif let saveL = @l let filetype = substitute(&filetype, '\.', '_', 'g') if empty(list_parms) let syntax_group_include_{filetype} = '' if exists('g:omni_syntax_group_include_'.filetype) let syntax_group_include_{filetype} = \ substitute( g:omni_syntax_group_include_{filetype},'\s\+','','g') let list_parms = split(g:omni_syntax_group_include_{filetype}, ',') if syntax_group_include_{filetype} =~ '\w' let syntax_group_include_{filetype} = \ substitute( syntax_group_include_{filetype}, \ '\s*,\s*', '\\|', 'g' \ ) endif endif else endif if !empty(list_parms) && empty(substitute(join(list_parms), '[a-zA-Z ]', '', 'g')) redir @l silent! exec 'syntax list '.join(list_parms) redir END else redir @l silent! exec 'syntax list' redir END endif let syntax_full = "\n".@l let @l = saveL if syntax_full =~ 'E28' \ || syntax_full =~ 'E411' \ || syntax_full =~ 'E415' \ || syntax_full =~ 'No Syntax items' return [] endif let filetype = substitute(&filetype, '\.', '_', 'g') let list_exclude_groups = [] if a:0 > 0 else let syntax_group_exclude_{filetype} = '' if exists('g:omni_syntax_group_exclude_'.filetype) let syntax_group_exclude_{filetype} = \ substitute( g:omni_syntax_group_exclude_{filetype},'\s\+','','g') let list_exclude_groups = split(g:omni_syntax_group_exclude_{filetype}, ',') if syntax_group_exclude_{filetype} =~ '\w' let syntax_group_exclude_{filetype} = \ substitute( syntax_group_exclude_{filetype}, \ '\s*,\s*', '\\|', 'g' \ ) endif endif endif if empty(list_parms) let list_parms = [&filetype.'\w\+'] endif let syn_list = '' let index = 0 for group_regex in list_parms let next_group_regex = '\n' . \ '\zs'.group_regex.'\ze'. \ '\s\+xxx\s\+' let index = match(syntax_full, next_group_regex, index) if index == -1 && exists('b:current_syntax') && substitute(group_regex, '[^a-zA-Z ]\+.*', '', 'g') !~ '^'.b:current_syntax let next_group_regex = '\n' . \ '\zs'.b:current_syntax.'\w\+\ze'. \ '\s\+xxx\s\+' let index = 0 let index = match(syntax_full, next_group_regex, index) endif while index > -1 let group_name = matchstr( syntax_full, '\w\+', index ) let get_syn_list = 1 for exclude_group_name in list_exclude_groups if '\<'.exclude_group_name.'\>' =~ '\<'.group_name.'\>' let get_syn_list = 0 endif endfor if get_syn_list == 1 let extra_syn_list = s:SyntaxCSyntaxGroupItems(group_name, syntax_full) let syn_list = syn_list . extra_syn_list . "\n" endif let index = index + strlen(group_name) let index = match(syntax_full, next_group_regex, index) endwhile endfor let compl_list = sort(split(syn_list)) if &filetype == 'vim' let short_compl_list = [] for i in range(len(compl_list)) if i == len(compl_list)-1 let next = i else let next = i + 1 endif if compl_list[next] !~ '^'.compl_list[i].'.$' let short_compl_list += [compl_list[i]] endif endfor return short_compl_list else return compl_list endif endfunction function! s:SyntaxCSyntaxGroupItems( group_name, syntax_full ) let syn_list = "" let syntax_group = matchstr(a:syntax_full, \ "\n".a:group_name.'\s\+xxx\s\+\zs.\{-}\ze\(\n\w\|\%$\)' \ ) if syntax_group != "" let syn_list = substitute( \ syntax_group, '\<\('. \ substitute( \ escape(s:syn_remove_words, '\\/.*$^~[]') \ , ',', '\\|', 'g' \ ). \ '\).\{-}\%($\|'."\n".'\)' \ , "\n", 'g' \ ) let syn_list_old = syn_list while syn_list =~ '\\s\+\/' if syn_list =~ 'perlElseIfError' let syn_list = syn_list endif if syn_list =~ '\.\{-}\ze\\\@\ze.\{-}\\\@\s\+\/' let syn_list = '' endif endwhile let syn_list = substitute( \ syn_list, '\<\(contained\|nextgroup=[@a-zA-Z,]*\)' \ , "", 'g' \ ) let syn_list = substitute( \ syn_list, '\<\(skipwhite\|skipnl\|skipempty\)\>' \ , "", 'g' \ ) let syn_list = substitute( \ syn_list, '\%(^\|\n\)\@<=\s*\(@\w\+\)' \ , "", 'g' \ ) if b:omni_syntax_use_iskeyword == 0 let syn_list = substitute( syn_list, '[^0-9A-Za-z_ ]', ' ', 'g' ) else if g:omni_syntax_use_iskeyword_numeric == 1 let accepted_chars = '' for item in split(&iskeyword, ',') if item =~ '\d-\d' let [b:start, b:end] = split(item, '-') for range_item in range( b:start, b:end ) if range_item <= 127 || g:omni_syntax_use_single_byte == 0 if nr2char(range_item) =~ '\p' let accepted_chars = accepted_chars . nr2char(range_item) endif endif endfor elseif item =~ '^\d\+$' if item < 127 || g:omni_syntax_use_single_byte == 0 if nr2char(item) =~ '\p' let accepted_chars = accepted_chars . nr2char(item) endif endif else if char2nr(item) < 127 || g:omni_syntax_use_single_byte == 0 if item =~ '\p' let accepted_chars = accepted_chars . item endif endif endif endfor let accepted_chars = escape(accepted_chars, ']\-^' ) let syn_list = substitute( syn_list, '[^A-Za-z'.accepted_chars.']', ' ', 'g' ) else let accept_chars = ','.&iskeyword.',' let accept_chars = substitute(accept_chars, ',\@<=[^,]\+-[^,]\+,', '', 'g') let accept_chars = substitute(accept_chars, ',\@<=\d\{-},', '', 'g') let accept_chars = substitute(accept_chars, ',', '', 'g') let accept_chars = escape(accept_chars, ']\-^' ) let syn_list = substitute( syn_list, '[^0-9A-Za-z_'.accept_chars.']', ' ', 'g' ) endif endif if b:omni_syntax_minimum_length > 0 let syn_list = substitute(' '.syn_list.' ', ' \S\{,'.b:omni_syntax_minimum_length.'}\ze ', ' ', 'g') endif else let syn_list = '' endif return syn_list endfunction function! OmniSyntaxShowChars(spec) let result = [] for item in split(a:spec, ',') if len(item) > 1 if item == '@-@' call add(result, char2nr(item)) else call extend(result, call('range', split(item, '-'))) endif else if item == '@' " assume this is [A-Za-z] for [c1, c2] in [['A', 'Z'], ['a', 'z']] call extend(result, range(char2nr(c1), char2nr(c2))) endfor else call add(result, char2nr(item)) endif endif endfor return join(map(result, 'nr2char(v:val)'), ', ') endfunction let &cpo = s:cpo_save unlet s:cpo_save if &cp || exists("g:loaded_tar") finish endif let g:loaded_tar= "v29" if v:version < 702 echohl WarningMsg echo "***warning*** this version of tar needs vim 7.2" echohl Normal finish endif let s:keepcpo= &cpo set cpo&vim if !exists("g:tar_browseoptions") let g:tar_browseoptions= "Ptf" endif if !exists("g:tar_readoptions") let g:tar_readoptions= "OPxf" endif if !exists("g:tar_cmd") let g:tar_cmd= "tar" endif if !exists("g:tar_writeoptions") let g:tar_writeoptions= "uf" endif if !exists("g:netrw_cygwin") if has("win32") || has("win95") || has("win64") || has("win16") if &shell =~ '\%(\\|\\)\%(\.exe\)\=$' let g:netrw_cygwin= 1 else let g:netrw_cygwin= 0 endif else let g:netrw_cygwin= 0 endif endif if !exists("g:tar_copycmd") if !exists("g:netrw_localcopycmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin let g:netrw_localcopycmd= "cp" else let g:netrw_localcopycmd= "copy" endif elseif has("unix") || has("macunix") let g:netrw_localcopycmd= "cp" else let g:netrw_localcopycmd= "" endif endif let g:tar_copycmd= g:netrw_localcopycmd endif if !exists("g:tar_extractcmd") let g:tar_extractcmd= "tar -xf" endif if !exists("g:tar_shq") if exists("+shq") && exists("&shq") && &shq != "" let g:tar_shq= &shq elseif has("win32") || has("win95") || has("win64") || has("win16") if exists("g:netrw_cygwin") && g:netrw_cygwin let g:tar_shq= "'" else let g:tar_shq= '"' endif else let g:tar_shq= "'" endif endif fun! tar#Browse(tarfile) let repkeep= &report set report=10 if !executable(g:tar_cmd) redraw! echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' let &report= repkeep return endif if !filereadable(a:tarfile) if a:tarfile !~# '^\a\+://' redraw! echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None endif let &report= repkeep return endif if &ma != 1 set ma endif let b:tarfile= a:tarfile setlocal noswapfile setlocal buftype=nofile setlocal bufhidden=hide setlocal nobuflisted setlocal nowrap set ft=tar let lastline= line("$") call setline(lastline+1,'" tar.vim version '.g:loaded_tar) call setline(lastline+2,'" Browsing tarfile '.a:tarfile) call setline(lastline+3,'" Select a file with cursor and press ENTER') keepj $put ='' keepj sil! 0d keepj $ let tarfile= a:tarfile if has("win32unix") && executable("cygpath") let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif let curlast= line("$") if tarfile =~# '\.\(gz\|tgz\)$' let gzip_command = s:get_gzip_command(tarfile) exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.lrp' exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$' exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(lzma\|tlz\)$' exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(xz\|txz\)$' exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " else if tarfile =~ '^\s*-' let tarfile = substitute(tarfile, '-', './-', '') endif exe "sil! r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1) endif if v:shell_error != 0 redraw! echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" return endif if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)') redraw! echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None keepj sil! %d let eikeep= &ei set ei=BufReadCmd,FileReadCmd exe "r ".fnameescape(a:tarfile) let &ei= eikeep keepj sil! 1d return endif setlocal noma nomod ro noremap :call TarBrowseSelect() let &report= repkeep endfun fun! s:TarBrowseSelect() let repkeep= &report set report=10 let fname= getline(".") if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-' redraw! echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"' return endif if fname =~ '^"' let &report= repkeep return endif let tarfile= b:tarfile let curfile= expand("%") if has("win32unix") && executable("cygpath") let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif new if !exists("g:tar_nomax") || g:tar_nomax == 0 wincmd _ endif let s:tblfile_{winnr()}= curfile call tar#Read("tarfile:".tarfile.'::'.fname,1) filetype detect set nomod exe 'com! -buffer -nargs=? -complete=file TarDiff :call tar#Diff(,"'.fnameescape(fname).'")' let &report= repkeep endfun fun! tar#Read(fname,mode) let repkeep= &report set report=10 let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','') let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','') if has("win32unix") && executable("cygpath") let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif if fname =~ '\.bz2$' && executable("bzcat") let decmp= "|bzcat" let doro = 1 elseif fname =~ '\.gz$' && executable("zcat") let decmp= "|zcat" let doro = 1 elseif fname =~ '\.lzma$' && executable("lzcat") let decmp= "|lzcat" let doro = 1 elseif fname =~ '\.xz$' && executable("xzcat") let decmp= "|xzcat" let doro = 1 else let decmp="" let doro = 0 if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$' setlocal bin endif endif if exists("g:tar_secure") let tar_secure= " -- " else let tar_secure= " " endif if tarfile =~# '\.bz2$' exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.\(gz\|tgz\)$' let gzip_command = s:get_gzip_command(tarfile) exe "sil! r! " . gzip_command . " -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.lrp$' exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.lzma$' exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.\(xz\|txz\)$' exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp else if tarfile =~ '^\s*-' let tarfile = substitute(tarfile, '-', './-', '') endif exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp endif if doro setlocal ro endif let b:tarfile= a:fname exe "file tarfile::".fnameescape(fname) keepj sil! 0d set nomod let &report= repkeep endfun fun! tar#Write(fname) let repkeep= &report set report=10 if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-' redraw! echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"' return endif if !executable(g:tar_cmd) redraw! echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' let &report= repkeep return endif if !exists("*mkdir") redraw! echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None let &report= repkeep return endif let curdir= getcwd() let tmpdir= tempname() if tmpdir =~ '\.' let tmpdir= substitute(tmpdir,'\.[^.]*$','','e') endif call mkdir(tmpdir,"p") try exe "cd ".fnameescape(tmpdir) catch /^Vim\%((\a\+)\)\=:E344/ redraw! echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None let &report= repkeep return endtry if isdirectory("_ZIPVIM_") call s:Rmdir("_ZIPVIM_") endif call mkdir("_ZIPVIM_") cd _ZIPVIM_ let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','') let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','') let gzip_command = s:get_gzip_command(tarfile) if tarfile =~# '\.bz2' call system("bzip2 -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.bz2','','e') let compress= "bzip2 -- ".shellescape(tarfile,0) elseif tarfile =~# '\.gz' call system(gzip_command . " -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.gz','','e') let compress= "gzip -- ".shellescape(tarfile,0) elseif tarfile =~# '\.tgz' call system(gzip_command . " -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.tgz','.tar','e') let compress= "gzip -- ".shellescape(tarfile,0) let tgz = 1 elseif tarfile =~# '\.xz' call system("xz -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.xz','','e') let compress= "xz -- ".shellescape(tarfile,0) elseif tarfile =~# '\.lzma' call system("lzma -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.lzma','','e') let compress= "lzma -- ".shellescape(tarfile,0) endif if v:shell_error != 0 redraw! echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None else if fname =~ '/' let dirpath = substitute(fname,'/[^/]\+$','','e') if has("win32unix") && executable("cygpath") let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e') endif call mkdir(dirpath,"p") endif if tarfile !~ '/' let tarfile= curdir.'/'.tarfile endif if tarfile =~ '^\s*-' let tarfile = substitute(tarfile, '-', './-', '') endif if exists("g:tar_secure") let tar_secure= " -- " else let tar_secure= " " endif exe "w! ".fnameescape(fname) if has("win32unix") && executable("cygpath") let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e') endif call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) if v:shell_error != 0 redraw! echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None else call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) if v:shell_error != 0 redraw! echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None elseif exists("compress") call system(compress) if exists("tgz") call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e')) endif endif endif if s:tblfile_{winnr()} =~ '^\a\+://' let tblfile= s:tblfile_{winnr()} 1split|enew let binkeep= &l:binary let eikeep = &ei set binary ei=all exe "e! ".fnameescape(tarfile) call netrw#NetWrite(tblfile) let &ei = eikeep let &l:binary = binkeep q! unlet s:tblfile_{winnr()} endif endif cd .. call s:Rmdir("_ZIPVIM_") exe "cd ".fnameescape(curdir) setlocal nomod let &report= repkeep endfun fun! tar#Diff(userfname,fname) let fname= a:fname if a:userfname != "" let fname= a:userfname endif if filereadable(fname) diffthis wincmd v exe "e ".fnameescape(fname) diffthis else redraw! echo "***warning*** unable to read file<".fname.">" endif endfun fun! s:Rmdir(fname) if has("unix") call system("/bin/rm -rf -- ".shellescape(a:fname,0)) elseif has("win32") || has("win95") || has("win64") || has("win16") if &shell =~? "sh$" call system("/bin/rm -rf -- ".shellescape(a:fname,0)) else call system("del /S ".shellescape(a:fname,0)) endif endif endfun fun! tar#Vimuntar(...) let tarball = expand("%") let tarbase = substitute(tarball,'\..*$','','') let tarhome = expand("%:p") if has("win32") || has("win95") || has("win64") || has("win16") let tarhome= substitute(tarhome,'\\','/','g') endif let tarhome= substitute(tarhome,'/[^/]*$','','') let tartail = expand("%:t") let curdir = getcwd() if a:0 > 0 && a:1 != "" let vimhome= a:1 else let vimhome= vimball#VimballHome() endif if simplify(curdir) != simplify(vimhome) call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) exe "cd ".fnameescape(vimhome) endif if tartail =~ '\.tgz' let gzip_command = s:get_gzip_command(tarfile) if executable(gzip_command) silent exe "!" . gzip_command . " -d ".shellescape(tartail) elseif executable("gunzip") silent exe "!gunzip ".shellescape(tartail) elseif executable("gzip") silent exe "!gzip -d ".shellescape(tartail) else echoerr "unable to decompress<".tartail."> on this sytem" if simplify(curdir) != simplify(tarhome) call delete(tartail.".tar") exe "cd ".fnameescape(curdir) endif return endif else call vimball#Decompress(tartail,0) endif let extractcmd= netrw#WinPath(g:tar_extractcmd) call system(extractcmd." ".shellescape(tarbase.".tar")) if filereadable("doc/".tarbase.".txt") exe "helptags ".getcwd()."/doc" endif if simplify(tarhome) != simplify(vimhome) call delete(vimhome."/".tarbase.".tar") exe "cd ".fnameescape(curdir) endif endfun func s:get_gzip_command(file) if a:file =~# 'z$' let filetype = system('file ' . a:file) if filetype =~ 'bzip2 compressed' && executable('bzip2') return 'bzip2' endif if filetype =~ 'XZ compressed' && executable('xz') return 'xz' endif endif if a:file =~# 'bz2$' return 'bzip2' endif if a:file =~# 'xz$' return 'xz' endif return 'gzip' endfunc let &cpo= s:keepcpo unlet s:keepcpo let s:cpo_sav = &cpo set cpo&vim let g:tohtml#encoding_to_charset = { \ 'latin1' : 'ISO-8859-1', \ 'iso-8859-2' : 'ISO-8859-2', \ 'iso-8859-3' : 'ISO-8859-3', \ 'iso-8859-4' : 'ISO-8859-4', \ 'iso-8859-5' : 'ISO-8859-5', \ 'iso-8859-6' : 'ISO-8859-6', \ 'iso-8859-7' : 'ISO-8859-7', \ 'iso-8859-8' : 'ISO-8859-8', \ 'iso-8859-9' : 'ISO-8859-9', \ 'iso-8859-10' : '', \ 'iso-8859-13' : 'ISO-8859-13', \ 'iso-8859-14' : '', \ 'iso-8859-15' : 'ISO-8859-15', \ 'koi8-r' : 'KOI8-R', \ 'koi8-u' : 'KOI8-U', \ 'macroman' : 'macintosh', \ 'cp437' : '', \ 'cp775' : '', \ 'cp850' : '', \ 'cp852' : '', \ 'cp855' : '', \ 'cp857' : '', \ 'cp860' : '', \ 'cp861' : '', \ 'cp862' : '', \ 'cp863' : '', \ 'cp865' : '', \ 'cp866' : 'IBM866', \ 'cp869' : '', \ 'cp874' : '', \ 'cp1250' : 'windows-1250', \ 'cp1251' : 'windows-1251', \ 'cp1253' : 'windows-1253', \ 'cp1254' : 'windows-1254', \ 'cp1255' : 'windows-1255', \ 'cp1256' : 'windows-1256', \ 'cp1257' : 'windows-1257', \ 'cp1258' : 'windows-1258', \ 'euc-jp' : 'EUC-JP', \ 'sjis' : 'Shift_JIS', \ 'cp932' : 'Shift_JIS', \ 'cp949' : '', \ 'euc-kr' : 'EUC-KR', \ 'cp936' : 'GBK', \ 'euc-cn' : 'GB2312', \ 'big5' : 'Big5', \ 'cp950' : 'Big5', \ 'utf-8' : 'UTF-8', \ 'ucs-2' : 'UTF-8', \ 'ucs-2le' : 'UTF-8', \ 'utf-16' : 'UTF-8', \ 'utf-16le' : 'UTF-8', \ 'ucs-4' : 'UTF-8', \ 'ucs-4le' : 'UTF-8', \ } lockvar g:tohtml#encoding_to_charset let g:tohtml#charset_to_encoding = { \ 'iso_8859-1:1987' : 'latin1', \ 'iso-ir-100' : 'latin1', \ 'iso_8859-1' : 'latin1', \ 'iso-8859-1' : 'latin1', \ 'latin1' : 'latin1', \ 'l1' : 'latin1', \ 'ibm819' : 'latin1', \ 'cp819' : 'latin1', \ 'csisolatin1' : 'latin1', \ 'iso_8859-2:1987' : 'iso-8859-2', \ 'iso-ir-101' : 'iso-8859-2', \ 'iso_8859-2' : 'iso-8859-2', \ 'iso-8859-2' : 'iso-8859-2', \ 'latin2' : 'iso-8859-2', \ 'l2' : 'iso-8859-2', \ 'csisolatin2' : 'iso-8859-2', \ 'iso_8859-3:1988' : 'iso-8859-3', \ 'iso-ir-109' : 'iso-8859-3', \ 'iso_8859-3' : 'iso-8859-3', \ 'iso-8859-3' : 'iso-8859-3', \ 'latin3' : 'iso-8859-3', \ 'l3' : 'iso-8859-3', \ 'csisolatin3' : 'iso-8859-3', \ 'iso_8859-4:1988' : 'iso-8859-4', \ 'iso-ir-110' : 'iso-8859-4', \ 'iso_8859-4' : 'iso-8859-4', \ 'iso-8859-4' : 'iso-8859-4', \ 'latin4' : 'iso-8859-4', \ 'l4' : 'iso-8859-4', \ 'csisolatin4' : 'iso-8859-4', \ 'iso_8859-5:1988' : 'iso-8859-5', \ 'iso-ir-144' : 'iso-8859-5', \ 'iso_8859-5' : 'iso-8859-5', \ 'iso-8859-5' : 'iso-8859-5', \ 'cyrillic' : 'iso-8859-5', \ 'csisolatincyrillic' : 'iso-8859-5', \ 'iso_8859-6:1987' : 'iso-8859-6', \ 'iso-ir-127' : 'iso-8859-6', \ 'iso_8859-6' : 'iso-8859-6', \ 'iso-8859-6' : 'iso-8859-6', \ 'ecma-114' : 'iso-8859-6', \ 'asmo-708' : 'iso-8859-6', \ 'arabic' : 'iso-8859-6', \ 'csisolatinarabic' : 'iso-8859-6', \ 'iso_8859-7:1987' : 'iso-8859-7', \ 'iso-ir-126' : 'iso-8859-7', \ 'iso_8859-7' : 'iso-8859-7', \ 'iso-8859-7' : 'iso-8859-7', \ 'elot_928' : 'iso-8859-7', \ 'ecma-118' : 'iso-8859-7', \ 'greek' : 'iso-8859-7', \ 'greek8' : 'iso-8859-7', \ 'csisolatingreek' : 'iso-8859-7', \ 'iso_8859-8:1988' : 'iso-8859-8', \ 'iso-ir-138' : 'iso-8859-8', \ 'iso_8859-8' : 'iso-8859-8', \ 'iso-8859-8' : 'iso-8859-8', \ 'hebrew' : 'iso-8859-8', \ 'csisolatinhebrew' : 'iso-8859-8', \ 'iso_8859-9:1989' : 'iso-8859-9', \ 'iso-ir-148' : 'iso-8859-9', \ 'iso_8859-9' : 'iso-8859-9', \ 'iso-8859-9' : 'iso-8859-9', \ 'latin5' : 'iso-8859-9', \ 'l5' : 'iso-8859-9', \ 'csisolatin5' : 'iso-8859-9', \ 'iso-8859-10' : 'iso-8859-10', \ 'iso-ir-157' : 'iso-8859-10', \ 'l6' : 'iso-8859-10', \ 'iso_8859-10:1992' : 'iso-8859-10', \ 'csisolatin6' : 'iso-8859-10', \ 'latin6' : 'iso-8859-10', \ 'iso-8859-13' : 'iso-8859-13', \ 'iso-8859-14' : 'iso-8859-14', \ 'iso-ir-199' : 'iso-8859-14', \ 'iso_8859-14:1998' : 'iso-8859-14', \ 'iso_8859-14' : 'iso-8859-14', \ 'latin8' : 'iso-8859-14', \ 'iso-celtic' : 'iso-8859-14', \ 'l8' : 'iso-8859-14', \ 'iso-8859-15' : 'iso-8859-15', \ 'iso_8859-15' : 'iso-8859-15', \ 'latin-9' : 'iso-8859-15', \ 'koi8-r' : 'koi8-r', \ 'cskoi8r' : 'koi8-r', \ 'koi8-u' : 'koi8-u', \ 'macintosh' : 'macroman', \ 'mac' : 'macroman', \ 'csmacintosh' : 'macroman', \ 'ibm437' : 'cp437', \ 'cp437' : 'cp437', \ '437' : 'cp437', \ 'cspc8codepage437' : 'cp437', \ 'ibm775' : 'cp775', \ 'cp775' : 'cp775', \ 'cspc775baltic' : 'cp775', \ 'ibm850' : 'cp850', \ 'cp850' : 'cp850', \ '850' : 'cp850', \ 'cspc850multilingual' : 'cp850', \ 'ibm852' : 'cp852', \ 'cp852' : 'cp852', \ '852' : 'cp852', \ 'cspcp852' : 'cp852', \ 'ibm855' : 'cp855', \ 'cp855' : 'cp855', \ '855' : 'cp855', \ 'csibm855' : 'cp855', \ 'ibm857' : 'cp857', \ 'cp857' : 'cp857', \ '857' : 'cp857', \ 'csibm857' : 'cp857', \ 'ibm860' : 'cp860', \ 'cp860' : 'cp860', \ '860' : 'cp860', \ 'csibm860' : 'cp860', \ 'ibm861' : 'cp861', \ 'cp861' : 'cp861', \ '861' : 'cp861', \ 'cp-is' : 'cp861', \ 'csibm861' : 'cp861', \ 'ibm862' : 'cp862', \ 'cp862' : 'cp862', \ '862' : 'cp862', \ 'cspc862latinhebrew' : 'cp862', \ 'ibm863' : 'cp863', \ 'cp863' : 'cp863', \ '863' : 'cp863', \ 'csibm863' : 'cp863', \ 'ibm865' : 'cp865', \ 'cp865' : 'cp865', \ '865' : 'cp865', \ 'csibm865' : 'cp865', \ 'ibm866' : 'cp866', \ 'cp866' : 'cp866', \ '866' : 'cp866', \ 'csibm866' : 'cp866', \ 'ibm869' : 'cp869', \ 'cp869' : 'cp869', \ '869' : 'cp869', \ 'cp-gr' : 'cp869', \ 'csibm869' : 'cp869', \ 'windows-1250' : 'cp1250', \ 'windows-1251' : 'cp1251', \ 'windows-1253' : 'cp1253', \ 'windows-1254' : 'cp1254', \ 'windows-1255' : 'cp1255', \ 'windows-1256' : 'cp1256', \ 'windows-1257' : 'cp1257', \ 'windows-1258' : 'cp1258', \ 'extended_unix_code_packed_format_for_japanese' : 'euc-jp', \ 'cseucpkdfmtjapanese' : 'euc-jp', \ 'euc-jp' : 'euc-jp', \ 'shift_jis' : 'sjis', \ 'ms_kanji' : 'sjis', \ 'sjis' : 'sjis', \ 'csshiftjis' : 'sjis', \ 'ibm-thai' : 'cp874', \ 'csibmthai' : 'cp874', \ 'ks_c_5601-1987' : 'cp949', \ 'iso-ir-149' : 'cp949', \ 'ks_c_5601-1989' : 'cp949', \ 'ksc_5601' : 'cp949', \ 'korean' : 'cp949', \ 'csksc56011987' : 'cp949', \ 'euc-kr' : 'euc-kr', \ 'cseuckr' : 'euc-kr', \ 'gbk' : 'cp936', \ 'cp936' : 'cp936', \ 'ms936' : 'cp936', \ 'windows-936' : 'cp936', \ 'gb_2312-80' : 'euc-cn', \ 'iso-ir-58' : 'euc-cn', \ 'chinese' : 'euc-cn', \ 'csiso58gb231280' : 'euc-cn', \ 'big5' : 'big5', \ 'csbig5' : 'big5', \ 'utf-8' : 'utf-8', \ 'iso-10646-ucs-2' : 'ucs-2', \ 'csunicode' : 'ucs-2', \ 'utf-16' : 'utf-16', \ 'utf-16be' : 'utf-16', \ 'utf-16le' : 'utf-16le', \ 'utf-32' : 'ucs-4', \ 'utf-32be' : 'ucs-4', \ 'utf-32le' : 'ucs-4le', \ 'iso-10646-ucs-4' : 'ucs-4', \ 'csucs4' : 'ucs-4' \ } lockvar g:tohtml#charset_to_encoding func! tohtml#Convert2HTML(line1, line2) "{{{ let s:settings = tohtml#GetUserSettings() if !&diff || s:settings.diff_one_file "{{{ if a:line2 >= a:line1 let g:html_start_line = a:line1 let g:html_end_line = a:line2 else let g:html_start_line = a:line2 let g:html_end_line = a:line1 endif runtime syntax/2html.vim "}}} else "{{{ let win_list = [] let buf_list = [] windo if &diff | call add(win_list, winbufnr(0)) | endif let s:settings.whole_filler = 1 let g:html_diff_win_num = 0 for window in win_list exe ":" . bufwinnr(window) . "wincmd w" if !exists('g:html_use_encoding') && \ (((&l:fileencoding=='' || (&l:buftype!='' && &l:buftype!=?'help')) \ && &encoding!=?s:settings.vim_encoding) \ || &l:fileencoding!='' && &l:fileencoding!=?s:settings.vim_encoding) echohl WarningMsg echomsg "TOhtml: mismatched file encodings in Diff buffers, using UTF-8" echohl None let s:settings.vim_encoding = 'utf-8' let s:settings.encoding = 'UTF-8' endif let g:html_start_line = 1 let g:html_end_line = line('$') let g:html_diff_win_num += 1 runtime syntax/2html.vim call add(buf_list, bufnr('%')) endfor unlet g:html_diff_win_num call tohtml#Diff2HTML(win_list, buf_list) endif "}}} unlet g:html_start_line unlet g:html_end_line unlet s:settings endfunc "}}} func! tohtml#Diff2HTML(win_list, buf_list) "{{{ let xml_line = "" let tag_close = '>' let s:old_paste = &paste set paste let s:old_magic = &magic set magic if s:settings.use_xhtml if s:settings.encoding != "" let xml_line = "" else let xml_line = "" endif let tag_close = ' />' endif let style = [s:settings.use_xhtml ? "" : '-->'] let body_line = '' let html = [] if s:settings.use_xhtml call add(html, xml_line) endif if s:settings.use_xhtml call add(html, "") call add(html, '') elseif s:settings.use_css && !s:settings.no_pre call add(html, "") call add(html, '') else call add(html, '') call add(html, '') endif call add(html, '') if s:settings.encoding != "" && !s:settings.use_xhtml call add(html, "diff') call add(html, '') let body_line_num = len(html) if !empty(s:settings.prevent_copy) call add(html, "") call add(html, "") call add(html, "
0
") call add(html, "
") call add(html, "
") else call add(html, '') endif call add(html, "") call add(html, '') for buf in a:win_list call add(html, '') endfor call add(html, '') let diff_style_start = 0 let insert_index = 0 for buf in a:buf_list let temp = [] exe bufwinnr(buf) . 'wincmd w' setlocal nofoldenable if body_line == '' 1 call search('', 'b') let s:body_end_line = getline('.') endif 1 let style_start = search('^') if style_start > 0 && style_end > 0 let buf_styles = getline(style_start + 1, style_end - 1) for a_style in buf_styles if index(style, a_style) == -1 if diff_style_start == 0 if a_style =~ '\\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_ $ ??,$d_ let temp = getline(1,'$') let temp[0] = substitute(temp[0], " id='vimCodeElement[^']*'", "", "") normal! 2u if s:settings.use_css call add(html, '') quit! endfor let html[body_line_num] = body_line call add(html, '') call add(html, '
'.bufname(buf).'
') elseif s:settings.use_xhtml call add(html, '
') else call add(html, '
') endif let html += temp call add(html, '
') call add(html, s:body_end_line) call add(html, '') call add(html, '') let i = 1 let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html") while filereadable(name) let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e") let i += 1 endwhile exe "topleft new " . name setlocal modifiable %d let &l:fileencoding=s:settings.vim_encoding if s:settings.vim_encoding == 'utf-8' setlocal nobomb else setlocal bomb endif call append(0, html) if len(style) > 0 1 let style_start = search('^')-1 let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy) if s:uses_script call append(style_start, [ \ '', \ s:settings.use_xhtml ? '//]]>' : '-->', \ "" \ ]) endif if !empty(s:settings.prevent_copy) call append(style_start, [ \ '', \ '/* simulate a "ch" unit by asking the browser how big a zero character is */', \ 'function FixCharWidth() {', \ ' /* get the hidden element which gives the width of a single character */', \ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;', \ ' /* get all input elements, we''ll filter on class later */', \ ' var inputTags = document.getElementsByTagName("input");', \ ' var ratio = 5;', \ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;', \ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;', \ ' if (inputWidth > goodWidth) {', \ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {', \ ' ratio += 5;', \ ' }', \ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;', \ ' }', \ '}' \ ]) endif if s:settings.line_ids call append(style_start, [ \ " /* Always jump to new location even if the line was hidden inside a fold, or", \ " * we corrected the raw number to a line ID.", \ " */", \ " if (lineElem) {", \ " lineElem.scrollIntoView(true);", \ " }", \ " return true;", \ "}", \ "if ('onhashchange' in window) {", \ " window.onhashchange = JumpToLine;", \ "}" \ ]) if s:settings.dynamic_folds call append(style_start, [ \ "", \ " /* navigate upwards in the DOM tree to open all folds containing the line */", \ " var node = lineElem;", \ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')", \ " {", \ " if (node.className == 'closed-fold')", \ " {", \ " /* toggle open the fold ID (remove window ID) */", \ " toggleFold(node.id.substr(4));", \ " }", \ " node = node.parentNode;", \ " }", \ ]) endif endif if s:settings.line_ids call append(style_start, [ \ "", \ "/* function to open any folds containing a jumped-to line before jumping to it */", \ "function JumpToLine()", \ "{", \ " var lineNum;", \ " lineNum = window.location.hash;", \ " lineNum = lineNum.substr(1); /* strip off '#' */", \ "", \ " if (lineNum.indexOf('L') == -1) {", \ " lineNum = 'L'+lineNum;", \ " }", \ " if (lineNum.indexOf('W') == -1) {", \ " lineNum = 'W1'+lineNum;", \ " }", \ " var lineElem = document.getElementById(lineNum);" \ ]) endif if s:settings.dynamic_folds call append(style_start, [ \ " function toggleFold(objID)", \ " {", \ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)", \ " {", \ " var fold;", \ ' fold = document.getElementById("win"+win_num+objID);', \ " if(fold.className == 'closed-fold')", \ " {", \ " fold.className = 'open-fold';", \ " }", \ " else if (fold.className == 'open-fold')", \ " {", \ " fold.className = 'closed-fold';", \ " }", \ " }", \ " }", \ ]) endif if s:uses_script call append(style_start, [ \ "' let b:InPHPcode = 0 let b:InPHPcode_tofind = s:PHP_startindenttag endif endif " }}} if 1 > b:InPHPcode && !b:InPHPcode_and_script return -1 endif let addSpecial = 0 if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)' let addSpecial = b:PHP_outdentSLComments if b:PHP_LastIndentedWasComment == 1 return indent(real_PHP_lastindented) endif let b:PHP_LastIndentedWasComment = 1 else let b:PHP_LastIndentedWasComment = 0 endif " }}} if b:PHP_InsideMultilineComment || b:UserIsTypingComment if cline =~ '^\s*\*\%(\/\)\@!' if last_line =~ '^\s*/\*' return indent(lnum) + 1 else return indent(lnum) endif else let b:PHP_InsideMultilineComment = 0 endif endif if !b:PHP_InsideMultilineComment && cline =~ '^\s*/\*\%(.*\*/\)\@!' if getline(v:lnum + 1) !~ '^\s*\*' return -1 endif let b:PHP_InsideMultilineComment = 1 endif " }}} if cline =~# '^\s*' && b:PHP_outdentphpescape return 0 endif if cline =~ '^\s*?>' && cline !~# '' let b:PHP_CurrentIndentLevel = b:PHP_default_indenting return indent(FindTheIfOfAnElse(v:lnum, 1)) elseif cline =~# s:defaultORcase return FindTheSwitchIndent(v:lnum) + shiftwidth() * b:PHP_vintage_case_default_indent elseif cline =~ '^\s*)\=\s*{' let previous_line = last_line let last_line_num = lnum while last_line_num > 1 if previous_line =~ terminated || previous_line =~ s:structureHead let ind = indent(last_line_num) if b:PHP_BracesAtCodeLevel let ind = ind + shiftwidth() endif return ind endif let last_line_num = GetLastRealCodeLNum(last_line_num - 1) let previous_line = getline(last_line_num) endwhile elseif cline =~ '^\s*->' return FindArrowIndent(lnum) elseif last_line =~# unstated && cline !~ '^\s*);\='.endline let ind = ind + shiftwidth() " we indent one level further when the preceding line is not stated return ind + addSpecial elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated let previous_line = last_line let last_line_num = lnum let LastLineClosed = 1 let isSingleLineBlock = 0 while 1 if ! isSingleLineBlock && previous_line =~ '^\s*}\|;\s*}'.endline call cursor(last_line_num, 1) if previous_line !~ '^}' call search('}\|;\s*}'.endline, 'W') end let oldLastLine = last_line_num let last_line_num = searchpair('{', '', '}', 'bW', 'Skippmatch()') if getline(last_line_num) =~ '^\s*{' let last_line_num = GetLastRealCodeLNum(last_line_num - 1) elseif oldLastLine == last_line_num let isSingleLineBlock = 1 continue endif let previous_line = getline(last_line_num) continue else let isSingleLineBlock = 0 if getline(last_line_num) =~# '^\s*else\%(if\)\=\>' let last_line_num = FindTheIfOfAnElse(last_line_num, 0) continue endif let last_match = last_line_num let one_ahead_indent = indent(last_line_num) let last_line_num = GetLastRealCodeLNum(last_line_num - 1) let two_ahead_indent = indent(last_line_num) let after_previous_line = previous_line let previous_line = getline(last_line_num) if previous_line =~# s:defaultORcase.'\|{'.endline break endif if after_previous_line=~# '^\s*'.s:blockstart.'.*)'.endline && previous_line =~# '[;}]'.endline break endif if one_ahead_indent == two_ahead_indent || last_line_num < 1 if previous_line =~# '\%(;\|^\s*}\)'.endline || last_line_num < 1 break endif endif endif endwhile if indent(last_match) != ind let ind = indent(last_match) let b:PHP_CurrentIndentLevel = b:PHP_default_indenting return ind + addSpecial endif endif if (last_line !~ '^\s*}\%(}}\)\@!') let plinnum = GetLastRealCodeLNum(lnum - 1) else let plinnum = GetLastRealCodeLNum(FindOpenBracket(lnum, 1) - 1) endif let AntepenultimateLine = getline(plinnum) let last_line = StripEndlineComments(last_line) if ind == b:PHP_default_indenting if last_line =~ terminated && last_line !~# s:defaultORcase let LastLineClosed = 1 endif endif if !LastLineClosed let openedparent = -1 if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(\[]'.endline && BalanceDirection(last_line) > 0 let dontIndent = 0 if last_line =~ '\S\+\s*{'.endline && last_line !~ '^\s*[)\]]\+\(\s*:\s*'.s:PHP_validVariable.'\)\=\s*{'.endline && last_line !~ s:structureHead let dontIndent = 1 endif if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{') let ind = ind + shiftwidth() endif if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1 let b:PHP_CurrentIndentLevel = ind endif elseif last_line =~ '),'.endline && BalanceDirection(last_line) < 0 call cursor(lnum, 1) call searchpos('),'.endline, 'cW') let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()') if openedparent != lnum let ind = indent(openedparent) endif elseif last_line =~ s:structureHead let ind = ind + shiftwidth() elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase let ind = ind + shiftwidth() endif if openedparent >= 0 let last_line = StripEndlineComments(getline(openedparent)) endif endif if cline =~ '^\s*[)\]];\=' let ind = ind - shiftwidth() endif if last_line =~ '^\s*->' && last_line !~? s:structureHead && BalanceDirection(last_line) <= 0 let ind = ind - shiftwidth() endif let b:PHP_CurrentIndentLevel = ind return ind + addSpecial endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=PostscrIndentGet(v:lnum) setlocal indentkeys+=0],0=>>,0=%%,0=end,0=restore,0=grestore indentkeys-=:,0#,e if exists("*PostscrIndentGet") finish endif function! PostscrIndentGet(lnum) let lnum = a:lnum - 1 while lnum != 0 let lnum = prevnonblank(lnum) if getline(lnum) !~ '^\s*%.*$' break endif let lnum = lnum - 1 endwhile if lnum == 0 return -1 endif let ind = indent(lnum) let pline = getline(lnum) if pline =~ '\(begin\|<<\|g\=save\|{\|[\)\s*\(%.*\)\=$' let ind = ind + shiftwidth() endif if pline =~ '\(end\|g\=restore\)\s*$' let ind = ind - shiftwidth() elseif getline(a:lnum) =~ '\(end\|>>\|g\=restore\|}\|]\)' let ind = ind - shiftwidth() elseif getline(a:lnum) =~ '^\s*%%' let ind = 0 endif if ind < 0 let ind = -1 endif return ind endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal nolisp " Make sure lisp indenting doesn't supersede us. setlocal indentexpr=GetPoVRayIndent() setlocal indentkeys+==else,=end,0] if exists("*GetPoVRayIndent") finish endif function! s:MatchCount(line, rexp) let str = getline(a:line) let i = 0 let n = 0 while i >= 0 let i = matchend(str, a:rexp, i) if i >= 0 && synIDattr(synID(a:line, i, 0), "name") !~? "string\|comment" let n = n + 1 endif endwhile return n endfunction function GetPoVRayIndent() if synIDattr(synID(v:lnum, indent(v:lnum)+1, 0), "name") =~? "string\|comment" return -1 endif let plnum = prevnonblank(v:lnum - 1) let plind = indent(plnum) while plnum > 0 && synIDattr(synID(plnum, plind+1, 0), "name") =~? "comment" let plnum = prevnonblank(plnum - 1) let plind = indent(plnum) endwhile if plnum == 0 return 0 endif let chg = 0 let chg = chg + s:MatchCount(plnum, '[[{(]') let chg = chg + s:MatchCount(plnum, '#\s*\%(if\|ifdef\|ifndef\|switch\|while\|macro\|else\)\>') let chg = chg - s:MatchCount(plnum, '#\s*end\>') let chg = chg - s:MatchCount(plnum, '[]})]') let chg = chg - s:MatchCount(plnum, '#\s*\%(if\|ifdef\|ifndef\|switch\)\>.*#\s*else\>') let chg = chg > 0 ? chg : 0 let cur = s:MatchCount(v:lnum, '^\s*\%(#\s*\%(end\|else\)\>\|[]})]\)') if cur > 0 let final = plind + (chg - cur) * shiftwidth() else let final = plind + chg * shiftwidth() endif return final < 0 ? 0 : final endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetPrologIndent() setlocal indentkeys-=:,0# setlocal indentkeys+=0%,-,0;,>,0) function! GetPrologIndent() let pnum = prevnonblank(v:lnum - 1) if pnum == 0 return 0 endif let line = getline(v:lnum) let pline = getline(pnum) let ind = indent(pnum) if pline =~ '^\s*%' return ind endif if pline =~ '^\s*/\*' return ind + 1 endif if pline =~ '^\s*\*/' return ind - 1 endif if pline =~ '\%(:-\|-->\)\s*\(%.*\)\?$' let ind = ind + shiftwidth() elseif pline =~ '\.\s*\(%.*\)\?$' let ind = ind - shiftwidth() endif if pline =~ '^\s*\([(;]\|->\)' let ind = ind + shiftwidth() endif if line =~ '^\s*\([);]\|->\)' let ind = ind - shiftwidth() endif return ind endfunction if exists("b:did_indent") finish endif runtime! indent/python.vim if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal nolisp " Make sure lisp indenting doesn't supersede us setlocal autoindent " indentexpr isn't much help otherwise setlocal indentexpr=GetPythonIndent(v:lnum) setlocal indentkeys+=<:>,=elif,=except if exists("*GetPythonIndent") finish endif let s:keepcpo= &cpo set cpo&vim let s:maxoff = 50 " maximum number of lines to look backwards for () function GetPythonIndent(lnum) if getline(a:lnum - 1) =~ '\\$' if a:lnum > 1 && getline(a:lnum - 2) =~ '\\$' return indent(a:lnum - 1) endif return indent(a:lnum - 1) + (exists("g:pyindent_continue") ? eval(g:pyindent_continue) : (shiftwidth() * 2)) endif if has('syntax_items') \ && synIDattr(synID(a:lnum, 1, 1), "name") =~ "String$" return -1 endif let plnum = prevnonblank(v:lnum - 1) if plnum == 0 return 0 endif call cursor(plnum, 1) let disable_parentheses_indenting = get(g:, "pyindent_disable_parentheses_indenting", 0) if disable_parentheses_indenting == 1 let plindent = indent(plnum) let plnumstart = plnum else let searchpair_stopline = 0 let searchpair_timeout = get(g:, 'pyindent_searchpair_timeout', 150) let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW', \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" \ . " =~ '\\(Comment\\|Todo\\|String\\)$'", \ searchpair_stopline, searchpair_timeout) if parlnum > 0 let plindent = indent(parlnum) let plnumstart = parlnum else let plindent = indent(plnum) let plnumstart = plnum endif call cursor(a:lnum, 1) let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" \ . " =~ '\\(Comment\\|Todo\\|String\\)$'", \ searchpair_stopline, searchpair_timeout) if p > 0 if p == plnum let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW', \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')" \ . " =~ '\\(Comment\\|Todo\\|String\\)$'", \ searchpair_stopline, searchpair_timeout) if pp > 0 return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth()) endif return indent(plnum) + (exists("g:pyindent_open_paren") ? eval(g:pyindent_open_paren) : (shiftwidth() * 2)) endif if plnumstart == p return indent(plnum) endif return plindent endif endif let pline = getline(plnum) let pline_len = strlen(pline) if has('syntax_items') if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$" let min = 1 let max = pline_len while min < max let col = (min + max) / 2 if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$" let max = col else let min = col + 1 endif endwhile let pline = strpart(pline, 0, min - 1) endif else let col = 0 while col < pline_len if pline[col] == '#' let pline = strpart(pline, 0, col) break endif let col = col + 1 endwhile endif if pline =~ ':\s*$' return plindent + shiftwidth() endif if getline(plnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>' if indent(a:lnum) > indent(plnum) - shiftwidth() return indent(plnum) - shiftwidth() endif return -1 endif if getline(a:lnum) =~ '^\s*\(except\|finally\)\>' let lnum = a:lnum - 1 while lnum >= 1 if getline(lnum) =~ '^\s*\(try\|except\)\>' let ind = indent(lnum) if ind >= indent(a:lnum) return -1 " indent is already less than this endif return ind " line up with previous try or except endif let lnum = lnum - 1 endwhile return -1 " no matching "try"! endif if getline(a:lnum) =~ '^\s*\(elif\|else\)\>' if getline(plnumstart) =~ '^\s*\(for\|if\|try\)\>' return plindent endif if indent(a:lnum) <= plindent - shiftwidth() return -1 endif return plindent - shiftwidth() endif if parlnum > 0 return plindent endif return -1 endfunction let &cpo = s:keepcpo unlet s:keepcpo if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentkeys=0{,0},:,!^F,o,O,e setlocal indentexpr=GetRIndent() if exists("*GetRIndent") finish endif let s:cpo_save = &cpo set cpo&vim let g:r_indent_align_args = get(g:, 'r_indent_align_args', 1) let g:r_indent_ess_comments = get(g:, 'r_indent_ess_comments', 0) let g:r_indent_comment_column = get(g:, 'r_indent_comment_column', 40) let g:r_indent_ess_compatible = get(g:, 'r_indent_ess_compatible', 0) let g:r_indent_op_pattern = get(g:, 'r_indent_op_pattern', \ '\(&\||\|+\|-\|\*\|/\|=\|\~\|%\|->\)\s*$') function s:RDelete_quotes(line) let i = 0 let j = 0 let line1 = "" let llen = strlen(a:line) while i < llen if a:line[i] == '"' let i += 1 let line1 = line1 . 's' while !(a:line[i] == '"' && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen let i += 1 endwhile if a:line[i] == '"' let i += 1 endif else if a:line[i] == "'" let i += 1 let line1 = line1 . 's' while !(a:line[i] == "'" && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen let i += 1 endwhile if a:line[i] == "'" let i += 1 endif else if a:line[i] == "`" let i += 1 let line1 = line1 . 's' while a:line[i] != "`" && i < llen let i += 1 endwhile if a:line[i] == "`" let i += 1 endif endif endif endif if i == llen break endif let line1 = line1 . a:line[i] let j += 1 let i += 1 endwhile return line1 endfunction function s:RDelete_parens(line) if s:Get_paren_balance(a:line, "(", ")") != 0 return a:line endif let i = 0 let j = 0 let line1 = "" let llen = strlen(a:line) while i < llen let line1 = line1 . a:line[i] if a:line[i] == '(' let nop = 1 while nop > 0 && i < llen let i += 1 if a:line[i] == ')' let nop -= 1 else if a:line[i] == '(' let nop += 1 endif endif endwhile let line1 = line1 . a:line[i] endif let i += 1 endwhile return line1 endfunction function! s:Get_paren_balance(line, o, c) let line2 = substitute(a:line, a:o, "", "g") let openp = strlen(a:line) - strlen(line2) let line3 = substitute(line2, a:c, "", "g") let closep = strlen(line2) - strlen(line3) return openp - closep endfunction function! s:Get_matching_brace(linenr, o, c, delbrace) let line = SanitizeRLine(getline(a:linenr)) if a:delbrace == 1 let line = substitute(line, '{$', "", "") endif let pb = s:Get_paren_balance(line, a:o, a:c) let i = a:linenr while pb != 0 && i > 1 let i -= 1 let pb += s:Get_paren_balance(SanitizeRLine(getline(i)), a:o, a:c) endwhile return i endfunction function! s:Get_matching_if(linenr, delif) let line = SanitizeRLine(getline(a:linenr)) if a:delif let line = substitute(line, "if", "", "g") endif let elsenr = 0 let i = a:linenr let ifhere = 0 while i > 0 let line2 = substitute(line, '\', "xxx", "g") let elsenr += strlen(line) - strlen(line2) if line =~ '.*\s*if\s*()' || line =~ '.*\s*if\s*()' let elsenr -= 1 if elsenr == 0 let ifhere = i break endif endif let i -= 1 let line = SanitizeRLine(getline(i)) endwhile if ifhere return ifhere else return a:linenr endif endfunction function! s:Get_last_paren_idx(line, o, c, pb) let blc = a:pb let line = substitute(a:line, '\t', s:curtabstop, "g") let theidx = -1 let llen = strlen(line) let idx = 0 while idx < llen if line[idx] == a:o let blc -= 1 if blc == 0 let theidx = idx endif else if line[idx] == a:c let blc += 1 endif endif let idx += 1 endwhile return theidx + 1 endfunction function s:Get_prev_line(lineno) let lnum = a:lineno - 1 let data = getline( lnum ) while lnum > 0 && (data =~ '^\s*#' || data =~ '^\s*$') let lnum = lnum - 1 let data = getline( lnum ) endwhile return lnum endfunction function SanitizeRLine(line) let newline = s:RDelete_quotes(a:line) let newline = s:RDelete_parens(newline) let newline = substitute(newline, '#.*', "", "") let newline = substitute(newline, '\s*$', "", "") if &filetype == "rhelp" && newline =~ '^\\method{.*}{.*}(.*' let newline = substitute(newline, '^\\method{\(.*\)}{.*}', '\1', "") endif return newline endfunction function GetRIndent() let clnum = line(".") " current line let cline = getline(clnum) if cline =~ '^\s*#' if g:r_indent_ess_comments == 1 if cline =~ '^\s*###' return 0 endif if cline !~ '^\s*##' return g:r_indent_comment_column endif endif endif let cline = SanitizeRLine(cline) if cline =~ '^\s*}' let indline = s:Get_matching_brace(clnum, '{', '}', 1) if indline > 0 && indline != clnum let iline = SanitizeRLine(getline(indline)) if s:Get_paren_balance(iline, "(", ")") == 0 || iline =~ '(\s*{$' return indent(indline) else let indline = s:Get_matching_brace(indline, '(', ')', 1) return indent(indline) endif endif endif if cline =~ '^\s*)$' let indline = s:Get_matching_brace(clnum, '(', ')', 1) return indent(indline) endif let lnum = s:Get_prev_line(clnum) if lnum == 0 return 0 endif let line = SanitizeRLine(getline(lnum)) if &filetype == "rhelp" if cline =~ '^\\dontshow{' || cline =~ '^\\dontrun{' || cline =~ '^\\donttest{' || cline =~ '^\\testonly{' return 0 endif if line =~ '^\\examples{' || line =~ '^\\usage{' || line =~ '^\\dontshow{' || line =~ '^\\dontrun{' || line =~ '^\\donttest{' || line =~ '^\\testonly{' return 0 endif endif if &filetype == "rnoweb" && line =~ "^<<.*>>=" return 0 endif if cline =~ '^\s*{' && s:Get_paren_balance(cline, '{', '}') > 0 if g:r_indent_ess_compatible && line =~ ')$' let nlnum = lnum let nline = line while s:Get_paren_balance(nline, '(', ')') < 0 let nlnum = s:Get_prev_line(nlnum) let nline = SanitizeRLine(getline(nlnum)) . nline endwhile if nline =~ '^\s*function\s*(' && indent(nlnum) == shiftwidth() return 0 endif endif if s:Get_paren_balance(line, "(", ")") == 0 return indent(lnum) endif endif if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\$' return indent(lnum) + shiftwidth() endif let pb = s:Get_paren_balance(line, '(', ')') if line =~ '^\s*{$' || line =~ '(\s*{' || (pb == 0 && (line =~ '{$' || line =~ '(\s*{$')) return indent(lnum) + shiftwidth() endif let s:curtabstop = repeat(' ', &tabstop) if g:r_indent_align_args == 1 if pb > 0 && line =~ '{$' return s:Get_last_paren_idx(line, '(', ')', pb) + shiftwidth() endif let bb = s:Get_paren_balance(line, '[', ']') if pb > 0 if &filetype == "rhelp" let ind = s:Get_last_paren_idx(line, '(', ')', pb) else let ind = s:Get_last_paren_idx(getline(lnum), '(', ')', pb) endif return ind endif if pb < 0 && line =~ '.*[,&|\-\*+<>]$' let lnum = s:Get_prev_line(lnum) while pb < 1 && lnum > 0 let line = SanitizeRLine(getline(lnum)) let line = substitute(line, '\t', s:curtabstop, "g") let ind = strlen(line) while ind > 0 if line[ind] == ')' let pb -= 1 else if line[ind] == '(' let pb += 1 endif endif if pb == 1 return ind + 1 endif let ind -= 1 endwhile let lnum -= 1 endwhile return 0 endif if bb > 0 let ind = s:Get_last_paren_idx(getline(lnum), '[', ']', bb) return ind endif endif let post_block = 0 if line =~ '}$' && s:Get_paren_balance(line, '{', '}') < 0 let lnum = s:Get_matching_brace(lnum, '{', '}', 0) let line = SanitizeRLine(getline(lnum)) if lnum > 0 && line =~ '^\s*{' let lnum = s:Get_prev_line(lnum) let line = SanitizeRLine(getline(lnum)) endif let pb = s:Get_paren_balance(line, '(', ')') let post_block = 1 endif let olnum = s:Get_prev_line(lnum) let oline = getline(olnum) if olnum > 0 if line =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0 if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0 return indent(lnum) else return indent(lnum) + shiftwidth() endif else if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0 return indent(lnum) - shiftwidth() endif endif endif let post_fun = 0 if pb < 0 && line !~ ')\s*[,&|\-\*+<>]$' let post_fun = 1 while pb < 0 && lnum > 0 let lnum -= 1 let linepiece = SanitizeRLine(getline(lnum)) let pb += s:Get_paren_balance(linepiece, "(", ")") let line = linepiece . line endwhile if line =~ '{$' && post_block == 0 return indent(lnum) + shiftwidth() endif if cline =~ '^\s*{' return indent(lnum) endif if post_block == 0 let newl = SanitizeRLine(line) if newl =~ '\<\(if\|while\|for\|function\)\s*()$' || newl =~ '\ 0 let lnum -= 1 let linepiece = SanitizeRLine(getline(lnum)) let bb += s:Get_paren_balance(linepiece, "[", "]") let line = linepiece . line endwhile let line = s:RDelete_parens(line) endif let plnum = s:Get_prev_line(lnum) let ppost_else = 0 if plnum > 0 let pline = SanitizeRLine(getline(plnum)) let ppost_block = 0 if pline =~ '}$' let ppost_block = 1 let plnum = s:Get_matching_brace(plnum, '{', '}', 0) let pline = SanitizeRLine(getline(plnum)) if pline =~ '^\s*{$' && plnum > 0 let plnum = s:Get_prev_line(plnum) let pline = SanitizeRLine(getline(plnum)) endif endif if pline =~ 'else$' let ppost_else = 1 let plnum = s:Get_matching_if(plnum, 0) let pline = SanitizeRLine(getline(plnum)) endif if pline =~ '^\s*else\s*if\s*(' let pplnum = s:Get_prev_line(plnum) let ppline = SanitizeRLine(getline(pplnum)) while ppline =~ '^\s*else\s*if\s*(' || ppline =~ '^\s*if\s*()\s*\S$' let plnum = pplnum let pline = ppline let pplnum = s:Get_prev_line(plnum) let ppline = SanitizeRLine(getline(pplnum)) endwhile while ppline =~ '\<\(if\|while\|for\|function\)\s*()$' || ppline =~ '\ 0 let plnum -= 1 let linepiece = SanitizeRLine(getline(plnum)) let ppb += s:Get_paren_balance(linepiece, "(", ")") let pline = linepiece . pline endwhile let pline = s:RDelete_parens(pline) endif endif let ind = indent(lnum) if g:r_indent_align_args == 0 && pb != 0 let ind += pb * shiftwidth() return ind endif if g:r_indent_align_args == 0 && bb != 0 let ind += bb * shiftwidth() return ind endif if plnum > 0 let pind = indent(plnum) else let pind = 0 endif if ind == pind || (ind == (pind + shiftwidth()) && pline =~ '{$' && ppost_else == 0) return ind endif let pline = getline(plnum) let pbb = s:Get_paren_balance(pline, '[', ']') while pind < ind && plnum > 0 && ppb == 0 && pbb == 0 let ind = pind let plnum = s:Get_prev_line(plnum) let pline = getline(plnum) let ppb = s:Get_paren_balance(pline, '(', ')') let pbb = s:Get_paren_balance(pline, '[', ']') while pline =~ '^\s*else' let plnum = s:Get_matching_if(plnum, 1) let pline = getline(plnum) let ppb = s:Get_paren_balance(pline, '(', ')') let pbb = s:Get_paren_balance(pline, '[', ']') endwhile let pind = indent(plnum) if ind == (pind + shiftwidth()) && pline =~ '{$' return ind endif endwhile return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif runtime! indent/yaml.vim if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetReadlineIndent() setlocal indentkeys=!^F,o,O,=$else,=$endif setlocal nosmartindent if exists("*GetReadlineIndent") finish endif function GetReadlineIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) if getline(lnum) =~ '^\s*$\(if\|else\)\>' let ind = ind + shiftwidth() endif if getline(v:lnum) =~ '^\s*$\(else\|endif\)\>' let ind = ind - shiftwidth() endif return ind endfunction if exists("b:did_indent") finish endif runtime indent/r.vim let s:RIndent = function(substitute(&indentexpr, "()", "", "")) let b:did_indent = 1 setlocal noautoindent setlocal nocindent setlocal nosmartindent setlocal nolisp setlocal indentkeys=0{,0},:,!^F,o,O,e setlocal indentexpr=GetCorrectRHelpIndent() if exists("*GetRHelpIndent") finish endif function s:SanitizeRHelpLine(line) let newline = substitute(a:line, '\\\\', "x", "g") let newline = substitute(newline, '\\{', "x", "g") let newline = substitute(newline, '\\}', "x", "g") let newline = substitute(newline, '\\%', "x", "g") let newline = substitute(newline, '%.*', "", "") let newline = substitute(newline, '\s*$', "", "") return newline endfunction function GetRHelpIndent() let clnum = line(".") " current line if clnum == 1 return 0 endif let cline = getline(clnum) if cline =~ '^\s*}\s*$' let i = clnum let bb = -1 while bb != 0 && i > 1 let i -= 1 let line = s:SanitizeRHelpLine(getline(i)) let line2 = substitute(line, "{", "", "g") let openb = strlen(line) - strlen(line2) let line3 = substitute(line2, "}", "", "g") let closeb = strlen(line2) - strlen(line3) let bb += openb - closeb endwhile return indent(i) endif if cline =~ '^\s*#ifdef\>' || cline =~ '^\s*#endif\>' return 0 endif let lnum = clnum - 1 let line = getline(lnum) if line =~ '^\s*#ifdef\>' || line =~ '^\s*#endif\>' let lnum -= 1 let line = getline(lnum) endif while lnum > 1 && (line =~ '^\s*$' || line =~ '^#ifdef' || line =~ '^#endif') let lnum -= 1 let line = getline(lnum) endwhile if lnum == 1 return 0 endif let line = s:SanitizeRHelpLine(line) let line2 = substitute(line, "{", "", "g") let openb = strlen(line) - strlen(line2) let line3 = substitute(line2, "}", "", "g") let closeb = strlen(line2) - strlen(line3) let bb = openb - closeb let ind = indent(lnum) + (bb * shiftwidth()) if line =~ '^\s*}\s*$' let ind = indent(lnum) endif if ind < 0 return 0 endif return ind endfunction function GetCorrectRHelpIndent() let lastsection = search('^\\[a-z]*{', "bncW") let secname = getline(lastsection) if secname =~ '^\\usage{' || secname =~ '^\\examples{' || secname =~ '^\\dontshow{' || secname =~ '^\\dontrun{' || secname =~ '^\\donttest{' || secname =~ '^\\testonly{' || secname =~ '^\\method{.*}{.*}(' return s:RIndent() else return GetRHelpIndent() endif endfunction if exists("b:did_indent") finish endif runtime indent/r.vim let s:RIndent = function(substitute(&indentexpr, "()", "", "")) let b:did_indent = 1 setlocal indentkeys=0{,0},:,!^F,o,O,e setlocal indentexpr=GetRmdIndent() if exists("*GetRmdIndent") finish endif let s:cpo_save = &cpo set cpo&vim function s:GetMdIndent() let pline = getline(v:lnum - 1) let cline = getline(v:lnum) if prevnonblank(v:lnum - 1) < v:lnum - 1 || cline =~ '^\s*[-\+\*]\s' || cline =~ '^\s*\d\+\.\s\+' return indent(v:lnum) elseif pline =~ '^\s*[-\+\*]\s' return indent(v:lnum - 1) + 2 elseif pline =~ '^\s*\d\+\.\s\+' return indent(v:lnum - 1) + 3 endif return indent(prevnonblank(v:lnum - 1)) endfunction function s:GetYamlIndent() let pline = getline(v:lnum - 1) if pline =~ ':\s*$' return indent(v:lnum) + shiftwidth() elseif pline =~ '^\s*- ' return indent(v:lnum) + 2 endif return indent(prevnonblank(v:lnum - 1)) endfunction function GetRmdIndent() if getline(".") =~ '^[ \t]*```{r .*}$' || getline(".") =~ '^[ \t]*```$' return 0 endif if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW") return s:RIndent() elseif v:lnum > 1 && search('^---$', "bnW") == 1 && \ (search('^---$', "nW") > v:lnum || search('^...$', "nW") > v:lnum) return s:GetYamlIndent() else return s:GetMdIndent() endif endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif runtime indent/tex.vim function! s:NoTeXIndent() return indent(line(".")) endfunction if &indentexpr == "" || &indentexpr == "GetRnowebIndent()" let s:TeXIndent = function("s:NoTeXIndent") else let s:TeXIndent = function(substitute(&indentexpr, "()", "", "")) endif unlet! b:did_indent runtime indent/r.vim let s:RIndent = function(substitute(&indentexpr, "()", "", "")) let b:did_indent = 1 setlocal indentkeys=0{,0},!^F,o,O,e,},=\bibitem,=\item setlocal indentexpr=GetRnowebIndent() if exists("*GetRnowebIndent") finish endif function GetRnowebIndent() let curline = getline(".") if curline =~ '^<<.*>>=$' || curline =~ '^\s*@$' return 0 endif if search("^<<", "bncW") > search("^@", "bncW") return s:RIndent() endif return s:TeXIndent() endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal autoindent setlocal indentkeys+==~end,=~case,=~if,=~then,=~else,=~do,=~until,=~while,=~repeat,=~select,=~default,=~for,=~start,=~next,=~step,<<>,<>> setlocal indentexpr=RplGetFreeIndent() if exists("*RplGetFreeIndent") finish endif let b:undo_indent = "set ai< indentkeys< indentexpr<" function RplGetIndent(lnum) let ind = indent(a:lnum) let prevline=getline(a:lnum) let prevstat=substitute(prevline, '!.*$', '', '') if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\' elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)' elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' let ind = ind + shiftwidth() endif let line = getline(v:lnum) if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>' let ind = ind - shiftwidth() elseif line =~? '^\s*>>\($\|\s\+\)' let ind = ind - shiftwidth() endif return ind endfunction function RplGetFreeIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind=RplGetIndent(lnum) return ind endfunction if exists("b:did_indent") finish endif runtime indent/r.vim let s:RIndent = function(substitute(&indentexpr, "()", "", "")) let b:did_indent = 1 setlocal indentkeys=0{,0},:,!^F,o,O,e setlocal indentexpr=GetRrstIndent() if exists("*GetRrstIndent") finish endif function GetRstIndent() let pline = getline(v:lnum - 1) let cline = getline(v:lnum) if prevnonblank(v:lnum - 1) < v:lnum - 1 || cline =~ '^\s*[-\+\*]\s' || cline =~ '^\s*\d\+\.\s\+' return indent(v:lnum) elseif pline =~ '^\s*[-\+\*]\s' return indent(v:lnum - 1) + 2 elseif pline =~ '^\s*\d\+\.\s\+' return indent(v:lnum - 1) + 3 endif return indent(prevnonblank(v:lnum - 1)) endfunction function GetRrstIndent() if getline(".") =~ '^\.\. {r .*}$' || getline(".") =~ '^\.\. \.\.$' return 0 endif if search('^\.\. {r', "bncW") > search('^\.\. \.\.$', "bncW") return s:RIndent() else return GetRstIndent() endif endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetRSTIndent() setlocal indentkeys=!^F,o,O setlocal nosmartindent if exists("*GetRSTIndent") finish endif let s:itemization_pattern = '^\s*[-*+]\s' let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+' function GetRSTIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) let line = getline(lnum) if line =~ s:itemization_pattern let ind += 2 elseif line =~ s:enumeration_pattern let ind += matchend(line, s:enumeration_pattern) endif let line = getline(v:lnum - 1) if line =~ '^:.\+:\s\{-1,\}\S.\+[^.!?:]$' return matchend(line, '^:.\{-1,}:\s\+') endif if line =~ '^\s*$' execute lnum call search('^\s*\%([-*+]\s\|\%(\d\+\|#\)\.\s\|\.\.\|$\)', 'bW') let line = getline('.') if line =~ s:itemization_pattern let ind -= 2 elseif line =~ s:enumeration_pattern let ind -= matchend(line, s:enumeration_pattern) elseif line =~ '^\s*\.\.' let ind -= 3 endif endif return ind endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 if !exists('g:ruby_indent_access_modifier_style') let g:ruby_indent_access_modifier_style = 'normal' endif if !exists('g:ruby_indent_assignment_style') let g:ruby_indent_assignment_style = 'hanging' endif if !exists('g:ruby_indent_block_style') let g:ruby_indent_block_style = 'expression' endif setlocal nosmartindent setlocal indentexpr=GetRubyIndent(v:lnum) setlocal indentkeys=0{,0},0),0],!^F,o,O,e,:,. setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end setlocal indentkeys+==private,=protected,=public if exists("*GetRubyIndent") finish endif let s:cpo_save = &cpo set cpo&vim let s:syng_string = \ ['String', 'Interpolation', 'InterpolationDelimiter', 'NoInterpolation', 'StringEscape'] let s:syng_stringdoc = s:syng_string + ['Documentation'] let s:syng_strcom = s:syng_stringdoc + \ ['Regexp', 'RegexpDelimiter', 'RegexpEscape', \ 'Symbol', 'StringDelimiter', 'ASCIICode', 'Comment'] let s:skip_expr = \ 'index(map('.string(s:syng_strcom).',"hlID(''ruby''.v:val)"), synID(line("."),col("."),1)) >= 0' let s:ruby_indent_keywords = \ '^\s*\zs\<\%(module\|class\|if\|for' . \ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue' . \ '\|\%(\K\k*[!?]\?\)\=\s*def\):\@!\>' . \ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' . \ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>' let s:ruby_deindent_keywords = \ '^\s*\zs\<\%(ensure\|else\|rescue\|elsif\|when\|end\):\@!\>' let s:end_start_regex = \ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' . \ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' . \ '\|\%(\K\k*[!?]\?\)\=\s*def\):\@!\>' . \ '\|\%(^\|[^.:@$]\)\@<=\' let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\\|when\|elsif\):\@!\>' let s:end_end_regex = '\%(^\|[^.:@$]\)\@<=\' let s:end_skip_expr = s:skip_expr . \ ' || (expand("") == "do"' . \ ' && getline(".") =~ "^\\s*\\<\\(while\\|until\\|for\\):\\@!\\>")' let s:non_bracket_continuation_regex = \ '\%([\\.,:*/%+]\|\>\|:\s\)\s*\zs' . \ '\<\%(if\|for\|while\|until\|unless\):\@!\>' let s:bracket_continuation_regex = '%\@\|%\@= 0 return indent endif endfor let indent_callback_names = [ \ 's:EmptyInsideString', \ ] for callback_name in indent_callback_names let indent = call(function(callback_name), [indent_info]) if indent >= 0 return indent endif endfor let indent_info.plnum = s:PrevNonBlankNonString(indent_info.clnum - 1) let indent_info.pline = getline(indent_info.plnum) let indent_callback_names = [ \ 's:StartOfFile', \ 's:AfterAccessModifier', \ 's:ContinuedLine', \ 's:AfterBlockOpening', \ 's:AfterHangingSplat', \ 's:AfterUnbalancedBracket', \ 's:AfterLeadingOperator', \ 's:AfterEndKeyword', \ 's:AfterIndentKeyword', \ ] for callback_name in indent_callback_names let indent = call(function(callback_name), [indent_info]) if indent >= 0 return indent endif endfor let indent_callback_names = [ \ 's:PreviousNotMSL', \ 's:IndentingKeywordInMSL', \ 's:ContinuedHangingOperator', \ ] let indent_info.plnum_msl = s:GetMSL(indent_info.plnum) for callback_name in indent_callback_names let indent = call(function(callback_name), [indent_info]) if indent >= 0 return indent endif endfor return indent(indent_info.plnum) endfunction function! s:AccessModifier(cline_info) abort let info = a:cline_info if g:ruby_indent_access_modifier_style == 'indent' if s:Match(info.clnum, s:access_modifier_regex) let class_lnum = s:FindContainingClass() if class_lnum > 0 return indent(class_lnum) + info.sw endif endif elseif g:ruby_indent_access_modifier_style == 'outdent' if s:Match(info.clnum, s:access_modifier_regex) let class_lnum = s:FindContainingClass() if class_lnum > 0 return indent(class_lnum) endif endif endif return -1 endfunction function! s:ClosingBracketOnEmptyLine(cline_info) abort let info = a:cline_info let col = matchend(info.cline, '^\s*[]})]') if col > 0 && !s:IsInStringOrComment(info.clnum, col) call cursor(info.clnum, col) let closing_bracket = info.cline[col - 1] let bracket_pair = strpart('(){}[]', stridx(')}]', closing_bracket) * 2, 2) if searchpair(escape(bracket_pair[0], '\['), '', bracket_pair[1], 'bW', s:skip_expr) > 0 if closing_bracket == ')' && col('.') != col('$') - 1 let ind = virtcol('.') - 1 elseif g:ruby_indent_block_style == 'do' let ind = indent(line('.')) else " g:ruby_indent_block_style == 'expression' let ind = indent(s:GetMSL(line('.'))) endif endif return ind endif return -1 endfunction function! s:BlockComment(cline_info) abort if match(a:cline_info.cline, '^\s*\%(=begin\|=end\)$') != -1 return 0 endif return -1 endfunction function! s:DeindentingKeyword(cline_info) abort let info = a:cline_info if s:Match(info.clnum, s:ruby_deindent_keywords) call cursor(info.clnum, 1) if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW', \ s:end_skip_expr) > 0 let msl = s:GetMSL(line('.')) let line = getline(line('.')) if s:IsAssignment(line, col('.')) && \ strpart(line, col('.') - 1, 2) !~ 'do' if g:ruby_indent_assignment_style == 'hanging' let ind = virtcol('.') - 1 else let ind = indent(line('.')) endif elseif g:ruby_indent_block_style == 'do' let ind = indent(line('.')) elseif getline(msl) =~ '=\s*\(#.*\)\=$' let ind = indent(line('.')) else let ind = indent(msl) endif endif return ind endif return -1 endfunction function! s:MultilineStringOrLineComment(cline_info) abort let info = a:cline_info if s:IsInStringOrDocumentation(info.clnum, matchend(info.cline, '^\s*') + 1) return indent(info.clnum) endif return -1 endfunction function! s:ClosingHeredocDelimiter(cline_info) abort let info = a:cline_info if info.cline =~ '^\k\+\s*$' \ && s:IsInStringDelimiter(info.clnum, 1) \ && search('\V<<'.info.cline, 'nbW') > 0 return 0 endif return -1 endfunction function! s:LeadingOperator(cline_info) abort if s:Match(a:cline_info.clnum, s:leading_operator_regex) return indent(s:GetMSL(a:cline_info.clnum)) + a:cline_info.sw endif return -1 endfunction function! s:EmptyInsideString(pline_info) abort let info = a:pline_info let plnum = prevnonblank(info.clnum - 1) let pline = getline(plnum) if info.cline =~ '^\s*$' \ && s:IsInStringOrComment(plnum, 1) \ && s:IsInStringOrComment(plnum, strlen(pline)) return indent(plnum) endif return -1 endfunction function! s:StartOfFile(pline_info) abort if a:pline_info.plnum == 0 return 0 endif return -1 endfunction function! s:AfterAccessModifier(pline_info) abort let info = a:pline_info if g:ruby_indent_access_modifier_style == 'indent' if s:Match(info.plnum, s:indent_access_modifier_regex) return indent(info.plnum) + info.sw endif elseif g:ruby_indent_access_modifier_style == 'outdent' if s:Match(info.plnum, s:access_modifier_regex) return indent(info.plnum) + info.sw endif endif return -1 endfunction function! s:ContinuedLine(pline_info) abort let info = a:pline_info let col = s:Match(info.plnum, s:ruby_indent_keywords) if s:Match(info.plnum, s:continuable_regex) && \ s:Match(info.plnum, s:continuation_regex) if col > 0 && s:IsAssignment(info.pline, col) if g:ruby_indent_assignment_style == 'hanging' let ind = col - 1 else let ind = indent(info.plnum) endif else let ind = indent(s:GetMSL(info.plnum)) endif return ind + info.sw + info.sw endif return -1 endfunction function! s:AfterBlockOpening(pline_info) abort let info = a:pline_info if s:Match(info.plnum, s:block_regex) if g:ruby_indent_block_style == 'do' let ind = indent(info.plnum) + info.sw else let plnum_msl = s:GetMSL(info.plnum) if getline(plnum_msl) =~ '=\s*\(#.*\)\=$' let ind = indent(info.plnum) + info.sw else let ind = indent(plnum_msl) + info.sw endif endif return ind endif return -1 endfunction function! s:AfterLeadingOperator(pline_info) abort if s:Match(a:pline_info.plnum, s:leading_operator_regex) return indent(s:GetMSL(a:pline_info.plnum)) endif return -1 endfunction function! s:AfterHangingSplat(pline_info) abort let info = a:pline_info if info.pline =~ s:splat_regex return indent(info.plnum) + info.sw endif return -1 endfunction function! s:AfterUnbalancedBracket(pline_info) abort let info = a:pline_info if info.pline =~ '[[({]' || info.pline =~ '[])}]\s*\%(#.*\)\=$' let [opening, closing] = s:ExtraBrackets(info.plnum) if opening.pos != -1 if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0 if col('.') + 1 == col('$') return indent(info.plnum) + info.sw else return virtcol('.') endif else let nonspace = matchend(info.pline, '\S', opening.pos + 1) - 1 return nonspace > 0 ? nonspace : indent(info.plnum) + info.sw endif elseif closing.pos != -1 call cursor(info.plnum, closing.pos + 1) normal! % if s:Match(line('.'), s:ruby_indent_keywords) return indent('.') + info.sw else return indent(s:GetMSL(line('.'))) endif else call cursor(info.clnum, info.col) end endif return -1 endfunction function! s:AfterEndKeyword(pline_info) abort let info = a:pline_info let col = s:Match(info.plnum, '\%(^\|[^.:@$]\)\\s*\%(#.*\)\=$') if col > 0 call cursor(info.plnum, col) if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW', \ s:end_skip_expr) > 0 let n = line('.') let ind = indent('.') let msl = s:GetMSL(n) if msl != n let ind = indent(msl) end return ind endif end return -1 endfunction function! s:AfterIndentKeyword(pline_info) abort let info = a:pline_info let col = s:Match(info.plnum, s:ruby_indent_keywords) if col > 0 call cursor(info.plnum, col) let ind = virtcol('.') - 1 + info.sw if s:Match(info.plnum, s:end_end_regex) let ind = indent('.') elseif s:IsAssignment(info.pline, col) if g:ruby_indent_assignment_style == 'hanging' let ind = col + info.sw - 1 else let ind = indent(info.plnum) + info.sw endif endif return ind endif return -1 endfunction function! s:PreviousNotMSL(msl_info) abort let info = a:msl_info if info.plnum != info.plnum_msl if s:Match(info.plnum, s:bracket_switch_continuation_regex) return indent(info.plnum) - 1 elseif s:Match(info.plnum, s:non_bracket_continuation_regex) || s:IsInString(info.plnum, strlen(line)) return indent(info.plnum) endif endif return -1 endfunction function! s:IndentingKeywordInMSL(msl_info) abort let info = a:msl_info let col = s:Match(info.plnum_msl, s:ruby_indent_keywords) if col > 0 let ind = indent(info.plnum_msl) + info.sw if s:Match(info.plnum_msl, s:end_end_regex) let ind = ind - info.sw elseif s:IsAssignment(getline(info.plnum_msl), col) if g:ruby_indent_assignment_style == 'hanging' let ind = col + info.sw - 1 else let ind = indent(info.plnum_msl) + info.sw endif endif return ind endif return -1 endfunction function! s:ContinuedHangingOperator(msl_info) abort let info = a:msl_info if s:Match(info.plnum_msl, s:non_bracket_continuation_regex) && !s:Match(info.plnum_msl, '^\s*\([\])}]\|end\)') if info.plnum_msl == info.plnum let ind = indent(info.plnum_msl) + info.sw else let ind = indent(info.plnum_msl) endif return ind endif return -1 endfunction function! s:IsInRubyGroup(groups, lnum, col) abort let ids = map(copy(a:groups), 'hlID("ruby".v:val)') return index(ids, synID(a:lnum, a:col, 1)) >= 0 endfunction function! s:IsInStringOrComment(lnum, col) abort return s:IsInRubyGroup(s:syng_strcom, a:lnum, a:col) endfunction function! s:IsInString(lnum, col) abort return s:IsInRubyGroup(s:syng_string, a:lnum, a:col) endfunction function! s:IsInStringOrDocumentation(lnum, col) abort return s:IsInRubyGroup(s:syng_stringdoc, a:lnum, a:col) endfunction function! s:IsInStringDelimiter(lnum, col) abort return s:IsInRubyGroup(['StringDelimiter'], a:lnum, a:col) endfunction function! s:IsAssignment(str, pos) abort return strpart(a:str, 0, a:pos - 1) =~ '=\s*$' endfunction function! s:PrevNonBlankNonString(lnum) abort let in_block = 0 let lnum = prevnonblank(a:lnum) while lnum > 0 let line = getline(lnum) if line =~ '^=begin' if in_block let in_block = 0 else break endif elseif !in_block && line =~ '^=end' let in_block = 1 elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1) \ && s:IsInStringOrComment(lnum, strlen(line))) break endif let lnum = prevnonblank(lnum - 1) endwhile return lnum endfunction function! s:GetMSL(lnum) abort let msl = a:lnum let lnum = s:PrevNonBlankNonString(a:lnum - 1) while lnum > 0 let line = getline(lnum) if !s:Match(msl, s:backslash_continuation_regex) && \ s:Match(lnum, s:backslash_continuation_regex) let msl = lnum elseif s:Match(msl, s:leading_operator_regex) let msl = lnum elseif s:Match(lnum, s:splat_regex) return msl elseif s:Match(lnum, s:non_bracket_continuation_regex) && \ s:Match(msl, s:non_bracket_continuation_regex) let msl = lnum elseif s:Match(lnum, s:dot_continuation_regex) && \ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex)) let msl = lnum elseif s:Match(lnum, s:non_bracket_continuation_regex) && \ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex)) return lnum elseif s:Match(lnum, s:bracket_continuation_regex) && \ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex)) return msl elseif s:Match(lnum, s:block_regex) && \ !s:Match(msl, s:continuation_regex) && \ !s:Match(msl, s:block_continuation_regex) return msl else let col = match(line, s:continuation_regex) + 1 if (col > 0 && !s:IsInStringOrComment(lnum, col)) \ || s:IsInString(lnum, strlen(line)) let msl = lnum else break endif endif let lnum = s:PrevNonBlankNonString(lnum - 1) endwhile return msl endfunction function! s:ExtraBrackets(lnum) abort let opening = {'parentheses': [], 'braces': [], 'brackets': []} let closing = {'parentheses': [], 'braces': [], 'brackets': []} let line = getline(a:lnum) let pos = match(line, '[][(){}]', 0) while pos != -1 if !s:IsInStringOrComment(a:lnum, pos + 1) if line[pos] == '(' call add(opening.parentheses, {'type': '(', 'pos': pos}) elseif line[pos] == ')' if empty(opening.parentheses) call add(closing.parentheses, {'type': ')', 'pos': pos}) else let opening.parentheses = opening.parentheses[0:-2] endif elseif line[pos] == '{' call add(opening.braces, {'type': '{', 'pos': pos}) elseif line[pos] == '}' if empty(opening.braces) call add(closing.braces, {'type': '}', 'pos': pos}) else let opening.braces = opening.braces[0:-2] endif elseif line[pos] == '[' call add(opening.brackets, {'type': '[', 'pos': pos}) elseif line[pos] == ']' if empty(opening.brackets) call add(closing.brackets, {'type': ']', 'pos': pos}) else let opening.brackets = opening.brackets[0:-2] endif endif endif let pos = match(line, '[][(){}]', pos + 1) endwhile let rightmost_opening = {'type': '(', 'pos': -1} let rightmost_closing = {'type': ')', 'pos': -1} for opening in opening.parentheses + opening.braces + opening.brackets if opening.pos > rightmost_opening.pos let rightmost_opening = opening endif endfor for closing in closing.parentheses + closing.braces + closing.brackets if closing.pos > rightmost_closing.pos let rightmost_closing = closing endif endfor return [rightmost_opening, rightmost_closing] endfunction function! s:Match(lnum, regex) abort let line = getline(a:lnum) let offset = match(line, '\C'.a:regex) let col = offset + 1 while offset > -1 && s:IsInStringOrComment(a:lnum, col) let offset = match(line, '\C'.a:regex, offset + 1) let col = offset + 1 endwhile if offset > -1 return col else return 0 endif endfunction function! s:FindContainingClass() abort let saved_position = getpos('.') while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW', \ s:end_skip_expr) > 0 if expand('') =~# '\' let found_lnum = line('.') call setpos('.', saved_position) return found_lnum endif endwhile call setpos('.', saved_position) return 0 endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal cindent setlocal cinoptions=L0,(0,Ws,J1,j1 setlocal cinkeys=0{,0},!^F,o,O,0[,0] setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern setlocal nolisp " Make sure lisp indenting doesn't supersede us setlocal autoindent " indentexpr isn't much help otherwise setlocal indentkeys=0{,0},!^F,o,O,0[,0] setlocal indentexpr=GetRustIndent(v:lnum) if exists("*GetRustIndent") finish endif let s:save_cpo = &cpo set cpo&vim function! s:get_line_trimmed(lnum) let line = getline(a:lnum) let line_len = strlen(line) if has('syntax_items') if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo' let min = 1 let max = line_len while min < max let col = (min + max) / 2 if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo' let max = col else let min = col + 1 endif endwhile let line = strpart(line, 0, min - 1) endif return substitute(line, "\s*$", "", "") else return substitute(line, "\s*//.*$", "", "") endif endfunction function! s:is_string_comment(lnum, col) if has('syntax_items') for id in synstack(a:lnum, a:col) let synname = synIDattr(id, "name") if synname == "rustString" || synname =~ "^rustComment" return 1 endif endfor else return 0 endif endfunction function GetRustIndent(lnum) let line = getline(a:lnum) if has('syntax_items') let synname = synIDattr(synID(a:lnum, 1, 1), "name") if synname == "rustString" return -1 elseif synname =~ '\(Comment\|Todo\)' \ && line !~ '^\s*/\*' " not /* opening line if synname =~ "CommentML" " multi-line if line !~ '^\s*\*' && getline(a:lnum - 1) =~ '^\s*/\*' return GetRustIndent(a:lnum - 1) endif endif return cindent(a:lnum) endif endif let prevlinenum = prevnonblank(a:lnum - 1) let prevline = s:get_line_trimmed(prevlinenum) while prevlinenum > 1 && prevline !~ '[^[:blank:]]' let prevlinenum = prevnonblank(prevlinenum - 1) let prevline = s:get_line_trimmed(prevlinenum) endwhile if prevline[len(prevline) - 1] == "," \ && prevline =~# '^\s*where\s' return indent(prevlinenum) + 6 endif if prevline[len(prevline) - 1] == "," \ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]' \ && prevline !~ '^\s*fn\s' \ && prevline !~ '([^()]\+,$' \ && s:get_line_trimmed(a:lnum) !~ '^\s*\S\+\s*=>' return indent(prevlinenum) endif if !has("patch-7.4.355") call cursor(a:lnum, 1) if searchpair('{\|(', '', '}\|)', 'nbW', \ 's:is_string_comment(line("."), col("."))') == 0 if searchpair('\[', '', '\]', 'nbW', \ 's:is_string_comment(line("."), col("."))') == 0 return 0 else if line =~ "^\\s*]" return 0 else return shiftwidth() endif endif endif endif return cindent(a:lnum) endfunction let &cpo = s:save_cpo unlet s:save_cpo if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetSASIndent() setlocal indentkeys+=;,=~data,=~proc,=~macro if exists("*GetSASIndent") finish endif let s:cpo_save = &cpo set cpo&vim let s:section_str = '\v%(^|;)\s*%(data|proc)>' let s:section_run = '\v%(^|;)\s*run\s*;' let s:section_end = '\v%(^|;)\s*%(quit|enddata)\s*;' let s:block_str = '\v<%(do>%([^;]+<%(to|over|while)>[^;]+)=|%(compute|define\s+%(column|footer|header|style|table|tagset|crosstabs|statgraph)|edit|layout|method|select)>[^;]+|begingraph)\s*;' let s:block_end = '\v<%(end|endcomp|endlayout|endgraph)\s*;' let s:macro_str = '\v%(^|;)\s*\%macro>' let s:macro_end = '\v%(^|;)\s*\%mend\s*;' let s:program_end = '\v%(^|;)\s*endsas\s*;' let s:run_processing_procs = [ \ 'catalog', 'chart', 'datasets', 'document', 'ds2', 'plot', 'sql', \ 'gareabar', 'gbarline', 'gchart', 'gkpi', 'gmap', 'gplot', 'gradar', 'greplay', 'gslide', 'gtile', \ 'anova', 'arima', 'catmod', 'factex', 'glm', 'model', 'optex', 'plan', 'reg', \ 'iml', \ ] function! s:PrevMatch(lnum, regex) let prev_lnum = prevnonblank(a:lnum - 1) while prev_lnum > 0 let prev_line = getline(prev_lnum) if prev_line =~? a:regex break else let prev_lnum = prevnonblank(prev_lnum - 1) endif endwhile return prev_lnum endfunction function! GetSASIndent() let prev_lnum = prevnonblank(v:lnum - 1) if prev_lnum ==# 0 return indent(1) else let prev_line = getline(prev_lnum) if (prev_line =~? s:section_str && prev_line !~? s:section_run && prev_line !~? s:section_end) || \ (prev_line =~? s:block_str && prev_line !~? s:block_end) || \ (prev_line =~? s:macro_str && prev_line !~? s:macro_end) let ind = indent(prev_lnum) + shiftwidth() elseif prev_line =~? s:section_run && prev_line !~? s:section_end let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str) let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), \ s:PrevMatch(v:lnum, s:macro_end ), \ s:PrevMatch(v:lnum, s:program_end)]) if prev_section_end_lnum < prev_section_str_lnum && \ getline(prev_section_str_lnum) =~? '\v%(^|;)\s*proc\s+%(' . \ join(s:run_processing_procs, '|') . ')>' let ind = indent(prev_lnum) + shiftwidth() else let ind = indent(prev_lnum) endif else let ind = indent(prev_lnum) endif endif let curr_line = getline(v:lnum) if curr_line =~? s:program_end return indent(nextnonblank(1)) elseif curr_line =~? s:macro_end return indent(s:PrevMatch(v:lnum, s:macro_str)) elseif curr_line =~? s:block_end && curr_line !~? s:block_str let ind = ind - shiftwidth() elseif curr_line =~? s:section_str || curr_line =~? s:section_run || curr_line =~? s:section_end let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str) if getline(prev_section_str_lnum) =~? '\v%(^|;)\s*proc\s+%(' . \ join(s:run_processing_procs, '|') . ')>' let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), \ s:PrevMatch(v:lnum, s:macro_end ), \ s:PrevMatch(v:lnum, s:program_end)]) else let prev_section_end_lnum = max([ \ s:PrevMatch(v:lnum, s:section_end), \ s:PrevMatch(v:lnum, s:section_run), \ s:PrevMatch(v:lnum, s:macro_end ), \ s:PrevMatch(v:lnum, s:program_end)]) endif if prev_section_end_lnum < prev_section_str_lnum let ind = ind - shiftwidth() endif endif return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal autoindent sw=2 et setlocal indentexpr=GetSassIndent() setlocal indentkeys=o,O,*,<:>,!^F if exists("*GetSassIndent") finish endif let s:property = '^\s*:\|^\s*[[:alnum:]#{}-]\+\%(:\|\s*=\)' let s:extend = '^\s*\%(@extend\|@include\|+\)' function! GetSassIndent() let lnum = prevnonblank(v:lnum-1) let line = substitute(getline(lnum),'\s\+$','','') let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','') let lastcol = strlen(line) let line = substitute(line,'^\s\+','','') let indent = indent(lnum) let cindent = indent(v:lnum) if line !~ s:property && line !~ s:extend && cline =~ s:property return indent + shiftwidth() else return -1 endif endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal autoindent setlocal indentexpr=GetScalaIndent() setlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case, if exists("*GetScalaIndent") finish endif let s:keepcpo= &cpo set cpo&vim let s:defMatcher = '\%(\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\)*\' let s:funcNameMatcher = '\w\+' let s:typeSpecMatcher = '\%(\s*\[\_[^\]]*\]\)' let s:defArgMatcher = '\%((\_.\{-})\)' let s:returnTypeMatcher = '\%(:\s*\w\+' . s:typeSpecMatcher . '\?\)' let g:fullDefMatcher = '^\s*' . s:defMatcher . '\s\+' . s:funcNameMatcher . '\s*' . s:typeSpecMatcher . '\?\s*' . s:defArgMatcher . '\?\s*' . s:returnTypeMatcher . '\?\s*[={]' function! scala#ConditionalConfirm(msg) if 0 call confirm(a:msg) endif endfunction function! scala#GetLine(lnum) let line = substitute(getline(a:lnum), '//.*$', '', '') let line = substitute(line, '"\(.\|\\"\)\{-}"', '""', 'g') return line endfunction function! scala#CountBrackets(line, openBracket, closedBracket) let line = substitute(a:line, '"\(.\|\\"\)\{-}"', '', 'g') let open = substitute(line, '[^' . a:openBracket . ']', '', 'g') let close = substitute(line, '[^' . a:closedBracket . ']', '', 'g') return strlen(open) - strlen(close) endfunction function! scala#CountParens(line) return scala#CountBrackets(a:line, '(', ')') endfunction function! scala#CountCurlies(line) return scala#CountBrackets(a:line, '{', '}') endfunction function! scala#LineEndsInIncomplete(line) if a:line =~ '[.,]\s*$' return 1 else return 0 endif endfunction function! scala#LineIsAClosingXML(line) if a:line =~ '^\s*]*\)>.*$', '\1', '') let [lineNum, colnum] = searchpairpos('<' . tag . '>', '', '', 'Wbn') call setpos('.', savedpos) let pline = scala#GetLine(prevnonblank(lineNum - 1)) if pline =~ '=\s*$' return 1 else return 0 endif endfunction function! scala#IsParentCase() let savedpos = getpos('.') call setpos('.', [savedpos[0], savedpos[1], 0, savedpos[3]]) let [l, c] = searchpos('^\s*\%(' . s:defMatcher . '\|\%(\\)\)', 'bnW') let retvalue = -1 if l != 0 && search('\%' . l . 'l\s*\', 'bnW') let retvalue = l endif call setpos('.', savedpos) return retvalue endfunction function! scala#CurlyMatcher() let matchline = scala#GetLineThatMatchesBracket('{', '}') if scala#CountParens(scala#GetLine(matchline)) < 0 let savedpos = getpos('.') call setpos('.', [savedpos[0], matchline, 9999, savedpos[3]]) call searchpos('{', 'Wbc') call searchpos(')', 'Wb') let [lnum, colnum] = searchpairpos('(', '', ')', 'Wbn') call setpos('.', savedpos) let line = scala#GetLine(lnum) if line =~ '^\s*' . s:defMatcher return lnum else return matchline endif else return matchline endif endfunction function! scala#GetLineAndColumnThatMatchesCurly() return scala#GetLineAndColumnThatMatchesBracket('{', '}') endfunction function! scala#GetLineAndColumnThatMatchesParen() return scala#GetLineAndColumnThatMatchesBracket('(', ')') endfunction function! scala#GetLineAndColumnThatMatchesBracket(openBracket, closedBracket) let savedpos = getpos('.') let curline = scala#GetLine(line('.')) if curline =~ a:closedBracket . '.*' . a:openBracket . '.*' . a:closedBracket call setpos('.', [savedpos[0], savedpos[1], 0, savedpos[3]]) call searchpos(a:closedBracket . '\ze[^' . a:closedBracket . a:openBracket . ']*' . a:openBracket, 'W') else call setpos('.', [savedpos[0], savedpos[1], 9999, savedpos[3]]) call searchpos(a:closedBracket, 'Wbc') endif let [lnum, colnum] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn') call setpos('.', savedpos) return [lnum, colnum] endfunction function! scala#GetLineThatMatchesCurly() return scala#GetLineThatMatchesBracket('{', '}') endfunction function! scala#GetLineThatMatchesParen() return scala#GetLineThatMatchesBracket('(', ')') endfunction function! scala#GetLineThatMatchesBracket(openBracket, closedBracket) let [lnum, colnum] = scala#GetLineAndColumnThatMatchesBracket(a:openBracket, a:closedBracket) return lnum endfunction function! scala#NumberOfBraceGroups(line) let line = substitute(a:line, '[^()]', '', 'g') if strlen(line) == 0 return 0 endif let line = substitute(line, '^)*', '', 'g') if strlen(line) == 0 return 0 endif let line = substitute(line, '^(', '', 'g') if strlen(line) == 0 return 0 endif let c = 1 let counter = 0 let groupCount = 0 while counter < strlen(line) let char = strpart(line, counter, 1) if char == '(' let c = c + 1 elseif char == ')' let c = c - 1 endif if c == 0 let groupCount = groupCount + 1 endif let counter = counter + 1 endwhile return groupCount endfunction function! scala#MatchesIncompleteDefValr(line) if a:line =~ '^\s*\%(' . s:defMatcher . '\|\\).*[=({]\s*$' return 1 else return 0 endif endfunction function! scala#LineIsCompleteIf(line) if scala#CountBrackets(a:line, '{', '}') == 0 && \ scala#CountBrackets(a:line, '(', ')') == 0 && \ a:line =~ '^\s*\\s*([^)]*)\s*\S.*$' return 1 else return 0 endif endfunction function! scala#LineCompletesIfElse(lnum, line) if a:line =~ '^\s*\%(\\|\%(}\s*\)\?\\)' return 0 endif let result = search('^\%(\s*\\s*(.*).*\n\|\s*\\s*(.*)\s*\n.*\n\)\%(\s*\\s*\\s*(.*)\s*\n.*\n\)*\%(\s*\\s*\n\|\s*\[^{]*\n\)\?\%' . a:lnum . 'l', 'Wbn') if result != 0 && scala#GetLine(prevnonblank(a:lnum - 1)) !~ '{\s*$' return result endif return 0 endfunction function! scala#GetPrevCodeLine(lnum) return prevnonblank(a:lnum - 1) endfunction function! scala#InvertBracketType(openBracket, closedBracket) if a:openBracket == '(' return [ '{', '}' ] else return [ '(', ')' ] endif endfunction function! scala#Testhelper(lnum, line, openBracket, closedBracket, iteration) let bracketCount = scala#CountBrackets(a:line, a:openBracket, a:closedBracket) if bracketCount < 0 let [matchedLNum, matchedColNum] = scala#GetLineAndColumnThatMatchesBracket(a:openBracket, a:closedBracket) if matchedLNum == a:lnum return -1 endif let matchedLine = scala#GetLine(matchedLNum) if ! scala#MatchesIncompleteDefValr(matchedLine) let bracketLine = substitute(substitute(matchedLine, '\%' . matchedColNum . 'c.*$', '', ''), '[^{}()]', '', 'g') if bracketLine =~ '}$' return scala#Testhelper(matchedLNum, matchedLine, '{', '}', a:iteration + 1) elseif bracketLine =~ ')$' return scala#Testhelper(matchedLNum, matchedLine, '(', ')', a:iteration + 1) else let prevCodeLNum = scala#GetPrevCodeLine(matchedLNum) if scala#MatchesIncompleteDefValr(scala#GetLine(prevCodeLNum)) return prevCodeLNum else return -1 endif endif else return matchedLNum endif elseif bracketCount == 0 if a:iteration == 0 let otherBracketType = scala#InvertBracketType(a:openBracket, a:closedBracket) return scala#Testhelper(a:lnum, a:line, otherBracketType[0], otherBracketType[1], a:iteration + 1) else let prevCodeLNum = scala#GetPrevCodeLine(a:lnum) let prevCodeLine = scala#GetLine(prevCodeLNum) if scala#MatchesIncompleteDefValr(prevCodeLine) && prevCodeLine !~ '{\s*$' return prevCodeLNum else let possibleIfElse = scala#LineCompletesIfElse(a:lnum, a:line) if possibleIfElse != 0 let defValrLine = prevnonblank(possibleIfElse - 1) let possibleDefValr = scala#GetLine(defValrLine) if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\s*$' return possibleDefValr else return -1 endif else return -1 endif endif endif else return -1 endif endfunction function! scala#Test(lnum, line, openBracket, closedBracket) return scala#Testhelper(a:lnum, a:line, a:openBracket, a:closedBracket, 0) endfunction function! scala#LineCompletesDefValr(lnum, line) let bracketCount = scala#CountBrackets(a:line, '{', '}') if bracketCount < 0 let matchedBracket = scala#GetLineThatMatchesBracket('{', '}') if ! scala#MatchesIncompleteDefValr(scala#GetLine(matchedBracket)) let possibleDefValr = scala#GetLine(prevnonblank(matchedBracket - 1)) if matchedBracket != -1 && scala#MatchesIncompleteDefValr(possibleDefValr) return 1 else return 0 endif else return 0 endif elseif bracketCount == 0 let bracketCount = scala#CountBrackets(a:line, '(', ')') if bracketCount < 0 let matchedBracket = scala#GetLineThatMatchesBracket('(', ')') if ! scala#MatchesIncompleteDefValr(scala#GetLine(matchedBracket)) let possibleDefValr = scala#GetLine(prevnonblank(matchedBracket - 1)) if matchedBracket != -1 && scala#MatchesIncompleteDefValr(possibleDefValr) return 1 else return 0 endif else return 0 endif elseif bracketCount == 0 let possibleDefValr = scala#GetLine(prevnonblank(a:lnum - 1)) if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\s*$' return 1 else let possibleIfElse = scala#LineCompletesIfElse(a:lnum, a:line) if possibleIfElse != 0 let possibleDefValr = scala#GetLine(prevnonblank(possibleIfElse - 1)) if scala#MatchesIncompleteDefValr(possibleDefValr) && possibleDefValr =~ '^.*=\s*$' return 2 else return 0 endif else return 0 endif endif else return 0 endif endif endfunction function! scala#SpecificLineCompletesBrackets(lnum, openBracket, closedBracket) let savedpos = getpos('.') call setpos('.', [savedpos[0], a:lnum, 9999, savedpos[3]]) let retv = scala#LineCompletesBrackets(a:openBracket, a:closedBracket) call setpos('.', savedpos) return retv endfunction function! scala#LineCompletesBrackets(openBracket, closedBracket) let savedpos = getpos('.') let offline = 0 while offline == 0 let [lnum, colnum] = searchpos(a:closedBracket, 'Wb') let [lnumA, colnumA] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbn') if lnum != lnumA let [lnumB, colnumB] = searchpairpos(a:openBracket, '', a:closedBracket, 'Wbnr') let offline = 1 endif endwhile call setpos('.', savedpos) if lnumA == lnumB && colnumA == colnumB return lnumA else return -1 endif endfunction function! GetScalaIndent() let prevlnum = prevnonblank(v:lnum - 1) if prevlnum == 0 return 0 endif let ind = indent(prevlnum) let originalIndentValue = ind let prevline = scala#GetLine(prevlnum) let curlnum = v:lnum let curline = scala#GetLine(curlnum) if get(g:, 'scala_scaladoc_indent', 0) let star_indent = 2 else let star_indent = 1 end if prevline =~ '^\s*/\*\*' if prevline =~ '\*/\s*$' return ind else return ind + star_indent endif endif if curline =~ '^\s*\*' return cindent(curlnum) endif if curline =~ '^\s*{' call scala#ConditionalConfirm("1") if prevline !~ '^\s*{' call scala#ConditionalConfirm("2") return indent(prevlnum) endif endif if curline =~ '^\s*\.' if prevline =~ '^\s*\.' return ind else return ind + shiftwidth() endif endif if prevline !~ '/>\s*$' && prevline =~ '^\s*<[a-zA-Z][^>]*>\s*$' call scala#ConditionalConfirm("3") return ind + shiftwidth() endif if curline =~ '^\s*}\s*\' return ind - shiftwidth() elseif curline =~ '^\s*\' return ind endif if (prevline =~ '^\s*\<\%(\%(}\?\s*else\s\+\)\?if\|for\|while\)\>.*[)=]\s*$' && scala#NumberOfBraceGroups(prevline) <= 1) \ || prevline =~ '^\s*' . s:defMatcher . '.*=\s*$' \ || prevline =~ '^\s*\.*[=]\s*$' \ || prevline =~ '^\s*\%(}\s*\)\?\\s*$' \ || prevline =~ '=\s*$' call scala#ConditionalConfirm("4") let ind = ind + shiftwidth() elseif prevline =~ '^\s*\<\%(}\?\s*else\s\+\)\?if\>' && curline =~ '^\s*}\?\s*\' return ind endif let lineCompletedBrackets = 0 let bracketCount = scala#CountBrackets(prevline, '{', '}') if bracketCount > 0 || prevline =~ '.*{\s*$' call scala#ConditionalConfirm("5b") let ind = ind + shiftwidth() elseif bracketCount < 0 call scala#ConditionalConfirm("6b") let completeLine = scala#LineCompletesBrackets('{', '}') if completeLine != -1 call scala#ConditionalConfirm("8b") let prevCompleteLine = scala#GetLine(prevnonblank(completeLine - 1)) if prevCompleteLine =~ '=\s*$' call scala#ConditionalConfirm("9b") let ind = indent(prevnonblank(completeLine - 1)) else call scala#ConditionalConfirm("10b") let ind = indent(completeLine) endif else let lineCompletedBrackets = 1 endif endif if ind == originalIndentValue let bracketCount = scala#CountBrackets(prevline, '(', ')') if bracketCount > 0 || prevline =~ '.*(\s*$' call scala#ConditionalConfirm("5a") let ind = ind + shiftwidth() elseif bracketCount < 0 call scala#ConditionalConfirm("6a") let completeLine = scala#LineCompletesBrackets('(', ')') if completeLine != -1 && prevline !~ '^.*{\s*$' call scala#ConditionalConfirm("8a") let prevCompleteLine = scala#GetLine(prevnonblank(completeLine - 1)) if prevCompleteLine =~ '=\s*$' call scala#ConditionalConfirm("9a") let ind = indent(prevnonblank(completeLine - 1)) else call scala#ConditionalConfirm("10a") let ind = indent(completeLine) endif else let ind = ind + (bracketCount * shiftwidth()) let lineCompletedBrackets = 1 endif endif endif if curline =~ '^\s*}\?\s*\\%(\s\+\\s*(.*)\)\?\s*{\?\s*$' && \ ! scala#LineIsCompleteIf(prevline) && \ prevline !~ '^.*}\s*$' let ind = ind - shiftwidth() endif let curCurlyCount = scala#CountCurlies(curline) if curCurlyCount < 0 call scala#ConditionalConfirm("14a") let matchline = scala#CurlyMatcher() return indent(matchline) elseif curline =~ '^\s*]*>' call scala#ConditionalConfirm("14c") return ind - shiftwidth() endif let prevParenCount = scala#CountParens(prevline) if prevline =~ '^\s*\.*$' && prevParenCount > 0 call scala#ConditionalConfirm("15") let ind = indent(prevlnum) + 5 endif let prevCurlyCount = scala#CountCurlies(prevline) if prevCurlyCount == 0 && prevline =~ '^.*\%(=>\|⇒\)\s*$' && prevline !~ '^\s*this\s*:.*\%(=>\|⇒\)\s*$' && curline !~ '^\s*\' call scala#ConditionalConfirm("16") let ind = ind + shiftwidth() endif if ind == originalIndentValue && curline =~ '^\s*\' call scala#ConditionalConfirm("17") let parentCase = scala#IsParentCase() if parentCase != -1 call scala#ConditionalConfirm("17a") return indent(parentCase) endif endif if prevline =~ '^\s*\*/' \ || prevline =~ '*/\s*$' call scala#ConditionalConfirm("18") let ind = ind - star_indent endif if scala#LineEndsInIncomplete(prevline) call scala#ConditionalConfirm("19") return ind endif if scala#LineIsAClosingXML(prevline) if scala#LineCompletesXML(prevlnum, prevline) call scala#ConditionalConfirm("20a") return ind - shiftwidth() else call scala#ConditionalConfirm("20b") return ind endif endif if ind == originalIndentValue let defValrLine = scala#Test(prevlnum, prevline, '{', '}') if defValrLine != -1 call scala#ConditionalConfirm("21a") let ind = indent(defValrLine) elseif lineCompletedBrackets == 0 call scala#ConditionalConfirm("21b") if scala#GetLine(prevnonblank(prevlnum - 1)) =~ '^.*\\s*\%(//.*\)\?$' call scala#ConditionalConfirm("21c") let ind = ind - shiftwidth() elseif scala#LineCompletesIfElse(prevlnum, prevline) call scala#ConditionalConfirm("21d") let ind = ind - shiftwidth() elseif scala#CountParens(curline) < 0 && curline =~ '^\s*)' && scala#GetLine(scala#GetLineThatMatchesBracket('(', ')')) =~ '.*(\s*$' call scala#ConditionalConfirm("21e") let ind = ind - shiftwidth() endif endif endif call scala#ConditionalConfirm("returning " . ind) return ind endfunction let &cpo = s:keepcpo unlet s:keepcpo if exists("b:did_indent") finish endif runtime! indent/lisp.vim if exists("b:did_indent") finish endif runtime! indent/css.vim if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetSDLIndent() setlocal indentkeys+==~end,=~state,* if exists("*GetSDLIndent") endif let s:cpo_save = &cpo set cpo&vim function! GetSDLIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) let virtuality = '^\s*\(\(virtual\|redefined\|finalized\)\s\+\)\=\s*' if getline(lnum) =~ '^\s*\*' let ind = ind - 1 endif if getline(v:lnum) =~ '^\s*\*' let ind = ind + 1 endif if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)' \ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)') \ && getline(lnum) !~? 'end[[:alpha:]]\+;$' let ind = ind + shiftwidth() endif if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)' let ind = ind - shiftwidth() endif if getline(v:lnum) =~? '^\s*end\>' let ind = ind - shiftwidth() endif if getline(v:lnum) =~? '^\s*\((.*)\|else\):' normal k let ind = indent(searchpair('^\s*decision', '', '^\s*enddecision', 'bW', \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"')) endif if getline(v:lnum) =~? '^\s*state\>' let ind = indent(search('^\s*start', 'bW')) endif if getline(v:lnum) =~? '^\s*\(\(end\)\=system\|\(end\)\=package\)' return 0 endif if getline(v:lnum) =~? '^\s*end[[:alpha:]]' normal k let partner=matchstr(getline(v:lnum), '\(' . virtuality . 'end\)\@<=[[:alpha:]]\+') let ind = indent(searchpair(virtuality . partner, '', '^\s*end' . partner, 'bW', \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "sdlString"')) endif return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetShIndent() setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,0=end,),0=;;,0=;& setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix setlocal indentkeys-=:,0# setlocal nosmartindent let b:undo_indent = 'setlocal indentexpr< indentkeys< smartindent<' if exists("*GetShIndent") finish endif let s:cpo_save = &cpo set cpo&vim let s:sh_indent_defaults = { \ 'default': function('shiftwidth'), \ 'continuation-line': function('shiftwidth'), \ 'case-labels': function('shiftwidth'), \ 'case-statements': function('shiftwidth'), \ 'case-breaks': 0 } function! s:indent_value(option) let Value = exists('b:sh_indent_options') \ && has_key(b:sh_indent_options, a:option) ? \ b:sh_indent_options[a:option] : \ s:sh_indent_defaults[a:option] if type(Value) == type(function('type')) return Value() endif return Value endfunction function! GetShIndent() let curline = getline(v:lnum) let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let line = getline(lnum) let pnum = prevnonblank(lnum - 1) let pline = getline(pnum) let ind = indent(lnum) if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' || \ (&ft is# 'zsh' && line =~ '\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>') if !s:is_end_expression(line) let ind += s:indent_value('default') endif elseif s:is_case_label(line, pnum) if !s:is_case_ended(line) let ind += s:indent_value('case-statements') endif elseif s:is_function_definition(line) if line !~ '}\s*\%(#.*\)\=$' let ind += s:indent_value('default') endif elseif s:is_array(line) && line !~ ')\s*$' && (&ft is# 'zsh' || s:is_bash()) let ind += s:indent_value('continuation-line') elseif curline =~ '^\s*)$' let ind -= s:indent_value('continuation-line') elseif s:is_continuation_line(line) if pnum == 0 || !s:is_continuation_line(pline) let ind += s:indent_value('continuation-line') endif elseif s:end_block(line) && !s:start_block(line) let ind -= s:indent_value('default') elseif pnum != 0 && \ s:is_continuation_line(pline) && \ !s:end_block(curline) && \ !s:is_end_expression(curline) let i = v:lnum let ind2 = indent(s:find_continued_lnum(pnum)) while !s:is_empty(getline(i)) && i > pnum let i -= 1 endw if i == pnum let ind += ind2 else let ind = ind2 endif endif let pine = line let line = curline if curline =~ '^\s*\%(fi\);\?\s*\%(#.*\)\=$' let previous_line = searchpair('\', '', '\\zs', 'bnW') if previous_line > 0 let ind = indent(previous_line) endif elseif line =~ '^\s*\%(then\|do\|else\|elif\|done\|end\)\>' || s:end_block(line) let ind -= s:indent_value('default') elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1)) let ind -= s:indent_value('default') elseif line =~ '^\s*esac\>' let ind -= (s:is_case_label(pine, lnum) && s:is_case_ended(pine) ? \ 0 : s:indent_value('case-statements')) + \ s:indent_value('case-labels') if s:is_case_break(pine) let ind += s:indent_value('case-breaks') endif elseif s:is_case_label(line, lnum) if s:is_case(pine) let ind = indent(lnum) + s:indent_value('case-labels') else let ind -= (s:is_case_label(pine, lnum) && s:is_case_ended(pine) ? \ 0 : s:indent_value('case-statements')) - \ s:indent_value('case-breaks') endif elseif s:is_case_break(line) let ind -= s:indent_value('case-breaks') elseif s:is_here_doc(line) let ind = 0 elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1 return indent(v:lnum) elseif s:is_comment(line) && s:is_empty(getline(v:lnum-1)) return indent(v:lnum) endif return ind > 0 ? ind : 0 endfunction function! s:is_continuation_line(line) if a:line =~ '^\s*#' return 0 else return a:line =~ '\%(\%(^\|[^\\]\)\\\|&&\|||\||\)' . \ '\s*\({\s*\)\=\(#.*\)\=$' endif endfunction function! s:find_continued_lnum(lnum) let i = a:lnum while i > 1 && s:is_continuation_line(getline(i - 1)) let i -= 1 endwhile return i endfunction function! s:is_function_definition(line) return a:line =~ '^\s*\<\k\+\>\s*()\s*{' || \ a:line =~ '^\s*{' || \ a:line =~ '^\s*function\s*\w\S\+\s*\%(()\)\?\s*{' endfunction function! s:is_array(line) return a:line =~ '^\s*\<\k\+\>=(' endfunction function! s:is_case_label(line, pnum) if a:line !~ '^\s*(\=.*)' return 0 endif if a:pnum > 0 let pine = getline(a:pnum) if !(s:is_case(pine) || s:is_case_ended(pine)) return 0 endif endif let suffix = substitute(a:line, '^\s*(\=', "", "") let nesting = 0 let i = 0 let n = strlen(suffix) while i < n let c = suffix[i] let i += 1 if c == '\\' let i += 1 elseif c == '(' let nesting += 1 elseif c == ')' if nesting == 0 return 1 endif let nesting -= 1 endif endwhile return 0 endfunction function! s:is_case(line) return a:line =~ '^\s*case\>' endfunction function! s:is_case_break(line) return a:line =~ '^\s*;[;&]' endfunction function! s:is_here_doc(line) if a:line =~ '^\w\+$' let here_pat = '<<-\?'. s:escape(a:line). '\$' return search(here_pat, 'bnW') > 0 endif return 0 endfunction function! s:is_case_ended(line) return s:is_case_break(a:line) || a:line =~ ';[;&]\s*\%(#.*\)\=$' endfunction function! s:is_case_empty(line) if a:line =~ '^\s*$' || a:line =~ '^\s*#' return s:is_case_empty(getline(v:lnum - 1)) else return a:line =~ '^\s*case\>' endif endfunction function! s:escape(pattern) return '\V'. escape(a:pattern, '\\') endfunction function! s:is_empty(line) return a:line =~ '^\s*$' endfunction function! s:end_block(line) return a:line =~ '^\s*}' endfunction function! s:start_block(line) return a:line =~ '{\s*\(#.*\)\?$' endfunction function! s:find_start_block(lnum) let i = a:lnum while i > 1 && !s:start_block(getline(i)) let i -= 1 endwhile return i endfunction function! s:is_comment(line) return a:line =~ '^\s*#' endfunction function! s:is_end_expression(line) return a:line =~ '\<\%(fi\|esac\|done\|end\)\>\s*\%(#.*\)\=$' endfunction function! s:is_bash() return get(g:, 'is_bash', 0) || get(b:, 'is_bash', 0) endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal expandtab setlocal indentexpr=GetSMLIndent() setlocal indentkeys+=0=and,0=else,0=end,0=handle,0=if,0=in,0=let,0=then,0=val,0=fun,0=\|,0=*),0) setlocal nolisp setlocal nosmartindent setlocal textwidth=80 setlocal shiftwidth=2 if (has("comments")) set comments=sr:(*,mb:*,ex:*) set fo=cqort endif let s:beflet = '^\s*\(initializer\|method\|try\)\|\(\<\(begin\|do\|else\|in\|then\|try\)\|->\|;\)\s*$' let s:letpat = '^\s*\(let\|type\|module\|class\|open\|exception\|val\|include\|external\)\>' let s:letlim = '\(\<\(sig\|struct\)\|;;\)\s*$' let s:lim = '^\s*\(exception\|external\|include\|let\|module\|open\|type\|val\)\>' let s:module = '\<\%(let\|sig\|struct\)\>' let s:obj = '^\s*\(constraint\|inherit\|initializer\|method\|val\)\>\|\<\(object\|object\s*(.*)\)\s*$' let s:type = '^\s*\%(let\|type\)\>.*=' let s:val = '^\s*\(val\|external\)\>.*:' function! s:SkipPattern(lnum, pat) let def = prevnonblank(a:lnum - 1) while def > 0 && getline(def) =~ a:pat let def = prevnonblank(def - 1) endwhile return def endfunction function! s:GetInd(lnum, pat, lim) let llet = search(a:pat, 'bW') let old = indent(a:lnum) while llet > 0 let old = indent(llet) let nb = s:SkipPattern(llet, '^\s*(\*.*\*)\s*$') if getline(nb) =~ a:lim return old endif let llet = search(a:pat, 'bW') endwhile return old endfunction function! s:FindPair(pstart, pmid, pend) call search(a:pend, 'bW') let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') if lno == -1 return indent(lno) else return col(".") - 1 endif endfunction function! s:FindLet(pstart, pmid, pend) call search(a:pend, 'bW') let lno = searchpair(a:pstart, a:pmid, a:pend, 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') let moduleLine = getline(lno) if lno == -1 || moduleLine =~ '^\s*\(fun\|structure\|signature\)\>' return indent(lno) else return col(".") - 1 endif endfunction function! GetSMLIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) let lline = getline(lnum) if lline =~ '^\s*|.*=>\s*$' return ind + 2 *shiftwidth() elseif lline =~ '^\s*val\>.*=\s*$' return ind + shiftwidth() endif let line = getline(v:lnum) if line =~ '^\s*end\>' return s:FindLet(s:module, '', '\') elseif line =~ '^\s*else\>' if lline !~ '^\s*\(if\|else\|then\)\>' return s:FindPair('\', '', '\') else return ind endif elseif line =~ '^\s*then\>' if lline !~ '^\s*\(if\|else\|then\)\>' return s:FindPair('\', '', '\') else return ind endif elseif line =~ '^\s*\]' return s:FindPair('\[','','\]') elseif line =~ '^\s*in\>' let ind = s:FindLet('\','','\') elseif line =~ '^\s*\(fun\|val\|open\|structure\|and\|datatype\|type\|exception\)\>' cursor(lnum,1) let lastModule = indent(searchpair(s:module, '', '\', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"')) if lastModule == -1 return 0 else return lastModule + shiftwidth() endif elseif line =~ '^\s*|' let lastSwitch = search('\<\(case\|handle\|fun\|datatype\)\>','bW') let switchLine = getline(lastSwitch) let switchLineIndent = indent(lastSwitch) if lline =~ '^\s*|' return ind endif if switchLine =~ '\' return col(".") + 2 elseif switchLine =~ '\' return switchLineIndent + shiftwidth() elseif switchLine =~ '\' call search('=') return col(".") - 1 else return switchLineIndent + 2 endif elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$' let ind = ind + shiftwidth() elseif lline =~ '\<\(of\)\s*$' call search('\',"bW") let ind = col(".")+4 elseif line =~ '^\s*of\>' call search('\',"bW") let ind = col(".")+1 elseif lline =~ '^\s*\(fun\|fn\|case\)\>' let ind = ind + shiftwidth() endif if line =~ '^\s*let\>' if lline =~ '^\s*\(fun\|fn\)' let ind = ind - shiftwidth() endif endif return ind endfunction if exists("b:did_indent") finish endif let filename = 'sqlanywhere' if exists("b:sql_type_override") if globpath(&runtimepath, 'indent/'.b:sql_type_override.'.vim') != '' let filename = b:sql_type_override endif elseif exists("g:sql_type_default") if globpath(&runtimepath, 'indent/'.g:sql_type_default.'.vim') != '' let filename = g:sql_type_default endif endif exec 'runtime indent/'.filename.'.vim' if exists("b:did_indent") finish endif let b:did_indent = 1 let b:current_indent = "sqlanywhere" setlocal indentkeys-=0{ setlocal indentkeys-=0} setlocal indentkeys-=: setlocal indentkeys-=0# setlocal indentkeys-=e setlocal indentkeys+==~end,=~else,=~elseif,=~elsif,0=~when,0=) setlocal indentexpr=GetSQLIndent() if exists("*GetSQLIndent") finish endif let s:keepcpo= &cpo set cpo&vim let s:SQLBlockStart = '^\s*\%('. \ 'if\|else\|elseif\|elsif\|'. \ 'while\|loop\|do\|for\|'. \ 'begin\|'. \ 'case\|when\|merge\|exception'. \ '\)\>' let s:SQLBlockEnd = '^\s*\(end\)\>' function! s:CountUnbalancedParan( line, paran_to_check ) let l = a:line let lp = substitute(l, '[^(]', '', 'g') let l = a:line let rp = substitute(l, '[^)]', '', 'g') if a:paran_to_check =~ ')' return (strlen(rp) - strlen(lp)) elseif a:paran_to_check =~ '(' return (strlen(lp) - strlen(rp)) else return 0 endif endfunction function! s:CheckToIgnoreRightParan( prev_lnum, num_levels ) let lnum = a:prev_lnum let line = getline(lnum) let ends = 0 let num_right_paran = a:num_levels let ignore_paran = 0 let vircol = 1 while num_right_paran > 0 silent! exec 'norm! '.lnum."G\".vircol."\" let right_paran = search( ')', 'W' ) if right_paran != lnum break endif let vircol = virtcol(".") let matching_paran = searchpair('(', '', ')', 'bW', \ 's:IsColComment(line("."), col("."))') if matching_paran < 1 break endif if matching_paran == lnum continue endif if getline(matching_paran) =~? '\(if\|while\)\>' let ignore_paran = ignore_paran + 1 endif let num_right_paran = num_right_paran - 1 endwhile return ignore_paran endfunction function! s:GetStmtStarterIndent( keyword, curr_lnum ) let lnum = a:curr_lnum let ind = indent(a:curr_lnum) - shiftwidth() if a:keyword =~? 'end' exec 'normal! ^' let stmts = '^\s*\%('. \ '\\|' . \ '\%(\%(\\)\|' . \ '\%(\%(\\)\|' . \ '\%(\%(\\)\|' . \ '\%(\%(\\)'. \ '\)' let matching_lnum = searchpair(stmts, '', '\\zs', 'bW', \ 's:IsColComment(line("."), col(".")) == 1') exec 'normal! $' if matching_lnum > 0 && matching_lnum < a:curr_lnum let ind = indent(matching_lnum) endif elseif a:keyword =~? 'when' exec 'normal! ^' let matching_lnum = searchpair( \ '\%(\\|\\|\', \ '', \ '\%(\%(\\)\|\%(\\)\)', \ 'bW', \ 's:IsColComment(line("."), col(".")) == 1') exec 'normal! $' if matching_lnum > 0 && matching_lnum < a:curr_lnum let ind = indent(matching_lnum) else let ind = indent(a:curr_lnum) endif endif return ind endfunction function! s:IsLineComment(lnum) let rc = synIDattr( \ synID(a:lnum, \ match(getline(a:lnum), '\S')+1, 0) \ , "name") \ =~? "comment" return rc endfunction function! s:IsColComment(lnum, cnum) let rc = synIDattr(synID(a:lnum, a:cnum, 0), "name") \ =~? "comment" return rc endfunction function! s:ModuloIndent(ind) let ind = a:ind if ind > 0 let modulo = ind % shiftwidth() if modulo > 0 let ind = ind - modulo endif endif return ind endfunction function! GetSQLIndent() let lnum = v:lnum let ind = indent(lnum) let prevlnum = prevnonblank(lnum - 1) if prevlnum <= 0 return ind endif if s:IsLineComment(prevlnum) == 1 if getline(v:lnum) =~ '^\s*\*' let ind = s:ModuloIndent(indent(prevlnum)) return ind + 1 endif if getline(v:lnum) =~ '^\s*$' return -1 endif endif let ind = indent(prevlnum) let prevline = getline(prevlnum) if prevline =~? s:SQLBlockStart let ind = ind + shiftwidth() elseif prevline =~ '[()]' if prevline =~ '(' let num_unmatched_left = s:CountUnbalancedParan( prevline, '(' ) else let num_unmatched_left = 0 endif if prevline =~ ')' let num_unmatched_right = s:CountUnbalancedParan( prevline, ')' ) else let num_unmatched_right = 0 endif if num_unmatched_left > 0 let ind = ind + ( shiftwidth() * num_unmatched_left ) elseif num_unmatched_right > 0 let ignore = s:CheckToIgnoreRightParan( prevlnum, num_unmatched_right ) if prevline =~ '^\s*)' let ignore = ignore + 1 endif if (num_unmatched_right - ignore) > 0 let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) ) endif endif endif let line = getline(v:lnum) if line =~? '^\s*els' let ind = ind - shiftwidth() elseif line =~? '^\s*end\>' let ind = s:GetStmtStarterIndent('end', v:lnum) elseif line =~? '^\s*when\>' let ind = s:GetStmtStarterIndent('when', v:lnum) elseif line =~ '^\s*)' let num_unmatched_right = s:CountUnbalancedParan( line, ')' ) let ignore = s:CheckToIgnoreRightParan( v:lnum, num_unmatched_right ) if line =~ '^\s*)' endif if (num_unmatched_right - ignore) > 0 let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) ) endif endif return s:ModuloIndent(ind) endfunction let &cpo= s:keepcpo unlet s:keepcpo if exists("b:did_indent") finish endif runtime! indent/dosini.vim if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=SystemVerilogIndent() setlocal indentkeys=!^F,o,O,0),0},=begin,=end,=join,=endcase,=join_any,=join_none setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify setlocal indentkeys+==endclass,=endpackage,=endsequence,=endclocking setlocal indentkeys+==endinterface,=endgroup,=endprogram,=endproperty,=endchecker setlocal indentkeys+==`else,=`endif if exists("*SystemVerilogIndent") finish endif let s:cpo_save = &cpo set cpo&vim function SystemVerilogIndent() if exists('b:systemverilog_indent_width') let offset = b:systemverilog_indent_width else let offset = shiftwidth() endif if exists('b:systemverilog_indent_modules') let indent_modules = offset else let indent_modules = 0 endif let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let lnum2 = prevnonblank(lnum - 1) let curr_line = getline(v:lnum) let last_line = getline(lnum) let last_line2 = getline(lnum2) let ind = indent(lnum) let ind2 = indent(lnum - 1) let offset_comment1 = 1 let sv_openstat = '\(\\|\([*/]\)\@<+-/%^&|!=?:]\([*/]\)\@!\)' let sv_comment = '\(//.*\|/\*.*\*/\s*\)' if exists('b:verilog_indent_verbose') let vverb_str = 'INDENT VERBOSE:' let vverb = 1 else let vverb = 0 endif if last_line =~ '\*/\s*$' && last_line !~ '/\*.\{-}\*/' let ind = ind - offset_comment1 if vverb echo vverb_str "De-indent after a multiple-line comment." endif elseif last_line =~ '`\@' || \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\|do\|foreach\|randcase\)\>' || \ last_line =~ '^\s*\<\(always\|always_comb\|always_ff\|always_latch\)\>' || \ last_line =~ '^\s*\<\(initial\|specify\|fork\|final\)\>' if last_line !~ '\(;\|\\)\s*' . sv_comment . '*$' || \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . sv_comment . '*$' let ind = ind + offset if vverb | echo vverb_str "Indent after a block statement." | endif endif elseif last_line =~ '^\s*\<\(function\|task\|class\|package\)\>' || \ last_line =~ '^\s*\<\(sequence\|clocking\|interface\)\>' || \ last_line =~ '^\s*\(\w\+\s*:\)\=\s*\' || \ last_line =~ '^\s*\<\(property\|checker\|program\)\>' if last_line !~ '\\s*' . sv_comment . '*$' || \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . sv_comment . '*$' let ind = ind + offset if vverb echo vverb_str "Indent after function/task/class block statement." endif endif elseif last_line =~ '^\s*\(\\s*\)\=\' let ind = ind + indent_modules if vverb && indent_modules echo vverb_str "Indent after module statement." endif if last_line =~ '[(,]\s*' . sv_comment . '*$' && \ last_line !~ '\(//\|/\*\).*[(,]\s*' . sv_comment . '*$' let ind = ind + offset if vverb echo vverb_str "Indent after a multiple-line module statement." endif endif elseif last_line =~ '\(\\)\(\s*:\s*\w\+\)*' . sv_comment . '*$' && \ last_line !~ '\(//\|/\*\).*\(\\)' && \ ( last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' || \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . sv_comment . '*$' ) let ind = ind + offset if vverb | echo vverb_str "Indent after begin statement." | endif elseif last_line =~ '[{(]' . sv_comment . '*$' && \ last_line !~ '\(//\|/\*\).*[{(]' && \ ( last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' || \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . sv_comment . '*$' ) let ind = ind + offset if vverb | echo vverb_str "Indent after begin statement." | endif elseif ( last_line !~ '\' || \ last_line =~ '\(//\|/\*\).*\' ) && \ last_line2 =~ '\<\(`\@.*' . \ sv_comment . '*$' && \ last_line2 !~ '\(//\|/\*\).*\<\(`\@' && \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' && \ ( last_line2 !~ '\' || \ last_line2 =~ '\(//\|/\*\).*\' ) let ind = ind - offset if vverb echo vverb_str "De-indent after the end of one-line statement." endif elseif last_line =~ sv_openstat . '\s*' . sv_comment . '*$' && \ last_line !~ '\(//\|/\*\).*' . sv_openstat . '\s*$' && \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' let ind = ind + offset if vverb | echo vverb_str "Indent after an open statement." | endif elseif last_line =~ ')*\s*;\s*' . sv_comment . '*$' && \ last_line !~ '^\s*)*\s*;\s*' . sv_comment . '*$' && \ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . sv_comment . '*$' && \ ( last_line2 =~ sv_openstat . '\s*' . sv_comment . '*$' && \ last_line2 !~ ';\s*//.*$') && \ last_line2 !~ '^\s*' . sv_comment . '$' let ind = ind - offset if vverb | echo vverb_str "De-indent after a close statement." | endif elseif last_line =~ '^\s*`\<\(ifdef\|else\)\>' let ind = ind + offset if vverb echo vverb_str "Indent after a `ifdef or `else statement." endif endif if curr_line =~ '^\s*\<\(join\|join_any\|join_none\|\|end\|endcase\|while\)\>' || \ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\|endclass\)\>' || \ curr_line =~ '^\s*\<\(endpackage\|endsequence\|endclocking\|endinterface\)\>' || \ curr_line =~ '^\s*\<\(endgroup\|endproperty\|endchecker\|endprogram\)\>' || \ curr_line =~ '^\s*}' let ind = ind - offset if vverb | echo vverb_str "De-indent the end of a block." | endif elseif curr_line =~ '^\s*\' let ind = ind - indent_modules if vverb && indent_modules echo vverb_str "De-indent the end of a module." endif elseif curr_line =~ '^\s*\' if last_line !~ '^\s*\<\(function\|task\|specify\|module\|class\|package\)\>' || \ last_line !~ '^\s*\<\(sequence\|clocking\|interface\|covergroup\)\>' || \ last_line !~ '^\s*\<\(property\|checker\|program\)\>' && \ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . sv_comment . '*$' && \ ( last_line =~ \ '\<\(`\@' || \ last_line =~ ')\s*' . sv_comment . '*$' || \ last_line =~ sv_openstat . '\s*' . sv_comment . '*$' ) let ind = ind - offset if vverb echo vverb_str "De-indent a stand alone begin statement." endif endif elseif curr_line =~ '^\s*)' && \ ( last_line =~ sv_openstat . '\s*' . sv_comment . '*$' || \ last_line !~ sv_openstat . '\s*' . sv_comment . '*$' && \ last_line2 =~ sv_openstat . '\s*' . sv_comment . '*$' ) let ind = ind - offset if vverb echo vverb_str "De-indent the end of a multiple statement." endif elseif curr_line =~ '^\s*`\<\(else\|endif\)\>' let ind = ind - offset if vverb | echo vverb_str "De-indent `else and `endif statement." | endif endif return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetTclIndent() setlocal indentkeys=0{,0},!^F,o,O,0] setlocal nosmartindent if exists("*GetTclIndent") finish endif function s:prevnonblanknoncomment(lnum) let lnum = prevnonblank(a:lnum) while lnum > 0 let line = getline(lnum) if line !~ '^\s*\(#\|$\)' break endif let lnum = prevnonblank(lnum - 1) endwhile return lnum endfunction function s:ends_with_backslash(lnum) let line = getline(a:lnum) if line =~ '\\\s*$' return 1 else return 0 endif endfunction function s:count_braces(lnum, count_open) let n_open = 0 let n_close = 0 let line = getline(a:lnum) let pattern = '[{}]' let i = match(line, pattern) while i != -1 if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'tcl\%(Comment\|String\)' if line[i] == '{' let n_open += 1 elseif line[i] == '}' if n_open > 0 let n_open -= 1 else let n_close += 1 endif endif endif let i = match(line, pattern, i + 1) endwhile return a:count_open ? n_open : n_close endfunction function GetTclIndent() let line = getline(v:lnum) let pnum = s:prevnonblanknoncomment(v:lnum - 1) if pnum == 0 return 0 endif let pnum2 = s:prevnonblanknoncomment(pnum-1) let ind = indent(pnum) if s:count_braces(pnum, 1) > 0 let ind += shiftwidth() else let slash1 = s:ends_with_backslash(pnum) let slash2 = s:ends_with_backslash(pnum2) if slash1 && !slash2 let ind += shiftwidth() elseif !slash1 && slash2 let ind -= shiftwidth() endif endif if line =~ '^\s*}' let ind -= shiftwidth() endif return ind endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=TcshGetIndent() setlocal indentkeys+=e,0=end,0=endsw indentkeys-=0{,0},0),:,0# if exists("*TcshGetIndent") finish endif function TcshGetIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) let line = getline(lnum) if line =~ '\v^\s*%(while|foreach)>|^\s*%(case\s.*:|default:|else)\s*$|%(' let ind = ind - shiftwidth() endif let line = getline(v:lnum) if line =~ '\v^\s*%(else|end|endif)\s*$' let ind = ind - shiftwidth() endif return ind endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal nosmartindent setlocal noautoindent setlocal indentexpr=GetTeraTermIndent(v:lnum) setlocal indentkeys=!^F,o,O,e setlocal indentkeys+==elseif,=endif,=loop,=next,=enduntil,=endwhile if exists("*GetTeraTermIndent") finish endif function! GetTeraTermIndent(lnum) let l:prevlnum = prevnonblank(a:lnum-1) if l:prevlnum == 0 return 0 endif let l:prevl = substitute(getline(l:prevlnum), ';.*$', '', '') let l:thisl = substitute(getline(a:lnum), ';.*$', '', '') let l:previ = indent(l:prevlnum) let l:ind = l:previ if l:prevl =~ '^\s*if\>.*\' let l:ind += shiftwidth() endif if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>' let l:ind += shiftwidth() endif if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>' let l:ind -= shiftwidth() endif return l:ind endfunction if exists("b:did_indent") finish endif let s:cpo_save = &cpo set cpo&vim let b:did_indent = 1 if !exists("g:tex_indent_items") let g:tex_indent_items = 1 endif if !exists("g:tex_indent_brace") let g:tex_indent_brace = 1 endif if !exists("g:tex_max_scan_line") let g:tex_max_scan_line = 60 endif if g:tex_indent_items if !exists("g:tex_itemize_env") let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography' endif if !exists('g:tex_items') let g:tex_items = '\\bibitem\|\\item' endif else let g:tex_items = '' endif if !exists("g:tex_noindent_env") let g:tex_noindent_env = 'document\|verbatim\|lstlisting' endif "}}} setlocal autoindent setlocal nosmartindent setlocal indentexpr=GetTeXIndent() setlocal indentkeys& exec 'setlocal indentkeys+=[,(,{,),},],\&' . substitute(g:tex_items, '^\|\(\\|\)', ',=', 'g') let g:tex_items = '^\s*' . substitute(g:tex_items, '^\(\^\\s\*\)*', '', '') function! GetTeXIndent() " {{{ let lnum = prevnonblank(v:lnum - 1) let cnum = v:lnum while lnum != 0 && getline(lnum) =~ '^\s*%' let lnum = prevnonblank(lnum - 1) endwhile if lnum == 0 return 0 endif let line = substitute(getline(lnum), '\s*%.*', '','g') " last line let cline = substitute(getline(v:lnum), '\s*%.*', '', 'g') " current line if synIDattr(synID(v:lnum, indent(v:lnum), 1), "name") == "texZone" if empty(cline) return indent(lnum) else return indent(v:lnum) end endif if lnum == 0 return 0 endif let ind = indent(lnum) let stay = 1 if cline =~ '^\s*%' return indent(v:lnum) endif if line =~ '\\begin{.*}' if line !~ g:tex_noindent_env let ind = ind + shiftwidth() let stay = 0 endif if g:tex_indent_items if line =~ g:tex_itemize_env let ind = ind + shiftwidth() let stay = 0 endif endif endif if cline =~ '\\end{.*}' let retn = s:GetEndIndentation(v:lnum) if retn != -1 return retn endif end if cline =~ '\\end{.*}' \ && cline !~ g:tex_noindent_env \ && cline !~ '\\begin{.*}.*\\end{.*}' if g:tex_indent_items if cline =~ g:tex_itemize_env let ind = ind - shiftwidth() let stay = 0 endif endif let ind = ind - shiftwidth() let stay = 0 endif if g:tex_indent_brace if line =~ '[[{]$' let ind += shiftwidth() let stay = 0 endif if cline =~ '^\s*\\\?[\]}]' && s:CheckPairedIsLastCharacter(v:lnum, indent(v:lnum)) let ind -= shiftwidth() let stay = 0 endif if line !~ '^\s*\\\?[\]}]' for i in range(indent(lnum)+1, strlen(line)-1) let char = line[i] if char == ']' || char == '}' if s:CheckPairedIsLastCharacter(lnum, i) let ind -= shiftwidth() let stay = 0 endif endif endfor endif endif if g:tex_indent_items if cline =~ g:tex_items let ind = ind - shiftwidth() let stay = 0 endif if line =~ g:tex_items let ind = ind + shiftwidth() let stay = 0 endif endif if stay && mode() == 'i' if empty(cline) return ind else return max([indent(v:lnum), s:GetLastBeginIndentation(v:lnum)]) endif else return ind endif endfunction "}}} function! s:GetLastBeginIndentation(lnum) " {{{ let matchend = 1 for lnum in range(a:lnum-1, max([a:lnum - g:tex_max_scan_line, 1]), -1) let line = getline(lnum) if line =~ '\\end{.*}' let matchend += 1 endif if line =~ '\\begin{.*}' let matchend -= 1 endif if matchend == 0 if line =~ g:tex_noindent_env return indent(lnum) endif if line =~ g:tex_itemize_env return indent(lnum) + 2 * shiftwidth() endif return indent(lnum) + shiftwidth() endif endfor return -1 endfunction function! s:GetEndIndentation(lnum) " {{{ if getline(a:lnum) =~ '\\begin{.*}.*\\end{.*}' return -1 endif let min_indent = 100 let matchend = 1 for lnum in range(a:lnum-1, max([a:lnum-g:tex_max_scan_line, 1]), -1) let line = getline(lnum) if line =~ '\\end{.*}' let matchend += 1 endif if line =~ '\\begin{.*}' let matchend -= 1 endif if matchend == 0 return indent(lnum) endif if !empty(line) let min_indent = min([min_indent, indent(lnum)]) endif endfor return min_indent - shiftwidth() endfunction function! s:CheckPairedIsLastCharacter(lnum, col) "{{{ let c_lnum = a:lnum let c_col = a:col+1 let line = getline(c_lnum) if line[c_col-1] == '\' let c_col = c_col + 1 endif let c = line[c_col-1] let plist = split(&matchpairs, '.\zs[:,]') let i = index(plist, c) if i < 0 return 0 endif if i % 2 == 0 let s_flags = 'nW' let c2 = plist[i + 1] else let s_flags = 'nbW' let c2 = c let c = plist[i - 1] endif if c == '[' let c = '\[' let c2 = '\]' endif let save_cursor = winsaveview() call cursor(c_lnum, c_col) let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . \ '=~? "string\\|character\\|singlequote\\|escape\\|comment"' execute 'if' s_skip '| let s_skip = 0 | endif' let stopline = max([0, c_lnum - g:tex_max_scan_line]) try let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip, stopline, 100) catch /E118/ endtry call winrestview(save_cursor) if m_lnum > 0 let line = getline(m_lnum) return strlen(line) == m_col endif return 0 endfunction "}}} let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetTFIndent() setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=: setlocal indentkeys+==/endif,=/then,=/else,=/done,0; if exists("*GetTFIndent") finish endif function GetTFIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) let line = getline(lnum) if line !~ '\\$' return 0 endif if line =~ '\(/def.*\\\|/for.*\(%;\s*\)\@\' return indent(v:lnum) - shiftwidth() endif if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>' return indent(plnum) + shiftwidth() else return -1 endif endfunction if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetTreetopIndent() setlocal indentkeys=0{,0},!^F,o,O,=end setlocal nosmartindent if exists("*GetTreetopIndent") finish endif function GetTreetopIndent() let pnum = prevnonblank(v:lnum - 1) if pnum == 0 return 0 endif let ind = indent(pnum) let line = getline(pnum) if line =~ '^\s*\%(grammar\|module\|rule\)\>' let ind += shiftwidth() endif let line = getline(v:lnum) if line =~ '^\s*end\>' let ind -= shiftwidth() end retur ind endfunction if exists('b:did_indent') || get(g:, 'typescript_indent_disable', 0) finish endif let b:did_indent = 1 setlocal indentexpr=GetTypescriptIndent() setlocal autoindent nolisp nosmartindent setlocal indentkeys+=0],0) let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<' if exists('*GetTypescriptIndent') finish endif let s:cpo_save = &cpo set cpo&vim if exists('*shiftwidth') function s:sw() return shiftwidth() endfunction else function s:sw() return &sw endfunction endif if has('reltime') function s:GetPair(start,end,flags,skip,time,...) return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,max([prevnonblank(v:lnum) - 2000,0] + a:000),a:time) endfunction else function s:GetPair(start,end,flags,skip,...) return searchpair('\m'.a:start,'','\m'.a:end,a:flags,a:skip,max([prevnonblank(v:lnum) - 1000,get(a:000,1)])) endfunction endif let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template\%(braces\)\@!' let s:syng_str = 'string\|template\|special' let s:syng_com = 'comment\|doc' let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'" function s:skip_func() if !s:free || search('\m`\|\${\|\*\/','nW',s:looksyn) let s:free = !eval(s:skip_expr) let s:looksyn = line('.') return !s:free endif let s:looksyn = line('.') return getline('.') =~ '\%<'.col('.').'c\/.\{-}\/\|\%>'.col('.').'c[''"]\|\\$' && \ eval(s:skip_expr) endfunction function s:alternatePair(stop) let pos = getpos('.')[1:2] while search('\m[][(){}]','bW',a:stop) if !s:skip_func() let idx = stridx('])}',s:looking_at()) if idx + 1 if s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop) <= 0 break endif else return endif endif endwhile call call('cursor',pos) endfunction function s:save_pos(f,...) let l:pos = getpos('.')[1:2] let ret = call(a:f,a:000) call call('cursor',l:pos) return ret endfunction function s:syn_at(l,c) return synIDattr(synID(a:l,a:c,0),'name') endfunction function s:looking_at() return getline('.')[col('.')-1] endfunction function s:token() return s:looking_at() =~ '\k' ? expand('') : s:looking_at() endfunction function s:previous_token() let l:n = line('.') if (s:looking_at() !~ '\k' || search('\m\<','cbW')) && search('\m\S','bW') if (getline('.')[col('.')-2:col('.')-1] == '*/' || line('.') != l:n && \ getline('.') =~ '\%<'.col('.').'c\/\/') && s:syn_at(line('.'),col('.')) =~? s:syng_com while search('\m\/\ze[/*]','cbW') if !search('\m\S','bW') break elseif s:syn_at(line('.'),col('.')) !~? s:syng_com return s:token() endif endwhile else return s:token() endif endif return '' endfunction function s:others(p) return "((line2byte(line('.')) + col('.')) <= ".(line2byte(a:p[0]) + a:p[1]).") || ".s:skip_expr endfunction function s:tern_skip(p) return s:GetPair('{','}','nbW',s:others(a:p),200,a:p[0]) > 0 endfunction function s:tern_col(p) return s:GetPair('?',':\@ 0 endfunction function s:label_col() let pos = getpos('.')[1:2] let [s:looksyn,s:free] = pos call s:alternatePair(0) if s:save_pos('s:IsBlock') let poss = getpos('.')[1:2] return call('cursor',pos) || !s:tern_col(poss) elseif s:looking_at() == ':' return !s:tern_col([0,0]) endif endfunction let s:opfirst = '^' . get(g:,'typescript_opfirst', \ '\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)') let s:continuation = get(g:,'typescript_continuation', \ '\%([-+<>=,.~!?/*^%|&:]\|\<\%(typeof\|delete\|void\|in\|instanceof\)\)') . '$' function s:continues(ln,con) return !cursor(a:ln, match(' '.a:con,s:continuation)) && \ eval( (['s:syn_at(line("."),col(".")) !~? "regex"'] + \ repeat(['getline(".")[col(".")-2] != tr(s:looking_at(),">","=")'],3) + \ repeat(['s:previous_token() != "."'],5) + [1])[ \ index(split('/ > - + typeof in instanceof void delete'),s:token())]) endfunction function s:Trim(ln) call cursor(a:ln+1,1) call s:previous_token() return strpart(getline('.'),0,col('.')) endfunction function s:PrevCodeLine(lnum) let l:n = prevnonblank(a:lnum) while l:n if getline(l:n) =~ '^\s*\/[/*]' if (stridx(getline(l:n),'`') > 0 || getline(l:n-1)[-1:] == '\') && \ s:syn_at(l:n,1) =~? s:syng_str return l:n endif let l:n = prevnonblank(l:n-1) elseif getline(l:n) =~ '\([/*]\)\1\@![/*]' && s:syn_at(l:n,1) =~? s:syng_com let l:n = s:save_pos('eval', \ 'cursor('.l:n.',1) + search(''\m\/\*'',"bW")') else return l:n endif endwhile endfunction function s:Balanced(lnum) let l:open = 0 let l:line = getline(a:lnum) let pos = match(l:line, '[][(){}]', 0) while pos != -1 if s:syn_at(a:lnum,pos + 1) !~? s:syng_strcom let l:open += match(' ' . l:line[pos],'[[({]') if l:open < 0 return endif endif let pos = match(l:line, '[][(){}]', pos + 1) endwhile return !l:open endfunction function s:OneScope(lnum) let pline = s:Trim(a:lnum) let kw = 'else do' if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 call s:previous_token() let kw = 'for if let while with' if index(split('await each'),s:token()) + 1 call s:previous_token() let kw = 'for' endif endif return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 && \ s:save_pos('s:previous_token') != '.' endfunction function s:iscontOne(i,num,cont) let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0] let pind = a:num ? indent(l:num) + s:W : 0 let ind = indent(l:i) + (a:cont ? 0 : s:W) while l:i >= l:num && (ind > pind || l:i == l:num) if indent(l:i) < ind && s:OneScope(l:i) let bL += s:W let l:i = line('.') elseif !a:cont || bL || ind < indent(a:i) break endif let ind = min([ind, indent(l:i)]) let l:i = s:PrevCodeLine(l:i - 1) endwhile return bL endfunction function s:IsBlock() if s:looking_at() == '{' let l:n = line('.') let char = s:previous_token() if match(s:stack,'xml\|jsx') + 1 && s:syn_at(line('.'),col('.')-1) =~? 'xml\|jsx' return char != '{' elseif char =~ '\k' return index(split('return const let import export yield default delete var await void typeof throw case new in instanceof') \ ,char) < (line('.') != l:n) || s:previous_token() == '.' elseif char == '>' return getline('.')[col('.')-2] == '=' || s:syn_at(line('.'),col('.')) =~? '^jsflow' elseif char == ':' return getline('.')[col('.')-2] != ':' && s:label_col() elseif char == '/' return s:syn_at(line('.'),col('.')) =~? 'regex' endif return char !~ '[=~!<*,?^%|&([]' && \ (char !~ '[-+]' || l:n != line('.') && getline('.')[col('.')-2] == char) endif endfunction function GetTypescriptIndent() let b:js_cache = get(b:,'js_cache',[0,0,0]) call cursor(v:lnum,1) let l:line = getline('.') let s:stack = synstack(v:lnum,1) let syns = synIDattr(get(s:stack,-1),'name') if syns =~? s:syng_com if l:line =~ '^\s*\*' return cindent(v:lnum) elseif l:line !~ '^\s*\/[/*]' return -1 endif elseif syns =~? s:syng_str && l:line !~ '^[''"]' if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1) let b:js_cache[0] = v:lnum endif return -1 endif let l:lnum = s:PrevCodeLine(v:lnum - 1) if !l:lnum return endif let l:line = substitute(l:line,'^\s*','','') if l:line[:1] == '/*' let l:line = substitute(l:line,'^\%(\/\*.\{-}\*\/\s*\)*','','') endif if l:line =~ '^\/[/*]' let l:line = '' endif let idx = index([']',')','}'],l:line[0]) if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum && \ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum)) call call('cursor',b:js_cache[1:]) else let [s:looksyn, s:free, top] = [v:lnum - 1, 1, (!indent(l:lnum) && \ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum] if idx + 1 call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:skip_func()',2000,top) elseif getline(v:lnum) !~ '^\S' && syns =~? 'block' call s:GetPair('{','}','bW','s:skip_func()',2000,top) else call s:alternatePair(top) endif endif let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2]) let num = b:js_cache[1] let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0] if !num || s:IsBlock() let ilnum = line('.') let pline = s:save_pos('s:Trim',l:lnum) if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 let num = ilnum == num ? line('.') : num if idx < 0 && s:previous_token() ==# 'switch' && s:previous_token() != '.' if &cino !~ ':' let switch_offset = s:W else let cinc = matchlist(&cino,'.*:\zs\(-\)\=\(\d*\)\(\.\d\+\)\=\(s\)\=\C') let switch_offset = max([cinc[0] is '' ? 0 : (cinc[1].1) * \ ((strlen(cinc[2].cinc[3]) ? str2nr(cinc[2].str2nr(cinc[3][1])) : 10) * \ (cinc[4] is '' ? 1 : s:W)) / 10, -indent(num)]) endif if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>' return indent(num) + switch_offset endif endif endif if idx < 0 && pline !~ '[{;]$' if pline =~# ':\@ let b:undo_indent = "set ai< indentexpr< indentkeys<" if exists("*VbGetIndent") finish endif fun! VbGetIndent(lnum) let this_line = getline(a:lnum) let LABELS_OR_PREPROC = '^\s*\(\<\k\+\>:\s*$\|#.*\)' if this_line =~? LABELS_OR_PREPROC return 0 endif let lnum = a:lnum while lnum > 0 let lnum = prevnonblank(lnum - 1) let previous_line = getline(lnum) if previous_line !~? LABELS_OR_PREPROC break endif endwhile if lnum == 0 return 0 endif let ind = indent(lnum) if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>' let ind = ind + shiftwidth() endif if this_line =~? '^\s*\\s\+\' if previous_line !~? '^\s*\' let ind = ind - 2 * shiftwidth() else let ind = ind - shiftwidth() endif elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>' let ind = ind - shiftwidth() elseif this_line =~? '^\s*\<\(case\|default\)\>' if previous_line !~? '^\s*\' let ind = ind - shiftwidth() endif endif return ind endfun if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetVerilogIndent() setlocal indentkeys=!^F,o,O,0),=begin,=end,=join,=endcase setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify setlocal indentkeys+==endconfig,=endgenerate,=endprimitive,=endtable setlocal indentkeys+==`else,=`elsif,=`endif if exists("*GetVerilogIndent") finish endif let s:cpo_save = &cpo set cpo&vim function GetVerilogIndent() if exists('b:verilog_indent_width') let offset = b:verilog_indent_width else let offset = shiftwidth() endif if exists('b:verilog_indent_modules') let indent_modules = offset else let indent_modules = 0 endif let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let lnum2 = prevnonblank(lnum - 1) let curr_line = getline(v:lnum) let last_line = getline(lnum) let last_line2 = getline(lnum2) let ind = indent(lnum) let ind2 = indent(lnum - 1) let offset_comment1 = 1 let vlog_openstat = '\(\\|\([*/]\)\@<+-/%^&|!=?:]\([*/]\)\@!\)' let vlog_comment = '\(//.*\|/\*.*\*/\s*\)' if exists('b:verilog_indent_verbose') let vverb_str = 'INDENT VERBOSE:' let vverb = 1 else let vverb = 0 endif if last_line =~ '\*/\s*$' && last_line !~ '/\*.\{-}\*/' let ind = ind - offset_comment1 if vverb echo vverb_str "De-indent after a multiple-line comment." endif elseif last_line =~ '^\s*\(end\)\=\s*`\@' || \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\)\>' || \ last_line =~ '^\s*\<\(always\|initial\)\>' || \ last_line =~ '^\s*\<\(specify\|fork\)\>' if last_line !~ '\(;\|\\)\s*' . vlog_comment . '*$' || \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . vlog_comment . '*$' let ind = ind + offset if vverb | echo vverb_str "Indent after a block statement." | endif endif elseif last_line =~ '^\s*\<\(function\|task\|config\|generate\|primitive\|table\)\>' if last_line !~ '\\s*' . vlog_comment . '*$' || \ last_line =~ '\(//\|/\*\).*\(;\|\\)\s*' . vlog_comment . '*$' let ind = ind + offset if vverb echo vverb_str "Indent after function/task block statement." endif endif elseif last_line =~ '^\s*\' let ind = ind + indent_modules if vverb && indent_modules echo vverb_str "Indent after module statement." endif if last_line =~ '[(,]\s*' . vlog_comment . '*$' && \ last_line !~ '\(//\|/\*\).*[(,]\s*' . vlog_comment . '*$' let ind = ind + offset if vverb echo vverb_str "Indent after a multiple-line module statement." endif endif elseif last_line =~ '\(\\)\(\s*:\s*\w\+\)*' . vlog_comment . '*$' && \ last_line !~ '\(//\|/\*\).*\(\\)' && \ ( last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' || \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . vlog_comment . '*$' ) let ind = ind + offset if vverb | echo vverb_str "Indent after begin statement." | endif elseif ( last_line !~ '\' || \ last_line =~ '\(//\|/\*\).*\' ) && \ last_line2 =~ '\<\(`\@.*' . \ vlog_comment . '*$' && \ last_line2 !~ \ '\(//\|/\*\).*\<\(`\@' && \ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' && \ ( last_line2 !~ '\' || \ last_line2 =~ '\(//\|/\*\).*\' ) let ind = ind - offset if vverb echo vverb_str "De-indent after the end of one-line statement." endif elseif last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' && \ last_line !~ '\(//\|/\*\).*' . vlog_openstat . '\s*$' && \ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' let ind = ind + offset if vverb | echo vverb_str "Indent after an open statement." | endif elseif last_line =~ ')*\s*;\s*' . vlog_comment . '*$' && \ last_line !~ '^\s*)*\s*;\s*' . vlog_comment . '*$' && \ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . vlog_comment . '*$' && \ ( last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' && \ last_line2 !~ ';\s*//.*$') && \ last_line2 !~ '^\s*' . vlog_comment . '$' let ind = ind - offset if vverb | echo vverb_str "De-indent after a close statement." | endif elseif last_line =~ '^\s*`\<\(ifn\?def\|elsif\|else\)\>' let ind = ind + offset if vverb echo vverb_str "Indent after a `ifdef or `ifndef or `elsif or `else statement." endif endif if curr_line =~ '^\s*\<\(join\|end\|endcase\)\>' || \ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\)\>' || \ curr_line =~ '^\s*\<\(endconfig\|endgenerate\|endprimitive\|endtable\)\>' let ind = ind - offset if vverb | echo vverb_str "De-indent the end of a block." | endif elseif curr_line =~ '^\s*\' let ind = ind - indent_modules if vverb && indent_modules echo vverb_str "De-indent the end of a module." endif elseif curr_line =~ '^\s*\' if last_line !~ '^\s*\<\(function\|task\|specify\|module\|config\|generate\|primitive\|table\)\>' && \ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . vlog_comment . '*$' && \ ( last_line =~ \ '\<\(`\@' || \ last_line =~ ')\s*' . vlog_comment . '*$' || \ last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' ) let ind = ind - offset if vverb echo vverb_str "De-indent a stand alone begin statement." endif endif elseif curr_line =~ '^\s*)' && \ ( last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' || \ last_line !~ vlog_openstat . '\s*' . vlog_comment . '*$' && \ last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' ) let ind = ind - offset if vverb echo vverb_str "De-indent the end of a multiple statement." endif elseif curr_line =~ '^\s*`\<\(elsif\|else\|endif\)\>' let ind = ind - offset if vverb | echo vverb_str "De-indent `elsif or `else or `endif statement." | endif endif return ind endfunction let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetVHDLindent() setlocal indentkeys=!^F,o,O,0(,0) setlocal indentkeys+==~begin,=~end\ ,=~end\ ,=~is,=~select,=~when setlocal indentkeys+==~if,=~then,=~elsif,=~else setlocal indentkeys+==~case,=~loop,=~for,=~generate,=~record,=~units,=~process,=~block,=~function,=~component,=~procedure setlocal indentkeys+==~architecture,=~configuration,=~entity,=~package let s:NC = '\%(--.*\)\@ 0 && prevs =~ '^\s*--' let prevn = prevnonblank(prevn - 1) let prevs = getline(prevn) endwhile let prevs_noi = substitute(prevs, '^\s*', '', '') let ind = prevn > 0 ? indent(prevn) : 0 let ind2 = ind let s0 = s:NC.'\\s*".*"' if curs =~? s0 let curs = "" endif if prevs =~? s0 let prevs = "" endif if curs =~ '^\s*--' let pn = curn - 1 let ps = getline(pn) if curs =~ '^\s*--\s' && ps =~ '--' return indent(pn) + stridx(substitute(ps, '^\s*', '', ''), '--') else let nn = nextnonblank(curn + 1) let ns = getline(nn) while nn > 0 && ns =~ '^\s*--' let nn = nextnonblank(nn + 1) let ns = getline(nn) endwhile let n = indent(nn) return n != -1 ? n : ind endif endif let pn = prevnonblank(prevn - 1) let ps = getline(pn) while pn > 0 && ps =~ '^\s*--' let pn = prevnonblank(pn - 1) let ps = getline(pn) endwhile if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\s\+\)\)') && (prevs =~? s:NC.'\<\%(procedure\s\+\S\+\|generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)'.s:ES && prevs =~ '^\s*(')) if curs =~ '^\s*)' return ind2 + stridx(prevs_noi, '(') endif let m = matchend(prevs_noi, '(\s*\ze\w') if m != -1 return ind2 + m else if g:vhdl_indent_genportmap return ind2 + stridx(prevs_noi, '(') + shiftwidth() else return ind2 + shiftwidth() endif endif endif if prevs =~? '^\s*\S\+\s*<=[^;]*'.s:ES if g:vhdl_indent_rhsassign return ind2 + matchend(prevs_noi, '<=\s*\ze.') else return ind2 + shiftwidth() endif endif let m = 0 if prevs =~? '^\s*end\s\+\%(record\|units\)\>' let m = 3 elseif prevs =~ '^\s*)' let m = 1 elseif prevs =~ s:NC.'\%(<=.*\)\@.*'.s:NC.')'.s:ES) let m = 2 endif if m > 0 let pn = prevnonblank(prevn - 1) let ps = getline(pn) while pn > 0 let t = indent(pn) if ps !~ '^\s*--' && (t < ind || (t == ind && m == 3)) if m < 3 && ps !~? '^\s*\S\+\s*<=[^;]*'.s:ES if ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)\>' || ps =~ '^\s*(' let ind = t endif break endif let ind = t if m > 1 let ppn = prevnonblank(pn - 1) let pps = getline(ppn) while ppn > 0 && pps =~ '^\s*--' let ppn = prevnonblank(ppn - 1) let pps = getline(ppn) endwhile if m == 2 let s1 = s:NC.'\' let s2 = s:NC.s:NE.'\<\%(architecture\|block\|entity\|function\|generate\|procedure\|process\)\>' let pn = prevnonblank(curn - 1) let ps = getline(pn) while pn > 0 && (ps =~ '^\s*--' || ps !~? s2) let pn = prevnonblank(pn - 1) let ps = getline(pn) if (ps =~? s:NC.'\') return indent(pn) - shiftwidth() endif endwhile if (pn == 0) return ind - shiftwidth() else return indent(pn) endif endif if curs =~? s:NC.s:NE.'\<\%(record\|units\)\>' let s3 = s:NC.s:NE.'\' if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3 let ind = ind + shiftwidth() endif return ind endif if curs =~? '^\s*\%(architecture\|configuration\|entity\|library\|package\)\>' return 0 endif if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\<\%(architecture\|block\|configuration\|entity\|function\|package\|procedure\|process\|type\)\>' return ind2 endif if curs =~? '^\s*\' && prevs =~? s:NC.'\%(\\|'.s:NE.'\\)' return ind2 endif if curs =~? '^\s*\' && prevs =~? s:NC.s:NE.'\%(\%(\' return ind2 endif if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>' return ind + shiftwidth() endif if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>' return ind + shiftwidth() endif if prevs =~? s:NC.'\\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\\)'.s:ES let ind = ind + shiftwidth() endif let s4 = '^\s*when\>' if curs =~? s4 if prevs =~? s:NC.'\' if prevs =~? '^\s*\%(elsif\|'.s5.'\)' return ind else return ind - shiftwidth() endif endif let m = 0 if curs =~? '^\s*end\s\+case\>' let m = 1 elseif curs =~? '^\s*end\s\+component\>' let m = 2 endif if m > 0 let pn = prevn let ps = getline(pn) while pn > 0 if ps !~ '^\s*--' if m == 1 if ps =~? '^\s*end\s\+case\>' return indent(pn) - 2 * shiftwidth() elseif ps =~? '^\s*when\>' return indent(pn) - shiftwidth() elseif ps =~? '^\s*case\>' return indent(pn) endif elseif m == 2 if ps =~? '^\s*component\>' return indent(pn) endif endif endif let pn = prevnonblank(pn - 1) let ps = getline(pn) endwhile return ind - shiftwidth() endif if curs =~ '^\s*)' return ind - shiftwidth() endif if curs =~? '^\s*end\s\+\%(architecture\|configuration\|entity\|package\)\>' return 0 endif if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)' return ind - shiftwidth() endif if curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@\|\w\+\s\+:=\)' return ind2 endif if curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@.*\)\@ 0 && getline(lnum) =~ s:lineContPat let lnum = lnum - 1 endwhile endif if lnum == 0 return 0 endif let prev_text = getline(lnum) let ind = indent(lnum) if cur_text =~ s:lineContPat && v:lnum > 1 && prev_text !~ s:lineContPat if exists("g:vim_indent_cont") let ind = ind + g:vim_indent_cont else let ind = ind + shiftwidth() * 3 endif elseif prev_text =~ '^\s*aug\%[roup]\s\+' && prev_text !~ '^\s*aug\%[roup]\s\+[eE][nN][dD]\>' let ind = ind + shiftwidth() else if prev_text !~ '^\s*au\%[tocmd]' let i = match(prev_text, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>') if i >= 0 let ind += shiftwidth() if strpart(prev_text, i, 1) == '|' && has('syntax_items') \ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$' let ind -= shiftwidth() endif endif endif endif let i = match(prev_text, '[^\\]|\s*\(ene\@!\)') if i > 0 && prev_text !~ '^\s*au\%[tocmd]' if !has('syntax_items') || synIDattr(synID(lnum, i + 2, 1), "name") !~ '\(Comment\|String\)$' let ind = ind - shiftwidth() endif endif if cur_text =~ '^\s*\(ene\@!\|cat\|fina\|el\|aug\%[roup]\s\+[eE][nN][dD]\)' let ind = ind - shiftwidth() endif return ind endfunction let &cpo = s:keepcpo unlet s:keepcpo if exists('b:did_indent') finish endif let b:did_indent = 1 let s:cpo_save = &cpo set cpo-=C let b:undo_indent = 'setlocal autoindent<' setlocal autoindent let &cpo = s:cpo_save unlet s:cpo_save if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=lispindent('.') setlocal noautoindent nosmartindent let b:undo_indent = "setl lisp< indentexpr<" if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetXF86ConfIndent() setlocal indentkeys=!^F,o,O,=End setlocal nosmartindent if exists("*GetXF86ConfIndent") finish endif function GetXF86ConfIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 return 0 endif let ind = indent(lnum) if getline(lnum) =~? '^\s*\(Sub\)\=Section\>' let ind = ind + shiftwidth() endif if getline(v:lnum) =~? '^\s*End\(Sub\)\=Section\>' let ind = ind - shiftwidth() endif return ind endfunction if exists("b:did_indent") finish endif runtime! indent/html.vim if exists("b:did_indent") finish endif let b:did_indent = 1 setlocal indentexpr=GetXinetdIndent() setlocal indentkeys=0{,0},!^F,o,O setlocal nosmartindent if exists("*GetXinetdIndent") finish endif let s:keepcpo= &cpo set cpo&vim function s:count_braces(lnum, count_open) let n_open = 0 let n_close = 0 let line = getline(a:lnum) let pattern = '[{}]' let i = match(line, pattern) while i != -1 if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'ld\%(Comment\|String\)' if line[i] == '{' let n_open += 1 elseif line[i] == '}' if n_open > 0 let n_open -= 1 else let n_close += 1 endif endif endif let i = match(line, pattern, i + 1) endwhile return a:count_open ? n_open : n_close endfunction function GetXinetdIndent() let pnum = prevnonblank(v:lnum - 1) if pnum == 0 return 0 endif return indent(pnum) + s:count_braces(pnum, 1) * shiftwidth() \ - s:count_braces(v:lnum, 0) * shiftwidth() endfunction let &cpo = s:keepcpo unlet s:keepcpo if exists("b:did_indent") finish endif let b:did_indent = 1 let s:keepcpo= &cpo set cpo&vim setlocal indentexpr=XmlIndentGet(v:lnum,1) setlocal indentkeys=o,O,*,<>>,<<>,/,{,},!^F if !exists('b:xml_indent_open') let b:xml_indent_open = '.\{-}<[:A-Z_a-z]' endif if !exists('b:xml_indent_close') let b:xml_indent_close = '.\{-}XmlIndentWithPattern(line, pat) let s = substitute('x'.a:line, a:pat, "\1", 'g') return strlen(substitute(s, "[^\1].*$", '', '')) endfun fun! XmlIndentSynCheck(lnum) if &syntax != '' let syn1 = synIDattr(synID(a:lnum, 1, 1), 'name') let syn2 = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') if syn1 != '' && syn1 !~ 'xml' && syn2 != '' && syn2 !~ 'xml' return 0 endif endif return 1 endfun fun! XmlIndentSum(line, style, add) if IsXMLContinuation(a:line) && a:style == 0 return a:add + shiftwidth() elseif HasNoTagEnd(a:line) return a:add endif if a:style == match(a:line, '^\s*XmlIndentWithPattern(a:line, b:xml_indent_open) \ - XmlIndentWithPattern(a:line, b:xml_indent_close) \ - XmlIndentWithPattern(a:line, '.\{-}/>'))) + a:add else return a:add endif endfun fun! XmlIndentGet(lnum, use_syntax_check) if prevnonblank(a:lnum - 1) == 0 return 0 endif let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. line('.').'l\)' let ptag = search(ptag_pattern, 'bnW') if ptag == 0 return 0 endif let syn_name = '' if a:use_syntax_check let check_lnum = XmlIndentSynCheck(ptag) let check_alnum = XmlIndentSynCheck(a:lnum) if check_lnum == 0 || check_alnum == 0 return indent(a:lnum) endif let syn_name = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') endif if syn_name =~ 'Comment' return XmlIndentComment(a:lnum) endif let pline = getline(ptag) let pind = indent(ptag) let ind = XmlIndentSum(pline, -1, pind) let t_ind = ind let ind = XmlIndentSum(getline(a:lnum), 0, ind) return ind endfun func! IsXMLContinuation(line) return a:line !~ '^\s*<' endfunc func! HasNoTagEnd(line) return a:line !~ '>\s*$' endfunc func! XmlIndentComment(lnum) let ptagopen = search(b:xml_indent_open, 'bnW') let ptagclose = search(b:xml_indent_close, 'bnW') if getline(a:lnum) =~ '' return indent(search('', \ '']) call extend(s:lines, [ \ "", \]) else call extend(s:lines, [ \ "' \]) endif else call extend(s:lines, [ \ "", \]) endif endif let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy) if s:uses_script call extend(s:lines, [ \ "", \ "" \ ]) endif call extend(s:lines, [""]) if !empty(s:settings.prevent_copy) call extend(s:lines, \ ["", \ "", \ "
0
", \ "
", \ "
" \ ]) else call extend(s:lines, [""]) endif if s:settings.no_pre if s:settings.use_css call extend(s:lines, ["
"]) endif else call extend(s:lines, ["
"])
endif
exe s:orgwin . "wincmd w"
if s:settings.number_lines
let s:stylelist = { s:LINENR_ID : ".LineNr { " . s:CSS1( s:LINENR_ID ) . "}" }
else
let s:stylelist = {}
endif
let s:diffstylelist = {
\   s:DIFF_A_ID : ".DiffAdd { " . s:CSS1( s:DIFF_A_ID ) . "}",
\   s:DIFF_C_ID : ".DiffChange { " . s:CSS1( s:DIFF_C_ID ) . "}",
\   s:DIFF_D_ID : ".DiffDelete { " . s:CSS1( s:DIFF_D_ID ) . "}",
\   s:DIFF_T_ID : ".DiffText { " . s:CSS1( s:DIFF_T_ID ) . "}"
\ }
if !s:settings.no_progress
let s:progressbar={}
func! s:ProgressBar(title, max_value, winnr)
let pgb=copy(s:progressbar)
let pgb.title = a:title.' '
let pgb.max_value = a:max_value
let pgb.winnr = a:winnr
let pgb.cur_value = 0
let pgb.items = { 'title'   : { 'color' : 'Statusline' },
\'bar'     : { 'color' : 'Statusline' , 'fillcolor' : 'DiffDelete' , 'bg' : 'Statusline' } ,
\'counter' : { 'color' : 'Statusline' } }
let pgb.last_value = 0
let pgb.needs_redraw = 0
let pgb.subtractedlen=len(split(pgb.title, '\zs'))+3+4+2+2
let pgb.max_len = 0
set laststatus=2
return pgb
endfun
func! s:progressbar.calculate_ticks(pb_len)
if a:pb_len<=0
let pb_len = 100
else
let pb_len = a:pb_len
endif
let self.progress_ticks = map(range(pb_len+1), "v:val * self.max_value / pb_len")
endfun
func! s:progressbar.paint()
let max_len = winwidth(self.winnr)
let pb_len = 0
if max_len != self.max_len
let self.max_len = max_len
let pb_len = max_len - self.subtractedlen
call self.calculate_ticks(pb_len)
let self.needs_redraw = 1
let cur_value = 0
let self.pb_len = pb_len
else
let cur_value = self.last_value
let pb_len = self.pb_len
endif
let cur_val_max = pb_len > 0 ? pb_len : 100
while cur_value < cur_val_max && self.cur_value > self.progress_ticks[cur_value]
let cur_value += 1
endwhile
if self.last_value != cur_value || self.needs_redraw || self.cur_value == self.max_value
let self.needs_redraw = 1
let self.last_value = cur_value
let t_color  = self.items.title.color
let b_fcolor = self.items.bar.fillcolor
let b_color  = self.items.bar.color
let c_color  = self.items.counter.color
let stl =  "%#".t_color."#%-( ".self.title." %)".
\"%#".b_color."#".
\(pb_len>0 ?
\	('|%#'.b_fcolor."#%-(".repeat(" ",cur_value)."%)".
\	 '%#'.b_color."#".repeat(" ",pb_len-cur_value)."|"):
\	('')).
\"%=%#".c_color."#%( ".printf("%3.d ",100*self.cur_value/self.max_value)."%% %)"
call setwinvar(self.winnr, '&stl', stl)
endif
endfun
func! s:progressbar.incr( ... )
let self.cur_value += (a:0 ? a:1 : 1)
let self.cur_value = (self.cur_value > self.max_value ? self.max_value : self.cur_value)
call self.paint()
endfun
if s:settings.dynamic_folds
let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
endif
endif
let s:allfolds = []
if s:settings.dynamic_folds
let s:lnum = 1
let s:end = line('$')
let s:foldtext_save = &foldtext
setlocal foldtext&
let s:foldcolumn = &foldcolumn
while s:lnum <= s:end
if foldclosed(s:lnum) == s:lnum
let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
call add(s:allfolds, s:newfold)
execute s:lnum."foldopen"
else
if !s:settings.no_progress
call s:pgb.incr()
if s:pgb.needs_redraw
redrawstatus
let s:pgb.needs_redraw = 0
endif
endif
let s:lnum = s:lnum + 1
endif
endwhile
silent! %foldclose!
let s:lnum = 1
while s:lnum <= s:end
if foldclosed(s:lnum) == s:lnum
let s:level = match(foldtextresult(s:lnum), '+-*\zs[^-]') - 2
let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
if empty(s:allfolds) || index(s:allfolds, s:newfold) == -1
let s:newfold.type = "open-fold"
call add(s:allfolds, s:newfold)
endif
execute s:lnum."foldopen"
else
if !s:settings.no_progress
call s:pgb.incr()
if s:pgb.needs_redraw
redrawstatus
let s:pgb.needs_redraw = 0
endif
endif
let s:lnum = s:lnum + 1
endif
endwhile
call sort(s:allfolds, "s:FoldCompare")
let &l:foldtext = s:foldtext_save
unlet s:foldtext_save
silent! %foldclose!
let leveladjust = 0
for afold in s:allfolds
let removed = 0
if exists("g:html_start_line") && exists("g:html_end_line")
if afold.firstline < g:html_start_line
if afold.lastline <= g:html_end_line && afold.lastline >= g:html_start_line
let afold.firstline = g:html_start_line
else
call remove(s:allfolds, index(s:allfolds, afold))
let removed = 1
if afold.lastline > g:html_end_line
let leveladjust += 1
endif
endif
elseif afold.firstline > g:html_end_line
call remove(s:allfolds, index(s:allfolds, afold))
let removed = 1
endif
elseif exists("g:html_start_line")
if afold.firstline < g:html_start_line
let afold.firstline = g:html_start_line
endif
elseif exists("g:html_end_line")
if afold.firstline > g:html_end_line
call remove(s:allfolds, index(s:allfolds, afold))
let removed = 1
endif
endif
if !removed
let afold.level -= leveladjust
if afold.level+1 > s:foldcolumn
let s:foldcolumn = afold.level+1
endif
endif
endfor
while leveladjust > 0
exe g:html_start_line."foldopen"
let leveladjust -= 1
endwhile
endif
if exists("g:html_start_line")
let s:lnum = html_start_line
if s:lnum < 1 || s:lnum > line("$")
let s:lnum = 1
endif
else
let s:lnum = 1
endif
if exists("g:html_end_line")
let s:end = html_end_line
if s:end < s:lnum || s:end > line("$")
let s:end = line("$")
endif
else
let s:end = line("$")
endif
let s:foldstack = []
if !s:settings.no_progress
let s:pgb = s:ProgressBar("Processing lines:", s:end - s:lnum + 1, s:orgwin)
endif
if s:settings.number_lines
let s:margin = strlen(s:end) + 1
else
let s:margin = 0
endif
if has('folding') && !s:settings.ignore_folding
let s:foldfillchar = &fillchars[matchend(&fillchars, 'fold:')]
if s:foldfillchar == ''
let s:foldfillchar = '-'
endif
endif
let s:difffillchar = &fillchars[matchend(&fillchars, 'diff:')]
if s:difffillchar == ''
let s:difffillchar = '-'
endif
let s:foldId = 0
if !s:settings.expand_tabs
let s:old_isprint = &isprint
setlocal isprint+=9
endif
while s:lnum <= s:end
let s:filler = diff_filler(s:lnum)
if s:filler > 0
let s:n = s:filler
while s:n > 0
let s:new = repeat(s:difffillchar, 3)
if s:n > 2 && s:n < s:filler && !s:settings.whole_filler
let s:new = s:new . " " . s:filler . " inserted lines "
let s:n = 2
endif
if !s:settings.no_pre
let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
else
let s:new = s:new . repeat(s:difffillchar, 3)
endif
let s:new = s:HtmlFormat_d(s:new, s:DIFF_D_ID, 0)
if s:settings.number_lines
let s:new = s:HtmlFormat_n(repeat(' ', s:margin), s:LINENR_ID, 0, 0) . s:new
endif
if s:settings.dynamic_folds && !s:settings.no_foldcolumn && s:foldcolumn > 0
let s:new = s:FoldColumn_fill() . s:new
endif
call add(s:lines, s:new.s:HtmlEndline)
let s:n = s:n - 1
endwhile
unlet s:n
endif
unlet s:filler
if s:settings.number_lines
let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
endif
let s:new = ""
if has('folding') && !s:settings.ignore_folding && foldclosed(s:lnum) > -1 && !s:settings.dynamic_folds
let s:new = foldtextresult(s:lnum)
if !s:settings.no_pre
let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
endif
let s:new = (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, s:lnum): "") . s:HtmlFormat_t(s:new, s:FOLDED_ID, 0)
let s:new_lnum = foldclosedend(s:lnum)
if !s:settings.no_progress
call s:pgb.incr(s:new_lnum - s:lnum)
endif
let s:lnum = s:new_lnum
else
let s:line = getline(s:lnum)
let s:len = strlen(s:line)
if s:settings.dynamic_folds
while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
let s:new = s:new.""
call remove(s:foldstack, 0)
endwhile
let s:firstfold = 1
while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
let s:foldId = s:foldId + 1
let s:new .= ""
if !s:settings.no_foldcolumn
if s:allfolds[0].level > 1 && s:firstfold
let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
\ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
endif
let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
\ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
\ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
if get(s:allfolds, 1, {'firstline': 0}).firstline != s:lnum
let s:extra_space = s:foldcolumn - s:allfolds[0].level
else
let s:extra_space = 0
endif
if s:firstfold
let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
else
let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
\ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
endif
let s:firstfold = 0
endif
let s:new = s:new . (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, 0) : "") . substitute(s:HtmlFormat_t(foldtextresult(s:lnum), s:FOLDED_ID, 0), '', s:HtmlEndline.'\n\0', '')
let s:new = s:new . ""
execute s:lnum."foldopen"
call insert(s:foldstack, remove(s:allfolds,0))
let s:foldstack[0].id = s:foldId
endwhile
if !s:settings.no_foldcolumn
if empty(s:foldstack)
if s:foldcolumn > 0
let s:new = s:new . s:FoldColumn_fill()
endif
else
if get(s:foldstack, 0).firstline < s:lnum
let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
\ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
endif
endif
endif
endif
if s:settings.number_lines
let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
elseif s:settings.line_ids
let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
endif
let s:diffattr = diff_hlID(s:lnum, 1)
let s:concealinfo = [0, '']
let s:col = 1
let s:diff_id = 0
while s:col <= s:len || (s:col == 1 && s:diffattr)
let s:startcol = s:col " The start column for processing text
if !s:settings.ignore_conceal && has('conceal')
let s:concealinfo = synconcealed(s:lnum, s:col)
endif
if !s:settings.ignore_conceal && s:concealinfo[0]
let s:col = s:col + 1
while s:col <= s:len && s:concealinfo == synconcealed(s:lnum, s:col) | let s:col = s:col + 1 | endwhile
elseif s:diffattr
let s:diff_id = diff_hlID(s:lnum, s:col)
let s:id = synID(s:lnum, s:col, 1)
let s:col = s:col + 1
while s:col <= s:len && s:id == synID(s:lnum, s:col, 1)
\   && s:diff_id == diff_hlID(s:lnum, s:col) |
\     let s:col = s:col + 1 |
\ endwhile
if s:len < &columns && !s:settings.no_pre
let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
let s:len = &columns
endif
else
let s:id = synID(s:lnum, s:col, 1)
let s:col = s:col + 1
while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
endif
if s:settings.ignore_conceal || !s:concealinfo[0]
let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
if s:settings.expand_tabs
let s:offset = 0
let s:idx = stridx(s:expandedtab, "\t")
let s:tablist = split(&vts,',')
if empty(s:tablist)
let s:tablist = [ &ts ]
endif
let s:tabidx = 0
let s:tabwidth = 0
while s:idx >= 0
while s:startcol+s:idx > s:tabwidth + s:tablist[s:tabidx] 
let s:tabwidth += s:tablist[s:tabidx]
if s:tabidx < len(s:tablist)-1
let s:tabidx = s:tabidx+1
endif
endwhile
if has("multi_byte_encoding")
if s:startcol + s:idx == 1
let s:i = s:tablist[s:tabidx]
else
if s:idx == 0
let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
else
let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
endif
let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
let s:i = s:tablist[s:tabidx] - (s:vcol - s:tabwidth)
endif
let s:offset -= s:i - 1
else
let s:i = s:tablist[s:tabidx] - ((s:idx + s:startcol - 1) - s:tabwidth)
endif
let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
let s:idx = stridx(s:expandedtab, "\t")
endwhile
end
let s:id = synIDtrans(s:id)
else
let s:id = s:CONCEAL_ID
let s:expandedtab = s:concealinfo[1]
endif
if strlen(s:expandedtab) > 0
let s:new = s:new . s:HtmlFormat(s:expandedtab,  s:id, s:diff_id, "", 0)
endif
endwhile
endif
call extend(s:lines, split(s:new.s:HtmlEndline, '\n', 1))
if !s:settings.no_progress && s:pgb.needs_redraw
redrawstatus
let s:pgb.needs_redraw = 0
endif
let s:lnum = s:lnum + 1
if !s:settings.no_progress
call s:pgb.incr()
endif
endwhile
if s:settings.dynamic_folds
while !empty(s:foldstack)
let s:lines[-1].=""
call remove(s:foldstack, 0)
endwhile
let s:id = s:FOLD_C_ID
if !has_key(s:stylelist, s:id)
let s:stylelist[s:id] = '.FoldColumn { ' . s:CSS1(s:id) . '}'
endif
endif
if s:settings.no_pre
if !s:settings.use_css
call extend(s:lines, ["", "", ""])
else
call extend(s:lines, ["
", "", ""]) endif else call extend(s:lines, ["", "", ""]) endif exe s:newwin . "wincmd w" call setline(1, s:lines) unlet s:lines %s!\v(%(^|\s+)%([Vv]i%(m%([<=>]?\d+)?)?|ex)):!\1\:!ge call append(line('$'), "") if s:settings.use_css 1;/+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc syn match htmlCssStyleComment contained "\(\)" syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc hi def link htmlStyleArg htmlString endif if main_syntax == "html" syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" syn sync match htmlHighlight groupthere javaScript " 800 || v:version == 800 && has("patch1038") hi def htmlStrike term=strikethrough cterm=strikethrough gui=strikethrough else hi def htmlStrike term=underline cterm=underline gui=underline endif endif endif hi def link htmlPreStmt PreProc hi def link htmlPreError Error hi def link htmlPreProc PreProc hi def link htmlPreAttr String hi def link htmlPreProcAttrName PreProc hi def link htmlPreProcAttrError Error hi def link htmlSpecial Special hi def link htmlSpecialChar Special hi def link htmlString String hi def link htmlStatement Statement hi def link htmlComment Comment hi def link htmlCommentPart Comment hi def link htmlValue String hi def link htmlCommentError htmlError hi def link htmlTagError htmlError hi def link htmlEvent javaScript hi def link htmlError Error hi def link javaScript Special hi def link javaScriptExpression javaScript hi def link htmlCssStyleComment Comment hi def link htmlCssDefinition Special let b:current_syntax = "html" if main_syntax == 'html' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'html' endif runtime! syntax/cheetah.vim runtime! syntax/html.vim unlet b:current_syntax syntax cluster htmlPreproc add=cheetahPlaceHolder syntax cluster htmlString add=cheetahPlaceHolder let b:current_syntax = "htmlcheetah" if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'html' endif runtime! syntax/django.vim runtime! syntax/html.vim unlet b:current_syntax syn cluster djangoBlocks add=djangoTagBlock,djangoVarBlock,djangoComment,djangoComBlock syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument,djangoTagError display containedin=ALLBUT,@djangoBlocks syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument,djangoVarError display containedin=ALLBUT,@djangoBlocks syn region djangoComment start="{%\s*comment\(\s\+.\{-}\)\?%}" end="{%\s*endcomment\s*%}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks syn region djangoComBlock start="{#" end="#}" contains=djangoTodo containedin=ALLBUT,@djangoBlocks let b:current_syntax = "htmldjango" if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax='htmlm4' endif runtime! syntax/html.vim unlet b:current_syntax syn case match runtime! syntax/m4.vim unlet b:current_syntax syn cluster htmlPreproc add=@m4Top syn cluster m4StringContents add=htmlTag,htmlEndTag let b:current_syntax = "htmlm4" if main_syntax == 'htmlm4' unlet main_syntax endif if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'htmlos' endif runtime! syntax/html.vim unlet b:current_syntax syn cluster htmlPreproc add=htmlosRegion syn case ignore syn keyword htmlosFunctions expand sleep getlink version system ascii getascii syslock sysunlock cr lf clean postprep listtorow split listtocol coltolist rowtolist tabletolist contained syn keyword htmlosFunctions cut \display cutall cutx cutallx length reverse lower upper proper repeat left right middle trim trimleft trimright count countx locate locatex replace replacex replaceall replaceallx paste pasteleft pasteleftx pasteleftall pasteleftallx pasteright pasterightall pasterightallx chopleft chopleftx chopright choprightx format concat contained syn keyword htmlosFunctions goto exitgoto contained syn keyword htmlosFunctions layout cols rows row items getitem putitem switchitems gettable delrow delrows delcol delcols append merge fillcol fillrow filltable pastetable getcol getrow fillindexcol insindexcol dups nodups maxtable mintable maxcol mincol maxrow minrow avetable avecol averow mediantable mediancol medianrow producttable productcol productrow sumtable sumcol sumrow sumsqrtable sumsqrcol sumsqrrow reversecols reverserows switchcols switchrows inscols insrows insfillcol sortcol reversesortcol sortcoln reversesortcoln sortrow sortrown reversesortrow reversesortrown getcoleq getcoleqn getcolnoteq getcolany getcolbegin getcolnotany getcolnotbegin getcolge getcolgt getcolle getcollt getcolgen getcolgtn getcollen getcoltn getcolend getcolnotend getrowend getrownotend getcolin getcolnotin getcolinbegin getcolnotinbegin getcolinend getcolnotinend getrowin getrownotin getrowinbegin getrownotinbegin getrowinend getrownotinend contained syn keyword htmlosFunctions dbcreate dbadd dbedit dbdelete dbsearch dbsearchsort dbget dbgetsort dbstatus dbindex dbimport dbfill dbexport dbsort dbgetrec dbremove dbpurge dbfind dbfindsort dbunique dbcopy dbmove dbkill dbtransfer dbpoke dbsearchx dbgetx contained syn keyword htmlosFunctions syshtmlosname sysstartname sysfixfile fileinfo filelist fileindex domainname page browser regdomain username usernum getenv httpheader copy file ts row sysls syscp sysmv sysmd sysrd filepush filepushlink dirname contained syn keyword htmlosFunctions mail to address subject netmail netmailopen netmailclose mailfilelist netweb netwebresults webpush netsockopen netsockread netsockwrite netsockclose contained syn keyword htmlosFunctions today time systime now yesterday tomorrow getday getmonth getyear getminute getweekday getweeknum getyearday getdate gettime getamorpm gethour addhours addminutes adddays timebetween timetill timefrom datetill datefrom mixedtimebetween mixeddatetill mixedtimetill mixedtimefrom mixeddatefrom nextdaybyweekfromdate nextdaybyweekfromtoday nextdaybymonthfromdate nextdaybymonthfromtoday nextdaybyyearfromdate nextdaybyyearfromtoday offsetdaybyweekfromdate offsetdaybyweekfromtoday offsetdaybymonthfromdate offsetdaybymonthfromtoday contained syn keyword htmlosFunctions isprivate ispublic isfile isdir isblank iserror iserror iseven isodd istrue isfalse islogical istext istag isnumber isinteger isdate istableeq istableeqx istableeqn isfuture ispast istoday isweekday isweekend issamedate iseq isnoteq isge isle ismod10 isvalidstring contained syn keyword htmlosFunctions celtof celtokel ftocel ftokel keltocel keltof cmtoin intocm fttom mtoft fttomile miletoft kmtomile miletokm mtoyd ydtom galtoltr ltrtogal ltrtoqt qttoltr gtooz oztog kgtolb lbtokg mttoton tontomt contained syn keyword htmlosFunctions max min abs sign inverse square sqrt cube roundsig round ceiling roundup floor rounddown roundeven rounddowneven roundupeven roundodd roundupodd rounddownodd random factorial summand fibonacci remainder mod radians degrees cos sin tan cotan secant cosecant acos asin atan exp power power10 ln log10 log sinh cosh tanh contained syn keyword htmlosFunctions xmldelete xmldeletex xmldeleteattr xmldeleteattrx xmledit xmleditx xmleditvalue xmleditvaluex xmleditattr xmleditattrx xmlinsertbefore xmlinsertbeforex smlinsertafter xmlinsertafterx xmlinsertattr xmlinsertattrx smlget xmlgetx xmlgetvalue xmlgetvaluex xmlgetattrvalue xmlgetattrvaluex xmlgetrec xmlgetrecx xmlgetrecattrvalue xmlgetrecattrvaluex xmlchopleftbefore xmlchopleftbeforex xmlchoprightbefore xmlchoprightbeforex xmlchopleftafter xmlchopleftafterx xmlchoprightafter xmlchoprightafterx xmllocatebefore xmllocatebeforex xmllocateafter xmllocateafterx contained syn keyword htmlosType int str dol flt dat grp contained syn keyword htmlosStorageClass locals contained syn match htmlosOperator "[-=+/\*!]" contained syn match htmlosRelation "[~]" contained syn match htmlosRelation "[=~][&!]" contained syn match htmlosRelation "[!=<>]=" contained syn match htmlosRelation "[<>]" contained syn region htmlosComment start="#" end="/#" contained syn keyword htmlosConditional if then /if to else elif contained syn keyword htmlosConditional and or nand nor xor not contained syn keyword htmlosRepeat while do /while for /for contained syn keyword htmlosKeyword name value step do rowname colname rownum contained syn keyword htmlosLabel case matched /case switch contained syn keyword htmlosStatement break exit return continue contained syn match htmlosIdentifier "\h\w*[\.]*\w*" contained syn match htmlosSpecialIdentifier "[\$@]" contained syn keyword htmlosDefine function overlay contained syn keyword htmlosBoolean true false contained syn region htmlosStringDouble keepend matchgroup=None start=+"+ end=+"+ contained syn region htmlosStringSingle keepend matchgroup=None start=+'+ end=+'+ contained syn match htmlosNumber "-\=\<\d\+\>" contained syn match htmlosFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained syn match htmlosError "ERROR" contained syn match htmlosParent "[({[\]})]" contained syn keyword htmlosTodo TODO Todo todo contained syn cluster htmlosInside contains=htmlosComment,htmlosFunctions,htmlosIdentifier,htmlosSpecialIdentifier,htmlosConditional,htmlosRepeat,htmlosLabel,htmlosStatement,htmlosOperator,htmlosRelation,htmlosStringSingle,htmlosStringDouble,htmlosNumber,htmlosFloat,htmlosError,htmlosKeyword,htmlosType,htmlosBoolean,htmlosParent syn cluster htmlosTop contains=@htmlosInside,htmlosDefine,htmlosError,htmlosStorageClass syn region htmlosRegion keepend matchgroup=Delimiter start="<<" skip=+".\{-}?>.\{-}"\|'.\{-}?>.\{-}'\|/\*.\{-}?>.\{-}\*/+ end=">>" contains=@htmlosTop syn region htmlosRegion keepend matchgroup=Delimiter start="\[\[" skip=+".\{-}?>.\{-}"\|'.\{-}?>.\{-}'\|/\*.\{-}?>.\{-}\*/+ end="\]\]" contains=@htmlosTop if exists("htmlos_minlines") exec "syn sync minlines=" . htmlos_minlines else syn sync minlines=100 endif hi def link htmlosSpecialIdentifier Operator hi def link htmlosIdentifier Identifier hi def link htmlosStorageClass StorageClass hi def link htmlosComment Comment hi def link htmlosBoolean Boolean hi def link htmlosStringSingle String hi def link htmlosStringDouble String hi def link htmlosNumber Number hi def link htmlosFloat Float hi def link htmlosFunctions Function hi def link htmlosRepeat Repeat hi def link htmlosConditional Conditional hi def link htmlosLabel Label hi def link htmlosStatement Statement hi def link htmlosKeyword Statement hi def link htmlosType Type hi def link htmlosDefine Define hi def link htmlosParent Delimiter hi def link htmlosError Error hi def link htmlosTodo Todo hi def link htmlosOperator Operator hi def link htmlosRelation Operator let b:current_syntax = "htmlos" if main_syntax == 'htmlos' unlet main_syntax endif if exists("b:current_syntax") finish endif syn case ignore setlocal iskeyword=@,48-57,#,$,.,:,?,@-@,_,~ syn sync minlines=5 source :p:h/masm.vim syn region ia64Comment start="//" end="$" contains=ia64Todo syn region ia64Comment start="/\*" end="\*/" contains=ia64Todo syn match ia64Identifier "[a-zA-Z_$][a-zA-Z0-9_$]*" syn match ia64Directive "\.[a-zA-Z_$][a-zA-Z_$.]\+" syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=:\>"he=e-1 syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=::\>"he=e-2 syn match ia64Label "[a-zA-Z_$.][a-zA-Z0-9_$.]*\s\=#\>"he=e-1 syn region ia64string start=+L\="+ skip=+\\\\\|\\"+ end=+"+ syn match ia64Octal "0[0-7_]*\>" syn match ia64Binary "0[bB][01_]*\>" syn match ia64Hex "0[xX][0-9a-fA-F_]*\>" syn match ia64Decimal "[1-9_][0-9_]*\>" syn match ia64Float "[0-9_]*\.[0-9_]*\([eE][+-]\=[0-9_]*\)\=\>" syn keyword ia64opcode add adds addl addp4 alloc and andcm cover epc syn keyword ia64opcode fabs fand fandcm fc flushrs fneg fnegabs for syn keyword ia64opcode fpabs fpack fpneg fpnegabs fselect fand fabdcm syn keyword ia64opcode fc fwb fxor loadrs movl mux1 mux2 or padd4 syn keyword ia64opcode pavgsub1 pavgsub2 popcnt psad1 pshl2 pshl4 pshladd2 syn keyword ia64opcode pshradd2 psub4 rfi rsm rum shl shladd shladdp4 syn keyword ia64opcode shrp ssm sub sum sync.i tak thash syn keyword ia64opcode tpa ttag xor syn match ia64Directive "\.186" syn match ia64Directive "\.286" syn match ia64Directive "\.286c" syn match ia64Directive "\.286p" syn match ia64Directive "\.287" syn match ia64Directive "\.386" syn match ia64Directive "\.386c" syn match ia64Directive "\.386p" syn match ia64Directive "\.387" syn match ia64Directive "\.486" syn match ia64Directive "\.486c" syn match ia64Directive "\.486p" syn match ia64Directive "\.8086" syn match ia64Directive "\.8087" syn match ia64delimiter ";;" syn match ia64operators "[\[\]()#,]" syn match ia64operators "\(+\|-\|=\)" syn match ia64Todo "\(TODO\|XXX\|FIXME\|NOTE\)" syn match ia64opcode "br\(\(\.\(cond\|call\|ret\|ia\|cloop\|ctop\|cexit\|wtop\|wexit\)\)\=\(\.\(spnt\|dpnt\|sptk\|dptk\)\)\=\(\.few\|\.many\)\=\(\.clr\)\=\)\=\>" syn match ia64opcode "break\(\.[ibmfx]\)\=\>" syn match ia64opcode "brp\(\.\(sptk\|dptk\|loop\|exit\)\)\(\.imp\)\=\>" syn match ia64opcode "brp\.ret\(\.\(sptk\|dptk\)\)\{1}\(\.imp\)\=\>" syn match ia64opcode "bsw\.[01]\>" syn match ia64opcode "chk\.\(s\(\.[im]\)\=\)\>" syn match ia64opcode "chk\.a\.\(clr\|nc\)\>" syn match ia64opcode "clrrrb\(\.pr\)\=\>" syn match ia64opcode "cmp4\=\.\(eq\|ne\|l[te]\|g[te]\|[lg]tu\|[lg]eu\)\(\.unc\)\=\>" syn match ia64opcode "cmp4\=\.\(eq\|[lgn]e\|[lg]t\)\.\(\(or\(\.andcm\|cm\)\=\)\|\(and\(\(\.or\)\=cm\)\=\)\)\>" syn match ia64opcode "cmpxchg[1248]\.\(acq\|rel\)\(\.nt1\|\.nta\)\=\>" syn match ia64opcode "czx[12]\.[lr]\>" syn match ia64opcode "dep\(\.z\)\=\>" syn match ia64opcode "extr\(\.u\)\=\>" syn match ia64opcode "fadd\(\.[sd]\)\=\(\.s[0-3]\)\=\>" syn match ia64opcode "fa\(max\|min\)\(\.s[0-3]\)\=\>" syn match ia64opcode "f\(chkf\|max\|min\)\(\.s[0-3]\)\=\>" syn match ia64opcode "fclass\(\.n\=m\)\(\.unc\)\=\>" syn match ia64opcode "f\(clrf\|pamax\|pamin\)\(\.s[0-3]\)\=\>" syn match ia64opcode "fcmp\.\(n\=[lg][te]\|n\=eq\|\(un\)\=ord\)\(\.unc\)\=\(\.s[0-3]\)\=\>" syn match ia64opcode "fcvt\.\(\(fxu\=\(\.trunc\)\=\(\.s[0-3]\)\=\)\|\(xf\|xuf\(\.[sd]\)\=\(\.s[0-3]\)\=\)\)\>" syn match ia64opcode "fetchadd[48]\.\(acq\|rel\)\(\.nt1\|\.nta\)\=\>" syn match ia64opcode "fm\([as]\|py\)\(\.[sd]\)\=\(\.s[0-3]\)\=\>" syn match ia64opcode "fp\=merge\.\(ns\|se\=\)\>" syn match ia64opcode "fmix\.\(lr\|[lr]\)\>" syn match ia64opcode "fn\(ma\|mpy\|orm\)\(\.[sd]\)\=\(\.s[0-3]\)\=\>" syn match ia64opcode "fpcmp\.\(n\=[lg][te]\|n\=eq\|\(un\)\=ord\)\(\.s[0-3]\)\=\>" syn match ia64opcode "fpcvt\.fxu\=\(\(\.trunc\)\=\(\.s[0-3]\)\=\)\>" syn match ia64opcode "fp\(max\=\|min\|n\=mpy\|ms\|nma\|rcpa\|sqrta\)\(\.s[0-3]\)\=\>" syn match ia64opcode "fr\(cpa\|sqrta\)\(\.s[0-3]\)\=\>" syn match ia64opcode "f\(setc\|amin\|chkf\)\(\.s[0-3]\)\=\>" syn match ia64opcode "fsub\(\.[sd]\)\=\(\.s[0-3]\)\=\>" syn match ia64opcode "fswap\(\.n[lr]\=\)\=\>" syn match ia64opcode "fsxt\.[lr]\>" syn match ia64opcode "getf\.\([sd]\|exp\|sig\)\>" syn match ia64opcode "invala\(\.[ae]\)\=\>" syn match ia64opcode "it[cr]\.[id]\>" syn match ia64opcode "ld[1248]\>\|ld[1248]\(\.\(sa\=\|a\|c\.\(nc\|clr\(\.acq\)\=\)\|acq\|bias\)\)\=\(\.nt[1a]\)\=\>" syn match ia64opcode "ld8\.fill\(\.nt[1a]\)\=\>" syn match ia64opcode "ldf[sde8]\(\(\.\(sa\=\|a\|c\.\(nc\|clr\)\)\)\=\(\.nt[1a]\)\=\)\=\>" syn match ia64opcode "ldf\.fill\(\.nt[1a]\)\=\>" syn match ia64opcode "ldfp[sd8]\(\(\.\(sa\=\|a\|c\.\(nc\|clr\)\)\)\=\(\.nt[1a]\)\=\)\=\>" syn match ia64opcode "lfetch\(\.fault\(\.excl\)\=\|\.excl\)\=\(\.nt[12a]\)\=\>" syn match ia64opcode "mf\(\.a\)\=\>" syn match ia64opcode "mix[124]\.[lr]\>" syn match ia64opcode "mov\(\.[im]\)\=\>" syn match ia64opcode "mov\(\.ret\)\=\(\(\.sptk\|\.dptk\)\=\(\.imp\)\=\)\=\>" syn match ia64opcode "nop\(\.[ibmfx]\)\=\>" syn match ia64opcode "pack\(2\.[su]ss\|4\.sss\)\>" syn match ia64opcode "padd[12]\(\.\(sss\|uus\|uuu\)\)\=\>" syn match ia64opcode "pavg[12]\(\.raz\)\=\>" syn match ia64opcode "pcmp[124]\.\(eq\|gt\)\>" syn match ia64opcode "pm\(ax\|in\)\(\(1\.u\)\|2\)\>" syn match ia64opcode "pmpy2\.[rl]\>" syn match ia64opcode "pmpyshr2\(\.u\)\=\>" syn match ia64opcode "probe\.[rw]\>" syn match ia64opcode "probe\.\(\(r\|w\|rw\)\.fault\)\>" syn match ia64opcode "pshr[24]\(\.u\)\=\>" syn match ia64opcode "psub[12]\(\.\(sss\|uu[su]\)\)\=\>" syn match ia64opcode "ptc\.\(l\|e\|ga\=\)\>" syn match ia64opcode "ptr\.\(d\|i\)\>" syn match ia64opcode "setf\.\(s\|d\|exp\|sig\)\>" syn match ia64opcode "shr\(\.u\)\=\>" syn match ia64opcode "srlz\(\.[id]\)\>" syn match ia64opcode "st[1248]\(\.rel\)\=\(\.nta\)\=\>" syn match ia64opcode "st8\.spill\(\.nta\)\=\>" syn match ia64opcode "stf[1248]\(\.nta\)\=\>" syn match ia64opcode "stf\.spill\(\.nta\)\=\>" syn match ia64opcode "sxt[124]\>" syn match ia64opcode "t\(bit\|nat\)\(\.nz\|\.z\)\=\(\.\(unc\|or\(\.andcm\|cm\)\=\|and\(\.orcm\|cm\)\=\)\)\=\>" syn match ia64opcode "unpack[124]\.[lh]\>" syn match ia64opcode "xchg[1248]\(\.nt[1a]\)\=\>" syn match ia64opcode "xm\(a\|py\)\.[lh]u\=\>" syn match ia64opcode "zxt[124]\>" syn match ia64registers "\([fr]\|cr\)\([0-9]\|[1-9][0-9]\|1[0-1][0-9]\|12[0-7]\)\{1}\>" syn match ia64registers "b[0-7]\>" syn match ia64registers "p\([0-9]\|[1-5][0-9]\|6[0-3]\)\>" syn match ia64registers "ar\.\(fpsr\|mat\|unat\|rnat\|pfs\|bsp\|bspstore\|rsc\|lc\|ec\|ccv\|itc\|k[0-7]\)\>" syn match ia64registers "ar\.\(eflag\|fcr\|csd\|ssd\|cflg\|fsr\|fir\|fdr\)\>" syn keyword ia64registers sp gp pr pr.rot rp ip tp syn match ia64registers "\(in\|out\|loc\)\([0-9]\|[1-8][0-9]\|9[0-5]\)\>" syn match ia64registers "farg[0-7]\>" syn match ia64registers "fret[0-7]\>" syn match ia64registers "psr\(\.\(l\|um\)\)\=\>" syn match ia64registers "cr\.\(dcr\|itm\|iva\|pta\|ipsr\|isr\|ifa\|iip\|itir\|iipa\|ifs\|iim\|iha\|lid\|ivr\|tpr\|eoi\|irr[0-3]\|itv\|pmv\|lrr[01]\|cmcv\)\>" syn match ia64registers "\(cpuid\|dbr\|ibr\|pkr\|pmc\|pmd\|rr\|itr\|dtr\)\>" syn match ia64registers "\(@rev\|@mix\|@shuf\|@alt\|@brcst\)\>" syn match ia64registers "\(@nat\|@qnan\|@snan\|@pos\|@neg\|@zero\|@unorm\|@norm\|@inf\)\>" syn match ia64registers "\(@\(\(\(gp\|sec\|seg\|image\)rel\)\|ltoff\|fptr\|ptloff\|ltv\|section\)\)\>" syn match ia64data "data[1248]\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>" syn match ia64data "real\([48]\|1[06]\)\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>" syn match ia64data "stringz\=\(\(\(\.ua\)\=\(\.msb\|\.lsb\)\=\)\|\(\(\.msb\|\.lsb\)\=\(\.ua\)\=\)\)\=\>" hi def link masmOperator ia64operator hi def link masmDirective ia64Directive hi def link masmOpcode ia64Opcode hi def link masmIdentifier ia64Identifier hi def link masmFloat ia64Float hi def link ia64Label Define hi def link ia64Comment Comment hi def link ia64Directive Type hi def link ia64opcode Statement hi def link ia64registers Operator hi def link ia64string String hi def link ia64Hex Number hi def link ia64Binary Number hi def link ia64Octal Number hi def link ia64Float Float hi def link ia64Decimal Number hi def link ia64Identifier Identifier hi def link ia64data Type hi def link ia64delimiter Delimiter hi def link ia64operator Operator hi def link ia64Todo Todo let b:current_syntax = "ia64" if exists("b:current_syntax") finish endif syn case ignore syn keyword ibasicStatement beep bload bsave call absolute chain chdir circle syn keyword ibasicStatement clear close cls color com common const data syn keyword ibasicStatement loop draw end environ erase error exit field syn keyword ibasicStatement files function get gosub goto syn keyword ibasicStatement input input# ioctl key kill let line locate syn keyword ibasicStatement lock unlock lprint using lset mkdir name syn keyword ibasicStatement on error open option base out paint palette pcopy syn keyword ibasicStatement pen play pmap poke preset print print# using pset syn keyword ibasicStatement put randomize read redim reset restore resume syn keyword ibasicStatement return rmdir rset run seek screen syn keyword ibasicStatement shared shell sleep sound static stop strig sub syn keyword ibasicStatement swap system timer troff tron type unlock syn keyword ibasicStatement view wait width window write syn keyword ibasicStatement date$ mid$ time$ syn match ibasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match ibasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1 syn keyword ibasicBuiltInFunction abs asc atn cdbl cint clng cos csng csrlin cvd cvdmbf syn keyword ibasicBuiltInFunction cvi cvl cvs cvsmbf eof erdev erl err exp fileattr syn keyword ibasicBuiltInFunction fix fre freefile inp instr lbound len loc lof syn keyword ibasicBuiltInFunction log lpos mod peek pen point pos rnd sadd screen seek syn keyword ibasicBuiltInFunction setmem sgn sin spc sqr stick strig tab tan ubound syn keyword ibasicBuiltInFunction val valptr valseg varptr varseg syn keyword ibasicBuiltInFunction chr\$ command$ date$ environ$ erdev$ hex$ inkey$ syn keyword ibasicBuiltInFunction input$ ioctl$ lcases$ laft$ ltrim$ mid$ mkdmbf$ mkd$ syn keyword ibasicBuiltInFunction mki$ mkl$ mksmbf$ mks$ oct$ right$ rtrim$ space$ syn keyword ibasicBuiltInFunction str$ string$ time$ ucase$ varptr$ syn keyword ibasicTodo contained TODO syn cluster ibasicFunctionCluster contains=ibasicBuiltInFunction,ibasicGenericFunction syn keyword Conditional if else then elseif endif select case endselect syn keyword Repeat for do while next enddo endwhile wend syn keyword ibasicTypeSpecifier single double defdbl defsng syn keyword ibasicTypeSpecifier int integer uint uinteger int64 uint64 defint deflng syn keyword ibasicTypeSpecifier byte char string istring defstr syn keyword ibasicDefine dim def declare syn cluster ibasicParenGroup contains=ibasicParenError,ibasicIncluded,ibasicSpecial,ibasicTodo,ibasicUserCont,ibasicUserLabel,ibasicBitField syn region ibasicParen transparent start='(' end=')' contains=ALLBUT,@bParenGroup syn match ibasicParenError ")" syn match ibasicInParen contained "[{}]" syn region ibasicHex start="&h" end="\W" syn region ibasicHexError start="&h\x*[g-zG-Z]" end="\W" syn match ibasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>" syn match ibasicFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" syn match ibasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match ibasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match ibasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match ibasicFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1 syn case match syn match ibasicOctalError "\<0\o*[89]" syn region ibasicString start='"' end='"' contains=ibasicSpecial,ibasicTodo syn region ibasicString start="'" end="'" contains=ibasicSpecial,ibasicTodo syn match ibasicSpecial contained "\\." syn region ibasicComment start="^rem" end="$" contains=ibasicSpecial,ibasicTodo syn region ibasicComment start=":\s*rem" end="$" contains=ibasicSpecial,ibasicTodo syn region ibasicComment start="\s*'" end="$" contains=ibasicSpecial,ibasicTodo syn region ibasicComment start="^'" end="$" contains=ibasicSpecial,ibasicTodo syn match ibasicLabel "^\d" syn region ibasicLineNumber start="^\d" end="\s" syn region ibasicPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ibasicString,ibasicCharacter,ibasicNumber,ibasicCommentError,ibasicSpaceError syn match ibasicInclude "^\s*#\s*include\s*" syn cluster ibasicNumber contains=ibasicHex,ibasicInteger,ibasicFloat syn cluster ibasicError contains=ibasicHexError syn match ibasicFilenumber "#\d\+" syn match ibasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=ibasicParen hi def link ibasicLabel Label hi def link ibasicConditional Conditional hi def link ibasicRepeat Repeat hi def link ibasicHex Number hi def link ibasicInteger Number hi def link ibasicFloat Number hi def link ibasicError Error hi def link ibasicHexError Error hi def link ibasicStatement Statement hi def link ibasicString String hi def link ibasicComment Comment hi def link ibasicLineNumber Comment hi def link ibasicSpecial Special hi def link ibasicTodo Todo hi def link ibasicGenericFunction Function hi def link ibasicBuiltInFunction Function hi def link ibasicTypeSpecifier Type hi def link ibasicDefine Type hi def link ibasicInclude Include hi def link ibasicIdentifier Identifier hi def link ibasicFilenumber ibasicTypeSpecifier hi def link ibasicMathOperator Operator let b:current_syntax = "ibasic" if exists("b:current_syntax") finish endif syntax case ignore syntax match _icon /"\=\/.*\.xpm"\=/ syntax match _icon /"\=\/.*\.png"\=/ syntax match _icon /"\=\/.*\.gif"\=/ syntax match _icon /"\-"/ syntax keyword _rules separator syntax keyword _ids menu prog highlight link _rules Underlined highlight link _ids Type highlight link _icon Special let b:current_syntax = "IceMenu" if exists("b:current_syntax") finish endif syn keyword iconFunction abs acos any args asin atan bal syn keyword iconFunction callout center char chdir close collect copy syn keyword iconFunction cos cset delay delete detab display dtor syn keyword iconFunction entab errorclear exit exp find flush function syn keyword iconFunction get getch getche getenv iand icom image syn keyword iconFunction insert integer ior ishift ixor kbhit key syn keyword iconFunction left list loadfunc log many map match syn keyword iconFunction member move name numeric open ord pop syn keyword iconFunction pos proc pull push put read reads syn keyword iconFunction real remove rename repl reverse right rtod syn keyword iconFunction runerr save seek seq set sin sort syn keyword iconFunction sortf sqrt stop string system tab table syn keyword iconFunction tan trim type upto variable where write writes syn match iconKeyword "&allocated" syn match iconKeyword "&ascii" syn match iconKeyword "&clock" syn match iconKeyword "&collections" syn match iconKeyword "&cset" syn match iconKeyword "¤t" syn match iconKeyword "&date" syn match iconKeyword "&dateline" syn match iconKeyword "&digits" syn match iconKeyword "&dump" syn match iconKeyword "&e" syn match iconKeyword "&error" syn match iconKeyword "&errornumber" syn match iconKeyword "&errortext" syn match iconKeyword "&errorvalue" syn match iconKeyword "&errout" syn match iconKeyword "&fail" syn match iconKeyword "&features" syn match iconKeyword "&file" syn match iconKeyword "&host" syn match iconKeyword "&input" syn match iconKeyword "&lcase" syn match iconKeyword "&letters" syn match iconKeyword "&level" syn match iconKeyword "&line" syn match iconKeyword "&main" syn match iconKeyword "&null" syn match iconKeyword "&output" syn match iconKeyword "&phi" syn match iconKeyword "&pi" syn match iconKeyword "&pos" syn match iconKeyword "&progname" syn match iconKeyword "&random" syn match iconKeyword "®ions" syn match iconKeyword "&source" syn match iconKeyword "&storage" syn match iconKeyword "&subject" syn match iconKeyword "&time" syn match iconKeyword "&trace" syn match iconKeyword "&ucase" syn match iconKeyword "&version" syn keyword iconReserved break by case create default do syn keyword iconReserved else end every fail if syn keyword iconReserved initial link next not of syn keyword iconReserved procedure repeat return suspend syn keyword iconReserved then to until while syn keyword iconStorageClass global static local record syn keyword iconTodo contained TODO FIXME XXX BUG syn match iconSpecial contained "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^c[a-zA-Z0-9]\|\\$" syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconSpecial syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconSpecial syn match iconCharacter "'[^\\]'" if exists("icon_space_errors") syn match iconSpaceError "\s*$" syn match iconSpaceError " \+\t"me=e-1 endif syn cluster iconParenGroup contains=iconParenError,iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField syn region iconParen transparent start='(' end=')' contains=ALLBUT,@iconParenGroup syn match iconParenError ")" syn match iconInParen contained "[{}]" syn case ignore syn match iconNumber "\<\d\+\>" syn match iconFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" syn match iconFloat "\.\d\+\(e[-+]\=\d\+\)\=\>" syn match iconFloat "\<\d\+e[-+]\=\d\+\>" syn match iconRadix "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" syn case match syn match iconComment "#.*" contains=iconTodo,iconSpaceError syn region iconPreCondit start="^\s*$\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=iconComment,iconString,iconCharacter,iconNumber,iconCommentError,iconSpaceError syn region iconIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match iconIncluded contained "<[^>]*>" syn match iconInclude "^\s*$\s*include\>\s*["<]" contains=iconIncluded syn cluster iconPreProcGroup contains=iconPreCondit,iconIncluded,iconInclude,iconDefine,iconInParen,iconUserLabel syn region iconDefine start="^\s*$\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@iconPreProcGroup if !exists("icon_minlines") let icon_minlines = 15 endif exec "syn sync ccomment iconComment minlines=" . icon_minlines hi def link iconOctalError iconError hi def link iconParenError iconError hi def link iconInParen iconError hi def link iconCommentError iconError hi def link iconSpaceError iconError hi def link iconCommentError iconError hi def link iconIncluded iconString hi def link iconCommentString iconString hi def link iconComment2String iconString hi def link iconCommentSkip iconComment hi def link iconUserLabel Label hi def link iconCharacter Character hi def link iconNumber Number hi def link iconRadix Number hi def link iconFloat Float hi def link iconInclude Include hi def link iconPreProc PreProc hi def link iconDefine Macro hi def link iconError Error hi def link iconStatement Statement hi def link iconPreCondit PreCondit hi def link iconString String hi def link iconCset String hi def link iconComment Comment hi def link iconSpecial SpecialChar hi def link iconTodo Todo hi def link iconStorageClass StorageClass hi def link iconFunction Statement hi def link iconReserved Label hi def link iconKeyword Operator let b:current_syntax = "icon" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo try set cpo&vim if exists("idlsyntax_showerror") syn match idlError +\S+ skipwhite skipempty nextgroup=idlError endif syn region idlCppQuote start='\]*>" syn match idlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString syn region idlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=idlComment,idlCommentError syn region idlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral,idlString syn keyword idlConst const skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt syn keyword idlROAttr readonly skipempty skipwhite nextgroup=idlAttr syn keyword idlAttr attribute skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType syn region idlD4 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral syn keyword idlSeqType contained sequence skipempty skipwhite nextgroup=idlD4 syn keyword idlBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlSimpDecl syn keyword idlBaseTypeInt contained short long skipempty skipwhite nextgroup=idlSimpDecl syn keyword idlBaseType contained unsigned skipempty skipwhite nextgroup=idlBaseTypeInt syn region idlD1 contained start="<" end=">" skipempty skipwhite nextgroup=idlSimpDecl contains=idlString,idlLiteral syn keyword idlBaseType contained string skipempty skipwhite nextgroup=idlD1,idlSimpDecl syn match idlBaseType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlSimpDecl syn region idlModuleContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule syn match idlModuleName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlModuleContent,idlError,idlSemiColon syn keyword idlModule module skipempty skipwhite nextgroup=idlModuleName syn cluster idlCommentable contains=idlComment syn cluster idlContentCluster contains=idlUnion,idlStruct,idlEnum,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlInterfaceSections syn region idlInterfaceContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable syn match idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent syn match idlInherit contained ":" skipempty skipwhite nextgroup=idlInheritFrom syn match idlInterfaceName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlError,idlSemiColon syn keyword idlInterface interface dispinterface skipempty skipwhite nextgroup=idlInterfaceName syn keyword idlInterfaceSections contained properties methods skipempty skipwhite nextgroup=idlSectionColon,idlError syn match idlSectionColon contained ":" syn match idlLibraryName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlLibraryContent,idlError,idlSemiColon syn keyword idlLibrary library skipempty skipwhite nextgroup=idlLibraryName syn region idlLibraryContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlCommentable,idlAttributes,idlErrorSquareBracket,idlErrorBracket,idlImportlib,idlCoclass,idlTypedef,idlInterface syn keyword idlImportlib contained importlib skipempty skipwhite nextgroup=idlStringArg syn region idlStringArg contained start="(" end=")" contains=idlString nextgroup=idlError,idlSemiColon,idlErrorBrace,idlErrorSquareBracket syn keyword idlCoclass coclass contained skipempty skipwhite nextgroup=idlCoclassName syn match idlCoclassName "[a-zA-Z0-9_]\+" contained skipempty skipwhite nextgroup=idlCoclassDefinition,idlError,idlSemiColon syn region idlCoclassDefinition contained start="{" end="}" contains=idlCoclassAttributes,idlInterface,idlErrorBracket,idlErrorSquareBracket skipempty skipwhite nextgroup=idlError,idlSemiColon syn region idlCoclassAttributes contained start=+\[+ end=+]+ skipempty skipwhite nextgroup=idlInterface contains=idlErrorBracket,idlErrorBrace,idlCoclassAttribute syn keyword idlCoclassAttribute contained default source syn match idlImportString +"\f\+"+ skipempty skipwhite nextgroup=idlError,idlSemiColon syn keyword idlImport import skipempty skipwhite nextgroup=idlImportString syn region idlAttributes start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace,idlComment syn keyword idlAttribute contained propput propget propputref id helpstring object uuid pointer_default if !exists('idl_no_ms_extensions') syn keyword idlAttribute contained nonextensible dual version aggregatable restricted hidden noncreatable oleautomation endif syn region idlAttributeParam contained start="(" end=")" contains=idlString,idlUuid,idlLiteral,idlErrorBrace,idlErrorSquareBracket syn match idlErrorBrace contained "}" syn match idlErrorBracket contained ")" syn match idlErrorSquareBracket contained "\]" syn match idlUuid contained +[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}+ syn keyword idlRaises contained raises skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon syn keyword idlContext contained context skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon syn match idlParmList contained "," skipempty skipwhite nextgroup=idlOpParms syn region idlArraySize contained start="\[" end="\]" skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral syn match idlParmName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlParmList,idlArraySize syn keyword idlParmInt contained short long skipempty skipwhite nextgroup=idlParmName syn keyword idlParmType contained unsigned skipempty skipwhite nextgroup=idlParmInt syn region idlD3 contained start="<" end=">" skipempty skipwhite nextgroup=idlParmName contains=idlString,idlLiteral syn keyword idlParmType contained string skipempty skipwhite nextgroup=idlD3,idlParmName syn keyword idlParmType contained void float double char boolean octet any skipempty skipwhite nextgroup=idlParmName syn match idlParmType contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName syn keyword idlOpParms contained in out inout skipempty skipwhite nextgroup=idlParmType if !exists('idl_no_ms_extensions') syn keyword idlOpParms contained retval optional skipempty skipwhite nextgroup=idlParmType syn match idlOpParms contained +\<\(iid_is\|defaultvalue\)\s*([^)]*)+ skipempty skipwhite nextgroup=idlParamType syn keyword idlVariantType contained BSTR VARIANT VARIANT_BOOL long short unsigned double CURRENCY DATE syn region idlSafeArray contained matchgroup=idlVariantType start=+SAFEARRAY(\s*+ end=+)+ contains=idlVariantType endif syn region idlOpContents contained start="(" end=")" skipempty skipwhite nextgroup=idlRaises,idlContext,idlError,idlSemiColon contains=idlOpParms,idlSafeArray,idlVariantType,@idlCommentable syn match idlOpName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlOpContents syn keyword idlOpInt contained short long skipempty skipwhite nextgroup=idlOpName syn region idlD2 contained start="<" end=">" skipempty skipwhite nextgroup=idlOpName contains=idlString,idlLiteral syn keyword idlOp contained unsigned skipempty skipwhite nextgroup=idlOpInt syn keyword idlOp contained string skipempty skipwhite nextgroup=idlD2,idlOpName syn keyword idlOp contained void float double char boolean octet any skipempty skipwhite nextgroup=idlOpName syn match idlOp contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlOpName syn keyword idlOp contained void skipempty skipwhite nextgroup=idlOpName syn keyword idlOneWayOp contained oneway skipempty skipwhite nextgroup=idOp syn region idlEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlId,idlAttributes,@idlCommentable syn match idlEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlEnumContents syn keyword idlEnum enum skipempty skipwhite nextgroup=idlEnumName,idlEnumContents syn keyword idlTypedef typedef skipempty skipwhite nextgroup=idlTypedefOtherTypeQualifier,idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError if !exists('idl_no_extensions') syn keyword idlTypedefOtherTypeQualifier contained struct enum interface nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlDefAttributes,idlError skipwhite syn region idlDefAttributes contained start="\[" end="\]" contains=idlAttribute,idlAttributeParam,idlErrorBracket,idlErrorBrace skipempty skipwhite nextgroup=idlDefBaseType,idlDefBaseTypeInt,idlDefSeqType,idlDefv1Enum,idlDefEnum,idlDefOtherType,idlError syn keyword idlDefBaseType contained float double char boolean octet any skipempty skipwhite nextgroup=idlTypedefDecl,idlError syn keyword idlDefBaseTypeInt contained short long skipempty skipwhite nextgroup=idlTypedefDecl,idlError syn match idlDefOtherType contained +\<\k\+\>+ skipempty nextgroup=idlTypedefDecl,idlError syn keyword idlDefEnum contained enum skipempty skipwhite nextgroup=idlDefEnumName,idlDefEnumContents syn match idlDefEnumName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlDefEnumContents,idlTypedefDecl syn region idlDefEnumContents contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlTypedefDecl contains=idlId,idlAttributes syn match idlTypedefDecl contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlError,idlSemiColon endif syn region idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlBaseType,idlBaseTypeInt,idlSeqType,@idlCommentable,idlEnum,idlUnion syn match idlStructName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent syn keyword idlStruct struct skipempty skipwhite nextgroup=idlStructName syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName syn match idlColon contained ":" skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt syn region idlCaseLabel contained start="" skip="::" end=":"me=e-1 skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString syn keyword idlCase contained case skipempty skipwhite nextgroup=idlCaseLabel syn keyword idlCase contained default skipempty skipwhite nextgroup=idlColon syn region idlUnionContent contained start="{" end="}" skipempty skipwhite nextgroup=idlError,idlSemiColon,idlSimpDecl contains=idlCase syn region idlSwitchType contained start="(" end=")" skipempty skipwhite nextgroup=idlUnionContent syn keyword idlUnionSwitch contained switch skipempty skipwhite nextgroup=idlSwitchType syn match idlUnionName contained "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlUnionSwitch syn keyword idlUnion union skipempty skipwhite nextgroup=idlUnionName if !exists('idl_no_extensions') syn sync match idlInterfaceSync grouphere idlInterfaceContent "\<\(disp\)\=interface\>\s\+\k\+\s*:\s*\k\+\_s*{" skipempty skipwhite nextgroup=idlError,idlSemiColon contains=@idlContentCluster,@idlCommentable syn sync maxlines=1000 minlines=100 else syn sync lines=200 endif if !exists("did_idl_syntax_inits") let did_idl_syntax_inits = 1 hi def link idlInclude Include hi def link idlPreProc PreProc hi def link idlPreCondit PreCondit hi def link idlDefine Macro hi def link idlIncluded String hi def link idlString String hi def link idlComment Comment hi def link idlTodo Todo hi def link idlLiteral Number hi def link idlUuid Number hi def link idlType Type hi def link idlVariantType idlType hi def link idlModule Keyword hi def link idlInterface Keyword hi def link idlEnum Keyword hi def link idlStruct Keyword hi def link idlUnion Keyword hi def link idlTypedef Keyword hi def link idlException Keyword hi def link idlTypedefOtherTypeQualifier keyword hi def link idlModuleName Typedef hi def link idlInterfaceName Typedef hi def link idlEnumName Typedef hi def link idlStructName Typedef hi def link idlUnionName Typedef hi def link idlBaseTypeInt idlType hi def link idlBaseType idlType hi def link idlSeqType idlType hi def link idlD1 Paren hi def link idlD2 Paren hi def link idlD3 Paren hi def link idlD4 Paren hi def link idlModuleContent Paren hi def link idlUnionContent Paren hi def link idlStructContent Paren hi def link idlEnumContents Paren hi def link idlInterfaceContent Paren hi def link idlSimpDecl Identifier hi def link idlROAttr StorageClass hi def link idlAttr Keyword hi def link idlConst StorageClass hi def link idlOneWayOp StorageClass hi def link idlOp idlType hi def link idlParmType idlType hi def link idlOpName Function hi def link idlOpParms SpecialComment hi def link idlParmName Identifier hi def link idlInheritFrom Identifier hi def link idlAttribute SpecialComment hi def link idlId Constant hi def link idlCaseLabel Constant hi def link idlErrorBracket Error hi def link idlErrorBrace Error hi def link idlErrorSquareBracket Error hi def link idlImport Keyword hi def link idlImportString idlString hi def link idlCoclassAttribute StorageClass hi def link idlLibrary Keyword hi def link idlImportlib Keyword hi def link idlCoclass Keyword hi def link idlLibraryName Typedef hi def link idlCoclassName Typedef hi def link idlTypedefDecl Typedef hi def link idlDefEnum Keyword hi def link idlDefv1Enum Keyword hi def link idlDefEnumName Typedef hi def link idlDefEnumContents Paren hi def link idlDefBaseTypeInt idlType hi def link idlDefBaseType idlType hi def link idlDefSeqType idlType hi def link idlInterfaceSections Label if exists("idlsyntax_showerror") if exists("idlsyntax_showerror_soft") hi default idlError guibg=#d0ffd0 else hi def link idlError Error endif endif endif let b:current_syntax = "idl" finally let &cpo = s:cpo_save unlet s:cpo_save endtry if exists("b:current_syntax") finish endif syntax case ignore syn match idlangStatement "^\s*pro\s" syn match idlangStatement "^\s*function\s" syn keyword idlangStatement return continue mod do break syn keyword idlangStatement compile_opt forward_function goto syn keyword idlangStatement begin common end of syn keyword idlangStatement inherits on_ioerror begin syn keyword idlangConditional if else then for while case switch syn keyword idlangConditional endcase endelse endfor endswitch syn keyword idlangConditional endif endrep endwhile repeat until syn match idlangOperator "\ and\ " syn match idlangOperator "\ eq\ " syn match idlangOperator "\ ge\ " syn match idlangOperator "\ gt\ " syn match idlangOperator "\ le\ " syn match idlangOperator "\ lt\ " syn match idlangOperator "\ ne\ " syn match idlangOperator /\(\ \|(\)not\ /hs=e-3 syn match idlangOperator "\ or\ " syn match idlangOperator "\ xor\ " syn keyword idlangStop stop pause syn match idlangStrucvar "\h\w*\(\.\h\w*\)\+" syn match idlangStrucvar "[),\]]\(\.\h\w*\)\+"hs=s+1 syn match idlangSystem "\!\a\w*\(\.\w*\)\=" syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=/\h\w*" syn match idlangKeyword "\([(,]\s*\(\$\_s*\)\=\)\@<=\h\w*\s*=" syn keyword idlangTodo contained TODO syn region idlangString start=+"+ end=+"+ syn region idlangString start=+'+ end=+'+ syn match idlangPreCondit "^\s*@\w*\(\.\a\{3}\)\=" syn match idlangRealNumber "\<\d\+\(\.\=\d*e[+-]\=\d\+\|\.\d*d\|\.\d*\|d\)" syn match idlangRealNumber "\.\d\+\(d\|e[+-]\=\d\+\)\=" syn match idlangNumber "\<\.\@!\d\+\.\@!\(b\|u\|us\|s\|l\|ul\|ll\|ull\)\=\>" syn match idlangComment "[\;].*$" contains=idlangTodo syn match idlangContinueLine "\$\s*\($\|;\)"he=s+1 contains=idlangComment syn match idlangContinueLine "&\s*\(\h\|;\)"he=s+1 contains=ALL syn match idlangDblCommaError "\,\s*\," syn match idlangRoutine "EOS_\a*" syn match idlangRoutine "HDF_\a*" syn match idlangRoutine "CDF_\a*" syn match idlangRoutine "NCDF_\a*" syn match idlangRoutine "QUERY_\a*" syn match idlangRoutine "\' syn match indentOptions '-T' \ nextgroup=indentIdent skipwhite skipempty syn match indentIdent display contained '\h\w*\>' syn keyword indentOptions -bacc --blank-lines-after-ifdefs \ -bad --blank-lines-after-declarations \ -badp --blank-lines-after-procedure-declarations \ -bap --blank-lines-after-procedures \ -bbb --blank-lines-before-block-comments \ -bbo --break-before-boolean-operator \ -bc --blank-lines-after-commas \ -bfda --break-function-decl-args \ -bfde --break-function-decl-args-end \ -bl --braces-after-if-line \ -blf --braces-after-func-def-line \ -bls --braces-after-struct-decl-line \ -br --braces-on-if-line \ -brf --braces-on-func-def-line \ -brs --braces-on-struct-decl-line \ -bs --Bill-Shannon --blank-before-sizeof \ -c++ --c-plus-plus \ -cdb --comment-delimiters-on-blank-lines \ -cdw --cuddle-do-while \ -ce --cuddle-else \ -cs --space-after-cast \ -dj --left-justify-declarations \ -eei --extra-expression-indentation \ -fc1 --format-first-column-comments \ -fca --format-all-comments \ -gnu --gnu-style \ -h --help --usage \ -hnl --honour-newlines \ -kr --k-and-r-style --kernighan-and-ritchie --kernighan-and-ritchie-style \ -lp --continue-at-parentheses \ -lps --leave-preprocessor-space \ -nbacc --no-blank-lines-after-ifdefs \ -nbad --no-blank-lines-after-declarations \ -nbadp --no-blank-lines-after-procedure-declarations \ -nbap --no-blank-lines-after-procedures \ -nbbb --no-blank-lines-before-block-comments \ -nbbo --break-after-boolean-operator \ -nbc --no-blank-lines-after-commas \ -nbfda --dont-break-function-decl-args \ -nbfde --dont-break-function-decl-args-end \ -nbs --no-Bill-Shannon --no-blank-before-sizeof \ -ncdb --no-comment-delimiters-on-blank-lines \ -ncdw --dont-cuddle-do-while \ -nce --dont-cuddle-else \ -ncs --no-space-after-casts \ -ndj --dont-left-justify-declarations \ -neei --no-extra-expression-indentation \ -nfc1 --dont-format-first-column-comments \ -nfca --dont-format-comments \ -nhnl --ignore-newlines \ -nip --dont-indent-parameters --no-parameter-indentation \ -nlp --dont-line-up-parentheses \ -nlps --remove-preprocessor-space \ -npcs --no-space-after-function-call-names \ -npmt \ -npro --ignore-profile \ -nprs --no-space-after-parentheses \ -npsl --dont-break-procedure-type \ -nsaf --no-space-after-for \ -nsai --no-space-after-if \ -nsaw --no-space-after-while \ -nsc --dont-star-comments \ -nsob --leave-optional-blank-lines \ -nss --dont-space-special-semicolon \ -nut --no-tabs \ -nv --no-verbosity \ -o --output \ -o --output-file \ -orig --berkeley --berkeley-style --original --original-style \ -pcs --space-after-procedure-calls \ -pmt --preserve-mtime \ -prs --space-after-parentheses \ -psl --procnames-start-lines \ -saf --space-after-for \ -sai --space-after-if \ -saw --space-after-while \ -sc --start-left-side-of-comments \ -sob --swallow-optional-blank-lines \ -ss --space-special-semicolon \ -st --standard-output \ -ut --use-tabs \ -v --verbose \ -version --version \ -linux --linux-style if exists("indent_is_bsd") syn keyword indentOptions -ip -ei -nei endif if exists("c_minlines") let b:c_minlines = c_minlines else if !exists("c_no_if0") let b:c_minlines = 50 " #if 0 constructs can be long else let b:c_minlines = 15 " mostly for () constructs endif endif hi def link indentError Error hi def link indentComment Comment hi def link indentTodo Todo hi def link indentOptions Keyword hi def link indentNumber Number hi def link indentIdent Identifier let b:current_syntax = "indent" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword informDefine Constant syn keyword informType Array Attribute Class Nearby syn keyword informType Object Property String Routine syn match informType "\" syn keyword informInclude Import Include Link Replace System_file syn keyword informPreCondit End Endif Ifdef Ifndef Iftrue Iffalse Ifv3 Ifv5 syn keyword informPreCondit Ifnot syn keyword informPreProc Abbreviate Default Fake_action Lowstring syn keyword informPreProc Message Release Serial Statusline Stub Switches syn keyword informPreProc Trace Zcharacter syn region informGlobalRegion matchgroup=informType start="\" matchgroup=NONE skip=+!.*$\|".*"\|'.*'+ end=";" contains=ALLBUT,informGramPreProc,informPredicate,informGrammar,informAsm,informAsmObsolete syn keyword informGramPreProc contained Verb Extend if !exists("inform_highlight_simple") syn keyword informLibAttrib absent animate clothing concealed container syn keyword informLibAttrib door edible enterable female general light syn keyword informLibAttrib lockable locked male moved neuter on open syn keyword informLibAttrib openable pluralname proper scenery scored syn keyword informLibAttrib static supporter switchable talkable syn keyword informLibAttrib visited workflag worn syn match informLibAttrib "\" syn keyword informLibProp e_to se_to s_to sw_to w_to nw_to n_to ne_to syn keyword informLibProp u_to d_to in_to out_to before after life syn keyword informLibProp door_to with_key door_dir invent plural syn keyword informLibProp add_to_scope list_together react_before syn keyword informLibProp react_after grammar orders initial when_open syn keyword informLibProp when_closed when_on when_off description syn keyword informLibProp describe article cant_go found_in time_left syn keyword informLibProp number time_out daemon each_turn capacity syn keyword informLibProp name short_name short_name_indef parse_name syn keyword informLibProp articles inside_description if !exists("inform_highlight_old") syn keyword informLibProp compass_look before_implicit syn keyword informLibProp ext_initialise ext_messages endif syn keyword informLibObj e_obj se_obj s_obj sw_obj w_obj nw_obj n_obj syn keyword informLibObj ne_obj u_obj d_obj in_obj out_obj compass syn keyword informLibObj thedark selfobj player location second actor syn keyword informLibObj noun if !exists("inform_highlight_old") syn keyword informLibObj LibraryExtensions endif syn keyword informLibRoutine Achieved AfterRoutines AddToScope syn keyword informLibRoutine AllowPushDir Banner ChangeDefault syn keyword informLibRoutine ChangePlayer CommonAncestor DictionaryLookup syn keyword informLibRoutine DisplayStatus DoMenu DrawStatusLine syn keyword informLibRoutine EnglishNumber HasLightSource GetGNAOfObject syn keyword informLibRoutine IndirectlyContains IsSeeThrough Locale syn keyword informLibRoutine LoopOverScope LTI_Insert MoveFloatingObjects syn keyword informLibRoutine NextWord NextWordStopped NounDomain syn keyword informLibRoutine ObjectIsUntouchable OffersLight ParseToken syn keyword informLibRoutine PlaceInScope PlayerTo PrintShortName syn keyword informLibRoutine PronounNotice ScopeWithin SetPronoun SetTime syn keyword informLibRoutine StartDaemon StartTimer StopDaemon StopTimer syn keyword informLibRoutine TestScope TryNumber UnsignedCompare syn keyword informLibRoutine WordAddress WordInProperty WordLength syn keyword informLibRoutine WriteListFrom YesOrNo ZRegion RunRoutines syn keyword informLibRoutine AfterLife AfterPrompt Amusing BeforeParsing syn keyword informLibRoutine ChooseObjects DarkToDark DeathMessage syn keyword informLibRoutine GamePostRoutine GamePreRoutine Initialise syn keyword informLibRoutine InScope LookRoutine NewRoom ParseNoun syn keyword informLibRoutine ParseNumber ParserError PrintRank PrintVerb syn keyword informLibRoutine PrintTaskName TimePasses UnknownVerb if exists("inform_highlight_glulx") syn keyword informLibRoutine IdentifyGlkObject HandleGlkEvent syn keyword informLibRoutine InitGlkWindow endif if !exists("inform_highlight_old") syn keyword informLibRoutine KeyCharPrimitive KeyDelay ClearScreen syn keyword informLibRoutine MoveCursor MainWindow StatusLineHeight syn keyword informLibRoutine ScreenWidth ScreenHeight SetColour syn keyword informLibRoutine DecimalNumber PrintToBuffer Length syn keyword informLibRoutine UpperCase LowerCase PrintCapitalised syn keyword informLibRoutine Cap Centre if exists("inform_highlight_glulx") syn keyword informLibRoutine PrintAnything PrintAnyToArray endif endif syn keyword informLibAction Quit Restart Restore Verify Save syn keyword informLibAction ScriptOn ScriptOff Pronouns Score syn keyword informLibAction Fullscore LMode1 LMode2 LMode3 syn keyword informLibAction NotifyOn NotifyOff Version Places syn keyword informLibAction Objects TraceOn TraceOff TraceLevel syn keyword informLibAction ActionsOn ActionsOff RoutinesOn syn keyword informLibAction RoutinesOff TimersOn TimersOff syn keyword informLibAction CommandsOn CommandsOff CommandsRead syn keyword informLibAction Predictable XPurloin XAbstract XTree syn keyword informLibAction Scope Goto Gonear Inv InvTall InvWide syn keyword informLibAction Take Drop Remove PutOn Insert Transfer syn keyword informLibAction Empty Enter Exit GetOff Go Goin Look syn keyword informLibAction Examine Search Give Show Unlock Lock syn keyword informLibAction SwitchOn SwitchOff Open Close Disrobe syn keyword informLibAction Wear Eat Yes No Burn Pray Wake syn keyword informLibAction WakeOther Consult Kiss Think Smell syn keyword informLibAction Listen Taste Touch Dig Cut Jump syn keyword informLibAction JumpOver Tie Drink Fill Sorry Strong syn keyword informLibAction Mild Attack Swim Swing Blow Rub Set syn keyword informLibAction SetTo WaveHands Wave Pull Push PushDir syn keyword informLibAction Turn Squeeze LookUnder ThrowAt Tell syn keyword informLibAction Answer Buy Ask AskFor Sing Climb Wait syn keyword informLibAction Sleep LetGo Receive ThrownAt Order syn keyword informLibAction TheSame PluralFound Miscellany Prompt syn keyword informLibAction ChangesOn ChangesOff Showverb Showobj syn keyword informLibAction EmptyT VagueGo if exists("inform_highlight_glulx") syn keyword informLibAction GlkList endif syn keyword informLibVariable keep_silent deadflag action special_number syn keyword informLibVariable consult_from consult_words etype verb_num syn keyword informLibVariable verb_word the_time real_location c_style syn keyword informLibVariable parser_one parser_two listing_together wn syn keyword informLibVariable parser_action scope_stage scope_reason syn keyword informLibVariable action_to_be menu_item item_name item_width syn keyword informLibVariable lm_o lm_n inventory_style task_scores syn keyword informLibVariable inventory_stage syn keyword informLibConst AMUSING_PROVIDED DEBUG Headline MAX_CARRIED syn keyword informLibConst MAX_SCORE MAX_TIMERS NO_PLACES NUMBER_TASKS syn keyword informLibConst OBJECT_SCORE ROOM_SCORE SACK_OBJECT Story syn keyword informLibConst TASKS_PROVIDED WITHOUT_DIRECTIONS syn keyword informLibConst NEWLINE_BIT INDENT_BIT FULLINV_BIT ENGLISH_BIT syn keyword informLibConst RECURSE_BIT ALWAYS_BIT TERSE_BIT PARTINV_BIT syn keyword informLibConst DEFART_BIT WORKFLAG_BIT ISARE_BIT CONCEAL_BIT syn keyword informLibConst PARSING_REASON TALKING_REASON EACHTURN_REASON syn keyword informLibConst REACT_BEFORE_REASON REACT_AFTER_REASON syn keyword informLibConst TESTSCOPE_REASON LOOPOVERSCOPE_REASON syn keyword informLibConst STUCK_PE UPTO_PE NUMBER_PE CANTSEE_PE TOOLIT_PE syn keyword informLibConst NOTHELD_PE MULTI_PE MMULTI_PE VAGUE_PE EXCEPT_PE syn keyword informLibConst ANIMA_PE VERB_PE SCENERY_PE ITGONE_PE syn keyword informLibConst JUNKAFTER_PE TOOFEW_PE NOTHING_PE ASKSCOPE_PE if !exists("inform_highlight_old") syn keyword informLibConst WORDSIZE TARGET_ZCODE TARGET_GLULX syn keyword informLibConst LIBRARY_PARSER LIBRARY_VERBLIB LIBRARY_GRAMMAR syn keyword informLibConst LIBRARY_ENGLISH NO_SCORE START_MOVE syn keyword informLibConst CLR_DEFAULT CLR_BLACK CLR_RED CLR_GREEN syn keyword informLibConst CLR_YELLOW CLR_BLUE CLR_MAGENTA CLR_CYAN syn keyword informLibConst CLR_WHITE CLR_PURPLE CLR_AZURE syn keyword informLibConst WIN_ALL WIN_MAIN WIN_STATUS endif endif syntax case match syn keyword informSysFunc child children elder indirect parent random syn keyword informSysFunc sibling younger youngest metaclass if exists("inform_highlight_glulx") syn keyword informSysFunc glk endif syn keyword informSysConst adjectives_table actions_table classes_table syn keyword informSysConst identifiers_table preactions_table version_number syn keyword informSysConst largest_object strings_offset code_offset syn keyword informSysConst dict_par1 dict_par2 dict_par3 syn keyword informSysConst actual_largest_object static_memory_offset syn keyword informSysConst array_names_offset readable_memory_offset syn keyword informSysConst cpv__start cpv__end ipv__start ipv__end syn keyword informSysConst array__start array__end lowest_attribute_number syn keyword informSysConst highest_attribute_number attribute_names_array syn keyword informSysConst lowest_property_number highest_property_number syn keyword informSysConst property_names_array lowest_action_number syn keyword informSysConst highest_action_number action_names_array syn keyword informSysConst lowest_fake_action_number highest_fake_action_number syn keyword informSysConst fake_action_names_array lowest_routine_number syn keyword informSysConst highest_routine_number routines_array syn keyword informSysConst routine_names_array routine_flags_array syn keyword informSysConst lowest_global_number highest_global_number globals_array syn keyword informSysConst global_names_array global_flags_array syn keyword informSysConst lowest_array_number highest_array_number arrays_array syn keyword informSysConst array_names_array array_flags_array lowest_constant_number syn keyword informSysConst highest_constant_number constants_array constant_names_array syn keyword informSysConst lowest_class_number highest_class_number class_objects_array syn keyword informSysConst lowest_object_number highest_object_number if !exists("inform_highlight_old") syn keyword informSysConst sys_statusline_flag endif syn keyword informConditional default else if switch syn keyword informRepeat break continue do for objectloop until while syn keyword informStatement box font give inversion jump move new_line syn keyword informStatement print print_ret quit read remove restore return syn keyword informStatement rfalse rtrue save spaces string style syn keyword informOperator roman reverse bold underline fixed on off to syn keyword informOperator near from syn keyword informKeyword dictionary symbols objects verbs assembly syn keyword informKeyword expressions lines tokens linker on off alias long syn keyword informKeyword additive score time string table syn keyword informKeyword with private has class error fatalerror syn keyword informKeyword warning self if !exists("inform_highlight_old") syn keyword informKeyword buffer endif syn keyword informMetaAttrib remaining create destroy recreate copy call syn keyword informMetaAttrib print_to_array syn keyword informPredicate has hasnt in notin ofclass or syn keyword informPredicate provides syn keyword informGrammar contained noun held multi multiheld multiexcept syn keyword informGrammar contained multiinside creature special number syn keyword informGrammar contained scope topic reverse meta only replace syn keyword informGrammar contained first last syn keyword informKeywordObsolete contained initial data initstr syn keyword informTodo contained TODO syn match informAsmContainer "@\s*\k*" contains=informAsm,informAsmObsolete if exists("inform_highlight_glulx") syn keyword informAsm contained nop add sub mul div mod neg bitand bitor syn keyword informAsm contained bitxor bitnot shiftl sshiftr ushiftr jump jz syn keyword informAsm contained jnz jeq jne jlt jge jgt jle jltu jgeu jgtu syn keyword informAsm contained jleu call return catch throw tailcall copy syn keyword informAsm contained copys copyb sexs sexb aload aloads aloadb syn keyword informAsm contained aloadbit astore astores astoreb astorebit syn keyword informAsm contained stkcount stkpeek stkswap stkroll stkcopy syn keyword informAsm contained streamchar streamnum streamstr gestalt syn keyword informAsm contained debugtrap getmemsize setmemsize jumpabs syn keyword informAsm contained random setrandom quit verify restart save syn keyword informAsm contained restore saveundo restoreundo protect glk syn keyword informAsm contained getstringtbl setstringtbl getiosys setiosys syn keyword informAsm contained linearsearch binarysearch linkedsearch syn keyword informAsm contained callf callfi callfii callfiii else syn keyword informAsm contained je jl jg dec_chk inc_chk jin test or and syn keyword informAsm contained test_attr set_attr clear_attr store syn keyword informAsm contained insert_obj loadw loadb get_prop syn keyword informAsm contained get_prop_addr get_next_prop add sub mul div syn keyword informAsm contained mod call storew storeb put_prop sread syn keyword informAsm contained print_num random push pull syn keyword informAsm contained split_window set_window output_stream syn keyword informAsm contained input_stream sound_effect jz get_sibling syn keyword informAsm contained get_child get_parent get_prop_len inc dec syn keyword informAsm contained remove_obj print_obj ret jump syn keyword informAsm contained load not rtrue rfalse print syn keyword informAsm contained print_ret nop save restore restart syn keyword informAsm contained ret_popped pop quit new_line show_status syn keyword informAsm contained verify call_2s call_vs aread call_vs2 syn keyword informAsm contained erase_window erase_line set_cursor get_cursor syn keyword informAsm contained set_text_style buffer_mode read_char syn keyword informAsm contained scan_table call_1s call_2n set_colour throw syn keyword informAsm contained call_vn call_vn2 tokenise encode_text syn keyword informAsm contained copy_table print_table check_arg_count syn keyword informAsm contained call_1n catch piracy log_shift art_shift syn keyword informAsm contained set_font save_undo restore_undo draw_picture syn keyword informAsm contained picture_data erase_picture set_margins syn keyword informAsm contained move_window window_size window_style syn keyword informAsm contained get_wind_prop scroll_window pop_stack syn keyword informAsm contained read_mouse mouse_window push_stack syn keyword informAsm contained put_wind_prop print_form make_menu syn keyword informAsm contained picture_table if !exists("inform_highlight_old") syn keyword informAsm contained check_unicode print_unicode endif syn keyword informAsmObsolete contained print_paddr print_addr print_char endif setlocal iskeyword+=$ command -nargs=+ SynDisplay syntax display syn region informGrammarSection matchgroup=informGramPreProc start="\" skip=+".*"+ end=";"he=e-1 contains=ALLBUT,informAsm SynDisplay match informBadAccent contained "@[^{[:digit:]]\D" SynDisplay match informBadAccent contained "@{[^}]*}" SynDisplay match informAccent contained "@:[aouAOUeiyEI]" SynDisplay match informAccent contained "@'[aeiouyAEIOUY]" SynDisplay match informAccent contained "@`[aeiouAEIOU]" SynDisplay match informAccent contained "@\^[aeiouAEIOU]" SynDisplay match informAccent contained "@\~[anoANO]" SynDisplay match informAccent contained "@/[oO]" SynDisplay match informAccent contained "@ss\|@<<\|@>>\|@oa\|@oA\|@ae\|@AE\|@cc\|@cC" SynDisplay match informAccent contained "@th\|@et\|@Th\|@Et\|@LL\|@oe\|@OE\|@!!\|@??" SynDisplay match informAccent contained "@{\x\{1,4}}" SynDisplay match informBadStrUnicode contained "@@\D" SynDisplay match informStringUnicode contained "@@\d\+" SynDisplay match informStringCode contained "@\d\d" syn region informString start=+"+ skip=+\\\\+ end=+"+ contains=informAccent,informStringUnicode,informStringCode,informBadAccent,informBadStrUnicode syn region informDictString start="'" end="'" contains=informAccent,informBadAccent SynDisplay match informBadDictString "''" SynDisplay match informDictString "'''" SynDisplay match informNumber "\<\d\+\>" SynDisplay match informNumber "\<\$\x\+\>" SynDisplay match informNumber "\<\$\$[01]\+\>" syn match informComment "!.*" contains=informTodo syn sync match informSyncStringEnd grouphere NONE /"[;,]\s*$/ syn sync match informSyncRoutineEnd grouphere NONE /][;,]\s*$/ syn sync match informSyncCommentEnd grouphere NONE /^\s*!.*$/ syn sync match informSyncRoutine groupthere informGrammarSection "\" syn sync maxlines=500 delcommand SynDisplay hi def link informDefine Define hi def link informType Type hi def link informInclude Include hi def link informPreCondit PreCondit hi def link informPreProc PreProc hi def link informGramPreProc PreProc hi def link informAsm Special if !exists("inform_suppress_obsolete") hi def link informAsmObsolete informError hi def link informKeywordObsolete informError else hi def link informAsmObsolete Special hi def link informKeywordObsolete Keyword endif hi def link informPredicate Operator hi def link informSysFunc Identifier hi def link informSysConst Identifier hi def link informConditional Conditional hi def link informRepeat Repeat hi def link informStatement Statement hi def link informOperator Operator hi def link informKeyword Keyword hi def link informGrammar Keyword hi def link informDictString String hi def link informNumber Number hi def link informError Error hi def link informString String hi def link informComment Comment hi def link informAccent Special hi def link informStringUnicode Special hi def link informStringCode Special hi def link informTodo Todo if !exists("inform_highlight_simple") hi def link informLibAttrib Identifier hi def link informLibProp Identifier hi def link informLibObj Identifier hi def link informLibRoutine Identifier hi def link informLibVariable Identifier hi def link informLibConst Identifier hi def link informLibAction Identifier endif hi def link informBadDictString informError hi def link informBadAccent informError hi def link informBadStrUnicode informError let b:current_syntax = "inform" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword initexTodo TODO FIXME XXX NOTE syn match initexComment display contains=initexTodo \ '\\\@' syn cluster initexBox \ contains=initexBoxCommand,initexBoxInternalQuantity, \ initexBoxParameterDimen,initexBoxParameterInteger, \ initexBoxParameterToken syn cluster initexCharacter \ contains=initexCharacterCommand,initexCharacterInternalQuantity, \ initexCharacterParameterInteger syn cluster initexDebugging \ contains=initexDebuggingCommand,initexDebuggingParameterInteger, \ initexDebuggingParameterToken syn cluster initexFileIO \ contains=initexFileIOCommand,initexFileIOInternalQuantity, \ initexFileIOParameterToken syn cluster initexFonts \ contains=initexFontsCommand,initexFontsInternalQuantity syn cluster initexGlue \ contains=initexGlueCommand,initexGlueDerivedCommand syn cluster initexHyphenation \ contains=initexHyphenationCommand,initexHyphenationDerivedCommand, \ initexHyphenationInternalQuantity,initexHyphenationParameterInteger syn cluster initexInserts \ contains=initexInsertsCommand,initexInsertsParameterDimen, \ initexInsertsParameterGlue,initexInsertsParameterInteger syn cluster initexJob \ contains=initexJobCommand,initexJobInternalQuantity, \ initexJobParameterInteger syn cluster initexKern \ contains=initexKernCommand,initexKernInternalQuantity syn cluster initexLogic \ contains=initexLogicCommand syn cluster initexMacro \ contains=initexMacroCommand,initexMacroDerivedCommand, \ initexMacroParameterInteger syn cluster initexMarks \ contains=initexMarksCommand syn cluster initexMath \ contains=initexMathCommand,initexMathDerivedCommand, \ initexMathInternalQuantity,initexMathParameterDimen, \ initexMathParameterGlue,initexMathParameterInteger, \ initexMathParameterMuglue,initexMathParameterToken syn cluster initexPage \ contains=initexPageInternalQuantity,initexPageParameterDimen, \ initexPageParameterGlue syn cluster initexParagraph \ contains=initexParagraphCommand,initexParagraphInternalQuantity, \ initexParagraphParameterDimen,initexParagraphParameterGlue, \ initexParagraphParameterInteger,initexParagraphParameterToken syn cluster initexPenalties \ contains=initexPenaltiesCommand,initexPenaltiesInternalQuantity, \ initexPenaltiesParameterInteger syn cluster initexRegisters \ contains=initexRegistersCommand,initexRegistersInternalQuantity syn cluster initexTables \ contains=initexTablesCommand,initexTablesParameterGlue, \ initexTablesParameterToken syn cluster initexCommand \ contains=initexBoxCommand,initexCharacterCommand, \ initexDebuggingCommand,initexFileIOCommand, \ initexFontsCommand,initexGlueCommand, \ initexHyphenationCommand,initexInsertsCommand, \ initexJobCommand,initexKernCommand,initexLogicCommand, \ initexMacroCommand,initexMarksCommand,initexMathCommand, \ initexParagraphCommand,initexPenaltiesCommand,initexRegistersCommand, \ initexTablesCommand syn match initexBoxCommand display contains=@NoSpell \ '\\\%([hv]\=box\|[cx]\=leaders\|copy\|[hv]rule\|lastbox\|setbox\|un[hv]\%(box\|copy\)\|vtop\)\>' syn match initexCharacterCommand display contains=@NoSpell \ '\\\%([] ]\|\%(^^M\|accent\|char\|\%(lower\|upper\)case\|number\|romannumeral\|string\)\>\)' syn match initexDebuggingCommand display contains=@NoSpell \ '\\\%(\%(batch\|\%(non\|error\)stop\|scroll\)mode\|\%(err\)\=message\|meaning\|show\%(box\%(breadth\|depth\)\=\|lists\|the\)\)\>' syn match initexFileIOCommand display contains=@NoSpell \ '\\\%(\%(close\|open\)\%(in\|out\)\|endinput\|immediate\|input\|read\|shipout\|special\|write\)\>' syn match initexFontsCommand display contains=@NoSpell \ '\\\%(/\|fontname\)\>' syn match initexGlueCommand display contains=@NoSpell \ '\\\%([hv]\|un\)skip\>' syn match initexHyphenationCommand display contains=@NoSpell \ '\\\%(discretionary\|hyphenation\|patterns\|setlanguage\)\>' syn match initexInsertsCommand display contains=@NoSpell \ '\\\%(insert\|split\%(bot\|first\)mark\|vsplit\)\>' syn match initexJobCommand display contains=@NoSpell \ '\\\%(dump\|end\|jobname\)\>' syn match initexKernCommand display contains=@NoSpell \ '\\\%(kern\|lower\|move\%(left\|right\)\|raise\|unkern\)\>' syn match initexLogicCommand display contains=@NoSpell \ '\\\%(else\|fi\|if[a-zA-Z@]\+\|or\)\>' syn match initexMacroCommand display contains=@NoSpell \ '\\\%(after\%(assignment\|group\)\|\%(begin\|end\)group\|\%(end\)\=csname\|e\=def\|expandafter\|futurelet\|global\|let\|long\|noexpand\|outer\|relax\|the\)\>' syn match initexMarksCommand display contains=@NoSpell \ '\\\%(bot\|first\|top\)\=mark\>' syn match initexMathCommand display contains=@NoSpell \ '\\\%(abovewithdelims\|delimiter\|display\%(limits\|style\)\|l\=eqno\|left\|\%(no\)\=limits\|math\%(accent\|bin\|char\|choice\|close\|code\|inner\|op\|open\|ord\|punct\|rel\)\|mkern\|mskip\|muskipdef\|nonscript\|\%(over\|under\)line\|radical\|right\|\%(\%(script\)\{1,2}\|text\)style\|vcenter\)\>' syn match initexParagraphCommand display contains=@NoSpell \ '\\\%(ignorespaces\|indent\|no\%(boundary\|indent\)\|par\|vadjust\)\>' syn match initexPenaltiesCommand display contains=@NoSpell \ '\\\%(un\)\=penalty\>' syn match initexRegistersCommand display contains=@NoSpell \ '\\\%(advance\|\%(count\|dimen\|skip\|toks\)def\|divide\|multiply\)\>' syn match initexTablesCommand display contains=@NoSpell \ '\\\%(cr\|crcr\|[hv]align\|noalign\|omit\|span\)\>' syn cluster initexDerivedCommand \ contains=initexGlueDerivedCommand,initexHyphenationDerivedCommand, \ initexMacroDerivedCommand,initexMathDerivedCommand syn match initexGlueDerivedCommand display contains=@NoSpell \ '\\\%([hv]fil\%(l\|neg\)\=\|[hv]ss\)\>' syn match initexHyphenationDerivedCommand display contains=@NoSpell \ '\\-' syn match initexMacroDerivedCommand display contains=@NoSpell \ '\\[gx]def\>' syn match initexMathDerivedCommand display contains=@NoSpell \ '\\\%(above\|atop\%(withdelims\)\=\|mathchardef\|over\|overwithdelims\)\>' syn cluster initexInternalQuantity \ contains=initexBoxInternalQuantity,initexCharacterInternalQuantity, \ initexFileIOInternalQuantity,initexFontsInternalQuantity, \ initexHyphenationInternalQuantity,initexJobInternalQuantity, \ initexKernInternalQuantity,initexMathInternalQuantity, \ initexPageInternalQuantity,initexParagraphInternalQuantity, \ initexPenaltiesInternalQuantity,initexRegistersInternalQuantity syn match initexBoxInternalQuantity display contains=@NoSpell \ '\\\%(badness\|dp\|ht\|prevdepth\|wd\)\>' syn match initexCharacterInternalQuantity display contains=@NoSpell \ '\\\%(catcode\|chardef\|\%([ul]c\|sf\)code\)\>' syn match initexFileIOInternalQuantity display contains=@NoSpell \ '\\inputlineno\>' syn match initexFontsInternalQuantity display contains=@NoSpell \ '\\\%(font\%(dimen\)\=\|nullfont\)\>' syn match initexHyphenationInternalQuantity display contains=@NoSpell \ '\\hyphenchar\>' syn match initexJobInternalQuantity display contains=@NoSpell \ '\\deadcycles\>' syn match initexKernInternalQuantity display contains=@NoSpell \ '\\lastkern\>' syn match initexMathInternalQuantity display contains=@NoSpell \ '\\\%(delcode\|mathcode\|muskip\|\%(\%(script\)\{1,2}\|text\)font\|skewchar\)\>' syn match initexPageInternalQuantity display contains=@NoSpell \ '\\page\%(depth\|fil\{1,3}stretch\|goal\|shrink\|stretch\|total\)\>' syn match initexParagraphInternalQuantity display contains=@NoSpell \ '\\\%(prevgraf\|spacefactor\)\>' syn match initexPenaltiesInternalQuantity display contains=@NoSpell \ '\\lastpenalty\>' syn match initexRegistersInternalQuantity display contains=@NoSpell \ '\\\%(count\|dimen\|skip\|toks\)\d\+\>' syn cluster initexParameterDimen \ contains=initexBoxParameterDimen,initexInsertsParameterDimen, \ initexMathParameterDimen,initexPageParameterDimen, \ initexParagraphParameterDimen syn match initexBoxParameterDimen display contains=@NoSpell \ '\\\%(boxmaxdepth\|[hv]fuzz\|overfullrule\)\>' syn match initexInsertsParameterDimen display contains=@NoSpell \ '\\splitmaxdepth\>' syn match initexMathParameterDimen display contains=@NoSpell \ '\\\%(delimitershortfall\|display\%(indent\|width\)\|mathsurround\|nulldelimiterspace\|predisplaysize\|scriptspace\)\>' syn match initexPageParameterDimen display contains=@NoSpell \ '\\\%([hv]offset\|maxdepth\|vsize\)\>' syn match initexParagraphParameterDimen display contains=@NoSpell \ '\\\%(emergencystretch\|\%(hang\|par\)indent\|hsize\|lineskiplimit\)\>' syn cluster initexParameterGlue \ contains=initexInsertsParameterGlue,initexMathParameterGlue, \ initexPageParameterGlue,initexParagraphParameterGlue, \ initexTablesParameterGlue syn match initexInsertsParameterGlue display contains=@NoSpell \ '\\splittopskip\>' syn match initexMathParameterGlue display contains=@NoSpell \ '\\\%(above\|below\)display\%(short\)\=skip\>' syn match initexPageParameterGlue display contains=@NoSpell \ '\\topskip\>' syn match initexParagraphParameterGlue display contains=@NoSpell \ '\\\%(baseline\|left\|line\|par\%(fill\)\=\|right\|x\=space\)skip\>' syn match initexTablesParameterGlue display contains=@NoSpell \ '\\tabskip\>' syn cluster initexParameterInteger \ contains=initexBoxParameterInteger,initexCharacterParameterInteger, \ initexDebuggingParameterInteger,initexHyphenationParameterInteger, \ initexInsertsParameterInteger,initexJobParameterInteger, \ initexMacroParameterInteger,initexMathParameterInteger, \ initexParagraphParameterInteger,initexPenaltiesParameterInteger, syn match initexBoxParameterInteger display contains=@NoSpell \ '\\[hv]badness\>' syn match initexCharacterParameterInteger display contains=@NoSpell \ '\\\%(\%(endline\|escape\|newline\)char\)\>' syn match initexDebuggingParameterInteger display contains=@NoSpell \ '\\\%(errorcontextlines\|pausing\|tracing\%(commands\|lostchars\|macros\|online\|output\|pages\|paragraphs\|restores|stats\)\)\>' syn match initexHyphenationParameterInteger display contains=@NoSpell \ '\\\%(defaulthyphenchar\|language\|\%(left\|right\)hyphenmin\|uchyph\)\>' syn match initexInsertsParameterInteger display contains=@NoSpell \ '\\\%(holdinginserts\)\>' syn match initexJobParameterInteger display contains=@NoSpell \ '\\\%(day\|mag\|maxdeadcycles\|month\|time\|year\)\>' syn match initexMacroParameterInteger display contains=@NoSpell \ '\\globaldefs\>' syn match initexMathParameterInteger display contains=@NoSpell \ '\\\%(binoppenalty\|defaultskewchar\|delimiterfactor\|displaywidowpenalty\|fam\|\%(post\|pre\)displaypenalty\|relpenalty\)\>' syn match initexParagraphParameterInteger display contains=@NoSpell \ '\\\%(\%(adj\|\%(double\|final\)hyphen\)demerits\|looseness\|\%(pre\)\=tolerance\)\>' syn match initexPenaltiesParameterInteger display contains=@NoSpell \ '\\\%(broken\|club\|exhyphen\|floating\|hyphen\|interline\|line\|output\|widow\)penalty\>' syn cluster initexParameterMuglue \ contains=initexMathParameterMuglue syn match initexMathParameterMuglue display contains=@NoSpell \ '\\\%(med\|thick\|thin\)muskip\>' syn cluster initexParameterDimen \ contains=initexBoxParameterToken,initexDebuggingParameterToken, \ initexFileIOParameterToken,initexMathParameterToken, \ initexParagraphParameterToken,initexTablesParameterToken syn match initexBoxParameterToken display contains=@NoSpell \ '\\every[hv]box\>' syn match initexDebuggingParameterToken display contains=@NoSpell \ '\\errhelp\>' syn match initexFileIOParameterToken display contains=@NoSpell \ '\\output\>' syn match initexMathParameterToken display contains=@NoSpell \ '\\every\%(display\|math\)\>' syn match initexParagraphParameterToken display contains=@NoSpell \ '\\everypar\>' syn match initexTablesParameterToken display contains=@NoSpell \ '\\everycr\>' hi def link initexCharacter Character hi def link initexNumber Number hi def link initexIdentifier Identifier hi def link initexStatement Statement hi def link initexConditional Conditional hi def link initexPreProc PreProc hi def link initexMacro Macro hi def link initexType Type hi def link initexDebug Debug hi def link initexTodo Todo hi def link initexComment Comment hi def link initexDimension initexNumber hi def link initexCommand initexStatement hi def link initexBoxCommand initexCommand hi def link initexCharacterCommand initexCharacter hi def link initexDebuggingCommand initexDebug hi def link initexFileIOCommand initexCommand hi def link initexFontsCommand initexType hi def link initexGlueCommand initexCommand hi def link initexHyphenationCommand initexCommand hi def link initexInsertsCommand initexCommand hi def link initexJobCommand initexPreProc hi def link initexKernCommand initexCommand hi def link initexLogicCommand initexConditional hi def link initexMacroCommand initexMacro hi def link initexMarksCommand initexCommand hi def link initexMathCommand initexCommand hi def link initexParagraphCommand initexCommand hi def link initexPenaltiesCommand initexCommand hi def link initexRegistersCommand initexCommand hi def link initexTablesCommand initexCommand hi def link initexDerivedCommand initexStatement hi def link initexGlueDerivedCommand initexDerivedCommand hi def link initexHyphenationDerivedCommand initexDerivedCommand hi def link initexMacroDerivedCommand initexDerivedCommand hi def link initexMathDerivedCommand initexDerivedCommand hi def link initexInternalQuantity initexIdentifier hi def link initexBoxInternalQuantity initexInternalQuantity hi def link initexCharacterInternalQuantity initexInternalQuantity hi def link initexFileIOInternalQuantity initexInternalQuantity hi def link initexFontsInternalQuantity initexInternalQuantity hi def link initexHyphenationInternalQuantity initexInternalQuantity hi def link initexJobInternalQuantity initexInternalQuantity hi def link initexKernInternalQuantity initexInternalQuantity hi def link initexMathInternalQuantity initexInternalQuantity hi def link initexPageInternalQuantity initexInternalQuantity hi def link initexParagraphInternalQuantity initexInternalQuantity hi def link initexPenaltiesInternalQuantity initexInternalQuantity hi def link initexRegistersInternalQuantity initexInternalQuantity hi def link initexParameterDimen initexNumber hi def link initexBoxParameterDimen initexParameterDimen hi def link initexInsertsParameterDimen initexParameterDimen hi def link initexMathParameterDimen initexParameterDimen hi def link initexPageParameterDimen initexParameterDimen hi def link initexParagraphParameterDimen initexParameterDimen hi def link initexParameterGlue initexNumber hi def link initexInsertsParameterGlue initexParameterGlue hi def link initexMathParameterGlue initexParameterGlue hi def link initexPageParameterGlue initexParameterGlue hi def link initexParagraphParameterGlue initexParameterGlue hi def link initexTablesParameterGlue initexParameterGlue hi def link initexParameterInteger initexNumber hi def link initexBoxParameterInteger initexParameterInteger hi def link initexCharacterParameterInteger initexParameterInteger hi def link initexDebuggingParameterInteger initexParameterInteger hi def link initexHyphenationParameterInteger initexParameterInteger hi def link initexInsertsParameterInteger initexParameterInteger hi def link initexJobParameterInteger initexParameterInteger hi def link initexMacroParameterInteger initexParameterInteger hi def link initexMathParameterInteger initexParameterInteger hi def link initexParagraphParameterInteger initexParameterInteger hi def link initexPenaltiesParameterInteger initexParameterInteger hi def link initexParameterMuglue initexNumber hi def link initexMathParameterMuglue initexParameterMuglue hi def link initexParameterToken initexIdentifier hi def link initexBoxParameterToken initexParameterToken hi def link initexDebuggingParameterToken initexParameterToken hi def link initexFileIOParameterToken initexParameterToken hi def link initexMathParameterToken initexParameterToken hi def link initexParagraphParameterToken initexParameterToken hi def link initexTablesParameterToken initexParameterToken let b:current_syntax = "initex" let &cpo = s:cpo_save unlet s:cpo_save if &compatible || v:version < 603 finish endif if exists("b:current_syntax") finish endif syn case match let is_bash = 1 unlet! b:current_syntax syn include @shTop syntax/sh.vim syn region initngService matchgroup=initngServiceHeader start="^\s*\(service\|virtual\|daemon\|class\|cron\)\s\+\(\(\w\|[-/*]\)\+\(\s\+:\s\+\(\w\|[-/*]\)\+\)\?\)\s\+{" end="}" contains=@initngServiceCluster syn cluster initngServiceCluster contains=initngComment,initngAction,initngServiceOption,initngServiceHeader,initngDelim,initngVariable syn region initngAction matchgroup=initngActionHeader start="^\s*\(script start\|script stop\|script run\)\s*=\s*{" end="}" contains=@initngActionCluster syn cluster initngActionCluster contains=@shTop syn match initngDelim /[{}]/ contained syn region initngString start=/"/ end=/"/ skip=/\\"/ syn match initngServiceOption /.\+\s*=.\+;/ contains=initngServiceKeywords,initngSubstMacro contained syn match initngServiceOption /\w\+;/ contains=initngServiceKeywords,initngSubstMacro contained syn keyword initngServiceKeywords also_stop need use nice setuid contained syn keyword initngServiceKeywords delay chdir suid sgid start_pause env_file env_parse pid_file pidfile contained syn keyword initngServiceKeywords pid_of up_when_pid_set stdout stderr syncron just_before contained syn keyword initngServiceKeywords provide lockfile daemon_stops_badly contained syn match initngServiceKeywords /\(script\|exec\(_args\)\?\) \(start\|stop\|daemon\)/ contained syn match initngServiceKeywords /env\s\+\w\+/ contained syn keyword initngServiceKeywords rlimit_cpu_hard rlimit_core_soft contained syn keyword initngServiceKeywords last respawn network_provider require_network require_file critical forks contained syn keyword initngServiceKeywords hourly contained syn match initngVariable /\${\?\w\+\}\?/ syn match initngSubstMacro /@[^@]\+@/ contained syn cluster initngActionCluster add=initngSubstMacro syn cluster shCommandSubList add=initngSubstMacro syn cluster initngCommentGroup contains=initngTodo,@Spell syn keyword initngTodo TODO FIXME XXX contained syn match initngComment /#.*$/ contains=@initngCommentGroup syn region initngDefine start="^#\(endd\|elsed\|exec\|ifd\|endexec\|endd\)\>" skip="\\$" end="$" end="#"me=s-1 syn cluster shCommentGroup add=initngDefine syn cluster initngCommentGroup add=initngDefine hi def link initngComment Comment hi def link initngTodo Todo hi def link initngString String hi def link initngServiceKeywords Define hi def link initngServiceHeader Keyword hi def link initngActionHeader Type hi def link initngDelim Delimiter hi def link initngVariable PreProc hi def link initngSubstMacro Comment hi def link initngDefine Macro let b:current_syntax = "initng" if exists("b:current_syntax") finish endif syn case match syn match inittabError "[^:]\+:"me=e-1 contained syn match inittabError "[^:]\+$" contained syn match inittabComment "^[#:].*$" contains=inittabFixme syn match inittabComment "#.*$" contained contains=inittabFixme syn keyword inittabFixme FIXME TODO XXX NOT syn region inittabShString start=+"+ end=+"+ skip=+\\\\\|\\\"+ contained syn region inittabShString start=+'+ end=+'+ contained syn match inittabShOption "\s[-+][[:alnum:]]\+"ms=s+1 contained syn match inittabShOption "\s--[:alnum:][-[:alnum:]]*"ms=s+1 contained syn match inittabShCommand "/\S\+" contained syn cluster inittabSh add=inittabShOption,inittabShString,inittabShCommand syn keyword inittabActionName respawn wait once boot bootwait off ondemand sysinit powerwait powerfail powerokwait powerfailnow ctrlaltdel kbrequest initdefault contained syn match inittabId "^[[:alnum:]~]\{1,4}" nextgroup=inittabColonRunLevels,inittabError syn match inittabColonRunLevels ":" contained nextgroup=inittabRunLevels,inittabColonAction,inittabError syn match inittabRunLevels "[0-6A-Ca-cSs]\+" contained nextgroup=inittabColonAction,inittabError syn match inittabColonAction ":" contained nextgroup=inittabAction,inittabError syn match inittabAction "\w\+" contained nextgroup=inittabColonProcess,inittabError contains=inittabActionName syn match inittabColonProcess ":" contained nextgroup=inittabProcessPlus,inittabProcess,inittabError syn match inittabProcessPlus "+" contained nextgroup=inittabProcess,inittabError syn region inittabProcess start="/" end="$" transparent oneline contained contains=@inittabSh,inittabComment hi def link inittabComment Comment hi def link inittabFixme Todo hi def link inittabActionName Type hi def link inittabError Error hi def link inittabId Identifier hi def link inittabRunLevels Special hi def link inittabColonProcess inittabColon hi def link inittabColonAction inittabColon hi def link inittabColonRunLevels inittabColon hi def link inittabColon PreProc hi def link inittabShString String hi def link inittabShOption Special hi def link inittabShCommand Statement let b:current_syntax = "inittab" if exists("b:current_syntax") finish endif syn match IPFComment /#.*$/ contains=ipfTodo syn keyword IPFTodo TODO XXX FIXME contained syn keyword IPFActionBlock block syn keyword IPFActionPass pass syn keyword IPFProto tcp udp icmp syn keyword IPFSpecial quick log first syn match IPFSpecial /return-rst/ syn match IPFSpecial /dup-to/ syn keyword IPFAny all any syn match IPFIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match IPFNetmask /\/\d\+/ syn keyword IPFService auth bgp domain finger ftp http https ident syn keyword IPFService imap irc isakmp kerberos mail nameserver nfs syn keyword IPFService nntp ntp pop3 portmap pptp rpcbind rsync smtp syn keyword IPFService snmp snmptrap socks ssh sunrpc syslog telnet syn keyword IPFService tftp www hi def link IPFComment Comment hi def link IPFTodo Todo hi def link IPFService Constant hi def link IPFAction Type hi def link ipfActionBlock String hi def link ipfActionPass Type hi def link IPFSpecial Statement hi def link IPFIPv4 Label hi def link IPFNetmask String hi def link IPFAny Statement hi def link IPFProto Identifier if exists("b:current_syntax") finish endif syn keyword ishdStatement abort begin case default downto else end syn keyword ishdStatement endif endfor endwhile endswitch endprogram exit elseif syn keyword ishdStatement error for function goto if syn keyword ishdStatement program prototype return repeat string step switch syn keyword ishdStatement struct then to typedef until while syn keyword ishdType BOOL BYREF CHAR GDI HWND INT KERNEL LIST LONG syn keyword ishdType NUMBER POINTER SHORT STRING USER syn keyword ishdConstant _MAX_LENGTH _MAX_STRING syn keyword ishdConstant AFTER ALLCONTENTS ALLCONTROLS APPEND ASKDESTPATH syn keyword ishdConstant ASKOPTIONS ASKPATH ASKTEXT BATCH_INSTALL BACK syn keyword ishdConstant BACKBUTTON BACKGROUND BACKGROUNDCAPTION BADPATH syn keyword ishdConstant BADTAGFILE BASEMEMORY BEFORE BILLBOARD BINARY syn keyword ishdConstant BITMAP256COLORS BITMAPFADE BITMAPICON BK_BLUE BK_GREEN syn keyword ishdConstant BK_MAGENTA BK_MAGENTA1 BK_ORANGE BK_PINK BK_RED syn keyword ishdConstant BK_SMOOTH BK_SOLIDBLACK BK_SOLIDBLUE BK_SOLIDGREEN syn keyword ishdConstant BK_SOLIDMAGENTA BK_SOLIDORANGE BK_SOLIDPINK BK_SOLIDRED syn keyword ishdConstant BK_SOLIDWHITE BK_SOLIDYELLOW BK_YELLOW BLACK BLUE syn keyword ishdConstant BOOTUPDRIVE BUTTON_CHECKED BUTTON_ENTER BUTTON_UNCHECKED syn keyword ishdConstant BUTTON_UNKNOWN CMDLINE COMMONFILES CANCEL CANCELBUTTON syn keyword ishdConstant CC_ERR_FILEFORMATERROR CC_ERR_FILEREADERROR syn keyword ishdConstant CC_ERR_NOCOMPONENTLIST CC_ERR_OUTOFMEMORY CDROM syn keyword ishdConstant CDROM_DRIVE CENTERED CHANGEDIR CHECKBOX CHECKBOX95 syn keyword ishdConstant CHECKLINE CHECKMARK CMD_CLOSE CMD_MAXIMIZE CMD_MINIMIZE syn keyword ishdConstant CMD_PUSHDOWN CMD_RESTORE COLORMODE256 COLORS syn keyword ishdConstant COMBOBOX_ENTER COMBOBOX_SELECT COMMAND COMMANDEX syn keyword ishdConstant COMMON COMP_DONE COMP_ERR_CREATEDIR syn keyword ishdConstant COMP_ERR_DESTCONFLICT COMP_ERR_FILENOTINLIB syn keyword ishdConstant COMP_ERR_FILESIZE COMP_ERR_FILETOOLARGE syn keyword ishdConstant COMP_ERR_HEADER COMP_ERR_INCOMPATIBLE syn keyword ishdConstant COMP_ERR_INTPUTNOTCOMPRESSED COMP_ERR_INVALIDLIST syn keyword ishdConstant COMP_ERR_LAUNCHSERVER COMP_ERR_MEMORY syn keyword ishdConstant COMP_ERR_NODISKSPACE COMP_ERR_OPENINPUT syn keyword ishdConstant COMP_ERR_OPENOUTPUT COMP_ERR_OPTIONS syn keyword ishdConstant COMP_ERR_OUTPUTNOTCOMPRESSED COMP_ERR_SPLIT syn keyword ishdConstant COMP_ERR_TARGET COMP_ERR_TARGETREADONLY COMP_ERR_WRITE syn keyword ishdConstant COMP_INFO_ATTRIBUTE COMP_INFO_COMPSIZE COMP_INFO_DATE syn keyword ishdConstant COMP_INFO_INVALIDATEPASSWORD COMP_INFO_ORIGSIZE syn keyword ishdConstant COMP_INFO_SETPASSWORD COMP_INFO_TIME syn keyword ishdConstant COMP_INFO_VERSIONLS COMP_INFO_VERSIONMS COMP_NORMAL syn keyword ishdConstant COMP_UPDATE_DATE COMP_UPDATE_DATE_NEWER syn keyword ishdConstant COMP_UPDATE_SAME COMP_UPDATE_VERSION COMPACT syn keyword ishdConstant COMPARE_DATE COMPARE_SIZE COMPARE_VERSION syn keyword ishdConstant COMPONENT_FIELD_CDROM_FOLDER syn keyword ishdConstant COMPONENT_FIELD_DESCRIPTION COMPONENT_FIELD_DESTINATION syn keyword ishdConstant COMPONENT_FIELD_DISPLAYNAME COMPONENT_FIELD_FILENEED syn keyword ishdConstant COMPONENT_FIELD_FTPLOCATION syn keyword ishdConstant COMPONENT_FIELD_HTTPLOCATION COMPONENT_FIELD_MISC syn keyword ishdConstant COMPONENT_FIELD_OVERWRITE COMPONENT_FIELD_PASSWORD syn keyword ishdConstant COMPONENT_FIELD_SELECTED COMPONENT_FIELD_SIZE syn keyword ishdConstant COMPONENT_FIELD_STATUS COMPONENT_FIELD_VISIBLE syn keyword ishdConstant COMPONENT_FILEINFO_COMPRESSED syn keyword ishdConstant COMPONENT_FILEINFO_COMPRESSENGINE syn keyword ishdConstant COMPONENT_FILEINFO_LANGUAGECOMPONENT_FILEINFO_OS syn keyword ishdConstant COMPONENT_FILEINFO_POTENTIALLYLOCKED syn keyword ishdConstant COMPONENT_FILEINFO_SELFREGISTERING syn keyword ishdConstant COMPONENT_FILEINFO_SHARED COMPONENT_INFO_ATTRIBUTE syn keyword ishdConstant COMPONENT_INFO_COMPSIZE COMPONENT_INFO_DATE syn keyword ishdConstant COMPONENT_INFO_DATE_EX_EX COMPONENT_INFO_LANGUAGE syn keyword ishdConstant COMPONENT_INFO_ORIGSIZE COMPONENT_INFO_OS syn keyword ishdConstant COMPONENT_INFO_TIME COMPONENT_INFO_VERSIONLS syn keyword ishdConstant COMPONENT_INFO_VERSIONMS COMPONENT_INFO_VERSIONSTR syn keyword ishdConstant COMPONENT_VALUE_ALWAYSOVERWRITE syn keyword ishdConstant COMPONENT_VALUE_CRITICAL syn keyword ishdConstant COMPONENT_VALUE_HIGHLYRECOMMENDED syn keyword ishdConstant COMPONENT_FILEINFO_LANGUAGE COMPONENT_FILEINFO_OS syn keyword ishdConstant COMPONENT_VALUE_NEVEROVERWRITE syn keyword ishdConstant COMPONENT_VALUE_NEWERDATE COMPONENT_VALUE_NEWERVERSION syn keyword ishdConstant COMPONENT_VALUE_OLDERDATE COMPONENT_VALUE_OLDERVERSION syn keyword ishdConstant COMPONENT_VALUE_SAMEORNEWDATE syn keyword ishdConstant COMPONENT_VALUE_SAMEORNEWERVERSION syn keyword ishdConstant COMPONENT_VALUE_STANDARD COMPONENT_VIEW_CHANGE syn keyword ishdConstant COMPONENT_INFO_DATE_EX COMPONENT_VIEW_CHILDVIEW syn keyword ishdConstant COMPONENT_VIEW_COMPONENT COMPONENT_VIEW_DESCRIPTION syn keyword ishdConstant COMPONENT_VIEW_MEDIA COMPONENT_VIEW_PARENTVIEW syn keyword ishdConstant COMPONENT_VIEW_SIZEAVAIL COMPONENT_VIEW_SIZETOTAL syn keyword ishdConstant COMPONENT_VIEW_TARGETLOCATION COMPRESSHIGH COMPRESSLOW syn keyword ishdConstant COMPRESSMED COMPRESSNONE CONTIGUOUS CONTINUE syn keyword ishdConstant COPY_ERR_CREATEDIR COPY_ERR_NODISKSPACE syn keyword ishdConstant COPY_ERR_OPENINPUT COPY_ERR_OPENOUTPUT syn keyword ishdConstant COPY_ERR_TARGETREADONLY COPY_ERR_MEMORY syn keyword ishdConstant CORECOMPONENTHANDLING CPU CUSTOM DATA_COMPONENT syn keyword ishdConstant DATA_LIST DATA_NUMBER DATA_STRING DATE DEFAULT syn keyword ishdConstant DEFWINDOWMODE DELETE_EOF DIALOG DIALOGCACHE syn keyword ishdConstant DIALOGTHINFONT DIR_WRITEABLE DIRECTORY DISABLE DISK syn keyword ishdConstant DISK_FREESPACE DISK_TOTALSPACE DISKID DLG_ASK_OPTIONS syn keyword ishdConstant DLG_ASK_PATH DLG_ASK_TEXT DLG_ASK_YESNO DLG_CANCEL syn keyword ishdConstant DLG_CDIR DLG_CDIR_MSG DLG_CENTERED DLG_CLOSE syn keyword ishdConstant DLG_DIR_DIRECTORY DLG_DIR_FILE DLG_ENTER_DISK DLG_ERR syn keyword ishdConstant DLG_ERR_ALREADY_EXISTS DLG_ERR_ENDDLG DLG_INFO_ALTIMAGE syn keyword ishdConstant DLG_INFO_CHECKMETHOD DLG_INFO_CHECKSELECTION syn keyword ishdConstant DLG_INFO_ENABLEIMAGE DLG_INFO_KUNITS syn keyword ishdConstant DLG_INFO_USEDECIMAL DLG_INIT DLG_MSG_ALL syn keyword ishdConstant DLG_MSG_INFORMATION DLG_MSG_NOT_HAND DLG_MSG_SEVERE syn keyword ishdConstant DLG_MSG_STANDARD DLG_MSG_WARNING DLG_OK DLG_STATUS syn keyword ishdConstant DLG_USER_CAPTION DRIVE DRIVEOPEN DLG_DIR_DRIVE syn keyword ishdConstant EDITBOX_CHANGE EFF_BOXSTRIPE EFF_FADE EFF_HORZREVEAL syn keyword ishdConstant EFF_HORZSTRIPE EFF_NONE EFF_REVEAL EFF_VERTSTRIPE syn keyword ishdConstant ENABLE END_OF_FILE END_OF_LIST ENHANCED ENTERDISK syn keyword ishdConstant ENTERDISK_ERRMSG ENTERDISKBEEP ENVSPACE EQUALS syn keyword ishdConstant ERR_BADPATH ERR_BADTAGFILE ERR_BOX_BADPATH syn keyword ishdConstant ERR_BOX_BADTAGFILE ERR_BOX_DISKID ERR_BOX_DRIVEOPEN syn keyword ishdConstant ERR_BOX_EXIT ERR_BOX_HELP ERR_BOX_NOSPACE ERR_BOX_PAUSE syn keyword ishdConstant ERR_BOX_READONLY ERR_DISKID ERR_DRIVEOPEN syn keyword ishdConstant EXCLUDE_SUBDIR EXCLUSIVE EXISTS EXIT EXTENDEDMEMORY syn keyword ishdConstant EXTENSION_ONLY ERRORFILENAME FADE_IN FADE_OUT syn keyword ishdConstant FAILIFEXISTS FALSE FDRIVE_NUM FEEDBACK FEEDBACK_FULL syn keyword ishdConstant FEEDBACK_OPERATION FEEDBACK_SPACE FILE_ATTR_ARCHIVED syn keyword ishdConstant FILE_ATTR_DIRECTORY FILE_ATTR_HIDDEN FILE_ATTR_NORMAL syn keyword ishdConstant FILE_ATTR_READONLY FILE_ATTR_SYSTEM FILE_ATTRIBUTE syn keyword ishdConstant FILE_BIN_CUR FILE_BIN_END FILE_BIN_START FILE_DATE syn keyword ishdConstant FILE_EXISTS FILE_INSTALLED FILE_INVALID FILE_IS_LOCKED syn keyword ishdConstant FILE_LINE_LENGTH FILE_LOCKED FILE_MODE_APPEND syn keyword ishdConstant FILE_MODE_BINARY FILE_MODE_BINARYREADONLY syn keyword ishdConstant FILE_MODE_NORMAL FILE_NO_VERSION FILE_NOT_FOUND syn keyword ishdConstant FILE_RD_ONLY FILE_SIZE FILE_SRC_EQUAL FILE_SRC_OLD syn keyword ishdConstant FILE_TIME FILE_WRITEABLE FILENAME FILENAME_ONLY syn keyword ishdConstant FINISHBUTTON FIXED_DRIVE FONT_TITLE FREEENVSPACE syn keyword ishdConstant FS_CREATEDIR FS_DISKONEREQUIRED FS_DONE FS_FILENOTINLIB syn keyword ishdConstant FS_GENERROR FS_INCORRECTDISK FS_LAUNCHPROCESS syn keyword ishdConstant FS_OPERROR FS_OUTOFSPACE FS_PACKAGING FS_RESETREQUIRED syn keyword ishdConstant FS_TARGETREADONLY FS_TONEXTDISK FULL FULLSCREEN syn keyword ishdConstant FULLSCREENSIZE FULLWINDOWMODE FOLDER_DESKTOP syn keyword ishdConstant FOLDER_PROGRAMS FOLDER_STARTMENU FOLDER_STARTUP syn keyword ishdConstant GREATER_THAN GREEN HELP HKEY_CLASSES_ROOT syn keyword ishdConstant HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_DYN_DATA syn keyword ishdConstant HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA HKEY_USERS syn keyword ishdConstant HOURGLASS HWND_DESKTOP HWND_INSTALL IGNORE_READONLY syn keyword ishdConstant INCLUDE_SUBDIR INDVFILESTATUS INFO INFO_DESCRIPTION syn keyword ishdConstant INFO_IMAGE INFO_MISC INFO_SIZE INFO_SUBCOMPONENT syn keyword ishdConstant INFO_VISIBLE INFORMATION INVALID_LIST IS_186 IS_286 syn keyword ishdConstant IS_386 IS_486 IS_8514A IS_86 IS_ALPHA IS_CDROM IS_CGA syn keyword ishdConstant IS_DOS IS_EGA IS_FIXED IS_FOLDER IS_ITEM ISLANG_ALL syn keyword ishdConstant ISLANG_ARABIC ISLANG_ARABIC_SAUDIARABIA syn keyword ishdConstant ISLANG_ARABIC_IRAQ ISLANG_ARABIC_EGYPT syn keyword ishdConstant ISLANG_ARABIC_LIBYA ISLANG_ARABIC_ALGERIA syn keyword ishdConstant ISLANG_ARABIC_MOROCCO ISLANG_ARABIC_TUNISIA syn keyword ishdConstant ISLANG_ARABIC_OMAN ISLANG_ARABIC_YEMEN syn keyword ishdConstant ISLANG_ARABIC_SYRIA ISLANG_ARABIC_JORDAN syn keyword ishdConstant ISLANG_ARABIC_LEBANON ISLANG_ARABIC_KUWAIT syn keyword ishdConstant ISLANG_ARABIC_UAE ISLANG_ARABIC_BAHRAIN syn keyword ishdConstant ISLANG_ARABIC_QATAR ISLANG_AFRIKAANS syn keyword ishdConstant ISLANG_AFRIKAANS_STANDARD ISLANG_ALBANIAN syn keyword ishdConstant ISLANG_ENGLISH_TRINIDAD ISLANG_ALBANIAN_STANDARD syn keyword ishdConstant ISLANG_BASQUE ISLANG_BASQUE_STANDARD ISLANG_BULGARIAN syn keyword ishdConstant ISLANG_BULGARIAN_STANDARD ISLANG_BELARUSIAN syn keyword ishdConstant ISLANG_BELARUSIAN_STANDARD ISLANG_CATALAN syn keyword ishdConstant ISLANG_CATALAN_STANDARD ISLANG_CHINESE syn keyword ishdConstant ISLANG_CHINESE_TAIWAN ISLANG_CHINESE_PRC syn keyword ishdConstant ISLANG_SPANISH_PUERTORICO ISLANG_CHINESE_HONGKONG syn keyword ishdConstant ISLANG_CHINESE_SINGAPORE ISLANG_CROATIAN syn keyword ishdConstant ISLANG_CROATIAN_STANDARD ISLANG_CZECH syn keyword ishdConstant ISLANG_CZECH_STANDARD ISLANG_DANISH syn keyword ishdConstant ISLANG_DANISH_STANDARD ISLANG_DUTCH syn keyword ishdConstant ISLANG_DUTCH_STANDARD ISLANG_DUTCH_BELGIAN syn keyword ishdConstant ISLANG_ENGLISH ISLANG_ENGLISH_BELIZE syn keyword ishdConstant ISLANG_ENGLISH_UNITEDSTATES syn keyword ishdConstant ISLANG_ENGLISH_UNITEDKINGDOM ISLANG_ENGLISH_AUSTRALIAN syn keyword ishdConstant ISLANG_ENGLISH_CANADIAN ISLANG_ENGLISH_NEWZEALAND syn keyword ishdConstant ISLANG_ENGLISH_IRELAND ISLANG_ENGLISH_SOUTHAFRICA syn keyword ishdConstant ISLANG_ENGLISH_JAMAICA ISLANG_ENGLISH_CARIBBEAN syn keyword ishdConstant ISLANG_ESTONIAN ISLANG_ESTONIAN_STANDARD syn keyword ishdConstant ISLANG_FAEROESE ISLANG_FAEROESE_STANDARD ISLANG_FARSI syn keyword ishdConstant ISLANG_FINNISH ISLANG_FINNISH_STANDARD ISLANG_FRENCH syn keyword ishdConstant ISLANG_FRENCH_STANDARD ISLANG_FRENCH_BELGIAN syn keyword ishdConstant ISLANG_FRENCH_CANADIAN ISLANG_FRENCH_SWISS syn keyword ishdConstant ISLANG_FRENCH_LUXEMBOURG ISLANG_FARSI_STANDARD syn keyword ishdConstant ISLANG_GERMAN ISLANG_GERMAN_STANDARD syn keyword ishdConstant ISLANG_GERMAN_SWISS ISLANG_GERMAN_AUSTRIAN syn keyword ishdConstant ISLANG_GERMAN_LUXEMBOURG ISLANG_GERMAN_LIECHTENSTEIN syn keyword ishdConstant ISLANG_GREEK ISLANG_GREEK_STANDARD ISLANG_HEBREW syn keyword ishdConstant ISLANG_HEBREW_STANDARD ISLANG_HUNGARIAN syn keyword ishdConstant ISLANG_HUNGARIAN_STANDARD ISLANG_ICELANDIC syn keyword ishdConstant ISLANG_ICELANDIC_STANDARD ISLANG_INDONESIAN syn keyword ishdConstant ISLANG_INDONESIAN_STANDARD ISLANG_ITALIAN syn keyword ishdConstant ISLANG_ITALIAN_STANDARD ISLANG_ITALIAN_SWISS syn keyword ishdConstant ISLANG_JAPANESE ISLANG_JAPANESE_STANDARD ISLANG_KOREAN syn keyword ishdConstant ISLANG_KOREAN_STANDARD ISLANG_KOREAN_JOHAB syn keyword ishdConstant ISLANG_LATVIAN ISLANG_LATVIAN_STANDARD syn keyword ishdConstant ISLANG_LITHUANIAN ISLANG_LITHUANIAN_STANDARD syn keyword ishdConstant ISLANG_NORWEGIAN ISLANG_NORWEGIAN_BOKMAL syn keyword ishdConstant ISLANG_NORWEGIAN_NYNORSK ISLANG_POLISH syn keyword ishdConstant ISLANG_POLISH_STANDARD ISLANG_PORTUGUESE syn keyword ishdConstant ISLANG_PORTUGUESE_BRAZILIAN ISLANG_PORTUGUESE_STANDARD syn keyword ishdConstant ISLANG_ROMANIAN ISLANG_ROMANIAN_STANDARD ISLANG_RUSSIAN syn keyword ishdConstant ISLANG_RUSSIAN_STANDARD ISLANG_SLOVAK syn keyword ishdConstant ISLANG_SLOVAK_STANDARD ISLANG_SLOVENIAN syn keyword ishdConstant ISLANG_SLOVENIAN_STANDARD ISLANG_SERBIAN syn keyword ishdConstant ISLANG_SERBIAN_LATIN ISLANG_SERBIAN_CYRILLIC syn keyword ishdConstant ISLANG_SPANISH ISLANG_SPANISH_ARGENTINA syn keyword ishdConstant ISLANG_SPANISH_BOLIVIA ISLANG_SPANISH_CHILE syn keyword ishdConstant ISLANG_SPANISH_COLOMBIA ISLANG_SPANISH_COSTARICA syn keyword ishdConstant ISLANG_SPANISH_DOMINICANREPUBLIC ISLANG_SPANISH_ECUADOR syn keyword ishdConstant ISLANG_SPANISH_ELSALVADOR ISLANG_SPANISH_GUATEMALA syn keyword ishdConstant ISLANG_SPANISH_HONDURAS ISLANG_SPANISH_MEXICAN syn keyword ishdConstant ISLANG_THAI_STANDARD ISLANG_SPANISH_MODERNSORT syn keyword ishdConstant ISLANG_SPANISH_NICARAGUA ISLANG_SPANISH_PANAMA syn keyword ishdConstant ISLANG_SPANISH_PARAGUAY ISLANG_SPANISH_PERU syn keyword ishdConstant IISLANG_SPANISH_PUERTORICO syn keyword ishdConstant ISLANG_SPANISH_TRADITIONALSORT ISLANG_SPANISH_VENEZUELA syn keyword ishdConstant ISLANG_SPANISH_URUGUAY ISLANG_SWEDISH syn keyword ishdConstant ISLANG_SWEDISH_FINLAND ISLANG_SWEDISH_STANDARD syn keyword ishdConstant ISLANG_THAI ISLANG_THA_STANDARDI ISLANG_TURKISH syn keyword ishdConstant ISLANG_TURKISH_STANDARD ISLANG_UKRAINIAN syn keyword ishdConstant ISLANG_UKRAINIAN_STANDARD ISLANG_VIETNAMESE syn keyword ishdConstant ISLANG_VIETNAMESE_STANDARD IS_MIPS IS_MONO IS_OS2 syn keyword ishdConstant ISOSL_ALL ISOSL_WIN31 ISOSL_WIN95 ISOSL_NT351 syn keyword ishdConstant ISOSL_NT351_ALPHA ISOSL_NT351_MIPS ISOSL_NT351_PPC syn keyword ishdConstant ISOSL_NT40 ISOSL_NT40_ALPHA ISOSL_NT40_MIPS syn keyword ishdConstant ISOSL_NT40_PPC IS_PENTIUM IS_POWERPC IS_RAMDRIVE syn keyword ishdConstant IS_REMOTE IS_REMOVABLE IS_SVGA IS_UNKNOWN IS_UVGA syn keyword ishdConstant IS_VALID_PATH IS_VGA IS_WIN32S IS_WINDOWS IS_WINDOWS95 syn keyword ishdConstant IS_WINDOWSNT IS_WINOS2 IS_XVGA ISTYPE INFOFILENAME syn keyword ishdConstant ISRES ISUSER ISVERSION LANGUAGE LANGUAGE_DRV LESS_THAN syn keyword ishdConstant LINE_NUMBER LISTBOX_ENTER LISTBOX_SELECT LISTFIRST syn keyword ishdConstant LISTLAST LISTNEXT LISTPREV LOCKEDFILE LOGGING syn keyword ishdConstant LOWER_LEFT LOWER_RIGHT LIST_NULL MAGENTA MAINCAPTION syn keyword ishdConstant MATH_COPROCESSOR MAX_STRING MENU METAFILE MMEDIA_AVI syn keyword ishdConstant MMEDIA_MIDI MMEDIA_PLAYASYNCH MMEDIA_PLAYCONTINUOUS syn keyword ishdConstant MMEDIA_PLAYSYNCH MMEDIA_STOP MMEDIA_WAVE MOUSE syn keyword ishdConstant MOUSE_DRV MEDIA MODE NETWORK NETWORK_DRV NEXT syn keyword ishdConstant NEXTBUTTON NO NO_SUBDIR NO_WRITE_ACCESS NONCONTIGUOUS syn keyword ishdConstant NONEXCLUSIVE NORMAL NORMALMODE NOSET NOTEXISTS NOTRESET syn keyword ishdConstant NOWAIT NULL NUMBERLIST OFF OK ON ONLYDIR OS OSMAJOR syn keyword ishdConstant OSMINOR OTHER_FAILURE OUT_OF_DISK_SPACE PARALLEL syn keyword ishdConstant PARTIAL PATH PATH_EXISTS PAUSE PERSONAL PROFSTRING syn keyword ishdConstant PROGMAN PROGRAMFILES RAM_DRIVE REAL RECORDMODE RED syn keyword ishdConstant REGDB_APPPATH REGDB_APPPATH_DEFAULT REGDB_BINARY syn keyword ishdConstant REGDB_ERR_CONNECTIONEXISTS REGDB_ERR_CORRUPTEDREGISTRY syn keyword ishdConstant REGDB_ERR_FILECLOSE REGDB_ERR_FILENOTFOUND syn keyword ishdConstant REGDB_ERR_FILEOPEN REGDB_ERR_FILEREAD syn keyword ishdConstant REGDB_ERR_INITIALIZATION REGDB_ERR_INVALIDFORMAT syn keyword ishdConstant REGDB_ERR_INVALIDHANDLE REGDB_ERR_INVALIDNAME syn keyword ishdConstant REGDB_ERR_INVALIDPLATFORM REGDB_ERR_OUTOFMEMORY syn keyword ishdConstant REGDB_ERR_REGISTRY REGDB_KEYS REGDB_NAMES REGDB_NUMBER syn keyword ishdConstant REGDB_STRING REGDB_STRING_EXPAND REGDB_STRING_MULTI syn keyword ishdConstant REGDB_UNINSTALL_NAME REGKEY_CLASSES_ROOT syn keyword ishdConstant REGKEY_CURRENT_USER REGKEY_LOCAL_MACHINE REGKEY_USERS syn keyword ishdConstant REMOTE_DRIVE REMOVE REMOVEABLE_DRIVE REPLACE syn keyword ishdConstant REPLACE_ITEM RESET RESTART ROOT ROTATE RUN_MAXIMIZED syn keyword ishdConstant RUN_MINIMIZED RUN_SEPARATEMEMORY SELECTFOLDER syn keyword ishdConstant SELFREGISTER SELFREGISTERBATCH SELFREGISTRATIONPROCESS syn keyword ishdConstant SERIAL SET SETUPTYPE SETUPTYPE_INFO_DESCRIPTION syn keyword ishdConstant SETUPTYPE_INFO_DISPLAYNAME SEVERE SHARE SHAREDFILE syn keyword ishdConstant SHELL_OBJECT_FOLDER SILENTMODE SPLITCOMPRESS SPLITCOPY syn keyword ishdConstant SRCTARGETDIR STANDARD STATUS STATUS95 STATUSBAR syn keyword ishdConstant STATUSDLG STATUSEX STATUSOLD STRINGLIST STYLE_BOLD syn keyword ishdConstant STYLE_ITALIC STYLE_NORMAL STYLE_SHADOW STYLE_UNDERLINE syn keyword ishdConstant SW_HIDE SW_MAXIMIZE SW_MINIMIZE SW_NORMAL SW_RESTORE syn keyword ishdConstant SW_SHOW SW_SHOWMAXIMIZED SW_SHOWMINIMIZED syn keyword ishdConstant SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE syn keyword ishdConstant SW_SHOWNORMAL SYS_BOOTMACHINE SYS_BOOTWIN syn keyword ishdConstant SYS_BOOTWIN_INSTALL SYS_RESTART SYS_SHUTDOWN SYS_TODOS syn keyword ishdConstant SELECTED_LANGUAGE SHELL_OBJECT_LANGUAGE SRCDIR SRCDISK syn keyword ishdConstant SUPPORTDIR TEXT TILED TIME TRUE TYPICAL TARGETDIR syn keyword ishdConstant TARGETDISK UPPER_LEFT UPPER_RIGHT USER_ADMINISTRATOR syn keyword ishdConstant UNINST VALID_PATH VARIABLE_LEFT VARIABLE_UNDEFINED syn keyword ishdConstant VER_DLL_NOT_FOUND VER_UPDATE_ALWAYS VER_UPDATE_COND syn keyword ishdConstant VERSION VIDEO VOLUMELABEL WAIT WARNING WELCOME WHITE syn keyword ishdConstant WIN32SINSTALLED WIN32SMAJOR WIN32SMINOR WINDOWS_SHARED syn keyword ishdConstant WINMAJOR WINMINOR WINDIR WINDISK WINSYSDIR WINSYSDISK syn keyword ishdConstant XCOPY_DATETIME YELLOW YES syn keyword ishdFunction AskDestPath AskOptions AskPath AskText AskYesNo syn keyword ishdFunction AppCommand AddProfString AddFolderIcon BatchAdd syn keyword ishdFunction BatchDeleteEx BatchFileLoad BatchFileSave BatchFind syn keyword ishdFunction BatchGetFileName BatchMoveEx BatchSetFileName syn keyword ishdFunction ComponentDialog ComponentAddItem syn keyword ishdFunction ComponentCompareSizeRequired ComponentDialog syn keyword ishdFunction ComponentError ComponentFileEnum ComponentFileInfo syn keyword ishdFunction ComponentFilterLanguage ComponentFilterOS syn keyword ishdFunction ComponentGetData ComponentGetItemSize syn keyword ishdFunction ComponentInitialize ComponentIsItemSelected syn keyword ishdFunction ComponentListItems ComponentMoveData syn keyword ishdFunction ComponentSelectItem ComponentSetData ComponentSetTarget syn keyword ishdFunction ComponentSetupTypeEnum ComponentSetupTypeGetData syn keyword ishdFunction ComponentSetupTypeSet ComponentTotalSize syn keyword ishdFunction ComponentValidate ConfigAdd ConfigDelete ConfigFileLoad syn keyword ishdFunction ConfigFileSave ConfigFind ConfigGetFileName syn keyword ishdFunction ConfigGetInt ConfigMove ConfigSetFileName ConfigSetInt syn keyword ishdFunction CmdGetHwndDlg CtrlClear CtrlDir CtrlGetCurSel syn keyword ishdFunction CtrlGetMLEText CtrlGetMultCurSel CtrlGetState syn keyword ishdFunction CtrlGetSubCommand CtrlGetText CtrlPGroups syn keyword ishdFunction CtrlSelectText CtrlSetCurSel CtrlSetFont CtrlSetList syn keyword ishdFunction CtrlSetMLEText CtrlSetMultCurSel CtrlSetState syn keyword ishdFunction CtrlSetText CallDLLFx ChangeDirectory CloseFile syn keyword ishdFunction CopyFile CreateDir CreateFile CreateRegistrySet syn keyword ishdFunction CommitSharedFiles CreateProgramFolder syn keyword ishdFunction CreateShellObjects CopyBytes DefineDialog Delay syn keyword ishdFunction DeleteDir DeleteFile Do DoInstall DeinstallSetReference syn keyword ishdFunction DeinstallStart DialogSetInfo DeleteFolderIcon syn keyword ishdFunction DeleteProgramFolder Disable EzBatchAddPath syn keyword ishdFunction EzBatchAddString ExBatchReplace EnterDisk syn keyword ishdFunction EzConfigAddDriver EzConfigAddString EzConfigGetValue syn keyword ishdFunction EzConfigSetValue EndDialog EzDefineDialog ExistsDir syn keyword ishdFunction ExistsDisk ExitProgMan Enable EzBatchReplace syn keyword ishdFunction FileCompare FileDeleteLine FileGrep FileInsertLine syn keyword ishdFunction FindAllDirs FindAllFiles FindFile FindWindow syn keyword ishdFunction GetFileInfo GetLine GetFont GetDiskSpace GetEnvVar syn keyword ishdFunction GetExtents GetMemFree GetMode GetSystemInfo syn keyword ishdFunction GetValidDrivesList GetWindowHandle GetProfInt syn keyword ishdFunction GetProfString GetFolderNameList GetGroupNameList syn keyword ishdFunction GetItemNameList GetDir GetDisk HIWORD Handler Is syn keyword ishdFunction ISCompareServicePack InstallationInfo LOWORD LaunchApp syn keyword ishdFunction LaunchAppAndWait ListAddItem ListAddString ListCount syn keyword ishdFunction ListCreate ListCurrentItem ListCurrentString syn keyword ishdFunction ListDeleteItem ListDeleteString ListDestroy syn keyword ishdFunction ListFindItem ListFindString ListGetFirstItem syn keyword ishdFunction ListGetFirstString ListGetNextItem ListGetNextString syn keyword ishdFunction ListReadFromFile ListSetCurrentItem syn keyword ishdFunction ListSetCurrentString ListSetIndex ListWriteToFile syn keyword ishdFunction LongPathFromShortPath LongPathToQuote syn keyword ishdFunction LongPathToShortPath MessageBox MessageBeep NumToStr syn keyword ishdFunction OpenFile OpenFileMode PathAdd PathDelete PathFind syn keyword ishdFunction PathGet PathMove PathSet ProgDefGroupType ParsePath syn keyword ishdFunction PlaceBitmap PlaceWindow PlayMMedia QueryProgGroup syn keyword ishdFunction QueryProgItem QueryShellMgr RebootDialog ReleaseDialog syn keyword ishdFunction ReadBytes RenameFile ReplaceProfString ReloadProgGroup syn keyword ishdFunction ReplaceFolderIcon RGB RegDBConnectRegistry syn keyword ishdFunction RegDBCreateKeyEx RegDBDeleteKey RegDBDeleteValue syn keyword ishdFunction RegDBDisConnectRegistry RegDBGetAppInfo RegDBGetItem syn keyword ishdFunction RegDBGetKeyValueEx RegDBKeyExist RegDBQueryKey syn keyword ishdFunction RegDBSetAppInfo RegDBSetDefaultRoot RegDBSetItem syn keyword ishdFunction RegDBSetKeyValueEx SeekBytes SelectDir SetFileInfo syn keyword ishdFunction SelectDir SelectFolder SetupType SprintfBox SdSetupType syn keyword ishdFunction SdSetupTypeEx SdMakeName SilentReadData SilentWriteData syn keyword ishdFunction SendMessage Sprintf System SdAskDestPath SdAskOptions syn keyword ishdFunction SdAskOptionsList SdBitmap SdComponentDialog syn keyword ishdFunction SdComponentDialog2 SdComponentDialogAdv SdComponentMult syn keyword ishdFunction SdConfirmNewDir SdConfirmRegistration SdDisplayTopics syn keyword ishdFunction SdFinish SdFinishReboot SdInit SdLicense SdMakeName syn keyword ishdFunction SdOptionsButtons SdProductName SdRegisterUser syn keyword ishdFunction SdRegisterUserEx SdSelectFolder SdSetupType syn keyword ishdFunction SdSetupTypeEx SdShowAnyDialog SdShowDlgEdit1 syn keyword ishdFunction SdShowDlgEdit2 SdShowDlgEdit3 SdShowFileMods syn keyword ishdFunction SdShowInfoList SdShowMsg SdStartCopy SdWelcome syn keyword ishdFunction SelectFolder ShowGroup ShowProgamFolder SetColor syn keyword ishdFunction SetDialogTitle SetDisplayEffect SetErrorMsg syn keyword ishdFunction SetErrorTitle SetFont SetStatusWindow SetTitle syn keyword ishdFunction SizeWindow StatusUpdate StrCompare StrFind StrGetTokens syn keyword ishdFunction StrLength StrRemoveLastSlash StrSub StrToLower StrToNum syn keyword ishdFunction StrToUpper ShowProgramFolder UnUseDLL UseDLL VarRestore syn keyword ishdFunction VarSave VerUpdateFile VerCompare VerFindFileVersion syn keyword ishdFunction VerGetFileVersion VerSearchAndUpdateFile VerUpdateFile syn keyword ishdFunction Welcome WaitOnDialog WriteBytes WriteLine syn keyword ishdFunction WriteProfString XCopyFile syn keyword ishdTodo contained TODO syn match ishdNumber "\<\d\+\>" syn match ishdNumber "\<\d\+\.\d*\>" syn match ishdNumber "\.\d\+\>" syn region ishdString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region ishdComment start="//" end="$" contains=ishdTodo syn region ishdComment start="/\*" end="\*/" contains=ishdTodo syn region ishdPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ishdComment,ishdString if !exists("ishd_no_if0") syn region ishdHashIf0 start="^\s*#\s*if\s\+0\>" end=".\|$" contains=ishdHashIf0End syn region ishdHashIf0End contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=ishdHashIf0Skip syn region ishdHashIf0Skip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=ishdHashIf0Skip endif syn region ishdIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match ishdInclude +^\s*#\s*include\>\s*"+ contains=ishdIncluded syn cluster ishdPreProcGroup contains=ishdPreCondit,ishdIncluded,ishdInclude,ishdDefine,ishdHashIf0,ishdHashIf0End,ishdHashIf0Skip,ishdNumber syn region ishdDefine start="^\s*#\s*\(define\|undef\)\>" end="$" contains=ALLBUT,@ishdPreProcGroup hi def link ishdNumber Number hi def link ishdError Error hi def link ishdStatement Statement hi def link ishdString String hi def link ishdComment Comment hi def link ishdTodo Todo hi def link ishdFunction Identifier hi def link ishdConstant PreProc hi def link ishdType Type hi def link ishdInclude Include hi def link ishdDefine Macro hi def link ishdIncluded String hi def link ishdPreCondit PreCondit hi def link ishdHashIf0Skip ishdHashIf0 hi def link ishdHashIf0End ishdHashIf0 hi def link ishdHashIf0 Comment let b:current_syntax = "ishd" if exists("b:current_syntax") finish endif syn case ignore syn region issPreProc start="^\s*#" end="$" syn region issSection start="\[" end="\]" syn match issDirective "^[^=]\+=" syn match issURL "http[s]\=:\/\/.*$" syn match issParam "Name:" syn match issParam "MinVersion:\|OnlyBelowVersion:\|Languages:" syn match issParam "Source:\|DestDir:\|DestName:\|CopyMode:" syn match issParam "Attribs:\|Permissions:\|FontInstall:\|Flags:" syn match issParam "FileName:\|Parameters:\|WorkingDir:\|HotKey:\|Comment:" syn match issParam "IconFilename:\|IconIndex:" syn match issParam "Section:\|Key:\|String:" syn match issParam "Root:\|SubKey:\|ValueType:\|ValueName:\|ValueData:" syn match issParam "RunOnceId:" syn match issParam "Type:\|Excludes:" syn match issParam "Components:\|Description:\|GroupDescription:\|Types:\|ExtraDiskSpaceRequired:" syn match issParam "StatusMsg:\|RunOnceId:\|Tasks:" syn match issParam "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:" syn match issComment "^\s*;.*$" syn match issFolder "{[^{]*}" syn region issString start=+"+ end=+"+ contains=issFolder syn keyword issDirsFlags deleteafterinstall uninsalwaysuninstall uninsneveruninstall syn keyword issFilesCopyMode normal onlyifdoesntexist alwaysoverwrite alwaysskipifsameorolder dontcopy syn keyword issFilesAttribs readonly hidden system syn keyword issFilesPermissions full modify readexec syn keyword issFilesFlags allowunsafefiles comparetimestampalso confirmoverwrite deleteafterinstall syn keyword issFilesFlags dontcopy dontverifychecksum external fontisnttruetype ignoreversion syn keyword issFilesFlags isreadme onlyifdestfileexists onlyifdoesntexist overwritereadonly syn keyword issFilesFlags promptifolder recursesubdirs regserver regtypelib restartreplace syn keyword issFilesFlags sharedfile skipifsourcedoesntexist sortfilesbyextension touch syn keyword issFilesFlags uninsremovereadonly uninsrestartdelete uninsneveruninstall syn keyword issFilesFlags replacesameversion nocompression noencryption noregerror syn keyword issIconsFlags closeonexit createonlyiffileexists dontcloseonexit syn keyword issIconsFlags runmaximized runminimized uninsneveruninstall useapppaths syn keyword issINIFlags createkeyifdoesntexist uninsdeleteentry uninsdeletesection uninsdeletesectionifempty syn keyword issRegRootKey HKCR HKCU HKLM HKU HKCC syn keyword issRegValueType none string expandsz multisz dword binary syn keyword issRegFlags createvalueifdoesntexist deletekey deletevalue dontcreatekey syn keyword issRegFlags preservestringtype noerror uninsclearvalue syn keyword issRegFlags uninsdeletekey uninsdeletekeyifempty uninsdeletevalue syn keyword issRunFlags hidewizard nowait postinstall runhidden runmaximized syn keyword issRunFlags runminimized shellexec skipifdoesntexist skipifnotsilent syn keyword issRunFlags skipifsilent unchecked waituntilidle syn keyword issTypesFlags iscustom syn keyword issComponentsFlags dontinheritcheck exclusive fixed restart disablenouninstallwarning syn keyword issInstallDeleteType files filesandordirs dirifempty syn keyword issTasksFlags checkedonce dontinheritcheck exclusive restart unchecked hi def link issSection Special hi def link issComment Comment hi def link issDirective Type hi def link issParam Type hi def link issFolder Special hi def link issString String hi def link issURL Include hi def link issPreProc PreProc hi def link issDirsFlags Keyword hi def link issFilesCopyMode Keyword hi def link issFilesAttribs Keyword hi def link issFilesPermissions Keyword hi def link issFilesFlags Keyword hi def link issIconsFlags Keyword hi def link issINIFlags Keyword hi def link issRegRootKey Keyword hi def link issRegValueType Keyword hi def link issRegFlags Keyword hi def link issRunFlags Keyword hi def link issTypesFlags Keyword hi def link issComponentsFlags Keyword hi def link issInstallDeleteType Keyword hi def link issTasksFlags Keyword let b:current_syntax = "iss" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=$,@,48-57,_ syn case ignore syn keyword IstInpSpec actual arg_close arg_open encap escape syn keyword IstInpSpec keyword level quote range_close range_open syn keyword IstInpSpec page_compositor syn keyword IstOutSpec preamble postamble setpage_prefix setpage_suffix group_skip syn keyword IstOutSpec headings_flag heading_prefix heading_suffix syn keyword IstOutSpec lethead_flag lethead_prefix lethead_suffix syn keyword IstOutSpec symhead_positive symhead_negative numhead_positive numhead_negative syn keyword IstOutSpec item_0 item_1 item_2 item_01 syn keyword IstOutSpec item_x1 item_12 item_x2 syn keyword IstOutSpec delim_0 delim_1 delim_2 syn keyword IstOutSpec delim_n delim_r delim_t syn keyword IstOutSpec encap_prefix encap_infix encap_suffix syn keyword IstOutSpec line_max indent_space indent_length syn keyword IstOutSpec suffix_2p suffix_3p suffix_mp syn region IstString matchgroup=IstDoubleQuote start=+"+ skip=+\\"+ end=+"+ contains=IstSpecial syn match IstCharacter "'.'" syn match IstNumber "\d\+" syn match IstComment "^[\t ]*%.*$" contains=IstTodo syn match IstSpecial "\\\\\|{\|}\|#\|\\n" contained syn match IstTodo "DEBUG\|TODO" contained hi def link IstInpSpec Type hi def link IstOutSpec Identifier hi def link IstString String hi def link IstNumber Number hi def link IstComment Comment hi def link IstTodo Todo hi def link IstSpecial Special hi def link IstDoubleQuote Label hi def link IstCharacter Label let b:current_syntax = "ist" let &cpo = s:cpo_save unlet s:cpo_save if exists('b:current_syntax') finish endif let s:save_cpo = &cpo set cpo&vim syntax case match syntax sync minlines=100 syntax cluster jStdlibItems contains=jStdlibNoun,jStdlibAdverb,jStdlibConjunction,jStdlibVerb syntax cluster jPrimitiveItems contains=jNoun,jAdverb,jConjunction,jVerb,jCopula syntax match jControl /\<\%(assert\|break\|case\|catch[dt]\=\|continue\|do\|else\%(if\)\=\|end\|fcase\|for\|if\|return\|select\|throw\|try\|whil\%(e\|st\)\)\./ syntax match jControl /\<\%(for\|goto\|label\)_\a\k*\./ syntax keyword jStdlibNoun ARGV BINPATH CR CRLF DEL Debug EAV EMPTY FF FHS IF64 IFIOS IFJCDROID IFJHS IFQT IFRASPI IFUNIX IFWIN IFWINCE IFWINE IFWOW64 JB01 JBOXED JCHAR JCMPX JFL JINT JPTR JSIZES JSTR JTYPES JVERSION LF LF2 TAB UNAME UNXLIB dbhelp libjqt syntax keyword jStdlibAdverb define each every fapplylines inv inverse items leaf rows rxapply rxmerge table syntax keyword jStdlibConjunction bind cuts def on syntax keyword jStdlibVerb AND Endian IFDEF OR XOR anddf android_exec_am android_exec_host andunzip apply boxopen boxxopen bx calendar cd cdcb cder cderx cdf charsub chopstring cleartags clear coclass cocreate cocurrent codestroy coerase cofind cofindv cofullname coinfo coinsert compare coname conames conew conl conouns conounsx copath copathnl copathnlx coreset costate cut cutLF cutopen cutpara datatype dbctx dberm dberr dbg dbjmp dblocals dblxq dblxs dbnxt dbq dbr dbret dbrr dbrrx dbrun dbs dbsig dbsq dbss dbst dbstack dbstk dbstop dbstopme dbstopnext dbstops dbtrace dbview deb debc delstring detab dfh dir dircompare dircompares dirfind dirpath dirss dirssrplc dirtree dirused dlb dltb dltbs dquote drop dropafter dropto dtb dtbs echo empty endian erase evtloop exit expand f2utf8 fappend fappends fboxname fc fcompare fcompares fcopynew fdir ferase fetch fexist fexists fgets file2url fixdotdot fliprgb fmakex foldpara foldtext fpathcreate fpathname fputs fread freadblock freadr freads frename freplace fsize fss fssrplc fstamp fstringreplace ftype fview fwrite fwritenew fwrites getalpha getargs getdate getenv getqtbin hfd hostpathsep ic install iospath isatty isotimestamp isutf8 jcwdpath joinstring jpath jpathsep jsystemdefs launch list ljust load loadd loadtags mema memf memr memw nameclass namelist names nc nl pick quote require rjust rplc rxE rxall rxcomp rxcut rxeq rxerror rxfirst rxfree rxfrom rxhandles rxin rxindex rxinfo rxmatch rxmatches rxrplc rxutf8 script scriptd scripts setalpha setbreak shell show sign sminfo smoutput sort split splitnostring splitstring ss startupandroid startupconsole startupide stderr stdin stdout stringreplace symdat symget symset ta tagcp tagopen tagselect take takeafter taketo timespacex timestamp timex tmoutput toCRLF toHOST toJ todate todayno tolower topara toupper tsdiff tsrep tstamp type ucp ucpcount unxlib usleep utf8 uucp valdate wcsize weekday weeknumber weeksinyear winpathsep xedit syntax match jStdlibNoun /\<\%(adverb\|conjunction\|dyad\|monad\|noun\|verb\)\>/ syntax match jStdlibVerb /\<\%(Note\|\%(assert\|break\|do\)\.\@!\)\>/ syntax match jNumber /\<_\.[0-9A-Za-z_.]\@!/ syntax match jNumber /\<_\=\d\+x[0-9A-Za-z_.]\@!/ syntax match jNumber /\<\%(__\=r_\=\d\+\|_\=\d\+r__\=\)[0-9A-Za-z_.]\@!/ syntax match jNumber /\<\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\%(\%(j\|a[dr]\)\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\)\=\%([px]\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\%(\%(j\|a[dr]\)\%(\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\%(r\%(_\=\d\+\%(\.\d*\)\=\|_\.\d\+\|\.\d\+\)\%([eE]_\=\d\+\)\=\)\=\|__\=\)\)\=\)\=\%(b\%(_\=[0-9a-z]\+\%(\.[0-9a-z]*\)\=\|_\=\.[0-9a-z]\+\)\)\=[0-9A-Za-z_.]\@!/ syntax region jString oneline start=/'/ skip=/''/ end=/'/ syntax keyword jArgument contained x y u v m n syntax match jNoun /\+*\-%$|,#][.:]\=\|[~}"][.:]\|{\%[::]\|\<\%([ACeEiIjLor]\.\|p\.\.\=\|[ipqsux]:\|0:\|_\=[1-9]:\)/ syntax match jCopula /=[.:]/ syntax match jConjunction /;\.\|\^:\|![.:]/ syntax region jNounDefineFold \ matchgroup=NONE start=/\%(\%(\%(^\s*Note\)\|\<\%(0\|noun\)\s\+\%(\:\s*0\|def\s\+0\|define\)\)\>\)\@=/ \ keepend matchgroup=NONE end=/^\s*)\s*$/ \ contains=jNounDefineStart \ fold syntax region jNounDefineStart \ matchgroup=jDefineExpression start=/\%(\%(^\s*Note\)\|\<\%(0\|noun\)\s\+\%(\:\s*0\|def\s\+0\|define\)\)\>/ \ keepend matchgroup=NONE end=/$/ \ contains=@jStdlibItems,@jPrimitiveItems,jNumber,jString,jParenGroup,jParen,jComment \ contained oneline skipempty nextgroup=jDefineEnd,jNounDefine syntax region jNounDefine \ matchgroup=NONE start=/^/ \ matchgroup=jDefineEnd end=/^\s*)\s*$/ \ contained syntax match jDefineEnd contained /^\s*)\s*$/ syntax region jDefine \ matchgroup=jDefineExpression start=/\<\%([1-4]\|13\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\>/ \ matchgroup=jDefineEnd end=/^\s*)\s*$/ \ contains=jControl,@jStdlibItems,@jPrimitiveItems,jNumber,jString,jArgument,jParenGroup,jParen,jComment,jDefineMonadDyad \ fold syntax match jDefineMonadDyad contained /^\s*:\s*$/ syntax match jParen /(\%(\s*\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\s*)\)\@=/ syntax match jParen contained /\%((\s*\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\s*\)\@<=)/ syntax region jParenGroup \ matchgroup=jParen start=/(\%(\s*\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\>\)\@!/ \ matchgroup=jParen end=/)/ \ oneline transparent syntax keyword jTodo contained TODO FIXME XXX syntax match jComment /\" syn match jalSymbolOperator "[+\-/*=]" syn match jalSymbolOperator "!" syn match jalSymbolOperator "<" syn match jalSymbolOperator ">" syn match jalSymbolOperator "<=" syn match jalSymbolOperator ">=" syn match jalSymbolOperator "!=" syn match jalSymbolOperator "==" syn match jalSymbolOperator "<<" syn match jalSymbolOperator ">>" syn match jalSymbolOperator "|" syn match jalSymbolOperator "&" syn match jalSymbolOperator "%" syn match jalSymbolOperator "?" syn match jalSymbolOperator "[()]" syn match jalSymbolOperator "[\^.]" syn match jalLabel "[\^]*:" syn match jalNumber "-\=\<\d[0-9_]\+\>" syn match jalHexNumber "0x[0-9A-Fa-f_]\+\>" syn match jalBinNumber "0b[01_]\+\>" syn region jalStringError matchgroup=jalStringError start=+"+ end=+"+ end=+$+ contains=jalStringEscape syn region jalString matchgroup=jalString start=+'+ end=+'+ oneline contains=jalStringEscape syn region jalString matchgroup=jalString start=+"+ end=+"+ oneline contains=jalStringEscapeGPC syn keyword jalTodo contained TODO syn region jalComment start=/-- / end=/$/ oneline contains=jalTodo syn region jalComment start=/--\t/ end=/$/ oneline contains=jalTodo syn match jalComment /--\_$/ syn region jalPreProc start="include" end=/$/ contains=JalComment,jalToDo if exists("jal_no_tabs") syn match jalShowTab "\t" endif hi def link jalAcces jalStatement hi def link jalBoolean Boolean hi def link jalBit Boolean hi def link jalComment Comment hi def link jalConditional Conditional hi def link jalConstant Constant hi def link jalDelimiter Identifier hi def link jalDirective PreProc hi def link jalException Exception hi def link jalFloat Float hi def link jalFunction Function hi def link jalPsudoVarsKey Function hi def link jalLabel Label hi def link jalMatrixDelimiter Identifier hi def link jalModifier Type hi def link jalNumber Number hi def link jalBinNumber Number hi def link jalHexNumber Number hi def link jalOperator Operator hi def link jalPredefined Constant hi def link jalPreProc PreProc hi def link jalRepeat Repeat hi def link jalStatement Statement hi def link jalString String hi def link jalStringEscape Special hi def link jalStringEscapeGPC Special hi def link jalStringError Error hi def link jalStruct jalStatement hi def link jalSymbolOperator jalOperator hi def link jalTodo Todo hi def link jalType Type hi def link jalUnclassified Statement hi def link jalAsm Assembler hi def link jalError Error hi def link jalAsmKey Statement hi def link jalPIC Statement hi def link jalShowTab Error hi def link picTodo Todo hi def link picComment Comment hi def link picDirective Statement hi def link picLabel Label hi def link picString String hi def link picOpcode Keyword hi def link picRegister Structure hi def link picRegisterPart Special hi def link picPinDir SPecial hi def link picPortDir SPecial hi def link picASCII String hi def link picBinary Number hi def link picDecimal Number hi def link picHexadecimal Number hi def link picOctal Number hi def link picIdentifier Identifier let b:current_syntax = "jal" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=@,48-57,_,- syn keyword jamStatement break call dbms flush global include msg parms proc public receive return send unload vars syn keyword jamConditional if else syn keyword jamRepeat for while next step syn keyword jamTodo contained TODO FIXME XXX syn keyword jamDBState1 alias binary catquery close close_all_connections column_names connection continue continue_bottom continue_down continue_top continue_up syn keyword jamDBState2 cursor declare engine execute format occur onentry onerror onexit sql start store unique with syn keyword jamSQLState1 all alter and any avg between by count create current data database delete distinct drop exists fetch from grant group syn keyword jamSQLState2 having index insert into like load max min of open order revoke rollback runstats select set show stop sum synonym table to union update values view where bundle syn keyword jamLibFunc1 dm_bin_create_occur dm_bin_delete_occur dm_bin_get_dlength dm_bin_get_occur dm_bin_length dm_bin_max_occur dm_bin_set_dlength dm_convert_empty dm_cursor_connection dm_cursor_consistent dm_cursor_engine dm_dbi_init dm_dbms dm_dbms_noexp dm_disable_styles dm_enable_styles dm_exec_sql dm_expand dm_free_sql_info dm_gen_change_execute_using dm_gen_change_select_from dm_gen_change_select_group_by dm_gen_change_select_having dm_gen_change_select_list dm_gen_change_select_order_by dm_gen_change_select_suffix dm_gen_change_select_where dm_gen_get_tv_alias dm_gen_sql_info syn keyword jamLibFunc2 dm_get_db_conn_handle dm_get_db_cursor_handle dm_get_driver_option dm_getdbitext dm_init dm_is_connection dm_is_cursor dm_is_engine dm_odb_preserves_cursor dm_reset dm_set_driver_option dm_set_max_fetches dm_set_max_rows_per_fetch dm_set_tm_clear_fast dm_val_relative sm_adjust_area sm_allget sm_amt_format sm_e_amt_format sm_i_amt_format sm_n_amt_format sm_o_amt_format sm_append_bundle_data sm_append_bundle_done sm_append_bundle_item sm_d_at_cur sm_l_at_cur sm_r_at_cur sm_mw_attach_drawing_func sm_mwn_attach_drawing_func sm_mwe_attach_drawing_func sm_xm_attach_drawing_func sm_xmn_attach_drawing_func sm_xme_attach_drawing_func sm_backtab sm_bel sm_bi_comparesm_bi_copy sm_bi_initialize sm_bkrect sm_c_off sm_c_on sm_c_vis sm_calc sm_cancel sm_ckdigit sm_cl_all_mdts sm_cl_unprot sm_clear_array sm_n_clear_array sm_1clear_array sm_n_1clear_array sm_close_window sm_com_load_picture sm_com_QueryInterface sm_com_result sm_com_result_msg sm_com_set_handler sm_copyarray sm_n_copyarray sm_create_bundle syn keyword jamLibFunc3 sm_d_msg_line sm_dblval sm_e_dblval sm_i_dblval sm_n_dblval sm_o_dblval sm_dd_able sm_dde_client_connect_cold sm_dde_client_connect_hot sm_dde_client_connect_warm sm_dde_client_disconnect sm_dde_client_off sm_dde_client_on sm_dde_client_paste_link_cold sm_dde_client_paste_link_hot sm_dde_client_paste_link_warm sm_dde_client_request sm_dde_execute sm_dde_install_notify sm_dde_poke sm_dde_server_off sm_dde_server_on sm_delay_cursor sm_deselect sm_dicname sm_disp_off sm_dlength sm_e_dlength sm_i_dlength sm_n_dlength sm_o_dlength sm_do_uinstalls sm_i_doccur sm_o_doccur sm_drawingarea sm_xm_drawingarea sm_dtofield sm_e_dtofield sm_i_dtofield sm_n_dtofield sm_o_dtofield sm_femsg sm_ferr_reset sm_fi_path sm_file_copy sm_file_exists sm_file_move sm_file_remove sm_fi_open sm_fi_path sm_filebox sm_filetypes sm_fio_a2f sm_fio_close sm_fio_editor sm_fio_error sm_fio_error_set sm_fio_f2a sm_fio_getc sm_fio_gets sm_fio_handle sm_fio_open sm_fio_putc sm_fio_puts sm_fio_rewind sm_flush sm_d_form sm_l_form syn keyword jamLibFunc4 sm_r_form sm_formlist sm_fptr sm_e_fptr sm_i_fptr sm_n_fptr sm_o_fptr sm_fqui_msg sm_fquiet_err sm_free_bundle sm_ftog sm_e_ftog sm_i_ftog sm_n_ftog sm_o_ftog sm_fval sm_e_fval sm_i_fval sm_n_fval sm_o_fval sm_i_get_bi_data sm_o_get_bi_data sm_get_bundle_data sm_get_bundle_item_count sm_get_bundle_occur_count sm_get_next_bundle_name sm_i_get_tv_bi_data sm_o_get_tv_bi_data sm_getfield sm_e_getfield sm_i_getfield sm_n_getfield sm_o_getfield sm_getkey sm_gofield sm_e_gofield sm_i_gofield sm_n_gofield sm_o_gofield sm_gtof sm_gval sm_i_gtof sm_n_gval sm_hlp_by_name sm_home sm_inimsg sm_initcrt sm_jinitcrt sm_jxinitcrt sm_input sm_inquire sm_install sm_intval sm_e_intval sm_i_intval sm_n_intval sm_o_intval sm_i_ioccur sm_o_ioccur sm_is_bundle sm_is_no sm_e_is_no sm_i_is_no sm_n_is_no sm_o_is_no sm_is_yes sm_e_is_yes sm_i_is_yes sm_n_is_yes sm_o_is_yes sm_isabort sm_iset sm_issv sm_itofield sm_e_itofield sm_i_itofield sm_n_itofield sm_o_itofield sm_jclose sm_jfilebox sm_jform sm_djplcall sm_jplcall syn keyword jamLibFunc5 sm_sjplcall sm_jplpublic sm_jplunload sm_jtop sm_jwindow sm_key_integer sm_keyfilter sm_keyhit sm_keyinit sm_n_keyinit sm_keylabel sm_keyoption sm_l_close sm_l_open sm_l_open_syslib sm_last sm_launch sm_h_ldb_fld_get sm_n_ldb_fld_get sm_h_ldb_n_fld_get sm_n_ldb_n_fld_get sm_h_ldb_fld_store sm_n_ldb_fld_store sm_h_ldb_n_fld_store sm_n_ldb_n_fld_store sm_ldb_get_active sm_ldb_get_inactive sm_ldb_get_next_active sm_ldb_get_next_inactive sm_ldb_getfield sm_i_ldb_getfield sm_n_ldb_getfield sm_o_ldb_getfield sm_ldb_h_getfield sm_i_ldb_h_getfield sm_n_ldb_h_getfield sm_o_ldb_h_getfield sm_ldb_handle sm_ldb_init sm_ldb_is_loaded sm_ldb_load sm_ldb_name sm_ldb_next_handle sm_ldb_pop sm_ldb_push sm_ldb_putfield sm_i_ldb_putfield sm_n_ldb_putfield sm_o_ldb_putfield sm_ldb_h_putfield sm_i_ldb_h_putfield sm_n_ldb_h_putfield sm_o_ldb_h_putfield sm_ldb_state_get sm_ldb_h_state_get sm_ldb_state_set sm_ldb_h_state_set sm_ldb_unload sm_ldb_h_unload sm_leave sm_list_objects_count sm_list_objects_end sm_list_objects_next syn keyword jamLibFunc6 sm_list_objects_start sm_lngval sm_e_lngval sm_i_lngval sm_n_lngval sm_o_lngval sm_load_screen sm_log sm_lstore sm_ltofield sm_e_ltofield sm_i_ltofield sm_n_ltofield sm_o_ltofield sm_m_flush sm_menu_bar_error sm_menu_change sm_menu_create sm_menu_delete sm_menu_get_int sm_menu_get_str sm_menu_install sm_menu_remove sm_message_box sm_mncrinit6 sm_mnitem_change sm_n_mnitem_change sm_mnitem_create sm_n_mnitem_create sm_mnitem_delete sm_n_mnitem_delete sm_mnitem_get_int sm_n_mnitem_get_int sm_mnitem_get_str sm_n_mnitem_get_str sm_mnscript_load sm_mnscript_unload sm_ms_inquire sm_msg sm_msg_del sm_msg_get sm_msg_read sm_d_msg_read sm_n_msg_read sm_msgfind sm_mts_CreateInstance sm_mts_CreateProperty sm_mts_CreatePropertyGroup sm_mts_DisableCommit sm_mts_EnableCommit sm_mts_GetPropertyValue sm_mts_IsCallerInRole sm_mts_IsInTransaction sm_mts_IsSecurityEnabled sm_mts_PutPropertyValue sm_mts_SetAbort sm_mts_SetComplete sm_mus_time sm_mw_get_client_wnd sm_mw_get_cmd_show sm_mw_get_frame_wnd sm_mw_get_instance syn keyword jamLibFunc7 sm_mw_get_prev_instance sm_mw_PrintScreen sm_next_sync sm_nl sm_null sm_e_null sm_i_null sm_n_null sm_o_null sm_obj_call sm_obj_copy sm_obj_copy_id sm_obj_create sm_obj_delete sm_obj_delete_id sm_obj_get_property sm_obj_onerror sm_obj_set_property sm_obj_sort sm_obj_sort_auto sm_occur_no sm_off_gofield sm_e_off_gofield sm_i_off_gofield sm_n_off_gofield sm_o_off_gofield sm_option sm_optmnu_id sm_pinquire sm_popup_at_cur sm_prop_error sm_prop_get_int sm_prop_get_str sm_prop_get_dbl sm_prop_get_x_int sm_prop_get_x_str sm_prop_get_x_dbl sm_prop_get_m_int sm_prop_get_m_str sm_prop_get_m_dbl sm_prop_id sm_prop_name_to_id sm_prop_set_int sm_prop_set_str sm_prop_set_dbl sm_prop_set_x_int sm_prop_set_x_str sm_prop_set_x_dbl sm_prop_set_m_int sm_prop_set_m_str sm_prop_set_m_dbl sm_pset sm_putfield sm_e_putfield sm_i_putfield sm_n_putfield sm_o_putfield sm_raise_exception sm_receive sm_receive_args sm_rescreen sm_resetcrt sm_jresetcrt sm_jxresetcrt sm_resize sm_restore_data sm_return sm_return_args sm_rmformlist sm_rs_data syn keyword jamLibFunc8 sm_rw_error_message sm_rw_play_metafile sm_rw_runreport sm_s_val sm_save_data sm_sdtime sm_select sm_send sm_set_help sm_setbkstat sm_setsibling sm_setstatus sm_sh_off sm_shell sm_shrink_to_fit sm_slib_error sm_slib_install sm_slib_load sm_soption sm_strip_amt_ptr sm_e_strip_amt_ptr sm_i_strip_amt_ptr sm_n_strip_amt_ptr sm_o_strip_amt_ptr sm_sv_data sm_sv_free sm_svscreen sm_tab sm_tm_clear sm_tm_clear_model_events sm_tm_command sm_tm_command_emsgset sm_tm_command_errset sm_tm_continuation_validity sm_tm_dbi_checker sm_tm_error sm_tm_errorlog sm_tm_event sm_tm_event_name sm_tm_failure_message sm_tm_handling sm_tm_inquire sm_tm_iset sm_tm_msg_count_error sm_tm_msg_emsg sm_tm_msg_error sm_tm_old_bi_context sm_tm_pcopy sm_tm_pinquire sm_tm_pop_model_event sm_tm_pset sm_tm_push_model_event sm_tmpnam sm_tp_exec sm_tp_free_arg_buf sm_tp_gen_insert sm_tp_gen_sel_return sm_tp_gen_sel_where sm_tp_gen_val_link sm_tp_gen_val_return sm_tp_get_svc_alias sm_tp_get_tux_callid sm_translatecoords sm_tst_all_mdts syn keyword jamLibFunc9 sm_udtime sm_ungetkey sm_unload_screen sm_unsvscreen sm_upd_select sm_validate sm_n_validate sm_vinit sm_n_vinit sm_wcount sm_wdeselect sm_web_get_cookie sm_web_invoke_url sm_web_log_error sm_web_save_global sm_web_set_cookie sm_web_unsave_all_globals sm_web_unsave_global sm_mw_widget sm_mwe_widget sm_mwn_widget sm_xm_widget sm_xme_widget sm_xmn_widget sm_win_shrink sm_d_window sm_d_at_cur sm_l_window sm_l_at_cur sm_r_window sm_r_at_cur sm_winsize sm_wrotate sm_wselect sm_n_wselect sm_ww_length sm_n_ww_length sm_ww_read sm_n_ww_read sm_ww_write sm_n_ww_write sm_xlate_table sm_xm_get_base_window sm_xm_get_display syn keyword jamVariable1 SM_SCCS_ID SM_ENTERTERM SM_MALLOC SM_CANCEL SM_BADTERM SM_FNUM SM_DZERO SM_EXPONENT SM_INVDATE SM_MATHERR SM_FRMDATA SM_NOFORM SM_FRMERR SM_BADKEY SM_DUPKEY SM_ERROR SM_SP1 SM_SP2 SM_RENTRY SM_MUSTFILL SM_AFOVRFLW SM_TOO_FEW_DIGITS SM_CKDIGIT SM_HITANY SM_NOHELP SM_MAXHELP SM_OUTRANGE SM_ENTERTERM1 SM_SYSDATE SM_DATFRM SM_DATCLR SM_DATINV SM_KSDATA SM_KSERR SM_KSNONE SM_KSMORE SM_DAYA1 SM_DAYA2 SM_DAYA3 SM_DAYA4 SM_DAYA5 SM_DAYA6 SM_DAYA7 SM_DAYL1 SM_DAYL2 SM_DAYL3 SM_DAYL4 SM_DAYL5 SM_DAYL6 SM_DAYL7 SM_MNSCR_LOAD SM_MENU_INSTALL SM_INSTDEFSCRL SM_INSTSCROLL SM_MOREDATA SM_READY SM_WAIT SM_YES SM_NO SM_NOTEMP SM_FRMHELP SM_FILVER SM_ONLYONE SM_WMSMOVE SM_WMSSIZE SM_WMSOFF SM_LPRINT SM_FMODE SM_NOFILE SM_NOSECTN SM_FFORMAT SM_FREAD SM_RX1 SM_RX2 SM_RX3 SM_TABLOOK SM_MISKET SM_ILLKET SM_ILLBRA SM_MISDBLKET SM_ILLDBLKET SM_ILLDBLBRA SM_ILL_RIGHT SM_ILLELSE SM_NUMBER SM_EOT SM_BREAK SM_NOARGS SM_BIGVAR SM_EXCESS SM_EOL SM_FILEIO SM_FOR SM_RCURLY SM_NONAME SM_1JPL_ERR SM_2JPL_ERR SM_3JPL_ERR syn keyword jamVariable2 SM_JPLATCH SM_FORMAT SM_DESTINATION SM_ORAND SM_ORATOR SM_ILL_LEFT SM_MISSPARENS SM_ILLCLOSE_COMM SM_FUNCTION SM_EQUALS SM_MISMATCH SM_QUOTE SM_SYNTAX SM_NEXT SM_VERB_UNKNOWN SM_JPLFORM SM_NOT_LOADED SM_GA_FLG SM_GA_CHAR SM_GA_ARG SM_GA_DIG SM_NOFUNC SM_BADPROTO SM_JPLPUBLIC SM_NOCOMPILE SM_NULLEDIT SM_RP_NULL SM_DBI_NOT_INST SM_NOTJY SM_MAXLIB SM_FL_FLLIB SM_TPI_NOT_INST SM_RW_NOT_INST SM_MONA1 SM_MONA2 SM_MONA3 SM_MONA4 SM_MONA5 SM_MONA6 SM_MONA7 SM_MONA8 SM_MONA9 SM_MONA10 SM_MONA11 SM_MONA12 SM_MONL1 SM_MONL2 SM_MONL3 SM_MONL4 SM_MONL5 SM_MONL6 SM_MONL7 SM_MONL8 SM_MONL9 SM_MONL10 SM_MONL11 SM_MONL12 SM_AM SM_PM SM_0DEF_DTIME SM_1DEF_DTIME SM_2DEF_DTIME SM_3DEF_DTIME SM_4DEF_DTIME SM_5DEF_DTIME SM_6DEF_DTIME SM_7DEF_DTIME SM_8DEF_DTIME SM_9DEF_DTIME SM_CALC_DATE SM_BAD_DIGIT SM_BAD_YN SM_BAD_ALPHA SM_BAD_NUM SM_BAD_ALPHNUM SM_DECIMAL SM_1STATS SM_VERNO SM_DIG_ERR SM_YN_ERR SM_LET_ERR SM_NUM_ERR SM_ANUM_ERR SM_REXP_ERR SM_POSN_ERR SM_FBX_OPEN SM_FBX_WINDOW SM_FBX_SIBLING SM_OPENDIR syn keyword jamVariable3 SM_GETFILES SM_CHDIR SM_GETCWD SM_UNCLOSED_COMM SM_MB_OKLABEL SM_MB_CANCELLABEL SM_MB_YESLABEL SM_MB_NOLABEL SM_MB_RETRYLABEL SM_MB_IGNORELABEL SM_MB_ABORTLABEL SM_MB_HELPLABEL SM_MB_STOP SM_MB_QUESTION SM_MB_WARNING SM_MB_INFORMATION SM_MB_YESALLLABEL SM_0MN_CURRDEF SM_1MN_CURRDEF SM_2MN_CURRDEF SM_0DEF_CURR SM_1DEF_CURR SM_2DEF_CURR SM_3DEF_CURR SM_4DEF_CURR SM_5DEF_CURR SM_6DEF_CURR SM_7DEF_CURR SM_8DEF_CURR SM_9DEF_CURR SM_SEND_SYNTAX SM_SEND_ITEM SM_SEND_INVALID_BUNDLE SM_RECEIVE_SYNTAX SM_RECEIVE_ITEM_NUMBER SM_RECEIVE_OVERFLOW SM_RECEIVE_ITEM SM_SYNCH_RECEIVE SM_EXEC_FAIL SM_DYNA_HELP_NOT_AVAIL SM_DLL_LOAD_ERR SM_DLL_UNRESOLVED SM_DLL_VERSION_ERR SM_DLL_OPTION_ERR SM_DEMOERR SM_MB_OKALLLABEL SM_MB_NOALLLABEL SM_BADPROP SM_BETWEEN SM_ATLEAST SM_ATMOST SM_PR_ERROR SM_PR_OBJID SM_PR_OBJECT SM_PR_ITEM SM_PR_PROP SM_PR_PROP_ITEM SM_PR_PROP_VAL SM_PR_CONVERT SM_PR_OBJ_TYPE SM_PR_RANGE SM_PR_NO_SET SM_PR_BYND_SCRN SM_PR_WW_SCROLL SM_PR_NO_SYNC SM_PR_TOO_BIG SM_PR_BAD_MASK SM_EXEC_MEM_ERR syn keyword jamVariable4 SM_EXEC_NO_PROG SM_PR_NO_KEYSTRUCT SM_REOPEN_AS_SLIB SM_REOPEN_THE_SLIB SM_ERRLIB SM_WARNLIB SM_LIB_DOWNGRADE SM_OLDER SM_NEWER SM_UPGRADE SM_LIB_READONLY SM_LOPEN_ERR SM_LOPEN_WARN SM_MLOPEN_CREAT SM_MLOPEN_INIT SM_LIB_ERR SM_LIB_ISOLATE SM_LIB_NO_ERR SM_LIB_REC_ERR SM_LIB_FATAL_ERR SM_LIB_LERR_FILE SM_LIB_LERR_NOTLIB SM_LIB_LERR_BADVERS SM_LIB_LERR_FORMAT SM_LIB_LERR_BADCM SM_LIB_LERR_LOCK SM_LIB_LERR_RESERVED SM_LIB_LERR_READONLY SM_LIB_LERR_NOENTRY SM_LIB_LERR_BUSY SM_LIB_LERR_ROVERS SM_LIB_LERR_DEFAULT SM_LIB_BADCM SM_LIB_LERR_NEW SM_STANDALONE_MODE SM_FEATURE_RESTRICT FM_CH_LOST FM_JPL_PROMPT FM_YR4 FM_YR2 FM_MON FM_MON2 FM_DATE FM_DATE2 FM_HOUR FM_HOUR2 FM_MIN FM_MIN2 FM_SEC FM_SEC2 FM_YRDAY FM_AMPM FM_DAYA FM_DAYL FM_MONA FM_MONL FM_0MN_DEF_DT FM_1MN_DEF_DT FM_2MN_DEF_DT FM_DAY JM_QTERMINATE JM_HITSPACE JM_HITACK JM_NOJWIN UT_MEMERR UT_P_OPT UT_V_OPT UT_E_BINOPT UT_NO_INPUT UT_SECLONG UT_1FNAME UT_SLINE UT_FILE UT_ERROR UT_WARNING UT_MISSEQ UT_VOPT UT_M2_DESCR syn keyword jamVariable5 UT_M2_PROGNAME UT_M2_USAGE UT_M2_O_OPT UT_M2_COM UT_M2_BADTAG UT_M2_MSSQUOT UT_M2_AFTRQUOT UT_M2_DUPSECT UT_M2_BADUCLSS UT_M2_USECPRFX UT_M2_MPTYUSCT UT_M2_DUPMSGTG UT_M2_TOOLONG UT_M2_LONG UT_K2_DESCR UT_K2_PROGNAME UT_K2_USAGE UT_K2_MNEM UT_K2_NKEYDEF UT_K2_DUPKEY UT_K2_NOTFOUND UT_K2_1FNAME UT_K2_VOPT UT_K2_EXCHAR UT_V2_DESCR UT_V2_PROGNAME UT_V2_USAGE UT_V2_SLINE UT_V2_SEQUAL UT_V2_SVARNAME UT_V2_SNAME UT_V2_VOPT UT_V2_1REQ UT_CB_DESCR UT_CB_PROGNAME UT_CB_USAGE UT_CB_VOPT UT_CB_MIEXT UT_CB_AEXT UT_CB_UNKNOWN UT_CB_ISCHEME UT_CB_BKFGS UT_CB_ABGS UT_CB_REC UT_CB_GUI UT_CB_CONT UT_CB_CONTFG UT_CB_AFILE UT_CB_LEFT_QUOTE UT_CB_NO_EQUAL UT_CB_EXTRA_EQ UT_CB_BAD_LHS UT_CB_BAD_RHS UT_CB_BAD_QUOTED UT_CB_FILE UT_CB_FILE_LINE UT_CB_DUP_ALIAS UT_CB_LINE_LOOP UT_CB_BAD_STYLE UT_CB_DUP_STYLE UT_CB_NO_SECT UT_CB_DUP_SCHEME DM_ERROR DM_NODATABASE DM_NOTLOGGEDON DM_ALREADY_ON DM_ARGS_NEEDED DM_LOGON_DENIED DM_BAD_ARGS DM_BAD_CMD DM_NO_MORE_ROWS DM_ABORTED DM_NO_CURSOR DM_MANY_CURSORS DM_KEYWORD syn keyword jamVariable6 DM_INVALID_DATE DM_COMMIT DM_ROLLBACK DM_PARSE_ERROR DM_BIND_COUNT DM_BIND_VAR DM_DESC_COL DM_FETCH DM_NO_NAME DM_END_OF_PROC DM_NOCONNECTION DM_NOTSUPPORTED DM_TRAN_PEND DM_NO_TRANSACTION DM_ALREADY_INIT DM_INIT_ERROR DM_MAX_DEPTH DM_NO_PARENT DM_NO_CHILD DM_MODALITY_NOT_FOUND DM_NATIVE_NO_SUPPORT DM_NATIVE_CANCEL DM_TM_ALREADY DM_TM_IN_PROGRESS DM_TM_CLOSE_ERROR DM_TM_BAD_MODE DM_TM_BAD_CLOSE_ACTION DM_TM_INTERNAL DM_TM_MODEL_INTERNAL DM_TM_NO_ROOT DM_TM_NO_TRANSACTION DM_TM_INITIAL_MODE DM_TM_PARENT_NAME DM_TM_BAD_MEMBER DM_TM_FLD_NAM_LEN DM_TM_NO_PARENT DM_TM_BAD_REQUEST DM_TM_CANNOT_GEN_SQL DM_TM_CANNOT_EXEC_SQL DM_TM_DBI_ERROR DM_TM_DISCARD_ALL DM_TM_DISCARD_LATEST DM_TM_CALL_ERROR DM_TM_CALL_TYPE DM_TM_HOOK_MODEL DM_TM_ROOT_NAME DM_TM_TV_INVALID DM_TM_COL_NOT_FOUND DM_TM_BAD_LINK DM_TM_HOOK_MODEL_ERROR DM_TM_ONE_ROW DM_TM_SOME_ROWS DM_TM_GENERAL DM_TM_NO_HOOK DM_TM_NOSET DM_TM_TBLNAME DM_TM_PRIMARY_KEY DM_TM_INCOMPLETE_KEY DM_TM_CMD_MODE DM_TM_NO_SUCH_CMD DM_TM_NO_SUCH_SCOPE syn keyword jamVariable7 DM_TM_NO_SUCH_TV DM_TM_EVENT_LOOP DM_TM_UNSUPPORTED DM_TM_NO_MODEL DM_TM_SYNCH_SV DM_TM_WRONG_FORM DM_TM_VC_FIELD DM_TM_VC_DATE DM_TM_VC_TYPE DM_TM_BAD_CONTINUE DM_JDB_OUT_OF_MEMORY DM_JDB_DUPTABLEALIAS DM_JDB_DUPCURSORNAME DM_JDB_NODB DM_JDB_BINDCOUNT DM_JDB_NO_MORE_ROWS DM_JDB_AMBIGUOUS_COLUMN_REF DM_JDB_UNRESOLVED_COLUMN_REF DM_JDB_TABLE_READ_WRITE_CONFLICT DM_JDB_SYNTAX_ERROR DM_JDB_DUP_COLUMN_ASSIGNMENT DM_JDB_NO_MSG_FILE DM_JDB_NO_MSG DM_JDB_NOT_IMPLEMENTED DM_JDB_AGGREGATE_NOT_ALLOWED DM_JDB_TYPE_MISMATCH DM_JDB_NO_CURRENT_ROW DM_JDB_DB_CORRUPT DM_JDB_BUF_OVERFLOW DM_JDB_FILE_IO_ERR DM_JDB_BAD_HANDLE DM_JDB_DUP_TNAME DM_JDB_INVALID_TABLE_OP DM_JDB_TABLE_NOT_FOUND DM_JDB_CONVERSION_FAILED DM_JDB_INVALID_COLUMN_LIST DM_JDB_TABLE_OPEN DM_JDB_BAD_INPUT DM_JDB_DATATYPE_OVERFLOW DM_JDB_DATABASE_EXISTS DM_JDB_DATABASE_OPEN DM_JDB_DUP_CNAME DM_JDB_TMPDATABASE_ERR DM_JDB_INVALID_VALUES_COUNT DM_JDB_INVALID_COLUMN_COUNT DM_JDB_MAX_RECLEN_EXCEEDED DM_JDB_END_OF_GROUP syn keyword jamVariable8 TP_EXC_INVALID_CLIENT_COMMAND TP_EXC_INVALID_CLIENT_OPTION TP_EXC_INVALID_COMMAND TP_EXC_INVALID_COMMAND_SYNTAX TP_EXC_INVALID_CONNECTION TP_EXC_INVALID_CONTEXT TP_EXC_INVALID_FORWARD TP_EXC_INVALID_JAM_VARIABLE_REF TP_EXC_INVALID_MONITOR_COMMAND TP_EXC_INVALID_MONITOR_OPTION TP_EXC_INVALID_OPTION TP_EXC_INVALID_OPTION_VALUE TP_EXC_INVALID_SERVER_COMMAND TP_EXC_INVALID_SERVER_OPTION TP_EXC_INVALID_SERVICE TP_EXC_INVALID_TRANSACTION TP_EXC_JIF_ACCESS_FAILED TP_EXC_JIF_LOWER_VERSION TP_EXC_LOGFILE_ERROR TP_EXC_MONITOR_ERROR TP_EXC_NO_OUTSIDE_TRANSACTION TP_EXC_NO_OUTSTANDING_CALLS TP_EXC_NO_OUTSTANDING_MESSAGE TP_EXC_NO_SERVICES_ADVERTISED TP_EXC_NO_SIGNALS TP_EXC_NONTRANSACTIONAL_SERVICE TP_EXC_NONTRANSACTIONAL_ACTION TP_EXC_OUT_OF_MEMORY TP_EXC_POSTING_FAILED TP_EXC_PERMISSION_DENIED TP_EXC_REQUEST_LIMIT TP_EXC_ROLLBACK_COMMITTED TP_EXC_ROLLBACK_FAILED TP_EXC_SERVICE_FAILED TP_EXC_SERVICE_NOT_IN_JIF TP_EXC_SERVICE_PROTOCOL_ERROR TP_EXC_SUBSCRIPTION_LIMIT syn keyword jamVariable9 TP_EXC_SUBSCRIPTION_MATCH TP_EXC_SVC_ADVERTISE_LIMIT TP_EXC_SVC_WORK_OUTSTANDING TP_EXC_SVCROUTINE_MISSING TP_EXC_SVRINIT_WORK_OUTSTANDING TP_EXC_TIMEOUT TP_EXC_TRANSACTION_LIMIT TP_EXC_UNLOAD_FAILED TP_EXC_UNSUPPORTED_BUFFER TP_EXC_UNSUPPORTED_BUF_W_SUBT TP_EXC_USER_ABORT TP_EXC_WORK_OUTSTANDING TP_EXC_XA_CLOSE_FAILED TP_EXC_XA_OPEN_FAILED TP_EXC_QUEUE_BAD_MSGID TP_EXC_QUEUE_BAD_NAMESPACE TP_EXC_QUEUE_BAD_QUEUE TP_EXC_QUEUE_CANT_START_TRAN TP_EXC_QUEUE_FULL TP_EXC_QUEUE_MSG_IN_USE TP_EXC_QUEUE_NO_MSG TP_EXC_QUEUE_NOT_IN_QSPACE TP_EXC_QUEUE_RSRC_NOT_OPEN TP_EXC_QUEUE_SPACE_NOT_IN_JIF TP_EXC_QUEUE_TRAN_ABORTED TP_EXC_QUEUE_TRAN_ABSENT TP_EXC_QUEUE_UNEXPECTED TP_EXC_DCE_LOGIN_REQUIRED TP_EXC_ENC_CELL_NAME_REQUIRED TP_EXC_ENC_CONN_INFO_DIFFS TP_EXC_ENC_SVC_REGISTRY_ERROR TP_INVALID_START_ROUTINE TP_JIF_NOT_FOUND TP_JIF_OPEN_ERROR TP_NO_JIF TP_NO_MONITORS_ERROR TP_NO_SESSIONS_ERROR TP_NO_START_ROUTINE TP_ADV_SERVICE TP_ADV_SERVICE_IN_GROUP TP_PRE_SVCHDL_WINOPEN_FAILED syn keyword jamVariable10 PV_YES PV_NO TRUE FALSE TM_TRAN_NAME syn cluster jamCommentGroup contains=jamTodo syn match jamSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" if !exists("c_no_utf") syn match jamSpecial contained "\\\(u\x\{4}\|U\x\{8}\)" endif if exists("c_no_cformat") syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial else syn match jamFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match jamFormat "%%" contained syn region jamString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat hi link jamFormat jamSpecial endif syn match jamCharacter "L\='[^\\]'" syn match jamCharacter "L'[^']*'" contains=jamSpecial syn match jamSpecialError "L\='\\[^'\"?\\abfnrtv]'" syn match jamSpecialCharacter "L\='\\['\"?\\abfnrtv]'" syn match jamSpecialCharacter "L\='\\\o\{1,3}'" syn match jamSpecialCharacter "'\\x\x\{1,2}'" syn match jamSpecialCharacter "L'\\x\x\+'" syn cluster jamParenGroup contains=jamParenError,jamIncluded,jamSpecial,@jamCommentGroup,jamUserCont,jamUserLabel,jamBitField,jamCommentSkip,jamOctalZero,jamCppOut,jamCppOut2,jamCppSkip,jamFormat,jamNumber,jamFloat,jamOctal,jamOctalError,jamNumbersCom syn region jamParen transparent start='(' end=')' contains=ALLBUT,@jamParenGroup,jamErrInBracket syn match jamParenError "[\])]" syn match jamErrInParen contained "[\]{}]" syn region jamBracket transparent start='\[' end=']' contains=ALLBUT,@jamParenGroup,jamErrInParen syn match jamErrInBracket contained "[);{}]" syn case ignore syn match jamNumbers transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctalError,jamOctal syn match jamNumbersCom contained transparent "\<\d\|\,\d" contains=jamNumber,jamFloat,jamOctal syn match jamNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" syn match jamNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" syn match jamOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero syn match jamOctalZero contained "\<0" syn match jamFloat contained "\d\+f" syn match jamFloat contained "\d\+\,\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match jamFloat contained "\,\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match jamFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" syn match jamOctalError contained "0\o*[89]\d*" syn case match syntax match jamOperator1 "\#\#" syntax match jamOperator6 "/" syntax match jamOperator2 "+" syntax match jamOperator3 "*" syntax match jamOperator4 "-" syntax match jamOperator5 "|" syntax match jamOperator6 "/" syntax match jamOperator7 "&" syntax match jamOperator8 ":" syntax match jamOperator9 "<" syntax match jamOperator10 ">" syntax match jamOperator11 "!" syntax match jamOperator12 "%" syntax match jamOperator13 "^" syntax match jamOperator14 "@" syntax match jamCommentL "//" if exists("jam_comment_strings") syntax match jamCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region jamCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=jamSpecial,jamCommentSkip syntax region jamComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=jamSpecial syntax region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError syntax region jamCommentL2 start="^#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamComment2String,jamCharacter,jamNumbersCom,jamSpaceError syntax region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamCommentString,jamCharacter,jamNumbersCom,jamSpaceError else syn region jamCommentL start="//" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError syn region jamCommentL2 start="^\#\|^\s\+\#" skip="\\$" end="$" keepend contains=@jamCommentGroup,jamSpaceError syn region jamComment start="/\*" end="\*/" contains=@jamCommentGroup,jamSpaceError endif syntax match jamCommentError "\*/" syntax match jamOperator3Error "*/" hi def link jamCommentL jamComment hi def link jamCommentL2 jamComment hi def link jamOperator3Error jamError hi def link jamConditional Conditional hi def link jamRepeat Repeat hi def link jamCharacter Character hi def link jamSpecialCharacter jamSpecial hi def link jamNumber Number hi def link jamParenError jamError hi def link jamErrInParen jamError hi def link jamErrInBracket jamError hi def link jamCommentError jamError hi def link jamSpaceError jamError hi def link jamSpecialError jamError hi def link jamOperator1 jamOperator hi def link jamOperator2 jamOperator hi def link jamOperator3 jamOperator hi def link jamOperator4 jamOperator hi def link jamOperator5 jamOperator hi def link jamOperator6 jamOperator hi def link jamOperator7 jamOperator hi def link jamOperator8 jamOperator hi def link jamOperator9 jamOperator hi def link jamOperator10 jamOperator hi def link jamOperator11 jamOperator hi def link jamOperator12 jamOperator hi def link jamOperator13 jamOperator hi def link jamOperator14 jamOperator hi def link jamError Error hi def link jamStatement Statement hi def link jamPreCondit PreCondit hi def link jamCommentError jamError hi def link jamCommentString jamString hi def link jamComment2String jamString hi def link jamCommentSkip jamComment hi def link jamString String hi def link jamComment Comment hi def link jamSpecial SpecialChar hi def link jamTodo Todo hi def link jamCppSkip jamCppOut hi def link jamCppOut2 jamCppOut hi def link jamCppOut Comment hi def link jamDBState1 Identifier hi def link jamDBState2 Identifier hi def link jamSQLState1 jamSQL hi def link jamSQLState2 jamSQL hi def link jamLibFunc1 jamLibFunc hi def link jamLibFunc2 jamLibFunc hi def link jamLibFunc3 jamLibFunc hi def link jamLibFunc4 jamLibFunc hi def link jamLibFunc5 jamLibFunc hi def link jamLibFunc6 jamLibFunc hi def link jamLibFunc7 jamLibFunc hi def link jamLibFunc8 jamLibFunc hi def link jamLibFunc9 jamLibFunc hi def link jamVariable1 jamVariablen hi def link jamVariable2 jamVariablen hi def link jamVariable3 jamVariablen hi def link jamVariable4 jamVariablen hi def link jamVariable5 jamVariablen hi def link jamVariable6 jamVariablen hi def link jamVariable7 jamVariablen hi def link jamVariable8 jamVariablen hi def link jamVariable9 jamVariablen hi def link jamVariable10 jamVariablen hi def link jamVariablen Constant hi def link jamSQL Type hi def link jamLibFunc PreProc hi def link jamOperator Special let b:current_syntax = "jam" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match jargonChaptTitle /:[^:]*:/ syn match jargonEmailAddr /[^<@ ^I]*@[^ ^I>]*/ syn match jargonUrl +\(http\|ftp\)://[^\t )"]*+ syn match jargonMark /{[^}]*}/ hi def link jargonChaptTitle Title hi def link jargonEmailAddr Comment hi def link jargonUrl Comment hi def link jargonMark Label let b:current_syntax = "jargon" if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax='java' syn region javaFold start="{" end="}" transparent fold endif let s:cpo_save = &cpo set cpo&vim syn match javaError "[\\@`]" syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/" syn match javaOK "\.\.\." syn match javaError2 "#\|=<" hi def link javaError2 javaError syn keyword javaExternal native package syn match javaExternal "\\(\s\+static\>\)\?" syn keyword javaError goto const syn keyword javaConditional if else switch syn keyword javaRepeat while for do syn keyword javaBoolean true false syn keyword javaConstant null syn keyword javaTypedef this super syn keyword javaOperator var new instanceof syn keyword javaType boolean char byte short int long float double syn keyword javaType void syn keyword javaStatement return syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable syn keyword javaExceptions throw try catch finally syn keyword javaAssert assert syn keyword javaMethodDecl synchronized throws syn keyword javaClassDecl extends implements interface syn match javaTypedef "\.\s*\"ms=s+1 syn keyword javaClassDecl enum syn match javaClassDecl "^class\>" syn match javaClassDecl "[^.]\s*\"ms=s+1 syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" contains=javaString syn match javaClassDecl "@interface\>" syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite syn match javaUserLabelRef "\k\+" contained syn match javaVarArg "\.\.\." syn keyword javaScopeDecl public protected private abstract if fnamemodify(bufname("%"), ":t") == "module-info.java" syn keyword javaModuleStorageClass module transitive syn keyword javaModuleStmt open requires exports opens uses provides syn keyword javaModuleExternal to with syn cluster javaTop add=javaModuleStorageClass,javaModuleStmt,javaModuleExternal endif if exists("java_highlight_java_lang_ids") let java_highlight_all=1 endif if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") syn match javaLangClass "\" syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException syn cluster javaTop add=javaR_JavaLang syn cluster javaClasses add=javaR_JavaLang hi def link javaR_JavaLang javaR_Java syn keyword javaC_JavaLang Process RuntimePermission StringKeySet CharacterData01 Class ThreadLocal ThreadLocalMap CharacterData0E Package Character StringCoding Long ProcessImpl ProcessEnvironment Short AssertionStatusDirectives 1PackageInfoProxy UnicodeBlock InheritableThreadLocal AbstractStringBuilder StringEnvironment ClassLoader ConditionalSpecialCasing CharacterDataPrivateUse StringBuffer StringDecoder Entry StringEntry WrappedHook StringBuilder StrictMath State ThreadGroup Runtime CharacterData02 MethodArray Object CharacterDataUndefined Integer Gate Boolean Enum Variable Subset StringEncoder Void Terminator CharsetSD IntegerCache CharacterCache Byte CharsetSE Thread SystemClassLoaderAction CharacterDataLatin1 StringValues StackTraceElement Shutdown ShortCache String ConverterSD ByteCache Lock EnclosingMethodInfo Math Float Value Double SecurityManager LongCache ProcessBuilder StringEntrySet Compiler Number UNIXProcess ConverterSE ExternalData CaseInsensitiveComparator CharacterData00 NativeLibrary syn cluster javaTop add=javaC_JavaLang syn cluster javaClasses add=javaC_JavaLang hi def link javaC_JavaLang javaC_Java syn keyword javaE_JavaLang IncompatibleClassChangeError InternalError UnknownError ClassCircularityError AssertionError ThreadDeath IllegalAccessError NoClassDefFoundError ClassFormatError UnsupportedClassVersionError NoSuchFieldError VerifyError ExceptionInInitializerError InstantiationError LinkageError NoSuchMethodError Error UnsatisfiedLinkError StackOverflowError AbstractMethodError VirtualMachineError OutOfMemoryError syn cluster javaTop add=javaE_JavaLang syn cluster javaClasses add=javaE_JavaLang hi def link javaE_JavaLang javaE_Java syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException syn cluster javaTop add=javaX_JavaLang syn cluster javaClasses add=javaX_JavaLang hi def link javaX_JavaLang javaX_Java hi def link javaR_Java javaR_ hi def link javaC_Java javaC_ hi def link javaE_Java javaE_ hi def link javaX_Java javaX_ hi def link javaX_ javaExceptions hi def link javaR_ javaExceptions hi def link javaE_ javaExceptions hi def link javaC_ javaConstant syn keyword javaLangObject clone equals finalize getClass hashCode syn keyword javaLangObject notify notifyAll toString wait hi def link javaLangObject javaConstant syn cluster javaTop add=javaLangObject endif if filereadable(expand(":p:h")."/javaid.vim") source :p:h/javaid.vim endif if exists("java_space_errors") if !exists("java_no_trail_space_error") syn match javaSpaceError "\s\+$" endif if !exists("java_no_tab_space_error") syn match javaSpaceError " \+\t"me=e-1 endif endif syn region javaLabelRegion transparent matchgroup=javaLabel start="\" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel syn keyword javaLabel default syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg syn keyword javaTodo contained TODO FIXME XXX if exists("java_comment_strings") syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar syn match javaCommentCharacter contained "'[^\\]'" syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber endif syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell syn match javaCommentStar contained "^\s*\*[^/]"me=e-1 syn match javaCommentStar contained "^\s*\*$" syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell hi def link javaCommentString javaString hi def link javaComment2String javaString hi def link javaCommentCharacter javaCharacter syn cluster javaTop add=javaComment,javaLineComment if !exists("java_ignore_javadoc") && main_syntax != 'jsp' syntax case ignore syntax include @javaHtml :p:h/html.vim unlet b:current_syntax syntax spell default syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam syn match javaDocParam contained "\s\S\+" syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam syn match javaDocSeeTagParam contained @"\_[^"]\+"\|\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend syntax case match endif syn match javaComment "/\*\*/" syn match javaSpecialError contained "\\." syn match javaSpecialCharError contained "[^']" syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError syn match javaCharacter "'\\''" contains=javaSpecialChar syn match javaCharacter "'[^\\]'" syn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>" syn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\=" syn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>" syn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>" syn match javaSpecial "\\u\d\{4\}" syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError if exists("java_highlight_functions") if java_highlight_functions == "indent" syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation else syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(<.*>\s\+\)\?\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^(){}]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*(+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses,javaAnnotation endif syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->" syn match javaBraces "[{}]" syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef endif if exists("java_highlight_debug") syn match javaDebugSpecial contained "\\\d\d\d\|\\." syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+ syn match javaDebugCharacter contained "'[^\\]'" syn match javaDebugSpecialCharacter contained "'\\.'" syn match javaDebugSpecialCharacter contained "'\\''" syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" syn keyword javaDebugBoolean contained true false syn keyword javaDebugType contained null this super syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen syn match javaDebug "\\[\], \t]*)\s*->" endif if !exists("java_minlines") let java_minlines = 10 endif exec "syn sync ccomment javaComment minlines=" . java_minlines hi def link javaLambdaDef Function hi def link javaFuncDef Function hi def link javaVarArg Function hi def link javaBraces Function hi def link javaBranch Conditional hi def link javaUserLabelRef javaUserLabel hi def link javaLabel Label hi def link javaUserLabel Label hi def link javaConditional Conditional hi def link javaRepeat Repeat hi def link javaExceptions Exception hi def link javaAssert Statement hi def link javaStorageClass StorageClass hi def link javaMethodDecl javaStorageClass hi def link javaClassDecl javaStorageClass hi def link javaScopeDecl javaStorageClass hi def link javaBoolean Boolean hi def link javaSpecial Special hi def link javaSpecialError Error hi def link javaSpecialCharError Error hi def link javaString String hi def link javaCharacter Character hi def link javaSpecialChar SpecialChar hi def link javaNumber Number hi def link javaError Error hi def link javaStringError Error hi def link javaStatement Statement hi def link javaOperator Operator hi def link javaComment Comment hi def link javaDocComment Comment hi def link javaLineComment Comment hi def link javaConstant Constant hi def link javaTypedef Typedef hi def link javaTodo Todo hi def link javaAnnotation PreProc hi def link javaCommentTitle SpecialComment hi def link javaDocTags Special hi def link javaDocParam Function hi def link javaDocSeeTagParam Function hi def link javaCommentStar javaComment hi def link javaType Type hi def link javaExternal Include hi def link htmlComment Special hi def link htmlCommentPart Special hi def link javaSpaceError Error if fnamemodify(bufname("%"), ":t") == "module-info.java" hi def link javaModuleStorageClass StorageClass hi def link javaModuleStmt Statement hi def link javaModuleExternal Include endif let b:current_syntax = "java" if main_syntax == 'java' unlet main_syntax endif let b:spell_options="contained" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim runtime! syntax/java.vim unlet b:current_syntax syn match javaParen "--" syn match javaParenError "--" syn match javaInParen "--" syn match javaError2 "--" syn clear javaParen syn clear javaParenError syn clear javaInParen syn clear javaError2 syn clear javaFuncDef syn match javaFuncDef "[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)[ \t]*:" contains=javaType syn keyword javaccPackages options DEBUG_PARSER DEBUG_LOOKAHEAD DEBUG_TOKEN_MANAGER syn keyword javaccPackages COMMON_TOKEN_ACTION IGNORE_CASE CHOICE_AMBIGUITY_CHECK syn keyword javaccPackages OTHER_AMBIGUITY_CHECK STATIC LOOKAHEAD ERROR_REPORTING syn keyword javaccPackages USER_TOKEN_MANAGER USER_CHAR_STREAM JAVA_UNICODE_ESCAPE syn keyword javaccPackages UNICODE_INPUT JDK_VERSION syn match javaccPackages "PARSER_END([^)]*)" syn match javaccPackages "PARSER_BEGIN([^)]*)" syn match javaccSpecToken "" syn match javaccSpecToken ".LOOKAHEAD("ms=s+1,me=e-1 syn match javaccToken "<[^> \t]*>" syn keyword javaccActionToken TOKEN SKIP MORE SPECIAL_TOKEN syn keyword javaccError DEBUG IGNORE_IN_BNF hi def link javaccSpecToken Statement hi def link javaccActionToken Type hi def link javaccPackages javaScopeDecl hi def link javaccToken String hi def link javaccError Error let b:current_syntax = "javacc" let &cpo = s:cpo_save unlet s:cpo_save if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'javascript' elseif exists("b:current_syntax") && b:current_syntax == "javascript" finish endif let s:cpo_save = &cpo set cpo&vim syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo syn match javaScriptSpecial "\\\d\d\d\|\\." syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc syn region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc syn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbededExpr syn match javaScriptSpecialCharacter "'\\.'" syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline syn keyword javaScriptConditional if else switch syn keyword javaScriptRepeat while for do in syn keyword javaScriptBranch break continue syn keyword javaScriptOperator new delete instanceof typeof syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp syn keyword javaScriptStatement return with syn keyword javaScriptBoolean true false syn keyword javaScriptNull null undefined syn keyword javaScriptIdentifier arguments this var let syn keyword javaScriptLabel case default syn keyword javaScriptException try catch finally throw syn keyword javaScriptMessage alert confirm prompt status syn keyword javaScriptGlobal self window top parent syn keyword javaScriptMember document event location syn keyword javaScriptDeprecated escape unescape syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile syn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT if exists("javaScript_fold") syn match javaScriptFunction "\" syn region javaScriptFunctionFold start="\.*[^};]$" end="^\z1}.*$" transparent fold keepend syn sync match javaScriptSync grouphere javaScriptFunctionFold "\" syn sync match javaScriptSync grouphere NONE "^}" setlocal foldmethod=syntax setlocal foldtext=getline(v:foldstart) else syn keyword javaScriptFunction function syn match javaScriptBraces "[{}\[\]]" syn match javaScriptParens "[()]" endif syn sync fromstart syn sync maxlines=100 if main_syntax == "javascript" syn sync ccomment javaScriptComment endif hi def link javaScriptComment Comment hi def link javaScriptLineComment Comment hi def link javaScriptCommentTodo Todo hi def link javaScriptSpecial Special hi def link javaScriptStringS String hi def link javaScriptStringD String hi def link javaScriptStringT String hi def link javaScriptCharacter Character hi def link javaScriptSpecialCharacter javaScriptSpecial hi def link javaScriptNumber javaScriptValue hi def link javaScriptConditional Conditional hi def link javaScriptRepeat Repeat hi def link javaScriptBranch Conditional hi def link javaScriptOperator Operator hi def link javaScriptType Type hi def link javaScriptStatement Statement hi def link javaScriptFunction Function hi def link javaScriptBraces Function hi def link javaScriptError Error hi def link javaScrParenError javaScriptError hi def link javaScriptNull Keyword hi def link javaScriptBoolean Boolean hi def link javaScriptRegexpString String hi def link javaScriptIdentifier Identifier hi def link javaScriptLabel Label hi def link javaScriptException Exception hi def link javaScriptMessage Keyword hi def link javaScriptGlobal Keyword hi def link javaScriptMember Keyword hi def link javaScriptDeprecated Exception hi def link javaScriptReserved Keyword hi def link javaScriptDebug Debug hi def link javaScriptConstant Label hi def link javaScriptEmbed Special let b:current_syntax = "javascript" if main_syntax == 'javascript' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_ syn match jessSymbol ![^()'`,"; \t]\+! contained syn match jessBarSymbol !|..\{-}|! contained syn region jessList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSymbol,jessSpecial,jessFunc,jessKey,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol,jessVar syn region jessBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSpecial,jessSymbol,jessFunc,jessKey,jessVar,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol syn match jessAtomMark "'" syn match jessAtom "'("me=e-1 contains=jessAtomMark nextgroup=jessAtomList syn match jessAtom "'[^ \t()]\+" contains=jessAtomMark syn match jessAtomBarSymbol !'|..\{-}|! contains=jessAtomMark syn region jessAtom start=+'"+ skip=+\\"+ end=+"+ syn region jessAtomList matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contained contains=jessAtomList,jessAtomNmbr0,jessString,jessComment,jessAtomBarSymbol syn match jessAtomNmbr "\<[0-9]\+" contained syn keyword jessFunc * + ** - / < > <= >= <> = syn keyword jessFunc long longp syn keyword jessFunc abs agenda and syn keyword jessFunc assert assert-string bag syn keyword jessFunc batch bind bit-and syn keyword jessFunc bit-not bit-or bload syn keyword jessFunc bsave build call syn keyword jessFunc clear clear-storage close syn keyword jessFunc complement$ context count-query-results syn keyword jessFunc create$ syn keyword jessFunc delete$ div syn keyword jessFunc do-backward-chaining e syn keyword jessFunc engine eq eq* syn keyword jessFunc eval evenp exit syn keyword jessFunc exp explode$ external-addressp syn keyword jessFunc fact-slot-value facts fetch syn keyword jessFunc first$ float floatp syn keyword jessFunc foreach format gensym* syn keyword jessFunc get get-fact-duplication syn keyword jessFunc get-member get-multithreaded-io syn keyword jessFunc get-reset-globals get-salience-evaluation syn keyword jessFunc halt if implode$ syn keyword jessFunc import insert$ integer syn keyword jessFunc integerp intersection$ jess-version-number syn keyword jessFunc jess-version-string length$ syn keyword jessFunc lexemep list-function$ load-facts syn keyword jessFunc load-function load-package log syn keyword jessFunc log10 lowcase matches syn keyword jessFunc max member$ min syn keyword jessFunc mod modify multifieldp syn keyword jessFunc neq new not syn keyword jessFunc nth$ numberp oddp syn keyword jessFunc open or pi syn keyword jessFunc ppdeffunction ppdefglobal ddpefrule syn keyword jessFunc printout random read syn keyword jessFunc readline replace$ reset syn keyword jessFunc rest$ retract retract-string syn keyword jessFunc return round rules syn keyword jessFunc run run-query run-until-halt syn keyword jessFunc save-facts set set-fact-duplication syn keyword jessFunc set-factory set-member set-multithreaded-io syn keyword jessFunc set-node-index-hash set-reset-globals syn keyword jessFunc set-salience-evaluation set-strategy syn keyword jessFunc setgen show-deffacts show-deftemplates syn keyword jessFunc show-jess-listeners socket syn keyword jessFunc sqrt store str-cat syn keyword jessFunc str-compare str-index str-length syn keyword jessFunc stringp sub-string subseq$ syn keyword jessFunc subsetp sym-cat symbolp syn keyword jessFunc system throw time syn keyword jessFunc try undefadvice undefinstance syn keyword jessFunc undefrule union$ unwatch syn keyword jessFunc upcase view watch syn keyword jessFunc while syn match jessFunc "\" syn keyword jessKey defglobal deffunction defrule syn keyword jessKey deffacts syn keyword jessKey defadvice defclass definstance syn region jessVar start="?" end="[^a-zA-Z0-9]"me=e-1 syn region jessString start=+"+ skip=+\\"+ end=+"+ syn match jessNumber "[0-9]\+" syn match jessSpecial "\*[a-zA-Z_][a-zA-Z_0-9-]*\*" syn match jessSpecial !#|[^()'`,"; \t]\+|#! syn match jessSpecial !#x[0-9a-fA-F]\+! syn match jessSpecial !#o[0-7]\+! syn match jessSpecial !#b[01]\+! syn match jessSpecial !#\\[ -\~]! syn match jessSpecial !#[':][^()'`,"; \t]\+! syn match jessSpecial !#([^()'`,"; \t]\+)! syn match jessConcat "\s\.\s" syntax match jessParenError ")" syn match jessComment ";.*$" syn sync lines=100 hi def link jessAtomNmbr jessNumber hi def link jessAtomMark jessMark hi def link jessAtom Identifier hi def link jessAtomBarSymbol Special hi def link jessBarSymbol Special hi def link jessComment Comment hi def link jessConcat Statement hi def link jessDeclaration Statement hi def link jessFunc Statement hi def link jessKey Type hi def link jessMark Delimiter hi def link jessNumber Number hi def link jessParenError Error hi def link jessSpecial Type hi def link jessString String hi def link jessVar Identifier let b:current_syntax = "jess" if exists("b:current_syntax") finish endif syn case match syn region jgraphComment start="(\* " end=" \*)" syn keyword jgraphCmd newcurve newgraph marktype syn keyword jgraphType xaxis yaxis syn keyword jgraphType circle box diamond triangle x cross ellipse syn keyword jgraphType xbar ybar text postscript eps none general syn keyword jgraphType solid dotted dashed longdash dotdash dodotdash syn keyword jgraphType dotdotdashdash pts syn match jgraphNumber "\<-\=\d\+\>" syn match jgraphNumber "\<-\=\d\+\.\d*\>" syn match jgraphNumber "\-\=\.\d\+\>" hi def link jgraphComment Comment hi def link jgraphCmd Identifier hi def link jgraphType Type hi def link jgraphNumber Number let b:current_syntax = "jgraph" if exists("b:current_syntax") finish endif syn case ignore syn keyword jovialTodo TODO FIXME XXX contained syn match jovialBitConstant "[1-5]B'[0-9A-V]'" syn match jovialNumber "\<\d\+\>" syn match jovialFloat "\d\+E[-+]\=\d\+" syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\=" syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\=" syn region jovialComment start=/"/ end=/"/ contains=jovialTodo syn region jovialComment start=/%/ end=/%/ contains=jovialTodo syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+" syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline syn region jovialPreProc start="\s*![A-Z]\+" end=/;/ syn keyword jovialOperator AND OR NOT XOR EQV MOD syn keyword jovialType ITEM B C P V syn match jovialType "\" syn match jovialType "\" syn match jovialType "\" syn match jovialType "\" syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W syn keyword jovialStructure TABLE STATUS syn keyword jovialConstant NULL syn keyword jovialBoolean FALSE TRUE syn keyword jovialTypedef TYPE syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP syn keyword jovialStatement TERM THEN WHILE syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW syn keyword jovialStatement PROTECTED READONLY REGISTER SIGNAL TO UPDATE WITH WRITEONLY ZONE syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS syn keyword jovialFunction BYTEPOS MAXINT MININT syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST syn keyword jovialFunction LAST NENT hi def link jovialBitConstant Number hi def link jovialBoolean Boolean hi def link jovialComment Comment hi def link jovialConstant Constant hi def link jovialFloat Float hi def link jovialFunction Function hi def link jovialNumber Number hi def link jovialOperator Operator hi def link jovialPreProc PreProc hi def link jovialStatement Statement hi def link jovialStorageClass StorageClass hi def link jovialString String hi def link jovialStructure Structure hi def link jovialTodo Todo hi def link jovialType Type hi def link jovialTypedef Typedef let b:current_syntax = "jovial" if !exists("jproperties_lines") let jproperties_lines = 256 endif if !exists("jproperties_strict_syntax") let jproperties_strict_syntax = 0 endif if !exists("jproperties_show_messages") let jproperties_show_messages = 0 endif if exists("b:current_syntax") finish endif syn case ignore exec "syn sync lines=" . jproperties_lines if jproperties_strict_syntax != 0 syn match jpropertiesAssignment "^\s*[^[:space:]]\+.*$" contains=jpropertiesIdentifier syn match jpropertiesIdentifier "[^=:[:space:]]*" contained nextgroup=jpropertiesDelimiter syn match jpropertiesDelimiter "\s*[=:[:space:]]\s*" contained nextgroup=jpropertiesString syn match jpropertiesEmptyIdentifier "^\s*[=:]\s*" nextgroup=jpropertiesString else syn match jpropertiesAssignment "^\s*[^=:[:space:]]\+\s*[=:].*$" contains=jpropertiesIdentifier syn match jpropertiesIdentifier "[^=:[:space:]]\+" contained nextgroup=jpropertiesDelimiter syn match jpropertiesDelimiter "\s*[=:]\s*" contained nextgroup=jpropertiesString endif syn region jpropertiesString start="" skip="\\$" end="$" contained contains=jpropertiesSpecialChar,jpropertiesError,jpropertiesSpecial if jproperties_show_messages != 0 syn match jpropertiesSpecial "{[^}]*}\{-1,\}" contained syn match jpropertiesSpecial "'{" contained syn match jpropertiesSpecial "''" contained endif syn match jpropertiesSpecialChar "\\u\x\{1,4}" contained syn match jpropertiesError "\\u\X\{1,4}" contained syn match jpropertiesError "\\u$"me=e-1 contained syn match jpropertiesSpecial "\\[trn\\]" contained syn match jpropertiesSpecial "\\\s" contained syn match jpropertiesSpecial "\\$" contained syn match jpropertiesComment "^\s*[#!].*$" contains=jpropertiesTODO syn keyword jpropertiesTodo TODO FIXME XXX contained hi def link jpropertiesComment Comment hi def link jpropertiesTodo Todo hi def link jpropertiesIdentifier Identifier hi def link jpropertiesString String hi def link jpropertiesExtendString String hi def link jpropertiesCharacter Character hi def link jpropertiesSpecial Special hi def link jpropertiesSpecialChar SpecialChar hi def link jpropertiesError Error let b:current_syntax = "jproperties" if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'json' endif syntax match jsonNoise /\%(:\|,\)/ syn match jsonStringMatch /"\([^"]\|\\\"\)\+"\ze[[:blank:]\r\n]*[,}\]]/ contains=jsonString if has('conceal') syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ concealends contains=jsonEscape contained else syn region jsonString oneline matchgroup=jsonQuote start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=jsonEscape contained endif syn region jsonStringSQError oneline start=+'+ skip=+\\\\\|\\"+ end=+'+ syn match jsonKeywordMatch /"\([^"]\|\\\"\)\+"[[:blank:]\r\n]*\:/ contains=jsonKeyword if has('conceal') syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ concealends contained else syn region jsonKeyword matchgroup=jsonQuote start=/"/ end=/"\ze[[:blank:]\r\n]*\:/ contained endif syn match jsonEscape "\\["\\/bfnrt]" contained syn match jsonEscape "\\u\x\{4}" contained syn match jsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>\ze[[:blank:]\r\n]*[,}\]]" if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1) syn match jsonNoQuotesError "\<[[:alpha:]][[:alnum:]]*\>" syn match jsonTripleQuotesError /"""/ syn match jsonNumError "-\=\<0\d\.\d*\>" syn match jsonNumError "\:\@<=[[:blank:]\r\n]*\zs\.\d\+" syn match jsonCommentError "//.*" syn match jsonCommentError "\(/\*\)\|\(\*/\)" syn match jsonSemicolonError ";" syn match jsonTrailingCommaError ",\_s*[}\]]" syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/ syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value endif syn match jsonPadding "\%^[[:blank:]\r\n]*[_$[:alpha:]][_$[:alnum:]]*[[:blank:]\r\n]*(" syn match jsonPadding ");[[:blank:]\r\n]*\%$" syn match jsonBoolean /\(true\|false\)\(\_s\+\ze"\)\@!/ syn keyword jsonNull null syn region jsonFold matchgroup=jsonBraces start="{" end=/}\(\_s\+\ze\("\|{\)\)\@!/ transparent fold syn region jsonFold matchgroup=jsonBraces start="\[" end=/]\(\_s\+\ze"\)\@!/ transparent fold hi def link jsonPadding Operator hi def link jsonString String hi def link jsonTest Label hi def link jsonEscape Special hi def link jsonNumber Number hi def link jsonBraces Delimiter hi def link jsonNull Function hi def link jsonBoolean Boolean hi def link jsonKeyword Label if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1) hi def link jsonNumError Error hi def link jsonCommentError Error hi def link jsonSemicolonError Error hi def link jsonTrailingCommaError Error hi def link jsonMissingCommaError Error hi def link jsonStringSQError Error hi def link jsonNoQuotesError Error hi def link jsonTripleQuotesError Error endif hi def link jsonQuote Quote hi def link jsonNoise Noise let b:current_syntax = "json" if main_syntax == 'json' unlet main_syntax endif if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'jsp' endif runtime! syntax/html.vim unlet b:current_syntax syn case match syn include @jspJava syntax/java.vim syn region jspScriptlet matchgroup=jspTag start=/<%/ keepend end=/%>/ contains=@jspJava syn region jspComment start=/<%--/ end=/--%>/ syn region jspDecl matchgroup=jspTag start=/<%!/ keepend end=/%>/ contains=@jspJava syn region jspExpr matchgroup=jspTag start=/<%=/ keepend end=/%>/ contains=@jspJava syn region jspDirective start=/<%@/ end=/%>/ contains=htmlString,jspDirName,jspDirArg syn keyword jspDirName contained include page taglib syn keyword jspDirArg contained file uri prefix language extends import session buffer autoFlush syn keyword jspDirArg contained isThreadSafe info errorPage contentType isErrorPage syn region jspCommand start=// end=/\/>/ contains=htmlString,jspCommandName,jspCommandArg syn keyword jspCommandName contained include forward getProperty plugin setProperty useBean param params fallback syn keyword jspCommandArg contained id scope class type beanName page flush name value property syn keyword jspCommandArg contained code codebase name archive align height syn keyword jspCommandArg contained width hspace vspace jreversion nspluginurl iepluginurl syn clear htmlTag syn region htmlTag start=+<[^/%]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,jspExpr,javaScript hi def link htmlComment Comment hi def link htmlCommentPart Comment hi def link jspComment htmlComment hi def link jspTag htmlTag hi def link jspDirective jspTag hi def link jspDirName htmlTagName hi def link jspDirArg htmlArg hi def link jspCommand jspTag hi def link jspCommandName htmlTagName hi def link jspCommandArg htmlArg if main_syntax == 'jsp' unlet main_syntax endif let b:current_syntax = "jsp" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if exists("g:kconfig_syntax_heavy") syn match kconfigBegin '^' nextgroup=kconfigKeyword \ skipwhite syn keyword kconfigTodo contained TODO FIXME XXX NOTE syn match kconfigComment display '#.*$' contains=kconfigTodo syn keyword kconfigKeyword config nextgroup=kconfigSymbol \ skipwhite syn keyword kconfigKeyword menuconfig nextgroup=kconfigSymbol \ skipwhite syn keyword kconfigKeyword comment menu mainmenu \ nextgroup=kconfigKeywordPrompt \ skipwhite syn keyword kconfigKeyword choice \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigKeyword endmenu endchoice syn keyword kconfigPreProc source \ nextgroup=kconfigPath \ skipwhite syn keyword kconfigConditional if endif \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigKeywordPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn match kconfigPath '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+' \ contained syn match kconfigSymbol '\<\k\+\>' \ contained \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn cluster kconfigConfigOptions contains=kconfigTypeDefinition, \ kconfigInputPrompt, \ kconfigDefaultValue, \ kconfigDependencies, \ kconfigReverseDependencies, \ kconfigNumericalRanges, \ kconfigHelpText, \ kconfigDefBool, \ kconfigOptional syn keyword kconfigTypeDefinition bool boolean tristate string hex int \ contained \ nextgroup=kconfigTypeDefPrompt, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigTypeDefPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigTypeDefPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigInputPrompt prompt \ contained \ nextgroup=kconfigPromptPrompt \ skipwhite syn match kconfigPromptPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigPromptPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigDefaultValue default \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigDependencies 'depends on\|requires' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn keyword kconfigReverseDependencies select \ contained \ nextgroup=@kconfigRevDepSymbol \ skipwhite syn cluster kconfigRevDepSymbol contains=kconfigRevDepCSymbol, \ kconfigRevDepNCSymbol syn match kconfigRevDepCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigRevDepCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigRevDepNCSymbol '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigNumericalRanges range \ contained \ nextgroup=@kconfigRangeSymbol \ skipwhite syn cluster kconfigRangeSymbol contains=kconfigRangeCSymbol, \ kconfigRangeNCSymbol syn match kconfigRangeCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigRangeSymbol2 \ skipwhite skipnl syn match kconfigRangeCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigRangeSymbol2 \ skipwhite skipnl syn match kconfigRangeNCSymbol '\<\k\+\>' \ contained \ nextgroup=@kconfigRangeSymbol2 \ skipwhite skipnl syn cluster kconfigRangeSymbol2 contains=kconfigRangeCSymbol2, \ kconfigRangeNCSymbol2 syn match kconfigRangeCSymbol2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigRangeNCSymbol2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn region kconfigHelpText contained \ matchgroup=kconfigConfigOption \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' \ skip='^$' \ end='^\z1\@!' \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigDefBool def_bool \ contained \ nextgroup=@kconfigDefBoolSymbol \ skipwhite syn cluster kconfigDefBoolSymbol contains=kconfigDefBoolCSymbol, \ kconfigDefBoolNCSymbol syn match kconfigDefBoolCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigDefBoolCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigDefBoolNCSymbol '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ @kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigOptional optional \ contained \ nextgroup=@kconfigConfigOptions \ skipwhite skipnl syn keyword kconfigConfigOptionIf if \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym, \ kconfigConfOptIfExprNeg, \ kconfigConfOptIfExprGroup syn cluster kconfigConfOptIfExprSym contains=kconfigConfOptIfExprCSym, \ kconfigConfOptIfExprNCSym syn match kconfigConfOptIfExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr, \ kconfigConfOptIfExprEq, \ kconfigConfOptIfExprNEq \ skipwhite skipnl syn match kconfigConfOptIfExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr, \ kconfigConfOptIfExprEq, \ kconfigConfOptIfExprNEq \ skipwhite skipnl syn match kconfigConfOptIfExprNCSym '\<\k\+\>' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr, \ kconfigConfOptIfExprEq, \ kconfigConfOptIfExprNEq \ skipwhite skipnl syn cluster kconfigConfOptIfExprSym2 contains=kconfigConfOptIfExprCSym2, \ kconfigConfOptIfExprNCSym2 syn match kconfigConfOptIfExprEq '=' \ contained \ nextgroup=@kconfigConfOptIfExprSym2 \ skipwhite syn match kconfigConfOptIfExprNEq '!=' \ contained \ nextgroup=@kconfigConfOptIfExprSym2 \ skipwhite syn match kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr \ skipwhite skipnl syn match kconfigConfOptIfExprNCSym2 '\<\k\+\>' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr \ skipwhite skipnl syn match kconfigConfOptIfExprNeg '!' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigConfOptIfExprAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigConfOptIfExprOr '||' \ contained \ nextgroup=@kconfigConfigOptionIfExpr \ skipwhite syn match kconfigConfOptIfExprGroup '(' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym, \ kconfigConfOptIfGExpNeg, \ kconfigConfOptIfExprGroup syn cluster kconfigConfOptIfGExpSym contains=kconfigConfOptIfGExpCSym, \ kconfigConfOptIfGExpNCSym syn match kconfigConfOptIfGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=@kconfigConfigIf, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr, \ kconfigConfOptIfGExpEq, \ kconfigConfOptIfGExpNEq \ skipwhite skipnl syn match kconfigConfOptIfGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=@kconfigConfigIf, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr, \ kconfigConfOptIfGExpEq, \ kconfigConfOptIfGExpNEq \ skipwhite skipnl syn match kconfigConfOptIfGExpNCSym '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr, \ kconfigConfOptIfGExpEq, \ kconfigConfOptIfGExpNEq \ skipwhite skipnl syn cluster kconfigConfOptIfGExpSym2 contains=kconfigConfOptIfGExpCSym2, \ kconfigConfOptIfGExpNCSym2 syn match kconfigConfOptIfGExpEq '=' \ contained \ nextgroup=@kconfigConfOptIfGExpSym2 \ skipwhite syn match kconfigConfOptIfGExpNEq '!=' \ contained \ nextgroup=@kconfigConfOptIfGExpSym2 \ skipwhite syn match kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr \ skipwhite skipnl syn match kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr \ skipwhite skipnl syn match kconfigConfOptIfGExpNCSym2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptIfExprGrpE, \ kconfigConfOptIfGExpAnd, \ kconfigConfOptIfGExpOr \ skipwhite skipnl syn match kconfigConfOptIfGExpNeg '!' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn match kconfigConfOptIfGExpAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn match kconfigConfOptIfGExpOr '||' \ contained \ nextgroup=@kconfigConfigOptionIfGExp \ skipwhite syn match kconfigConfOptIfExprGrpE ')' \ contained \ nextgroup=@kconfigConfigOptions, \ kconfigConfOptIfExprAnd, \ kconfigConfOptIfExprOr \ skipwhite skipnl syn cluster kconfigConfigOptionExpr contains=@kconfigConfOptExprSym, \ kconfigConfOptExprNeg, \ kconfigConfOptExprGroup syn cluster kconfigConfOptExprSym contains=kconfigConfOptExprCSym, \ kconfigConfOptExprNCSym syn match kconfigConfOptExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ kconfigConfOptExprEq, \ kconfigConfOptExprNEq, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ kconfigConfOptExprEq, \ kconfigConfOptExprNEq, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprNCSym '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ kconfigConfOptExprEq, \ kconfigConfOptExprNEq, \ @kconfigConfigOptions \ skipwhite skipnl syn cluster kconfigConfOptExprSym2 contains=kconfigConfOptExprCSym2, \ kconfigConfOptExprNCSym2 syn match kconfigConfOptExprEq '=' \ contained \ nextgroup=@kconfigConfOptExprSym2 \ skipwhite syn match kconfigConfOptExprNEq '!=' \ contained \ nextgroup=@kconfigConfOptExprSym2 \ skipwhite syn match kconfigConfOptExprCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprNCSym2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr, \ @kconfigConfigOptions \ skipwhite skipnl syn match kconfigConfOptExprNeg '!' \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigConfOptExprAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigConfOptExprOr '||' \ contained \ nextgroup=@kconfigConfigOptionExpr \ skipwhite syn match kconfigConfOptExprGroup '(' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn cluster kconfigConfigOptionGExp contains=@kconfigConfOptGExpSym, \ kconfigConfOptGExpNeg, \ kconfigConfOptGExpGroup syn cluster kconfigConfOptGExpSym contains=kconfigConfOptGExpCSym, \ kconfigConfOptGExpNCSym syn match kconfigConfOptGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr, \ kconfigConfOptGExpEq, \ kconfigConfOptGExpNEq \ skipwhite skipnl syn match kconfigConfOptGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr, \ kconfigConfOptGExpEq, \ kconfigConfOptGExpNEq \ skipwhite skipnl syn match kconfigConfOptGExpNCSym '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr, \ kconfigConfOptGExpEq, \ kconfigConfOptGExpNEq \ skipwhite skipnl syn cluster kconfigConfOptGExpSym2 contains=kconfigConfOptGExpCSym2, \ kconfigConfOptGExpNCSym2 syn match kconfigConfOptGExpEq '=' \ contained \ nextgroup=@kconfigConfOptGExpSym2 \ skipwhite syn match kconfigConfOptGExpNEq '!=' \ contained \ nextgroup=@kconfigConfOptGExpSym2 \ skipwhite syn match kconfigConfOptGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr \ skipwhite skipnl syn match kconfigConfOptGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr \ skipwhite skipnl syn match kconfigConfOptGExpNCSym2 '\<\k\+\>' \ contained \ nextgroup=kconfigConfOptExprGrpE, \ kconfigConfOptGExpAnd, \ kconfigConfOptGExpOr \ skipwhite skipnl syn match kconfigConfOptGExpNeg '!' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn match kconfigConfOptGExpAnd '&&' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn match kconfigConfOptGExpOr '||' \ contained \ nextgroup=@kconfigConfigOptionGExp \ skipwhite syn match kconfigConfOptExprGrpE ')' \ contained \ nextgroup=kconfigConfigOptionIf, \ kconfigConfOptExprAnd, \ kconfigConfOptExprOr \ skipwhite skipnl syn sync minlines=50 hi def link kconfigTodo Todo hi def link kconfigComment Comment hi def link kconfigKeyword Keyword hi def link kconfigPreProc PreProc hi def link kconfigConditional Conditional hi def link kconfigPrompt String hi def link kconfigKeywordPrompt kconfigPrompt hi def link kconfigPath String hi def link kconfigSymbol String hi def link kconfigConstantSymbol Constant hi def link kconfigConfigOption Type hi def link kconfigTypeDefinition kconfigConfigOption hi def link kconfigTypeDefPrompt kconfigPrompt hi def link kconfigInputPrompt kconfigConfigOption hi def link kconfigPromptPrompt kconfigPrompt hi def link kconfigDefaultValue kconfigConfigOption hi def link kconfigDependencies kconfigConfigOption hi def link kconfigReverseDependencies kconfigConfigOption hi def link kconfigRevDepCSymbol kconfigConstantSymbol hi def link kconfigRevDepNCSymbol kconfigSymbol hi def link kconfigNumericalRanges kconfigConfigOption hi def link kconfigRangeCSymbol kconfigConstantSymbol hi def link kconfigRangeNCSymbol kconfigSymbol hi def link kconfigRangeCSymbol2 kconfigConstantSymbol hi def link kconfigRangeNCSymbol2 kconfigSymbol hi def link kconfigHelpText Normal hi def link kconfigDefBool kconfigConfigOption hi def link kconfigDefBoolCSymbol kconfigConstantSymbol hi def link kconfigDefBoolNCSymbol kconfigSymbol hi def link kconfigOptional kconfigConfigOption hi def link kconfigConfigOptionIf Conditional hi def link kconfigConfOptIfExprCSym kconfigConstantSymbol hi def link kconfigConfOptIfExprNCSym kconfigSymbol hi def link kconfigOperator Operator hi def link kconfigConfOptIfExprEq kconfigOperator hi def link kconfigConfOptIfExprNEq kconfigOperator hi def link kconfigConfOptIfExprCSym2 kconfigConstantSymbol hi def link kconfigConfOptIfExprNCSym2 kconfigSymbol hi def link kconfigConfOptIfExprNeg kconfigOperator hi def link kconfigConfOptIfExprAnd kconfigOperator hi def link kconfigConfOptIfExprOr kconfigOperator hi def link kconfigDelimiter Delimiter hi def link kconfigConfOptIfExprGroup kconfigDelimiter hi def link kconfigConfOptIfGExpCSym kconfigConstantSymbol hi def link kconfigConfOptIfGExpNCSym kconfigSymbol hi def link kconfigConfOptIfGExpEq kconfigOperator hi def link kconfigConfOptIfGExpNEq kconfigOperator hi def link kconfigConfOptIfGExpCSym2 kconfigConstantSymbol hi def link kconfigConfOptIfGExpNCSym2 kconfigSymbol hi def link kconfigConfOptIfGExpNeg kconfigOperator hi def link kconfigConfOptIfGExpAnd kconfigOperator hi def link kconfigConfOptIfGExpOr kconfigOperator hi def link kconfigConfOptIfExprGrpE kconfigDelimiter hi def link kconfigConfOptExprCSym kconfigConstantSymbol hi def link kconfigConfOptExprNCSym kconfigSymbol hi def link kconfigConfOptExprEq kconfigOperator hi def link kconfigConfOptExprNEq kconfigOperator hi def link kconfigConfOptExprCSym2 kconfigConstantSymbol hi def link kconfigConfOptExprNCSym2 kconfigSymbol hi def link kconfigConfOptExprNeg kconfigOperator hi def link kconfigConfOptExprAnd kconfigOperator hi def link kconfigConfOptExprOr kconfigOperator hi def link kconfigConfOptExprGroup kconfigDelimiter hi def link kconfigConfOptGExpCSym kconfigConstantSymbol hi def link kconfigConfOptGExpNCSym kconfigSymbol hi def link kconfigConfOptGExpEq kconfigOperator hi def link kconfigConfOptGExpNEq kconfigOperator hi def link kconfigConfOptGExpCSym2 kconfigConstantSymbol hi def link kconfigConfOptGExpNCSym2 kconfigSymbol hi def link kconfigConfOptGExpNeg kconfigOperator hi def link kconfigConfOptGExpAnd kconfigOperator hi def link kconfigConfOptGExpOr kconfigOperator hi def link kconfigConfOptExprGrpE kconfigConfOptIfExprGroup else syn keyword kconfigTodo contained TODO FIXME XXX NOTE syn match kconfigComment display '#.*$' contains=kconfigTodo syn keyword kconfigKeyword config menuconfig comment mainmenu syn keyword kconfigConditional menu endmenu choice endchoice if endif syn keyword kconfigPreProc source \ nextgroup=kconfigPath \ skipwhite syn keyword kconfigTriState y m n syn match kconfigSpecialChar contained '\\.' syn match kconfigSpecialChar '\\$' syn region kconfigPath matchgroup=kconfigPath \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ \ contains=kconfigSpecialChar syn region kconfigPath matchgroup=kconfigPath \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ \ contains=kconfigSpecialChar syn match kconfigPath '\S\+' \ contained syn region kconfigString matchgroup=kconfigString \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ \ contains=kconfigSpecialChar syn region kconfigString matchgroup=kconfigString \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ \ contains=kconfigSpecialChar syn keyword kconfigType bool boolean tristate string hex int syn keyword kconfigOption prompt default requires select range \ optional syn match kconfigOption 'depends\%( on\)\=' syn keyword kconfigMacro def_bool def_tristate syn region kconfigHelpText \ matchgroup=kconfigOption \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' \ skip='^$' \ end='^\z1\@!' syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---' hi def link kconfigTodo Todo hi def link kconfigComment Comment hi def link kconfigKeyword Keyword hi def link kconfigConditional Conditional hi def link kconfigPreProc PreProc hi def link kconfigTriState Boolean hi def link kconfigSpecialChar SpecialChar hi def link kconfigPath String hi def link kconfigString String hi def link kconfigType Type hi def link kconfigOption Identifier hi def link kconfigHelpText Normal hi def link kconfigmacro Macro endif let b:current_syntax = "kconfig" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn include @pyth $VIMRUNTIME/syntax/python.vim syn match kivyPreProc /#:.*/ syn match kivyComment /#.*/ syn match kivyRule /<\I\i*\(,\s*\I\i*\)*>:/ syn match kivyAttribute /\<\I\i*\>/ nextgroup=kivyValue syn region kivyValue start=":" end=/$/ contains=@pyth skipwhite syn region kivyAttribute matchgroup=kivyIdent start=/[\a_][\a\d_]*:/ end=/$/ contains=@pyth skipwhite hi def link kivyPreproc PreProc hi def link kivyComment Comment hi def link kivyRule Function hi def link kivyIdent Statement hi def link kivyAttribute Label let b:current_syntax = "kivy" if exists("b:current_syntax") finish endif syn case match syn keyword kixTODO TODO FIX XXX contained syn case ignore syn match kixStatement "?" syn keyword kixStatement beep big break syn keyword kixStatement call cd cls color cookie1 copy syn keyword kixStatement del dim display syn keyword kixStatement exit syn keyword kixStatement flushkb syn keyword kixStatement get gets global go gosub goto syn keyword kixStatement md syn keyword kixStatement password play syn keyword kixStatement quit syn keyword kixStatement rd return run syn keyword kixStatement set setl setm settime shell sleep small syn keyword kixStatement use syn keyword kixStatement debug function endfunction redim syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE syn match kixLocalVar "\$\w\+" syn match kixMacro "@\w\+" syn match kixEnvVar "%\w\+" syn match kixLabel ":\w\+\>" syn match kixStringError +".*\|'.*+ syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar syn match kixOperator "+\|-\|\*\|/\|=\|&\||" syn keyword kixOperator and or syn match kixOperator "==" syn keyword kixOperator not syn match kixInteger "-\=\<\d\+\>" contains=NONE syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE syn match kixHex "\&\x\+\>" contains=NONE syn keyword kixConstant on off syn match kixComment ";.*$" contains=kixTODO syn match kixParenCloseError ")" syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL syn match kixBrackCloseError "\]" syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK syn match kixIfError "\\|\\|\" syn match kixIfOK contained "\\|\\|\" syn region kixIf transparent matchgroup=kixIfOK start="\" end="\" contains=ALLBUT,@kixIfBut syn match kixSelectError "\\|\\|\" syn match kixSelectOK contained "\\|\\|\" syn region kixSelect transparent matchgroup=kixSelectOK start="\" end="\" contains=ALLBUT,@kixSelectBut syn match kixDoError "\\|\" syn match kixDoOK contained "\\|\" syn region kixDo transparent matchgroup=kixDoOK start="\" end="\" contains=ALLBUT,@kixDoBut syn match kixWhileError "\\|\" syn match kixWhileOK contained "\\|\" syn region kixWhile transparent matchgroup=kixWhileOK start="\" end="\" contains=ALLBUT,@kixWhileBut syn match kixForNextError "\\|\\|\\|\" syn match kixForNextOK contained "\\|\\|\\|\" syn region kixForNext transparent matchgroup=kixForNextOK start="\" end="\" contains=ALLBUT,@kixForBut syn match kixForEachError "\\|\\|\" syn match kixForEachOK contained "\\|\\|\" syn region kixForEach transparent matchgroup=kixForEachOK start="\" end="\" contains=ALLBUT,@kixForEachBut syn match kixExpression "<\|>\|<=\|>=\|<>" hi def link kixDoubleString String hi def link kixSingleString String hi def link kixStatement Statement hi def link kixRepeat Repeat hi def link kixComment Comment hi def link kixBuiltin Function hi def link kixLocalVar Special hi def link kixMacro Special hi def link kixEnvVar Special hi def link kixLabel Type hi def link kixFunction Function hi def link kixInteger Number hi def link kixHex Number hi def link kixFloat Number hi def link kixOperator Operator hi def link kixExpression Operator hi def link kixParenCloseError Error hi def link kixBrackCloseError Error hi def link kixStringError Error hi def link kixWhileError Error hi def link kixWhileOK Conditional hi def link kixDoError Error hi def link kixDoOK Conditional hi def link kixIfError Error hi def link kixIfOK Conditional hi def link kixSelectError Error hi def link kixSelectOK Conditional hi def link kixForNextError Error hi def link kixForNextOK Conditional hi def link kixForEachError Error hi def link kixForEachOK Conditional let b:current_syntax = "kix" if exists("b:current_syntax") finish endif syn keyword kscriptPreCondit import from syn keyword kscriptHardCoded print println connect length arg mid upper lower isEmpty toInt toFloat findApplication syn keyword kscriptConditional if else switch syn keyword kscriptRepeat while for do foreach syn keyword kscriptExceptions emit catch raise try signal syn keyword kscriptFunction class struct enum syn keyword kscriptConst FALSE TRUE false true syn keyword kscriptStatement return delete syn keyword kscriptLabel case default syn keyword kscriptStorageClass const syn keyword kscriptType in out inout var syn keyword kscriptTodo contained TODO FIXME XXX syn region kscriptComment start="/\*" end="\*/" contains=kscriptTodo syn match kscriptComment "//.*" contains=kscriptTodo syn match kscriptComment "#.*$" contains=kscriptTodo syn region kscriptString start=+'+ end=+'+ skip=+\\\\\|\\'+ syn region kscriptString start=+"+ end=+"+ skip=+\\\\\|\\"+ syn region kscriptString start=+"""+ end=+"""+ syn region kscriptString start=+'''+ end=+'''+ hi def link kscriptConditional Conditional hi def link kscriptRepeat Repeat hi def link kscriptExceptions Statement hi def link kscriptFunction Function hi def link kscriptConst Constant hi def link kscriptStatement Statement hi def link kscriptLabel Label hi def link kscriptStorageClass StorageClass hi def link kscriptType Type hi def link kscriptTodo Todo hi def link kscriptComment Comment hi def link kscriptString String hi def link kscriptPreCondit PreCondit hi def link kscriptHardCoded Statement let b:current_syntax = "kscript" if exists("b:current_syntax") finish endif runtime! syntax/cpp.vim unlet b:current_syntax syn region cCppString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat syn keyword cType integer real casestring nocasestring voidptr list syn keyword cType uview rview uview_enum rview_enum syn clear cUserCont syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel contained syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel contained syn match cUserCont "^\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained syn match cUserCont ";\s*\I\i*\s*:[^:]"me=e-1 contains=cUserLabel contained syn match kwtPhylum "^\I\i*:$" syn match kwtPhylum "^\I\i*\s*{\s*\(!\|\I\)\i*\s*}\s*:$" syn keyword kwtStatement with foreach afterforeach provided syn match kwtDecl "%\(uviewvar\|rviewvar\)" syn match kwtDecl "^%\(uview\|rview\|ctor\|dtor\|base\|storageclass\|list\|attr\|member\|option\)" syn match kwtOption "no-csgio\|no-unparse\|no-rewrite\|no-printdot\|no-hashtables\|smart-pointer\|weak-pointer" syn match kwtSep "^%}$" syn match kwtSep "^%{\(\s\+\I\i*\)*$" syn match kwtCast "\" syn match laceNumber "\<[01]\+[bB]\>" syn match laceNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\=" syn match laceNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\=" syn match laceComment "--.*" contains=laceTodo syn case match syn keyword laceTodo TODO XXX FIXME syn match laceClassName "\<[A-Z][A-Z0-9_]*\>" syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*:" syn match laceCluster "[a-zA-Z][a-zA-Z0-9_]*\s*(\s*[a-zA-Z][a-zA-Z0-9_]*\s*)\s*:" syn match laceParenError ")" syn match laceBracketError "\]" syn region laceGeneric transparent matchgroup=laceBrackets start="\[" end="\]" contains=ALLBUT,laceBracketError syn region laceParen transparent start="(" end=")" contains=ALLBUT,laceParenError syn sync lines=40 hi def link laceTopStruct PreProc hi def link laceOptionClause Statement hi def link laceOptionMark Constant hi def link laceClusterProp Label hi def link laceAdaptClassName Label hi def link laceExternal Statement hi def link laceCluster ModeMsg hi def link laceEscape Special hi def link laceBool Boolean hi def link laceString String hi def link laceCharacter Character hi def link laceClassName Type hi def link laceNumber Number hi def link laceOperator Special hi def link laceArray Special hi def link laceExport Special hi def link laceCreation Special hi def link laceBrackets Special hi def link laceConstraint Special hi def link laceComment Comment hi def link laceError Error hi def link laceStringError Error hi def link laceParenError Error hi def link laceBracketError Error hi def link laceTodo Todo let b:current_syntax = "lace" if exists("b:current_syntax") finish endif syn match latteError "[{}\\]" syn match latteOther "\\{" syn match latteOther "\\}" syn match latteOther "\\\\" setlocal iskeyword=33,43,45,48-57,63,65-90,95,97-122,_ syn region latteVar matchgroup=SpecialChar start=!\\[A-Za-z_]!rs=s+1 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther syn region latteVar matchgroup=SpecialChar start=!\\[=\&][A-Za-z_]!rs=s+2 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther syn region latteString start=+\\"+ skip=+\\\\"+ end=+\\"+ syn region latteGroup matchgroup=Delimiter start="{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteUnquote matchgroup=Delimiter start="\\,{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteSplice matchgroup=Delimiter start="\\,@{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteQuote matchgroup=Delimiter start="\\'{" skip="\\[{}]" matchgroup=Delimiter end="}" syn region latteQuote matchgroup=Delimiter start="\\`{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=latteUnquote,latteSplice syn match latteOperator '\\/' syn match latteOperator '=' syn match latteComment "\\;.*$" syn keyword latteSyntax __FILE__ __latte-version__ contained syn keyword latteSyntax _bal-tag _pre _tag add and append apply back contained syn keyword latteSyntax caar cadr car cdar cddr cdr ceil compose contained syn keyword latteSyntax concat cons def defmacro divide downcase contained syn keyword latteSyntax empty? equal? error explode file-contents contained syn keyword latteSyntax floor foreach front funcall ge? getenv contained syn keyword latteSyntax greater-equal? greater? group group? gt? html contained syn keyword latteSyntax if include lambda le? length less-equal? contained syn keyword latteSyntax less? let lmap load-file load-library lt? macro contained syn keyword latteSyntax member? modulo multiply not nth operator? contained syn keyword latteSyntax or ordinary quote process-output push-back contained syn keyword latteSyntax push-front quasiquote quote random rdc reverse contained syn keyword latteSyntax set! snoc splicing unquote strict-html4 contained syn keyword latteSyntax string-append string-ge? string-greater-equal? contained syn keyword latteSyntax string-greater? string-gt? string-le? contained syn keyword latteSyntax string-less-equal? string-less? string-lt? contained syn keyword latteSyntax string? subseq substr subtract contained syn keyword latteSyntax upcase useless warn while zero? contained syn sync match matchPlace grouphere NONE "^[^ \t]" hi def link latteSyntax Statement hi def link latteVar Function hi def link latteString String hi def link latteQuote String hi def link latteDelimiter Delimiter hi def link latteOperator Operator hi def link latteComment Comment hi def link latteError Error let b:current_syntax = "latte" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword ldTodo contained TODO FIXME XXX NOTE syn region ldComment start='/\*' end='\*/' contains=ldTodo,@Spell syn region ldFileName start=+"+ end=+"+ syn keyword ldPreProc SECTIONS MEMORY OVERLAY PHDRS VERSION INCLUDE syn match ldPreProc '\' syn match ldNumber display '\<0[xX]\x\+\>' syn match ldNumber display '\d\+[KM]\>' contains=ldNumberMult syn match ldNumberMult display '[KM]\>' syn match ldOctal contained display '\<0\o\+\>' \ contains=ldOctalZero syn match ldOctalZero contained display '\<0' syn match ldOctalError contained display '\<0\o*[89]\d*\>' hi def link ldTodo Todo hi def link ldComment Comment hi def link ldFileName String hi def link ldPreProc PreProc hi def link ldFunction Identifier hi def link ldKeyword Keyword hi def link ldType Type hi def link ldDataType ldType hi def link ldOutputType ldType hi def link ldPTType ldType hi def link ldSpecial Special hi def link ldIdentifier Identifier hi def link ldSections Constant hi def link ldSpecSections Special hi def link ldNumber Number hi def link ldNumberMult PreProc hi def link ldOctal ldNumber hi def link ldOctalZero PreProc hi def link ldOctalError Error let b:current_syntax = "ld" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword ldapconfTodo contained TODO FIXME XXX NOTE syn region ldapconfComment display oneline start='^\s*#' end='$' \ contains=ldapconfTodo, \ @Spell syn match ldapconfBegin display '^' \ nextgroup=ldapconfOption, \ ldapconfDeprOption, \ ldapconfComment syn case ignore syn keyword ldapconfOption contained URI \ nextgroup=ldapconfURI \ skipwhite syn keyword ldapconfOption contained \ BASE \ BINDDN \ nextgroup=ldapconfDNAttrType \ skipwhite syn keyword ldapconfDeprOption contained \ HOST \ nextgroup=ldapconfHost \ skipwhite syn keyword ldapconfDeprOption contained \ PORT \ nextgroup=ldapconfPort \ skipwhite syn keyword ldapconfOption contained \ REFERRALS \ nextgroup=ldapconfBoolean \ skipwhite syn keyword ldapconfOption contained \ SIZELIMIT \ TIMELIMIT \ nextgroup=ldapconfInteger \ skipwhite syn keyword ldapconfOption contained \ DEREF \ nextgroup=ldapconfDerefWhen \ skipwhite syn keyword ldapconfOption contained \ SASL_MECH \ nextgroup=ldapconfSASLMechanism \ skipwhite syn keyword ldapconfOption contained \ SASL_REALM \ nextgroup=ldapconfSASLRealm \ skipwhite syn keyword ldapconfOption contained \ SASL_AUTHCID \ SASL_AUTHZID \ nextgroup=ldapconfSASLAuthID \ skipwhite syn keyword ldapconfOption contained \ SASL_SECPROPS \ nextgroup=ldapconfSASLSecProps \ skipwhite syn keyword ldapconfOption contained \ TLS_CACERT \ TLS_CERT \ TLS_KEY \ TLS_RANDFILE \ nextgroup=ldapconfFilename \ skipwhite syn keyword ldapconfOption contained \ TLS_CACERTDIR \ nextgroup=ldapconfPath \ skipwhite syn keyword ldapconfOption contained \ TLS_CIPHER_SUITE \ nextgroup=@ldapconfTLSCipher \ skipwhite syn keyword ldapconfOption contained \ TLS_REQCERT \ nextgroup=ldapconfTLSCertCheck \ skipwhite syn keyword ldapconfOption contained \ TLS_CRLCHECK \ nextgroup=ldapconfTLSCRLCheck \ skipwhite syn case match syn match ldapconfURI contained display \ 'ldaps\=://[^[:space:]:]\+\%(:\d\+\)\=' \ nextgroup=ldapconfURI \ skipwhite syn match ldapconfDNAttrType contained display \ '\a[a-zA-Z0-9-]\+\|\d\+\%(\.\d\+\)*' \ nextgroup=ldapconfDNAttrTypeEq syn match ldapconfDNAttrTypeEq contained display \ '=' \ nextgroup=ldapconfDNAttrValue syn match ldapconfDNAttrValue contained display \ '\%([^,=+<>#;\\"]\|\\\%([,=+<>#;\\"]\|\x\x\)\)*\|#\%(\x\x\)\+\|"\%([^\\"]\|\\\%([,=+<>#;\\"]\|\x\x\)\)*"' \ nextgroup=ldapconfDNSeparator syn match ldapconfDNSeparator contained display \ '[+,]' \ nextgroup=ldapconfDNAttrType syn match ldapconfHost contained display \ '[^[:space:]:]\+\%(:\d\+\)\=' \ nextgroup=ldapconfHost \ skipwhite syn match ldapconfPort contained display \ '\d\+' syn keyword ldapconfBoolean contained \ on \ true \ yes \ off \ false \ no syn match ldapconfInteger contained display \ '\d\+' syn keyword ldapconfDerefWhen contained \ never \ searching \ finding \ always syn keyword ldapconfSASLMechanism contained \ KERBEROS_V4 \ GSSAPI \ SKEY \ EXTERNAL \ ANONYMOUS \ OTP \ PLAIN \ SECURID \ NTLM \ NMAS_LOGIN \ NMAS_AUTHEN \ KERBEROS_V5 syn match ldapconfSASLMechanism contained display \ 'CRAM-MD5\|GSS-SPNEGO\|DIGEST-MD5\|9798-[UM]-\%(RSA-SHA1-ENC\|\%(EC\)\=DSA-SHA1\)\|NMAS-SAMBA-AUTH' syn match ldapconfSASLRealm contained display \ '\S\+' syn match ldapconfSASLAuthID contained display \ '\S\+' syn keyword ldapconfSASLSecProps contained \ none \ noplain \ noactive \ nodict \ noanonymous \ forwardsec \ passcred \ nextgroup=ldapconfSASLSecPSep syn keyword ldapconfSASLSecProps contained \ minssf \ maxssf \ maxbufsize \ nextgroup=ldapconfSASLSecPEq syn match ldapconfSASLSecPEq contained display \ '=' \ nextgroup=ldapconfSASLSecFactor syn match ldapconfSASLSecFactor contained display \ '\d\+' \ nextgroup=ldapconfSASLSecPSep syn match ldapconfSASLSecPSep contained display \ ',' \ nextgroup=ldapconfSASLSecProps syn match ldapconfFilename contained display \ '.\+' syn match ldapconfPath contained display \ '.\+' syn cluster ldapconfTLSCipher contains=ldapconfTLSCipherOp, \ ldapconfTLSCipherName, \ ldapconfTLSCipherSort syn match ldapconfTLSCipherOp contained display \ '[+!-]' \ nextgroup=ldapconfTLSCipherName syn keyword ldapconfTLSCipherName contained \ DEFAULT \ COMPLEMENTOFDEFAULT \ ALL \ COMPLEMENTOFALL \ HIGH \ MEDIUM \ LOW \ EXP \ EXPORT \ EXPORT40 \ EXPORT56 \ eNULL \ NULL \ aNULL \ kRSA \ RSA \ kEDH \ kDHr \ kDHd \ aRSA \ aDSS \ DSS \ aDH \ kFZA \ aFZA \ eFZA \ FZA \ TLSv1 \ SSLv3 \ SSLv2 \ DH \ ADH \ AES \ 3DES \ DES \ RC4 \ RC2 \ IDEA \ MD5 \ SHA1 \ SHA \ Camellia \ nextgroup=ldapconfTLSCipherSep syn match ldapconfTLSCipherSort contained display \ '@STRENGTH' \ nextgroup=ldapconfTLSCipherSep syn match ldapconfTLSCipherSep contained display \ '[:, ]' \ nextgroup=@ldapconfTLSCipher syn keyword ldapconfTLSCertCheck contained \ never \ allow \ try \ demand \ hard syn keyword ldapconfTLSCRLCheck contained \ none \ peer \ all hi def link ldapconfTodo Todo hi def link ldapconfComment Comment hi def link ldapconfOption Keyword hi def link ldapconfDeprOption Error hi def link ldapconfString String hi def link ldapconfURI ldapconfString hi def link ldapconfDNAttrType Identifier hi def link ldapconfOperator Operator hi def link ldapconfEq ldapconfOperator hi def link ldapconfDNAttrTypeEq ldapconfEq hi def link ldapconfValue ldapconfString hi def link ldapconfDNAttrValue ldapconfValue hi def link ldapconfSeparator ldapconfOperator hi def link ldapconfDNSeparator ldapconfSeparator hi def link ldapconfHost ldapconfURI hi def link ldapconfNumber Number hi def link ldapconfPort ldapconfNumber hi def link ldapconfBoolean Boolean hi def link ldapconfInteger ldapconfNumber hi def link ldapconfType Type hi def link ldapconfDerefWhen ldapconfType hi def link ldapconfDefine Define hi def link ldapconfSASLMechanism ldapconfDefine hi def link ldapconfSASLRealm ldapconfURI hi def link ldapconfSASLAuthID ldapconfValue hi def link ldapconfSASLSecProps ldapconfType hi def link ldapconfSASLSecPEq ldapconfEq hi def link ldapconfSASLSecFactor ldapconfNumber hi def link ldapconfSASLSecPSep ldapconfSeparator hi def link ldapconfFilename ldapconfString hi def link ldapconfPath ldapconfFilename hi def link ldapconfTLSCipherOp ldapconfOperator hi def link ldapconfTLSCipherName ldapconfDefine hi def link ldapconfSpecial Special hi def link ldapconfTLSCipherSort ldapconfSpecial hi def link ldapconfTLSCipherSep ldapconfSeparator hi def link ldapconfTLSCertCheck ldapconfType hi def link ldapconfTLSCRLCheck ldapconfType let b:current_syntax = "ldapconf" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn sync minlines=10 linebreaks=1 syn match ldifAttribute /^[^ #][^:]*/ contains=ldifOption display syn match ldifOption /;[^:]\+/ contained contains=ldifPunctuation display syn match ldifPunctuation /;/ contained display syn region ldifStringValue matchgroup=ldifPunctuation start=/: / end=/\_$/ skip=/\n / syn region ldifBase64Value matchgroup=ldifPunctuation start=/:: / end=/\_$/ skip=/\n / syn region ldifFileValue matchgroup=ldifPunctuation start=/:< / end=/\_$/ skip=/\n / syn region ldifComment start=/^#/ end=/\_$/ skip=/\n / hi def link ldifAttribute Type hi def link ldifOption Identifier hi def link ldifPunctuation Normal hi def link ldifStringValue String hi def link ldifBase64Value Special hi def link ldifFileValue Special hi def link ldifComment Comment let b:current_syntax = "ldif" if exists("b:current_syntax") finish endif runtime! syntax/css.vim runtime! after/syntax/css.vim syn case ignore syn cluster lessCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp syn cluster lessCssAttributes contains=css.*Attr,lessEndOfLineComment,lessComment,cssValue.*,cssColor,cssURL,lessDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp syn region lessDefinition matchgroup=cssBraces start="{" end="}" contains=TOP syn match lessProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=lessCssAttribute contained containedin=lessDefinition syn match lessProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute syn match lessProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute syn match lessCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@lessCssAttributes,lessVariable,lessFunction,lessInterpolation syn match lessDefault "!default\>" contained syn match lessVariable "@[[:alnum:]_-]\+" nextgroup=lessCssAttribute skipwhite syn match lessMedia "@media" nextgroup=lessCssAttribute skipwhite syn match lessFunction "\<\%(escape\|e\|unit\)\>(\@=" contained syn match lessFunction "\<\%(ceil\|floor\|percentage\|round\|sqrt\|abs\|sin\|asin\|cos\|acos\|tan\|atan\|pi\|pow\|min\|max\)\>(\@=" contained syn match lessFunction "\<\%(rgb\|rgba\|argb\|argb\|hsl\|hsla\|hsv\|hsva\)\>(\@=" contained syn match lessFunction "\<\%(hue\|saturation\|lightness\|red\|green\|blue\|alpha\|luma\)\>(\@=" contained syn match lessFunction "\<\%(saturate\|desaturate\|lighten\|darken\|fadein\|fadeout\|fade\|spin\|mix\|greyscale\|contrast\)\>(\@=" contained syn match lessFunction "\<\%(multiply\|screen\|overlay\|softlight\|hardlight\|difference\|exclusion\|average\|negation\)\>(\@=" contained syn match lessIdChar "#[[:alnum:]_-]\@=" nextgroup=lessId,lessClassIdCall syn match lessId "[[:alnum:]_-]\+" contained syn match lessClassIdCall "[[:alnum:]_-]\+()" contained syn match lessClassChar "\.[[:alnum:]_-]\@=" nextgroup=lessClass,lessClassCall syn match lessClass "[[:alnum:]_-]\+" contained syn match lessClassCall "[[:alnum:]_-]\+()" contained syn match lessAmpersand "&" contains=lessIdChar,lessClassChar syn region lessInclude start="@import" end=";\|$" contains=lessComment,cssURL,cssUnicodeEscape,cssMediaType,cssStringQ,cssStringQQ syn keyword lessTodo FIXME NOTE TODO OPTIMIZE XXX contained syn region lessComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell syn region lessCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell syn match lessEndOfLineComment "//.*" contains=lessComment,lessTodo,@Spell hi def link lessEndOfLineComment lessComment hi def link lessCssComment lessComment hi def link lessComment Comment hi def link lessDefault cssImportant hi def link lessVariable Identifier hi def link lessFunction PreProc hi def link lessTodo Todo hi def link lessInclude Include hi def link lessIdChar Special hi def link lessClassChar Special hi def link lessAmpersand Character hi def link lessId Identifier hi def link lessClass Type hi def link lessCssAttribute PreProc hi def link lessClassCall Type hi def link lessClassIdCall Type hi def link lessTagName cssTagName hi def link lessDeprecated cssDeprecated hi def link lessMedia cssMedia let b:current_syntax = "less" if exists("b:current_syntax") finish endif let s:Cpath= fnameescape(expand(":p:h").(exists("g:lex_uses_cpp")? "/cpp.vim" : "/c.vim")) if !filereadable(s:Cpath) for s:Cpath in split(globpath(&rtp,(exists("g:lex_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n") if filereadable(fnameescape(s:Cpath)) let s:Cpath= fnameescape(s:Cpath) break endif endfor endif exe "syn include @lexCcode ".s:Cpath syn match lexOptions '^%\s*option\>.*$' contains=lexPatString if has("folding") syn region lexAbbrvBlock fold start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState else syn region lexAbbrvBlock start="^\(\h\+\s\|%{\)" end="^\ze%%$" skipnl nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState endif syn match lexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=lexAbbrvRegExp syn match lexAbbrv "^%[sx]" contained syn match lexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=lexAbbrv,lexInclude if has("folding") syn region lexInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=@lexCcode syn region lexAbbrvComment fold start="^\s\+/\*" end="\*/" contains=@Spell syn region lexAbbrvComment fold start="\%^/\*" end="\*/" contains=@Spell syn region lexStartState fold matchgroup=lexAbbrv start="^%\a\+" end="$" contained else syn region lexInclude matchgroup=lexSep start="^%{" end="%}" contained contains=@lexCcode syn region lexAbbrvComment start="^\s\+/\*" end="\*/" contains=@Spell syn region lexAbbrvComment start="\%^/\*" end="\*/" contains=@Spell syn region lexStartState matchgroup=lexAbbrv start="^%\a\+" end="$" contained endif if has("folding") syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%\ze%$" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained else syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite nextgroup=lexFinalCodeBlock contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 skipwhite contained nextgroup=lexMorePat,lexPatSep,lexPattern contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace syn region lexPatInclude matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained endif syn match lexPatTag "^<\I\i*\(,\I\i*\)*>" contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep syn match lexPatTagZone "^<\I\i*\(,\I\i*\)*>\s\+\ze{" contained nextgroup=lexPatTagZoneStart syn match lexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=lexPat,lexPatTag,lexMorePat,lexPatSep syn region lexPattern start='[^ \t{}]' end="$" contained contains=lexPatRange syn region lexPatRange matchgroup=Delimiter start='\[' skip='\\\\\|\\.' end='\]' contains=lexEscape syn match lexEscape '\%(\\\\\)*\\.' contained if has("folding") syn region lexPatTagZoneStart matchgroup=lexPatTag fold start='{' end='}' contained contains=lexPat,lexPatComment syn region lexPatComment start="\s\+/\*" end="\*/" fold skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell else syn region lexPatTagZoneStart matchgroup=lexPatTag start='{' end='}' contained contains=lexPat,lexPatComment syn region lexPatComment start="\s\+/\*" end="\*/" skipnl contained contains=cTodo skipwhite nextgroup=lexPatComment,lexPat,@Spell endif syn match lexPatCodeLine "[^{\[].*" contained contains=@lexCcode syn match lexMorePat "\s*|\s*$" skipnl contained nextgroup=lexPat,lexPatTag,lexPatComment syn match lexPatSep "\s\+" contained nextgroup=lexMorePat,lexPatCode,lexPatCodeLine syn match lexSlashQuote +\(\\\\\)*\\"+ contained if has("folding") syn region lexPatCode matchgroup=Delimiter start="{" end="}" fold skipnl contained contains=@lexCcode,lexCFunctions else syn region lexPatCode matchgroup=Delimiter start="{" end="}" skipnl contained contains=@lexCcode,lexCFunctions endif syn keyword lexCFunctions BEGIN input unput woutput yyleng yylook yytext syn keyword lexCFunctions ECHO output winput wunput yyless yymore yywrap syn region lexFinalCodeBlock matchgroup=Todo start="%$"me=e-1 end="\%$" contained contains=@lexCcode syn cluster cParenGroup add=lex.* syn cluster cDefineGroup add=lex.* syn cluster cPreProcGroup add=lex.* syn cluster cMultiGroup add=lex.* syn sync clear syn sync minlines=500 syn sync match lexSyncPat grouphere lexPatBlock "^%[a-zA-Z]" syn sync match lexSyncPat groupthere lexPatBlock "^<$" syn sync match lexSyncPat groupthere lexPatBlock "^%%$" if !exists("skip_lex_syntax_inits") hi def link lexAbbrvComment lexPatComment hi def link lexAbbrvRegExp Macro hi def link lexAbbrv SpecialChar hi def link lexBrace lexPat hi def link lexCFunctions Function hi def link lexCstruct cStructure hi def link lexMorePat SpecialChar hi def link lexOptions PreProc hi def link lexPatComment Comment hi def link lexPat Function hi def link lexPatString Function hi def link lexPatTag Special hi def link lexPatTagZone lexPatTag hi def link lexSep Delimiter hi def link lexSlashQuote lexPat hi def link lexStartState Statement endif let b:current_syntax = "lex" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn region lftpComment display oneline start='#' end='$' \ contains=lftpTodo,@Spell syn keyword lftpTodo contained TODO FIXME XXX NOTE syn region lftpString contained display \ start=+"+ skip=+\\$\|\\"+ end=+"+ end=+$+ syn match lftpNumber contained display '\<\d\+\(\.\d\+\)\=\>' syn keyword lftpBoolean contained yes no on off true false syn keyword lftpInterval contained infinity inf never forever syn match lftpInterval contained '\<\(\d\+\(\.\d\+\)\=[dhms]\)\+\>' syn keyword lftpKeywords alias anon at bookmark cache cat cd chmod close \ cls command debug du echo exit fg find get \ get1 glob help history jobs kill lcd lftp \ lpwd ls mget mirror mkdir module more mput \ mrm mv nlist open pget put pwd queue quote \ reget recls rels renlist repeat reput rm \ rmdir scache site source suspend user version \ wait zcat zmore syn region lftpSet matchgroup=lftpKeywords \ start="set" end=";" end="$" \ contains=lftpString,lftpNumber,lftpBoolean, \ lftpInterval,lftpSettingsPrefix,lftpSettings syn match lftpSettingsPrefix contained '\<\%(bmk\|cache\|cmd\|color\|dns\):' syn match lftpSettingsPrefix contained '\<\%(file\|fish\|ftp\|hftp\):' syn match lftpSettingsPrefix contained '\<\%(http\|https\|mirror\|module\):' syn match lftpSettingsPrefix contained '\<\%(net\|sftp\|ssl\|xfer\):' syn keyword lftpSettings contained save-p[asswords] syn keyword lftpSettings contained cache-em[pty-listings] en[able] \ exp[ire] siz[e] syn keyword lftpSettings contained at[-exit] cls-c[ompletion-default] \ cls-d[efault] cs[h-history] \ default-p[rotocol] default-t[itle] syn keyword lftpSettings contained fai[l-exit] in[teractive] \ lo[ng-running] ls[-default] mo[ve-background] \ prom[pt] \ rem[ote-completion] \ save-c[wd-history] save-r[l-history] \ set-t[erm-status] statu[s-interval] \ te[rm-status] verb[ose] verify-h[ost] \ verify-path verify-path[-cached] syn keyword lftpSettings contained dir[-colors] use-c[olor] syn keyword lftpSettings contained S[RV-query] cache-en[able] \ cache-ex[pire] cache-s[ize] \ fat[al-timeout] o[rder] use-fo[rk] syn keyword lftpSettings contained ch[arset] syn keyword lftpSettings contained connect[-program] sh[ell] syn keyword lftpSettings contained acct anon-p[ass] anon-u[ser] \ au[to-sync-mode] b[ind-data-socket] \ ch[arset] cli[ent] dev[ice-prefix] \ fi[x-pasv-address] fxp-f[orce] \ fxp-p[assive-source] h[ome] la[ng] \ list-e[mpty-ok] list-o[ptions] \ nop[-interval] pas[sive-mode] \ port-i[pv4] port-r[ange] prox[y] \ rest-l[ist] rest-s[tor] \ retry-530 retry-530[-anonymous] \ sit[e-group] skey-a[llow] \ skey-f[orce] ssl-allow \ ssl-allow[-anonymous] ssl-au[th] \ ssl-f[orce] ssl-protect-d[ata] \ ssl-protect-l[ist] stat-[interval] \ sy[nc-mode] timez[one] use-a[bor] \ use-fe[at] use-fx[p] use-hf[tp] \ use-mdtm use-mdtm[-overloaded] \ use-ml[sd] use-p[ret] use-q[uit] \ use-site-c[hmod] use-site-i[dle] \ use-site-u[time] use-siz[e] \ use-st[at] use-te[lnet-iac] \ verify-a[ddress] verify-p[ort] \ w[eb-mode] syn keyword lftpSettings contained w[eb-mode] cache prox[y] \ use-au[thorization] use-he[ad] use-ty[pe] syn keyword lftpSettings contained accept accept-c[harset] \ accept-l[anguage] cache coo[kie] \ pos[t-content-type] prox[y] \ put-c[ontent-type] put-m[ethod] ref[erer] \ set-c[ookies] user[-agent] syn keyword lftpSettings contained prox[y] syn keyword lftpSettings contained exc[lude-regex] o[rder] \ parallel-d[irectories] \ parallel-t[ransfer-count] use-p[get-n] syn keyword lftpSettings contained pat[h] syn keyword lftpSettings contained connection-l[imit] \ connection-t[akeover] id[le] limit-m[ax] \ limit-r[ate] limit-total-m[ax] \ limit-total-r[ate] max-ret[ries] no-[proxy] \ pe[rsist-retries] reconnect-interval-b[ase] \ reconnect-interval-ma[x] \ reconnect-interval-mu[ltiplier] \ socket-bind-ipv4 socket-bind-ipv6 \ socket-bu[ffer] socket-m[axseg] timeo[ut] syn keyword lftpSettings contained connect[-program] \ max-p[ackets-in-flight] prot[ocol-version] \ ser[ver-program] size-r[ead] size-w[rite] syn keyword lftpSettings contained ca-f[ile] ca-p[ath] ce[rt-file] \ crl-f[ile] crl-p[ath] k[ey-file] \ verify-c[ertificate] syn keyword lftpSettings contained clo[bber] dis[k-full-fatal] \ eta-p[eriod] eta-t[erse] mak[e-backup] \ max-red[irections] ra[te-period] hi def link lftpComment Comment hi def link lftpTodo Todo hi def link lftpString String hi def link lftpNumber Number hi def link lftpBoolean Boolean hi def link lftpInterval Number hi def link lftpKeywords Keyword hi def link lftpSettingsPrefix PreProc hi def link lftpSettings Type let b:current_syntax = "lftp" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif if !exists("b:lhs_markup") if exists("lhs_markup") if lhs_markup =~ '\<\%(tex\|none\)\>' let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|none\)\>') else echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None let b:lhs_markup = "unknown" endif else let b:lhs_markup = "unknown" endif else if b:lhs_markup !~ '\<\%(tex\|none\)\>' let b:lhs_markup = "unknown" endif endif let s:oldline=line(".") let s:oldcolumn=col(".") call cursor(1,1) if b:lhs_markup == "unknown" if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0 let b:lhs_markup = "tex" else let b:lhs_markup = "plain" endif endif if b:lhs_markup == "tex" runtime! syntax/tex.vim unlet b:current_syntax setlocal isk+=_ syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract else syntax cluster lhsTeXContainer contains=.* endif syntax include @haskellTop syntax/haskell.vim syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer syntax match lhsBirdTrack "^>" contained syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}" hi def link lhsBirdTrack Comment hi def link beginCodeBegin texCmdName hi def link beginCodeCode texSection call cursor (s:oldline, s:oldcolumn) unlet s:oldline unlet s:oldcolumn let b:current_syntax = "lhaskell" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword libaoTodo contained TODO FIXME XXX NOTE syn region libaoComment display oneline start='^\s*#' end='$' \ contains=libaoTodo,@Spell syn keyword libaoKeyword default_driver hi def link libaoTodo Todo hi def link libaoComment Comment hi def link libaoKeyword Keyword let b:current_syntax = "libao" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword lifelinesDecl char_encoding require option include syn keyword lifelinesStatement set syn keyword lifelinesUser getindi geindiset getfam getint getstr choosechild syn keyword lifelinesUser chooseindi choosespouse choosesubset menuchoose syn keyword lifelinesUser choosefam syn keyword lifelinesProc proc func return call syn keyword lifelinesInclude include syn keyword lifelinesDef global syn keyword lifelinesConditional if else elsif switch syn keyword lifelinesRepeat continue break while syn keyword lifelinesLogical and or not eq ne lt gt le ge strcmp eqstr nestr syn keyword lifelinesArithm add sub mul div mod exp neg incr decr syn keyword lifelinesArithm cos sin tan arccos arcsin arctan syn keyword lifelinesArithm deg2dms dms2deg spdist syn keyword lifelinesIndi name fullname surname givens trimname birth syn keyword lifelinesIndi death burial baptism syn keyword lifelinesIndi father mother nextsib prevsib sex male female syn keyword lifelinesIndi pn nspouses nfamilies parents title key syn keyword lifelinesIndi soundex inode root indi firstindi nextindi syn keyword lifelinesIndi previndi spouses families forindi indiset syn keyword lifelinesIndi addtoset deletefromset union intersect syn keyword lifelinesIndi difference parentset childset spouseset siblingset syn keyword lifelinesIndi ancestorset descendentset descendantset uniqueset syn keyword lifelinesIndi namesort keysort valuesort genindiset getindiset syn keyword lifelinesIndi forindiset lastindi writeindi syn keyword lifelinesIndi inset syn keyword lifelinesFam marriage husband wife nchildren firstchild syn keyword lifelinesFam lastchild fnode fam firstfam nextfam lastfam syn keyword lifelinesFam prevfam children forfam writefam syn keyword lifelinesFam fathers mothers Parents syn keyword lifelinesList list empty length enqueue dequeue requeue syn keyword lifelinesList push pop setel getel forlist inlist dup clear syn keyword lifelinesTable table insert lookup syn keyword lifelinesGedcom xref tag value parent child sibling savenode syn keyword lifelinesGedcom fornodes traverse createnode addnode syn keyword lifelinesGedcom detachnode foreven fornotes forothr forsour syn keyword lifelinesGedcom reference dereference getrecord syn keyword lifelinesGedcom gengedcomstrong syn keyword lifelinesFunct date place year long short gettoday dayformat syn keyword lifelinesFunct monthformat dateformat extractdate eraformat syn keyword lifelinesFunct complexdate complexformat complexpic datepic syn keyword lifelinesFunct extractnames extractplaces extracttokens lower syn keyword lifelinesFunct yearformat syn keyword lifelinesFunct upper capitalize trim rjustify syn keyword lifelinesFunct concat strconcat strlen substring index syn keyword lifelinesFunct titlecase gettext syn keyword lifelinesFunct d card ord alpha roman strsoundex strtoint syn keyword lifelinesFunct atoi linemode pagemod col row pos pageout nl syn keyword lifelinesFunct sp qt newfile outfile copyfile print lock unlock test syn keyword lifelinesFunct database version system stddate program syn keyword lifelinesFunct pvalue pagemode level extractdatestr debug syn keyword lifelinesFunct f float int free getcol getproperty heapused syn keyword lifelinesFunct sort rsort syn keyword lifelinesFunct deleteel syn keyword lifelinesFunct bytecode convertcode setlocale syn keyword lifelinesFunct jd2date date2jd dayofweek setdate if exists("lifelines_deprecated") syn keyword lifelinesError getintmsg getindimsg getstrmsg syn keyword lifelinesError gengedcom gengedcomweak deletenode syn keyword lifelinesError save strsave syn keyword lifelinesError lengthset if version >= 700 let g:omni_syntax_group_exclude_lifelines = 'lifelinesError' endif else syn keyword lifelinesUser getintmsg getindimsg getstrmsg syn keyword lifelinesGedcom gengedcom gengedcomweak deletenode syn keyword lifelinesFunct save strsave syn keyword lifelinesIndi lengthset endif syn region lifelinesString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lifelinesSpecial syn match lifelinesSpecial "\\\(\\\|\(n\|t\)\)" contained syn keyword lifelinesTodo contained TODO FIXME XXX syn region lifelinesComment start="/\*" end="\*/" contains=lifelinesTodo syn match lifelinesNumber "-\=\<\d\+\>" syn match lifelinesNumber "-\=\<\d\+\.\d*\>" syn match lifelinesNumber "-\=\.\d\+\>" syn region lifelinesFoldBlock start="{" end="}" transparent fold syn cluster lifelinesParenGroup contains=lifelinesParenError syn region lifelinesParen transparent start='(' end=')' contains=ALLBUT,@lifelinesParenGroup syn match lifelinesParenError ")" syn match lifelinesErrInParen contained "[{}]" hi def link lifelinesConditional Conditional hi def link lifelinesArithm Operator hi def link lifelinesLogical Conditional hi def link lifelinesInclude Include hi def link lifelinesComment Comment hi def link lifelinesStatement Statement hi def link lifelinesUser Statement hi def link lifelinesFunct Statement hi def link lifelinesTable Statement hi def link lifelinesGedcom Statement hi def link lifelinesList Statement hi def link lifelinesRepeat Repeat hi def link lifelinesFam Statement hi def link lifelinesIndi Statement hi def link lifelinesProc Statement hi def link lifelinesDef Statement hi def link lifelinesString String hi def link lifelinesSpecial Special hi def link lifelinesNumber Number hi def link lifelinesParenError Error hi def link lifelinesErrInParen Error hi def link lifelinesError Error hi def link lifelinesTodo Todo hi def link lifelinesDecl PreProc let b:current_syntax = "lifelines" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,.,-,_ syn case ignore syn match liloError "\S\+" syn match liloComment "#.*$" syn match liloEnviron "\$\w\+" contained syn match liloEnviron "\${[^}]\+}" contained syn match liloDecNumber "\d\+" contained syn match liloHexNumber "0[xX]\x\+" contained syn match liloDecNumberP "\d\+p\=" contained syn match liloSpecial contained "\\\(\"\|\\\|$\)" syn region liloString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=liloSpecial,liloEnviron syn match liloLabel :[^ "]\+: contained contains=liloSpecial,liloEnviron syn region liloPath start=+[$/]+ skip=+\\\\\|\\ \|\\$"+ end=+ \|$+ contained contains=liloSpecial,liloEnviron syn match liloDecNumberList "\(\d\|,\)\+" contained contains=liloDecNumber syn match liloDecNumberPList "\(\d\|[,p]\)\+" contained contains=liloDecNumberP,liloDecNumber syn region liloAnything start=+[^[:space:]#]+ skip=+\\\\\|\\ \|\\$+ end=+ \|$+ contained contains=liloSpecial,liloEnviron,liloString syn keyword liloOption backup bitmap boot disktab force-backup keytable map message nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloKernelOpt initrd root nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloImageOpt path loader table nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloDiskOpt partition nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloOption menu-scheme raid-extra-boot serial install nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloOption bios-passes-dl nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloOption default label alias wmdefault nextgroup=liloEqLabelString,liloEqLabelStringComment,liloError skipwhite skipempty syn keyword liloKernelOpt ramdisk nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloImageOpt password range nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloDiskOpt set type nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn keyword liloKernelOpt vga nextgroup=liloEqVga,liloEqVgaComment,liloError skipwhite skipempty syn keyword liloOption delay timeout verbose nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty syn keyword liloDiskOpt sectors heads cylinders start nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty syn keyword liloOption menu-title nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn keyword liloKernelOpt append addappend nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn keyword liloImageOpt fallback literal nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn keyword liloImageOpt map-drive to boot-as nextgroup=liloEqHexNumber,liloEqHexNumberComment,liloError skipwhite skipempty syn keyword liloDiskOpt bios normal hidden nextgroup=liloEqNumber,liloEqNumberComment,liloError skipwhite skipempty syn keyword liloOption bmp-colors nextgroup=liloEqNumberList,liloEqNumberListComment,liloError skipwhite skipempty syn keyword liloOption bmp-table bmp-timer nextgroup=liloEqDecNumberPList,liloEqDecNumberPListComment,liloError skipwhite skipempty syn keyword liloOption compact fix-table geometric ignore-table lba32 linear mandatory nowarn prompt syn keyword liloOption bmp-retain el-torito-bootable-CD large-memory suppress-boot-time-BIOS-data syn keyword liloKernelOpt read-only read-write syn keyword liloImageOpt bypass lock mandatory optional restricted single-key unsafe syn keyword liloImageOpt master-boot wmwarn wmdisable syn keyword liloDiskOpt change activate deactivate inaccessible reset syn keyword liloImage image other nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloDisk disk nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn keyword liloChRules change-rules syn keyword liloVgaKeyword ask ext extended normal contained syn match liloEqPathComment "#.*$" contained nextgroup=liloEqPath,liloEqPathComment,liloError skipwhite skipempty syn match liloEqVgaComment "#.*$" contained nextgroup=liloEqVga,liloEqVgaComment,liloError skipwhite skipempty syn match liloEqNumberComment "#.*$" contained nextgroup=liloEqNumber,liloEqNumberComment,liloError skipwhite skipempty syn match liloEqDecNumberComment "#.*$" contained nextgroup=liloEqDecNumber,liloEqDecNumberComment,liloError skipwhite skipempty syn match liloEqHexNumberComment "#.*$" contained nextgroup=liloEqHexNumber,liloEqHexNumberComment,liloError skipwhite skipempty syn match liloEqStringComment "#.*$" contained nextgroup=liloEqString,liloEqStringComment,liloError skipwhite skipempty syn match liloEqLabelStringComment "#.*$" contained nextgroup=liloEqLabelString,liloEqLabelStringComment,liloError skipwhite skipempty syn match liloEqNumberListComment "#.*$" contained nextgroup=liloEqNumberList,liloEqNumberListComment,liloError skipwhite skipempty syn match liloEqDecNumberPListComment "#.*$" contained nextgroup=liloEqDecNumberPList,liloEqDecNumberPListComment,liloError skipwhite skipempty syn match liloEqAnythingComment "#.*$" contained nextgroup=liloEqAnything,liloEqAnythingComment,liloError skipwhite skipempty syn match liloEqPath "=" contained nextgroup=liloPath,liloPathComment,liloError skipwhite skipempty syn match liloEqVga "=" contained nextgroup=liloVgaKeyword,liloHexNumber,liloDecNumber,liloVgaComment,liloError skipwhite skipempty syn match liloEqNumber "=" contained nextgroup=liloDecNumber,liloHexNumber,liloNumberComment,liloError skipwhite skipempty syn match liloEqDecNumber "=" contained nextgroup=liloDecNumber,liloDecNumberComment,liloError skipwhite skipempty syn match liloEqHexNumber "=" contained nextgroup=liloHexNumber,liloHexNumberComment,liloError skipwhite skipempty syn match liloEqString "=" contained nextgroup=liloString,liloStringComment,liloError skipwhite skipempty syn match liloEqLabelString "=" contained nextgroup=liloString,liloLabel,liloLabelStringComment,liloError skipwhite skipempty syn match liloEqNumberList "=" contained nextgroup=liloDecNumberList,liloDecNumberListComment,liloError skipwhite skipempty syn match liloEqDecNumberPList "=" contained nextgroup=liloDecNumberPList,liloDecNumberPListComment,liloError skipwhite skipempty syn match liloEqAnything "=" contained nextgroup=liloAnything,liloAnythingComment,liloError skipwhite skipempty syn match liloPathComment "#.*$" contained nextgroup=liloPath,liloPathComment,liloError skipwhite skipempty syn match liloVgaComment "#.*$" contained nextgroup=liloVgaKeyword,liloHexNumber,liloVgaComment,liloError skipwhite skipempty syn match liloNumberComment "#.*$" contained nextgroup=liloDecNumber,liloHexNumber,liloNumberComment,liloError skipwhite skipempty syn match liloDecNumberComment "#.*$" contained nextgroup=liloDecNumber,liloDecNumberComment,liloError skipwhite skipempty syn match liloHexNumberComment "#.*$" contained nextgroup=liloHexNumber,liloHexNumberComment,liloError skipwhite skipempty syn match liloStringComment "#.*$" contained nextgroup=liloString,liloStringComment,liloError skipwhite skipempty syn match liloLabelStringComment "#.*$" contained nextgroup=liloString,liloLabel,liloLabelStringComment,liloError skipwhite skipempty syn match liloDecNumberListComment "#.*$" contained nextgroup=liloDecNumberList,liloDecNumberListComment,liloError skipwhite skipempty syn match liloDecNumberPListComment "#.*$" contained nextgroup=liloDecNumberPList,liloDecNumberPListComment,liloError skipwhite skipempty syn match liloAnythingComment "#.*$" contained nextgroup=liloAnything,liloAnythingComment,liloError skipwhite skipempty hi def link liloEqPath liloEquals hi def link liloEqWord liloEquals hi def link liloEqVga liloEquals hi def link liloEqDecNumber liloEquals hi def link liloEqHexNumber liloEquals hi def link liloEqNumber liloEquals hi def link liloEqString liloEquals hi def link liloEqAnything liloEquals hi def link liloEquals Special hi def link liloError Error hi def link liloEqPathComment liloComment hi def link liloEqVgaComment liloComment hi def link liloEqDecNumberComment liloComment hi def link liloEqHexNumberComment liloComment hi def link liloEqStringComment liloComment hi def link liloEqAnythingComment liloComment hi def link liloPathComment liloComment hi def link liloVgaComment liloComment hi def link liloDecNumberComment liloComment hi def link liloHexNumberComment liloComment hi def link liloNumberComment liloComment hi def link liloStringComment liloComment hi def link liloAnythingComment liloComment hi def link liloComment Comment hi def link liloDiskOpt liloOption hi def link liloKernelOpt liloOption hi def link liloImageOpt liloOption hi def link liloOption Keyword hi def link liloDecNumber liloNumber hi def link liloHexNumber liloNumber hi def link liloDecNumberP liloNumber hi def link liloNumber Number hi def link liloString String hi def link liloPath Constant hi def link liloSpecial Special hi def link liloLabel Title hi def link liloDecNumberList Special hi def link liloDecNumberPList Special hi def link liloAnything Normal hi def link liloEnviron Identifier hi def link liloVgaKeyword Identifier hi def link liloImage Type hi def link liloChRules Preproc hi def link liloDisk Preproc let b:current_syntax = "lilo" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword limitsTodo contained TODO FIXME XXX NOTE syn region limitsComment display oneline start='^\s*#' end='$' \ contains=limitsTodo,@Spell syn match limitsBegin display '^' \ nextgroup=limitsUser,limitsDefault,limitsComment \ skipwhite syn match limitsUser contained '[^ \t#*]\+' \ nextgroup=limitsLimit,limitsDeLimit skipwhite syn match limitsDefault contained '*' \ nextgroup=limitsLimit,limitsDeLimit skipwhite syn match limitsLimit contained '[ACDFMNRSTUKLP]' nextgroup=limitsNumber syn match limitsDeLimit contained '-' syn match limitsNumber contained '\d\+\>' nextgroup=limitsLimit skipwhite hi def link limitsTodo Todo hi def link limitsComment Comment hi def link limitsUser Keyword hi def link limitsDefault Macro hi def link limitsLimit Identifier hi def link limitsDeLimit Special hi def link limitsNumber Number let b:current_syntax = "limits" let &cpo = s:cpo_save unlet s:cpo_save if exists('b:current_syntax') finish endif if !exists('main_syntax') let main_syntax = 'liquid' endif if !exists('g:liquid_default_subtype') let g:liquid_default_subtype = 'html' endif if !exists('b:liquid_subtype') && main_syntax == 'liquid' let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+') if b:liquid_subtype == '' let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+') endif if b:liquid_subtype == '' let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$') endif if b:liquid_subtype == '' let b:liquid_subtype = g:liquid_default_subtype endif endif if exists('b:liquid_subtype') && b:liquid_subtype != '' exe 'runtime! syntax/'.b:liquid_subtype.'.vim' unlet! b:current_syntax endif syn case match if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml' syn include @liquidYamlTop syntax/yaml.vim unlet! b:current_syntax syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell endif if !exists('g:liquid_highlight_types') let g:liquid_highlight_types = [] endif if !exists('s:subtype') let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : '' for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")') if s:type =~ '\.' let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') endif exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' unlet! b:current_syntax endfor unlet! s:type if s:subtype == '' unlet! b:liquid_subtype else let b:liquid_subtype = s:subtype endif unlet s:subtype endif syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend syn region liquidRaw matchgroup=liquidDelimiter start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained syn keyword liquidKeyword endhighlight contained syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend for s:type in g:liquid_highlight_types exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') endfor unlet! s:type syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained syn match liquidNumber "-\=\<\d\+\>" contained syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained syn keyword liquidBoolean true false contained syn keyword liquidNull null nil contained syn match liquidEmpty "\" contained syn keyword liquidOperator and or not contained syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained syn keyword liquidRepeat for endfor tablerow endtablerow in contained syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained syn keyword liquidKeyword assign cycle include with contained syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained hi def link liquidDelimiter PreProc hi def link liquidComment Comment hi def link liquidTypeHighlight Type hi def link liquidConditional Conditional hi def link liquidRepeat Repeat hi def link liquidKeyword Keyword hi def link liquidOperator Operator hi def link liquidString String hi def link liquidQuote Delimiter hi def link liquidNumber Number hi def link liquidFloat Float hi def link liquidEmpty liquidNull hi def link liquidNull liquidBoolean hi def link liquidBoolean Boolean hi def link liquidFilter Function hi def link liquidForloop Identifier hi def link liquidForloopAttribute Identifier let b:current_syntax = 'liquid' if exists('main_syntax') && main_syntax == 'liquid' unlet main_syntax endif if exists("b:current_syntax") finish endif if exists("g:lisp_isk") exe "setl isk=".g:lisp_isk elseif (v:version == 704 && has("patch-7.4.1142")) || v:version > 704 syn iskeyword 38,42,43,45,47-58,60-62,64-90,97-122,_ else setl isk=38,42,43,45,47-58,60-62,64-90,97-122,_ endif if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp") set ignorecase endif syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite if exists("g:lisp_instring") syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString else syn cluster lispListCluster contains=@lispBaseListCluster,lispString endif syn case ignore syn match lispSymbol contained ![^()'`,"; \t]\+! syn match lispBarSymbol contained !|..\{-}|! if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0 else syn region lispList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=@lispListCluster syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster endif syn match lispAtomMark "'" syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark syn region lispAtom start=+'"+ skip=+\\"+ end=+"+ syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial syn match lispAtomNmbr contained "\<\d\+" syn match lispLeadWhite contained "^\s\+" syn keyword lispFunc < find-method pprint-indent syn keyword lispFunc <= find-package pprint-linear syn keyword lispFunc = find-restart pprint-logical-block syn keyword lispFunc > find-symbol pprint-newline syn keyword lispFunc >= finish-output pprint-pop syn keyword lispFunc - first pprint-tab syn keyword lispFunc / fixnum pprint-tabular syn keyword lispFunc /= flet prin1 syn keyword lispFunc // float prin1-to-string syn keyword lispFunc /// float-digits princ syn keyword lispFunc * floating-point-inexact princ-to-string syn keyword lispFunc ** floating-point-invalid-operation print syn keyword lispFunc *** floating-point-overflow print-not-readable syn keyword lispFunc + floating-point-underflow print-not-readable-object syn keyword lispFunc ++ floatp print-object syn keyword lispFunc +++ float-precision print-unreadable-object syn keyword lispFunc 1- float-radix probe-file syn keyword lispFunc 1+ float-sign proclaim syn keyword lispFunc abort floor prog syn keyword lispFunc abs fmakunbound prog* syn keyword lispFunc access force-output prog1 syn keyword lispFunc acons format prog2 syn keyword lispFunc acos formatter progn syn keyword lispFunc acosh fourth program-error syn keyword lispFunc add-method fresh-line progv syn keyword lispFunc adjoin fround provide syn keyword lispFunc adjustable-array-p ftruncate psetf syn keyword lispFunc adjust-array ftype psetq syn keyword lispFunc allocate-instance funcall push syn keyword lispFunc alpha-char-p function pushnew syn keyword lispFunc alphanumericp function-keywords putprop syn keyword lispFunc and function-lambda-expression quote syn keyword lispFunc append functionp random syn keyword lispFunc apply gbitp random-state syn keyword lispFunc applyhook gcd random-state-p syn keyword lispFunc apropos generic-function rassoc syn keyword lispFunc apropos-list gensym rassoc-if syn keyword lispFunc aref gentemp rassoc-if-not syn keyword lispFunc arithmetic-error get ratio syn keyword lispFunc arithmetic-error-operands get-decoded-time rational syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize syn keyword lispFunc array getf rationalp syn keyword lispFunc array-dimension gethash read syn keyword lispFunc array-dimension-limit get-internal-real-time read-byte syn keyword lispFunc array-dimensions get-internal-run-time read-char syn keyword lispFunc array-displacement get-macro-character read-char-no-hang syn keyword lispFunc array-element-type get-output-stream-string read-delimited-list syn keyword lispFunc array-has-fill-pointer-p get-properties reader-error syn keyword lispFunc array-in-bounds-p get-setf-expansion read-eval-print syn keyword lispFunc arrayp get-setf-method read-from-string syn keyword lispFunc array-rank get-universal-time read-line syn keyword lispFunc array-rank-limit go read-preserving-whitespace syn keyword lispFunc array-row-major-index graphic-char-p read-sequence syn keyword lispFunc array-total-size handler-bind readtable syn keyword lispFunc array-total-size-limit handler-case readtable-case syn keyword lispFunc ash hash-table readtablep syn keyword lispFunc asin hash-table-count real syn keyword lispFunc asinh hash-table-p realp syn keyword lispFunc assert hash-table-rehash-size realpart syn keyword lispFunc assoc hash-table-rehash-threshold reduce syn keyword lispFunc assoc-if hash-table-size reinitialize-instance syn keyword lispFunc assoc-if-not hash-table-test rem syn keyword lispFunc atan host-namestring remf syn keyword lispFunc atanh identity remhash syn keyword lispFunc atom if remove syn keyword lispFunc base-char if-exists remove-duplicates syn keyword lispFunc base-string ignorable remove-if syn keyword lispFunc bignum ignore remove-if-not syn keyword lispFunc bit ignore-errors remove-method syn keyword lispFunc bit-and imagpart remprop syn keyword lispFunc bit-andc1 import rename-file syn keyword lispFunc bit-andc2 incf rename-package syn keyword lispFunc bit-eqv initialize-instance replace syn keyword lispFunc bit-ior inline require syn keyword lispFunc bit-nand in-package rest syn keyword lispFunc bit-nor in-package restart syn keyword lispFunc bit-not input-stream-p restart-bind syn keyword lispFunc bit-orc1 inspect restart-case syn keyword lispFunc bit-orc2 int-char restart-name syn keyword lispFunc bit-vector integer return syn keyword lispFunc bit-vector-p integer-decode-float return-from syn keyword lispFunc bit-xor integer-length revappend syn keyword lispFunc block integerp reverse syn keyword lispFunc boole interactive-stream-p room syn keyword lispFunc boole-1 intern rotatef syn keyword lispFunc boole-2 internal-time-units-per-second round syn keyword lispFunc boolean intersection row-major-aref syn keyword lispFunc boole-and invalid-method-error rplaca syn keyword lispFunc boole-andc1 invoke-debugger rplacd syn keyword lispFunc boole-andc2 invoke-restart safety syn keyword lispFunc boole-c1 invoke-restart-interactively satisfies syn keyword lispFunc boole-c2 isqrt sbit syn keyword lispFunc boole-clr keyword scale-float syn keyword lispFunc boole-eqv keywordp schar syn keyword lispFunc boole-ior labels search syn keyword lispFunc boole-nand lambda second syn keyword lispFunc boole-nor lambda-list-keywords sequence syn keyword lispFunc boole-orc1 lambda-parameters-limit serious-condition syn keyword lispFunc boole-orc2 last set syn keyword lispFunc boole-set lcm set-char-bit syn keyword lispFunc boole-xor ldb set-difference syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character syn keyword lispFunc boundp ldiff set-exclusive-or syn keyword lispFunc break least-negative-double-float setf syn keyword lispFunc broadcast-stream least-negative-long-float set-macro-character syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-pprint-dispatch syn keyword lispFunc built-in-class least-negative-normalized-long-float setq syn keyword lispFunc butlast least-negative-normalized-short-float set-syntax-from-char syn keyword lispFunc byte least-negative-normalized-single-float seventh syn keyword lispFunc byte-position least-negative-short-float shadow syn keyword lispFunc byte-size least-negative-single-float shadowing-import syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize syn keyword lispFunc call-method least-positive-long-float shiftf syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon syn keyword lispFunc case least-positive-normalized-single-float short-site-name syn keyword lispFunc catch least-positive-short-float signal syn keyword lispFunc ccase least-positive-single-float signed-byte syn keyword lispFunc cdr length signum syn keyword lispFunc ceiling let simple-array syn keyword lispFunc cell-error let* simple-base-string syn keyword lispFunc cell-error-name lisp simple-bit-vector syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector-p syn keyword lispFunc change-class lisp-implementation-version simple-condition syn keyword lispFunc char list simple-condition-format-arguments syn keyword lispFunc char< list* simple-condition-format-control syn keyword lispFunc char<= list-all-packages simple-error syn keyword lispFunc char= listen simple-string syn keyword lispFunc char> list-length simple-string-p syn keyword lispFunc char>= listp simple-type-error syn keyword lispFunc char/= load simple-vector syn keyword lispFunc character load-logical-pathname-translations simple-vector-p syn keyword lispFunc characterp load-time-value simple-warning syn keyword lispFunc char-bit locally sin syn keyword lispFunc char-bits log single-flaot-epsilon syn keyword lispFunc char-bits-limit logand single-float syn keyword lispFunc char-code logandc1 single-float-epsilon syn keyword lispFunc char-code-limit logandc2 single-float-negative-epsilon syn keyword lispFunc char-control-bit logbitp sinh syn keyword lispFunc char-downcase logcount sixth syn keyword lispFunc char-equal logeqv sleep syn keyword lispFunc char-font logical-pathname slot-boundp syn keyword lispFunc char-font-limit logical-pathname-translations slot-exists-p syn keyword lispFunc char-greaterp logior slot-makunbound syn keyword lispFunc char-hyper-bit lognand slot-missing syn keyword lispFunc char-int lognor slot-unbound syn keyword lispFunc char-lessp lognot slot-value syn keyword lispFunc char-meta-bit logorc1 software-type syn keyword lispFunc char-name logorc2 software-version syn keyword lispFunc char-not-equal logtest some syn keyword lispFunc char-not-greaterp logxor sort syn keyword lispFunc char-not-lessp long-float space syn keyword lispFunc char-super-bit long-float-epsilon special syn keyword lispFunc char-upcase long-float-negative-epsilon special-form-p syn keyword lispFunc check-type long-site-name special-operator-p syn keyword lispFunc cis loop speed syn keyword lispFunc class loop-finish sqrt syn keyword lispFunc class-name lower-case-p stable-sort syn keyword lispFunc class-of machine-instance standard syn keyword lispFunc clear-input machine-type standard-char syn keyword lispFunc clear-output machine-version standard-char-p syn keyword lispFunc close macroexpand standard-class syn keyword lispFunc clrhash macroexpand-1 standard-generic-function syn keyword lispFunc code-char macroexpand-l standard-method syn keyword lispFunc coerce macro-function standard-object syn keyword lispFunc commonp macrolet step syn keyword lispFunc compilation-speed make-array storage-condition syn keyword lispFunc compile make-array store-value syn keyword lispFunc compiled-function make-broadcast-stream stream syn keyword lispFunc compiled-function-p make-char stream-element-type syn keyword lispFunc compile-file make-concatenated-stream stream-error syn keyword lispFunc compile-file-pathname make-condition stream-error-stream syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format syn keyword lispFunc compiler-macro make-echo-stream streamp syn keyword lispFunc compiler-macro-function make-hash-table streamup syn keyword lispFunc complement make-instance string syn keyword lispFunc complex make-instances-obsolete string< syn keyword lispFunc complexp make-list string<= syn keyword lispFunc compute-applicable-methods make-load-form string= syn keyword lispFunc compute-restarts make-load-form-saving-slots string> syn keyword lispFunc concatenate make-method string>= syn keyword lispFunc concatenated-stream make-package string/= syn keyword lispFunc concatenated-stream-streams make-pathname string-capitalize syn keyword lispFunc cond make-random-state string-char syn keyword lispFunc condition make-sequence string-char-p syn keyword lispFunc conjugate make-string string-downcase syn keyword lispFunc cons make-string-input-stream string-equal syn keyword lispFunc consp make-string-output-stream string-greaterp syn keyword lispFunc constantly make-symbol string-left-trim syn keyword lispFunc constantp make-synonym-stream string-lessp syn keyword lispFunc continue make-two-way-stream string-not-equal syn keyword lispFunc control-error makunbound string-not-greaterp syn keyword lispFunc copy-alist map string-not-lessp syn keyword lispFunc copy-list mapc stringp syn keyword lispFunc copy-pprint-dispatch mapcan string-right-strim syn keyword lispFunc copy-readtable mapcar string-right-trim syn keyword lispFunc copy-seq mapcon string-stream syn keyword lispFunc copy-structure maphash string-trim syn keyword lispFunc copy-symbol map-into string-upcase syn keyword lispFunc copy-tree mapl structure syn keyword lispFunc cos maplist structure-class syn keyword lispFunc cosh mask-field structure-object syn keyword lispFunc count max style-warning syn keyword lispFunc count-if member sublim syn keyword lispFunc count-if-not member-if sublis syn keyword lispFunc ctypecase member-if-not subseq syn keyword lispFunc debug merge subsetp syn keyword lispFunc decf merge-pathname subst syn keyword lispFunc declaim merge-pathnames subst-if syn keyword lispFunc declaration method subst-if-not syn keyword lispFunc declare method-combination substitute syn keyword lispFunc decode-float method-combination-error substitute-if syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not syn keyword lispFunc defclass min subtypep syn keyword lispFunc defconstant minusp svref syn keyword lispFunc defgeneric mismatch sxhash syn keyword lispFunc define-compiler-macro mod symbol syn keyword lispFunc define-condition most-negative-double-float symbol-function syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name syn keyword lispFunc define-setf-expander most-negative-short-float symbolp syn keyword lispFunc define-setf-method most-negative-single-float symbol-package syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-plist syn keyword lispFunc defmacro most-positive-fixnum symbol-value syn keyword lispFunc defmethod most-positive-long-float synonym-stream syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol syn keyword lispFunc defparameter most-positive-single-float sys syn keyword lispFunc defsetf muffle-warning system syn keyword lispFunc defstruct multiple-value-bind t syn keyword lispFunc deftype multiple-value-call tagbody syn keyword lispFunc defun multiple-value-list tailp syn keyword lispFunc defvar multiple-value-prog1 tan syn keyword lispFunc delete multiple-value-seteq tanh syn keyword lispFunc delete-duplicates multiple-value-setq tenth syn keyword lispFunc delete-file multiple-values-limit terpri syn keyword lispFunc delete-if name-char the syn keyword lispFunc delete-if-not namestring third syn keyword lispFunc delete-package nbutlast throw syn keyword lispFunc denominator nconc time syn keyword lispFunc deposit-field next-method-p trace syn keyword lispFunc describe nil translate-logical-pathname syn keyword lispFunc describe-object nintersection translate-pathname syn keyword lispFunc destructuring-bind ninth tree-equal syn keyword lispFunc digit-char no-applicable-method truename syn keyword lispFunc digit-char-p no-next-method truncase syn keyword lispFunc directory not truncate syn keyword lispFunc directory-namestring notany two-way-stream syn keyword lispFunc disassemble notevery two-way-stream-input-stream syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream syn keyword lispFunc do nreconc type syn keyword lispFunc do* nreverse typecase syn keyword lispFunc do-all-symbols nset-difference type-error syn keyword lispFunc documentation nset-exclusive-or type-error-datum syn keyword lispFunc do-exeternal-symbols nstring type-error-expected-type syn keyword lispFunc do-external-symbols nstring-capitalize type-of syn keyword lispFunc dolist nstring-downcase typep syn keyword lispFunc do-symbols nstring-upcase unbound-slot syn keyword lispFunc dotimes nsublis unbound-slot-instance syn keyword lispFunc double-float nsubst unbound-variable syn keyword lispFunc double-float-epsilon nsubst-if undefined-function syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport syn keyword lispFunc dpb nsubstitute unintern syn keyword lispFunc dribble nsubstitute-if union syn keyword lispFunc dynamic-extent nsubstitute-if-not unless syn keyword lispFunc ecase nth unread syn keyword lispFunc echo-stream nthcdr unread-char syn keyword lispFunc echo-stream-input-stream nth-value unsigned-byte syn keyword lispFunc echo-stream-output-stream null untrace syn keyword lispFunc ed number unuse-package syn keyword lispFunc eighth numberp unwind-protect syn keyword lispFunc elt numerator update-instance-for-different-class syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class syn keyword lispFunc end-of-file oddp upgraded-array-element-type syn keyword lispFunc endp open upgraded-complex-part-type syn keyword lispFunc enough-namestring open-stream-p upper-case-p syn keyword lispFunc ensure-directories-exist optimize use-package syn keyword lispFunc ensure-generic-function or user syn keyword lispFunc eq otherwise user-homedir-pathname syn keyword lispFunc eql output-stream-p use-value syn keyword lispFunc equal package values syn keyword lispFunc equalp package-error values-list syn keyword lispFunc error package-error-package variable syn keyword lispFunc etypecase package-name vector syn keyword lispFunc eval package-nicknames vectorp syn keyword lispFunc evalhook packagep vector-pop syn keyword lispFunc eval-when package-shadowing-symbols vector-push syn keyword lispFunc evenp package-used-by-list vector-push-extend syn keyword lispFunc every package-use-list warn syn keyword lispFunc exp pairlis warning syn keyword lispFunc export parse-error when syn keyword lispFunc expt parse-integer wild-pathname-p syn keyword lispFunc extended-char parse-namestring with-accessors syn keyword lispFunc fboundp pathname with-compilation-unit syn keyword lispFunc fceiling pathname-device with-condition-restarts syn keyword lispFunc fdefinition pathname-directory with-hash-table-iterator syn keyword lispFunc ffloor pathname-host with-input-from-string syn keyword lispFunc fifth pathname-match-p with-open-file syn keyword lispFunc file-author pathname-name with-open-stream syn keyword lispFunc file-error pathnamep with-output-to-string syn keyword lispFunc file-error-pathname pathname-type with-package-iterator syn keyword lispFunc file-length pathname-version with-simple-restart syn keyword lispFunc file-namestring peek-char with-slots syn keyword lispFunc file-position phase with-standard-io-syntax syn keyword lispFunc file-stream pi write syn keyword lispFunc file-string-length plusp write-byte syn keyword lispFunc file-write-date pop write-char syn keyword lispFunc fill position write-line syn keyword lispFunc fill-pointer position-if write-sequence syn keyword lispFunc find position-if-not write-string syn keyword lispFunc find-all-symbols pprint write-to-string syn keyword lispFunc find-class pprint-dispatch yes-or-no-p syn keyword lispFunc find-if pprint-exit-if-list-exhausted y-or-n-p syn keyword lispFunc find-if-not pprint-fill zerop syn match lispFunc "\" if exists("g:lispsyntax_clisp") syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>" syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>" syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>" syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>" syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>" syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>" syn match lispFunc "\<\(ffi:\)\?c-lines\>" syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>" syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>" syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>" syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>" syn match lispFunc "\<\(ffi:\)\?typeof\>" syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>" syn match lispFunc "\<\(ext:\)\?with-collect\>" syn match lispFunc "\<\(ext:\)\?letf\*\?\>" syn match lispFunc "\<\(ext:\)\?finalize\>\>" syn match lispFunc "\<\(ext:\)\?memoized\>" syn match lispFunc "\<\(ext:\)\?getenv\>" syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>" syn match lispFunc "\<\(ext:\)\?ethe\>" syn match lispFunc "\<\(ext:\)\?with-gensyms\>" syn match lispFunc "\<\(ext:\)\?open-http\>" syn match lispFunc "\<\(ext:\)\?string-concat\>" syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>" syn match lispFunc "\<\(ext:\)\?with-html-output\>" syn match lispFunc "\<\(ext:\)\?expand-form\>" syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>" syn match lispFunc "\<\(ext:\)\?re-export\>" syn match lispFunc "\<\(ext:\)\?saveinitmem\>" syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>" syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>" syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>" syn match lispFunc "\<\(custom:\)\?\*ansi\*\>" endif syn keyword lispKey :abort :from-end :overwrite syn keyword lispKey :adjustable :gensym :predicate syn keyword lispKey :append :host :preserve-whitespace syn keyword lispKey :array :if-does-not-exist :pretty syn keyword lispKey :base :if-exists :print syn keyword lispKey :case :include :print-function syn keyword lispKey :circle :index :probe syn keyword lispKey :conc-name :inherited :radix syn keyword lispKey :constructor :initial-contents :read-only syn keyword lispKey :copier :initial-element :rehash-size syn keyword lispKey :count :initial-offset :rehash-threshold syn keyword lispKey :create :initial-value :rename syn keyword lispKey :default :input :rename-and-delete syn keyword lispKey :defaults :internal :size syn keyword lispKey :device :io :start syn keyword lispKey :direction :junk-allowed :start1 syn keyword lispKey :directory :key :start2 syn keyword lispKey :displaced-index-offset :length :stream syn keyword lispKey :displaced-to :level :supersede syn keyword lispKey :element-type :name :test syn keyword lispKey :end :named :test-not syn keyword lispKey :end1 :new-version :type syn keyword lispKey :end2 :nicknames :use syn keyword lispKey :error :output :verbose syn keyword lispKey :escape :output-file :version syn keyword lispKey :external syn keyword lispKey :documentation :shadowing-import-from :modern :export syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern syn keyword lispKey &allow-other-keys &aux &body syn keyword lispKey &environment &key &optional &rest &whole syn keyword lispKey :fill-pointer syn keyword lispKey :upcase :downcase :preserve :invert syn keyword lispKey :load-toplevel :compile-toplevel :execute syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum syn keyword lispKey :and :with :initially :append :into :count :end :repeat syn keyword lispKey :always :never :thereis :from :to :upto :downto :below syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom if exists("g:lispsyntax_clisp") syn keyword lispKey :arguments :return-type :library :full :malloc-free syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c syn keyword lispKey :language :built-in :typedef :external syn keyword lispKey :fini :init-once :init-always endif syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch* syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch* syn keyword lispVar *break-on-signals* *load-truename* *print-pretty* syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix* syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably* syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin* syn keyword lispVar *compile-file-truename* *package* *print-right-margin* syn keyword lispVar *compile-file-truename* *print-array* *query-io* syn keyword lispVar *compile-print* *print-base* *random-state* syn keyword lispVar *compile-verbose* *print-case* *read-base* syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format* syn keyword lispVar *debug-io* *print-escape* *read-eval* syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress* syn keyword lispVar *default-pathname-defaults* *print-length* *readtable* syn keyword lispVar *error-output* *print-level* *standard-input* syn keyword lispVar *evalhook* *print-lines* *standard-output* syn keyword lispVar *features* *print-miser-width* *terminal-io* syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output* syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell if exists("g:lisp_instring") syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained endif syn keyword lispDecl defmacro do-all-symbols labels syn keyword lispDecl defsetf do-external-symbols let syn keyword lispDecl deftype do-symbols locally syn keyword lispDecl defun dotimes macrolet syn keyword lispDecl do* flet multiple-value-bind if exists("g:lispsyntax_clisp") syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>" syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>" syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>" syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>" syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>" syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>" syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>" syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>" syn keyword lispDecl size_t off_t time_t handle endif syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\=" syn match lispNumber "-\=\(\d\+/\d\+\)" syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*" syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#! syn match lispEscapeSpecial !#x\x\+! syn match lispEscapeSpecial !#o\o\+! syn match lispEscapeSpecial !#b[01]\+! syn match lispEscapeSpecial !#\\[ -}\~]! syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+! syn match lispEscapeSpecial !#([^()'`,"; \t]\+)! syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)! syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>" syn match lispConcat "\s\.\s" syn match lispParenError ")" syn cluster lispCommentGroup contains=lispTodo,@Spell syn match lispComment ";.*$" contains=@lispCommentGroup syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup syn keyword lispTodo contained combak combak: todo todo: syn sync lines=100 if !exists("skip_lisp_syntax_inits") hi def link lispCommentRegion lispComment hi def link lispAtomNmbr lispNumber hi def link lispAtomMark lispMark hi def link lispInStringString lispString hi def link lispAtom Identifier hi def link lispAtomBarSymbol Special hi def link lispBarSymbol Special hi def link lispComment Comment hi def link lispConcat Statement hi def link lispDecl Statement hi def link lispFunc Statement hi def link lispKey Type hi def link lispMark Delimiter hi def link lispNumber Number hi def link lispParenError Error hi def link lispEscapeSpecial Type hi def link lispString String hi def link lispTodo Todo hi def link lispVar Statement if exists("g:lisp_rainbow") && g:lisp_rainbow != 0 if &bg == "dark" hi def hlLevel0 ctermfg=red guifg=red1 hi def hlLevel1 ctermfg=yellow guifg=orange1 hi def hlLevel2 ctermfg=green guifg=yellow1 hi def hlLevel3 ctermfg=cyan guifg=greenyellow hi def hlLevel4 ctermfg=magenta guifg=green1 hi def hlLevel5 ctermfg=red guifg=springgreen1 hi def hlLevel6 ctermfg=yellow guifg=cyan1 hi def hlLevel7 ctermfg=green guifg=slateblue1 hi def hlLevel8 ctermfg=cyan guifg=magenta1 hi def hlLevel9 ctermfg=magenta guifg=purple1 else hi def hlLevel0 ctermfg=red guifg=red3 hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 hi def hlLevel2 ctermfg=darkgreen guifg=orange2 hi def hlLevel3 ctermfg=blue guifg=yellow3 hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 hi def hlLevel5 ctermfg=red guifg=green4 hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 hi def hlLevel8 ctermfg=blue guifg=darkslateblue hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet endif endif endif let b:current_syntax = "lisp" if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'lite' endif if main_syntax == 'lite' if exists("lite_sql_query") if lite_sql_query == 1 syn include @liteSql :p:h/sql.vim unlet b:current_syntax endif endif endif if main_syntax == 'msql' if exists("msql_sql_query") if msql_sql_query == 1 syn include @liteSql :p:h/sql.vim unlet b:current_syntax endif endif endif syn cluster liteSql remove=sqlString,sqlComment syn case match syn keyword liteIntVar ERRMSG contained syn region liteComment start="/\*" end="\*/" contains=liteTodo syn keyword liteFunctions echo printf fprintf open close read syn keyword liteFunctions readln readtok syn keyword liteFunctions split strseg chop tr sub substr syn keyword liteFunctions test unlink umask chmod mkdir chdir rmdir syn keyword liteFunctions rename truncate link symlink stat syn keyword liteFunctions sleep system getpid getppid kill syn keyword liteFunctions time ctime time2unixtime unixtime2year syn keyword liteFunctions unixtime2year unixtime2month unixtime2day syn keyword liteFunctions unixtime2hour unixtime2min unixtime2sec syn keyword liteFunctions strftime syn keyword liteFunctions getpwnam getpwuid syn keyword liteFunctions gethostbyname gethostbyaddress syn keyword liteFunctions urlEncode setContentType includeFile syn keyword liteFunctions msqlConnect msqlClose msqlSelectDB syn keyword liteFunctions msqlQuery msqlStoreResult msqlFreeResult syn keyword liteFunctions msqlFetchRow msqlDataSeek msqlListDBs syn keyword liteFunctions msqlListTables msqlInitFieldList msqlListField syn keyword liteFunctions msqlFieldSeek msqlNumRows msqlEncode syn keyword liteFunctions exit fatal typeof syn keyword liteFunctions crypt addHttpHeader syn keyword liteConditional if else syn keyword liteRepeat while syn keyword liteStatement break return continue syn match liteOperator "[-+=#*]" syn match liteOperator "/[^*]"me=e-1 syn match liteOperator "\$" syn match liteRelation "&&" syn match liteRelation "||" syn match liteRelation "[!=<>]=" syn match liteRelation "[<>]" syn match liteIdentifier "$\h\w*" contains=liteIntVar,liteOperator syn match liteGlobalIdentifier "@\h\w*" contains=liteIntVar syn keyword liteInclude load syn keyword liteDefine funct syn keyword liteType int uint char real syn region liteString keepend matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=liteIdentifier,liteSpecialChar,@liteSql syn match liteNumber "-\=\<\d\+\>" syn match liteFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" syn match liteSpecialChar "\\[abcfnrtv\\]" contained syn match liteParentError "[)}\]]" syn keyword liteTodo TODO Todo todo contained syn match liteExec "^#!.*$" syn cluster liteInside contains=liteComment,liteFunctions,liteIdentifier,liteGlobalIdentifier,liteConditional,liteRepeat,liteStatement,liteOperator,liteRelation,liteType,liteString,liteNumber,liteFloat,liteParent syn region liteParent matchgroup=Delimiter start="(" end=")" contains=@liteInside syn region liteParent matchgroup=Delimiter start="{" end="}" contains=@liteInside syn region liteParent matchgroup=Delimiter start="\[" end="\]" contains=@liteInside if main_syntax == 'lite' if exists("lite_minlines") exec "syn sync minlines=" . lite_minlines else syn sync minlines=100 endif endif hi def link liteComment Comment hi def link liteString String hi def link liteNumber Number hi def link liteFloat Float hi def link liteIdentifier Identifier hi def link liteGlobalIdentifier Identifier hi def link liteIntVar Identifier hi def link liteFunctions Function hi def link liteRepeat Repeat hi def link liteConditional Conditional hi def link liteStatement Statement hi def link liteType Type hi def link liteInclude Include hi def link liteDefine Define hi def link liteSpecialChar SpecialChar hi def link liteParentError liteError hi def link liteError Error hi def link liteTodo Todo hi def link liteOperator Operator hi def link liteRelation Operator let b:current_syntax = "lite" if main_syntax == 'lite' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword litestepTodo \ contained \ TODO FIXME XXX NOTE syn match litestepComment \ contained display contains=litestepTodo,@Spell \ ';.*$' syn case ignore syn cluster litestepBeginnings \ contains= \ litestepComment, \ litestepPreProc, \ litestepMultiCommandStart, \ litestepBangCommandStart, \ litestepGenericDirective syn match litestepGenericDirective \ contained display \ '\<\h\w\+\>' syn match litestepBeginning \ nextgroup=@litestepBeginnings skipwhite \ '^' syn keyword litestepPreProc \ contained \ Include \ If \ ElseIf \ Else \ EndIf syn cluster litestepMultiCommands \ contains= \ litestepMultiCommand syn match litestepMultiCommandStart \ nextgroup=@litestepMultiCommands \ '\*' syn match litestepMultiCommand \ contained display \ '\<\h\w\+\>' syn cluster litestepVariables \ contains= \ litestepBuiltinFolderVariable, \ litestepBuiltinConditionalVariable, \ litestepBuiltinResourceVariable, \ litestepBuiltinGUIDFolderMappingVariable, \ litestepVariable syn region litestepVariableExpansion \ display oneline transparent \ contains= \ @litestepVariables, \ litestepNumber, \ litestepMathOperator \ matchgroup=litestepVariableExpansion \ start='\$' \ end='\$' syn match litestepNumber \ display \ '\<\d\+\>' syn region litestepString \ display oneline contains=litestepVariableExpansion \ start=+"+ end=+"+ syn region litestepSubValue \ display oneline contains=litestepVariableExpansion \ start=+'+ end=+'+ syn keyword litestepBoolean \ true \ false syn match litestepRelationalOperator \ display \ '=\|<[>=]\=\|>=\=' syn keyword litestepLogicalOperator \ and \ or \ not syn match litestepMathOperator \ contained display \ '[+*/-]' syn keyword litestepBuiltinDirective \ LoadModule \ LSNoStartup \ LSAutoHideModules \ LSNoShellWarning \ LSSetAsShell \ LSUseSystemDDE \ LSDisableTrayService \ LSImageFolder \ ThemeAuthor \ ThemeName syn keyword litestepDeprecatedBuiltinDirective \ LSLogLevel \ LSLogFile syn match litestepVariable \ contained display \ '\<\h\w\+\>' syn keyword litestepBuiltinFolderVariable \ contained \ AdminToolsDir \ CommonAdminToolsDir \ CommonDesktopDir \ CommonFavorites \ CommonPrograms \ CommonStartMenu \ CommonStartup \ Cookies \ Desktop \ DesktopDir \ DocumentsDir \ Favorites \ Fonts \ History \ Internet \ InternetCache \ LitestepDir \ Nethood \ Printhood \ Programs \ QuickLaunch \ Recent \ Sendto \ Startmenu \ Startup \ Templates \ WinDir \ LitestepDir syn keyword litestepBuiltinConditionalVariable \ contained \ Win2000 \ Win95 \ Win98 \ Win9X \ WinME \ WinNT \ WinNT4 \ WinXP syn keyword litestepBuiltinResourceVariable \ contained \ CompileDate \ ResolutionX \ ResolutionY \ UserName syn keyword litestepBuiltinGUIDFolderMappingVariable \ contained \ AdminTools \ BitBucket \ Controls \ Dialup \ Documents \ Drives \ Network \ NetworkAndDialup \ Printers \ Scheduled syn cluster litestepBangs \ contains= \ litestepBuiltinBang, \ litestepBang syn match litestepBangStart \ nextgroup=@litestepBangs \ '!' syn match litestepBang \ contained display \ '\<\h\w\+\>' syn keyword litestepBuiltinBang \ contained \ About \ Alert \ CascadeWindows \ Confirm \ Execute \ Gather \ HideModules \ LogOff \ MinimizeWindows \ None \ Quit \ Recycle \ Refresh \ Reload \ ReloadModule \ RestoreWindows \ Run \ ShowModules \ Shutdown \ Switchuser \ TileWindowsH \ TileWindowsV \ ToggleModules \ UnloadModule hi def link litestepTodo Todo hi def link litestepComment Comment hi def link litestepDirective Keyword hi def link litestepGenericDirective litestepDirective hi def link litestepPreProc PreProc hi def link litestepMultiCommandStart litestepPreProc hi def link litestepMultiCommand litestepDirective hi def link litestepDelimiter Delimiter hi def link litestepVariableExpansion litestepDelimiter hi def link litestepNumber Number hi def link litestepString String hi def link litestepSubValue litestepString hi def link litestepBoolean Boolean hi def link litestepOperator Operator hi def link litestepRelationalOperator litestepOperator hi def link litestepLogicalOperator litestepOperator hi def link litestepMathOperator litestepOperator hi def link litestepBuiltinDirective litestepDirective hi def link litestepDeprecatedBuiltinDirective Error hi def link litestepVariable Identifier hi def link litestepBuiltinFolderVariable Identifier hi def link litestepBuiltinConditionalVariable Identifier hi def link litestepBuiltinResourceVariable Identifier hi def link litestepBuiltinGUIDFolderMappingVariable Identifier hi def link litestepBangStart litestepPreProc hi def link litestepBang litestepDirective hi def link litestepBuiltinBang litestepBang let b:current_syntax = "litestep" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword loginaccessTodo contained TODO FIXME XXX NOTE syn region loginaccessComment display oneline start='^#' end='$' \ contains=loginaccessTodo,@Spell syn match loginaccessBegin display '^' \ nextgroup=loginaccessPermission, \ loginaccessComment skipwhite syn match loginaccessPermission contained display '[^#]' \ contains=loginaccessPermError \ nextgroup=loginaccessUserSep syn match loginaccessPermError contained display '[^+-]' syn match loginaccessUserSep contained display ':' \ nextgroup=loginaccessUsers, \ loginaccessAllUsers, \ loginaccessExceptUsers syn match loginaccessUsers contained display '[^, \t:]\+' \ nextgroup=loginaccessUserIntSep, \ loginaccessOriginSep syn match loginaccessAllUsers contained display '\' \ nextgroup=loginaccessUserIntSep, \ loginaccessOriginSep syn match loginaccessLocalUsers contained display '\' \ nextgroup=loginaccessUserIntSep, \ loginaccessOriginSep syn match loginaccessExceptUsers contained display '\' \ nextgroup=loginaccessUserIntSep, \ loginaccessOriginSep syn match loginaccessUserIntSep contained display '[, \t]' \ nextgroup=loginaccessUsers, \ loginaccessAllUsers, \ loginaccessExceptUsers syn match loginaccessOriginSep contained display ':' \ nextgroup=loginaccessOrigins, \ loginaccessAllOrigins, \ loginaccessExceptOrigins syn match loginaccessOrigins contained display '[^, \t]\+' \ nextgroup=loginaccessOriginIntSep syn match loginaccessAllOrigins contained display '\' \ nextgroup=loginaccessOriginIntSep syn match loginaccessLocalOrigins contained display '\' \ nextgroup=loginaccessOriginIntSep syn match loginaccessExceptOrigins contained display '\' \ nextgroup=loginaccessOriginIntSep syn match loginaccessOriginIntSep contained display '[, \t]' \ nextgroup=loginaccessOrigins, \ loginaccessAllOrigins, \ loginaccessExceptOrigins hi def link loginaccessTodo Todo hi def link loginaccessComment Comment hi def link loginaccessPermission Type hi def link loginaccessPermError Error hi def link loginaccessUserSep Delimiter hi def link loginaccessUsers Identifier hi def link loginaccessAllUsers Macro hi def link loginaccessLocalUsers Macro hi def link loginaccessExceptUsers Operator hi def link loginaccessUserIntSep loginaccessUserSep hi def link loginaccessOriginSep loginaccessUserSep hi def link loginaccessOrigins Identifier hi def link loginaccessAllOrigins Macro hi def link loginaccessLocalOrigins Macro hi def link loginaccessExceptOrigins loginaccessExceptUsers hi def link loginaccessOriginIntSep loginaccessUserSep let b:current_syntax = "loginaccess" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match logindefsBegin display '^' \ nextgroup= \ logindefsComment, \ @logindefsKeyword \ skipwhite syn region logindefsComment display oneline start='^\s*#' end='$' \ contains=logindefsTodo,@Spell syn keyword logindefsTodo contained TODO FIXME XXX NOTE syn cluster logindefsKeyword contains= \ logindefsBooleanKeyword, \ logindefsEncryptKeyword, \ logindefsNumberKeyword, \ logindefsPathKeyword, \ logindefsPathsKeyword, \ logindefsStringKeyword syn keyword logindefsBooleanKeyword contained \ CHFN_AUTH \ CHSH_AUTH \ CREATE_HOME \ DEFAULT_HOME \ FAILLOG_ENAB \ LASTLOG_ENAB \ LOG_OK_LOGINS \ LOG_UNKFAIL_ENAB \ MAIL_CHECK_ENAB \ MD5_CRYPT_ENAB \ OBSCURE_CHECKS_ENAB \ PASS_ALWAYS_WARN \ PORTTIME_CHECKS_ENAB \ QUOTAS_ENAB \ SU_WHEEL_ONLY \ SYSLOG_SG_ENAB \ SYSLOG_SU_ENAB \ USERGROUPS_ENAB \ nextgroup=logindefsBoolean skipwhite syn keyword logindefsBoolean contained yes no syn keyword logindefsEncryptKeyword contained \ ENCRYPT_METHOD \ nextgroup=logindefsEncryptMethod skipwhite syn keyword logindefsEncryptMethod contained \ DES \ MD5 \ SHA256 \ SHA512 syn keyword logindefsNumberKeyword contained \ ERASECHAR \ FAIL_DELAY \ GID_MAX \ GID_MIN \ KILLCHAR \ LOGIN_RETRIES \ LOGIN_TIMEOUT \ MAX_MEMBERS_PER_GROUP \ PASS_CHANGE_TRIES \ PASS_MAX_DAYS \ PASS_MIN_DAYS \ PASS_WARN_AGE \ PASS_MAX_LEN \ PASS_MIN_LEN \ SHA_CRYPT_MAX_ROUNDS \ SHA_CRYPT_MIN_ROUNDS \ SYS_GID_MAX \ SYS_GID_MIN \ SYS_UID_MAX \ SYS_UID_MIN \ UID_MAX \ UID_MIN \ ULIMIT \ UMASK \ nextgroup=@logindefsNumber skipwhite syn cluster logindefsNumber contains= \ logindefsDecimal, \ logindefsHex, \ logindefsOctal, \ logindefsOctalError syn match logindefsDecimal contained '\<\d\+\>' syn match logindefsHex contained display '\<0x\x\+\>' syn match logindefsOctal contained display '\<0\o\+\>' \ contains=logindefsOctalZero syn match logindefsOctalZero contained display '\<0' syn match logindefsOctalError contained display '\<0\o*[89]\d*\>' syn keyword logindefsPathKeyword contained \ ENVIRON_FILE \ FAKE_SHELL \ FTMP_FILE \ HUSHLOGIN_FILE \ ISSUE_FILE \ MAIL_DIR \ MAIL_FILE \ NOLOGINS_FILE \ SULOG_FILE \ TTYTYPE_FILE \ nextgroup=logindefsPath skipwhite syn match logindefsPath contained '[[:graph:]]\+' syn keyword logindefsPathsKeyword contained \ CONSOLE \ ENV_PATH \ ENV_SUPATH \ MOTD_FILE \ nextgroup=logindefsPaths skipwhite syn match logindefsPaths contained '[^:]\+' \ nextgroup=logindefsPathDelim syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths syn keyword logindefsStringKeyword contained \ CHFN_RESTRICT \ CONSOLE_GROUPS \ ENV_HZ \ ENV_TZ \ LOGIN_STRING \ SU_NAME \ TTYGROUP \ TTYPERM \ USERDEL_CMD \ nextgroup=logindefsString skipwhite syn match logindefsString contained '[[:graph:]]\+' hi def link logindefsComment Comment hi def link logindefsTodo Todo hi def link logindefsKeyword Keyword hi def link logindefsBooleanKeyword logindefsKeyword hi def link logindefsEncryptKeyword logindefsKeyword hi def link logindefsNumberKeyword logindefsKeyword hi def link logindefsPathKeyword logindefsKeyword hi def link logindefsPathsKeyword logindefsKeyword hi def link logindefsStringKeyword logindefsKeyword hi def link logindefsBoolean Boolean hi def link logindefsEncryptMethod Type hi def link logindefsNumber Number hi def link logindefsDecimal logindefsNumber hi def link logindefsHex logindefsNumber hi def link logindefsOctal logindefsNumber hi def link logindefsOctalZero PreProc hi def link logindefsOctalError Error hi def link logindefsPath String hi def link logindefsPaths logindefsPath hi def link logindefsPathDelim Delimiter hi def link logindefsString String let b:current_syntax = "logindefs" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>" syn match logtalkOperator ":-" syn region logtalkString start=+"+ skip=+\\"+ end=+"+ syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)" syn match logtalkOperator "::" syn match logtalkOperator ":" syn match logtalkOperator "\^\^" syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment syn match logtalkCloseEntityDir ":- end_object\." syn match logtalkCloseEntityDir ":- end_protocol\." syn match logtalkCloseEntityDir ":- end_category\." syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- else\." syn match logtalkDirTag ":- endif\." syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- built_in\." syn match logtalkDirTag ":- dynamic\." syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- synchronized\." syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkDirTag ":- threaded\." syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze(" syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze(" syn match logtalkBuiltIn "\" syn match logtalkBuiltIn "\<\(for\|retract\)all\ze(" syn match logtalkBuiltIn "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkOperator "->" syn match logtalkKeyword "\" syn match logtalkKeyword "\<\(type\|domain\|existence\|permission\|representation\|evaluation\|resource\|syntax\)_error\ze(" syn match logtalkOperator "=" syn match logtalkKeyword "\" syn match logtalkOperator "@>=" syn match logtalkKeyword "\" syn match logtalkOperator "\" syn match logtalkOperator "=:=" syn match logtalkOperator "=\\=" syn match logtalkOperator "<" syn match logtalkOperator "=<" syn match logtalkOperator ">" syn match logtalkOperator ">=" syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze(" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\<\(key\)\?sort\ze(" syn match logtalkOperator "+" syn match logtalkOperator "-" syn match logtalkOperator "\*" syn match logtalkOperator "//" syn match logtalkOperator "/" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\" syn match logtalkKeyword "\>" syn match logtalkOperator "<<" syn match logtalkOperator "/\\" syn match logtalkOperator "\\/" syn match logtalkOperator "\\" syn match logtalkKeyword "\" syn match logtalkNumber "\<\d\+\.\d\+\>" syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>" syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>" syn match logtalkNumber "\<0'[\\]\?.\|0''\|0'\"\>" syn match logtalkNumber "\<0b[0-1]\+\>" syn match logtalkNumber "\<0o\o\+\>" syn match logtalkNumber "\<0x\x\+\>" syn match logtalkOperator "\." syn region logtalkBlockComment start="/\*" end="\*/" fold syn match logtalkLineComment "%.*" syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL syn sync ccomment logtalkBlockComment maxlines=50 hi def link logtalkBlockComment Comment hi def link logtalkLineComment Comment hi def link logtalkOpenEntityDir Normal hi def link logtalkOpenEntityDirTag PreProc hi def link logtalkIfContainer PreProc hi def link logtalkIf PreProc hi def link logtalkElseIf PreProc hi def link logtalkElse PreProc hi def link logtalkEntity Normal hi def link logtalkEntityRel Normal hi def link logtalkEntityRelTag PreProc hi def link logtalkCloseEntityDir PreProc hi def link logtalkDir Normal hi def link logtalkDirTag PreProc hi def link logtalkAtom String hi def link logtalkString String hi def link logtalkEscapeSequence SpecialChar hi def link logtalkNumber Number hi def link logtalkKeyword Keyword hi def link logtalkBuiltIn Keyword hi def link logtalkBuiltInMethod Keyword hi def link logtalkOperator Operator hi def link logtalkExtCall Normal hi def link logtalkExtCallTag Operator hi def link logtalkVariable Identifier let b:current_syntax = "logtalk" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn region lotosComment start="(\*" end="\*)" contains=lotosTodo syn match lotosDelimiter "[][]" syn match lotosDelimiter ">>" syn match lotosDelimiter "->" syn match lotosDelimiter "\[>" syn match lotosDelimiter "[|;!?:=,]" syn keyword lotosStatement specification endspec process endproc syn keyword lotosStatement where behaviour behavior syn keyword lotosStatement any let par accept choice hide of in syn keyword lotosStatement i stop exit noexit syn keyword lotosOperator eq ne succ and or xor implies iff syn keyword lotosOperator not true false syn keyword lotosOperator Insert Remove IsIn NotIn Union Ints syn keyword lotosOperator Minus Includes IsSubsetOf syn keyword lotosOperator lt le ge gt 0 syn keyword lotosSort Boolean Bool FBoolean FBool Element syn keyword lotosSort Set String NaturalNumber Nat HexString syn keyword lotosSort HexDigit DecString DecDigit syn keyword lotosSort OctString OctDigit BitString Bit syn keyword lotosSort Octet OctetString syn keyword lotosType type endtype library endlib sorts formalsorts syn keyword lotosType eqns formaleqns opns formalopns forall ofsort is syn keyword lotosType for renamedby actualizedby sortnames opnnames syn keyword lotosType using syn sync lines=250 hi def link lotosStatement Statement hi def link lotosProcess Label hi def link lotosOperator Operator hi def link lotosSort Function hi def link lotosType Type hi def link lotosComment Comment hi def link lotosDelimiter String let b:current_syntax = "lotos" if exists("b:current_syntax") finish endif let s:cpo_save=&cpo set cpo&vim syn case match syn sync lines=1000 setlocal iskeyword=@,48-57,.,@-@,_,192-255 syn keyword loutTodo contained TODO lout Lout LOUT syn keyword loutDefine def macro syn keyword loutKeyword @Begin @End @Figure @Tab syn keyword loutKeyword @Book @Doc @Document @Report syn keyword loutKeyword @Introduction @Abstract @Appendix syn keyword loutKeyword @Chapter @Section @BeginSections @EndSections syn match loutFunction '\<@[^ \t{}]\+\>' syn match loutMBraces '[{}]' syn match loutIBraces '[{}]' syn match loutBBrace '[{}]' syn match loutBIBraces '[{}]' syn match loutHeads '[{}]' syn match loutBraceError '}' syn match loutEOmlDef '^//$' syn region loutObject transparent matchgroup=Delimiter start='{' matchgroup=Delimiter end='}' contains=ALLBUT,loutBraceError syn keyword loutNULL {} syn region loutComment start='\#' end='$' contains=loutTodo syn region loutSpecial start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match loutSymbols '@\(\(Char\)\|\(Sym\)\)\s\+[A-Za-z]\+' syn match loutInclude '@IncludeGraphic\s\+\k\+' syn region loutInclude start='@\(\(SysInclude\)\|\(IncludeGraphic\)\|\(Include\)\)\s*{' end='}' syn match loutTag '@\(\(Tag\)\|\(PageMark\)\|\(PageOf\)\|\(NumberOf\)\)\s\+\k\+' syn region loutTag start='@Tag\s*{' end='}' syn match loutMath '@Eq\s\+\k\+' syn region loutMath matchgroup=loutMBraces start='@Eq\s*{' matchgroup=loutMBraces end='}' contains=ALLBUT,loutBraceError syn match loutItalic '@I\s\+\k\+' syn region loutItalic matchgroup=loutIBraces start='@I\s*{' matchgroup=loutIBraces end='}' contains=ALLBUT,loutBraceError syn match loutBold '@B\s\+\k\+' syn region loutBold matchgroup=loutBBraces start='@B\s*{' matchgroup=loutBBraces end='}' contains=ALLBUT,loutBraceError syn match loutBoldItalic '@BI\s\+\k\+' syn region loutBoldItalic matchgroup=loutBIBraces start='@BI\s*{' matchgroup=loutBIBraces end='}' contains=ALLBUT,loutBraceError syn region loutHeadings matchgroup=loutHeads start='@\(\(Title\)\|\(Caption\)\)\s*{' matchgroup=loutHeads end='}' contains=ALLBUT,loutBraceError hi def link loutTodo Todo hi def link loutDefine Define hi def link loutEOmlDef Define hi def link loutFunction Function hi def link loutBraceError Error hi def link loutNULL Special hi def link loutComment Comment hi def link loutSpecial Special hi def link loutSymbols Character hi def link loutInclude Include hi def link loutKeyword Keyword hi def link loutTag Tag hi def link loutMath Number hi def link loutMBraces loutMath hi loutItalic term=italic cterm=italic gui=italic hi def link loutIBraces loutItalic hi loutBold term=bold cterm=bold gui=bold hi def link loutBBraces loutBold hi loutBoldItalic term=bold,italic cterm=bold,italic gui=bold,italic hi def link loutBIBraces loutBoldItalic hi loutHeadings term=bold cterm=bold guifg=indianred hi def link loutHeads loutHeadings let b:current_syntax = "lout" let &cpo=s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn cluster lpcKeywdGrp contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved syn keyword lpcConditional if else switch syn keyword lpcLabel case default syn keyword lpcOperator catch efun in inherit syn keyword lpcRepeat do for foreach while syn keyword lpcStatement break continue return syn match lpcEfunError /efun[^:]/ display syn keyword lpcKeywdError contained if for foreach return switch while syn keyword lpcKeywdFunc new parse_command sscanf time_expression syn keyword lpcType void mixed unknown syn keyword lpcType int float string syn keyword lpcType array buffer class function mapping object if exists("lpc_compat_32") syn keyword lpcType closure status funcall else syn keyword lpcError closure status syn keyword lpcType multiset endif syn keyword lpcModifier nomask private public syn keyword lpcModifier varargs virtual if exists("lpc_pre_v22") syn keyword lpcReserved nosave protected ref syn keyword lpcModifier static else syn keyword lpcError static syn keyword lpcModifier nosave protected ref endif syn match lpcApplyDecl excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display syn match lpcLongDecl excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display syn match lpcFuncDecl excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display syn match lpcFuncName /(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained syn match lpcFuncName /(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained syn match lpcFuncName /\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained syn keyword lpcApplies contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset syn keyword lpcApplies contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt syn keyword lpcApplies contained author_file compile_object connect crash creator_file domain_file epilog error_handler flag get_bb_uid get_root_uid get_save_file_name log_error make_path_absolute object_name preload privs_file retrieve_ed_setup save_ed_setup slow_shutdown syn keyword lpcApplies contained valid_asm valid_bind valid_compile_to_c valid_database valid_hide valid_link valid_object valid_override valid_read valid_save_binary valid_seteuid valid_shadow valid_socket valid_write syn keyword lpcApplies contained inventory_accessible inventory_visible is_living parse_command_adjectiv_id_list parse_command_adjective_id_list parse_command_all_word parse_command_id_list parse_command_plural_id_list parse_command_prepos_list parse_command_users parse_get_environment parse_get_first_inventory parse_get_next_inventory parser_error_message syn cluster lpcEfunGroup contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc if exists("lpc_compat_32") syn keyword lpc_efuns contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr else syn match lpcErrFunc /#`\h\w*/ syn region lpcCommentFunc start=/^#!/ end=/$/ endif syn keyword lpcOldEfuns contained tail dump_socket_status syn keyword lpcNewEfuns contained socket_status syn keyword lpc_efuns contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats syn keyword lpc_efuns contained bind break_string bufferp syn keyword lpc_efuns contained cache_stats call_other call_out call_out_info call_stack capitalize catch ceil check_memory children classp clear_bit clone_object clonep command commands copy cos cp crc32 crypt ctime syn keyword lpc_efuns contained db_close db_commit db_connect db_exec db_fetch db_rollback db_status debug_info debugmalloc debug_message deep_inherit_list deep_inventory destruct disable_commands disable_wizard domain_stats dumpallobj dump_file_descriptors dump_prog syn keyword lpc_efuns contained each ed ed_cmd ed_start enable_commands enable_wizard environment error errorp eval_cost evaluate exec exp explode export_uid external_start syn keyword lpc_efuns contained fetch_variable file_length file_name file_size filter filter_array filter_mapping find_call_out find_living find_object find_player first_inventory floatp floor flush_messages function_exists function_owner function_profile functionp functions syn keyword lpc_efuns contained generate_source get_char get_config get_dir geteuid getuid syn keyword lpc_efuns contained heart_beats syn keyword lpc_efuns contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp syn keyword lpc_efuns contained keys syn keyword lpc_efuns contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info syn keyword lpc_efuns contained malloc_check malloc_debug malloc_status map map_array map_delete map_mapping mapp master match_path max_eval_cost member_array memory_info memory_summary message mkdir moncontrol move_object mud_status syn keyword lpc_efuns contained named_livings network_stats next_bit next_inventory notify_fail nullp syn keyword lpc_efuns contained objectp objects oldcrypt opcprof origin syn keyword lpc_efuns contained parse_add_rule parse_add_synonym parse_command parse_dump parse_init parse_my_rules parse_refresh parse_remove parse_sentence pluralize pointerp pow present previous_object printf process_string process_value program_info syn keyword lpc_efuns contained query_ed_mode query_heart_beat query_host_name query_idle query_ip_name query_ip_number query_ip_port query_load_average query_notify_fail query_privs query_replaced_program query_shadowing query_snoop query_snooping query_verb syn keyword lpc_efuns contained random read_buffer read_bytes read_file receive reclaim_objects refs regexp reg_assoc reload_object remove_action remove_call_out remove_interactive remove_shadow rename repeat_string replace_program replace_string replaceable reset_eval_cost resolve restore_object restore_variable rm rmdir rotate_x rotate_y rotate_z rusage syn keyword lpc_efuns contained save_object save_variable say scale set_author set_bit set_eval_limit set_heart_beat set_hide set_light set_living_name set_malloc_mask set_privs set_reset set_this_player set_this_user seteuid shadow shallow_inherit_list shout shutdown sin sizeof snoop socket_accept socket_acquire socket_address socket_bind socket_close socket_connect socket_create socket_error socket_listen socket_release socket_write sort_array sprintf sqrt stat store_variable strcmp stringp strlen strsrch syn keyword lpc_efuns contained tan tell_object tell_room terminal_colour test_bit this_interactive this_object this_player this_user throw time to_float to_int trace traceprefix translate typeof syn keyword lpc_efuns contained undefinedp unique_array unique_mapping upper_case uptime userp users syn keyword lpc_efuns contained values variables virtualp syn keyword lpc_efuns contained wizardp write write_buffer write_bytes write_file syn keyword lpcConstant __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__ syn keyword lpcConstant __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__ syn keyword lpcConstant HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL syn keyword lpcConstant MUD_NAME F__THIS_OBJECT syn match lpcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" if !exists("c_no_utf") syn match lpcSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" endif syn match lpcFormat display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained syn match lpcFormat display "%%" contained syn region lpcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat syn region lpcCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat syn region lpcTextString start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial syn region lpcArrayString start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial syn match lpcCharacter "L\='[^\\]'" syn match lpcCharacter "L'[^']*'" contains=lpcSpecial syn match lpcSpecialError "L\='\\[^'\"?\\abefnrtv]'" syn match lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'" syn match lpcSpecialCharacter display "L\='\\\o\{1,3}'" syn match lpcSpecialCharacter display "'\\x\x\{1,2}'" syn match lpcSpecialCharacter display "L'\\x\x\+'" if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match lpcSpaceError display excludenl "\s\+$" endif if !exists("c_no_tab_space_error") syn match lpcSpaceError display " \+\t"me=e-1 endif endif syn cluster lpcParenGroup contains=lpcParenError,lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcCommentSkip,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom syn region lpcParen transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError syn region lpcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError syn match lpcParenError display ")" syn match lpcParenError display "\]" syn match lpcErrInParen display contained "[^^]{"ms=s+1 syn match lpcErrInParen display contained "\(}\|\]\)[^)]"me=e-1 syn region lpcBracket transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError syn region lpcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError syn match lpcErrInBracket display contained "[);{}]" syn case ignore syn match lpcNumbers display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal syn match lpcNumbersCom display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal syn match lpcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" syn match lpcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" syn match lpcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero syn match lpcOctalZero display contained "\<0" syn match lpcFloat display contained "\d\+f" syn match lpcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match lpcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match lpcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" syn match lpcOctalError display contained "0\o*[89]\d*" syn case match syn keyword lpcTodo contained TODO FIXME XXX syn cluster lpcCommentGroup contains=lpcTodo if exists("c_comment_strings") syntax match lpcCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region lpcCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError syn match lpcPreCondit display "^\s*#\s*\(else\|endif\)\>" if !exists("c_no_if0") syn region lpcCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2 syn region lpcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip syn region lpcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip endif syn region lpcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match lpcIncluded display contained "<[^>]*>" syn match lpcInclude display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded syn match lpcLineSkip "\\$" syn cluster lpcPreProcGroup contains=lpcPreCondit,lpcIncluded,lpcInclude,lpcDefine,lpcErrInParen,lpcErrInBracket,lpcUserLabel,lpcSpecial,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcString,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcParen,lpcBracket,lpcMulti,lpcKeywdError syn region lpcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup if exists("lpc_pre_v22") syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup else syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup endif syn cluster lpcMultiGroup contains=lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcCppParen,lpcCppBracket,lpcCppString,lpcKeywdError syn region lpcMulti transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup syn cluster lpcLabelGroup contains=lpcUserLabel syn match lpcUserCont display "^\s*lpc:$" contains=@lpcLabelGroup syn match lpcUserLabel display "lpc" contained if exists("c_minlines") let b:c_minlines = c_minlines else if !exists("c_no_if0") let b:c_minlines = 50 " #if 0 constructs can be long else let b:c_minlines = 15 " mostly for () constructs endif endif exec "syn sync ccomment lpcComment minlines=" . b:c_minlines setlocal cindent setlocal fo-=t fo+=croql setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// if has("gui_win32") && !exists("b:browsefilter") let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" . \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" . \ "Text Documentation (*.txt)\t*.txt\n" . \ "All Files (*.*)\t*.*\n" endif hi def link lpcModifier lpcStorageClass hi def link lpcQuotedFmt lpcFormat hi def link lpcFormat lpcSpecial hi def link lpcCppString lpcString " Cpp means hi def link lpcCommentL lpcComment hi def link lpcCommentStart lpcComment hi def link lpcUserLabel lpcLabel hi def link lpcSpecialCharacter lpcSpecial hi def link lpcOctal lpcPreProc hi def link lpcOctalZero lpcSpecial " LPC will treat octal numbers hi def link lpcEfunError lpcError hi def link lpcKeywdError lpcError hi def link lpcOctalError lpcError hi def link lpcParenError lpcError hi def link lpcErrInParen lpcError hi def link lpcErrInBracket lpcError hi def link lpcCommentError lpcError hi def link lpcCommentStartError lpcError hi def link lpcSpaceError lpcError hi def link lpcSpecialError lpcError hi def link lpcErrFunc lpcError if exists("lpc_pre_v22") hi def link lpcOldEfuns lpc_efuns hi def link lpcNewEfuns lpcError else hi def link lpcOldEfuns lpcReserved hi def link lpcNewEfuns lpc_efuns endif hi def link lpc_efuns lpcFunction hi def link lpcReserved lpcPreProc hi def link lpcTextString lpcString " This should be preprocessors, but hi def link lpcArrayString lpcPreProc " let's make some difference hi def link lpcIncluded lpcString hi def link lpcCommentString lpcString hi def link lpcComment2String lpcString hi def link lpcCommentSkip lpcComment hi def link lpcCommentFunc lpcComment hi def link lpcCppSkip lpcCppOut hi def link lpcCppOut2 lpcCppOut hi def link lpcCppOut lpcComment hi def link lpcApplies Special hi def link lpcCharacter Character hi def link lpcComment Comment hi def link lpcConditional Conditional hi def link lpcConstant Constant hi def link lpcDefine Macro hi def link lpcError Error hi def link lpcFloat Float hi def link lpcFunction Function hi def link lpcIdentifier Identifier hi def link lpcInclude Include hi def link lpcLabel Label hi def link lpcNumber Number hi def link lpcOperator Operator hi def link lpcPreCondit PreCondit hi def link lpcPreProc PreProc hi def link lpcRepeat Repeat hi def link lpcStatement Statement hi def link lpcStorageClass StorageClass hi def link lpcString String hi def link lpcStructure Structure hi def link lpcSpecial LineNr hi def link lpcTodo Todo hi def link lpcType Type let b:current_syntax = "lpc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match syn match lprologBrackErr "\]" syn match lprologParenErr ")" syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>" syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>" syn match lprologOperator "/" syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo syn region lprologComment start="%" end="$" contains=lprologTodo syn keyword lprologTodo contained TODO FIXME XXX syn match lprologInteger "\<\d\+\>" syn match lprologReal "\<\(\d\+\)\=\.\d+\>" syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region lprologClause start="^\w\+" end=":-\|\." syn region lprologModule matchgroup=lprologKeyword start="^\" matchgroup=lprologKeyword end="\." syn match lprologKeyword "^\" skipwhite nextgroup=lprologTypeNames syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator syn match lprologTypeName "\<\w\+\>" contained syn keyword lprologKeyword end import accumulate accum_sig syn keyword lprologKeyword local localkind closed sig syn keyword lprologKeyword kind exportdef useonly syn keyword lprologKeyword infixl infixr infix prefix syn keyword lprologKeyword prefixr postfix postfixl syn keyword lprologSpecial pi sigma is true fail halt stop not syn match lprologSpecial ":-" syn match lprologSpecial "->" syn match lprologSpecial "=>" syn match lprologSpecial "\\" syn match lprologSpecial "!" syn match lprologSpecial "," syn match lprologSpecial ";" syn match lprologSpecial "&" syn match lprologOperator "+" syn match lprologOperator "-" syn match lprologOperator "*" syn match lprologOperator "\~" syn match lprologOperator "\^" syn match lprologOperator "<" syn match lprologOperator ">" syn match lprologOperator "=<" syn match lprologOperator ">=" syn match lprologOperator "::" syn match lprologOperator "=" syn match lprologOperator "\." syn match lprologOperator ":" syn match lprologOperator "|" syn match lprologCommentErr "\*/" syn sync minlines=50 syn sync maxlines=500 hi def link lprologComment Comment hi def link lprologTodo Todo hi def link lprologKeyword Keyword hi def link lprologSpecial Special hi def link lprologOperator Operator hi def link lprologIdentifier Normal hi def link lprologInteger Number hi def link lprologReal Number hi def link lprologString String hi def link lprologCommentErr Error hi def link lprologBrackErr Error hi def link lprologParenErr Error hi def link lprologModuleName Special hi def link lprologTypeName Identifier hi def link lprologVariable Keyword hi def link lprologAtom Normal hi def link lprologClause Type let b:current_syntax = "lprolog" if exists("b:current_syntax") finish endif syn case ignore syn keyword lscriptStatement ActivateApp As And Base Beep Call Case ChDir ChDrive Class syn keyword lscriptStatement Const Dim Declare DefCur DefDbl DefInt DefLng DefSng DefStr syn keyword lscriptStatement DefVar Do Else %Else ElseIf %ElseIf End %End Erase Event Exit syn keyword lscriptStatement Explicit FileCopy FALSE For ForAll Function Get GoTo GoSub syn keyword lscriptStatement If %If In Is Kill Let List Lock Loop MkDir syn keyword lscriptStatement Name Next New NoCase NoPitch Not Nothing NULL syn keyword lscriptStatement On Option Or PI Pitch Preserve Private Public syn keyword lscriptStatement Property Public Put syn keyword lscriptStatement Randomize ReDim Reset Resume Return RmDir syn keyword lscriptStatement Select SendKeys SetFileAttr Set Static Sub Then To TRUE syn keyword lscriptStatement Type Unlock Until While WEnd With Write XOr syn keyword lscriptDatatype Array Currency Double Integer Long Single String String$ Variant syn keyword lscriptNotesType Field Button Navigator syn keyword lscriptNotesType NotesACL NotesACLEntry NotesAgent NotesDatabase NotesDateRange syn keyword lscriptNotesType NotesDateTime NotesDbDirectory NotesDocument syn keyword lscriptNotesType NotesDocumentCollection NotesEmbeddedObject NotesForm syn keyword lscriptNotesType NotesInternational NotesItem NotesLog NotesName NotesNewsLetter syn keyword lscriptNotesType NotesMIMEEntry NotesOutline NotesOutlineEntry NotesRegistration syn keyword lscriptNotesType NotesReplication NotesRichTextItem NotesRichTextParagraphStyle syn keyword lscriptNotesType NotesRichTextStyle NotesRichTextTab syn keyword lscriptNotesType NotesSession NotesTimer NotesView NotesViewColumn NotesViewEntry syn keyword lscriptNotesType NotesViewEntryCollection NotesViewNavigator NotesUIDatabase syn keyword lscriptNotesType NotesUIDocument NotesUIView NotesUIWorkspace syn keyword lscriptNotesConst ACLLEVEL_AUTHOR ACLLEVEL_DEPOSITOR ACLLEVEL_DESIGNER syn keyword lscriptNotesConst ACLLEVEL_EDITOR ACLLEVEL_MANAGER ACLLEVEL_NOACCESS syn keyword lscriptNotesConst ACLLEVEL_READER ACLTYPE_MIXED_GROUP ACLTYPE_PERSON syn keyword lscriptNotesConst ACLTYPE_PERSON_GROUP ACLTYPE_SERVER ACLTYPE_SERVER_GROUP syn keyword lscriptNotesConst ACLTYPE_UNSPECIFIED ACTIONCD ALIGN_CENTER syn keyword lscriptNotesConst ALIGN_FULL ALIGN_LEFT ALIGN_NOWRAP ALIGN_RIGHT syn keyword lscriptNotesConst ASSISTANTINFO ATTACHMENT AUTHORS COLOR_BLACK syn keyword lscriptNotesConst COLOR_BLUE COLOR_CYAN COLOR_DARK_BLUE COLOR_DARK_CYAN syn keyword lscriptNotesConst COLOR_DARK_GREEN COLOR_DARK_MAGENTA COLOR_DARK_RED syn keyword lscriptNotesConst COLOR_DARK_YELLOW COLOR_GRAY COLOR_GREEN COLOR_LIGHT_GRAY syn keyword lscriptNotesConst COLOR_MAGENTA COLOR_RED COLOR_WHITE COLOR_YELLOW syn keyword lscriptNotesConst DATABASE DATETIMES DB_REPLICATION_PRIORITY_HIGH syn keyword lscriptNotesConst DB_REPLICATION_PRIORITY_LOW DB_REPLICATION_PRIORITY_MED syn keyword lscriptNotesConst DB_REPLICATION_PRIORITY_NOTSET EFFECTS_EMBOSS syn keyword lscriptNotesConst EFFECTS_EXTRUDE EFFECTS_NONE EFFECTS_SHADOW syn keyword lscriptNotesConst EFFECTS_SUBSCRIPT EFFECTS_SUPERSCRIPT EMBED_ATTACHMENT syn keyword lscriptNotesConst EMBED_OBJECT EMBED_OBJECTLINK EMBEDDEDOBJECT ERRORITEM syn keyword lscriptNotesConst EV_ALARM EV_COMM EV_MAIL EV_MISC EV_REPLICA EV_RESOURCE syn keyword lscriptNotesConst EV_SECURITY EV_SERVER EV_UNKNOWN EV_UPDATE FONT_COURIER syn keyword lscriptNotesConst FONT_HELV FONT_ROMAN FORMULA FT_DATABASE FT_DATE_ASC syn keyword lscriptNotesConst FT_DATE_DES FT_FILESYSTEM FT_FUZZY FT_SCORES FT_STEMS syn keyword lscriptNotesConst FT_THESAURUS HTML ICON ID_CERTIFIER ID_FLAT syn keyword lscriptNotesConst ID_HIERARCHICAL LSOBJECT MIME_PART NAMES NOTESLINKS syn keyword lscriptNotesConst NOTEREFS NOTES_DESKTOP_CLIENT NOTES_FULL_CLIENT syn keyword lscriptNotesConst NOTES_LIMITED_CLIENT NUMBERS OTHEROBJECT syn keyword lscriptNotesConst OUTLINE_CLASS_DATABASE OUTLINE_CLASS_DOCUMENT syn keyword lscriptNotesConst OUTLINE_CLASS_FOLDER OUTLINE_CLASS_FORM syn keyword lscriptNotesConst OUTLINE_CLASS_FRAMESET OUTLINE_CLASS_NAVIGATOR syn keyword lscriptNotesConst OUTLINE_CLASS_PAGE OUTLINE_CLASS_UNKNOWN syn keyword lscriptNotesConst OUTLINE_CLASS_VIEW OUTLINE_OTHER_FOLDERS_TYPE syn keyword lscriptNotesConst OUTLINE_OTHER_UNKNOWN_TYPE OUTLINE_OTHER_VIEWS_TYPE syn keyword lscriptNotesConst OUTLINE_TYPE_ACTION OUTLINE_TYPE_NAMEDELEMENT syn keyword lscriptNotesConst OUTLINE_TYPE_NOTELINK OUTLINE_TYPE_URL PAGINATE_BEFORE syn keyword lscriptNotesConst PAGINATE_DEFAULT PAGINATE_KEEP_TOGETHER syn keyword lscriptNotesConst PAGINATE_KEEP_WITH_NEXT PICKLIST_CUSTOM PICKLIST_NAMES syn keyword lscriptNotesConst PICKLIST_RESOURCES PICKLIST_ROOMS PROMPT_OK PROMPT_OKCANCELCOMBO syn keyword lscriptNotesConst PROMPT_OKCANCELEDIT PROMPT_OKCANCELEDITCOMBO PROMPT_OKCANCELLIST syn keyword lscriptNotesConst PROMPT_OKCANCELLISTMULT PROMPT_PASSWORD PROMPT_YESNO syn keyword lscriptNotesConst PROMPT_YESNOCANCEL QUERYCD READERS REPLICA_CANDIDATE syn keyword lscriptNotesConst RICHTEXT RULER_ONE_CENTIMETER RULER_ONE_INCH SEV_FAILURE syn keyword lscriptNotesConst SEV_FATAL SEV_NORMAL SEV_WARNING1 SEV_WARNING2 syn keyword lscriptNotesConst SIGNATURE SPACING_DOUBLE SPACING_ONE_POINT_50 syn keyword lscriptNotesConst SPACING_SINGLE STYLE_NO_CHANGE TAB_CENTER TAB_DECIMAL syn keyword lscriptNotesConst TAB_LEFT TAB_RIGHT TARGET_ALL_DOCS TARGET_ALL_DOCS_IN_VIEW syn keyword lscriptNotesConst TARGET_NEW_DOCS TARGET_NEW_OR_MODIFIED_DOCS TARGET_NONE syn keyword lscriptNotesConst TARGET_RUN_ONCE TARGET_SELECTED_DOCS TARGET_UNREAD_DOCS_IN_VIEW syn keyword lscriptNotesConst TEMPLATE TEMPLATE_CANDIDATE TEXT TRIGGER_AFTER_MAIL_DELIVERY syn keyword lscriptNotesConst TRIGGER_BEFORE_MAIL_DELIVERY TRIGGER_DOC_PASTED syn keyword lscriptNotesConst TRIGGER_DOC_UPDATE TRIGGER_MANUAL TRIGGER_NONE syn keyword lscriptNotesConst TRIGGER_SCHEDULED UNAVAILABLE UNKNOWN USERDATA syn keyword lscriptNotesConst USERID VC_ALIGN_CENTER VC_ALIGN_LEFT VC_ALIGN_RIGHT syn keyword lscriptNotesConst VC_ATTR_PARENS VC_ATTR_PUNCTUATED VC_ATTR_PERCENT syn keyword lscriptNotesConst VC_FMT_ALWAYS VC_FMT_CURRENCY VC_FMT_DATE VC_FMT_DATETIME syn keyword lscriptNotesConst VC_FMT_FIXED VC_FMT_GENERAL VC_FMT_HM VC_FMT_HMS syn keyword lscriptNotesConst VC_FMT_MD VC_FMT_NEVER VC_FMT_SCIENTIFIC syn keyword lscriptNotesConst VC_FMT_SOMETIMES VC_FMT_TIME VC_FMT_TODAYTIME VC_FMT_YM syn keyword lscriptNotesConst VC_FMT_YMD VC_FMT_Y4M VC_FONT_BOLD VC_FONT_ITALIC syn keyword lscriptNotesConst VC_FONT_STRIKEOUT VC_FONT_UNDERLINE VC_SEP_COMMA syn keyword lscriptNotesConst VC_SEP_NEWLINE VC_SEP_SEMICOLON VC_SEP_SPACE syn keyword lscriptNotesConst VIEWMAPDATA VIEWMAPLAYOUT VW_SPACING_DOUBLE syn keyword lscriptNotesConst VW_SPACING_ONE_POINT_25 VW_SPACING_ONE_POINT_50 syn keyword lscriptNotesConst VW_SPACING_ONE_POINT_75 VW_SPACING_SINGLE syn keyword lscriptFunction Abs Asc Atn Atn2 ACos ASin syn keyword lscriptFunction CCur CDat CDbl Chr Chr$ CInt CLng Command Command$ syn keyword lscriptFunction Cos CSng CStr syn keyword lscriptFunction CurDir CurDir$ CVar Date Date$ DateNumber DateSerial DateValue syn keyword lscriptFunction Day Dir Dir$ Environ$ Environ EOF Error Error$ Evaluate Exp syn keyword lscriptFunction FileAttr FileDateTime FileLen Fix Format Format$ FreeFile syn keyword lscriptFunction GetFileAttr GetThreadInfo Hex Hex$ Hour syn keyword lscriptFunction IMESetMode IMEStatus Input Input$ InputB InputB$ syn keyword lscriptFunction InputBP InputBP$ InputBox InputBox$ InStr InStrB InStrBP InstrC syn keyword lscriptFunction IsA IsArray IsDate IsElement IsList IsNumeric syn keyword lscriptFunction IsObject IsResponse IsScalar IsUnknown LCase LCase$ syn keyword lscriptFunction Left Left$ LeftB LeftB$ LeftC syn keyword lscriptFunction LeftBP LeftBP$ Len LenB LenBP LenC Loc LOF Log syn keyword lscriptFunction LSet LTrim LTrim$ MessageBox Mid Mid$ MidB MidB$ MidC syn keyword lscriptFunction Minute Month Now Oct Oct$ Responses Right Right$ syn keyword lscriptFunction RightB RightB$ RightBP RightBP$ RightC Round Rnd RSet RTrim RTrim$ syn keyword lscriptFunction Second Seek Sgn Shell Sin Sleep Space Space$ Spc Sqr Str Str$ syn keyword lscriptFunction StrConv StrLeft StrleftBack StrRight StrRightBack syn keyword lscriptFunction StrCompare Tab Tan Time Time$ TimeNumber Timer syn keyword lscriptFunction TimeValue Trim Trim$ Today TypeName UCase UCase$ syn keyword lscriptFunction UniversalID Val Weekday Year syn keyword lscriptMethods AppendToTextList ArrayAppend ArrayReplace ArrayGetIndex syn keyword lscriptMethods Append Bind Close syn keyword lscriptMethods CopyToDatabase CopyAllItems Count CurrentDatabase Delete Execute syn keyword lscriptMethods GetAllDocumentsByKey GetDatabase GetDocumentByKey syn keyword lscriptMethods GetDocumentByUNID GetFirstDocument GetFirstItem syn keyword lscriptMethods GetItems GetItemValue GetNthDocument GetView syn keyword lscriptMethods IsEmpty IsNull %Include Items syn keyword lscriptMethods Line LBound LoadMsgText Open Print syn keyword lscriptMethods RaiseEvent ReplaceItemValue Remove RemoveItem Responses syn keyword lscriptMethods Save Stop UBound UnprocessedDocuments Write syn keyword lscriptEvents Compare OnError syn keyword lscriptFunction Access Alias Any Bin Bin$ Binary ByVal syn keyword lscriptFunction CodeLock CodeLockCheck CodeUnlock CreateLock syn keyword lscriptFunction CurDrive CurDrive$ DataType DestroyLock Eqv syn keyword lscriptFunction Erl Err Fraction From FromFunction FullTrim syn keyword lscriptFunction Imp Int Lib Like ListTag LMBCS LSServer Me syn keyword lscriptFunction Mod MsgDescription MsgText Output Published syn keyword lscriptFunction Random Read Shared Step UChr UChr$ Uni Unicode syn keyword lscriptFunction Until Use UseLSX UString UString$ Width Yield syn keyword lscriptTodo contained TODO syn match lscriptNumber "\<\d\+\>" syn match lscriptNumber "\<\d\+\.\d*\>" syn match lscriptNumber "\.\d\+\>" syn region lscriptString start=+"+ end=+"+ syn region lscriptComment start="REM" end="$" contains=lscriptTodo syn region lscriptComment start="'" end="$" contains=lscriptTodo syn region lscriptLineNumber start="^\d" end="\s" syn match lscriptTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1 hi lscriptNotesType term=underline ctermfg=DarkGreen guifg=SeaGreen gui=bold hi def link lscriptNotesConst lscriptNotesType hi def link lscriptLineNumber Comment hi def link lscriptDatatype Type hi def link lscriptNumber Number hi def link lscriptError Error hi def link lscriptStatement Statement hi def link lscriptString String hi def link lscriptComment Comment hi def link lscriptTodo Todo hi def link lscriptFunction Identifier hi def link lscriptMethods PreProc hi def link lscriptEvents Special hi def link lscriptTypeSpecifier Type let b:current_syntax = "lscript" if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn case match syn keyword lslKeyword default do else for if jump return state while syn keyword lslType float integer key list quaternion rotation string vector syn match lslLabel +@\h\w*+ display syn keyword lslConstant \ ACTIVE AGENT AGENT_ALWAYS_RUN AGENT_ATTACHMENTS AGENT_AWAY AGENT_BUSY \ AGENT_CROUCHING AGENT_FLYING AGENT_IN_AIR AGENT_MOUSELOOK AGENT_ON_OBJECT \ AGENT_SCRIPTED AGENT_SITTING AGENT_TYPING AGENT_WALKING ALL_SIDES ANIM_ON \ ATTACH_BACK ATTACH_BELLY ATTACH_CHEST ATTACH_CHIN ATTACH_HEAD \ ATTACH_HUD_BOTTOM ATTACH_HUD_BOTTOM_LEFT ATTACH_HUD_BOTTOM_RIGHT \ ATTACH_HUD_CENTER_1 ATTACH_HUD_CENTER_2 ATTACH_HUD_TOP_CENTER \ ATTACH_HUD_TOP_LEFT ATTACH_HUD_TOP_RIGHT ATTACH_LEAR ATTACH_LEYE ATTACH_LFOOT \ ATTACH_LHAND ATTACH_LHIP ATTACH_LLARM ATTACH_LLLEG ATTACH_LPEC \ ATTACH_LSHOULDER ATTACH_LUARM ATTACH_LULEG ATTACH_MOUTH ATTACH_NOSE \ ATTACH_PELVIS ATTACH_REAR ATTACH_REYE ATTACH_RFOOT ATTACH_RHAND ATTACH_RHIP \ ATTACH_RLARM ATTACH_RLLEG ATTACH_RPEC ATTACH_RSHOULDER ATTACH_RUARM \ ATTACH_RULEG CAMERA_ACTIVE CAMERA_BEHINDNESS_ANGLE CAMERA_BEHINDNESS_LAG \ CAMERA_DISTANCE CAMERA_FOCUS CAMERA_FOCUS_LAG CAMERA_FOCUS_LOCKED \ CAMERA_FOCUS_OFFSET CAMERA_FOCUS_THRESHOLD CAMERA_PITCH CAMERA_POSITION \ CAMERA_POSITION_LAG CAMERA_POSITION_LOCKED CAMERA_POSITION_THRESHOLD \ CHANGED_ALLOWED_DROP CHANGED_COLOR CHANGED_INVENTORY CHANGED_LINK \ CHANGED_OWNER CHANGED_REGION CHANGED_SCALE CHANGED_SHAPE CHANGED_TELEPORT \ CHANGED_TEXTURE CLICK_ACTION_BUY CLICK_ACTION_NONE CLICK_ACTION_OPEN \ CLICK_ACTION_OPEN_MEDIA CLICK_ACTION_PAY CLICK_ACTION_PLAY CLICK_ACTION_SIT \ CLICK_ACTION_TOUCH CONTROL_BACK CONTROL_DOWN CONTROL_FWD CONTROL_LBUTTON \ CONTROL_LEFT CONTROL_ML_LBUTTON CONTROL_RIGHT CONTROL_ROT_LEFT \ CONTROL_ROT_RIGHT CONTROL_UP DATA_BORN DATA_NAME DATA_ONLINE DATA_PAYINFO \ DATA_RATING DATA_SIM_POS DATA_SIM_RATING DATA_SIM_STATUS DEBUG_CHANNEL \ DEG_TO_RAD EOF FALSE HTTP_BODY_MAXLENGTH HTTP_BODY_TRUNCATED HTTP_METHOD \ HTTP_MIMETYPE HTTP_VERIFY_CERT INVENTORY_ALL INVENTORY_ANIMATION \ INVENTORY_BODYPART INVENTORY_CLOTHING INVENTORY_GESTURE INVENTORY_LANDMARK \ INVENTORY_NONE INVENTORY_NOTECARD INVENTORY_OBJECT INVENTORY_SCRIPT \ INVENTORY_SOUND INVENTORY_TEXTURE LAND_LARGE_BRUSH LAND_LEVEL LAND_LOWER \ LAND_MEDIUM_BRUSH LAND_NOISE LAND_RAISE LAND_REVERT LAND_SMALL_BRUSH \ LAND_SMOOTH LINK_ALL_CHILDREN LINK_ALL_OTHERS LINK_ROOT LINK_SET LINK_THIS \ LIST_STAT_GEOMETRIC_MEAN LIST_STAT_MAX LIST_STAT_MEAN LIST_STAT_MEDIAN \ LIST_STAT_MIN LIST_STAT_NUM_COUNT LIST_STAT_RANGE LIST_STAT_STD_DEV \ LIST_STAT_SUM LIST_STAT_SUM_SQUARES LOOP MASK_BASE MASK_EVERYONE MASK_GROUP \ MASK_NEXT MASK_OWNER NULL_KEY OBJECT_CREATOR OBJECT_DESC OBJECT_GROUP \ OBJECT_NAME OBJECT_OWNER OBJECT_POS OBJECT_ROT OBJECT_UNKNOWN_DETAIL \ OBJECT_VELOCITY PARCEL_COUNT_GROUP PARCEL_COUNT_OTHER PARCEL_COUNT_OWNER \ PARCEL_COUNT_SELECTED PARCEL_COUNT_TEMP PARCEL_COUNT_TOTAL PARCEL_DETAILS_AREA \ PARCEL_DETAILS_DESC PARCEL_DETAILS_GROUP PARCEL_DETAILS_NAME \ PARCEL_DETAILS_OWNER PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY \ PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS PARCEL_FLAG_ALLOW_CREATE_OBJECTS \ PARCEL_FLAG_ALLOW_DAMAGE PARCEL_FLAG_ALLOW_FLY \ PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY PARCEL_FLAG_ALLOW_GROUP_SCRIPTS \ PARCEL_FLAG_ALLOW_LANDMARK PARCEL_FLAG_ALLOW_SCRIPTS \ PARCEL_FLAG_ALLOW_TERRAFORM PARCEL_FLAG_LOCAL_SOUND_ONLY \ PARCEL_FLAG_RESTRICT_PUSHOBJECT PARCEL_FLAG_USE_ACCESS_GROUP \ PARCEL_FLAG_USE_ACCESS_LIST PARCEL_FLAG_USE_BAN_LIST \ PARCEL_FLAG_USE_LAND_PASS_LIST PARCEL_MEDIA_COMMAND_AGENT \ PARCEL_MEDIA_COMMAND_AUTO_ALIGN PARCEL_MEDIA_COMMAND_DESC \ PARCEL_MEDIA_COMMAND_LOOP PARCEL_MEDIA_COMMAND_LOOP_SET \ PARCEL_MEDIA_COMMAND_PAUSE PARCEL_MEDIA_COMMAND_PLAY PARCEL_MEDIA_COMMAND_SIZE \ PARCEL_MEDIA_COMMAND_STOP PARCEL_MEDIA_COMMAND_TEXTURE \ PARCEL_MEDIA_COMMAND_TIME PARCEL_MEDIA_COMMAND_TYPE \ PARCEL_MEDIA_COMMAND_UNLOAD PARCEL_MEDIA_COMMAND_URL PASSIVE \ PAYMENT_INFO_ON_FILE PAYMENT_INFO_USED PAY_DEFAULT PAY_HIDE PERM_ALL PERM_COPY \ PERM_MODIFY PERM_MOVE PERM_TRANSFER PERMISSION_ATTACH PERMISSION_CHANGE_LINKS \ PERMISSION_CONTROL_CAMERA PERMISSION_DEBIT PERMISSION_TAKE_CONTROLS \ PERMISSION_TRACK_CAMERA PERMISSION_TRIGGER_ANIMATION PI PI_BY_TWO PING_PONG \ PRIM_BUMP_BARK PRIM_BUMP_BLOBS PRIM_BUMP_BRICKS PRIM_BUMP_BRIGHT \ PRIM_BUMP_CHECKER PRIM_BUMP_CONCRETE PRIM_BUMP_DARK PRIM_BUMP_DISKS \ PRIM_BUMP_GRAVEL PRIM_BUMP_LARGETILE PRIM_BUMP_NONE PRIM_BUMP_SHINY \ PRIM_BUMP_SIDING PRIM_BUMP_STONE PRIM_BUMP_STUCCO PRIM_BUMP_SUCTION \ PRIM_BUMP_TILE PRIM_BUMP_WEAVE PRIM_BUMP_WOOD PRIM_CAST_SHADOWS PRIM_COLOR \ PRIM_FLEXIBLE PRIM_FULLBRIGHT PRIM_HOLE_CIRCLE PRIM_HOLE_DEFAULT \ PRIM_HOLE_SQUARE PRIM_HOLE_TRIANGLE PRIM_MATERIAL PRIM_MATERIAL_FLESH \ PRIM_MATERIAL_GLASS PRIM_MATERIAL_LIGHT PRIM_MATERIAL_METAL \ PRIM_MATERIAL_PLASTIC PRIM_MATERIAL_RUBBER PRIM_MATERIAL_STONE \ PRIM_MATERIAL_WOOD PRIM_PHANTOM PRIM_PHYSICS PRIM_POINT_LIGHT PRIM_POSITION \ PRIM_ROTATION PRIM_SCULPT_TYPE_CYLINDER PRIM_SCULPT_TYPE_PLANE \ PRIM_SCULPT_TYPE_SPHERE PRIM_SCULPT_TYPE_TORUS PRIM_SHINY_HIGH PRIM_SHINY_LOW \ PRIM_SHINY_MEDIUM PRIM_SHINY_NONE PRIM_SIZE PRIM_TEMP_ON_REZ PRIM_TEXGEN \ PRIM_TEXGEN_DEFAULT PRIM_TEXGEN_PLANAR PRIM_TEXTURE PRIM_TYPE PRIM_TYPE_BOX \ PRIM_TYPE_BOX PRIM_TYPE_CYLINDER PRIM_TYPE_CYLINDER PRIM_TYPE_LEGACY \ PRIM_TYPE_PRISM PRIM_TYPE_PRISM PRIM_TYPE_RING PRIM_TYPE_SCULPT \ PRIM_TYPE_SPHERE PRIM_TYPE_SPHERE PRIM_TYPE_TORUS PRIM_TYPE_TORUS \ PRIM_TYPE_TUBE PRIM_TYPE_TUBE PSYS_PART_BEAM_MASK PSYS_PART_BOUNCE_MASK \ PSYS_PART_DEAD_MASK PSYS_PART_EMISSIVE_MASK PSYS_PART_END_ALPHA \ PSYS_PART_END_COLOR PSYS_PART_END_SCALE PSYS_PART_FLAGS \ PSYS_PART_FOLLOW_SRC_MASK PSYS_PART_FOLLOW_VELOCITY_MASK \ PSYS_PART_INTERP_COLOR_MASK PSYS_PART_INTERP_SCALE_MASK PSYS_PART_MAX_AGE \ PSYS_PART_RANDOM_ACCEL_MASK PSYS_PART_RANDOM_VEL_MASK PSYS_PART_START_ALPHA \ PSYS_PART_START_COLOR PSYS_PART_START_SCALE PSYS_PART_TARGET_LINEAR_MASK \ PSYS_PART_TARGET_POS_MASK PSYS_PART_TRAIL_MASK PSYS_PART_WIND_MASK \ PSYS_SRC_ACCEL PSYS_SRC_ANGLE_BEGIN PSYS_SRC_ANGLE_END \ PSYS_SRC_BURST_PART_COUNT PSYS_SRC_BURST_RADIUS PSYS_SRC_BURST_RATE \ PSYS_SRC_BURST_SPEED_MAX PSYS_SRC_BURST_SPEED_MIN PSYS_SRC_INNERANGLE \ PSYS_SRC_MAX_AGE PSYS_SRC_OMEGA PSYS_SRC_OUTERANGLE PSYS_SRC_PATTERN \ PSYS_SRC_PATTERN_ANGLE PSYS_SRC_PATTERN_ANGLE_CONE \ PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY PSYS_SRC_PATTERN_DROP \ PSYS_SRC_PATTERN_EXPLODE PSYS_SRC_TARGET_KEY PSYS_SRC_TEXTURE PUBLIC_CHANNEL \ RAD_TO_DEG REGION_FLAG_ALLOW_DAMAGE REGION_FLAG_ALLOW_DIRECT_TELEPORT \ REGION_FLAG_BLOCK_FLY REGION_FLAG_BLOCK_TERRAFORM \ REGION_FLAG_DISABLE_COLLISIONS REGION_FLAG_DISABLE_PHYSICS \ REGION_FLAG_FIXED_SUN REGION_FLAG_RESTRICT_PUSHOBJECT REGION_FLAG_SANDBOX \ REMOTE_DATA_CHANNEL REMOTE_DATA_REPLY REMOTE_DATA_REQUEST REVERSE ROTATE SCALE \ SCRIPTED SMOOTH SQRT2 STATUS_BLOCK_GRAB STATUS_CAST_SHADOWS STATUS_DIE_AT_EDGE \ STATUS_PHANTOM STATUS_PHYSICS STATUS_RETURN_AT_EDGE STATUS_ROTATE_X \ STATUS_ROTATE_Y STATUS_ROTATE_Z STATUS_SANDBOX STRING_TRIM STRING_TRIM_HEAD \ STRING_TRIM_TAIL TRUE TWO_PI TYPE_FLOAT TYPE_INTEGER TYPE_INVALID TYPE_KEY \ TYPE_ROTATION TYPE_STRING TYPE_VECTOR VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY \ VEHICLE_ANGULAR_DEFLECTION_TIMESCALE VEHICLE_ANGULAR_FRICTION_TIMESCALE \ VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE VEHICLE_ANGULAR_MOTOR_DIRECTION \ VEHICLE_ANGULAR_MOTOR_TIMESCALE VEHICLE_BANKING_EFFICIENCY VEHICLE_BANKING_MIX \ VEHICLE_BANKING_TIMESCALE VEHICLE_BUOYANCY VEHICLE_FLAG_CAMERA_DECOUPLED \ VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT VEHICLE_FLAG_HOVER_TERRAIN_ONLY \ VEHICLE_FLAG_HOVER_UP_ONLY VEHICLE_FLAG_HOVER_WATER_ONLY \ VEHICLE_FLAG_LIMIT_MOTOR_UP VEHICLE_FLAG_LIMIT_ROLL_ONLY \ VEHICLE_FLAG_MOUSELOOK_BANK VEHICLE_FLAG_MOUSELOOK_STEER \ VEHICLE_FLAG_NO_DEFLECTION_UP VEHICLE_HOVER_EFFICIENCY VEHICLE_HOVER_HEIGHT \ VEHICLE_HOVER_TIMESCALE VEHICLE_LINEAR_DEFLECTION_EFFICIENCY \ VEHICLE_LINEAR_DEFLECTION_TIMESCALE VEHICLE_LINEAR_FRICTION_TIMESCALE \ VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE VEHICLE_LINEAR_MOTOR_TIMESCALE \ VEHICLE_LINEAR_MOTOR_DIRECTION VEHICLE_LINEAR_MOTOR_OFFSET \ VEHICLE_REFERENCE_FRAME VEHICLE_TYPE_AIRPLANE VEHICLE_TYPE_BALLOON \ VEHICLE_TYPE_BOAT VEHICLE_TYPE_CAR VEHICLE_TYPE_NONE VEHICLE_TYPE_SLED \ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY VEHICLE_VERTICAL_ATTRACTION_TIMESCALE \ ZERO_ROTATION ZERO_VECTOR syn keyword lslEvent \ attach at_rot_target at_target changed collision collision_end collision_start \ control dataserver email http_response land_collision land_collision_end \ land_collision_start link_message listen money moving_end moving_start \ not_at_rot_target no_sensor object_rez on_rez remote_data run_time_permissions \ sensor state_entry state_exit timer touch touch_end touch_start not_at_target syn keyword lslFunction \ llAbs llAcos llAddToLandBanList llAddToLandPassList llAdjustSoundVolume \ llAllowInventoryDrop llAngleBetween llApplyImpulse llApplyRotationalImpulse \ llAsin llAtan2 llAttachToAvatar llAvatarOnSitTarget llAxes2Rot llAxisAngle2Rot \ llBase64ToInteger llBase64ToString llBreakAllLinks llBreakLink llCSV2List \ llCeil llClearCameraParams llCloseRemoteDataChannel llCloud llCollisionFilter \ llCollisionSound llCollisionSprite llCos llCreateLink llDeleteSubList \ llDeleteSubString llDetachFromAvatar llDetectedGrab llDetectedGroup \ llDetectedKey llDetectedLinkNumber llDetectedName llDetectedOwner \ llDetectedPos llDetectedRot llDetectedType llDetectedVel llDialog llDie \ llDumpList2String llEdgeOfWorld llEjectFromLand llEmail llEscapeURL \ llEuler2Rot llFabs llFloor llForceMouselook llFrand llGetAccel llGetAgentInfo \ llGetAgentSize llGetAlpha llGetAndResetTime llGetAnimation llGetAnimationList \ llGetAttached llGetBoundingBox llGetCameraPos llGetCameraRot llGetCenterOfMass \ llGetColor llGetCreator llGetDate llGetEnergy llGetForce llGetFreeMemory \ llGetGMTclock llGetGeometricCenter llGetInventoryCreator llGetInventoryKey \ llGetInventoryName llGetInventoryNumber llGetInventoryPermMask \ llGetInventoryType llGetKey llGetLandOwnerAt llGetLinkKey llGetLinkName \ llGetLinkNumber llGetListEntryType llGetListLength llGetLocalPos llGetLocalRot \ llGetMass llGetNextEmail llGetNotecardLine llGetNumberOfNotecardLines \ llGetNumberOfPrims llGetNumberOfSides llGetObjectDesc llGetObjectDetails \ llGetObjectMass llGetObjectName llGetObjectPermMask llGetObjectPrimCount \ llGetOmega llGetOwner llGetOwnerKey llGetParcelDetails llGetParcelFlags \ llGetParcelMaxPrims llGetParcelPrimCount llGetParcelPrimOwners \ llGetPermissions llGetPermissionsKey llGetPos llGetPrimitiveParams \ llGetRegionCorner llGetRegionFPS llGetRegionFlags llGetRegionName \ llGetRegionTimeDilation llGetRootPosition llGetRootRotation llGetRot \ llGetScale llGetScriptName llGetScriptState llGetSimulatorHostname \ llGetStartParameter llGetStatus llGetSubString llGetSunDirection llGetTexture \ llGetTextureOffset llGetTextureRot llGetTextureScale llGetTime llGetTimeOfDay \ llGetTimestamp llGetTorque llGetUnixTime llGetVel llGetWallclock \ llGiveInventory llGiveInventoryList llGiveMoney llGodLikeRezObject llGround \ llGroundContour llGroundNormal llGroundRepel llGroundSlope llHTTPRequest \ llInsertString llInstantMessage llIntegerToBase64 llKey2Name llList2CSV \ llList2Float llList2Integer llList2Key llList2List llList2ListStrided \ llList2Rot llList2String llList2Vector llListFindList llListInsertList \ llListRandomize llListReplaceList llListSort llListStatistics llListen \ llListenControl llListenRemove llLoadURL llLog llLog10 llLookAt llLoopSound \ llLoopSoundMaster llLoopSoundSlave llMD5String llMakeExplosion llMakeFire \ llMakeFountain llMakeSmoke llMapDestination llMessageLinked llMinEventDelay \ llModPow llModifyLand llMoveToTarget llOffsetTexture llOpenRemoteDataChannel \ llOverMyLand llOwnerSay llParcelMediaCommandList llParcelMediaQuery \ llParseString2List llParseStringKeepNulls llParticleSystem llPassCollisions \ llPassTouches llPlaySound llPlaySoundSlave llPointAt llPow llPreloadSound \ llPushObject llRefreshPrimURL llRegionSay llReleaseCamera llReleaseControls \ llRemoteDataReply llRemoteDataSetRegion llRemoteLoadScript \ llRemoteLoadScriptPin llRemoveFromLandBanList llRemoveFromLandPassList \ llRemoveInventory llRemoveVehicleFlags llRequestAgentData \ llRequestInventoryData llRequestPermissions llRequestSimulatorData \ llResetLandBanList llResetLandPassList llResetOtherScript llResetScript \ llResetTime llRezAtRoot llRezObject llRot2Angle llRot2Axis llRot2Euler \ llRot2Fwd llRot2Left llRot2Up llRotBetween llRotLookAt llRotTarget \ llRotTargetRemove llRotateTexture llRound llSameGroup llSay llScaleTexture \ llScriptDanger llSendRemoteData llSensor llSensorRemove llSensorRepeat \ llSetAlpha llSetBuoyancy llSetCameraAtOffset llSetCameraEyeOffset \ llSetCameraParams llSetClickAction llSetColor llSetDamage llSetForce \ llSetForceAndTorque llSetHoverHeight llSetInventoryPermMask llSetLinkAlpha \ llSetLinkColor llSetLinkPrimitiveParams llSetLinkTexture llSetLocalRot \ llSetObjectDesc llSetObjectName llSetObjectPermMask llSetParcelMusicURL \ llSetPayPrice llSetPos llSetPrimURL llSetPrimitiveParams \ llSetRemoteScriptAccessPin llSetRot llSetScale llSetScriptState llSetSitText \ llSetSoundQueueing llSetSoundRadius llSetStatus llSetText llSetTexture \ llSetTextureAnim llSetTimerEvent llSetTorque llSetTouchText llSetVehicleFlags \ llSetVehicleFloatParam llSetVehicleRotationParam llSetVehicleType \ llSetVehicleVectorParam llShout llSin llSitTarget llSleep llSound \ llSoundPreload llSqrt llStartAnimation llStopAnimation llStopHover \ llStopLookAt llStopMoveToTarget llStopPointAt llStopSound llStringLength \ llStringToBase64 llStringTrim llSubStringIndex llTakeCamera llTakeControls \ llTan llTarget llTargetOmega llTargetRemove llTeleportAgentHome llToLower \ llToUpper llTriggerSound llTriggerSoundLimited llUnSit llUnescapeURL llVecDist \ llVecMag llVecNorm llVolumeDetect llWater llWhisper llWind llXorBase64Strings \ llXorBase64StringsCorrect syn match lslOperator +[-!%&*+/<=>^|~]+ display syn match lslNumber +-\=\%(\<\d\+\|\%(\<\d\+\)\=\.\d\+\)\%([Ee][-+]\=\d\+\)\=\>\|\<0x\x\+\>+ display syn match lslVectorRot +<[-\t +.0-9A-Za-z_]\+\%(,[-\t +.0-9A-Za-z_]\+\)\{2,3}>+ contains=lslNumber display syn match lslProperty +\.\@<=[sxyz]\>+ display syn region lslString start=+"+ skip=+\\.+ end=+"+ contains=lslSpecialChar,@Spell syn match lslSpecialChar +\\.+ contained display syn match lslKey +"\x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}"+ display syn match lslBlock +[][(){}]+ display syn match lslTypecast +(\%(float\|integer\|key\|list\|quaternion\|rotation\|string\|vector\))+ contains=lslType display syn match lslComment +//.*+ contains=@Spell hi def link lslKeyword Keyword hi def link lslType Type hi def link lslLabel Label hi def link lslConstant Constant hi def link lslEvent PreProc hi def link lslFunction Function hi def link lslOperator Operator hi def link lslNumber Number hi def link lslVectorRot Special hi def link lslProperty Identifier hi def link lslString String hi def link lslSpecialChar SpecialChar hi def link lslKey Special hi def link lslBlock Special hi def link lslTypecast Operator hi def link lslComment Comment let b:current_syntax = "lsl" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif syn match lssElement "^[^:]\+" nextgroup=lssMono syn match lssMono ":[^:]\+" contained nextgroup=lssFgColor contains=lssReverse,lssUnderline,lssBold,lssStandout syn keyword lssBold bold contained syn keyword lssReverse reverse contained syn keyword lssUnderline underline contained syn keyword lssStandout standout contained syn match lssFgColor ":[^:]\+" contained nextgroup=lssBgColor contains=lssRedFg,lssBlueFg,lssGreenFg,lssBrownFg,lssMagentaFg,lssCyanFg,lssLightgrayFg,lssGrayFg,lssBrightredFg,lssBrightgreenFg,lssYellowFg,lssBrightblueFg,lssBrightmagentaFg,lssBrightcyanFg syn case ignore syn keyword lssRedFg red contained syn keyword lssBlueFg blue contained syn keyword lssGreenFg green contained syn keyword lssBrownFg brown contained syn keyword lssMagentaFg magenta contained syn keyword lssCyanFg cyan contained syn keyword lssLightgrayFg lightgray contained syn keyword lssGrayFg gray contained syn keyword lssBrightredFg brightred contained syn keyword lssBrightgreenFg brightgreen contained syn keyword lssYellowFg yellow contained syn keyword lssBrightblueFg brightblue contained syn keyword lssBrightmagentaFg brightmagenta contained syn keyword lssBrightcyanFg brightcyan contained syn case match syn match lssBgColor ":[^:]\+" contained contains=lssRedBg,lssBlueBg,lssGreenBg,lssBrownBg,lssMagentaBg,lssCyanBg,lssLightgrayBg,lssGrayBg,lssBrightredBg,lssBrightgreenBg,lssYellowBg,lssBrightblueBg,lssBrightmagentaBg,lssBrightcyanBg,lssWhiteBg syn case ignore syn keyword lssRedBg red contained syn keyword lssBlueBg blue contained syn keyword lssGreenBg green contained syn keyword lssBrownBg brown contained syn keyword lssMagentaBg magenta contained syn keyword lssCyanBg cyan contained syn keyword lssLightgrayBg lightgray contained syn keyword lssGrayBg gray contained syn keyword lssBrightredBg brightred contained syn keyword lssBrightgreenBg brightgreen contained syn keyword lssYellowBg yellow contained syn keyword lssBrightblueBg brightblue contained syn keyword lssBrightmagentaBg brightmagenta contained syn keyword lssBrightcyanBg brightcyan contained syn keyword lssWhiteBg white contained syn case match syn match lssComment "#.*$" hi def link lssComment Comment hi def link lssElement Identifier hi def lssBold term=bold cterm=bold hi def lssReverse term=reverse cterm=reverse hi def lssUnderline term=underline cterm=underline hi def lssStandout term=standout cterm=standout hi def lssRedFg ctermfg=red hi def lssBlueFg ctermfg=blue hi def lssGreenFg ctermfg=green hi def lssBrownFg ctermfg=brown hi def lssMagentaFg ctermfg=magenta hi def lssCyanFg ctermfg=cyan hi def lssGrayFg ctermfg=gray if $COLORTERM == "rxvt" hi def lssLightgrayFg ctermfg=gray cterm=bold hi def lssBrightredFg ctermfg=red cterm=bold hi def lssBrightgreenFg ctermfg=green cterm=bold hi def lssYellowFg ctermfg=yellow cterm=bold hi def lssBrightblueFg ctermfg=blue cterm=bold hi def lssBrightmagentaFg ctermfg=magenta cterm=bold hi def lssBrightcyanFg ctermfg=cyan cterm=bold else hi def lssLightgrayFg ctermfg=lightgray hi def lssBrightredFg ctermfg=lightred hi def lssBrightgreenFg ctermfg=lightgreen hi def lssYellowFg ctermfg=yellow hi def lssBrightblueFg ctermfg=lightblue hi def lssBrightmagentaFg ctermfg=lightmagenta hi def lssBrightcyanFg ctermfg=lightcyan endif hi def lssRedBg ctermbg=red hi def lssBlueBg ctermbg=blue hi def lssGreenBg ctermbg=green hi def lssBrownBg ctermbg=brown hi def lssMagentaBg ctermbg=magenta hi def lssCyanBg ctermbg=cyan hi def lssLightgrayBg ctermbg=lightgray hi def lssGrayBg ctermbg=gray hi def lssBrightredBg ctermbg=lightred hi def lssBrightgreenBg ctermbg=lightgreen hi def lssYellowBg ctermbg=yellow hi def lssBrightblueBg ctermbg=lightblue hi def lssBrightmagentaBg ctermbg=lightmagenta hi def lssBrightcyanBg ctermbg=lightcyan hi def lssWhiteBg ctermbg=white ctermfg=black let b:current_syntax = "lss" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if !exists("lua_version") let lua_version = 5 let lua_subversion = 2 elseif !exists("lua_subversion") let lua_subversion = 0 endif syn case match syn sync minlines=100 syn keyword luaTodo contained TODO FIXME XXX syn match luaComment "--.*$" contains=luaTodo,@Spell if lua_version == 5 && lua_subversion == 0 syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment,@Spell syn region luaInnerComment contained transparent start="\[\[" end="\]\]" elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" contains=luaTodo,@Spell endif syn match luaComment "\%^#!.*" syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaParenError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaBraceError,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaBlock,luaLoopBlock,luaIn,luaStatement syn match luaParenError ")" syn match luaBraceError "}" syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn syn region luaIfThen transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaIn nextgroup=luaThenEnd skipwhite skipempty syn region luaThenEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaThenEnd,luaIn syn region luaElseifThen contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn syn keyword luaElse contained else syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaElseifThen,luaElse,luaThenEnd,luaIn syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd,luaIn nextgroup=luaBlock skipwhite skipempty syn region luaLoopBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaIfThen,luaElseifThen,luaElse,luaThenEnd nextgroup=luaBlock skipwhite skipempty syn keyword luaIn contained in syn keyword luaStatement return local break if lua_version > 5 || (lua_version == 5 && lua_subversion >= 2) syn keyword luaStatement goto syn match luaLabel "::\I\i*::" endif syn keyword luaOperator and or not syn keyword luaConstant nil if lua_version > 4 syn keyword luaConstant true false endif if lua_version < 5 syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\[[:digit:]]\{,3}" elseif lua_version == 5 if lua_subversion == 0 syn match luaSpecial contained #\\[\\abfnrtv'"[\]]\|\\[[:digit:]]\{,3}# syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2,@Spell else if lua_subversion == 1 syn match luaSpecial contained #\\[\\abfnrtv'"]\|\\[[:digit:]]\{,3}# else " Lua 5.2 syn match luaSpecial contained #\\[\\abfnrtvz'"]\|\\x[[:xdigit:]]\{2}\|\\[[:digit:]]\{,3}# endif syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" contains=@Spell endif endif syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial,@Spell syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial,@Spell syn match luaNumber "\<\d\+\>" syn match luaNumber "\<\d\+\.\d*\%([eE][-+]\=\d\+\)\=\>" syn match luaNumber "\.\d\+\%([eE][-+]\=\d\+\)\=\>" syn match luaNumber "\<\d\+[eE][-+]\=\d\+\>" if lua_version >= 5 if lua_subversion == 1 syn match luaNumber "\<0[xX]\x\+\>" elseif lua_subversion >= 2 syn match luaNumber "\<0[xX][[:xdigit:].]\+\%([pP][-+]\=\d\+\)\=\>" endif endif syn keyword luaFunc assert collectgarbage dofile error next syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION if lua_version == 4 syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo syn keyword luaFunc call copytagmethods dostring syn keyword luaFunc foreach foreachi getglobal getn syn keyword luaFunc gettagmethod globals newtag syn keyword luaFunc setglobal settag settagmethod sort syn keyword luaFunc tag tinsert tremove syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR syn keyword luaFunc openfile closefile flush seek syn keyword luaFunc setlocale execute remove rename tmpname syn keyword luaFunc getenv date clock exit syn keyword luaFunc readfrom writeto appendto read write syn keyword luaFunc PI abs sin cos tan asin syn keyword luaFunc acos atan atan2 ceil floor syn keyword luaFunc mod frexp ldexp sqrt min max log syn keyword luaFunc log10 exp deg rad random syn keyword luaFunc randomseed strlen strsub strlower strupper syn keyword luaFunc strchar strrep ascii strbyte syn keyword luaFunc format strfind gsub syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook elseif lua_version == 5 syn keyword luaFunc getmetatable setmetatable syn keyword luaFunc ipairs pairs syn keyword luaFunc pcall xpcall syn keyword luaFunc _G loadfile rawequal require if lua_subversion == 0 syn keyword luaFunc getfenv setfenv syn keyword luaFunc loadstring unpack syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME else syn keyword luaFunc load select syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 1 syn keyword luaFunc getfenv setfenv syn keyword luaFunc loadstring module unpack syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ elseif lua_subversion == 2 syn keyword luaFunc _ENV rawlen syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 0 syn match luaFunc /\/ else syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif if lua_subversion == 0 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ elseif lua_subversion == 1 syn match luaFunc /\/ elseif lua_subversion == 2 syn match luaFunc /\/ syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 0 syn match luaFunc /\/ syn match luaFunc /\/ else if lua_subversion == 1 syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ if lua_subversion == 1 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ elseif lua_subversion == 2 syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ syn match luaFunc /\/ endif endif hi def link luaStatement Statement hi def link luaRepeat Repeat hi def link luaFor Repeat hi def link luaString String hi def link luaString2 String hi def link luaNumber Number hi def link luaOperator Operator hi def link luaIn Operator hi def link luaConstant Constant hi def link luaCond Conditional hi def link luaElse Conditional hi def link luaFunction Function hi def link luaComment Comment hi def link luaTodo Todo hi def link luaTable Structure hi def link luaError Error hi def link luaParenError Error hi def link luaBraceError Error hi def link luaSpecial SpecialChar hi def link luaFunc Identifier hi def link luaLabel Label let b:current_syntax = "lua" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match lynxStart "^" transparent skipwhite nextgroup=lynxOption syn match lynxComment "\(^\|\s\+\)#.*$" contains=lynxTodo syn keyword lynxTodo TODO NOTE FIXME XXX contained syn match lynxDelimiter ":" skipwhite nextgroup=lynxBoolean,lynxNumber,lynxNone,lynxRCOption syn case ignore syn keyword lynxBoolean TRUE FALSE ON OFF contained syn keyword lynxNone NONE contained syn case match syn match lynxNumber "-\=\<\d\+\>" contained syn case ignore syn keyword lynxOption ACCEPT_ALL_COOKIES ALERTSECS ALWAYS_RESUBMIT_POSTS \ ALWAYS_TRUSTED_EXEC ANONFTP_PASSWORD ASSUMED_COLOR \ ASSUMED_DOC_CHARSET_CHOICE ASSUME_CHARSET ASSUME_LOCAL_CHARSET \ ASSUME_UNREC_CHARSET AUTO_SESSION AUTO_UNCACHE_DIRLISTS BAD_HTML \ BIBP_BIBHOST BIBP_GLOBAL_SERVER BLOCK_MULTI_BOOKMARKS BOLD_H1 \ BOLD_HEADERS BOLD_NAME_ANCHORS BOOKMARK_FILE BROKEN_FTP_EPSV \ BROKEN_FTP_RETR BZIP2_PATH CASE_SENSITIVE_ALWAYS_ON \ CASE_SENSITIVE_SEARCHING CHARACTER_SET CHARSETS_DIRECTORY \ CHARSET_SWITCH_RULES CHECKMAIL CHMOD_PATH COLLAPSE_BR_TAGS COLOR \ COLOR_STYLE COMPRESS_PATH CONNECT_TIMEOUT COOKIE_ACCEPT_DOMAINS \ COOKIE_FILE COOKIE_LOOSE_INVALID_DOMAINS \ COOKIE_QUERY_INVALID_DOMAINS COOKIE_REJECT_DOMAINS COOKIE_SAVE_FILE \ COOKIE_STRICT_INVALID_DOMAINS COPY_PATH CSO_PROXY CSWING_PATH \ DEBUGSECS DEFAULT_BOOKMARK_FILE DEFAULT_CACHE_SIZE DEFAULT_COLORS \ DEFAULT_EDITOR DEFAULT_INDEX_FILE DEFAULT_KEYPAD_MODE \ DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS DEFAULT_USER_MODE \ DEFAULT_VIRTUAL_MEMORY_SIZE DELAYSECS DIRED_MENU DIR_LIST_ORDER \ DIR_LIST_STYLE DISPLAY DISPLAY_CHARSET_CHOICE DOWNLOADER EMACS_KEYS \ EMACS_KEYS_ALWAYS_ON ENABLE_LYNXRC ENABLE_SCROLLBACK EXTERNAL \ FILE_EDITOR FILE_SORTING_METHOD FINGER_PROXY FOCUS_WINDOW \ FORCE_8BIT_TOUPPER FORCE_COOKIE_PROMPT FORCE_EMPTY_HREFLESS_A \ FORCE_SSL_COOKIES_SECURE FORCE_SSL_PROMPT FORMS_OPTIONS FTP_FORMAT \ FTP_PASSIVE FTP_PROXY GLOBAL_EXTENSION_MAP GLOBAL_MAILCAP \ GOPHER_PROXY GOTOBUFFER GZIP_PATH HELPFILE HIDDEN_LINK_MARKER \ HISTORICAL_COMMENTS HTMLSRC_ATTRNAME_XFORM HTMLSRC_TAGNAME_XFORM \ HTTPS_PROXY HTTP_PROXY INCLUDE INFLATE_PATH INFOSECS INSTALL_PATH \ JUMPBUFFER JUMPFILE JUMP_PROMPT JUSTIFY JUSTIFY_MAX_VOID_PERCENT \ KBLAYOUT KEYBOARD_LAYOUT KEYMAP KEYPAD_MODE \ LEFTARROW_IN_TEXTFIELD_PROMPT LINEEDIT_MODE LIST_FORMAT \ LIST_NEWS_DATES LIST_NEWS_NUMBERS LOCALE_CHARSET LOCALHOST_ALIAS \ LOCAL_DOMAIN LOCAL_EXECUTION_LINKS_ALWAYS_ON \ LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE LYNXCGI_DOCUMENT_ROOT \ LYNXCGI_ENVIRONMENT LYNX_HOST_NAME LYNX_SIG_FILE MAIL_ADRS \ MAIL_SYSTEM_ERROR_LOGGING MAKE_LINKS_FOR_ALL_IMAGES \ MAKE_PSEUDO_ALTS_FOR_INLINES MAX_COOKIES_BUFFER MAX_COOKIES_DOMAIN \ MAX_COOKIES_GLOBAL MESSAGESECS MINIMAL_COMMENTS MKDIR_PATH \ MULTI_BOOKMARK MULTI_BOOKMARK_SUPPORT MV_PATH NCR_IN_BOOKMARKS \ NESTED_TABLES NEWSPOST_PROXY NEWSREPLY_PROXY NEWS_CHUNK_SIZE \ NEWS_MAX_CHUNK NEWS_POSTING NEWS_PROXY NNTPSERVER NNTP_PROXY \ NONRESTARTING_SIGWINCH NO_DOT_FILES NO_FILE_REFERER \ NO_FORCED_CORE_DUMP NO_FROM_HEADER NO_ISMAP_IF_USEMAP NO_MARGINS \ NO_PAUSE NO_PROXY NO_REFERER_HEADER NO_TABLE_CENTER NO_TITLE \ NUMBER_FIELDS_ON_LEFT NUMBER_LINKS_ON_LEFT OUTGOING_MAIL_CHARSET \ PARTIAL PARTIAL_THRES PERSISTENT_COOKIES PERSONAL_EXTENSION_MAP \ PERSONAL_MAILCAP PERSONAL_MAIL_ADDRESS POSITIONABLE_EDITOR \ PREFERRED_CHARSET PREFERRED_ENCODING PREFERRED_LANGUAGE \ PREFERRED_MEDIA_TYPES PREPEND_BASE_TO_SOURCE \ PREPEND_CHARSET_TO_SOURCE PRETTYSRC PRETTYSRC_SPEC \ PRETTYSRC_VIEW_NO_ANCHOR_NUMBERING PRINTER QUIT_DEFAULT_YES RAW_MODE \ READ_TIMEOUT REFERER_WITH_QUERY REPLAYSECS REUSE_TEMPFILES \ RLOGIN_PATH RM_PATH RMDIR_PATH RULE RULESFILE \ RUN_ALL_EXECUTION_LINKS RUN_EXECUTION_LINKS_LOCAL SAVE_SPACE \ SCAN_FOR_BURIED_NEWS_REFS SCREEN_SIZE SCROLLBAR SCROLLBAR_ARROW \ SEEK_FRAG_AREA_IN_CUR SEEK_FRAG_MAP_IN_CUR SELECT_POPUPS \ SEND_USERAGENT SESSION_FILE SESSION_LIMIT SET_COOKIES SETFONT_PATH \ SHOW_COLOR SHOW_CURSOR SHOW_DOTFILES SHOW_KB_NAME SHOW_KB_RATE \ SNEWSPOST_PROXY SNEWSREPLY_PROXY SNEWS_PROXY SOFT_DQUOTES \ SOURCE_CACHE SOURCE_CACHE_FOR_ABORTED SSL_CERT_FILE STARTFILE \ STATUS_BUFFER_SIZE STRIP_DOTDOT_URLS SUBSTITUTE_UNDERSCORES \ SUB_BOOKMARKS SUFFIX SUFFIX_ORDER SYSLOG_REQUESTED_URLS SYSLOG_TEXT \ SYSTEM_EDITOR SYSTEM_MAIL SYSTEM_MAIL_FLAGS TAGSOUP TAR_PATH \ TELNET_PATH TEXTFIELDS_NEED_ACTIVATION TIMEOUT TN3270_PATH \ TOUCH_PATH TRIM_INPUT_FIELDS TRUSTED_EXEC TRUSTED_LYNXCGI \ UNCOMPRESS_PATH UNDERLINE_LINKS UNZIP_PATH UPLOADER \ URL_DOMAIN_PREFIXES URL_DOMAIN_SUFFIXES USERAGENT USER_MODE \ USE_FIXED_RECORDS USE_MOUSE USE_SELECT_POPUPS UUDECODE_PATH \ VERBOSE_IMAGES VIEWER VISITED_LINKS VI_KEYS VI_KEYS_ALWAYS_ON \ WAIS_PROXY XHTML_PARSING XLOADIMAGE_COMMAND ZCAT_PATH ZIP_PATH \ contained nextgroup=lynxDelimiter syn keyword lynxRCOption accept_all_cookies assume_charset auto_session \ bookmark_file case_sensitive_searching character_set \ cookie_accept_domains cookie_file cookie_loose_invalid_domains \ cookie_query_invalid_domains cookie_reject_domains \ cookie_strict_invalid_domains dir_list_style display emacs_keys \ file_editor file_sorting_method force_cookie_prompt force_ssl_prompt \ ftp_passive kblayout keypad_mode lineedit_mode locale_charset \ make_links_for_all_images make_pseudo_alts_for_inlines \ multi_bookmark no_pause personal_mail_address preferred_charset \ preferred_encoding preferred_language preferred_media_types raw_mode \ run_all_execution_links run_execution_links_on_local_files scrollbar \ select_popups send_useragent session_file set_cookies show_color \ show_cursor show_dotfiles show_kb_rate sub_bookmarks tagsoup \ underline_links user_mode useragent verbose_images vi_keys \ visited_links \ contained nextgroup=lynxDelimiter syn case match syn match lynxFormatDir "^\.h\d\s.*$" syn match lynxFormatDir "^\.\(ex\|nf\)\(\s\+\d\+\)\=$" syn match lynxFormatDir "^\.fi$" hi def link lynxBoolean Boolean hi def link lynxComment Comment hi def link lynxDelimiter Special hi def link lynxFormatDir Special hi def link lynxNone Constant hi def link lynxNumber Number hi def link lynxOption Identifier hi def link lynxRCOption lynxOption hi def link lynxTodo Todo let b:current_syntax = "lynx" let &cpo = s:cpo_save unlet s:cpo_save if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax='m4' endif syn match m4Variable contained "\$\d\+" syn match m4Special contained "$[@*#]" syn match m4Comment "\<\(m4_\)\=dnl\>.*" contains=SpellErrors syn match m4Constants "\<\(m4_\)\=__file__" syn match m4Constants "\<\(m4_\)\=__line__" syn keyword m4Constants divnum sysval m4_divnum m4_sysval syn region m4Paren matchgroup=m4Delimiter start="(" end=")" contained contains=@m4Top syn region m4Command matchgroup=m4Function start="\<\(m4_\)\=\(define\|defn\|pushdef\)(" end=")" contains=@m4Top syn region m4Command matchgroup=m4Preproc start="\<\(m4_\)\=\(include\|sinclude\)("he=e-1 end=")" contains=@m4Top syn region m4Command matchgroup=m4Statement start="\<\(m4_\)\=\(syscmd\|esyscmd\|ifdef\|ifelse\|indir\|builtin\|shift\|errprint\|m4exit\|changecom\|changequote\|changeword\|m4wrap\|debugfile\|divert\|undivert\)("he=e-1 end=")" contains=@m4Top syn region m4Command matchgroup=m4builtin start="\<\(m4_\)\=\(len\|index\|regexp\|substr\|translit\|patsubst\|format\|incr\|decr\|eval\|maketemp\)("he=e-1 end=")" contains=@m4Top syn keyword m4Statement divert undivert syn region m4Command matchgroup=m4Type start="\<\(m4_\)\=\(undefine\|popdef\)("he=e-1 end=")" contains=@m4Top syn region m4Function matchgroup=m4Type start="\<[_A-Z][_A-Z0-9]*("he=e-1 end=")" contains=@m4Top syn region m4String start="`" end="'" contained contains=@m4Top,@m4StringContents,SpellErrors syn cluster m4Top contains=m4Comment,m4Constants,m4Special,m4Variable,m4String,m4Paren,m4Command,m4Statement,m4Function hi def link m4Delimiter Delimiter hi def link m4Comment Comment hi def link m4Function Function hi def link m4Keyword Keyword hi def link m4Special Special hi def link m4String String hi def link m4Statement Statement hi def link m4Preproc PreProc hi def link m4Type Type hi def link m4Special Special hi def link m4Variable Special hi def link m4Constants Constant hi def link m4Builtin Statement let b:current_syntax = "m4" if main_syntax == 'm4' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn cluster mailHeaderFields contains=mailHeaderKey,mailSubject,mailHeaderEmail,@mailLinks syn cluster mailLinks contains=mailURL,mailEmail syn cluster mailQuoteExps contains=mailQuoteExp1,mailQuoteExp2,mailQuoteExp3,mailQuoteExp4,mailQuoteExp5,mailQuoteExp6 syn case match syn region mailHeader contains=@mailHeaderFields,@NoSpell start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold syn match mailHeaderKey contained contains=mailEmail,@NoSpell "^From\s.*\d\d\d\d$" syn case ignore syn region mailHeader keepend contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):" skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 end="\v^\z1(\> ?)+"me=s-1 fold syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$" syn region mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> ?)*)@<=(to|b?cc):" skip=",$" end="$" syn match mailHeaderKey contained contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> ?)*)@<=(from|reply-to):.*$" fold syn match mailHeaderKey contained contains=@NoSpell "\v(^(\> ?)*)@<=date:" syn match mailSubject contained "\v^subject:.*$" fold syn match mailSubject contained contains=@NoSpell "\v(^(\> ?)+)@<=subject:.*$" syn match mailHeaderEmail contained contains=@NoSpell "<.\{-}>" syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold syn region mailSignature keepend contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold syn region mailVerbatim contains=@NoSpell keepend start="^#v+$" end="^#v-$" fold syn region mailVerbatim contains=@mailQuoteExps,@NoSpell keepend start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold syn match mailURL contains=@NoSpell `\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^' <>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^' <>"]+)[a-z0-9/]` syn match mailEmail contains=@NoSpell "\v[_=a-z\./+0-9-]+\@[a-z0-9._-]+\a{2}" syn match mailQuoteExp1 contained "\v^(\> ?)" syn match mailQuoteExp2 contained "\v^(\> ?){2}" syn match mailQuoteExp3 contained "\v^(\> ?){3}" syn match mailQuoteExp4 contained "\v^(\> ?){4}" syn match mailQuoteExp5 contained "\v^(\> ?){5}" syn match mailQuoteExp6 contained "\v^(\> ?){6}" syn region mailQuoted6 keepend contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted5 keepend contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted4 keepend contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted3 keepend contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted2 keepend contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" end="^\z1\@!" fold syn region mailQuoted1 keepend contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold if exists("mail_minlines") exec "syn sync minlines=" . mail_minlines else syn sync minlines=100 endif hi def link mailVerbatim Special hi def link mailHeader Statement hi def link mailHeaderKey Type hi def link mailSignature PreProc hi def link mailHeaderEmail mailEmail hi def link mailEmail Special hi def link mailURL String hi def link mailSubject Title hi def link mailQuoted1 Comment hi def link mailQuoted3 mailQuoted1 hi def link mailQuoted5 mailQuoted1 hi def link mailQuoted2 Identifier hi def link mailQuoted4 mailQuoted2 hi def link mailQuoted6 mailQuoted2 hi def link mailQuoteExp1 mailQuoted1 hi def link mailQuoteExp2 mailQuoted2 hi def link mailQuoteExp3 mailQuoted3 hi def link mailQuoteExp4 mailQuoted4 hi def link mailQuoteExp5 mailQuoted5 hi def link mailQuoteExp6 mailQuoted6 let b:current_syntax = "mail" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword mailaliasesTodo contained TODO FIXME XXX NOTE syn region mailaliasesComment display oneline start='^\s*#' end='$' \ contains=mailaliasesTodo,@Spell syn match mailaliasesBegin display '^' \ nextgroup=mailaliasesName, \ mailaliasesComment syn match mailaliasesName contained '[[:alnum:]\._-]\+' \ nextgroup=mailaliasesColon syn region mailaliasesName contained oneline start=+"+ \ skip=+\\\\\|\\"+ end=+"+ \ nextgroup=mailaliasesColon syn match mailaliasesColon contained ':' \ nextgroup=@mailaliasesValue \ skipwhite skipnl syn cluster mailaliasesValue contains=mailaliasesValueAddress, \ mailaliasesValueFile, \ mailaliasesValueCommand, \ mailaliasesValueInclude syn match mailaliasesValueAddress contained '[^ \t/|,]\+' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueFile contained '/[^,]*' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueCommand contained '|[^,]*' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueInclude contained ':include:[^,]*' \ nextgroup=mailaliasesValueSep \ skipwhite skipnl syn match mailaliasesValueSep contained ',' \ nextgroup=@mailaliasesValue \ skipwhite skipnl hi def link mailaliasesTodo Todo hi def link mailaliasesComment Comment hi def link mailaliasesName Identifier hi def link mailaliasesColon Delimiter hi def link mailaliasesValueAddress String hi def link mailaliasesValueFile String hi def link mailaliasesValueCommand String hi def link mailaliasesValueInclude PreProc hi def link mailaliasesValueSep Delimiter let b:current_syntax = "mailaliases" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match mailcapComment "^#.*" syn region mailcapString start=+"+ end=+"+ contains=mailcapSpecial oneline syn match mailcapDelimiter "\\\@" syn match mailcapFieldname "\<\(compose\|composetyped\|print\|edit\|test\|x11-bitmap\|nametemplate\|textualnewlines\|description\|x-\w+\)\>\ze\s*=" syn match mailcapTypeField "^\(text\|image\|audio\|video\|application\|message\|multipart\|model\|x-[[:graph:]]\+\)\(/\(\*\|[[:graph:]]\+\)\)\=\ze\s*;" syn case match hi def link mailcapComment Comment hi def link mailcapDelimiter Delimiter hi def link mailcapFlag Statement hi def link mailcapFieldname Statement hi def link mailcapSpecial Identifier hi def link mailcapTypeField Type hi def link mailcapString String let b:current_syntax = "mailcap" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match makeSpecial "^\s*[@+-]\+" syn match makeNextLine "\\\n\s*" syn match makePreCondit "^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)" syn match makeInclude "^ *[-s]\=include" syn match makeStatement "^ *vpath" syn match makeExport "^ *\(export\|unexport\)\>" syn match makeOverride "^ *override" hi link makeOverride makeStatement hi link makeExport makeStatement syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" contains=makeStatement,makeIdent,makePreCondit,makeDefine syn case ignore syn match makeInclude "^!\s*include" syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|else\s*if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>" syn case match syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString syn match makeIdent "\$\$\w*" syn match makeIdent "\$[^({]" syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2 syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1 syn match makeIdent "%" syn match makeConfig "@[A-Za-z0-9_]\+@" syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource syn region makeTarget transparent matchgroup=makeTarget start="^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands syn match makeTarget "^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget,makeComment skipnl nextgroup=makeCommands,makeCommandError syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent,makeComment skipnl nextgroup=makeCommands,makeCommandError syn match makeCommandError "^\s\+\S.*" contained syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError syn match makeCmdNextLine "\\\n."he=e-1 contained syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 if exists("make_microsoft") syn match makeComment "#.*" contains=@Spell,makeTodo elseif !exists("make_no_comments") syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo syn match makeComment "#$" contains=@Spell endif syn keyword makeTodo TODO FIXME XXX contained syn match makeEscapedChar "\\[^$]" syn region makeDString start=+\(\\\)\@" end=""me=e-10 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend syn region mallardEmphasis start="" end=""me=e-5 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend syn region mallardTitle start="" end=""me=e-8 contains=xmlTag,xmlNamespace,xmlTagName,xmlEndTag,xmlRegion,xmlEntity,@Spell keepend hi def link mallardComment Comment hi def link mallardTagName Statement hi def link mallardTitle Title hi def mallardEmphasis term=italic cterm=italic gui=italic let b:current_syntax = "mallard" if exists("b:current_syntax") finish endif runtime! syntax/ctrlh.vim syn case ignore syn match manReference "\f\+([1-9][a-z]\=)" syn match manTitle "^\f\+([0-9]\+[a-z]\=).*" syn match manSectionHeading "^[a-z][a-z -]*[a-z]$" syn match manSubHeading "^\s\{3\}[a-z][a-z -]*[a-z]$" syn match manOptionDesc "^\s*[+-][a-z0-9]\S*" syn match manLongOptionDesc "^\s*--[a-z0-9-]\S*" if getline(1) =~ '^[a-zA-Z_]\+([23])' syntax include @cCode :p:h/c.vim syn match manCFuncDefinition display "\<\h\w*\>\s*("me=e-1 contained syn region manSynopsis start="^SYNOPSIS"hs=s+8 end="^\u\+\s*$"me=e-12 keepend contains=manSectionHeading,@cCode,manCFuncDefinition endif hi def link manTitle Title hi def link manSectionHeading Statement hi def link manOptionDesc Constant hi def link manLongOptionDesc Constant hi def link manReference PreProc hi def link manSubHeading Function hi def link manCFuncDefinition Function let b:current_syntax = "man" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword manconfTodo contained TODO FIXME XXX NOTE syn region manconfComment display oneline start='^#' end='$' \ contains=manconfTodo,@Spell if !has("win32") && $OSTYPE =~ 'bsd' syn match manconfBegin display '^' \ nextgroup=manconfKeyword,manconfSection, \ manconfComment skipwhite syn keyword manconfKeyword contained _build _crunch \ nextgroup=manconfExtCmd skipwhite syn keyword manconfKeyword contained _suffix \ nextgroup=manconfExt skipwhite syn keyword manconfKeyword contained _crunch syn keyword manconfKeyword contained _subdir _version _whatdb \ nextgroup=manconfPaths skipwhite syn match manconfExtCmd contained display '\.\S\+' \ nextgroup=manconfPaths skipwhite syn match manconfSection contained '[^#_ \t]\S*' \ nextgroup=manconfPaths skipwhite syn keyword manconfSection contained _default \ nextgroup=manconfPaths skipwhite syn match manconfPaths contained display '\S\+' \ nextgroup=manconfPaths skipwhite syn match manconfExt contained display '\.\S\+' hi def link manconfExtCmd Type hi def link manconfSection Identifier hi def link manconfPaths String else syn match manconfBegin display '^' \ nextgroup=manconfBoolean,manconfKeyword, \ manconfDecompress,manconfComment skipwhite syn keyword manconfBoolean contained FSSTND FHS NOAUTOPATH NOCACHE syn keyword manconfKeyword contained MANBIN \ nextgroup=manconfPath skipwhite syn keyword manconfKeyword contained MANPATH MANPATH_MAP \ nextgroup=manconfFirstPath skipwhite syn keyword manconfKeyword contained APROPOS WHATIS TROFF NROFF JNROFF EQN \ NEQN JNEQN TBL COL REFER PIC VGRIND GRAP \ PAGER BROWSER HTMLPAGER CMP CAT COMPRESS \ DECOMPRESS MANDEFOPTIONS \ nextgroup=manconfCommand skipwhite syn keyword manconfKeyword contained COMPRESS_EXT \ nextgroup=manconfExt skipwhite syn keyword manconfKeyword contained MANSECT \ nextgroup=manconfManSect skipwhite syn match manconfPath contained display '\S\+' syn match manconfFirstPath contained display '\S\+' \ nextgroup=manconfSecondPath skipwhite syn match manconfSecondPath contained display '\S\+' syn match manconfCommand contained display '\%(/[^/ \t]\+\)\+' \ nextgroup=manconfCommandOpt skipwhite syn match manconfCommandOpt contained display '\S\+' \ nextgroup=manconfCommandOpt skipwhite syn match manconfExt contained display '\.\S\+' syn match manconfManSect contained '[^:]\+' nextgroup=manconfManSectSep syn match manconfManSectSep contained ':' nextgroup=manconfManSect syn match manconfDecompress contained '\.\S\+' \ nextgroup=manconfCommand skipwhite hi def link manconfBoolean Boolean hi def link manconfPath String hi def link manconfFirstPath manconfPath hi def link manconfSecondPath manconfPath hi def link manconfCommand String hi def link manconfCommandOpt Special hi def link manconfManSect Identifier hi def link manconfManSectSep Delimiter hi def link manconfDecompress Type endif hi def link manconfTodo Todo hi def link manconfComment Comment hi def link manconfKeyword Keyword hi def link manconfExt Type let b:current_syntax = "manconf" let &cpo = s:cpo_save unlet s:cpo_save if !has("syntax") finish endif if !exists("syntax_on") so :p:h/synload.vim endif let syntax_manual = 1 augroup syntaxset au! FileType * exe "set syntax=" . &syntax augroup END if has("menu") && has("gui_running") && !exists("did_install_syntax_menu") && &guioptions !~# 'M' source $VIMRUNTIME/menu.vim endif if exists("b:current_syntax") finish endif if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704 syn iskeyword $,48-57,_,a-z,@-Z else setl isk=$,48-57,_,a-z,@-Z endif if exists("mvpkg_all") let mv_DEtools = 1 let mv_Galois = 1 let mv_GaussInt = 1 let mv_LREtools = 1 let mv_combinat = 1 let mv_combstruct = 1 let mv_difforms = 1 let mv_finance = 1 let mv_genfunc = 1 let mv_geometry = 1 let mv_grobner = 1 let mv_group = 1 let mv_inttrans = 1 let mv_liesymm = 1 let mv_linalg = 1 let mv_logic = 1 let mv_networks = 1 let mv_numapprox = 1 let mv_numtheory = 1 let mv_orthopoly = 1 let mv_padic = 1 let mv_plots = 1 let mv_plottools = 1 let mv_powseries = 1 let mv_process = 1 let mv_simplex = 1 let mv_stats = 1 let mv_student = 1 let mv_sumtools = 1 let mv_tensor = 1 let mv_totorder = 1 endif syn case match syn region mvZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,mvError,mvBraceError,mvCurlyError syn region mvZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,mvError,mvBraceError,mvParenError syn region mvZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,mvError,mvCurlyError,mvParenError syn match mvError "[)\]}]" syn match mvBraceError "[)}]" contained syn match mvCurlyError "[)\]]" contained syn match mvParenError "[\]}]" contained syn match mvComma "[,;:]" syn match mvSemiError "[;:]" contained syn match mvDcolon "::" syn keyword mvPackage algcurves ArrayTools Cache codegen syn keyword mvPackage CodeGeneration CodeTools combinat combstruct syn keyword mvPackage ContextMenu CurveFitting DEtools diffalg syn keyword mvPackage difforms DiscreteTransforms Domains ExternalCalling syn keyword mvPackage FileTools finance GaussInt genfunc syn keyword mvPackage geom3d geometry gfun Groebner syn keyword mvPackage group hashmset IntegerRelations inttrans syn keyword mvPackage LargeExpressions LibraryTools liesymm linalg syn keyword mvPackage LinearAlgebra LinearFunctionalSystems LinearOperators syn keyword mvPackage ListTools Logic LREtools Maplets syn keyword mvPackage MathematicalFunctions MathML Matlab syn keyword mvPackage MatrixPolynomialAlgebra MmaTranslator networks syn keyword mvPackage numapprox numtheory Optimization OreTools syn keyword mvPackage Ore_algebra OrthogonalSeries orthopoly padic syn keyword mvPackage PDEtools plots plottools PolynomialIdeals syn keyword mvPackage PolynomialTools powseries process QDifferenceEquations syn keyword mvPackage RandomTools RationalNormalForms RealDomain RootFinding syn keyword mvPackage ScientificConstants ScientificErrorAnalysis simplex syn keyword mvPackage Slode SNAP Sockets SoftwareMetrics syn keyword mvPackage SolveTools Spread stats StringTools syn keyword mvPackage Student student sumtools SumTools syn keyword mvPackage tensor TypeTools Units VariationalCalculus syn keyword mvPackage VectorCalculus Worksheet XMLTools syn keyword mvTodo contained COMBAK FIXME TODO XXX if exists("g:mapleversion") && g:mapleversion < 9 syn region mvString start=+`+ skip=+``+ end=+`+ keepend contains=mvTodo,@Spell syn region mvString start=+"+ skip=+""+ end=+"+ keepend contains=@Spell syn region mvDelayEval start=+'+ end=+'+ keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError,mvSemiError syn match mvVarAssign "[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:=" contains=mvAssign syn match mvAssign ":=" contained else syn region mvName start=+`+ skip=+``+ end=+`+ keepend contains=mvTodo syn region mvString start=+"+ skip=+""+ end=+"+ keepend contains=@Spell syn region mvDelayEval start=+'+ end=+'+ keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError syn match mvDelim "[;:]" display syn match mvAssign ":=" endif syn match mvOper "\." syn match mvNumber "\<\d\+" " integer syn match mvNumber "[-+]\=\.\d\+" " . integer syn match mvNumber "\<\d\+\.\d\+" " integer . integer syn match mvNumber "\<\d\+\." " integer . syn match mvNumber "\<\d\+\.\." contains=mvRange " integer .. syn match mvNumber "\<\d\+e[-+]\=\d\+" " integer e [-+] integer syn match mvNumber "[-+]\=\.\d\+e[-+]\=\d\+" " . integer e [-+] integer syn match mvNumber "\<\d\+\.\d*e[-+]\=\d\+" " integer . [integer] e [-+] integer syn match mvNumber "[-+]\d\+" " integer syn match mvNumber "[-+]\d\+\.\d\+" " integer . integer syn match mvNumber "[-+]\d\+\." " integer . syn match mvNumber "[-+]\d\+\.\." contains=mvRange " integer .. syn match mvNumber "[-+]\d\+e[-+]\=\d\+" " integer e [-+] integer syn match mvNumber "[-+]\d\+\.\d*e[-+]\=\d\+" " integer . [integer] e [-+] integer syn match mvRange "\.\." syn keyword mvOper and not or xor implies union intersect subset minus mod syn match mvOper "<>\|[<>]=\|[<>]\|=" syn match mvOper "&+\|&-\|&\*\|&\/\|&" syn match mvError "\.\.\." syn keyword mvBool true false FAIL syn keyword mvCond elif else fi if then syn match mvCond "end\s\+if" syn keyword mvRepeat by for in to syn keyword mvRepeat do from od while syn match mvRepeat "end\s\+do" syn keyword mvSpecial NULL syn match mvSpecial "\[\]\|{}" if exists("g:mapleversion") && g:mapleversion < 9 syn keyword mvStatement Order fail options read save syn keyword mvStatement break local point remember stop syn keyword mvStatement done mod proc restart with syn keyword mvStatement end mods quit return syn keyword mvStatement error next else syn keyword mvStatement option options read save syn keyword mvStatement break local remember stop syn keyword mvStatement done mod proc restart syn keyword mvStatement end mods quit return syn keyword mvStatement error next try catch syn keyword mvStatement finally assuming global export syn keyword mvStatement module description use endif syn keyword mvConstant Catalan I gamma infinity syn keyword mvConstant Pi syn keyword mvDebug contained DEBUG syn cluster mvCommentGroup contains=mvTodo,mvDebug,@Spell syn match mvComment "#.*$" contains=@mvCommentGroup syn keyword mvLibrary $ @ @@ ERROR syn keyword mvLibrary AFactor KelvinHer arctan factor log rhs syn keyword mvLibrary AFactors KelvinKei arctanh factors log10 root syn keyword mvLibrary AiryAi KelvinKer argument fclose lprint roots syn keyword mvLibrary AiryBi LambertW array feof map round syn keyword mvLibrary AngerJ Lcm assign fflush map2 rsolve syn keyword mvLibrary Berlekamp LegendreE assigned filepos match savelib syn keyword mvLibrary BesselI LegendreEc asspar fixdiv matrix scanf syn keyword mvLibrary BesselJ LegendreEc1 assume float max searchtext syn keyword mvLibrary BesselK LegendreF asubs floor maximize sec syn keyword mvLibrary BesselY LegendreKc asympt fnormal maxnorm sech syn keyword mvLibrary Beta LegendreKc1 attribute fopen maxorder select syn keyword mvLibrary C LegendrePi bernstein forget member seq syn keyword mvLibrary Chi LegendrePic branches fortran min series syn keyword mvLibrary Ci LegendrePic1 bspline fprintf minimize setattribute syn keyword mvLibrary CompSeq Li cat frac minpoly shake syn keyword mvLibrary Content Linsolve ceil freeze modp showprofile syn keyword mvLibrary D MOLS chrem fremove modp1 showtime syn keyword mvLibrary DESol Maple_floats close frontend modp2 sign syn keyword mvLibrary Det MeijerG close fscanf modpol signum syn keyword mvLibrary Diff Norm coeff fsolve mods simplify syn keyword mvLibrary Dirac Normal coeffs galois msolve sin syn keyword mvLibrary DistDeg Nullspace coeftayl gc mtaylor singular syn keyword mvLibrary Divide Power collect gcd mul sinh syn keyword mvLibrary Ei Powmod combine gcdex nextprime sinterp syn keyword mvLibrary Eigenvals Prem commutat genpoly nops solve syn keyword mvLibrary EllipticCE Primfield comparray harmonic norm sort syn keyword mvLibrary EllipticCK Primitive compoly has normal sparse syn keyword mvLibrary EllipticCPi Primpart conjugate hasfun numboccur spline syn keyword mvLibrary EllipticE ProbSplit content hasoption numer split syn keyword mvLibrary EllipticF Product convergs hastype op splits syn keyword mvLibrary EllipticK Psi convert heap open sprem syn keyword mvLibrary EllipticModulus Quo coords history optimize sprintf syn keyword mvLibrary EllipticNome RESol copy hypergeom order sqrfree syn keyword mvLibrary EllipticPi Randpoly cos iFFT parse sqrt syn keyword mvLibrary Eval Randprime cosh icontent pclose sscanf syn keyword mvLibrary Expand Ratrecon cost identity pclose ssystem syn keyword mvLibrary FFT Re cot igcd pdesolve stack syn keyword mvLibrary Factor Rem coth igcdex piecewise sturm syn keyword mvLibrary Factors Resultant csc ilcm plot sturmseq syn keyword mvLibrary FresnelC RootOf csch ilog plot3d subs syn keyword mvLibrary FresnelS Roots csgn ilog10 plotsetup subsop syn keyword mvLibrary Fresnelf SPrem dawson implicitdiff pochhammer substring syn keyword mvLibrary Fresnelg Searchtext define indets pointto sum syn keyword mvLibrary Frobenius Shi degree index poisson surd syn keyword mvLibrary GAMMA Si denom indexed polar symmdiff syn keyword mvLibrary GaussAGM Smith depends indices polylog symmetric syn keyword mvLibrary Gaussejord Sqrfree diagonal inifcn polynom system syn keyword mvLibrary Gausselim Ssi diff ininame powmod table syn keyword mvLibrary Gcd StruveH dilog initialize prem tan syn keyword mvLibrary Gcdex StruveL dinterp insert prevprime tanh syn keyword mvLibrary HankelH1 Sum disassemble int primpart testeq syn keyword mvLibrary HankelH2 Svd discont interface print testfloat syn keyword mvLibrary Heaviside TEXT discrim interp printf thaw syn keyword mvLibrary Hermite Trace dismantle invfunc procbody thiele syn keyword mvLibrary Im WeberE divide invztrans procmake time syn keyword mvLibrary Indep WeierstrassP dsolve iostatus product translate syn keyword mvLibrary Interp WeierstrassPPrime eliminate iperfpow proot traperror syn keyword mvLibrary Inverse WeierstrassSigma ellipsoid iquo property trigsubs syn keyword mvLibrary Irreduc WeierstrassZeta entries iratrecon protect trunc syn keyword mvLibrary Issimilar Zeta eqn irem psqrt type syn keyword mvLibrary JacobiAM abs erf iroot quo typematch syn keyword mvLibrary JacobiCD add erfc irreduc radnormal unames syn keyword mvLibrary JacobiCN addcoords eulermac iscont radsimp unapply syn keyword mvLibrary JacobiCS addressof eval isdifferentiable rand unassign syn keyword mvLibrary JacobiDC algebraic evala isolate randomize unload syn keyword mvLibrary JacobiDN algsubs evalapply ispoly randpoly unprotect syn keyword mvLibrary JacobiDS alias evalb isqrfree range updatesR4 syn keyword mvLibrary JacobiNC allvalues evalc isqrt rationalize userinfo syn keyword mvLibrary JacobiND anames evalf issqr ratrecon value syn keyword mvLibrary JacobiNS antisymm evalfint latex readbytes vector syn keyword mvLibrary JacobiSC applyop evalgf lattice readdata verify syn keyword mvLibrary JacobiSD arccos evalhf lcm readlib whattype syn keyword mvLibrary JacobiSN arccosh evalm lcoeff readline with syn keyword mvLibrary JacobiTheta1 arccot evaln leadterm readstat writebytes syn keyword mvLibrary JacobiTheta2 arccoth evalr length realroot writedata syn keyword mvLibrary JacobiTheta3 arccsc exp lexorder recipoly writeline syn keyword mvLibrary JacobiTheta4 arccsch expand lhs rem writestat syn keyword mvLibrary JacobiZeta arcsec expandoff limit remove writeto syn keyword mvLibrary KelvinBei arcsech expandon ln residue zip syn keyword mvLibrary KelvinBer arcsin extract lnGAMMA resultant ztrans syn keyword mvLibrary KelvinHei arcsinh if exists("mv_DEtools") syn keyword mvPkg_DEtools DEnormal Dchangevar autonomous dfieldplot reduceOrder untranslate syn keyword mvPkg_DEtools DEplot PDEchangecoords convertAlg indicialeq regularsp varparam syn keyword mvPkg_DEtools DEplot3d PDEplot convertsys phaseportrait translate endif if exists("mv_Domains") endif if exists("mv_GF") syn keyword mvPkg_Galois galois endif if exists("mv_GaussInt") syn keyword mvPkg_GaussInt GIbasis GIfactor GIissqr GInorm GIquadres GIsmith syn keyword mvPkg_GaussInt GIchrem GIfactors GIlcm GInormal GIquo GIsqrfree syn keyword mvPkg_GaussInt GIdivisor GIgcd GImcmbine GIorder GIrem GIsqrt syn keyword mvPkg_GaussInt GIfacpoly GIgcdex GInearest GIphi GIroots GIunitnormal syn keyword mvPkg_GaussInt GIfacset GIhermite GInodiv GIprime GIsieve endif if exists("mv_LREtools") syn keyword mvPkg_LREtools REcontent REprimpart REtodelta delta hypergeomsols ratpolysols syn keyword mvPkg_LREtools REcreate REreduceorder REtoproc dispersion polysols shift syn keyword mvPkg_LREtools REplot REtoDE constcoeffsol endif if exists("mv_combinat") syn keyword mvPkg_combinat Chi composition graycode numbcomb permute randperm syn keyword mvPkg_combinat bell conjpart inttovec numbcomp powerset stirling1 syn keyword mvPkg_combinat binomial decodepart lastpart numbpart prevpart stirling2 syn keyword mvPkg_combinat cartprod encodepart multinomial numbperm randcomb subsets syn keyword mvPkg_combinat character fibonacci nextpart partition randpart vectoint syn keyword mvPkg_combinat choose firstpart endif if exists("mv_combstruct") syn keyword mvPkg_combstruct allstructs draw iterstructs options specification structures syn keyword mvPkg_combstruct count finished nextstruct endif if exists("mv_difforms") syn keyword mvPkg_difforms const defform formpart parity scalarpart wdegree syn keyword mvPkg_difforms d form mixpar scalar simpform wedge endif if exists("mv_finance") syn keyword mvPkg_finance amortization cashflows futurevalue growingperpetuity mv_finance presentvalue syn keyword mvPkg_finance annuity effectiverate growingannuity levelcoupon perpetuity yieldtomaturity syn keyword mvPkg_finance blackscholes endif if exists("mv_genfunc") syn keyword mvPkg_genfunc rgf_charseq rgf_expand rgf_hybrid rgf_pfrac rgf_sequence rgf_term syn keyword mvPkg_genfunc rgf_encode rgf_findrecur rgf_norm rgf_relate rgf_simp termscale endif if exists("mv_geometry") syn keyword mvPkg_geometry circle dsegment hyperbola parabola segment triangle syn keyword mvPkg_geometry conic ellipse line point square endif if exists("mv_grobner") syn keyword mvPkg_grobner finduni gbasis leadmon normalf solvable spoly syn keyword mvPkg_grobner finite gsolve endif if exists("mv_group") syn keyword mvPkg_group DerivedS areconjugate cosets grouporder issubgroup permrep syn keyword mvPkg_group LCS center cosrep inter mulperms pres syn keyword mvPkg_group NormalClosure centralizer derived invperm normalizer subgrel syn keyword mvPkg_group RandElement convert grelgroup isabelian orbit type syn keyword mvPkg_group Sylow core groupmember isnormal permgroup endif if exists("mv_inttrans") syn keyword mvPkg_inttrans addtable fouriercos hankel invfourier invlaplace mellin syn keyword mvPkg_inttrans fourier fouriersin hilbert invhilbert laplace endif if exists("mv_liesymm") syn keyword mvPkg_liesymm &^ TD depvars getform mixpar vfix syn keyword mvPkg_liesymm &mod annul determine hasclosure prolong wcollect syn keyword mvPkg_liesymm Eta autosimp dvalue hook reduce wdegree syn keyword mvPkg_liesymm Lie close extvars indepvars setup wedgeset syn keyword mvPkg_liesymm Lrank d getcoeff makeforms translate wsubs endif if exists("mv_linalg") syn keyword mvPkg_linalg GramSchmidt coldim equal indexfunc mulcol singval syn keyword mvPkg_linalg JordanBlock colspace exponential innerprod multiply smith syn keyword mvPkg_linalg LUdecomp colspan extend intbasis norm stack syn keyword mvPkg_linalg QRdecomp companion ffgausselim inverse normalize submatrix syn keyword mvPkg_linalg addcol cond fibonacci ismith orthog subvector syn keyword mvPkg_linalg addrow copyinto forwardsub issimilar permanent sumbasis syn keyword mvPkg_linalg adjoint crossprod frobenius iszero pivot swapcol syn keyword mvPkg_linalg angle curl gausselim jacobian potential swaprow syn keyword mvPkg_linalg augment definite gaussjord jordan randmatrix sylvester syn keyword mvPkg_linalg backsub delcols geneqns kernel randvector toeplitz syn keyword mvPkg_linalg band delrows genmatrix laplacian rank trace syn keyword mvPkg_linalg basis det grad leastsqrs references transpose syn keyword mvPkg_linalg bezout diag hadamard linsolve row vandermonde syn keyword mvPkg_linalg blockmatrix diverge hermite matadd rowdim vecpotent syn keyword mvPkg_linalg charmat dotprod hessian matrix rowspace vectdim syn keyword mvPkg_linalg charpoly eigenval hilbert minor rowspan vector syn keyword mvPkg_linalg cholesky eigenvect htranspose minpoly scalarmul wronskian syn keyword mvPkg_linalg col entermatrix ihermite endif if exists("mv_logic") syn keyword mvPkg_logic MOD2 bsimp distrib environ randbool tautology syn keyword mvPkg_logic bequal canon dual frominert satisfy toinert endif if exists("mv_networks") syn keyword mvPkg_networks acycpoly connect dinic graph mincut show syn keyword mvPkg_networks addedge connectivity djspantree graphical mindegree shrink syn keyword mvPkg_networks addvertex contract dodecahedron gsimp neighbors span syn keyword mvPkg_networks adjacency countcuts draw gunion new spanpoly syn keyword mvPkg_networks allpairs counttrees duplicate head octahedron spantree syn keyword mvPkg_networks ancestor cube edges icosahedron outdegree tail syn keyword mvPkg_networks arrivals cycle ends incidence path tetrahedron syn keyword mvPkg_networks bicomponents cyclebase eweight incident petersen tuttepoly syn keyword mvPkg_networks charpoly daughter flow indegree random vdegree syn keyword mvPkg_networks chrompoly degreeseq flowpoly induce rank vertices syn keyword mvPkg_networks complement delete fundcyc isplanar rankpoly void syn keyword mvPkg_networks complete departures getlabel maxdegree shortpathtree vweight syn keyword mvPkg_networks components diameter girth endif if exists("mv_numapprox") syn keyword mvPkg_numapprox chebdeg chebsort fnorm laurent minimax remez syn keyword mvPkg_numapprox chebmult chebyshev hornerform laurent pade taylor syn keyword mvPkg_numapprox chebpade confracform infnorm minimax endif if exists("mv_numtheory") syn keyword mvPkg_numtheory B cyclotomic invcfrac mcombine nthconver primroot syn keyword mvPkg_numtheory F divisors invphi mersenne nthdenom quadres syn keyword mvPkg_numtheory GIgcd euler isolve minkowski nthnumer rootsunity syn keyword mvPkg_numtheory J factorEQ isprime mipolys nthpow safeprime syn keyword mvPkg_numtheory L factorset issqrfree mlog order sigma syn keyword mvPkg_numtheory M fermat ithprime mobius pdexpand sq2factor syn keyword mvPkg_numtheory bernoulli ifactor jacobi mroot phi sum2sqr syn keyword mvPkg_numtheory bigomega ifactors kronecker msqrt pprimroot tau syn keyword mvPkg_numtheory cfrac imagunit lambda nearestp prevprime thue syn keyword mvPkg_numtheory cfracpol index legendre nextprime endif if exists("mv_orthopoly") syn keyword mvPkg_orthopoly G H L P T U endif if exists("mv_padic") syn keyword mvPkg_padic evalp function orderp ratvaluep rootp valuep syn keyword mvPkg_padic expansion lcoeffp ordp endif if exists("mv_plots") syn keyword mvPkg_plots animate coordplot3d gradplot3d listplot3d polarplot setoptions3d syn keyword mvPkg_plots animate3d cylinderplot implicitplot loglogplot polygonplot spacecurve syn keyword mvPkg_plots changecoords densityplot implicitplot3d logplot polygonplot3d sparsematrixplot syn keyword mvPkg_plots complexplot display inequal matrixplot polyhedraplot sphereplot syn keyword mvPkg_plots complexplot3d display3d listcontplot odeplot replot surfdata syn keyword mvPkg_plots conformal fieldplot listcontplot3d pareto rootlocus textplot syn keyword mvPkg_plots contourplot fieldplot3d listdensityplot pointplot semilogplot textplot3d syn keyword mvPkg_plots contourplot3d gradplot listplot pointplot3d setoptions tubeplot syn keyword mvPkg_plots coordplot endif if exists("mv_plottools") syn keyword mvPkg_plottools arc curve dodecahedron hyperbola pieslice semitorus syn keyword mvPkg_plottools arrow cutin ellipse icosahedron point sphere syn keyword mvPkg_plottools circle cutout ellipticArc line polygon tetrahedron syn keyword mvPkg_plottools cone cylinder hemisphere octahedron rectangle torus syn keyword mvPkg_plottools cuboid disk hexahedron endif if exists("mv_powseries") syn keyword mvPkg_powseries compose multiply powcreate powlog powsolve reversion syn keyword mvPkg_powseries evalpow negative powdiff powpoly powsqrt subtract syn keyword mvPkg_powseries inverse powadd powexp powseries quotient tpsform syn keyword mvPkg_powseries multconst powcos powint powsin endif if exists("mv_process") syn keyword mvPkg_process block fork pclose pipe popen wait syn keyword mvPkg_process exec kill endif if exists("mv_simplex") syn keyword mvPkg_simplex NONNEGATIVE cterm dual maximize pivoteqn setup syn keyword mvPkg_simplex basis define_zero equality minimize pivotvar standardize syn keyword mvPkg_simplex convexhull display feasible pivot ratio endif if exists("mv_stats") syn keyword mvPkg_stats anova describe fit random statevalf statplots endif if exists("mv_student") syn keyword mvPkg_student D Product distance isolate middlesum rightsum syn keyword mvPkg_student Diff Sum equate leftbox midpoint showtangent syn keyword mvPkg_student Doubleint Tripleint extrema leftsum minimize simpson syn keyword mvPkg_student Int changevar integrand makeproc minimize slope syn keyword mvPkg_student Limit combine intercept maximize powsubs trapezoid syn keyword mvPkg_student Lineint completesquare intparts middlebox rightbox value syn keyword mvPkg_student Point endif if exists("mv_sumtools") syn keyword mvPkg_sumtools Hypersum extended_gosper hyperrecursion hyperterm sumrecursion sumtohyper syn keyword mvPkg_sumtools Sumtohyper gosper hypersum simpcomb endif if exists("mv_tensor") syn keyword mvPkg_tensor Christoffel1 Riemann connexF display_allGR get_compts partial_diff syn keyword mvPkg_tensor Christoffel2 RiemannF contract dual get_rank permute_indices syn keyword mvPkg_tensor Einstein Weyl convertNP entermetric invars petrov syn keyword mvPkg_tensor Jacobian act cov_diff exterior_diff invert prod syn keyword mvPkg_tensor Killing_eqns antisymmetrize create exterior_prod lin_com raise syn keyword mvPkg_tensor Levi_Civita change_basis d1metric frame lower symmetrize syn keyword mvPkg_tensor Lie_diff commutator d2metric geodesic_eqns npcurve tensorsGR syn keyword mvPkg_tensor Ricci compare directional_diff get_char npspin transform syn keyword mvPkg_tensor Ricciscalar conj displayGR endif if exists("mv_totorder") syn keyword mvPkg_totorder forget init ordering tassume tis endif if !exists("skip_maplev_syntax_inits") hi def link mvBraceError mvError hi def link mvCurlyError mvError hi def link mvDebug mvTodo hi def link mvParenError mvError hi def link mvPkg_DEtools mvPkgFunc hi def link mvPkg_Galois mvPkgFunc hi def link mvPkg_GaussInt mvPkgFunc hi def link mvPkg_LREtools mvPkgFunc hi def link mvPkg_combinat mvPkgFunc hi def link mvPkg_combstruct mvPkgFunc hi def link mvPkg_difforms mvPkgFunc hi def link mvPkg_finance mvPkgFunc hi def link mvPkg_genfunc mvPkgFunc hi def link mvPkg_geometry mvPkgFunc hi def link mvPkg_grobner mvPkgFunc hi def link mvPkg_group mvPkgFunc hi def link mvPkg_inttrans mvPkgFunc hi def link mvPkg_liesymm mvPkgFunc hi def link mvPkg_linalg mvPkgFunc hi def link mvPkg_logic mvPkgFunc hi def link mvPkg_networks mvPkgFunc hi def link mvPkg_numapprox mvPkgFunc hi def link mvPkg_numtheory mvPkgFunc hi def link mvPkg_orthopoly mvPkgFunc hi def link mvPkg_padic mvPkgFunc hi def link mvPkg_plots mvPkgFunc hi def link mvPkg_plottools mvPkgFunc hi def link mvPkg_powseries mvPkgFunc hi def link mvPkg_process mvPkgFunc hi def link mvPkg_simplex mvPkgFunc hi def link mvPkg_stats mvPkgFunc hi def link mvPkg_student mvPkgFunc hi def link mvPkg_sumtools mvPkgFunc hi def link mvPkg_tensor mvPkgFunc hi def link mvPkg_totorder mvPkgFunc hi def link mvRange mvOper hi def link mvSemiError mvError hi def link mvDelim Delimiter hi def link mvAssign Delimiter hi def link mvBool Boolean hi def link mvComma Delimiter hi def link mvComment Comment hi def link mvCond Conditional hi def link mvConstant Number hi def link mvDelayEval Label hi def link mvDcolon Delimiter hi def link mvError Error hi def link mvLibrary Statement hi def link mvNumber Number hi def link mvOper Operator hi def link mvAssign Delimiter hi def link mvPackage Type hi def link mvPkgFunc Function hi def link mvPktOption Special hi def link mvRepeat Repeat hi def link mvSpecial Special hi def link mvStatement Statement hi def link mvName String hi def link mvString String hi def link mvTodo Todo endif let b:current_syntax = "maple" if exists("b:current_syntax") finish endif if !exists('main_syntax') let main_syntax = 'markdown' endif runtime! syntax/html.vim unlet! b:current_syntax if !exists('g:markdown_fenced_languages') let g:markdown_fenced_languages = [] endif for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")') if s:type =~ '\.' let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') endif exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' unlet! b:current_syntax endfor unlet! s:type syn sync minlines=10 syn case ignore syn match markdownValid '[<>]\c[a-z/$!]\@!' syn match markdownValid '&\%(#\=\w*;\)\@!' syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink syn match markdownHeadingRule "^[=-]\+$" contained syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock syn region markdownCodeBlock start=" \|\t" end="$" contained syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained syn match markdownOrderedListMarker "\%(\t\| \{0,4}\)\<\d\+\.\%(\s\+\S\)\@=" contained syn match markdownRule "\* *\* *\*[ *]*$" contained syn match markdownRule "- *- *-[ -]*$" contained syn match markdownLineBreak " \{2,\}$" syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline let s:concealends = has('conceal') ? ' concealends' : '' exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart' . s:concealends exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart' . s:concealends syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend syn match markdownFootnote "\[^[^\]]\+\]" syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:" if main_syntax ==# 'markdown' for s:type in g:markdown_fenced_languages exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') endfor unlet! s:type endif syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]" syn match markdownError "\w\@<=_\w\@=" hi def link markdownH1 htmlH1 hi def link markdownH2 htmlH2 hi def link markdownH3 htmlH3 hi def link markdownH4 htmlH4 hi def link markdownH5 htmlH5 hi def link markdownH6 htmlH6 hi def link markdownHeadingRule markdownRule hi def link markdownHeadingDelimiter Delimiter hi def link markdownOrderedListMarker markdownListMarker hi def link markdownListMarker htmlTagName hi def link markdownBlockquote Comment hi def link markdownRule PreProc hi def link markdownFootnote Typedef hi def link markdownFootnoteDefinition Typedef hi def link markdownLinkText htmlLink hi def link markdownIdDeclaration Typedef hi def link markdownId Type hi def link markdownAutomaticLink markdownUrl hi def link markdownUrl Float hi def link markdownUrlTitle String hi def link markdownIdDelimiter markdownLinkDelimiter hi def link markdownUrlDelimiter htmlTag hi def link markdownUrlTitleDelimiter Delimiter hi def link markdownItalic htmlItalic hi def link markdownItalicDelimiter markdownItalic hi def link markdownBold htmlBold hi def link markdownBoldDelimiter markdownBold hi def link markdownBoldItalic htmlBoldItalic hi def link markdownBoldItalicDelimiter markdownBoldItalic hi def link markdownCodeDelimiter Delimiter hi def link markdownEscape Special hi def link markdownError Error let b:current_syntax = "markdown" if main_syntax ==# 'markdown' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match masmIdentifier "[@a-z_$?][@a-z0-9_$?]*" syn match masmLabel "^\s*[@a-z_$?][@a-z0-9_$?]*:"he=e-1 syn match masmDecimal "[-+]\?\d\+[dt]\?" syn match masmBinary "[-+]\?[0-1]\+[by]" "put this before hex or 0bfh dies! syn match masmOctal "[-+]\?[0-7]\+[oq]" syn match masmHexadecimal "[-+]\?[0-9]\x*h" syn match masmFloatRaw "[-+]\?[0-9]\x*r" syn match masmFloat "[-+]\?\d\+\.\(\d*\(E[-+]\?\d\+\)\?\)\?" syn match masmComment ";.*" contains=@Spell syn region masmComment start=+COMMENT\s*\z(\S\)+ end=+\z1.*+ contains=@Spell syn region masmString start=+'+ end=+'+ oneline contains=@Spell syn region masmString start=+"+ end=+"+ oneline contains=@Spell syn region masmTitleArea start=+\" syn match masmOperator "CARRY?" syn match masmOperator "OVERFLOW?" syn match masmOperator "PARITY?" syn match masmOperator "SIGN?" syn match masmOperator "ZERO?" syn keyword masmDirective ALIAS ASSUME CATSTR COMM DB DD DF DOSSEG DQ DT syn keyword masmDirective DW ECHO ELSE ELSEIF ELSEIF1 ELSEIF2 ELSEIFB syn keyword masmDirective ELSEIFDEF ELSEIFDIF ELSEIFDIFI ELSEIFE syn keyword masmDirective ELSEIFIDN ELSEIFIDNI ELSEIFNB ELSEIFNDEF END syn keyword masmDirective ENDIF ENDM ENDP ENDS EQU EVEN EXITM EXTERN syn keyword masmDirective EXTERNDEF EXTRN FOR FORC GOTO GROUP IF IF1 IF2 syn keyword masmDirective IFB IFDEF IFDIF IFDIFI IFE IFIDN IFIDNI IFNB syn keyword masmDirective IFNDEF INCLUDE INCLUDELIB INSTR INVOKE IRP syn keyword masmDirective IRPC LABEL LOCAL MACRO NAME OPTION ORG PAGE syn keyword masmDirective POPCONTEXT PROC PROTO PUBLIC PURGE PUSHCONTEXT syn keyword masmDirective RECORD REPEAT REPT SEGMENT SIZESTR STRUC syn keyword masmDirective STRUCT SUBSTR SUBTITLE SUBTTL TEXTEQU TITLE syn keyword masmDirective TYPEDEF UNION WHILE syn match masmDirective "\.8086\>" syn match masmDirective "\.8087\>" syn match masmDirective "\.NO87\>" syn match masmDirective "\.186\>" syn match masmDirective "\.286\>" syn match masmDirective "\.286C\>" syn match masmDirective "\.286P\>" syn match masmDirective "\.287\>" syn match masmDirective "\.386\>" syn match masmDirective "\.386C\>" syn match masmDirective "\.386P\>" syn match masmDirective "\.387\>" syn match masmDirective "\.486\>" syn match masmDirective "\.486P\>" syn match masmDirective "\.586\>" syn match masmDirective "\.586P\>" syn match masmDirective "\.686\>" syn match masmDirective "\.686P\>" syn match masmDirective "\.K3D\>" syn match masmDirective "\.MMX\>" syn match masmDirective "\.XMM\>" syn match masmDirective "\.ALPHA\>" syn match masmDirective "\.DOSSEG\>" syn match masmDirective "\.SEQ\>" syn match masmDirective "\.CODE\>" syn match masmDirective "\.CONST\>" syn match masmDirective "\.DATA\>" syn match masmDirective "\.DATA?" syn match masmDirective "\.EXIT\>" syn match masmDirective "\.FARDATA\>" syn match masmDirective "\.FARDATA?" syn match masmDirective "\.MODEL\>" syn match masmDirective "\.STACK\>" syn match masmDirective "\.STARTUP\>" syn match masmDirective "\.IF\>" syn match masmDirective "\.ELSE\>" syn match masmDirective "\.ELSEIF\>" syn match masmDirective "\.ENDIF\>" syn match masmDirective "\.REPEAT\>" syn match masmDirective "\.UNTIL\>" syn match masmDirective "\.UNTILCXZ\>" syn match masmDirective "\.WHILE\>" syn match masmDirective "\.ENDW\>" syn match masmDirective "\.BREAK\>" syn match masmDirective "\.CONTINUE\>" syn match masmDirective "\.ERR\>" syn match masmDirective "\.ERR1\>" syn match masmDirective "\.ERR2\>" syn match masmDirective "\.ERRB\>" syn match masmDirective "\.ERRDEF\>" syn match masmDirective "\.ERRDIF\>" syn match masmDirective "\.ERRDIFI\>" syn match masmDirective "\.ERRE\>" syn match masmDirective "\.ERRIDN\>" syn match masmDirective "\.ERRIDNI\>" syn match masmDirective "\.ERRNB\>" syn match masmDirective "\.ERRNDEF\>" syn match masmDirective "\.ERRNZ\>" syn match masmDirective "\.LALL\>" syn match masmDirective "\.SALL\>" syn match masmDirective "\.XALL\>" syn match masmDirective "\.LFCOND\>" syn match masmDirective "\.SFCOND\>" syn match masmDirective "\.TFCOND\>" syn match masmDirective "\.CREF\>" syn match masmDirective "\.NOCREF\>" syn match masmDirective "\.XCREF\>" syn match masmDirective "\.LIST\>" syn match masmDirective "\.NOLIST\>" syn match masmDirective "\.XLIST\>" syn match masmDirective "\.LISTALL\>" syn match masmDirective "\.LISTIF\>" syn match masmDirective "\.NOLISTIF\>" syn match masmDirective "\.LISTMACRO\>" syn match masmDirective "\.NOLISTMACRO\>" syn match masmDirective "\.LISTMACROALL\>" syn match masmDirective "\.FPO\>" syn match masmDirective "\.RADIX\>" syn match masmDirective "\.SAFESEH\>" syn match masmDirective "%OUT\>" syn match masmDirective "ALIGN\>" syn match masmOption "ALIGN([0-9]\+)" syn keyword masmRegister AX BX CX DX SI DI BP SP syn keyword masmRegister CS DS SS ES FS GS syn keyword masmRegister AH BH CH DH AL BL CL DL syn keyword masmRegister EAX EBX ECX EDX ESI EDI EBP ESP syn keyword masmRegister CR0 CR2 CR3 CR4 syn keyword masmRegister DR0 DR1 DR2 DR3 DR6 DR7 syn keyword masmRegister TR3 TR4 TR5 TR6 TR7 syn match masmRegister "ST([0-7])" syn keyword masmRegister RAX RBX RCX RDX RSI RDI RBP RSP syn keyword masmRegister R8 R9 R10 R11 R12 R13 R14 R15 syn keyword masmRegister R8D R9D R10D R11D R12D R13D R14D R15D syn keyword masmRegister R8W R9W R10W R11W R12W R13W R14W R15W syn keyword masmRegister R8B R9B R10B R11B R12B R13B R14B R15B syn match masmRegister "\(X\|Y\)MM[0-9]\>" syn match masmRegister "\(X\|Y\)MM1[0-5]\>" syn keyword masmOpcode LOCK REP REPE REPNE REPNZ REPZ syn keyword masmOpcode AAA AAD AAM AAS ADC ADD AND CALL CBW CLC CLD syn keyword masmOpcode CLI CMC CMP CMPS CMPSB CMPSW CWD DAA DAS DEC syn keyword masmOpcode DIV ESC HLT IDIV IMUL IN INC INT INTO IRET syn keyword masmOpcode JCXZ JMP LAHF LDS LEA LES LODS LODSB LODSW syn keyword masmOpcode LOOP LOOPE LOOPEW LOOPNE LOOPNEW LOOPNZ syn keyword masmOpcode LOOPNZW LOOPW LOOPZ LOOPZW MOV MOVS MOVSB syn keyword masmOpcode MOVSW MUL NEG NOP NOT OR OUT POP POPF PUSH syn keyword masmOpcode PUSHF RCL RCR RET RETF RETN ROL ROR SAHF SAL syn keyword masmOpcode SAR SBB SCAS SCASB SCASW SHL SHR STC STD STI syn keyword masmOpcode STOS STOSB STOSW SUB TEST WAIT XCHG XLAT XLATB syn keyword masmOpcode XOR syn match masmOpcode "J\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" syn keyword masmOpcode BOUND ENTER INS INSB INSW LEAVE OUTS OUTSB syn keyword masmOpcode OUTSW POPA PUSHA PUSHW syn keyword masmOpcode ARPL LAR LSL SGDT SIDT SLDT SMSW STR VERR VERW syn keyword masmOpcode CLTS LGDT LIDT LLDT LMSW LTR syn keyword masmOpcode BSF BSR BT BTC BTR BTS CDQ CMPSD CWDE INSD syn keyword masmOpcode IRETD IRETDF IRETF JECXZ LFS LGS LODSD LOOPD syn keyword masmOpcode LOOPED LOOPNED LOOPNZD LOOPZD LSS MOVSD MOVSX syn keyword masmOpcode MOVZX OUTSD POPAD POPFD PUSHAD PUSHD PUSHFD syn keyword masmOpcode SCASD SHLD SHRD STOSD syn match masmOpcode "SET\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" syn keyword masmOpcode BSWAP CMPXCHG INVD INVLPG WBINVD XADD syn keyword masmOpFloat F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX syn keyword masmOpFloat FNCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI syn keyword masmOpFloat FNDISI FDIV FDIVP FDIVR FDIVRP FENI FNENI syn keyword masmOpFloat FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD syn keyword masmOpFloat FIMUL FINCSTP FINIT FNINIT FIST FISTP FISUB syn keyword masmOpFloat FISUBR FLD FLDCW FLDENV FLDLG2 FLDLN2 FLDL2E syn keyword masmOpFloat FLDL2T FLDPI FLDZ FLD1 FMUL FMULP FNOP FPATAN syn keyword masmOpFloat FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FNSAVE syn keyword masmOpFloat FSCALE FSETPM FSIN FSINCOS FSQRT FST FSTCW syn keyword masmOpFloat FNSTCW FSTENV FNSTENV FSTP FSTSW FNSTSW FSUB syn keyword masmOpFloat FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP syn keyword masmOpFloat FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 syn keyword masmOpFloat FCMOVE FCMOVNE FCMOVB FCMOVBE FCMOVNB FCMOVNBE syn keyword masmOpFloat FCMOVU FCMOVNU FCOMI FUCOMI FCOMIP FUCOMIP syn keyword masmOpFloat FXSAVE FXRSTOR syn keyword masmOpcode MOVD MOVQ PACKSSWB PACKSSDW PACKUSWB syn keyword masmOpcode PUNPCKHBW PUNPCKHWD PUNPCKHDQ syn keyword masmOpcode PUNPCKLBW PUNPCKLWD PUNPCKLDQ syn keyword masmOpcode PADDB PADDW PADDD PADDSB PADDSW PADDUSB PADDUSW syn keyword masmOpcode PSUBB PSUBW PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW syn keyword masmOpcode PMULHW PMULLW PMADDWD syn keyword masmOpcode PCMPEQB PCMPEQW PCMPEQD PCMPGTB PCMPGTW PCMPGTD syn keyword masmOpcode PAND PANDN POR PXOR syn keyword masmOpcode PSLLW PSLLD PSLLQ PSRLW PSRLD PSRLQ PSRAW PSRAD syn keyword masmOpcode EMMS syn keyword masmOpcode MOVAPS MOVUPS MOVHPS MOVHLPS MOVLPS MOVLHPS syn keyword masmOpcode MOVMSKPS MOVSS syn keyword masmOpcode ADDPS ADDSS SUBPS SUBSS MULPS MULSS DIVPS DIVSS syn keyword masmOpcode RCPPS RCPSS SQRTPS SQRTSS RSQRTPS RSQRTSS syn keyword masmOpcode MAXPS MAXSS MINPS MINSS syn keyword masmOpcode CMPPS CMPSS COMISS UCOMISS syn keyword masmOpcode ANDPS ANDNPS ORPS XORPS syn keyword masmOpcode SHUFPS UNPCKHPS UNPCKLPS syn keyword masmOpcode CVTPI2PS CVTSI2SS CVTPS2PI CVTTPS2PI syn keyword masmOpcode CVTSS2SI CVTTSS2SI syn keyword masmOpcode LDMXCSR STMXCSR syn keyword masmOpcode PAVGB PAVGW PEXTRW PINSRW PMAXUB PMAXSW syn keyword masmOpcode PMINUB PMINSW PMOVMSKB PMULHUW PSADBW PSHUFW syn keyword masmOpcode MASKMOVQ MOVNTQ MOVNTPS SFENCE syn keyword masmOpcode PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA syn keyword masmOpcode MOVAPD MOVUPD MOVHPD MOVLPD MOVMSKPD MOVSD syn keyword masmOpcode ADDPD ADDSD SUBPD SUBSD MULPD MULSD DIVPD DIVSD syn keyword masmOpcode SQRTPD SQRTSD MAXPD MAXSD MINPD MINSD syn keyword masmOpcode ANDPD ANDNPD ORPD XORPD syn keyword masmOpcode CMPPD CMPSD COMISD UCOMISD syn keyword masmOpcode SHUFPD UNPCKHPD UNPCKLPD syn keyword masmOpcode CVTPD2PI CVTTPD2PI CVTPI2PD CVTPD2DQ syn keyword masmOpcode CVTTPD2DQ CVTDQ2PD CVTPS2PD CVTPD2PS syn keyword masmOpcode CVTSS2SD CVTSD2SS CVTSD2SI CVTTSD2SI CVTSI2SD syn keyword masmOpcode CVTDQ2PS CVTPS2DQ CVTTPS2DQ syn keyword masmOpcode MOVDQA MOVDQU MOVQ2DQ MOVDQ2Q PMULUDQ syn keyword masmOpcode PADDQ PSUBQ PSHUFLW PSHUFHW PSHUFD syn keyword masmOpcode PSLLDQ PSRLDQ PUNPCKHQDQ PUNPCKLQDQ syn keyword masmOpcode CLFLUSH LFENCE MFENCE PAUSE MASKMOVDQU syn keyword masmOpcode MOVNTPD MOVNTDQ MOVNTI syn keyword masmOpcode FISTTP LDDQU ADDSUBPS ADDSUBPD syn keyword masmOpcode HADDPS HSUBPS HADDPD HSUBPD syn keyword masmOpcode MOVSHDUP MOVSLDUP MOVDDUP MONITOR MWAIT syn keyword masmOpcode PSIGNB PSIGNW PSIGND PABSB PABSW PABSD syn keyword masmOpcode PALIGNR PSHUFB PMULHRSW PMADDUBSW syn keyword masmOpcode PHSUBW PHSUBD PHSUBSW PHADDW PHADDD PHADDSW syn keyword masmOpcode MPSADBW PHMINPOSUW PMULDQ PMULLD DPPS DPPD syn keyword masmOpcode BLENDPS BLENDPD BLENDVPS BLENDVPD syn keyword masmOpcode PBLENDVB PBLENDW syn keyword masmOpcode PMINSB PMAXSB PMINSD PMAXSD syn keyword masmOpcode PMINUW PMAXUW PMINUD PMAXUD syn keyword masmOpcode ROUNDPS ROUNDSS ROUNDPD ROUNDSD syn keyword masmOpcode INSERTPS PINSRB PINSRD PINSRQ syn keyword masmOpcode EXTRACTPS PEXTRB PEXTRD PEXTRQ syn keyword masmOpcode PMOVSXBW PMOVZXBW PMOVSXBD PMOVZXBD syn keyword masmOpcode PMOVSXBQ PMOVZXBQ PMOVSXWD PMOVZXWD syn keyword masmOpcode PMOVSXWQ PMOVZXWQ PMOVSXDQ PMOVZXDQ syn keyword masmOpcode PTEST PCMPEQQ PACKUSDW MOVNTDQA syn keyword masmOpcode PCMPESTRI PCMPESTRM PCMPISTRI PCMPISTRM PCMPGTQ syn keyword masmOpcode CRC32 POPCNT LZCNT syn keyword masmOpcode AESENC AESENCLAST AESDEC AESDECLAST syn keyword masmOpcode AESKEYGENASSIST AESIMC PCLMULQDQ syn keyword masmOpcode VBROADCASTSS VBROADCASTSD VBROADCASTF128 syn keyword masmOpcode VINSERTF128 VEXTRACTF128 VMASKMOVPS VMASKMOVPD syn keyword masmOpcode VPERMILPS VPERMILPD VPERM2F128 syn keyword masmOpcode VZEROALL VZEROUPPER syn keyword masmOpcode CMPXCHG8B CPUID UD2 syn keyword masmOpcode RSM RDMSR WRMSR RDPMC RDTSC SYSENTER SYSEXIT syn match masmOpcode "CMOV\(P[EO]\|\(N\?\([ABGL]E\?\|[CEOPSZ]\)\)\)\>" hi def link masmLabel PreProc hi def link masmComment Comment hi def link masmDirective Statement hi def link masmType Type hi def link masmOperator Type hi def link masmOption Special hi def link masmRegister Special hi def link masmString String hi def link masmText String hi def link masmTitle Title hi def link masmOpcode Statement hi def link masmOpFloat Statement hi def link masmHexadecimal Number hi def link masmDecimal Number hi def link masmOctal Number hi def link masmBinary Number hi def link masmFloatRaw Number hi def link masmFloat Number hi def link masmIdentifier Identifier syntax sync minlines=50 let b:current_syntax = "masm" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'mason' endif runtime! syntax/html.vim unlet b:current_syntax syn cluster htmlPreproc add=@masonTop syn include @perlTop syntax/perl.vim unlet b:current_syntax syn include @podTop syntax/pod.vim syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop syn cluster perlTop remove=perlBraces syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop syn region masonPerlComment start="#" end="\%(%>\)\@=\|$" contained contains=perlTodo,@Spell syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop,masonPerlComment syn region masonPerl matchgroup=Delimiter start="<%perl>" end="" contains=masonPod,@perlTop syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent syn region masonCompContent matchgroup=Delimiter start="" end="" contained contains=@masonTop syn region masonArgs matchgroup=Delimiter start="<%args>" end="" contains=masonPod,@perlTop syn region masonInit matchgroup=Delimiter start="<%init>" end="" contains=masonPod,@perlTop syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="" contains=masonPod,@perlTop syn region masonOnce matchgroup=Delimiter start="<%once>" end="" contains=masonPod,@perlTop syn region masonClass matchgroup=Delimiter start="<%class>" end="" contains=masonPod,@perlTop syn region masonShared matchgroup=Delimiter start="<%shared>" end="" contains=masonPod,@perlTop syn region masonDef matchgroup=Delimiter start="<%def\s*[-._/[:alnum:]]\+\s*>" end="" contains=@htmlTop syn region masonMethod matchgroup=Delimiter start="<%method\s*[-._/[:alnum:]]\+\s*>" end="" contains=@htmlTop syn region masonFlags matchgroup=Delimiter start="<%flags>" end="" contains=masonPod,@perlTop syn region masonAttr matchgroup=Delimiter start="<%attr>" end="" contains=masonPod,@perlTop syn region masonFilter matchgroup=Delimiter start="<%filter>" end="" contains=masonPod,@perlTop syn region masonDoc matchgroup=Delimiter start="<%doc>" end="" syn region masonText matchgroup=Delimiter start="<%text>" end="" syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText hi def link masonDoc Comment hi def link masonPod Comment hi def link masonPerlComment perlComment let b:current_syntax = "mason" if main_syntax == 'mason' unlet main_syntax endif if exists("b:current_syntax") finish endif syn case match syn keyword masterKeyword FILENAME SUFFIX SEGNAME SEGTYPE PARENT FIELDNAME syn keyword masterKeyword FIELD ALIAS USAGE INDEX MISSING ON syn keyword masterKeyword FORMAT CRFILE CRKEY syn keyword masterDefine DEFINE DECODE EDIT syn region masterString start=+"+ end=+"+ syn region masterString start=+'+ end=+'+ syn match masterComment "\$.*" hi def link masterKeyword Keyword hi def link masterComment Comment hi def link masterString String let b:current_syntax = "master" if exists("b:current_syntax") finish endif syn keyword matlabStatement return syn keyword matlabLabel case switch syn keyword matlabConditional else elseif end if otherwise syn keyword matlabRepeat do for while syn keyword matlabExceptions try catch syn keyword matlabOO classdef properties events methods syn keyword matlabTodo contained TODO syn keyword matlabScope global persistent syn match matlabArithmeticOperator "[-+]" syn match matlabArithmeticOperator "\.\=[*/\\^]" syn match matlabRelationalOperator "[=~]=" syn match matlabRelationalOperator "[<>]=\=" syn match matlabLogicalOperator "[&|~]" syn match matlabLineContinuation "\.\{3}" syn region matlabString start=+'+ end=+'+ oneline skip=+''+ syn region matlabStringArray start=+"+ end=+"+ oneline skip=+""+ syn match matlabTab "\t" syn match matlabNumber "\<\d\+[ij]\=\>" syn match matlabFloat "\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>" syn match matlabFloat "\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>" syn match matlabDelimiter "[][]" syn match matlabTransposeOperator "[])a-zA-Z0-9.]'"lc=1 syn match matlabSemicolon ";" syn match matlabComment "%.*$" contains=matlabTodo,matlabTab syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab syn match matlabCellComment "^%%.*$" syn keyword matlabOperator break zeros default margin round ones rand syn keyword matlabOperator ceil floor size clear zeros eye mean std cov syn keyword matlabFunction error eval function syn keyword matlabImplicit abs acos atan asin cos cosh exp log prod sum syn keyword matlabImplicit log10 max min sign sin sinh sqrt tan reshape syn match matlabError "-\=\<\d\+\.\d\+\.[^*/\\^]" syn match matlabError "-\=\<\d\+\.\d\+[eEdD][-+]\=\d\+\.\([^*/\\^]\)" hi def link matlabTransposeOperator matlabOperator hi def link matlabOperator Operator hi def link matlabLineContinuation Special hi def link matlabLabel Label hi def link matlabConditional Conditional hi def link matlabExceptions Conditional hi def link matlabRepeat Repeat hi def link matlabTodo Todo hi def link matlabString String hi def link matlabStringArray String hi def link matlabDelimiter Identifier hi def link matlabTransposeOther Identifier hi def link matlabNumber Number hi def link matlabFloat Float hi def link matlabFunction Function hi def link matlabError Error hi def link matlabImplicit matlabStatement hi def link matlabStatement Statement hi def link matlabOO Statement hi def link matlabSemicolon SpecialChar hi def link matlabComment Comment hi def link matlabMultilineComment Comment hi def link matlabCellComment Todo hi def link matlabScope Type hi def link matlabArithmeticOperator matlabOperator hi def link matlabRelationalOperator matlabOperator hi def link matlabLogicalOperator matlabOperator let b:current_syntax = "matlab" if exists("b:current_syntax") finish endif syn sync lines=1000 syn region maximaZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaCurlyError syn region maximaZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaParenError syn region maximaZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,maximaError,maximaCurlyError,maximaParenError syn match maximaError "[)\]}]" syn match maximaBraceError "[)}]" contained syn match maximaCurlyError "[)\]]" contained syn match maximaParenError "[\]}]" contained syn match maximaComma "[\[\](),;]" syn match maximaComma "\.\.\.$" syn keyword maximaConditional if then else elseif and or not syn keyword maximaRepeat do for thru syn keyword maximaFunc abasep abs absboxchar absint acos acosh acot acoth acsc syn keyword maximaFunc acsch activate activecontexts addcol additive addrow adim syn keyword maximaFunc adjoint af aform airy algebraic algepsilon algexact algsys syn keyword maximaFunc alg_type alias aliases allbut all_dotsimp_denoms allroots allsym syn keyword maximaFunc alphabetic antid antidiff antisymmetric append appendfile syn keyword maximaFunc apply apply1 apply2 applyb1 apropos args array arrayapply syn keyword maximaFunc arrayinfo arraymake arrays asec asech asin asinh askexp syn keyword maximaFunc askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume syn keyword maximaFunc assume_pos assume_pos_pred assumescalar asymbol asympa at atan syn keyword maximaFunc atan2 atanh atensimp atom atomgrad atrig1 atvalue augcoefmatrix syn keyword maximaFunc av backsubst backtrace bashindices batch batchload bc2 bdvac syn keyword maximaFunc berlefact bern bernpoly bessel besselexpand bessel_i bessel_j syn keyword maximaFunc bessel_k bessel_y beta bezout bffac bfhzeta bfloat bfloatp syn keyword maximaFunc bfpsi bfpsi0 bftorat bftrunc bfzeta bimetric binomial block syn keyword maximaFunc bothcoef box boxchar break breakup bug_report build_info buildq syn keyword maximaFunc burn cabs canform canten carg cartan catch cauchysum cbffac syn keyword maximaFunc cdisplay cf cfdisrep cfexpand cflength cframe_flag cgeodesic syn keyword maximaFunc changename changevar charpoly checkdiv check_overlaps christof syn keyword maximaFunc clear_rules closefile closeps cmetric cnonmet_flag coeff syn keyword maximaFunc coefmatrix cograd col collapse columnvector combine commutative syn keyword maximaFunc comp2pui compfile compile compile_file components concan concat syn keyword maximaFunc conj conjugate conmetderiv cons constant constantp cont2part syn keyword maximaFunc content context contexts contortion contract contragrad coord syn keyword maximaFunc copylist copymatrix cos cosh cosnpiflag cot coth covdiff syn keyword maximaFunc covect create_list csc csch csetup ctaylor ctaypov ctaypt syn keyword maximaFunc ctayswitch ctayvar ct_coords ct_coordsys ctorsion_flag ctransform syn keyword maximaFunc ctrgsimp current_let_rule_package dblint deactivate debugmode syn keyword maximaFunc declare declare_translated declare_weight decsym syn keyword maximaFunc default_let_rule_package defcon define define_variable defint syn keyword maximaFunc defmatch defrule deftaylor del delete deleten delta demo syn keyword maximaFunc demoivre denom dependencies depends derivabbrev derivdegree syn keyword maximaFunc derivlist derivsubst describe desolve determinant detout syn keyword maximaFunc diagmatrix diagmatrixp diagmetric diff dim dimension direct syn keyword maximaFunc disolate disp dispcon dispflag dispform dispfun display syn keyword maximaFunc display2d display_format_internal disprule dispterms distrib syn keyword maximaFunc divide divsum doallmxops domain domxexpt domxmxops domxnctimes syn keyword maximaFunc dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp syn keyword maximaFunc dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules syn keyword maximaFunc dotsimp dpart dscalar %e echelon %edispflag eigenvalues syn keyword maximaFunc eigenvectors eighth einstein eivals eivects ele2comp syn keyword maximaFunc ele2polynome ele2pui elem eliminate elliptic_e elliptic_ec syn keyword maximaFunc elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix %emode syn keyword maximaFunc endcons entermatrix entertensor entier %enumer equal equalp erf syn keyword maximaFunc erfflag errcatch error errormsg error_size error_syms syn keyword maximaFunc %e_to_numlog euler ev eval evenp every evflag evfun evundiff syn keyword maximaFunc example exp expand expandwrt expandwrt_denom expandwrt_factored syn keyword maximaFunc explose expon exponentialize expop express expt exptdispflag syn keyword maximaFunc exptisolate exptsubst extdiff extract_linear_equations ezgcd syn keyword maximaFunc facexpand factcomb factlim factor factorflag factorial factorout syn keyword maximaFunc factorsum facts false fast_central_elements fast_linsolve syn keyword maximaFunc fasttimes fb feature featurep features fft fib fibtophi fifth syn keyword maximaFunc filename_merge file_search file_search_demo file_search_lisp syn keyword maximaFunc file_search_maxima file_type fillarray findde first fix flatten syn keyword maximaFunc flipflag float float2bf floatnump flush flush1deriv flushd syn keyword maximaFunc flushnd forget fortindent fortran fortspaces fourcos fourexpand syn keyword maximaFunc fourier fourint fourintcos fourintsin foursimp foursin fourth syn keyword maximaFunc fpprec fpprintprec frame_bracket freeof fullmap fullmapl syn keyword maximaFunc fullratsimp fullratsubst funcsolve functions fundef funmake funp syn keyword maximaFunc gamma %gamma gammalim gauss gcd gcdex gcfactor gdet genfact syn keyword maximaFunc genindex genmatrix gensumnum get getchar gfactor gfactorsum syn keyword maximaFunc globalsolve go gradef gradefs gramschmidt grind grobner_basis syn keyword maximaFunc gschmit hach halfangles hermite hipow hodge horner i0 i1 syn keyword maximaFunc *read-base* ic1 ic2 icc1 icc2 ic_convert ichr1 ichr2 icounter syn keyword maximaFunc icurvature ident idiff idim idummy idummyx ieqn ieqnprint ifb syn keyword maximaFunc ifc1 ifc2 ifg ifgi ifr iframe_bracket_form iframes ifri ift syn keyword maximaFunc igeodesic_coords igeowedge_flag ikt1 ikt2 ilt imagpart imetric syn keyword maximaFunc inchar indexed_tensor indices inf %inf infeval infinity infix syn keyword maximaFunc inflag infolists init_atensor init_ctensor inm inmc1 inmc2 syn keyword maximaFunc innerproduct in_netmath inpart inprod inrt integerp integrate syn keyword maximaFunc integrate_use_rootsof integration_constant_counter interpolate syn keyword maximaFunc intfaclim intopois intosum intpolabs intpolerror intpolrel syn keyword maximaFunc invariant1 invariant2 inverse_jacobi_cd inverse_jacobi_cn syn keyword maximaFunc inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn syn keyword maximaFunc inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd syn keyword maximaFunc inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd syn keyword maximaFunc inverse_jacobi_sn invert is ishow isolate isolate_wrt_times syn keyword maximaFunc isqrt itr j0 j1 jacobi jacobi_cd jacobi_cn jacobi_cs jacobi_dc syn keyword maximaFunc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_sc syn keyword maximaFunc jacobi_sd jacobi_sn jn kdels kdelta keepfloat kill killcontext syn keyword maximaFunc kinvariant kostka kt labels lambda laplace lassociative last syn keyword maximaFunc lc2kdt lc_l lcm lc_u ldefint ldisp ldisplay leinstein length syn keyword maximaFunc let letrat let_rule_packages letrules letsimp levi_civita lfg syn keyword maximaFunc lfreeof lg lgtreillis lhospitallim lhs liediff limit limsubst syn keyword maximaFunc linear linechar linel linenum linsolve linsolve_params syn keyword maximaFunc linsolvewarn listarith listarray listconstvars listdummyvars syn keyword maximaFunc list_nc_monomials listoftens listofvars listp lmxchar load syn keyword maximaFunc loadfile loadprint local log logabs logarc logconcoeffp syn keyword maximaFunc logcontract logexpand lognegint lognumer logsimp lopow syn keyword maximaFunc lorentz_gauge lpart lratsubst lriem lriemann lsum ltreillis syn keyword maximaFunc m1pbranch macroexpansion mainvar make_array makebox makefact syn keyword maximaFunc makegamma makelist make_random_state make_transform map mapatom syn keyword maximaFunc maperror maplist matchdeclare matchfix matrix matrix_element_add syn keyword maximaFunc matrix_element_mult matrix_element_transpose matrixmap matrixp syn keyword maximaFunc mattrace max maxapplydepth maxapplyheight maxnegex maxposex syn keyword maximaFunc maxtayorder member min %minf minfactorial minor mod syn keyword maximaFunc mode_check_errorp mode_checkp mode_check_warnp mode_declare syn keyword maximaFunc mode_identity modulus mon2schur mono monomial_dimensions syn keyword maximaFunc multi_elem multinomial multi_orbit multiplicative multiplicities syn keyword maximaFunc multi_pui multsym multthru myoptions nc_degree ncexpt ncharpoly syn keyword maximaFunc negdistrib negsumdispflag newcontext newdet newton niceindices syn keyword maximaFunc niceindicespref ninth nm nmc noeval nolabels nonmetricity syn keyword maximaFunc nonscalar nonscalarp noun noundisp nounify nouns np npi syn keyword maximaFunc nptetrad nroots nterms ntermst nthroot ntrig num numberp numer syn keyword maximaFunc numerval numfactor nusum obase oddp ode2 op openplot_curves syn keyword maximaFunc operatorp opproperties opsubst optimize optimprefix optionset syn keyword maximaFunc orbit ordergreat ordergreatp orderless orderlessp outative syn keyword maximaFunc outchar outermap outofpois packagefile pade part part2cont syn keyword maximaFunc partfrac partition partpol partswitch permanent permut petrov syn keyword maximaFunc pfeformat pi pickapart piece playback plog plot2d plot2d_ps syn keyword maximaFunc plot3d plot_options poisdiff poisexpt poisint poislim poismap syn keyword maximaFunc poisplus poissimp poisson poissubst poistimes poistrim polarform syn keyword maximaFunc polartorect polynome2ele posfun potential powerdisp powers syn keyword maximaFunc powerseries pred prederror primep print printpois printprops syn keyword maximaFunc prodhack prodrac product programmode prompt properties props syn keyword maximaFunc propvars pscom psdraw_curve psexpand psi pui pui2comp pui2ele syn keyword maximaFunc pui2polynome pui_direct puireduc put qput qq quad_qag quad_qagi syn keyword maximaFunc quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quanc8 quit syn keyword maximaFunc qunit quotient radcan radexpand radsubstflag random rank syn keyword maximaFunc rassociative rat ratalgdenom ratchristof ratcoef ratdenom syn keyword maximaFunc ratdenomdivide ratdiff ratdisrep rateinstein ratepsilon ratexpand syn keyword maximaFunc ratfac ratmx ratnumer ratnump ratp ratprint ratriemann ratsimp syn keyword maximaFunc ratsimpexpons ratsubst ratvars ratweight ratweights ratweyl syn keyword maximaFunc ratwtlvl read readonly realonly realpart realroots rearray syn keyword maximaFunc rectform recttopolar rediff refcheck rem remainder remarray syn keyword maximaFunc rembox remcomps remcon remcoord remfun remfunction remlet syn keyword maximaFunc remove remrule remsym remvalue rename reset residue resolvante syn keyword maximaFunc resolvante_alternee1 resolvante_bipartite resolvante_diedrale syn keyword maximaFunc resolvante_klein resolvante_klein3 resolvante_produit_sym syn keyword maximaFunc resolvante_unitaire resolvante_vierer rest resultant return syn keyword maximaFunc reveal reverse revert revert2 rhs ric ricci riem riemann syn keyword maximaFunc rinvariant risch rmxchar rncombine %rnum_list romberg rombergabs syn keyword maximaFunc rombergit rombergmin rombergtol room rootsconmode rootscontract syn keyword maximaFunc rootsepsilon round row run_testsuite save savedef savefactors syn keyword maximaFunc scalarmatrixp scalarp scalefactors scanmap schur2comp sconcat syn keyword maximaFunc scsimp scurvature sec sech second setcheck setcheckbreak syn keyword maximaFunc setelmx set_plot_option set_random_state setup_autoload syn keyword maximaFunc set_up_dot_simplifications setval seventh sf show showcomps syn keyword maximaFunc showratvars showtime sign signum similaritytransform simpsum syn keyword maximaFunc simtran sin sinh sinnpiflag sixth solve solvedecomposes syn keyword maximaFunc solveexplicit solvefactors solve_inconsistent_error solvenullwarn syn keyword maximaFunc solveradcan solvetrigwarn somrac sort sparse spherical_bessel_j syn keyword maximaFunc spherical_bessel_y spherical_hankel1 spherical_hankel2 syn keyword maximaFunc spherical_harmonic splice sqfr sqrt sqrtdispflag sstatus syn keyword maximaFunc stardisp status string stringout sublis sublis_apply_lambda syn keyword maximaFunc sublist submatrix subst substinpart substpart subvarp sum syn keyword maximaFunc sumcontract sumexpand sumhack sumsplitfact supcontext symbolp syn keyword maximaFunc symmetric symmetricp system tan tanh taylor taylordepth syn keyword maximaFunc taylorinfo taylor_logexpand taylor_order_coefficients taylorp syn keyword maximaFunc taylor_simplifier taylor_truncate_polynomials taytorat tcl_output syn keyword maximaFunc tcontract tellrat tellsimp tellsimpafter tensorkill tentex tenth syn keyword maximaFunc tex %th third throw time timer timer_devalue timer_info syn keyword maximaFunc tldefint tlimit tlimswitch todd_coxeter to_lisp totaldisrep syn keyword maximaFunc totalfourier totient tpartpol tr trace trace_options syn keyword maximaFunc transcompile translate translate_file transpose transrun syn keyword maximaFunc tr_array_as_ref tr_bound_function_applyp treillis treinat syn keyword maximaFunc tr_file_tty_messagesp tr_float_can_branch_complex syn keyword maximaFunc tr_function_call_default triangularize trigexpand trigexpandplus syn keyword maximaFunc trigexpandtimes triginverses trigrat trigreduce trigsign trigsimp syn keyword maximaFunc tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars true syn keyword maximaFunc trunc truncate tr_warn_bad_function_calls tr_warn_fexpr syn keyword maximaFunc tr_warnings_get tr_warn_meval tr_warn_mode tr_warn_undeclared syn keyword maximaFunc tr_warn_undefined_variable tr_windy ttyoff ueivects ufg ug syn keyword maximaFunc ultraspherical undiff uniteigenvectors unitvector unknown unorder syn keyword maximaFunc unsum untellrat untimer untrace uric uricci uriem uriemann syn keyword maximaFunc use_fast_arrays uvect values vect_cross vectorpotential syn keyword maximaFunc vectorsimp verb verbify verbose weyl with_stdout writefile syn keyword maximaFunc xgraph_curves xthru zerobern zeroequiv zeromatrix zeta zeta%pi syn match maximaOp "[\*\/\+\-\#\!\~\^\=\:\<\>\@]" syn case match syn match maximaLabel "^\s*<[a-zA-Z_][a-zA-Z0-9%_]*>" syn match maximaSpecial contained "\\\d\d\d\|\\." syn region maximaString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=maximaSpecial syn match maximaCharacter "'[^\\]'" syn match maximaSpecialChar "'\\.'" syn match maximaNumber /\<\d\+\>/ syn match maximaFloat /\<\d\+\.\d*\([BbDdEeSs][-+]\=\d\+\)\=\>/ syn match maximaFloat /\<\.\d\+\([BbDdEeSs][-+]\=\d\+\)\=\>/ syn match maximaFloat /\<\d\+[BbDdEeSs][-+]\=\d\+\>/ syn keyword maximaTodo contained TODO Todo DEBUG syn region maximaCommentBlock start="/\*" end="\*/" contains=maximaString,maximaTodo,maximaCommentBlock syn sync match maximaSyncComment grouphere maximaCommentBlock "/*" syn sync match maximaSyncComment groupthere NONE "*/" hi def link maximaBraceError maximaError hi def link maximaCmd maximaStatement hi def link maximaCurlyError maximaError hi def link maximaFuncCmd maximaStatement hi def link maximaParenError maximaError hi def link maximaCharacter Character hi def link maximaComma Function hi def link maximaCommentBlock Comment hi def link maximaConditional Conditional hi def link maximaError Error hi def link maximaFunc Delimiter hi def link maximaOp Delimiter hi def link maximaLabel PreProc hi def link maximaNumber Number hi def link maximaFloat Float hi def link maximaRepeat Repeat hi def link maximaSpecial Type hi def link maximaSpecialChar SpecialChar hi def link maximaStatement Statement hi def link maximaString String hi def link maximaTodo Todo let b:current_syntax = "maxima" if exists("b:current_syntax") finish endif if exists("mel_space_errors") sy match melSpaceError "\s\+$" sy match melSpaceError " \+\t"me=e-1 endif sy keyword melBoolean true false yes no on off sy keyword melFunction proc sy match melIdentifier "\$\(\a\|_\)\w*" sy keyword melStatement break continue return sy keyword melConditional if else switch sy keyword melRepeat while for do in sy keyword melLabel case default sy keyword melOperator size eval env exists whatIs sy keyword melKeyword alias sy keyword melException catch error warning sy keyword melInclude source sy keyword melType int float string vector matrix sy keyword melStorageClass global sy keyword melDebug trace sy keyword melTodo contained TODO FIXME XXX sy match melCharSpecial contained "\\[ntr\\"]" sy match melCharError contained "\\[^ntr\\"]" sy region melString start=+"+ skip=+\\"+ end=+"+ contains=melCharSpecial,melCharError sy case ignore sy match melInteger "\<\d\+\(e[-+]\=\d\+\)\=\>" sy match melFloat "\<\d\+\(e[-+]\=\d\+\)\=f\>" sy match melFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=f\=\>" sy match melFloat "\.\d\+\(e[-+]\=\d\+\)\=f\=\>" sy case match sy match melCommaSemi contained "[,;]" sy region melMatrixVector start=/<>/ contains=melInteger,melFloat,melIdentifier,melCommaSemi sy cluster melGroup contains=melFunction,melStatement,melConditional,melLabel,melKeyword,melStorageClass,melTODO,melCharSpecial,melCharError,melCommaSemi sy region melParen transparent start='(' end=')' contains=ALLBUT,@melGroup,melParenError,melInParen sy match melParenError ")" sy match melInParen contained "[{}]" sy region melComment start="/\*" end="\*/" contains=melTodo,melSpaceError sy match melComment "//.*" contains=melTodo,melSpaceError sy match melCommentError "\*/" sy region melQuestionColon matchgroup=melConditional transparent start='?' end=':' contains=ALLBUT,@melGroup if !exists("mel_minlines") let mel_minlines=15 endif exec "sy sync ccomment melComment minlines=" . mel_minlines hi def link melBoolean Boolean hi def link melFunction Function hi def link melIdentifier Identifier hi def link melStatement Statement hi def link melConditional Conditional hi def link melRepeat Repeat hi def link melLabel Label hi def link melOperator Operator hi def link melKeyword Keyword hi def link melException Exception hi def link melInclude Include hi def link melType Type hi def link melStorageClass StorageClass hi def link melDebug Debug hi def link melTodo Todo hi def link melCharSpecial SpecialChar hi def link melString String hi def link melInteger Number hi def link melFloat Float hi def link melMatrixVector Float hi def link melComment Comment hi def link melError Error hi def link melSpaceError melError hi def link melCharError melError hi def link melParenError melError hi def link melInParen melError hi def link melCommentError melError let b:current_syntax = "mel" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match messagesBegin display '^' nextgroup=messagesDate,messagesDateRFC3339 syn match messagesDate contained display '[[:lower:][:upper:]][[:lower:][:upper:]][[:lower:][:upper:]] [ 0-9]\d *' \ nextgroup=messagesHour syn match messagesHour contained display '\d\d:\d\d:\d\d\s*' \ nextgroup=messagesHost syn match messagesDateRFC3339 contained display '\d\{4}-\d\d-\d\d' \ nextgroup=messagesRFC3339T syn match messagesRFC3339T contained display '\cT' \ nextgroup=messagesHourRFC3339 syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)' \ nextgroup=messagesHost syn match messagesHost contained display '\S*\s*' \ nextgroup=messagesLabel syn match messagesLabel contained display '\s*[^:]*:\s*' \ nextgroup=messagesText contains=messagesKernel,messagesPID syn match messagesPID contained display '\[\zs\d\+\ze\]' syn match messagesKernel contained display 'kernel:' syn match messagesIP '\d\+\.\d\+\.\d\+\.\d\+' syn match messagesURL '\w\+://\S\+' syn match messagesText contained display '.*' \ contains=messagesNumber,messagesIP,messagesURL,messagesError syn match messagesNumber contained '0x[0-9a-fA-F]*\|\[<[0-9a-f]\+>\]\|\<\d[0-9a-fA-F]*' syn match messagesError contained '\c.*\<\(FATAL\|ERROR\|ERRORS\|FAILED\|FAILURE\).*' hi def link messagesDate Constant hi def link messagesHour Type hi def link messagesDateRFC3339 Constant hi def link messagesHourRFC3339 Type hi def link messagesRFC3339T Normal hi def link messagesHost Identifier hi def link messagesLabel Operator hi def link messagesPID Constant hi def link messagesKernel Special hi def link messagesError ErrorMsg hi def link messagesIP Constant hi def link messagesURL Underlined hi def link messagesText Normal hi def link messagesNumber Number let b:current_syntax = "messages" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn iskeyword @,_ syn keyword mfBoolExp and charexists false known not odd or true unknown syn keyword mfNumExp ASCII angle cosd directiontime floor hex length syn keyword mfNumExp mexp mlog normaldeviate oct sind sqrt totalweight syn keyword mfNumExp turningnumber uniformdeviate xpart xxpart xypart syn keyword mfNumExp ypart yxpart yypart syn keyword mfInternal autorounding boundarychar charcode chardp chardx syn keyword mfInternal chardy charext charht charic charwd day designsize syn keyword mfInternal fillin fontmaking granularity hppp jobname month syn keyword mfInternal pausing proofing showstopping smoothing time syn keyword mfInternal tracingcapsules tracingchoices tracingcommands syn keyword mfInternal tracingedges tracingequations tracingmacros syn keyword mfInternal tracingonline tracingoutput tracingpens syn keyword mfInternal tracingrestores tracingspecs tracingstats syn keyword mfInternal tracingtitles turningcheck vppp warningcheck syn keyword mfInternal xoffset year yoffset syn keyword mfPairExp of penoffset point postcontrol precontrol rotated syn keyword mfPairExp scaled shifted slanted transformed xscaled yscaled syn keyword mfPairExp zscaled syn keyword mfPathExp atleast controls curl cycle makepath reverse syn keyword mfPathExp subpath tension syn keyword mfPenExp makepen nullpen pencircle syn keyword mfPicExp nullpicture syn keyword mfStringExp char decimal readstring str substring syn keyword mfCommand addto also at batchmode contour cull delimiters syn keyword mfCommand display doublepath dropping dump end errhelp syn keyword mfCommand errmessage errorstopmode everyjob from interim syn keyword mfCommand inwindow keeping let message newinternal syn keyword mfCommand nonstopmode numspecial openwindow outer randomseed syn keyword mfCommand save scrollmode shipout show showdependencies syn keyword mfCommand showstats showtoken showvariable special to withpen syn keyword mfCommand withweight syn keyword mfType boolean numeric pair path pen picture string syn keyword mfType transform syn keyword mfStatement begingroup endgroup syn keyword mfDefinition def enddef expr primary primarydef secondary syn keyword mfDefinition secondarydef suffix tertiary tertiarydef text syn keyword mfDefinition vardef syn keyword mfCondition else elseif endfor exitif fi for forever syn keyword mfCondition forsuffixes if step until syn keyword mfPrimitive charlist endinput expandafter extensible fontdimen syn keyword mfPrimitive headerbyte inner input intersectiontimes kern syn keyword mfPrimitive ligtable quote scantokens skipto syn match mfSuffixParam "@#\|#@\|@" syn keyword mfVariable x y if get(g:, "plain_mf_macros", 1) syn keyword mfDef addto_currentpicture beginchar capsule_def syn keyword mfDef change_width clear_pen_memory clearit clearpen syn keyword mfDef clearxy culldraw cullit cutdraw syn keyword mfDef define_blacker_pixels define_corrected_pixels syn keyword mfDef define_good_x_pixels define_good_y_pixels syn keyword mfDef define_horizontal_corrected_pixels define_pixels syn keyword mfDef define_whole_blacker_pixels define_whole_pixels syn keyword mfDef define_whole_vertical_blacker_pixels syn keyword mfDef define_whole_vertical_pixels downto draw drawdot syn keyword mfDef endchar erase exitunless fill filldraw fix_units syn keyword mfDef flex font_coding_scheme font_extra_space syn keyword mfDef font_identifier font_normal_shrink syn keyword mfDef font_normal_space font_normal_stretch font_quad syn keyword mfDef font_size font_slant font_x_height gfcorners gobble syn keyword mfDef hide imagerules interact italcorr killtext syn keyword mfDef loggingall lowres_fix makebox makegrid maketicks syn keyword mfDef mode_def mode_setup nodisplays notransforms numtok syn keyword mfDef openit penrazor pensquare penstroke pickup syn keyword mfDef proofoffset proofrule range reflectedabout syn keyword mfDef rotatedaround screenchars screenrule screenstrokes syn keyword mfDef shipit showit smode stop superellipse takepower syn keyword mfDef tracingall tracingnone undraw undrawdot unfill syn keyword mfDef unfilldraw upto z syn match mfDef "???" syn keyword mfVardef bot byte ceiling counterclockwise cutoff decr dir syn keyword mfVardef direction directionpoint grayfont hround incr syn keyword mfVardef interpath inverse labelfont labels lft magstep syn keyword mfVardef makelabel max min nodot penlabels penpos syn keyword mfVardef proofrulethickness round rt savepen slantfont solve syn keyword mfVardef tensepath titlefont top unitvector vround whatever syn match mpVardef "\" syn keyword mfPrimaryDef div dotprod gobbled mod syn keyword mfSecondaryDef intersectionpoint syn keyword mfTertiaryDef softjoin thru syn keyword mfNewInternal blacker currentwindow displaying eps epsilon syn keyword mfNewInternal infinity join_radius number_of_modes o_correction syn keyword mfNewInternal pen_bot pen_lft pen_rt pen_top pixels_per_inch syn keyword mfNewInternal screen_cols screen_rows tolerance syn keyword mfConstant base_name base_version blankpicture ditto down syn keyword mfConstant fullcircle halfcircle identity left lowres origin syn keyword mfConstant penspeck proof quartercircle right rulepen smoke syn keyword mfConstant unitpixel unitsquare up syn keyword mfVariable aspect_ratio currentpen extra_beginchar syn keyword mfVariable extra_endchar currentpen_path currentpicture syn keyword mfVariable currenttransform d extra_setup h localfont mag mode syn keyword mfVariable mode_name w syn keyword mfnumExp abs syn keyword mfPairExp rotatedabout syn keyword mfCommand bye relax endif if get(g:, "plain_mf_modes", 1) syn keyword mfConstant APSSixMed AgfaFourZeroZero AgfaThreeFourZeroZero syn keyword mfConstant AtariNineFive AtariNineSix AtariSLMEightZeroFour syn keyword mfConstant AtariSMOneTwoFour CItohEightFiveOneZero syn keyword mfConstant CItohThreeOneZero CanonBJCSixZeroZero CanonCX syn keyword mfConstant CanonEX CanonLBPLX CanonLBPTen CanonSX ChelgraphIBX syn keyword mfConstant CompugraphicEightSixZeroZero syn keyword mfConstant CompugraphicNineSixZeroZero DD DEClarge DECsmall syn keyword mfConstant DataDiscNew EightThree EpsonAction syn keyword mfConstant EpsonLQFiveZeroZeroLo EpsonLQFiveZeroZeroMed syn keyword mfConstant EpsonMXFX EpsonSQEightSevenZero EpsonStylusPro syn keyword mfConstant EpsonStylusProHigh EpsonStylusProLow syn keyword mfConstant EpsonStylusProMed FourFour GThreefax HPDeskJet syn keyword mfConstant HPLaserJetIIISi IBMFourTwoFiveZero IBMFourTwoOneSix syn keyword mfConstant IBMFourTwoThreeZero IBMFourZeroOneNine syn keyword mfConstant IBMFourZeroThreeNine IBMFourZeroTwoNine syn keyword mfConstant IBMProPrinter IBMSixOneFiveFour IBMSixSixSevenZero syn keyword mfConstant IBMThreeEightOneTwo IBMThreeEightTwoZero syn keyword mfConstant IBMThreeOneNineThree IBMThreeOneSevenNine syn keyword mfConstant IBMUlfHolleberg LASevenFive LNOthreR LNOthree syn keyword mfConstant LNZeroOne LNZeroThree LPSFourZero LPSTwoZero syn keyword mfConstant LexmarkFourZeroThreeNine LexmarkOptraR syn keyword mfConstant LexmarkOptraS LinotypeLThreeThreeZero syn keyword mfConstant LinotypeOneZeroZero LinotypeOneZeroZeroLo syn keyword mfConstant LinotypeThreeZeroZeroHi MacTrueSize NeXTprinter syn keyword mfConstant NeXTscreen NecTwoZeroOne Newgen NineOne syn keyword mfConstant OCESixSevenFiveZeroPS OneTwoZero OneZeroZero syn keyword mfConstant PrintwareSevenTwoZeroIQ Prism QMSOneSevenTwoFive syn keyword mfConstant QMSOneSevenZeroZero QMSTwoFourTwoFive RicohA syn keyword mfConstant RicohFortyEighty RicohFourZeroEightZero RicohLP syn keyword mfConstant SparcPrinter StarNLOneZero VAXstation VTSix syn keyword mfConstant VarityperFiveZeroSixZeroW syn keyword mfConstant VarityperFourThreeZeroZeroHi syn keyword mfConstant VarityperFourThreeZeroZeroLo syn keyword mfConstant VarityperFourTwoZeroZero VarityperSixZeroZero syn keyword mfConstant XeroxDocutech XeroxEightSevenNineZero syn keyword mfConstant XeroxFourZeroFiveZero XeroxNineSevenZeroZero syn keyword mfConstant XeroxPhaserSixTwoZeroZeroDP XeroxThreeSevenZeroZero syn keyword mfConstant Xerox_world agfafzz agfatfzz amiga aps apssixhi syn keyword mfConstant aselect atariezf atarinf atarins atariotf bitgraph syn keyword mfConstant bjtenex bjtzzex bjtzzl bjtzzs boise canonbjc syn keyword mfConstant canonex canonlbp cg cgl cgnszz citohtoz corona crs syn keyword mfConstant cthreeten cx datadisc declarge decsmall deskjet syn keyword mfConstant docutech dover dp dpdfezzz eighthre elvira epscszz syn keyword mfConstant epsdraft epsdrft epsdrftl epsfast epsfastl epshi syn keyword mfConstant epslo epsmed epsmedl epson epsonact epsonfx epsonl syn keyword mfConstant epsonlo epsonlol epsonlq epsonsq epstylus epstylwr syn keyword mfConstant epstyplo epstypmd epstypml epstypro epswlo epswlol syn keyword mfConstant esphi fourfour gpx gtfax gtfaxhi gtfaxl gtfaxlo syn keyword mfConstant gtfaxlol help hifax highfax hplaser hprugged ibm_a syn keyword mfConstant ibmd ibmega ibmegal ibmfzon ibmfztn ibmpp ibmppl syn keyword mfConstant ibmsoff ibmteot ibmtetz ibmtont ibmtosn ibmtosnl syn keyword mfConstant ibmvga ibx imagen imagewriter itoh itohl itohtoz syn keyword mfConstant itohtozl iw jetiiisi kyocera laserjet laserjetfive syn keyword mfConstant laserjetfivemp laserjetfour laserjetfourthousand syn keyword mfConstant laserjetfourzerozerozero laserjethi laserjetlo syn keyword mfConstant laserjettwoonezerozero syn keyword mfConstant laserjettwoonezerozerofastres lasermaster syn keyword mfConstant laserwriter lasf lexmarkr lexmarks lexmarku syn keyword mfConstant linohalf linohi linolo linolttz linoone linosuper syn keyword mfConstant linothree linothreelo linotzzh ljfive ljfivemp syn keyword mfConstant ljfour ljfzzz ljfzzzfr ljlo ljtozz ljtozzfr lmaster syn keyword mfConstant lnotr lnzo lps lpstz lqhires lqlores lqmed lqmedl syn keyword mfConstant lqmedres lview lviewl lwpro macmag mactrue modes_mf syn keyword mfConstant ncd nec nechi neclm nectzo newdd newddl nexthi syn keyword mfConstant nextscreen nextscrn nineone nullmode ocessfz syn keyword mfConstant okidata okidatal okifourten okifte okihi onetz syn keyword mfConstant onezz pcprevw pcscreen phaser phaserfs phasertf syn keyword mfConstant phasertfl phasertl pixpt printware prntware syn keyword mfConstant proprinter qms qmsesz qmsostf qmsoszz qmstftf ricoh syn keyword mfConstant ricoha ricohlp ricohsp sherpa sparcptr starnlt syn keyword mfConstant starnltl styletwo stylewr stylewri stylewriter sun syn keyword mfConstant supre swtwo toshiba ultre varityper vs vtftzz syn keyword mfConstant vtftzzhi vtftzzlo vtfzszw vtszz xpstzz xpstzzl syn keyword mfConstant xrxesnz xrxfzfz xrxnszz xrxtszz syn keyword mfDef BCPL_string coding_scheme font_face_byte syn keyword mfDef font_family landscape syn keyword mfDef mode_extra_info mode_help mode_param syn keyword mfNewInternal blacker_min endif if get(g:, "other_mf_macros", 1) syn keyword mfDef beginlogochar syn keyword mfDef font_setup syn keyword mfPrimitive generate endif syn match mfNumeric "[-]\=\d\+" syn match mfNumeric "[-]\=\.\d\+" syn match mfNumeric "[-]\=\d\+\.\d\+" syn match mfLength "\<\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\>" syn match mfLength "[-]\=\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=" syn match mfLength "[-]\=\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=" syn match mfLength "[-]\=\d\+\.\d\+\(bp\|cc\|cm\|dd\|in\|mm\|pc\|pt\)\#\=" syn match mfOpenString /"[^"]*/ syn region mfString oneline keepend start=+"+ end=+"+ syn keyword mfTodoComment contained TODO FIXME XXX DEBUG NOTE syn match mfComment "%.*$" contains=mfTodoComment,@Spell syn sync maxlines=50 hi def link mfBoolExp Statement hi def link mfNumExp Statement hi def link mfPairExp Statement hi def link mfPathExp Statement hi def link mfPenExp Statement hi def link mfPicExp Statement hi def link mfStringExp Statement hi def link mfInternal Identifier hi def link mfCommand Statement hi def link mfType Type hi def link mfStatement Statement hi def link mfDefinition Statement hi def link mfCondition Conditional hi def link mfPrimitive Statement hi def link mfDef Function hi def link mfVardef mfDef hi def link mfPrimaryDef mfDef hi def link mfSecondaryDef mfDef hi def link mfTertiaryDef mfDef hi def link mfCoord Identifier hi def link mfPoint Identifier hi def link mfNumeric Number hi def link mfLength Number hi def link mfComment Comment hi def link mfString String hi def link mfOpenString Todo hi def link mfSuffixParam Label hi def link mfNewInternal mfInternal hi def link mfVariable Identifier hi def link mfConstant Constant hi def link mfTodoComment Todo let b:current_syntax = "mf" if exists("b:current_syntax") finish endif syn sync lines=250 syn keyword mglBoolean true false syn keyword mglConditional if else then syn keyword mglConstant nil syn keyword mglPredefined maxint syn keyword mglLabel case goto label syn keyword mglOperator to downto in of with syn keyword mglOperator and not or xor div mod syn keyword mglRepeat do for repeat while to until syn keyword mglStatement procedure function break continue return restart syn keyword mglStatement program begin end const var type syn keyword mglStruct record syn keyword mglType integer string char boolean char ipaddr array if !exists("mgl_one_line_string") syn region mglString matchgroup=mglString start=+'+ end=+'+ contains=mglStringEscape syn region mglString matchgroup=mglString start=+"+ end=+"+ contains=mglStringEscapeGPC else syn region mglStringError matchgroup=mglStringError start=+'+ end=+'+ end=+$+ contains=mglStringEscape syn region mglStringError matchgroup=mglStringError start=+"+ end=+"+ end=+$+ contains=mglStringEscapeGPC syn region mglString matchgroup=mglString start=+'+ end=+'+ oneline contains=mglStringEscape syn region mglString matchgroup=mglString start=+"+ end=+"+ oneline contains=mglStringEscapeGPC end syn match mglStringEscape contained "''" syn match mglStringEscapeGPC contained '""' if exists("mgl_symbol_operator") syn match mglSymbolOperator "[+\-/*=\%]" syn match mglSymbolOperator "[<>]=\=" syn match mglSymbolOperator "<>" syn match mglSymbolOperator ":=" syn match mglSymbolOperator "[()]" syn match mglSymbolOperator "\.\." syn match mglMatrixDelimiter "(." syn match mglMatrixDelimiter ".)" syn match mglMatrixDelimiter "[][]" endif syn match mglNumber "-\=\<\d\+\>" syn match mglHexNumber "\$[0-9a-fA-F]\+\>" syn match mglCharacter "\#[0-9]\+\>" syn match mglIpAddr "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\>" syn region mglComment start="(\*" end="\*)" syn region mglComment start="{" end="}" syn region mglComment start="//" end="$" if !exists("mgl_no_functions") syn keyword mglFunction dispose new syn keyword mglFunction get load print select syn keyword mglFunction odd pred succ syn keyword mglFunction chr ord abs sqr syn keyword mglFunction exit syn keyword mglOperator at timeout endif syn region mglPreProc start="(\*\$" end="\*)" syn region mglPreProc start="{\$" end="}" syn keyword mglException try except raise syn keyword mglPredefined exception hi def link mglBoolean Boolean hi def link mglComment Comment hi def link mglConditional Conditional hi def link mglConstant Constant hi def link mglException Exception hi def link mglFunction Function hi def link mglLabel Label hi def link mglMatrixDelimiter Identifier hi def link mglNumber Number hi def link mglHexNumber Number hi def link mglCharacter Number hi def link mglIpAddr Number hi def link mglOperator Operator hi def link mglPredefined mglFunction hi def link mglPreProc PreProc hi def link mglRepeat Repeat hi def link mglStatement Statement hi def link mglString String hi def link mglStringEscape Special hi def link mglStringEscapeGPC Special hi def link mglStringError Error hi def link mglStruct mglStatement hi def link mglSymbolOperator mglOperator hi def link mglType Type let b:current_syntax = "mgl" if exists("b:current_syntax") finish endif syn match mgpLineSkip "\\$" syn keyword mgpCommand contained size fore back bgrad left leftfill center syn keyword mgpCommand contained right shrink lcutin rcutin cont xfont vfont syn keyword mgpCommand contained tfont tmfont tfont0 bar image newimage syn keyword mgpCommand contained prefix icon bimage default tab vgap hgap syn keyword mgpCommand contained pause mark again system filter endfilter syn keyword mgpCommand contained vfcap tfdir deffont font embed endembed syn keyword mgpCommand contained noop pcache include syn region mgpFile contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match mgpValue contained "\d\+" syn match mgpSize contained "\d\+x\d\+" syn match mgpLine +^%.*$+ contains=mgpCommand,mgpFile,mgpSize,mgpValue syn match mgpPercent +^%%.*$+ syn match mgpHash +^#.*$+ syn match mgpPage +^%page$+ syn match mgpNoDefault +^%nodefault$+ hi def link mgpLineSkip Special hi def link mgpHash mgpComment hi def link mgpPercent mgpComment hi def link mgpComment Comment hi def link mgpCommand Identifier hi def link mgpLine Type hi def link mgpFile String hi def link mgpSize Number hi def link mgpValue Number hi def link mgpPage mgpDefine hi def link mgpNoDefault mgpDefine hi def link mgpDefine Define let b:current_syntax = "mgp" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,128-167,224-235,- syn keyword mibImplicit ACCESS ANY AUGMENTS BEGIN BIT BITS BOOLEAN CHOICE syn keyword mibImplicit COMPONENTS CONTACT-INFO DEFINITIONS DEFVAL syn keyword mibImplicit DESCRIPTION DISPLAY-HINT END ENTERPRISE EXTERNAL FALSE syn keyword mibImplicit FROM GROUP IMPLICIT IMPLIED IMPORTS INDEX syn keyword mibImplicit LAST-UPDATED MANDATORY-GROUPS MAX-ACCESS syn keyword mibImplicit MIN-ACCESS MODULE MODULE-COMPLIANCE MODULE-IDENTITY syn keyword mibImplicit NOTIFICATION-GROUP NOTIFICATION-TYPE NOTIFICATIONS syn keyword mibImplicit NULL OBJECT-GROUP OBJECT-IDENTITY OBJECT-TYPE syn keyword mibImplicit OBJECTS OF OPTIONAL ORGANIZATION REFERENCE syn keyword mibImplicit REVISION SEQUENCE SET SIZE STATUS SYNTAX syn keyword mibImplicit TEXTUAL-CONVENTION TRAP-TYPE TRUE UNITS VARIABLES syn keyword mibImplicit WRITE-SYNTAX syn keyword mibValue accessible-for-notify current DisplayString syn keyword mibValue deprecated mandatory not-accessible obsolete optional syn keyword mibValue read-create read-only read-write write-only INTEGER syn keyword mibValue Counter Gauge IpAddress OCTET STRING experimental mib-2 syn keyword mibValue TimeTicks RowStatus TruthValue UInteger32 snmpModules syn keyword mibValue Integer32 Counter32 TestAndIncr TimeStamp InstancePointer syn keyword mibValue OBJECT IDENTIFIER Gauge32 AutonomousType Counter64 syn keyword mibValue PhysAddress TimeInterval MacAddress StorageType RowPointer syn keyword mibValue TDomain TAddress ifIndex syn keyword mibEpilogue FORCE-INCLUDE EXCLUDE cookie get-function set-function syn keyword mibEpilogue test-function get-function-async set-function-async syn keyword mibEpilogue test-function-async next-function next-function-async syn keyword mibEpilogue leaf-name syn keyword mibEpilogue DEFAULT contained syn match mibOperator "::=" syn match mibComment "\ *--.\{-}\(--\|$\)" syn match mibNumber "\<['0-9a-fA-FhH]*\>" syn region mibDescription start="\"" end="\"" contains=DEFAULT hi def link mibImplicit Statement hi def link mibOperator Statement hi def link mibComment Comment hi def link mibConstants String hi def link mibNumber Number hi def link mibDescription Identifier hi def link mibEpilogue SpecialChar hi def link mibValue Structure let b:current_syntax = "mib" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match mixAlfParam #\s\{1,2\}"\?[^"]\{,5\}"\?# contains=mixString nextgroup=mixEndComment contained syn match mixParam #[-+*/:=0-9a-z,()"]\+# contains=mixIdentifier,mixSpecial,mixNumber,mixString,mixLabel nextgroup=mixEndComment contained syn match mixEndComment ".*" contains=mixRegister contained syn match mixIdentifier "[a-z0-9_]\+" contained syn match mixSpecial "[-+*/:=]" contained syn match mixNumber "[0-9]\+\>" contained syn region mixString start=+"+ skip=+\\"+ end=+"+ contained syn match mixLabel "^[a-z0-9_]\{,10\}\s\+" nextgroup=mixAlfSpecial,mixOpcode,mixDirective syn match mixLabel "[0-9][BF]" contained syn match mixComment "^\*.*" contains=mixRegister syn keyword mixDirective ORIG EQU CON END nextgroup=mixParam contained skipwhite syn keyword mixDirective ALF nextgroup=mixAlfParam contained syn keyword mixOpcode NOP HLT NUM CHAR FLOT FIX nextgroup=mixEndComment contained syn keyword mixOpcode FADD FSUB FMUL FDIV FCMP MOVE ADD SUB MUL DIV IOC IN OUT JRED JBUS JMP JSJ JOV JNOV JL JE JG JLE JNE JGE SLA SRA SLAX SRAX SLC SRC nextgroup=mixParam contained skipwhite syn keyword mixOpcode SLB SRB JAE JAO JXE JXO nextgroup=mixParam contained skipwhite syn match mixOpcode "LD[AX1-6]N\?\>" nextgroup=mixParam contained skipwhite syn match mixOpcode "ST[AX1-6JZ]\>" nextgroup=mixParam contained skipwhite syn match mixOpcode "EN[TN][AX1-6]\>" nextgroup=mixParam contained skipwhite syn match mixOpcode "INC[AX1-6]\>" nextgroup=mixParam contained skipwhite syn match mixOpcode "DEC[AX1-6]\>" nextgroup=mixParam contained skipwhite syn match mixOpcode "CMP[AX1-6]\>" nextgroup=mixParam contained skipwhite syn match mixOpcode "J[AX1-6]N\?[NZP]\>" nextgroup=mixParam contained skipwhite syn case match syn keyword mixRegister rA rX rI1 rI2 rI3 rI4 rI5 rI6 rJ contained hi def link mixRegister Special hi def link mixLabel Define hi def link mixComment Comment hi def link mixEndComment Comment hi def link mixDirective Keyword hi def link mixOpcode Keyword hi def link mixSpecial Special hi def link mixNumber Number hi def link mixString String hi def link mixAlfParam String hi def link mixIdentifier Identifier let b:current_syntax = "mix" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syntax cluster mmaNotes contains=mmaTodo,mmaFixme syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable syntax keyword mmaVariable True False None Automatic All Null C General syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook syntax keyword mmaVariable CellTags CellStyle CellLabel syntax keyword mmaVariable Above Below Left Right syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes syntax keyword mmaTodo TODO NOTE HEY contained syntax match mmaTodo "X\{3,}" contained syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis syntax match mmaemPHAsis "\%(^\|\s\)(\@]\@!" contains=mmaOperator syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)" syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)" syntax match mmaOperator "\%([-:=]\=>\|<=\=\)" syntax match mmaOperator "[*+=^.:?-]" syntax match mmaOperator "\%(\~\~\=\)" syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType syntax match mmaMessageType "::\a\+"hs=s+2 contained syntax match mmaPureFunction "#\%(#\|\d\+\)\=" syntax match mmaPureFunction "&" syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>" syntax match mmaNumber "`\d\+\%(\d\@!\.\|\>\)" syntax match mmaUnicode "\\\[\w\+\d*\]" syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)" syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings syntax match mmaBoring "[(){}]" contained set commentstring='(*%s*)' syntax sync fromstart hi def link mmaComment Comment hi def link mmaCommentStar Comment hi def link mmaFunctionComment Comment hi def link mmaLooseQuote Comment hi def link mmaGenericFunction Function hi def link mmaVariable Identifier hi def link mmaOperator Operator hi def link mmaPatternOp Operator hi def link mmaPureFunction Operator hi def link mmaString String hi def link mmaCommentString String hi def link mmaUnicode String hi def link mmaMessage Type hi def link mmaNumber Type hi def link mmaPattern Type hi def link mmaError Error hi def link mmaFixme Error hi def link mmaPatternError Error hi def link mmaTodo Todo hi def link mmaemPHAsis Special hi def link mmaFunctionTitle Special hi def link mmaMessageType Special hi def link mmaItem Preproc let b:current_syntax = "mma" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword mmixType byte wyde tetra octa syn match decNumber "[0-9]*" syn match octNumber "0[0-7][0-7]\+" syn match hexNumber "#[0-9a-fA-F]\+" syn region mmixString start=+"+ skip=+\\"+ end=+"+ contains=@Spell syn match mmixChar "'.'" syn match mmixAt "@" syn keyword mmixSegments Data_Segment Pool_Segment Stack_Segment syn match mmixIdentifier "[a-z_][a-z0-9_]*" syn match mmixLabel "^[a-z0-9_:][a-z0-9_]*" syn match mmixLabel "[0-9][HBF]" syn keyword mmixPseudo is loc greg syn match mmixComment "%.*" contains=@Spell syn match mmixComment "//.*" contains=@Spell syn match mmixComment "^\*.*" contains=@Spell syn keyword mmixOpcode trap fcmp fun feql fadd fix fsub fixu syn keyword mmixOpcode fmul fcmpe fune feqle fdiv fsqrt frem fint syn keyword mmixOpcode floti flotui sfloti sflotui i syn keyword mmixOpcode muli mului divi divui syn keyword mmixOpcode addi addui subi subui syn keyword mmixOpcode 2addui 4addui 8addui 16addui syn keyword mmixOpcode cmpi cmpui negi negui syn keyword mmixOpcode sli slui sri srui syn keyword mmixOpcode bnb bzb bpb bodb syn keyword mmixOpcode bnnb bnzb bnpb bevb syn keyword mmixOpcode pbnb pbzb pbpb pbodb syn keyword mmixOpcode pbnnb pbnzb pbnpb pbevb syn keyword mmixOpcode csni cszi cspi csodi syn keyword mmixOpcode csnni csnzi csnpi csevi syn keyword mmixOpcode zsni zszi zspi zsodi syn keyword mmixOpcode zsnni zsnzi zsnpi zsevi syn keyword mmixOpcode ldbi ldbui ldwi ldwui syn keyword mmixOpcode ldti ldtui ldoi ldoui syn keyword mmixOpcode ldsfi ldhti cswapi ldunci syn keyword mmixOpcode ldvtsi preldi pregoi goi syn keyword mmixOpcode stbi stbui stwi stwui syn keyword mmixOpcode stti sttui stoi stoui syn keyword mmixOpcode stsfi sthti stcoi stunci syn keyword mmixOpcode syncdi presti syncidi pushgoi syn keyword mmixOpcode ori orni nori xori syn keyword mmixOpcode andi andni nandi nxori syn keyword mmixOpcode bdifi wdifi tdifi odifi syn keyword mmixOpcode muxi saddi mori mxori syn keyword mmixOpcode muli mului divi divui syn keyword mmixOpcode flot flotu sflot sflotu syn keyword mmixOpcode mul mulu div divu syn keyword mmixOpcode add addu sub subu syn keyword mmixOpcode 2addu 4addu 8addu 16addu syn keyword mmixOpcode cmp cmpu neg negu syn keyword mmixOpcode sl slu sr sru syn keyword mmixOpcode bn bz bp bod syn keyword mmixOpcode bnn bnz bnp bev syn keyword mmixOpcode pbn pbz pbp pbod syn keyword mmixOpcode pbnn pbnz pbnp pbev syn keyword mmixOpcode csn csz csp csod syn keyword mmixOpcode csnn csnz csnp csev syn keyword mmixOpcode zsn zsz zsp zsod syn keyword mmixOpcode zsnn zsnz zsnp zsev syn keyword mmixOpcode ldb ldbu ldw ldwu syn keyword mmixOpcode ldt ldtu ldo ldou syn keyword mmixOpcode ldsf ldht cswap ldunc syn keyword mmixOpcode ldvts preld prego go syn keyword mmixOpcode stb stbu stw stwu syn keyword mmixOpcode stt sttu sto stou syn keyword mmixOpcode stsf stht stco stunc syn keyword mmixOpcode syncd prest syncid pushgo syn keyword mmixOpcode or orn nor xor syn keyword mmixOpcode and andn nand nxor syn keyword mmixOpcode bdif wdif tdif odif syn keyword mmixOpcode mux sadd mor mxor syn keyword mmixOpcode seth setmh setml setl inch incmh incml incl syn keyword mmixOpcode orh ormh orml orl andh andmh andml andnl syn keyword mmixOpcode jmp pushj geta put syn keyword mmixOpcode pop resume save unsave sync swym get trip syn keyword mmixOpcode set lda syn case match syn match mmixRegister "$[0-9]*" syn match mmixRegister "r[A-Z]" syn keyword mmixRegister rBB rTT rWW rXX rYY rZZ hi def link mmixAt Type hi def link mmixPseudo Type hi def link mmixRegister Special hi def link mmixSegments Type hi def link mmixLabel Special hi def link mmixComment Comment hi def link mmixOpcode Keyword hi def link hexNumber Number hi def link decNumber Number hi def link octNumber Number hi def link mmixString String hi def link mmixChar String hi def link mmixType Type hi def link mmixIdentifier Normal hi def link mmixSpecialComment Comment let b:current_syntax = "mmix" if exists("b:current_syntax") finish endif syn case ignore syn match mmpComment "//.*" syn region mmpComment start="/\*" end="\*\/" syn keyword mmpKeyword aif asspabi assplibrary aaspexports baseaddress syn keyword mmpKeyword debuglibrary deffile document epocheapsize syn keyword mmpKeyword epocprocesspriority epocstacksize exportunfrozen syn keyword mmpStorage lang library linkas macro nostrictdef option syn keyword mmpStorage resource source sourcepath srcdbg startbitmap syn keyword mmpStorage start end staticlibrary strictdepend systeminclude syn keyword mmpStorage systemresource target targettype targetpath uid syn keyword mmpStorage userinclude win32_library syn match mmpIfdef "\#\(include\|ifdef\|ifndef\|if\|endif\|else\|elif\)" syn match mmpNumber "\d+" syn match mmpNumber "0x\x\+" if !exists("did_mmp_syntax_inits") let did_mmp_syntax_inits=1 hi def link mmpComment Comment hi def link mmpKeyword Keyword hi def link mmpStorage StorageClass hi def link mmpString String hi def link mmpNumber Number hi def link mmpOrdinal Operator hi def link mmpIfdef PreCondit endif let b:current_syntax = "mmp" if exists("b:current_syntax") finish endif setlocal iskeyword+=- let s:cpo_save = &cpo set cpo&vim syn keyword modconfTodo FIXME TODO XXX NOTE syn region modconfComment start='#' skip='\\$' end='$' \ contains=modconfTodo,@Spell syn keyword modconfConditional if else elseif endif syn keyword modconfPreProc alias define include keep prune \ post-install post-remove pre-install \ pre-remove persistdir blacklist syn keyword modconfKeyword add above below install options probe probeall \ remove syn keyword modconfIdentifier depfile insmod_opt path generic_stringfile \ pcimapfile isapnpmapfile usbmapfile \ parportmapfile ieee1394mapfile pnpbiosmapfile syn match modconfIdentifier 'path\[[^]]\+\]' hi def link modconfTodo Todo hi def link modconfComment Comment hi def link modconfConditional Conditional hi def link modconfPreProc PreProc hi def link modconfKeyword Keyword hi def link modconfIdentifier Identifier let b:current_syntax = "modconf" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword modelKeyword abs and array boolean by case cdnl char copied dispose syn keyword modelKeyword div do dynamic else elsif end entry external FALSE false syn keyword modelKeyword fi file for formal fortran global if iff ift in integer include syn keyword modelKeyword inline is lbnd max min mod new NIL nil noresult not notin od of syn keyword modelKeyword or procedure public read readln readonly record recursive rem rep syn keyword modelKeyword repeat res result return set space string subscript such then TRUE syn keyword modelKeyword true type ubnd union until varies while width syn keyword modelBlock beginproc endproc syn region modelComment start="\$" end="\$" end="$" syn region modelString start=+"+ end=+"+ syn match modelString "'." hi def link modelKeyword Statement hi def link modelBlock PreProc hi def link modelComment Comment hi def link modelString String let b:current_syntax = "model" if exists("b:current_syntax") finish endif syn keyword modsim3Keyword ACTID ALL AND AS ASK syn keyword modsim3Keyword BY CALL CASE CLASS CONST DIV syn keyword modsim3Keyword DOWNTO DURATION ELSE ELSIF EXIT FALSE FIXED FOR syn keyword modsim3Keyword FOREACH FORWARD IF IN INHERITED INOUT syn keyword modsim3Keyword INTERRUPT LOOP syn keyword modsim3Keyword MOD MONITOR NEWVALUE syn keyword modsim3Keyword NONMODSIM NOT OBJECT OF ON OR ORIGINAL OTHERWISE OUT syn keyword modsim3Keyword OVERRIDE PRIVATE PROTO REPEAT syn keyword modsim3Keyword RETURN REVERSED SELF STRERR TELL syn keyword modsim3Keyword TERMINATE THISMETHOD TO TRUE TYPE UNTIL VALUE VAR syn keyword modsim3Keyword WAIT WAITFOR WHEN WHILE WITH syn keyword modsim3Builtin ABS ACTIVATE ADDMONITOR CAP CHARTOSTR CHR CLONE syn keyword modsim3Builtin DEACTIVATE DEC DISPOSE FLOAT GETMONITOR HIGH INC syn keyword modsim3Builtin INPUT INSERT INTTOSTR ISANCESTOR LOW LOWER MAX MAXOF syn keyword modsim3Builtin MIN MINOF NEW OBJTYPEID OBJTYPENAME OBJVARID ODD syn keyword modsim3Builtin ONERROR ONEXIT ORD OUTPUT POSITION PRINT REALTOSTR syn keyword modsim3Builtin REPLACE REMOVEMONITOR ROUND SCHAR SIZEOF SPRINT syn keyword modsim3Builtin STRLEN STRTOCHAR STRTOINT STRTOREAL SUBSTR TRUNC syn keyword modsim3Builtin UPDATEVALUE UPPER VAL syn keyword modsim3BuiltinNoParen HALT TRACE syn keyword modsim3Block PROCEDURE METHOD MODULE MAIN DEFINITION IMPLEMENTATION syn keyword modsim3Block BEGIN END syn keyword modsim3Include IMPORT FROM syn keyword modsim3Type ANYARRAY ANYOBJ ANYREC ARRAY BOOLEAN CHAR INTEGER syn keyword modsim3Type LMONITORED LRMONITORED NILARRAY NILOBJ NILREC REAL syn keyword modsim3Type RECORD RMONITOR RMONITORED STRING syn region modsim3Paren transparent start='(' end=')' contains=ALLBUT,modsim3ParenError syn match modsim3ParenError ")" syn region modsim3Comment1 start="{" end="}" contains=modsim3Comment1,modsim3Comment2 syn region modsim3Comment2 start="(\*" end="\*)" contains=modsim3Comment1,modsim3Comment2 syn region modsim3String start=+"+ end=+"+ syn match modsim3Literal "'[^']'\|''''" hi def link modsim3Keyword Statement hi def link modsim3Block Statement hi def link modsim3Comment1 Comment hi def link modsim3Comment2 Comment hi def link modsim3String String hi def link modsim3Literal Character hi def link modsim3Include Statement hi def link modsim3Type Type hi def link modsim3ParenError Error hi def link modsim3Builtin Function hi def link modsim3BuiltinNoParen Function let b:current_syntax = "modsim3" if exists("b:current_syntax") finish endif syn region modula2Header matchgroup=modula2Header start="PROCEDURE " end="(" contains=modula2Ident oneline syn region modula2Header matchgroup=modula2Header start="MODULE " end=";" contains=modula2Ident oneline syn region modula2Header matchgroup=modula2Header start="BEGIN (\*" end="\*)" contains=modula2Ident oneline syn region modula2Header matchgroup=modula2Header start="END " end=";" contains=modula2Ident oneline syn region modula2Keyword start="END" end=";" contains=ALLBUT,modula2Ident oneline syn keyword modula2AttKeyword CONST EXIT HALT RETURN TYPE VAR syn keyword modula2Keyword AND ARRAY BY CASE DEFINITION DIV DO ELSE syn keyword modula2Keyword ELSIF EXPORT FOR FROM IF IMPLEMENTATION IMPORT syn keyword modula2Keyword IN LOOP MOD NOT OF OR POINTER QUALIFIED RECORD syn keyword modula2Keyword SET THEN TO UNTIL WHILE WITH syn keyword modula2Type ADDRESS BITSET BOOLEAN CARDINAL CHAR INTEGER REAL WORD syn keyword modula2StdFunc ABS CAP CHR DEC EXCL INC INCL ORD SIZE TSIZE VAL syn keyword modula2StdConst FALSE NIL TRUE syn keyword modula2StdFunc NEW DISPOSE syn keyword modula2Type BYTE LONGCARD LONGINT LONGREAL PROC SHORTCARD SHORTINT syn keyword modula2StdFunc MAX MIN syn match modula2Ident " [A-Z,a-z][A-Z,a-z,0-9,_]*" contained syn region modula2Comment start="(\*" end="\*)" contains=modula2Comment,modula2Todo syn keyword modula2Todo contained TODO FIXME XXX syn region modula2String start=+"+ end=+"+ syn region modula2String start="'" end="'" syn region modula2Set start="{" end="}" hi def link modula2Ident Identifier hi def link modula2StdConst Boolean hi def link modula2Type Identifier hi def link modula2StdFunc Identifier hi def link modula2Header Type hi def link modula2Keyword Statement hi def link modula2AttKeyword PreProc hi def link modula2Comment Comment hi def link modula2Todo Todo hi def link modula2String String hi def link modula2Set String let b:current_syntax = "modula2" if exists("b:current_syntax") finish endif syn keyword modula3Keyword ABS ADDRES ADR ADRSIZE AND ANY syn keyword modula3Keyword ARRAY AS BITS BITSIZE BOOLEAN BRANDED BY BYTESIZE syn keyword modula3Keyword CARDINAL CASE CEILING CHAR CONST DEC DEFINITION syn keyword modula3Keyword DISPOSE DIV syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION syn keyword modula3Keyword EXIT EXPORTS EXTENDED FALSE FINALLY FIRST FLOAT syn keyword modula3Keyword FLOOR FROM GENERIC IMPORT syn keyword modula3Keyword IN INC INTEGER ISTYPE LAST LOCK syn keyword modula3Keyword LONGREAL LOOPHOLE MAX METHOD MIN MOD MUTEX syn keyword modula3Keyword NARROW NEW NIL NOT NULL NUMBER OF OR ORD RAISE syn keyword modula3Keyword RAISES READONLY REAL RECORD REF REFANY syn keyword modula3Keyword RETURN ROOT syn keyword modula3Keyword ROUND SET SUBARRAY TEXT TRUE TRUNC TRY TYPE syn keyword modula3Keyword TYPECASE TYPECODE UNSAFE UNTRACED VAL VALUE VAR WITH syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP syn region modula3Comment start="(\*" end="\*)" syn region modula3String start=+"+ end=+"+ syn region modula3String start=+'+ end=+'+ hi def link modula3Keyword Statement hi def link modula3Block PreProc hi def link modula3Comment Comment hi def link modula3String String let b:current_syntax = "modula3" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match monkError oneline ![^ \t()";]*! syn match monkError oneline ")" syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_ syn keyword monkSyntax lambda and or if cond case define let let* letrec syn keyword monkSyntax begin do delay set! else => syn keyword monkSyntax quote quasiquote unquote unquote-splicing syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car! syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc syn keyword monkFunc symbol? symbol->string string->symbol number? complex? syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >= syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar syn keyword monkFunc real-part imag-part magnitude angle exact->inexact syn keyword monkFunc inexact->exact number->string string->number char=? syn keyword monkFunc char-ci=? char? char-ci>? char<=? syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char? syn keyword monkFunc char-numeric? char-whitespace? char-upper-case? syn keyword monkFunc char-lower-case? syn keyword monkFunc char->integer integer->char char-upcase char-downcase syn keyword monkFunc string? make-string string string-length string-ref syn keyword monkFunc string-set! string=? string-ci=? string? string-ci>? string<=? string-ci<=? string>=? syn keyword monkFunc string-ci>=? substring string-append vector? make-vector syn keyword monkFunc vector vector-length vector-ref vector-set! procedure? syn keyword monkFunc apply map for-each call-with-current-continuation syn keyword monkFunc call-with-input-file call-with-output-file input-port? syn keyword monkFunc output-port? current-input-port current-output-port syn keyword monkFunc open-input-file open-output-file close-input-port syn keyword monkFunc close-output-port eof-object? read read-char peek-char syn keyword monkFunc write display newline write-char call/cc syn keyword monkFunc list-tail string->list list->string string-copy syn keyword monkFunc string-fill! vector->list list->vector vector-fill! syn keyword monkFunc force with-input-from-file with-output-to-file syn keyword monkFunc char-ready? load transcript-on transcript-off eval syn keyword monkFunc dynamic-wind port? values call-with-values syn keyword monkFunc monk-report-environment null-environment syn keyword monkFunc interaction-environment syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip syn keyword monkFunc count-data-children count-map-children count-rep data-map syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get syn keyword monkFunc insert list-lookup node-has-data? not-verify path? syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid? syn keyword monkFunc regex string->path timestamp uniqueid verify syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute syn keyword monkFunc char-to-char conv count-used-children degc->degf syn keyword monkFunc diff-two-dates display-error empty-string? fail_id syn keyword monkFunc fail_id_if fail_translation fail_translation_if syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date? syn keyword monkFunc julian->standard leap-year? map-string not-empty-string? syn keyword monkFunc standard-date? standard->julian string-begins-with? syn keyword monkFunc string-contains? string-ends-with? string-search-from-left syn keyword monkFunc string-search-from-right string->ssn strip-punct syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put syn keyword monkFunc trim-string-left trim-string-right valid-decimal? syn keyword monkFunc valid-integer? verify-type syn match monkNumber oneline "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*" syn match monkError oneline ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*! syn match monkOther oneline ![+-][ \t()";]!me=e-1 syn match monkOther oneline ![+-]$! syn match monkDelimiter oneline !\.[ \t()";]!me=e-1 syn match monkDelimiter oneline !\.$! syn match monkBoolean oneline "#[tf]" syn match monkError oneline !#[tf][^ \t()";]\+! syn match monkChar oneline "#\\" syn match monkChar oneline "#\\." syn match monkError oneline !#\\.[^ \t()";]\+! syn match monkChar oneline "#\\space" syn match monkError oneline !#\\space[^ \t()";]\+! syn match monkChar oneline "#\\newline" syn match monkError oneline !#\\newline[^ \t()";]\+! syn match monkOther oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*, syn match monkError oneline ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, syn match monkOther oneline "\.\.\." syn match monkError oneline !\.\.\.[^ \t()";]\+! syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1 syn match monkConstant oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$, syn match monkError oneline ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1 syn match monkConstant oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$, syn match monkError oneline ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*, syn match monkSyntax oneline "\(\~input\|\[I\]->\)[^ \t]*" syn match monkFunc oneline "\(\~output\|\[O\]->\)[^ \t]*" syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL syn region monkString start=+"+ skip=+\\[\\"]+ end=+"+ syn match monkComment ";.*$" syn sync match matchPlace grouphere NONE "^[^ \t]" hi def link monkSyntax Statement hi def link monkFunc Function hi def link monkString String hi def link monkChar Character hi def link monkNumber Number hi def link monkBoolean Boolean hi def link monkDelimiter Delimiter hi def link monkConstant Constant hi def link monkComment Comment hi def link monkError Error let b:current_syntax = "monk" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn match mooUncommentedError display ~\*/~ syn match mooCStyleCommentError display ~/\ze\*~ contained syn region mooCStyleComment matchgroup=mooComment start=~/\*~ end=~\*/~ contains=mooCStyleCommentError if exists("moo_extended_cstyle_comments") syn match mooIdentifier display ~\%(\%(/\*.\{-}\*/\s*\)*\)\@>\<\h\w*\>~ contained transparent contains=mooCStyleComment,@mooKeyword,mooType,mooVariable else syn match mooIdentifier display ~\<\h\w*\>~ contained transparent contains=@mooKeyword,mooType,mooVariable endif syn keyword mooStatement break continue else elseif endfor endfork endif endtry endwhile finally for if try syn keyword mooStatement except fork while nextgroup=mooIdentifier skipwhite syn keyword mooStatement return nextgroup=mooString skipwhite syn keyword mooOperatorIn in syn keyword mooAny ANY syn keyword mooErrorConstant E_ARGS E_INVARG E_DIV E_FLOAT E_INVIND E_MAXREC E_NACC E_NONE E_PERM E_PROPNF E_QUOTA E_RANGE E_RECMOVE E_TYPE E_VARNF E_VERBNF syn match mooType display ~\<\%(ERR\|FLOAT\|INT\|LIST\|NUM\|OBJ\|STR\)\>~ syn match mooVariable display ~\<\%(args\%(tr\)\=\|caller\|dobj\%(str\)\=\|iobj\%(str\)\=\|player\|prepstr\|this\|verb\)\>~ syn match mooStringError display ~[^\t -[\]-~]~ contained syn match mooStringSpecialChar display ~\\["\\]~ contained if !exists("moo_no_regexp") syn match mooRegexp display ~%%~ contained containedin=mooString,mooRegexpParentheses transparent contains=NONE syn region mooRegexpParentheses display matchgroup=mooRegexpOr start=~%(~ skip=~%%~ end=~%)~ contained containedin=mooString,mooRegexpParentheses transparent oneline syn match mooRegexpOr display ~%|~ contained containedin=mooString,mooRegexpParentheses endif if !exists("moo_no_pronoun_sub") syn match mooPronounSub display ~%%~ contained containedin=mooString transparent contains=NONE syn match mooPronounSub display ~%[#dilnopqrst]~ contained containedin=mooString syn match mooPronounSub display ~%\[#[dilnt]\]~ contained containedin=mooString syn match mooPronounSub display ~%(\h\w*)~ contained containedin=mooString syn match mooPronounSub display ~%\[[dilnt]\h\w*\]~ contained containedin=mooString syn match mooPronounSub display ~%<\%([dilnt]:\)\=\a\+>~ contained containedin=mooString endif if exists("moo_unmatched_quotes") syn region mooString matchgroup=mooStringError start=~"~ end=~$~ contains=@mooStringContents keepend syn region mooString start=~"~ skip=~\\.~ end=~"~ contains=@mooStringContents oneline keepend else syn region mooString start=~"~ skip=~\\.~ end=~"\|$~ contains=@mooStringContents keepend endif syn match mooNumber display ~\%(\%(\<\d\+\)\=\.\d\+\|\<\d\+\)\%(e[+\-]\=\d\+\)\=\>~ syn match mooObject display ~#-\=\d\+\>~ if exists("moo_builtin_properties") syn keyword mooBuiltinProperty contents f location name owner programmer r w wizard contained containedin=mooPropRef endif if exists("moo_extended_cstyle_comments") syn match mooPropRef display ~\.\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword syn match mooVerbRef display ~:\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword else syn match mooPropRef display ~\.\s*\h\w*\>~ transparent contains=@mooKeyword syn match mooVerbRef display ~:\s*\h\w*\>~ transparent contains=@mooKeyword endif if exists("moo_extended_cstyle_comments") syn match mooBuiltinFunction display ~\<\h\w*\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\ze(~ contains=mooCStyleComment syn match mooCorePropOrVerb display ~\$\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\%(in\>\)\@!\h\w*\>~ contains=mooCStyleComment,@mooKeyword else syn match mooBuiltinFunction display ~\<\h\w*\s*\ze(~ contains=NONE syn match mooCorePropOrVerb display ~\$\s*\%(in\>\)\@!\h\w*\>~ contains=@mooKeyword endif if exists("moo_unknown_builtin_functions") syn match mooUnknownBuiltinFunction ~\<\h\w*\>~ contained containedin=mooBuiltinFunction contains=mooKnownBuiltinFunction syn keyword mooKnownBuiltinFunction abs acos add_property add_verb asin atan binary_hash boot_player buffered_output_length callers caller_perms call_function ceil children chparent clear_property connected_players connected_seconds connection_name connection_option connection_options cos cosh create crypt ctime db_disk_size decode_binary delete_property delete_verb disassemble dump_database encode_binary equal eval exp floatstr floor flush_input force_input function_info idle_seconds index is_clear_property is_member is_player kill_task length listappend listdelete listen listeners listinsert listset log log10 match max max_object memory_usage min move notify object_bytes open_network_connection output_delimiters parent pass players properties property_info queued_tasks queue_info raise random read recycle renumber reset_max_object resume rindex rmatch seconds_left server_log server_version setadd setremove set_connection_option set_player_flag set_property_info set_task_perms set_verb_args set_verb_code set_verb_info shutdown sin sinh sqrt strcmp string_hash strsub substitute suspend tan tanh task_id task_stack ticks_left time tofloat toint toliteral tonum toobj tostr trunc typeof unlisten valid value_bytes value_hash verbs verb_args verb_code verb_info contained endif syn match mooUnenclosedError display ~[')\]|}]~ syn match mooParenthesesError display ~[';\]|}]~ contained syn region mooParentheses start=~(~ end=~)~ transparent contains=@mooEnclosedContents,mooParenthesesError syn match mooBracketsError display ~[');|}]~ contained syn region mooBrackets start=~\[~ end=~\]~ transparent contains=@mooEnclosedContents,mooBracketsError syn match mooBracesError display ~[');\]|]~ contained syn region mooBraces start=~{~ end=~}~ transparent contains=@mooEnclosedContents,mooBracesError syn match mooQuestionError display ~[');\]}]~ contained syn region mooQuestion start=~?~ end=~|~ transparent contains=@mooEnclosedContents,mooQuestionError syn match mooCatchError display ~[);\]|}]~ contained syn region mooCatch matchgroup=mooExclamation start=~`~ end=~'~ transparent contains=@mooEnclosedContents,mooCatchError,mooExclamation if exists("moo_extended_cstyle_comments") syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@!=\@!~ contained contains=mooCStyleComment else syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@?@^|]\@?~ transparent contains=mooCStyleComment else syn match mooScattering ~[,{]\@<=\s*?~ transparent contains=NONE endif syn cluster mooKeyword contains=mooStatement,mooOperatorIn,mooAny,mooErrorConstant syn cluster mooStringContents contains=mooStringError,mooStringSpecialChar syn cluster mooEnclosedContents contains=TOP,mooUnenclosedError,mooComment,mooNonCode hi def link mooUncommentedError Error hi def link mooCStyleCommentError Error hi def link mooCStyleComment Comment hi def link mooStatement Statement hi def link mooOperatorIn Operator hi def link mooAny Constant " link this to Keyword if you want hi def link mooErrorConstant Constant hi def link mooType Type hi def link mooVariable Type hi def link mooStringError Error hi def link mooStringSpecialChar SpecialChar hi def link mooRegexpOr SpecialChar hi def link mooPronounSub SpecialChar hi def link mooString String hi def link mooNumber Number hi def link mooObject Number hi def link mooBuiltinProperty Type hi def link mooBuiltinFunction Function hi def link mooUnknownBuiltinFunction Error hi def link mooKnownBuiltinFunction Function hi def link mooCorePropOrVerb Identifier hi def link mooUnenclosedError Error hi def link mooParenthesesError Error hi def link mooBracketsError Error hi def link mooBracesError Error hi def link mooQuestionError Error hi def link mooCatchError Error hi def link mooExclamation Exception hi def link mooComment Comment hi def link mooNonCode PreProc let b:current_syntax = "moo" if exists("b:current_syntax") finish endif let s:cpo_sav = &cpo set cpo&vim if exists("g:plain_mf_macros") let s:plain_mf_macros = g:plain_mf_macros endif if exists("g:plain_mf_modes") let s:plain_mf_modes = g:plain_mf_modes endif if exists("g:other_mf_macros") let s:other_mf_macros = g:other_mf_macros endif let g:plain_mf_macros = 0 " plain.mf has no special meaning for MetaPost let g:plain_mf_modes = 0 " No METAFONT modes let g:other_mf_macros = 0 " cmbase.mf, logo.mf, ... neither runtime! syntax/mf.vim unlet b:current_syntax " Necessary for syn include below if exists("s:plain_mf_macros") let g:plain_mf_macros = s:plain_mf_macros else unlet g:plain_mf_macros endif if exists("s:plain_mf_modes") let g:plain_mf_modes = s:plain_mf_modes else unlet g:plain_mf_modes endif if exists("s:other_mf_macros") let g:other_mf_macros = s:other_mf_macros else unlet g:other_mf_macros endif syn include @MPTeX syntax/tex.vim unlet b:current_syntax syn keyword mpTeXdelim btex etex verbatimtex contained syn region mpTeXinsert \ start=/\\|\/rs=e+1 \ end=/\/re=s-1 keepend \ contains=@MPTeX,mpTeXdelim syntax iskeyword @,_ syn keyword mpBoolExp bounded clipped filled stroked textual arclength syn keyword mpNumExp arctime blackpart bluepart colormodel cyanpart syn keyword mpNumExp fontsize greenpart greypart magentapart redpart syn keyword mpPairExp yellowpart llcorner lrcorner ulcorner urcorner syn keyword mpPathExp envelope pathpart syn keyword mpPenExp penpart syn keyword mpPicExp dashpart glyph infont syn keyword mpStringExp fontpart readfrom textpart syn keyword mpType cmykcolor color rgbcolor syn keyword mpPrimitive mpxbreak within syn keyword mpInternal defaultcolormodel hour minute linecap linejoin syn keyword mpInternal miterlimit mpprocset mpversion numberprecision syn keyword mpInternal numbersystem outputfilename outputformat syn keyword mpInternal outputformatoptions outputtemplate prologues syn keyword mpInternal restoreclipcolor tracinglostchars troffmode syn keyword mpInternal truecorners syn keyword mpCommand clip closefrom dashed filenametemplate fontmapfile syn keyword mpCommand fontmapline setbounds withcmykcolor withcolor syn keyword mpCommand withgreyscale withoutcolor withpostscript syn keyword mpCommand withprescript withrgbcolor write syn keyword notDefined autorounding chardx chardy fillin granularity syn keyword notDefined proofing smoothing tracingedges tracingpens syn keyword notDefined turningcheck xoffset yoffset syn keyword notDefined nodot syn keyword notDefined cull display openwindow numspecial totalweight syn keyword notDefined withweight if get(g:, "plain_mp_macros", 1) || get(g:, "mp_metafun_macros", 0) syn keyword mpDef beginfig clear_pen_memory clearit clearpen clearpen syn keyword mpDef clearxy colorpart cutdraw downto draw drawarrow syn keyword mpDef drawdblarrow drawdot drawoptions endfig erase syn keyword mpDef exitunless fill filldraw flex gobble hide interact syn keyword mpDef label loggingall makelabel numtok penstroke pickup syn keyword mpDef range reflectedabout rotatedaround shipit syn keyword mpDef stop superellipse takepower tracingall tracingnone syn keyword mpDef undraw undrawdot unfill unfilldraw upto syn match mpDef "???" syn keyword mpVardef arrowhead bbox bot buildcycle byte ceiling center syn keyword mpVardef counterclockwise decr dir direction directionpoint syn keyword mpVardef dotlabel dotlabels image incr interpath inverse syn keyword mpVardef labels lft magstep max min penlabels penpos round syn keyword mpVardef rt savepen solve tensepath thelabel top unitvector syn keyword mpVardef whatever z syn keyword mpPrimaryDef div dotprod gobbled mod syn keyword mpSecondaryDef intersectionpoint syn keyword mpTertiaryDef cutafter cutbefore softjoin thru syn keyword mpNewInternal ahangle ahlength bboxmargin beveled butt defaultpen syn keyword mpNewInternal defaultscale dotlabeldiam eps epsilon infinity syn keyword mpNewInternal join_radius labeloffset mitered pen_bot pen_lft syn keyword mpNewInternal pen_rt pen_top rounded squared tolerance syn keyword mpConstant EOF background base_name base_version black syn keyword mpConstant blankpicture blue ditto down evenly fullcircle syn keyword mpConstant green halfcircle identity left origin penrazor syn keyword mpConstant penspeck pensquare quartercircle red right syn keyword mpConstant unitsquare up white withdots syn keyword mpVariable currentpen currentpen_path currentpicture cuttings syn keyword mpVariable defaultfont extra_beginfig extra_endfig syn match mpVariable /\<\%(laboff\|labxf\|labyf\)\>/ syn match mpVariable /\<\%(laboff\|labxf\|labyf\)\.\%(lft\|rt\|bot\|top\|ulft\|urt\|llft\|lrt\)\>/ syn keyword mpnumExp abs syn keyword mpDef rotatedabout syn keyword mpCommand bye relax syn keyword mpOnOff off on contained syn keyword mpDash dashpattern contained syn region mpDashPattern \ start="dashpattern\s*" \ end=")"he=e-1 \ contains=mfNumeric,mfLength,mpOnOff,mpDash endif if get(g:, "mfplain_mp_macros", 0) syn keyword mpDef beginchar capsule_def change_width syn keyword mpDef define_blacker_pixels define_corrected_pixels syn keyword mpDef define_good_x_pixels define_good_y_pixels syn keyword mpDef define_horizontal_corrected_pixels define_pixels syn keyword mpDef define_whole_blacker_pixels define_whole_pixels syn keyword mpDef define_whole_vertical_blacker_pixels syn keyword mpDef define_whole_vertical_pixels endchar syn keyword mpDef font_coding_scheme font_extra_space font_identifier syn keyword mpDef font_normal_shrink font_normal_space syn keyword mpDef font_normal_stretch font_quad font_size font_slant syn keyword mpDef font_x_height italcorr labelfont lowres_fix makebox syn keyword mpDef makegrid maketicks mode_def mode_setup proofrule syn keyword mpDef smode syn keyword mpVardef hround proofrulethickness vround syn keyword mpNewInternal blacker o_correction syn keyword mpVariable extra_beginchar extra_endchar extra_setup rulepen syn keyword mpDef cull cullit gfcorners imagerules nodisplays syn keyword mpDef notransforms openit proofoffset screenchars syn keyword mpDef screenrule screenstrokes showit syn keyword mpVardef grayfont slantfont titlefont syn keyword mpVariable currenttransform syn keyword mpConstant unitpixel syn keyword mpDef killtext syn match mpVardef "\" syn keyword mpVariable aspect_ratio localfont mag mode mode_name syn keyword mpVariable proofcolor syn keyword mpConstant lowres proof smoke syn keyword mpNewInternal autorounding bp_per_pixel granularity syn keyword mpNewInternal number_of_modes proofing smoothing turningcheck endif if get(g:, "other_mp_macros", 1) syn keyword mpDef boxjoin drawboxed drawboxes drawunboxed syn keyword mpNewInternal circmargin defaultdx defaultdy rbox_radius syn keyword mpVardef boxit bpath circleit fixpos fixsize generic_declare syn keyword mpVardef generic_redeclare generisize pic rboxit str_prefix syn keyword mpVardef Mformat format init_numbers roundd syn keyword mpVariable Fe_base Fe_plus syn keyword mpConstant Ten_to syn keyword mpDef Gfor Gxyscale OUT auto begingraph endgraph gdata syn keyword mpDef gdraw gdrawarrow gdrawdblarrow gfill plot syn keyword mpVardef augment autogrid frame gdotlabel glabel grid itick syn keyword mpVardef otick syn keyword mpVardef Mreadpath setcoords setrange syn keyword mpNewInternal Gmarks Gminlog Gpaths linear log syn keyword mpVariable Autoform Gemarks Glmarks Gumarks syn keyword mpConstant Gtemplate syn match mpVariable /Gmargin\.\%(low\|high\)/ syn keyword mpVardef Mabs Meform Mexp Mexp_str Mlog Mlog_Str Mlog_str syn keyword mpPrimaryDef Mdiv Mmul syn keyword mpSecondaryDef Madd Msub syn keyword mpTertiaryDef Mleq syn keyword mpNewInternal Mten Mzero syn keyword mpVardef Sabs Scvnum syn keyword mpPrimaryDef Sdiv Smul syn keyword mpSecondaryDef Sadd Ssub syn keyword mpTertiaryDef Sleq Sneq syn keyword mpVardef cspan isdigit loptok syn keyword mpVardef TEX TEXPOST TEXPRE endif if get(b:, 'mp_metafun_macros', get(g:, 'mp_metafun_macros', 0)) syn match mpTeXKeyword '\\[a-zA-Z@]\+' syn keyword mpPrimitive runscript syn keyword mpDef abck_grid_line anchor_box box_found boxfilloptions syn keyword mpDef boxgridoptions boxlineoptions draw_multi_pars syn keyword mpDef draw_multi_side draw_multi_side_path freeze_box syn keyword mpDef initialize_box initialize_box_pos syn keyword mpDef multi_side_draw_options show_multi_kind syn keyword mpDef show_multi_pars syn keyword mpVardef abck_baseline_grid abck_draw_path abck_graphic_grid syn keyword mpVariable boxdashtype boxfilloffset boxfilltype syn keyword mpVariable boxgriddirection boxgriddistance boxgridshift syn keyword mpVariable boxgridtype boxgridwidth boxlineoffset syn keyword mpVariable boxlineradius boxlinetype boxlinewidth multikind syn keyword mpConstant context_abck syn keyword mpDef anch_sidebars_draw boxfilloptions boxlineoptions syn keyword mpDef connect_positions syn keyword mpConstant context_apos syn keyword mpDef FlushSyncTasks ProcessSyncTask ResetSyncTasks syn keyword mpDef SetSyncColor SetSyncThreshold SyncTask syn keyword mpVardef PrepareSyncTasks SyncBox TheSyncColor syn keyword mpVardef TheSyncThreshold syn keyword mpVariable CurrentSyncClass NOfSyncPaths SyncColor syn keyword mpVariable SyncLeftOffset SyncPaths SyncTasks SyncThreshold syn keyword mpVariable SyncThresholdMethod SyncWidth syn keyword mpConstant context_asnc syn keyword mpDef some_double_back some_hash syn keyword mpVariable back_nillcolor syn keyword mpConstant context_back syn keyword mpVardef colordecimals rawtextext syn keyword mpPrimaryDef infont syn keyword mpConstant context_bare syn keyword mpNumExp graypart syn keyword mpType graycolor greycolor syn keyword mpConstant cyan magenta yellow syn keyword mpDef predefinedbutton some_button syn keyword mpConstant context_butt syn keyword mpDef flow_begin_chart flow_begin_sub_chart syn keyword mpDef flow_chart_draw_comment flow_chart_draw_exit syn keyword mpDef flow_chart_draw_label flow_chart_draw_text syn keyword mpDef flow_clip_chart flow_collapse_points syn keyword mpDef flow_connect_bottom_bottom flow_connect_bottom_left syn keyword mpDef flow_connect_bottom_right flow_connect_bottom_top syn keyword mpDef flow_connect_left_bottom flow_connect_left_left syn keyword mpDef flow_connect_left_right flow_connect_left_top syn keyword mpDef flow_connect_right_bottom flow_connect_right_left syn keyword mpDef flow_connect_right_right flow_connect_right_top syn keyword mpDef flow_connect_top_bottom flow_connect_top_left syn keyword mpDef flow_connect_top_right flow_connect_top_top syn keyword mpDef flow_draw_connection flow_draw_connection_point syn keyword mpDef flow_draw_midpoint flow_draw_shape syn keyword mpDef flow_draw_test_area flow_draw_test_shape syn keyword mpDef flow_draw_test_shapes flow_end_chart syn keyword mpDef flow_end_sub_chart flow_flush_connections syn keyword mpDef flow_flush_picture flow_flush_pictures syn keyword mpDef flow_flush_shape flow_flush_shapes syn keyword mpDef flow_initialize_grid flow_new_chart flow_new_shape syn keyword mpDef flow_scaled_to_grid flow_show_connection syn keyword mpDef flow_show_connections flow_show_shapes syn keyword mpDef flow_xy_offset flow_y_pos syn keyword mpVardef flow_connection_path flow_down_on_grid syn keyword mpVardef flow_down_to_grid flow_i_point flow_left_on_grid syn keyword mpVardef flow_left_to_grid flow_offset syn keyword mpVardef flow_points_initialized flow_right_on_grid syn keyword mpVardef flow_right_to_grid flow_smooth_connection syn keyword mpVardef flow_trim_points flow_trimmed flow_up_on_grid syn keyword mpVardef flow_up_to_grid flow_valid_connection syn keyword mpVardef flow_x_on_grid flow_xy_bottom flow_xy_left syn keyword mpVardef flow_xy_on_grid flow_xy_right flow_xy_top syn keyword mpVardef flow_y_on_grid syn keyword mpVariable flow_arrowtip flow_chart_background_color syn keyword mpVariable flow_chart_offset flow_comment_offset syn keyword mpVariable flow_connection_arrow_size syn keyword mpVariable flow_connection_dash_size syn keyword mpVariable flow_connection_line_color syn keyword mpVariable flow_connection_line_width syn keyword mpVariable flow_connection_smooth_size flow_connections syn keyword mpVariable flow_cpath flow_dash_pattern flow_dashline syn keyword mpVariable flow_exit_offset flow_forcevalid flow_grid_height syn keyword mpVariable flow_grid_width flow_label_offset flow_max_x syn keyword mpVariable flow_max_y flow_peepshape flow_reverse_connection syn keyword mpVariable flow_reverse_y flow_shape_action flow_shape_archive syn keyword mpVariable flow_shape_decision flow_shape_down syn keyword mpVariable flow_shape_fill_color flow_shape_height syn keyword mpVariable flow_shape_left flow_shape_line_color syn keyword mpVariable flow_shape_line_width flow_shape_loop syn keyword mpVariable flow_shape_multidocument flow_shape_node syn keyword mpVariable flow_shape_procedure flow_shape_product syn keyword mpVariable flow_shape_right flow_shape_singledocument syn keyword mpVariable flow_shape_subprocedure flow_shape_up syn keyword mpVariable flow_shape_wait flow_shape_width syn keyword mpVariable flow_show_all_points flow_show_con_points syn keyword mpVariable flow_show_mid_points flow_showcrossing flow_smooth syn keyword mpVariable flow_touchshape flow_xypoint flow_zfactor syn keyword mpConstant context_flow syn keyword mpDef chem_init_all chem_reset chem_start_structure syn keyword mpDef chem_transformed syn keyword mpVardef chem_ad chem_adj chem_align chem_arrow chem_au syn keyword mpVardef chem_b chem_bb chem_bd chem_bw chem_c chem_cc syn keyword mpVardef chem_ccd chem_cd chem_crz chem_cz chem_dash chem_db syn keyword mpVardef chem_diff chem_dir chem_do chem_dr chem_draw syn keyword mpVardef chem_drawarrow chem_eb chem_ed chem_ep chem_er syn keyword mpVardef chem_es chem_et chem_fill chem_hb chem_init_some syn keyword mpVardef chem_label chem_ldb chem_ldd chem_line chem_lr syn keyword mpVardef chem_lrb chem_lrbd chem_lrd chem_lrh chem_lrn syn keyword mpVardef chem_lrt chem_lrz chem_lsr chem_lsub chem_mark syn keyword mpVardef chem_marked chem_mid chem_mids chem_midz chem_mir syn keyword mpVardef chem_mov chem_move chem_number chem_oe chem_off syn keyword mpVardef chem_pb chem_pe chem_r chem_r_fragment chem_rb syn keyword mpVardef chem_rbd chem_rd chem_rdb chem_rdd chem_restore syn keyword mpVardef chem_rh chem_rm chem_rn chem_rot chem_rr chem_rrb syn keyword mpVardef chem_rrbd chem_rrd chem_rrh chem_rrn chem_rrt syn keyword mpVardef chem_rrz chem_rsr chem_rsub chem_rt chem_rz chem_s syn keyword mpVardef chem_save chem_sb chem_sd chem_set chem_sr chem_ss syn keyword mpVardef chem_start_component chem_stop_component syn keyword mpVardef chem_stop_structure chem_sub chem_symbol chem_tb syn keyword mpVardef chem_text chem_z chem_zln chem_zlt chem_zn chem_zrn syn keyword mpVardef chem_zrt chem_zt syn keyword mpVariable chem_mark_pair chem_stack_mirror chem_stack_origin syn keyword mpVariable chem_stack_p chem_stack_previous syn keyword mpVariable chem_stack_rotation chem_trace_boundingbox syn keyword mpVariable chem_trace_nesting chem_trace_text syn keyword mpConstant context_chem syn keyword mpDef FlushSyncTasks ProcessSyncTask syn keyword mpDef RegisterLocalTextArea RegisterPlainTextArea syn keyword mpDef RegisterRegionTextArea RegisterTextArea syn keyword mpDef ResetLocalTextArea ResetSyncTasks ResetTextAreas syn keyword mpDef SaveTextAreas SetSyncColor SetSyncThreshold syn keyword mpDef SyncTask anchor_box box_found boxfilloptions syn keyword mpDef boxgridoptions boxlineoptions collapse_multi_pars syn keyword mpDef draw_box draw_multi_pars draw_par freeze_box syn keyword mpDef initialize_area initialize_area_par initialize_box syn keyword mpDef initialize_box_pos initialize_par syn keyword mpDef prepare_multi_pars relocate_multipars save_multipar syn keyword mpDef set_par_line_height show_multi_pars show_par syn keyword mpDef simplify_multi_pars sort_multi_pars syn keyword mpVardef InsideSavedTextArea InsideSomeSavedTextArea syn keyword mpVardef InsideSomeTextArea InsideTextArea PrepareSyncTasks syn keyword mpVardef SyncBox TextAreaH TextAreaW TextAreaWH TextAreaX syn keyword mpVardef TextAreaXY TextAreaY TheSyncColor TheSyncThreshold syn keyword mpVardef baseline_grid graphic_grid multi_par_at_top syn keyword mpVariable CurrentSyncClass NOfSavedTextAreas syn keyword mpVariable NOfSavedTextColumns NOfSyncPaths NOfTextAreas syn keyword mpVariable NOfTextColumns PlainTextArea RegionTextArea syn keyword mpVariable SavedTextColumns SyncColor SyncLeftOffset SyncPaths syn keyword mpVariable SyncTasks SyncThreshold SyncThresholdMethod syn keyword mpVariable SyncWidth TextAreas TextColumns syn keyword mpVariable auto_multi_par_hsize boxdashtype boxfilloffset syn keyword mpVariable boxfilltype boxgriddirection boxgriddistance syn keyword mpVariable boxgridshift boxgridtype boxgridwidth boxlineradius syn keyword mpVariable boxlinetype boxlinewidth check_multi_par_chain syn keyword mpVariable compensate_multi_par_topskip syn keyword mpVariable enable_multi_par_fallback force_multi_par_chain syn keyword mpVariable ignore_multi_par_page last_multi_par_shift lefthang syn keyword mpVariable local_multi_par_area multi_column_first_page_hack syn keyword mpVariable multi_par_pages multiloc multilocs multipar syn keyword mpVariable multipars multiref multirefs nofmultipars syn keyword mpVariable obey_multi_par_hang obey_multi_par_more syn keyword mpVariable one_piece_multi_par par_hang_after par_hang_indent syn keyword mpVariable par_indent par_left_skip par_line_height syn keyword mpVariable par_right_skip par_start_pos par_stop_pos syn keyword mpVariable par_strut_depth par_strut_height ppos righthang syn keyword mpVariable snap_multi_par_tops somehang span_multi_column_pars syn keyword mpVariable use_multi_par_region syn keyword mpConstant context_core syn keyword LET anchor_area anchor_par draw_area syn keyword mpConstant context_cows cow syn keyword mpDef page_marks_add_color page_marks_add_lines syn keyword mpDef page_marks_add_marking page_marks_add_number syn keyword mpVardef crop_color crop_gray crop_marks_cmyk syn keyword mpVardef crop_marks_cmykrgb crop_marks_gray crop_marks_lines syn keyword mpVariable crop_colors more page syn keyword mpConstant context_crop syn keyword mpDef naturalfigure registerfigure syn keyword mpVardef figuredimensions figureheight figuresize syn keyword mpVardef figurewidth syn keyword mpConstant context_figs syn keyword mpDef DrawFoFrame syn keyword mpVardef equalpaths syn keyword mpPrimaryDef inset outset syn keyword mpVariable FoBackground FoBackgroundColor FoFrame FoLineColor syn keyword mpVariable FoLineStyle FoLineWidth FoSplit syn keyword mpConstant FoAll FoBottom FoDash FoDotted FoDouble FoGroove syn keyword mpConstant FoHidden FoInset FoLeft FoMedium FoNoColor FoNone syn keyword mpConstant FoOutset FoRidge FoRight FoSolid FoThick FoThin syn keyword mpConstant FoTop context_fobg syn keyword mpConstant context_form syn keyword mpDef constructedfunction constructedpairs syn keyword mpDef constructedpath curvedfunction curvedpairs syn keyword mpDef curvedpath function pathconnectors straightfunction syn keyword mpDef straightpairs straightpath syn keyword mpConstant context_func syn keyword mpDef Gfor OUT auto begingraph circles crosses diamonds syn keyword mpDef downtriangles endgraph gdata gdraw gdrawarrow syn keyword mpDef gdrawdblarrow gfill graph_addto syn keyword mpDef graph_addto_currentpicture graph_comma syn keyword mpDef graph_coordinate_multiplication graph_draw syn keyword mpDef graph_draw_label graph_errorbar_text graph_fill syn keyword mpDef graph_generate_exponents syn keyword mpDef graph_generate_label_position syn keyword mpDef graph_generate_numbers graph_label_location syn keyword mpDef graph_scan_mark graph_scan_marks graph_setbounds syn keyword mpDef graph_suffix graph_tick_label syn keyword mpDef graph_with_pen_and_color graph_withlist syn keyword mpDef graph_xyscale lefttriangles makefunctionpath plot syn keyword mpDef plotsymbol points rainbow righttriangles smoothpath syn keyword mpDef squares stars uptriangles witherrorbars syn keyword mpVardef addtopath augment autogrid constant_fit syn keyword mpVardef constant_function det escaped_format exp syn keyword mpVardef exponential_fit exponential_function format syn keyword mpVardef formatted frame functionpath gaussian_fit syn keyword mpVardef gaussian_function gdotlabel glabel graph_Feform syn keyword mpVardef graph_Meform graph_arrowhead_extent graph_bounds syn keyword mpVardef graph_clear_bounds syn keyword mpVardef graph_convert_user_path_to_internal graph_cspan syn keyword mpVardef graph_draw_arrowhead graph_error graph_errorbars syn keyword mpVardef graph_exp graph_factor_and_exponent_to_string syn keyword mpVardef graph_gridline_picture graph_is_null syn keyword mpVardef graph_label_convert_user_to_internal graph_loptok syn keyword mpVardef graph_match_exponents graph_mlog syn keyword mpVardef graph_modified_exponent_ypart graph_pair_adjust syn keyword mpVardef graph_picture_conversion graph_post_draw syn keyword mpVardef graph_read_line graph_readpath graph_remap syn keyword mpVardef graph_scan_path graph_select_exponent_mark syn keyword mpVardef graph_select_mark graph_set_bounds syn keyword mpVardef graph_set_default_bounds graph_shapesize syn keyword mpVardef graph_stash_label graph_tick_mark_spacing syn keyword mpVardef graph_unknown_pair_bbox grid isdigit itick syn keyword mpVardef linear_fit linear_function ln logten lorentzian_fit syn keyword mpVardef lorentzian_function otick polynomial_fit syn keyword mpVardef polynomial_function power_law_fit syn keyword mpVardef power_law_function powten setcoords setrange syn keyword mpVardef sortpath strfmt tick varfmt syn keyword mpNewInternal Mzero doubleinfinity graph_log_minimum syn keyword mpNewInternal graph_minimum_number_of_marks largestmantissa syn keyword mpNewInternal linear lntwo log mlogten singleinfinity syn keyword mpVariable Autoform determinant fit_chi_squared syn keyword mpVariable graph_errorbar_picture graph_exp_marks syn keyword mpVariable graph_frame_pair_a graph_frame_pair_b syn keyword mpVariable graph_lin_marks graph_log_marks graph_modified_bias syn keyword mpVariable graph_modified_higher graph_modified_lower syn keyword mpVariable graph_shape r_s resistance_color resistance_name syn keyword mpConstant context_grap syn keyword mpDef hlingrid hloggrid vlingrid vloggrid syn keyword mpVardef hlinlabel hlintext hlogtext linlin linlinpath syn keyword mpVardef linlog linlogpath loglin loglinpath loglog syn keyword mpVardef loglogpath processpath vlinlabel vlintext vlogtext syn keyword mpVariable fmt_initialize fmt_pictures fmt_precision syn keyword mpVariable fmt_separator fmt_zerocheck grid_eps syn keyword mpConstant context_grid syn keyword mpDef beginfig begingraphictextfig data_mpo_file syn keyword mpDef data_mpy_file doloadfigure draw endfig syn keyword mpDef endgraphictextfig fill fixedplace graphictext syn keyword mpDef loadfigure new_graphictext normalwithshade number syn keyword mpDef old_graphictext outlinefill protectgraphicmacros syn keyword mpDef resetfig reversefill withdrawcolor withfillcolor syn keyword mpDef withshade syn keyword mpVariable currentgraphictext figureshift syn keyword mpConstant context_grph syn keyword mpVardef bcomponent ccomponent gcomponent mcomponent syn keyword mpVardef rcomponent somecolor ycomponent syn keyword mpDef luacall message syn keyword mpVardef MP lua lualist syn keyword mpConstant context_luas syn keyword mpDef autoalign bitmapimage circular_shade cmyk comment syn keyword mpDef defineshade eofill eofillup externalfigure figure syn keyword mpDef fillup label linear_shade multitonecolor namedcolor syn keyword mpDef nofill onlayer passarrayvariable passvariable syn keyword mpDef plain_label register resolvedcolor scantokens syn keyword mpDef set_circular_vector set_linear_vector shaded syn keyword mpDef spotcolor startpassingvariable stoppassingvariable syn keyword mpDef thelabel transparent[] usemetafunlabels syn keyword mpDef useplainlabels withcircularshade withlinearshade syn keyword mpDef withmask withproperties withshadecenter syn keyword mpDef withshadecolors withshadedirection withshadedomain syn keyword mpDef withshadefactor withshadefraction withshadeorigin syn keyword mpDef withshaderadius withshadestep withshadetransform syn keyword mpDef withshadevector withtransparency syn keyword mpVardef anchored checkbounds checkedbounds syn keyword mpVardef define_circular_shade define_linear_shade dotlabel syn keyword mpVardef escaped_format fmttext fontsize format formatted syn keyword mpVardef installlabel onetimefmttext onetimetextext syn keyword mpVardef outlinetext plain_thelabel properties rawfmttext syn keyword mpVardef rawtexbox rawtextext rule strfmt strut texbox syn keyword mpVardef textext thefmttext thelabel thetexbox thetextext syn keyword mpVardef tostring transparency_alternative_to_number syn keyword mpVardef validtexbox varfmt verbatim syn keyword mpPrimaryDef asgroup infont normalinfont shadedinto syn keyword mpPrimaryDef shownshadecenter shownshadedirection syn keyword mpPrimaryDef shownshadeorigin shownshadevector withshade syn keyword mpPrimaryDef withshademethod syn keyword mpNewInternal colorburntransparent colordodgetransparent syn keyword mpNewInternal colortransparent darkentransparent syn keyword mpNewInternal differencetransparent exclusiontransparent syn keyword mpNewInternal hardlighttransparent huetransparent syn keyword mpNewInternal lightentransparent luminositytransparent syn keyword mpNewInternal multiplytransparent normaltransparent syn keyword mpNewInternal overlaytransparent saturationtransparent syn keyword mpNewInternal screentransparent shadefactor softlighttransparent syn keyword mpNewInternal textextoffset syn keyword mpType property transparency syn keyword mpVariable currentoutlinetext shadeddown shadedleft syn keyword mpVariable shadedright shadedup shadeoffset trace_shades syn keyword mpConstant context_mlib syn keyword mpDef BoundCoverAreas BoundPageAreas Enlarged FakeRule syn keyword mpDef FakeWord LoadPageState OverlayBox RuleColor syn keyword mpDef SetAreaVariables SetPageArea SetPageBackPage syn keyword mpDef SetPageCoverPage SetPageField SetPageFrontPage syn keyword mpDef SetPageHsize SetPageHstep SetPageLocation syn keyword mpDef SetPagePage SetPageSpine SetPageVariables syn keyword mpDef SetPageVsize SetPageVstep StartCover StartPage syn keyword mpDef StopCover StopPage SwapPageState innerenlarged syn keyword mpDef llEnlarged lrEnlarged outerenlarged ulEnlarged syn keyword mpDef urEnlarged syn keyword mpVardef BackPageHeight BackPageWidth BackSpace BaseLineSkip syn keyword mpVardef BodyFontSize BottomDistance BottomHeight syn keyword mpVardef BottomSpace CoverHeight CoverWidth CurrentColumn syn keyword mpVardef CurrentHeight CurrentWidth CutSpace EmWidth syn keyword mpVardef ExHeight FooterDistance FooterHeight syn keyword mpVardef FrontPageHeight FrontPageWidth HSize HeaderDistance syn keyword mpVardef HeaderHeight InPageBody InnerEdgeDistance syn keyword mpVardef InnerEdgeWidth InnerMarginDistance InnerMarginWidth syn keyword mpVardef InnerSpaceWidth LastPageNumber LayoutColumnDistance syn keyword mpVardef LayoutColumnWidth LayoutColumns LeftEdgeDistance syn keyword mpVardef LeftEdgeWidth LeftMarginDistance LeftMarginWidth syn keyword mpVardef LineHeight MakeupHeight MakeupWidth NOfColumns syn keyword mpVardef NOfPages OnOddPage OnRightPage OuterEdgeDistance syn keyword mpVardef OuterEdgeWidth OuterMarginDistance OuterMarginWidth syn keyword mpVardef OuterSpaceWidth OverlayDepth OverlayHeight syn keyword mpVardef OverlayLineWidth OverlayOffset OverlayWidth syn keyword mpVardef PageDepth PageFraction PageNumber PageOffset syn keyword mpVardef PaperBleed PaperHeight PaperWidth PrintPaperHeight syn keyword mpVardef PrintPaperWidth RealPageNumber RightEdgeDistance syn keyword mpVardef RightEdgeWidth RightMarginDistance RightMarginWidth syn keyword mpVardef SpineHeight SpineWidth StrutDepth StrutHeight syn keyword mpVardef TextHeight TextWidth TopDistance TopHeight TopSkip syn keyword mpVardef TopSpace VSize defaultcolormodel syn keyword mpVariable Area BackPage CoverPage CurrentLayout Field syn keyword mpVariable FrontPage HorPos Hsize Hstep Location Page syn keyword mpVariable PageStateAvailable RuleDepth RuleDirection syn keyword mpVariable RuleFactor RuleH RuleHeight RuleOffset RuleOption syn keyword mpVariable RuleThickness RuleV RuleWidth Spine VerPos Vsize syn keyword mpVariable Vstep syn keyword mpConstant context_page syn keyword mpDef drawline drawshape some_shape syn keyword mpDef start_predefined_shape_definition syn keyword mpDef stop_predefined_shape_definition syn keyword mpVardef drawpredefinedline drawpredefinedshape syn keyword mpVardef some_shape_path syn keyword mpVariable predefined_shapes predefined_shapes_xradius syn keyword mpVariable predefined_shapes_xxradius syn keyword mpVariable predefined_shapes_yradius syn keyword mpVariable predefined_shapes_yyradius syn keyword mpConstant context_shap syn keyword mpDef initialize_step_variables midbottomboundary syn keyword mpDef midtopboundary step_begin_cell step_begin_chart syn keyword mpDef step_cell_ali step_cell_bot step_cell_top syn keyword mpDef step_cells step_end_cell step_end_chart syn keyword mpDef step_text_bot step_text_mid step_text_top syn keyword mpDef step_texts syn keyword mpVariable cell_distance_x cell_distance_y cell_fill_color syn keyword mpVariable cell_line_color cell_line_width cell_offset syn keyword mpVariable chart_align chart_category chart_vertical syn keyword mpVariable line_distance line_height line_line_color syn keyword mpVariable line_line_width line_offset nofcells syn keyword mpVariable text_distance_set text_fill_color text_line_color syn keyword mpVariable text_line_width text_offset syn keyword mpConstant context_cell syn keyword mpDef finishglyph prepareglyph syn keyword mpConstant lefttriangle midbar onebar righttriangle sidebar syn keyword mpConstant sublefttriangle subrighttriangle twobar syn keyword mpDef build_parshape syn keyword mpVardef found_point syn keyword mpVariable trace_parshape syn keyword mpConstant context_text syn keyword mpCommand dump syn keyword mpDef addbackground b_color beginglyph break centerarrow syn keyword mpDef clearxy condition data_mpd_file detaileddraw syn keyword mpDef detailpaths dowithpath draw drawboundary syn keyword mpDef drawboundingbox drawcontrollines drawcontrolpoints syn keyword mpDef drawfill draworigin drawpath drawpathonly syn keyword mpDef drawpathwithpoints drawpoint drawpointlabels syn keyword mpDef drawpoints drawticks drawwholepath drawxticks syn keyword mpDef drawyticks endglyph fill finishsavingdata g_color syn keyword mpDef inner_boundingbox job_name leftarrow loadmodule syn keyword mpDef midarrowhead naturalizepaths newboolean newcolor syn keyword mpDef newnumeric newpair newpath newpicture newstring syn keyword mpDef newtransform normalcolors normaldraw normalfill syn keyword mpDef normalwithcolor outer_boundingbox pop_boundingbox syn keyword mpDef popboundingbox popcurrentpicture push_boundingbox syn keyword mpDef pushboundingbox pushcurrentpicture r_color readfile syn keyword mpDef recolor redraw refill register_dirty_chars syn keyword mpDef remapcolor remapcolors remappedcolor reprocess syn keyword mpDef resetarrows resetcolormap resetdrawoptions syn keyword mpDef resolvedcolor restroke retext rightarrow savedata syn keyword mpDef saveoptions scale_currentpicture set_ahlength syn keyword mpDef set_grid showgrid startplaincompatibility syn keyword mpDef startsavingdata stopplaincompatibility syn keyword mpDef stopsavingdata stripe_path_a stripe_path_n undashed syn keyword mpDef undrawfill untext visualizeddraw visualizedfill syn keyword mpDef visualizepaths withcolor withgray syn keyword mpDef xscale_currentpicture xshifted syn keyword mpDef xyscale_currentpicture yscale_currentpicture syn keyword mpDef yshifted syn keyword mpVardef acos acosh anglebetween area arrowhead syn keyword mpVardef arrowheadonpath arrowpath asciistring asin asinh syn keyword mpVardef atan basiccolors bbheight bbwidth bcomponent syn keyword mpVardef blackcolor bottomboundary boundingbox c_phantom syn keyword mpVardef ccomponent center cleanstring colorcircle syn keyword mpVardef colordecimals colordecimalslist colorlike colorpart syn keyword mpVardef colortype complementary complemented copylist cos syn keyword mpVardef cosh cot cotd curved ddddecimal dddecimal ddecimal syn keyword mpVardef decorated drawarrowpath epsed exp freedotlabel syn keyword mpVardef freelabel gcomponent getunstringed grayed greyed syn keyword mpVardef hsvtorgb infinite innerboundingbox interpolated inv syn keyword mpVardef invcos inverted invsin invtan laddered leftboundary syn keyword mpVardef leftpath leftrightpath listsize listtocurves syn keyword mpVardef listtolines ln log mcomponent new_on_grid syn keyword mpVardef outerboundingbox paired pen_size penpoint phantom syn keyword mpVardef pointarrow pow punked rangepath rcomponent syn keyword mpVardef redecorated repathed rightboundary rightpath syn keyword mpVardef rotation roundedsquare set_inner_boundingbox syn keyword mpVardef set_outer_boundingbox setunstringed shapedlist syn keyword mpVardef simplified sin sinh sortlist sqr straightpath tan syn keyword mpVardef tand tanh tensecircle thefreelabel topboundary syn keyword mpVardef tripled undecorated unitvector unspiked unstringed syn keyword mpVardef whitecolor ycomponent syn keyword mpPrimaryDef along blownup bottomenlarged cornered crossed syn keyword mpPrimaryDef enlarged enlonged leftenlarged llenlarged llmoved syn keyword mpPrimaryDef lrenlarged lrmoved on paralleled randomized syn keyword mpPrimaryDef randomizedcontrols randomshifted rightenlarged syn keyword mpPrimaryDef shortened sized smoothed snapped softened squeezed syn keyword mpPrimaryDef stretched superellipsed topenlarged ulenlarged syn keyword mpPrimaryDef ulmoved uncolored urenlarged urmoved xsized syn keyword mpPrimaryDef xstretched xyscaled xysized ysized ystretched zmod syn keyword mpSecondaryDef anglestriped intersection_point numberstriped syn keyword mpSecondaryDef peepholed syn keyword mpTertiaryDef cutends syn keyword mpNewInternal ahdimple ahvariant anglelength anglemethod syn keyword mpNewInternal angleoffset charscale cmykcolormodel graycolormodel syn keyword mpNewInternal greycolormodel maxdimensions metapostversion syn keyword mpNewInternal nocolormodel rgbcolormodel striped_normal_inner syn keyword mpNewInternal striped_normal_outer striped_reverse_inner syn keyword mpNewInternal striped_reverse_outer syn keyword mpType grayscale greyscale quadruplet triplet syn keyword mpVariable ahfactor collapse_data color_map drawoptionsfactor syn keyword mpVariable freedotlabelsize freelabeloffset grid grid_full syn keyword mpVariable grid_h grid_left grid_nx grid_ny grid_w grid_x syn keyword mpVariable grid_y intersection_found originlength syn keyword mpVariable plain_compatibility_data pointlabelfont syn keyword mpVariable pointlabelscale refillbackground savingdata syn keyword mpVariable savingdatadone swappointlabels ticklength tickstep syn keyword mpConstant CRLF DQUOTE PERCENT SPACE bcircle context_tool crlf syn keyword mpConstant darkblue darkcyan darkgray darkgreen darkmagenta syn keyword mpConstant darkred darkyellow downtriangle dquote freesquare syn keyword mpConstant fulldiamond fullsquare fulltriangle lcircle syn keyword mpConstant lefttriangle lightgray llcircle lltriangle lrcircle syn keyword mpConstant lrtriangle mpversion nocolor noline oddly syn keyword mpConstant originpath percent rcircle righttriangle space syn keyword mpConstant tcircle triangle ulcircle ultriangle unitcircle syn keyword mpConstant unitdiamond unittriangle uptriangle urcircle syn keyword mpConstant urtriangle endif " MetaFun macros hi def link mpTeXdelim mpPrimitive hi def link mpBoolExp mfBoolExp hi def link mpNumExp mfNumExp hi def link mpPairExp mfPairExp hi def link mpPathExp mfPathExp hi def link mpPenExp mfPenExp hi def link mpPicExp mfPicExp hi def link mpStringExp mfStringExp hi def link mpInternal mfInternal hi def link mpCommand mfCommand hi def link mpType mfType hi def link mpPrimitive mfPrimitive hi def link mpDef mfDef hi def link mpVardef mpDef hi def link mpPrimaryDef mpDef hi def link mpSecondaryDef mpDef hi def link mpTertiaryDef mpDef hi def link mpNewInternal mpInternal hi def link mpVariable mfVariable hi def link mpConstant mfConstant hi def link mpOnOff mpPrimitive hi def link mpDash mpPrimitive hi def link mpTeXKeyword Identifier let b:current_syntax = "mp" let &cpo = s:cpo_sav unlet! s:cpo_sav if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn keyword mplayerconfTodo contained TODO FIXME XXX NOTE syn region mplayerconfComment display oneline start='#' end='$' \ contains=mplayerconfTodo,@Spell syn keyword mplayerconfPreProc include syn keyword mplayerconfBoolean yes no true false syn match mplayerconfNumber '\<\d\+\>' syn keyword mplayerconfOption hardframedrop nomouseinput bandwidth dumpstream \ rtsp-stream-over-tcp tv overlapsub \ sub-bg-alpha subfont-outline unicode format \ vo edl cookies fps zrfd af-adv nosound \ audio-density passlogfile vobsuboutindex autoq \ autosync benchmark colorkey nocolorkey edlout \ enqueue fixed-vo framedrop h identify input \ lircconf list-options loop menu menu-cfg \ menu-root nojoystick nolirc nortc playlist \ quiet really-quiet shuffle skin slave \ softsleep speed sstep use-stdin aid alang \ audio-demuxer audiofile audiofile-cache \ cdrom-device cache cdda channels chapter \ cookies-file demuxer dumpaudio dumpfile \ dumpvideo dvbin dvd-device dvdangle forceidx \ frames hr-mp3-seek idx ipv4-only-proxy \ loadidx mc mf ni nobps noextbased \ passwd prefer-ipv4 prefer-ipv6 rawaudio \ rawvideo saveidx sb srate ss tskeepbroken \ tsprog tsprobe user user-agent vid vivo \ dumpjacosub dumpmicrodvdsub dumpmpsub dumpsami \ dumpsrtsub dumpsub ffactor flip-hebrew font \ forcedsubsonly fribidi-charset ifo noautosub \ osdlevel sid slang spuaa spualign spugauss \ sub sub-bg-color sub-demuxer sub-fuzziness \ sub-no-text-pp subalign subcc subcp subdelay \ subfile subfont-autoscale subfont-blur \ subfont-encoding subfont-osd-scale \ subfont-text-scale subfps subpos subwidth \ utf8 vobsub vobsubid abs ao aofile aop delay \ mixer nowaveheader aa bpp brightness contrast \ dfbopts display double dr dxr2 fb fbmode \ fbmodeconfig forcexv fs fsmode-dontuse fstype \ geometry guiwid hue jpeg monitor-dotclock \ monitor-hfreq monitor-vfreq monitoraspect \ nograbpointer nokeepaspect noxv ontop panscan \ rootwin saturation screenw stop-xscreensaver \ vm vsync wid xineramascreen z zrbw zrcrop \ zrdev zrhelp zrnorm zrquality zrvdec zrxdoff \ ac af afm aspect flip lavdopts noaspect \ noslices novideo oldpp pp pphelp ssf stereo \ sws vc vfm x xvidopts xy y zoom vf vop \ audio-delay audio-preload endpos ffourcc \ include info noautoexpand noskip o oac of \ ofps ovc skiplimit v vobsubout vobsuboutid \ lameopts lavcopts nuvopts xvidencopts a52drc \ adapter af-add af-clr af-del af-pre \ allow-dangerous-playlist-parsing ass \ ass-border-color ass-bottom-margin ass-color \ ass-font-scale ass-force-style ass-hinting \ ass-line-spacing ass-styles ass-top-margin \ ass-use-margins ausid bluray-angle \ bluray-device border border-pos-x border-pos-y \ cache-min cache-seek-min capture codecpath \ codecs-file correct-pts crash-debug \ doubleclick-time dvd-speed edl-backward-delay \ edl-start-pts embeddedfonts fafmttag \ field-dominance fontconfig force-avi-aspect \ force-key-frames frameno-file fullscreen gamma \ gui gui-include gui-wid heartbeat-cmd \ heartbeat-interval hr-edl-seek \ http-header-fields idle ignore-start \ key-fifo-size list-properties menu-chroot \ menu-keepdir menu-startup mixer-channel \ monitor-orientation monitorpixelaspect \ mouse-movements msgcharset msgcolor msglevel \ msgmodule name noar nocache noconfig \ noconsolecontrols nocorrect-pts nodouble \ noedl-start-pts noencodedups \ noflip-hebrew-commas nogui noidx noodml \ nostop-xscreensaver nosub noterm-osd \ osd-duration osd-fractions panscanrange \ pausing playing-msg priority profile \ progbar-align psprobe pvr radio referrer \ refreshrate reuse-socket rtc rtc-device \ rtsp-destination rtsp-port \ rtsp-stream-over-http screenh show-profile \ softvol softvol-max sub-paths subfont \ term-osd-esc title tvscan udp-ip udp-master \ udp-port udp-seek-threshold udp-slave \ unrarexec use-filedir-conf use-filename-title \ vf-add vf-clr vf-del vf-pre volstep volume \ zrhdec zrydoff syn region mplayerconfString display oneline start=+"+ end=+"+ syn region mplayerconfString display oneline start=+'+ end=+'+ syn region mplayerconfProfile display oneline start='^\s*\[' end='\]' hi def link mplayerconfTodo Todo hi def link mplayerconfComment Comment hi def link mplayerconfPreProc PreProc hi def link mplayerconfBoolean Boolean hi def link mplayerconfNumber Number hi def link mplayerconfOption Keyword hi def link mplayerconfString String hi def link mplayerconfProfile Special let b:current_syntax = "mplayerconf" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match syn match mrxvtrcError contained '\v\S+' syn match mrxvtrcComment contains=@Spell '^\s*[!#].*$' syn match mrxvtrcComment '\v^\s*[#!]\s*\w+[.*]\w+.*:.*' syn match mrxvtrcClass '\v^\s*\w+[.*]' \ nextgroup=mrxvtrcOptions,mrxvtrcProfile,@mrxvtrcPOpts,mrxvtrcError syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError \ highlightTabOnBell syncTabTitle hideTabbar \ autohideTabbar bottomTabbar hideButtons \ syncTabIcon veryBoldFont maximized \ fullscreen reverseVideo loginShell \ jumpScroll scrollBar scrollbarRight \ scrollbarFloating scrollTtyOutputInhibit \ scrollTtyKeypress transparentForce \ transparentScrollbar transparentMenubar \ transparentTabbar tabUsePixmap utmpInhibit \ visualBell mapAlert meta8 \ mouseWheelScrollPage multibyte_cursor \ tripleclickwords showMenu xft xftNomFont \ xftSlowOutput xftAntialias xftHinting \ xftAutoHint xftGlobalAdvance cmdAllTabs \ protectSecondary thai borderLess \ overrideRedirect broadcast smartResize \ pointerBlank cursorBlink noSysConfig \ disableMacros linuxHomeEndKey sessionMgt \ boldColors smoothResize useFifo veryBright syn match mrxvtrcOptions contained nextgroup=mrxvtrcBColon,mrxvtrcError \ '\v' syn match mrxvtrcBColon contained skipwhite \ nextgroup=mrxvtrcBoolVal,mrxvtrcError ':' syn case ignore syn keyword mrxvtrcBoolVal contained skipwhite nextgroup=mrxvtrcError \ 0 1 yes no on off true false syn case match syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError \ ufBackground textShadow tabForeground \ itabForeground tabBackground itabBackground \ scrollColor troughColor highlightColor \ cursorColor cursorColor2 pointerColor \ borderColor tintColor syn match mrxvtrcOptions contained nextgroup=mrxvtrcCColon,mrxvtrcError \ '\v' syn match mrxvtrcCColon contained skipwhite \ nextgroup=mrxvtrcColorVal ':' syn match mrxvtrcColorVal contained skipwhite nextgroup=mrxvtrcError \ '\v#[0-9a-fA-F]{6}' syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcNColon,mrxvtrcError \ maxTabWidth minVisibleTabs \ scrollbarThickness xftmSize xftSize desktop \ externalBorder internalBorder lineSpace \ pointerBlankDelay cursorBlinkInterval \ shading backgroundFade bgRefreshInterval \ fading opacity opacityDegree xftPSize syn match mrxvtrcNColon contained skipwhite \ nextgroup=mrxvtrcNumVal,mrxvtrcError ':' syn match mrxvtrcNumVal contained skipwhite nextgroup=mrxvtrcError \ '\v[+-]?<(0[0-7]+|\d+|0x[0-9a-f]+)>' syn keyword mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError \ tabTitle termName title clientName iconName \ bellCommand backspaceKey deleteKey \ printPipe cutChars answerbackString \ smClientID geometry path boldFont xftFont \ xftmFont xftPFont inputMethod \ greektoggle_key menu menubarPixmap \ scrollbarPixmap tabbarPixmap appIcon \ multichar_encoding initProfileList syn match mrxvtrcOptions contained nextgroup=mrxvtrcSColon,mrxvtrcError \ '\v' syn match mrxvtrcSColon contained skipwhite nextgroup=mrxvtrcStrVal ':' syn match mrxvtrcStrVal contained '\v\S.*' syn cluster mrxvtrcPOpts contains=mrxvtrcPSOpts,mrxvtrcPCOpts,mrxvtrcPNOpts syn match mrxvtrcProfile contained nextgroup=@mrxvtrcPOpts,mrxvtrcError \ '\vprofile\d+\.' syn keyword mrxvtrcPSOpts contained nextgroup=mrxvtrcSColon,mrxvtrcError \ tabTitle command holdExitText holdExitTitle \ Pixmap workingDirectory titleFormat \ winTitleFormat syn keyword mrxvtrcPCOpts contained nextgroup=mrxvtrcCColon,mrxvtrcError \ background foreground syn keyword mrxvtrcPNOpts contained nextgroup=mrxvtrcNColon,mrxvtrcError \ holdExit saveLines syn match mrxvtrcOptions contained skipwhite \ nextgroup=mrxvtrcSBstyle,mrxvtrcError \ '\v' hi def link mrxvtrcError Error hi def link mrxvtrcComment Comment hi def link mrxvtrcClass Statement hi def link mrxvtrcOptions mrxvtrcClass hi def link mrxvtrcBColon mrxvtrcClass hi def link mrxvtrcCColon mrxvtrcClass hi def link mrxvtrcNColon mrxvtrcClass hi def link mrxvtrcSColon mrxvtrcClass hi def link mrxvtrcProfile mrxvtrcClass hi def link mrxvtrcPSOpts mrxvtrcClass hi def link mrxvtrcPCOpts mrxvtrcClass hi def link mrxvtrcPNOpts mrxvtrcClass hi def link mrxvtrcBoolVal Boolean hi def link mrxvtrcStrVal String hi def link mrxvtrcColorVal Constant hi def link mrxvtrcNumVal Number hi def link mrxvtrcSBstyle mrxvtrcStrVal hi def link mrxvtrcSBalign mrxvtrcStrVal hi def link mrxvtrcTSmode mrxvtrcStrVal hi def link mrxvtrcGrkKbd mrxvtrcStrVal hi def link mrxvtrcXftWt mrxvtrcStrVal hi def link mrxvtrcXftSl mrxvtrcStrVal hi def link mrxvtrcXftWd mrxvtrcStrVal hi def link mrxvtrcXftHt mrxvtrcStrVal hi def link mrxvtrcPedit mrxvtrcStrVal hi def link mrxvtrcMod mrxvtrcStrVal hi def link mrxvtrcSelSty mrxvtrcStrVal hi def link mrxvtrcMacro Identifier hi def link mrxvtrcKey mrxvtrcClass hi def link mrxvtrcTitle mrxvtrcStrVal hi def link mrxvtrcShell Special hi def link mrxvtrcCmd PreProc hi def link mrxvtrcSubwin mrxvtrcStrVal let b:current_syntax = "mrxvtrc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match msidlId "[a-zA-Z][a-zA-Z0-9_]*" syn match msidlUUID "{\?[[:xdigit:]]\{8}-\([[:xdigit:]]\{4}-\)\{3}[[:xdigit:]]\{12}}\?" syn region msidlString start=/"/ skip=/\\\(\\\\\)*"/ end=/"/ syn match msidlLiteral "\d\+\(\.\d*\)\=" syn match msidlLiteral "\.\d\+" syn match msidlSpecial contained "[]\[{}:]" syn keyword msidlTodo contained TODO FIXME XXX syn region msidlComment start="/\*" end="\*/" contains=msidlTodo syn match msidlComment "//.*" contains=msidlTodo syn match msidlCommentError "\*/" syn region msidlIncluded contained start=+"+ skip=+\\\(\\\\\)*"+ end=+"+ syn match msidlIncluded contained "<[^>]*>" syn match msidlInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=msidlIncluded,msidlString syn region msidlPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=msidlComment,msidlCommentError syn region msidlDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=msidlLiteral, msidlString syn keyword msidlAttribute contained in out propget propput propputref retval syn keyword msidlAttribute contained aggregatable appobject binadable coclass control custom default defaultbind defaultcollelem defaultvalue defaultvtable dispinterface displaybind dual entry helpcontext helpfile helpstring helpstringdll hidden id immediatebind lcid library licensed nonbrowsable noncreatable nonextensible oleautomation optional object public readonly requestedit restricted source string uidefault usesgetlasterror vararg version syn match msidlAttribute /uuid(.*)/he=s+4 contains=msidlUUID syn match msidlAttribute /helpstring(.*)/he=s+10 contains=msidlString syn region msidlAttributes start="\[" end="]" keepend contains=msidlSpecial,msidlString,msidlAttribute,msidlComment,msidlCommentError syn keyword msidlEnum enum syn keyword msidlImport import importlib syn keyword msidlStruct interface library coclass syn keyword msidlTypedef typedef syn keyword msidlStandardType byte char double float hyper int long short void wchar_t syn keyword msidlStandardType BOOL BSTR HRESULT VARIANT VARIANT_BOOL syn region msidlSafeArray start="SAFEARRAY(" end=")" contains=msidlStandardType syn sync lines=50 hi def link msidlInclude Include hi def link msidlPreProc PreProc hi def link msidlPreCondit PreCondit hi def link msidlDefine Macro hi def link msidlIncluded String hi def link msidlString String hi def link msidlComment Comment hi def link msidlTodo Todo hi def link msidlSpecial SpecialChar hi def link msidlLiteral Number hi def link msidlUUID Number hi def link msidlImport Include hi def link msidlEnum StorageClass hi def link msidlStruct Structure hi def link msidlTypedef Typedef hi def link msidlAttribute StorageClass hi def link msidlStandardType Type hi def link msidlSafeArray Type let b:current_syntax = "msidl" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword msmessagesIdentifier MessageIdTypedef syn keyword msmessagesIdentifier SeverityNames syn keyword msmessagesIdentifier FacilityNames syn keyword msmessagesIdentifier LanguageNames syn keyword msmessagesIdentifier OutputBase syn keyword msmessagesIdentifier MessageId syn keyword msmessagesIdentifier Severity syn keyword msmessagesIdentifier Facility syn keyword msmessagesIdentifier OutputBase syn match msmessagesIdentifier /\/ nextgroup=msmessagesIdentEq skipwhite syn match msmessagesIdentEq transparent /=/ nextgroup=msmessagesIdentDef skipwhite contained syn match msmessagesIdentDef display /\w\+/ contained syn case match syn region msmessagesSet start="(" end=")" transparent fold contains=msmessagesName keepend syn match msmessagesName /\w\+/ nextgroup=msmessagesSetEquals skipwhite contained syn match msmessagesSetEquals /=/ display transparent nextgroup=msmessagesNumVal skipwhite contained syn match msmessagesNumVal display transparent "\<\d\|\.\d" contains=msmessagesNumber,msmessagesFloat,msmessagesOctalError,msmessagesOctal nextgroup=msmessagesValSep syn match msmessagesValSep /:/ display nextgroup=msmessagesNameDef contained syn match msmessagesNameDef /\w\+/ display contained syn include @msmessagesC syntax/c.vim unlet b:current_syntax syn region msmessagesCComment matchgroup=msmessagesComment start=/;/ end=/$/ contains=@msmessagesC keepend syn case ignore syn region msmessagesLangEntry start=/\\s*=\s*\S\+\s*$/hs=e+1 end=/^\./ contains=msmessagesFormat,msmessagesLangEntryEnd,msmessagesLanguage keepend syn match msmessagesLanguage /\" syn match msmessagesNumber display contained "\<0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" syn match msmessagesOctal display contained "\<0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=msmessagesOctalZero syn match msmessagesOctalZero display contained "\<0" syn match msmessagesOctalError display contained "\<0\o*[89]\d*" syn match msmessagesFloat display contained "\d\+f" syn match msmessagesFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match msmessagesFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match msmessagesFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" syn match msmessagesFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" syn match msmessagesFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" syn case match syn keyword msmessagesType int long short char syn keyword msmessagesType signed unsigned syn keyword msmessagesType size_t ssize_t sig_atomic_t syn keyword msmessagesType int8_t int16_t int32_t int64_t syn keyword msmessagesType uint8_t uint16_t uint32_t uint64_t syn keyword msmessagesType int_least8_t int_least16_t int_least32_t int_least64_t syn keyword msmessagesType uint_least8_t uint_least16_t uint_least32_t uint_least64_t syn keyword msmessagesType int_fast8_t int_fast16_t int_fast32_t int_fast64_t syn keyword msmessagesType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t syn keyword msmessagesType intptr_t uintptr_t syn keyword msmessagesType intmax_t uintmax_t syn keyword msmessagesType BYTE CHAR SHORT SIZE_T SSIZE_T TBYTE TCHAR UCHAR USHORT syn keyword msmessagesType DWORD DWORDLONG DWORD32 DWORD64 syn keyword msmessagesType INT INT32 INT64 UINT UINT32 UINT64 syn keyword msmessagesType LONG LONGLONG LONG32 LONG64 syn keyword msmessagesType ULONG ULONGLONG ULONG32 ULONG64 syn sync match msmessagesLangSync grouphere msmessagesLangEntry "\:p:h/lite.vim syn region msqlRegion matchgroup=Delimiter start="D]" end=">" contains=@msqlLite,msql.* if exists("msql_minlines") exec "syn sync minlines=" . msql_minlines else syn sync minlines=100 endif hi def link msqlComment Comment hi def link msqlString String hi def link msqlNumber Number hi def link msqlFloat Float hi def link msqlIdentifier Identifier hi def link msqlGlobalIdentifier Identifier hi def link msqlIntVar Identifier hi def link msqlEnvVar Identifier hi def link msqlFunctions Function hi def link msqlRepeat Repeat hi def link msqlConditional Conditional hi def link msqlStatement Statement hi def link msqlType Type hi def link msqlInclude Include hi def link msqlDefine Define hi def link msqlSpecialChar SpecialChar hi def link msqlParentError Error hi def link msqlTodo Todo hi def link msqlOperator Operator hi def link msqlRelation Operator let b:current_syntax = "msql" if main_syntax == 'msql' unlet main_syntax endif if exists("b:current_syntax") finish endif if !exists("mupad_cmdextversion") let mupad_cmdextversion = 2 endif syn case match syn match mupadComment "//\p*$" syn region mupadComment start="/\*" end="\*/" syn region mupadString start="\"" skip=/\\"/ end="\"" syn match mupadOperator "(\|)\|:=\|::\|:\|;" syn keyword mupadOperator and or not xor syn match mupadOperator "==>\|\<=\>" syn keyword mupadSpecial FILEPATH NOTEBOOKFILE NOTEBOOKPATH syn keyword mupadSpecial DIGITS HISTORY LEVEL syn keyword mupadSpecial MAXLEVEL MAXDEPTH ORDER syn keyword mupadSpecial TEXTWIDTH syn keyword mupadSpecial PRETTYPRINT syn keyword mupadSpecial LIBPATH PACKAGEPATH syn keyword mupadSpecial READPATH TESTPATH WRITEPATH syn keyword mupadDefine FAIL NIL syn keyword mupadDefine TRUE FALSE UNKNOWN syn keyword mupadDefine complexInfinity infinity syn keyword mupadDefine C_ CATALAN E EULER I PI Q_ R_ syn keyword mupadDefine RD_INF RD_NINF undefined unit universe Z_ syn keyword mupadDefine Unquoted NoNL KeepOrder Typeset syn keyword mupadStatement domain begin end_domain end syn keyword mupadIdentifier inherits category axiom info doc interface syn keyword mupadStatement proc begin end_proc syn keyword mupadUnderlined name local option save syn keyword mupadConditional if then elif else end_if syn keyword mupadConditional case of do break end_case syn keyword mupadRepeat for do next break end_for syn keyword mupadRepeat while do next break end_while syn keyword mupadRepeat repeat next break until end_repeat syn keyword mupadType detools import linalg numeric numlib plot polylib syn match mupadType '\' syn keyword mupadFunction phi invphi mersenne nextprime numprimedivisors syn keyword mupadFunction pollard prevprime primedivisors syn keyword mupadFunction array _index syn keyword mupadFunction float contains syn keyword mupadFunction _exprseq _invert _lazy_and _lazy_or _negate syn keyword mupadFunction _stmtseq _invert intersect minus union syn keyword mupadFunction Ci D Ei O Re Im RootOf Si syn keyword mupadFunction Simplify syn keyword mupadFunction abs airyAi airyBi alias unalias anames append syn keyword mupadFunction arcsin arccos arctan arccsc arcsec arccot syn keyword mupadFunction arcsinh arccosh arctanh arccsch arcsech arccoth syn keyword mupadFunction arg args array assert assign assignElements syn keyword mupadFunction assume assuming asympt bernoulli syn keyword mupadFunction besselI besselJ besselK besselY beta binomial bool syn keyword mupadFunction bytes card syn keyword mupadFunction ceil floor round trunc syn keyword mupadFunction coeff coerce collect combine copyClosure syn keyword mupadFunction conjugate content context contfrac syn keyword mupadFunction debug degree degreevec delete _delete denom syn keyword mupadFunction densematrix diff dilog dirac discont div _div syn keyword mupadFunction divide domtype doprint erf erfc error eval evalassign syn keyword mupadFunction evalp exp expand export unexport expose expr syn keyword mupadFunction expr2text external extnops extop extsubsop syn keyword mupadFunction fact fact2 factor fclose finput fname fopen fprint syn keyword mupadFunction fread ftextinput readbitmap readdata pathname syn keyword mupadFunction protocol read readbytes write writebytes syn keyword mupadFunction float frac frame _frame frandom freeze unfreeze syn keyword mupadFunction funcenv gamma gcd gcdex genident genpoly syn keyword mupadFunction getpid getprop ground has hastype heaviside help syn keyword mupadFunction history hold hull hypergeom icontent id syn keyword mupadFunction ifactor igamma igcd igcdex ilcm in _in syn keyword mupadFunction indets indexval info input int int2text syn keyword mupadFunction interpolate interval irreducible is syn keyword mupadFunction isprime isqrt iszero ithprime kummerU lambertW syn keyword mupadFunction last lasterror lcm lcoeff ldegree length syn keyword mupadFunction level lhs rhs limit linsolve lllint syn keyword mupadFunction lmonomial ln loadmod loadproc log lterm syn keyword mupadFunction match map mapcoeffs maprat matrix max min syn keyword mupadFunction mod modp mods monomials multcoeffs new syn keyword mupadFunction newDomain _next nextprime nops syn keyword mupadFunction norm normal nterms nthcoeff nthmonomial nthterm syn keyword mupadFunction null numer ode op operator package syn keyword mupadFunction pade partfrac patchlevel pdivide syn keyword mupadFunction piecewise plot plotfunc2d plotfunc3d syn keyword mupadFunction poly poly2list polylog powermod print syn keyword mupadFunction product protect psi quit _quit radsimp random rationalize syn keyword mupadFunction rec rectform register reset return revert syn keyword mupadFunction rewrite select series setuserinfo share sign signIm syn keyword mupadFunction simplify syn keyword mupadFunction sin cos tan csc sec cot syn keyword mupadFunction sinh cosh tanh csch sech coth syn keyword mupadFunction slot solve syn keyword mupadFunction pdesolve matlinsolve matlinsolveLU toeplitzSolve syn keyword mupadFunction vandermondeSolve fsolve odesolve odesolve2 syn keyword mupadFunction polyroots polysysroots odesolveGeometric syn keyword mupadFunction realroot realroots mroots lincongruence syn keyword mupadFunction msqrts syn keyword mupadFunction sort split sqrt strmatch strprint syn keyword mupadFunction subs subset subsex subsop substring sum syn keyword mupadFunction surd sysname sysorder system table taylor tbl2text syn keyword mupadFunction tcoeff testargs testeq testtype text2expr syn keyword mupadFunction text2int text2list text2tbl rtime time syn keyword mupadFunction traperror type unassume unit universe syn keyword mupadFunction unloadmod unprotect userinfo val version syn keyword mupadFunction warning whittakerM whittakerW zeta zip syn keyword mupadFunction getDefault setDefault copy modify Arc2d Arrow2d syn keyword mupadFunction Arrow3d Bars2d Bars3d Box Boxplot Circle2d Circle3d syn keyword mupadFunction Cone Conformal Curve2d Curve3d Cylinder Cylindrical syn keyword mupadFunction Density Ellipse2d Function2d Function3d Hatch syn keyword mupadFunction Histogram2d HOrbital Implicit2d Implicit3d syn keyword mupadFunction Inequality Iteration Line2d Line3d Lsys Matrixplot syn keyword mupadFunction MuPADCube Ode2d Ode3d Parallelogram2d Parallelogram3d syn keyword mupadFunction Piechart2d Piechart3d Point2d Point3d Polar syn keyword mupadFunction Polygon2d Polygon3d Raster Rectangle Sphere syn keyword mupadFunction Ellipsoid Spherical Sum Surface SurfaceSet syn keyword mupadFunction SurfaceSTL Tetrahedron Hexahedron Octahedron syn keyword mupadFunction Dodecahedron Icosahedron Text2d Text3d Tube Turtle syn keyword mupadFunction VectorField2d XRotate ZRotate Canvas CoordinateSystem2d syn keyword mupadFunction CoordinateSystem3d Group2d Group3d Scene2d Scene3d ClippingBox syn keyword mupadFunction Rotate2d Rotate3d Scale2d Scale3d Transform2d syn keyword mupadFunction Transform3d Translate2d Translate3d AmbientLight syn keyword mupadFunction Camera DistantLight PointLight SpotLight syn keyword mupadIdentifier OutputFile OutputOptions syn keyword mupadIdentifier Angle AngleRange AngleBegin AngleEnd syn keyword mupadIdentifier Area Axis AxisX AxisY AxisZ Base Top syn keyword mupadIdentifier BaseX TopX BaseY TopY BaseZ TopZ syn keyword mupadIdentifier BaseRadius TopRadius Cells syn keyword mupadIdentifier Center CenterX CenterY CenterZ syn keyword mupadIdentifier Closed ColorData CommandList Contours CoordinateType syn keyword mupadIdentifier Data DensityData DensityFunction From To syn keyword mupadIdentifier FromX ToX FromY ToY FromZ ToZ syn keyword mupadIdentifier Function FunctionX FunctionY FunctionZ syn keyword mupadIdentifier Function1 Function2 Baseline syn keyword mupadIdentifier Generations RotationAngle IterationRules StartRule StepLength syn keyword mupadIdentifier TurtleRules Ground Heights Moves Inequalities syn keyword mupadIdentifier InputFile Iterations StartingPoint syn keyword mupadIdentifier LineColorFunction FillColorFunction syn keyword mupadIdentifier Matrix2d Matrix3d syn keyword mupadIdentifier MeshList MeshListType MeshListNormals syn keyword mupadIdentifier MagneticQuantumNumber MomentumQuantumNumber PrincipalQuantumNumber syn keyword mupadIdentifier Name Normal NormalX NormalY NormalZ syn keyword mupadIdentifier ParameterName ParameterBegin ParameterEnd ParameterRange syn keyword mupadIdentifier Points2d Points3d Radius RadiusFunction syn keyword mupadIdentifier Position PositionX PositionY PositionZ syn keyword mupadIdentifier Scale ScaleX ScaleY ScaleZ Shift ShiftX ShiftY ShiftZ syn keyword mupadIdentifier SemiAxes SemiAxisX SemiAxisY SemiAxisZ syn keyword mupadIdentifier Tangent1 Tangent1X Tangent1Y Tangent1Z syn keyword mupadIdentifier Tangent2 Tangent2X Tangent2Y Tangent2Z syn keyword mupadIdentifier Text TextOrientation TextRotation syn keyword mupadIdentifier UName URange UMin UMax VName VRange VMin VMax syn keyword mupadIdentifier XName XRange XMin XMax YName YRange YMin YMax syn keyword mupadIdentifier ZName ZRange ZMin ZMax ViewingBox syn keyword mupadIdentifier ViewingBoxXMin ViewingBoxXMax ViewingBoxXRange syn keyword mupadIdentifier ViewingBoxYMin ViewingBoxYMax ViewingBoxYRange syn keyword mupadIdentifier ViewingBoxZMin ViewingBoxZMax ViewingBoxZRange syn keyword mupadIdentifier Visible syn keyword mupadIdentifier Axes AxesInFront AxesLineColor AxesLineWidth syn keyword mupadIdentifier AxesOrigin AxesOriginX AxesOriginY AxesOriginZ syn keyword mupadIdentifier AxesTips AxesTitleAlignment syn keyword mupadIdentifier AxesTitleAlignmentX AxesTitleAlignmentY AxesTitleAlignmentZ syn keyword mupadIdentifier AxesTitles XAxisTitle YAxisTitle ZAxisTitle syn keyword mupadIdentifier AxesVisible XAxisVisible YAxisVisible ZAxisVisible syn keyword mupadIdentifier YAxisTitleOrientation syn keyword mupadIdentifier TicksAnchor XTicksAnchor YTicksAnchor ZTicksAnchor syn keyword mupadIdentifier TicksAt XTicksAt YTicksAt ZTicksAt syn keyword mupadIdentifier TicksBetween XTicksBetween YTicksBetween ZTicksBetween syn keyword mupadIdentifier TicksDistance XTicksDistance YTicksDistance ZTicksDistance syn keyword mupadIdentifier TicksNumber XTicksNumber YTicksNumber ZTicksNumber syn keyword mupadIdentifier TicksVisible XTicksVisible YTicksVisible ZTicksVisible syn keyword mupadIdentifier TicksLength TicksLabelStyle syn keyword mupadIdentifier XTicksLabelStyle YTicksLabelStyle ZTicksLabelStyle syn keyword mupadIdentifier TicksLabelsVisible syn keyword mupadIdentifier XTicksLabelsVisible YTicksLabelsVisible ZTicksLabelsVisible syn keyword mupadIdentifier GridInFront GridLineColor SubgridLineColor syn keyword mupadIdentifier GridLineStyle SubgridLineStyle GridLineWidth SubgridLineWidth syn keyword mupadIdentifier GridVisible XGridVisible YGridVisible ZGridVisible syn keyword mupadIdentifier SubgridVisible XSubgridVisible YSubgridVisible ZSubgridVisible syn keyword mupadIdentifier Frames TimeRange TimeBegin TimeEnd syn keyword mupadIdentifier VisibleAfter VisibleBefore VisibleFromTo syn keyword mupadIdentifier VisibleAfterEnd VisibleBeforeBegin syn keyword mupadIdentifier Footer Header FooterAlignment HeaderAlignment syn keyword mupadIdentifier HorizontalAlignment TitleAlignment VerticalAlignment syn keyword mupadIdentifier Legend LegendEntry LegendText syn keyword mupadIdentifier LegendAlignment LegendPlacement LegendVisible syn keyword mupadIdentifier Title Titles syn keyword mupadIdentifier TitlePosition TitlePositionX TitlePositionY TitlePositionZ syn keyword mupadIdentifier Bottom Left Height Width Layout Rows Columns syn keyword mupadIdentifier Margin BottomMargin TopMargin LeftMargin RightMargin syn keyword mupadIdentifier OutputUnits Spacing syn keyword mupadIdentifier AdaptiveMesh DiscontinuitySearch Mesh SubMesh syn keyword mupadIdentifier UMesh USubMesh VMesh VSubMesh syn keyword mupadIdentifier XMesh XSubMesh YMesh YSubMesh Zmesh syn keyword mupadIdentifier CameraCoordinates CameraDirection syn keyword mupadIdentifier CameraDirectionX CameraDirectionY CameraDirectionZ syn keyword mupadIdentifier FocalPoint FocalPointX FocalPointY FocalPointZ syn keyword mupadIdentifier LightColor Lighting LightIntensity OrthogonalProjection syn keyword mupadIdentifier SpotAngle ViewingAngle syn keyword mupadIdentifier Target TargetX TargetY TargetZ syn keyword mupadIdentifier ArrowLength syn keyword mupadIdentifier AxesTitleFont FooterFont HeaderFont LegendFont syn keyword mupadIdentifier TextFont TicksLabelFont TitleFont syn keyword mupadIdentifier BackgroundColor BackgroundColor2 BackgroundStyle syn keyword mupadIdentifier BackgroundTransparent Billboarding BorderColor BorderWidth syn keyword mupadIdentifier BoxCenters BoxWidths DrawMode Gap XGap YGap syn keyword mupadIdentifier Notched NotchWidth Scaling YXRatio ZXRatio syn keyword mupadIdentifier VerticalAsymptotesVisible VerticalAsymptotesStyle syn keyword mupadIdentifier VerticalAsymptotesColor VerticalAsymptotesWidth syn keyword mupadIdentifier LineColor LineColor2 LineColorType LineStyle syn keyword mupadIdentifier LinesVisible ULinesVisible VLinesVisible XLinesVisible syn keyword mupadIdentifier YLinesVisible LineWidth MeshVisible syn keyword mupadIdentifier PointColor PointSize PointStyle PointsVisible syn keyword mupadIdentifier BarStyle Shadows Color Colors FillColor FillColor2 syn keyword mupadIdentifier FillColorTrue FillColorFalse FillColorUnknown FillColorType syn keyword mupadIdentifier Filled FillPattern FillPatterns FillStyle syn keyword mupadIdentifier InterpolationStyle Shading UseNormals syn keyword mupadIdentifier TipAngle TipLength TipStyle TubeDiameter syn keyword mupadIdentifier Tubular syn keyword mupadIdentifier objectGroupsListed hi def link mupadComment Comment hi def link mupadString String hi def link mupadOperator Operator hi def link mupadSpecial Special hi def link mupadStatement Statement hi def link mupadUnderlined Underlined hi def link mupadConditional Conditional hi def link mupadRepeat Repeat hi def link mupadFunction Function hi def link mupadType Type hi def link mupadDefine Define hi def link mupadIdentifier Identifier if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syntax case ignore syn keyword murphiKeyword alias syn keyword murphiStructure array syn keyword murphiKeyword assert syn keyword murphiKeyword begin syn keyword murphiType boolean syn keyword murphiKeyword by syn keyword murphiLabel case syn keyword murphiKeyword clear syn keyword murphiLabel const syn keyword murphiRepeat do syn keyword murphiConditional else syn keyword murphiConditional elsif syn keyword murphiKeyword end syn keyword murphiKeyword endalias syn keyword murphiRepeat endexists syn keyword murphiRepeat endfor syn keyword murphiRepeat endforall syn keyword murphiKeyword endfunction syn keyword murphiConditional endif syn keyword murphiKeyword endprocedure syn keyword murphiStructure endrecord syn keyword murphiKeyword endrule syn keyword murphiKeyword endruleset syn keyword murphiKeyword endstartstate syn keyword murphiConditional endswitch syn keyword murphiRepeat endwhile syn keyword murphiStructure enum syn keyword murphiKeyword error syn keyword murphiRepeat exists syn keyword murphiBoolean false syn keyword murphiRepeat for syn keyword murphiRepeat forall syn keyword murphiKeyword function syn keyword murphiConditional if syn keyword murphiKeyword in syn keyword murphiKeyword interleaved syn keyword murphiLabel invariant syn keyword murphiFunction ismember syn keyword murphiFunction isundefined syn keyword murphiKeyword log syn keyword murphiStructure of syn keyword murphiType multiset syn keyword murphiFunction multisetadd syn keyword murphiFunction multisetcount syn keyword murphiFunction multisetremove syn keyword murphiFunction multisetremovepred syn keyword murphiKeyword procedure syn keyword murphiKeyword process syn keyword murphiKeyword program syn keyword murphiKeyword put syn keyword murphiStructure record syn keyword murphiKeyword return syn keyword murphiLabel rule syn keyword murphiLabel ruleset syn keyword murphiType scalarset syn keyword murphiLabel startstate syn keyword murphiConditional switch syn keyword murphiConditional then syn keyword murphiRepeat to syn keyword murphiKeyword traceuntil syn keyword murphiBoolean true syn keyword murphiLabel type syn keyword murphiKeyword undefine syn keyword murphiStructure union syn keyword murphiLabel var syn keyword murphiRepeat while syn keyword murphiTodo contained todo xxx fixme syntax case match syn match murphiNumber "\<\d\+\>" syn match murphiOperator "[\+\-\*\/%&|=!<>:\?]\|\." syn match murphiDelimiter "\(:[^=]\|[;,]\)" syn match murphiSpecial "[()\[\]]" syn match murphiError "==[^>]"he=e-1 syn match murphiError "&&\|||" syn region murphiString start=+"+ end=+"+ syn region murphiComment start="--" end="$" contains=murphiTodo syn region murphiComment start="/\*" end="\*/" contains=murphiTodo hi def link murphiComment Comment hi def link murphiString String hi def link murphiNumber Number hi def link murphiBoolean Boolean hi def link murphiIdentifier Identifier hi def link murphiFunction Function hi def link murphiStatement Statement hi def link murphiConditional Conditional hi def link murphiRepeat Repeat hi def link murphiLabel Label hi def link murphiOperator Operator hi def link murphiKeyword Keyword hi def link murphiType Type hi def link murphiStructure Structure hi def link murphiSpecial Special hi def link murphiDelimiter Delimiter hi def link murphiError Error hi def link murphiTodo Todo let b:current_syntax = "murphi" if exists("b:current_syntax") finish endif syntax keyword mushFunction contained @@ abs accent accname acos add after align syntax keyword mushFunction contained allof alphamax alphamin and andflags syntax keyword mushFunction contained andlflags andlpowers andpowers ansi aposs art syntax keyword mushFunction contained asin atan atan2 atrlock attrcnt band baseconv syntax keyword mushFunction contained beep before blank2tilde bnand bnot bor bound syntax keyword mushFunction contained brackets break bxor cand cansee capstr case syntax keyword mushFunction contained caseall cat ceil center checkpass children syntax keyword mushFunction contained chr clone cmds cnetpost comp con config conn syntax keyword mushFunction contained controls convsecs convtime convutcsecs cor syntax keyword mushFunction contained cos create ctime ctu dec decrypt default syntax keyword mushFunction contained delete die dig digest dist2d dist3d div syntax keyword mushFunction contained division divscope doing downdiv dynhelp e syntax keyword mushFunction contained edefault edit element elements elist elock syntax keyword mushFunction contained emit empire empower encrypt endtag entrances syntax keyword mushFunction contained eq escape etimefmt eval exit exp extract fdiv syntax keyword mushFunction contained filter filterbool findable first firstof syntax keyword mushFunction contained flags flip floor floordiv fmod fold syntax keyword mushFunction contained folderstats followers following foreach syntax keyword mushFunction contained fraction fullname functions get get_eval grab syntax keyword mushFunction contained graball grep grepi gt gte hasattr hasattrp syntax keyword mushFunction contained hasattrpval hasattrval hasdivpower hasflag syntax keyword mushFunction contained haspower haspowergroup hastype height hidden syntax keyword mushFunction contained home host hostname html idle idlesecs syntax keyword mushFunction contained idle_average idle_times idle_total if ifelse syntax keyword mushFunction contained ilev iname inc index indiv indivall insert syntax keyword mushFunction contained inum ipaddr isdaylight isdbref isint isnum syntax keyword mushFunction contained isword itemize items iter itext last lattr syntax keyword mushFunction contained lcon lcstr ldelete ldivisions left lemit syntax keyword mushFunction contained level lexits lflags link list lit ljust lmath syntax keyword mushFunction contained ln lnum loc localize locate lock loctree log syntax keyword mushFunction contained lparent lplayers lports lpos lsearch lsearchr syntax keyword mushFunction contained lstats lt lte lthings lvcon lvexits lvplayers syntax keyword mushFunction contained lvthings lwho mail maildstats mailfrom syntax keyword mushFunction contained mailfstats mailstats mailstatus mailsubject syntax keyword mushFunction contained mailtime map match matchall max mean median syntax keyword mushFunction contained member merge mid min mix mod modulo modulus syntax keyword mushFunction contained money mtime mudname mul munge mwho name nand syntax keyword mushFunction contained nattr ncon nearby neq nexits next nor not syntax keyword mushFunction contained nplayers nsemit nslemit nsoemit nspemit syntax keyword mushFunction contained nsremit nszemit nthings null num nvcon syntax keyword mushFunction contained nvexits nvplayers nvthings obj objeval objid syntax keyword mushFunction contained objmem oemit ooref open or ord orflags syntax keyword mushFunction contained orlflags orlpowers orpowers owner parent syntax keyword mushFunction contained parse pcreate pemit pi pickrand playermem syntax keyword mushFunction contained pmatch poll ports pos poss power powergroups syntax keyword mushFunction contained powers powover program prompt pueblo quitprog syntax keyword mushFunction contained quota r rand randword recv regedit regeditall syntax keyword mushFunction contained regeditalli regediti regmatch regmatchi syntax keyword mushFunction contained regrab regraball regraballi regrabi regrep syntax keyword mushFunction contained regrepi remainder remit remove repeat replace syntax keyword mushFunction contained rest restarts restarttime reswitch syntax keyword mushFunction contained reswitchall reswitchalli reswitchi reverse syntax keyword mushFunction contained revwords right rjust rloc rnum room root syntax keyword mushFunction contained round s scan scramble search secs secure sent syntax keyword mushFunction contained set setdiff setinter setq setr setunion sha0 syntax keyword mushFunction contained shl shr shuffle sign signal sin sort sortby syntax keyword mushFunction contained soundex soundlike soundslike space spellnum syntax keyword mushFunction contained splice sql sqlescape sqrt squish ssl syntax keyword mushFunction contained starttime stats stddev step strcat strinsert syntax keyword mushFunction contained stripaccents stripansi strlen strmatch syntax keyword mushFunction contained strreplace sub subj switch switchall t table syntax keyword mushFunction contained tag tagwrap tan tel terminfo textfile syntax keyword mushFunction contained tilde2blank time timefmt timestring tr syntax keyword mushFunction contained trigger trim trimpenn trimtiny trunc type u syntax keyword mushFunction contained ucstr udefault ufun uldefault ulocal updiv syntax keyword mushFunction contained utctime v vadd val valid vcross vdim vdot syntax keyword mushFunction contained version visible vmag vmax vmin vmul vsub syntax keyword mushFunction contained vtattr vtcount vtcreate vtdestroy vtlcon syntax keyword mushFunction contained vtloc vtlocate vtmaster vtname vtref vttel syntax keyword mushFunction contained vunit wait where width wipe wordpos words syntax keyword mushFunction contained wrap xcon xexits xget xor xplayers xthings syntax keyword mushFunction contained xvcon xvexits xvplayers xvthings zemit zfun syntax keyword mushFunction contained zmwho zone zwho syntax match mushFunctionBrackets "\i*(" contains=mushFunction syntax keyword mushAtCommandList contained @ALLHALT @ALLQUOTA @ASSERT @ATRCHOWN @ATRLOCK @ATTRIBUTE @BOOT syntax keyword mushAtCommandList contained @BREAK @CEMIT @CHANNEL @CHAT @CHOWN @CHOWNALL @CHZONE @CHZONEALL syntax keyword mushAtCommandList contained @CLOCK @CLONE @COBJ @COMMAND @CONFIG @CPATTR @CREATE @CRPLOG @DBCK syntax keyword mushAtCommandList contained @DECOMPILE @DESTROY @DIG @DISABLE @DIVISION @DOING @DOLIST @DRAIN syntax keyword mushAtCommandList contained @DUMP @EDIT @ELOCK @EMIT @EMPOWER @ENABLE @ENTRANCES @EUNLOCK @FIND syntax keyword mushAtCommandList contained @FIRSTEXIT @FLAG @FORCE @FUNCTION @EDIT @GREP @HALT @HIDE @HOOK @KICK syntax keyword mushAtCommandList contained @LEMIT @LEVEL @LINK @LIST @LISTMOTD @LOCK @LOG @LOGWIPE @LSET @MAIL @MALIAS syntax keyword mushAtCommandList contained @MAP @MOTD @MVATTR @NAME @NEWPASSWORD @NOTIFY @NSCEMIT @NSEMIT @NSLEMIT syntax keyword mushAtCommandList contained @NSOEMIT @NSPEMIT @NSPEMIT @NSREMIT @NSZEMIT @NUKE @OEMIT @OPEN @PARENT @PASSWORD syntax keyword mushAtCommandList contained @PCREATE @PEMIT @POLL @POOR @POWERLEVEL @PROGRAM @PROMPT @PS @PURGE @QUOTA syntax keyword mushAtCommandList contained @READCACHE @RECYCLE @REJECTMOTD @REMIT @RESTART @SCAN @SEARCH @SELECT @SET syntax keyword mushAtCommandList contained @SHUTDOWN @SITELOCK @SNOOP @SQL @SQUOTA @STATS @SWITCH @SWEEP @SWITCH @TELEPORT syntax keyword mushAtCommandList contained @TRIGGER @ULOCK @UNDESTROY @UNLINK @UNLOCK @UNRECYCLE @UPTIME @UUNLOCK @VERB syntax keyword mushAtCommandList contained @VERSION @WAIT @WALL @WARNINGS @WCHECK @WHEREIS @WIPE @ZCLONE @ZEMIT syntax match mushCommand "@\i\I*" contains=mushAtCommandList syntax keyword mushCommand AHELP ANEWS ATTRIB_SET BRIEF BRIEF BUY CHANGES DESERT syntax keyword mushCommand DISMISS DROP EMPTY ENTER EXAMINE FOLLOW GET GIVE GOTO syntax keyword mushCommand HELP HUH_COMMAND INVENTORY INVENTORY LOOK LEAVE LOOK syntax keyword mushCommand GOTO NEWS PAGE PAGE POSE RULES SAY SCORE SEMIPOSE syntax keyword mushCommand SPECIALNEWS TAKE TEACH THINK UNFOLLOW USE WHISPER WHISPER syntax keyword mushCommand WARN_ON_MISSING WHISPER WITH syntax match mushSpecial "\*\|!\|=\|-\|\\\|+" syntax match mushSpecial2 contained "\*" syn region mushString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=mushSpecial,mushSpecial2,@Spell syntax match mushIdentifier "&[^ ]\+" syntax match mushVariable "%r\|%t\|%cr\|%[A-Za-z0-9]\+\|%#\|##\|here" syntax match mushNumber +[0-9]\++ syntax keyword mushTodo contained TODO FIXME XXX syntax cluster mushCommentGroup contains=mushTodo syntax match mushComment "^\s*@@.*$" contains=mushTodo syntax match mushComment "^#[^define|^ifdef|^else|^pragma|^ifndef|^echo|^elif|^undef|^warning].*$" contains=mushTodo syntax match mushComment "^#$" contains=mushTodo syntax region mushComment matchgroup=mushCommentStart start="/@@" end="@@/" contains=@mushCommentGroup,mushCommentStartError,mushCommentString,@Spell syntax region mushCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=mushComment syn match mushPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" syn cluster mushPreProcGroup contains=mushPreCondit,mushIncluded,mushInclude,mushDefine,mushSpecial,mushString,mushCommentSkip,mushCommentString,@mushCommentGroup,mushCommentStartError syn region mushIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match mushIncluded display contained "<[^>]*>" syn match mushInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=mushIncluded syn region mushDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@mushPreProcGroup,@Spell syn region mushPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@mushPreProcGroup syntax region mushFuncBoundaries start="\[" end="\]" contains=mushFunction,mushFlag,mushAttributes,mushNumber,mushCommand,mushVariable,mushSpecial2 syntax keyword mushFlag PLAYER ABODE BUILDER CHOWN_OK DARK FLOATING syntax keyword mushFlag GOING HAVEN INHERIT JUMP_OK KEY LINK_OK MONITOR syntax keyword mushFlag NOSPOOF OPAQUE QUIET STICKY TRACE UNFINDABLE VISUAL syntax keyword mushFlag WIZARD PARENT_OK ZONE AUDIBLE CONNECTED DESTROY_OK syntax keyword mushFlag ENTER_OK HALTED IMMORTAL LIGHT MYOPIC PUPPET TERSE syntax keyword mushFlag ROBOT SAFE TRANSPARENT VERBOSE CONTROL_OK COMMANDS syntax keyword mushAttribute aahear aclone aconnect adesc adfail adisconnect syntax keyword mushAttribute adrop aefail aenter afail agfail ahear akill syntax keyword mushAttribute aleave alfail alias amhear amove apay arfail syntax keyword mushAttribute asucc atfail atport aufail ause away charges syntax keyword mushAttribute cost desc dfail drop ealias efail enter fail syntax keyword mushAttribute filter forwardlist gfail idesc idle infilter syntax keyword mushAttribute inprefix kill lalias last lastsite leave lfail syntax keyword mushAttribute listen move odesc odfail odrop oefail oenter syntax keyword mushAttribute ofail ogfail okill oleave olfail omove opay syntax keyword mushAttribute orfail osucc otfail otport oufail ouse oxenter syntax keyword mushAttribute oxleave oxtport pay prefix reject rfail runout syntax keyword mushAttribute semaphore sex startup succ tfail tport ufail syntax keyword mushAttribute use va vb vc vd ve vf vg vh vi vj vk vl vm vn syntax keyword mushAttribute vo vp vq vr vs vt vu vv vw vx vy vz hi def link mushAttribute Constant hi def link mushCommand Function hi def link mushNumber Number hi def link mushSetting PreProc hi def link mushFunction Statement hi def link mushVariable Identifier hi def link mushSpecial Special hi def link mushTodo Todo hi def link mushFlag Special hi def link mushIdentifier Identifier hi def link mushDefine Macro hi def link mushPreProc PreProc hi def link mushPreProcGroup PreProc hi def link mushPreCondit PreCondit hi def link mushIncluded cString hi def link mushInclude Include hi def link mushCommentStart mushComment hi def link mushComment Comment hi def link mushCommentString mushString let b:current_syntax = "mush" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal isk=@,48-57,_,- if !exists("use_mutt_sidebar") let use_mutt_sidebar=0 endif syn match muttrcComment "^# .*$" contains=@Spell syn match muttrcComment "^#[^ ].*$" syn match muttrcComment "^#$" syn match muttrcComment "[^\\]#.*$"lc=1 syn match muttrcEscape +\\[#tnr"'Cc ]+ syn match muttrcEscape +[`|]+ syn match muttrcEscape +\\$+ syn region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString syn region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction syn match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL syn region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand syn match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1 syn match muttrcRXChars contained /[][|()][.*?+]*/ syn match muttrcRXChars contained /['"]^/ms=s+1 syn match muttrcRXChars contained /$['"]/me=e-1 syn match muttrcRXChars contained /\\/ syn region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars syn region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars syn region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars syn region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars syn region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars syn region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars syn region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syn match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL syn region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat syn region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat syn match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat syn match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat syn match muttrcSpecial +\(['"]\)!\1+ syn match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString syn region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcString syn match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr contains=muttrcVariable,muttrcEscapedVariable syn match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+" syn match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\=" syn match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+ syn match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName syn region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName syn region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName syn match muttrcKeyName contained "\" syn match muttrcKeyName contained "\\[trne]" syn match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>" syn match muttrcKeyName contained "" syn keyword muttrcVarBool skipwhite contained \ allow_8bit allow_ansi arrow_cursor ascii_chars askbcc askcc attach_split \ auto_tag autoedit beep beep_new bounce_delivered braille_friendly \ browser_abbreviate_mailboxes change_folder_next check_mbox_size check_new \ collapse_unread confirmappend confirmcreate crypt_autoencrypt crypt_autopgp \ crypt_autosign crypt_autosmime crypt_confirmhook crypt_opportunistic_encrypt \ crypt_replyencrypt crypt_replysign crypt_replysignencrypted crypt_timestamp \ crypt_use_gpgme crypt_use_pka delete_untag digest_collapse duplicate_threads \ edit_hdrs edit_headers encode_from envelope_from fast_reply fcc_clear \ flag_safe followup_to force_name forw_decode forw_decrypt forw_quote \ forward_decode forward_decrypt forward_quote hdrs header \ header_color_partial help hidden_host hide_limited hide_missing \ hide_thread_subject hide_top_limited hide_top_missing history_remove_dups \ honor_disposition idn_decode idn_encode ignore_linear_white_space \ ignore_list_reply_to imap_check_subscribed imap_list_subscribed imap_passive \ imap_peek imap_servernoise implicit_autoview include_onlyfirst keep_flagged \ mail_check_recent mail_check_stats mailcap_sanitize maildir_check_cur \ maildir_header_cache_verify maildir_trash mark_old markers menu_move_off \ menu_scroll message_cache_clean meta_key metoo mh_purge mime_forward_decode \ mime_type_query_first narrow_tree pager_stop pgp_auto_decode \ pgp_auto_traditional pgp_autoencrypt pgp_autoinline pgp_autosign \ pgp_check_exit pgp_create_traditional pgp_ignore_subkeys pgp_long_ids \ pgp_replyencrypt pgp_replyinline pgp_replysign pgp_replysignencrypted \ pgp_retainable_sigs pgp_self_encrypt pgp_self_encrypt_as pgp_show_unusable \ pgp_strict_enc pgp_use_gpg_agent pipe_decode pipe_split pop_auth_try_all \ pop_last postpone_encrypt postpone_encrypt_as print_decode print_split \ prompt_after read_only reflow_space_quotes reflow_text reflow_wrap \ reply_self resolve resume_draft_files resume_edited_draft_files \ reverse_alias reverse_name reverse_realname rfc2047_parameters save_address \ save_empty save_name score sidebar_folder_indent sidebar_new_mail_only \ sidebar_next_new_wrap sidebar_short_path sidebar_sort sidebar_visible \ sig_dashes sig_on_top smart_wrap smime_ask_cert_label \ smime_decrypt_use_default_key smime_is_default smime_self_encrypt \ smime_self_encrypt_as sort_re ssl_force_tls ssl_use_sslv2 ssl_use_sslv3 \ ssl_use_tlsv1 ssl_usesystemcerts ssl_verify_dates ssl_verify_host \ ssl_verify_partial_chains status_on_top strict_mime strict_threads suspend \ text_flowed thorough_search thread_received tilde ts_enabled uncollapse_jump \ use_8bitmime use_domain use_envelope_from use_from use_idn use_ipv6 \ uncollapse_new user_agent wait_key weed wrap_search write_bcc \ nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarBool skipwhite contained \ noallow_8bit noallow_ansi noarrow_cursor noascii_chars noaskbcc noaskcc \ noattach_split noauto_tag noautoedit nobeep nobeep_new nobounce_delivered \ nobraille_friendly nobrowser_abbreviate_mailboxes nochange_folder_next \ nocheck_mbox_size nocheck_new nocollapse_unread noconfirmappend \ noconfirmcreate nocrypt_autoencrypt nocrypt_autopgp nocrypt_autosign \ nocrypt_autosmime nocrypt_confirmhook nocrypt_opportunistic_encrypt \ nocrypt_replyencrypt nocrypt_replysign nocrypt_replysignencrypted \ nocrypt_timestamp nocrypt_use_gpgme nocrypt_use_pka nodelete_untag \ nodigest_collapse noduplicate_threads noedit_hdrs noedit_headers \ noencode_from noenvelope_from nofast_reply nofcc_clear noflag_safe \ nofollowup_to noforce_name noforw_decode noforw_decrypt noforw_quote \ noforward_decode noforward_decrypt noforward_quote nohdrs noheader \ noheader_color_partial nohelp nohidden_host nohide_limited nohide_missing \ nohide_thread_subject nohide_top_limited nohide_top_missing \ nohistory_remove_dups nohonor_disposition noidn_decode noidn_encode \ noignore_linear_white_space noignore_list_reply_to noimap_check_subscribed \ noimap_list_subscribed noimap_passive noimap_peek noimap_servernoise \ noimplicit_autoview noinclude_onlyfirst nokeep_flagged nomail_check_recent \ nomail_check_stats nomailcap_sanitize nomaildir_check_cur \ nomaildir_header_cache_verify nomaildir_trash nomark_old nomarkers \ nomenu_move_off nomenu_scroll nomessage_cache_clean nometa_key nometoo \ nomh_purge nomime_forward_decode nomime_type_query_first nonarrow_tree \ nopager_stop nopgp_auto_decode nopgp_auto_traditional nopgp_autoencrypt \ nopgp_autoinline nopgp_autosign nopgp_check_exit nopgp_create_traditional \ nopgp_ignore_subkeys nopgp_long_ids nopgp_replyencrypt nopgp_replyinline \ nopgp_replysign nopgp_replysignencrypted nopgp_retainable_sigs \ nopgp_self_encrypt nopgp_self_encrypt_as nopgp_show_unusable \ nopgp_strict_enc nopgp_use_gpg_agent nopipe_decode nopipe_split \ nopop_auth_try_all nopop_last nopostpone_encrypt nopostpone_encrypt_as \ noprint_decode noprint_split noprompt_after noread_only \ noreflow_space_quotes noreflow_text noreflow_wrap noreply_self noresolve \ noresume_draft_files noresume_edited_draft_files noreverse_alias \ noreverse_name noreverse_realname norfc2047_parameters nosave_address \ nosave_empty nosave_name noscore nosidebar_folder_indent \ nosidebar_new_mail_only nosidebar_next_new_wrap nosidebar_short_path \ nosidebar_sort nosidebar_visible nosig_dashes nosig_on_top nosmart_wrap \ nosmime_ask_cert_label nosmime_decrypt_use_default_key nosmime_is_default \ nosmime_self_encrypt nosmime_self_encrypt_as nosort_re nossl_force_tls \ nossl_use_sslv2 nossl_use_sslv3 nossl_use_tlsv1 nossl_usesystemcerts \ nossl_verify_dates nossl_verify_host nossl_verify_partial_chains \ nostatus_on_top nostrict_mime nostrict_threads nosuspend notext_flowed \ nothorough_search nothread_received notilde nots_enabled nouncollapse_jump \ nouse_8bitmime nouse_domain nouse_envelope_from nouse_from nouse_idn \ nouse_ipv6 nouncollapse_new nouser_agent nowait_key noweed nowrap_search \ nowrite_bcc \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarBool skipwhite contained \ invallow_8bit invallow_ansi invarrow_cursor invascii_chars invaskbcc \ invaskcc invattach_split invauto_tag invautoedit invbeep invbeep_new \ invbounce_delivered invbraille_friendly invbrowser_abbreviate_mailboxes \ invchange_folder_next invcheck_mbox_size invcheck_new invcollapse_unread \ invconfirmappend invconfirmcreate invcrypt_autoencrypt invcrypt_autopgp \ invcrypt_autosign invcrypt_autosmime invcrypt_confirmhook \ invcrypt_opportunistic_encrypt invcrypt_replyencrypt invcrypt_replysign \ invcrypt_replysignencrypted invcrypt_timestamp invcrypt_use_gpgme \ invcrypt_use_pka invdelete_untag invdigest_collapse invduplicate_threads \ invedit_hdrs invedit_headers invencode_from invenvelope_from invfast_reply \ invfcc_clear invflag_safe invfollowup_to invforce_name invforw_decode \ invforw_decrypt invforw_quote invforward_decode invforward_decrypt \ invforward_quote invhdrs invheader invheader_color_partial invhelp \ invhidden_host invhide_limited invhide_missing invhide_thread_subject \ invhide_top_limited invhide_top_missing invhistory_remove_dups \ invhonor_disposition invidn_decode invidn_encode \ invignore_linear_white_space invignore_list_reply_to \ invimap_check_subscribed invimap_list_subscribed invimap_passive \ invimap_peek invimap_servernoise invimplicit_autoview invinclude_onlyfirst \ invkeep_flagged invmail_check_recent invmail_check_stats invmailcap_sanitize \ invmaildir_check_cur invmaildir_header_cache_verify invmaildir_trash \ invmark_old invmarkers invmenu_move_off invmenu_scroll \ invmessage_cache_clean invmeta_key invmetoo invmh_purge \ invmime_forward_decode invmime_type_query_first invnarrow_tree invpager_stop \ invpgp_auto_decode invpgp_auto_traditional invpgp_autoencrypt \ invpgp_autoinline invpgp_autosign invpgp_check_exit \ invpgp_create_traditional invpgp_ignore_subkeys invpgp_long_ids \ invpgp_replyencrypt invpgp_replyinline invpgp_replysign \ invpgp_replysignencrypted invpgp_retainable_sigs invpgp_self_encrypt \ invpgp_self_encrypt_as invpgp_show_unusable invpgp_strict_enc \ invpgp_use_gpg_agent invpipe_decode invpipe_split invpop_auth_try_all \ invpop_last invpostpone_encrypt invpostpone_encrypt_as invprint_decode \ invprint_split invprompt_after invread_only invreflow_space_quotes \ invreflow_text invreflow_wrap invreply_self invresolve invresume_draft_files \ invresume_edited_draft_files invreverse_alias invreverse_name \ invreverse_realname invrfc2047_parameters invsave_address invsave_empty \ invsave_name invscore invsidebar_folder_indent invsidebar_new_mail_only \ invsidebar_next_new_wrap invsidebar_short_path invsidebar_sort \ invsidebar_visible invsig_dashes invsig_on_top invsmart_wrap \ invsmime_ask_cert_label invsmime_decrypt_use_default_key invsmime_is_default \ invsmime_self_encrypt invsmime_self_encrypt_as invsort_re invssl_force_tls \ invssl_use_sslv2 invssl_use_sslv3 invssl_use_tlsv1 invssl_usesystemcerts \ invssl_verify_dates invssl_verify_host invssl_verify_partial_chains \ invstatus_on_top invstrict_mime invstrict_threads invsuspend invtext_flowed \ invthorough_search invthread_received invtilde invts_enabled \ invuncollapse_jump invuse_8bitmime invuse_domain invuse_envelope_from \ invuse_from invuse_idn invuse_ipv6 invuncollapse_new invuser_agent \ invwait_key invweed invwrap_search invwrite_bcc \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarQuad skipwhite contained \ abort_nosubject abort_unmodified abort_noattach bounce copy crypt_verify_sig \ delete fcc_attach forward_edit honor_followup_to include mime_forward \ mime_forward_rest mime_fwd move pgp_mime_auto pgp_verify_sig pop_delete \ pop_reconnect postpone print quit recall reply_to ssl_starttls \ nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarQuad skipwhite contained \ noabort_nosubject noabort_unmodified noabort_noattach nobounce nocopy \ nocrypt_verify_sig nodelete nofcc_attach noforward_edit nohonor_followup_to \ noinclude nomime_forward nomime_forward_rest nomime_fwd nomove \ nopgp_mime_auto nopgp_verify_sig nopop_delete nopop_reconnect nopostpone \ noprint noquit norecall noreply_to nossl_starttls \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarQuad skipwhite contained \ invabort_nosubject invabort_unmodified invabort_noattach invbounce invcopy \ invcrypt_verify_sig invdelete invfcc_attach invforward_edit \ invhonor_followup_to invinclude invmime_forward invmime_forward_rest \ invmime_fwd invmove invpgp_mime_auto invpgp_verify_sig invpop_delete \ invpop_reconnect invpostpone invprint invquit invrecall invreply_to \ invssl_starttls \ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarNum skipwhite contained \ connect_timeout error_history history imap_keepalive imap_pipeline_depth \ imap_poll_timeout mail_check mail_check_stats_interval menu_context net_inc \ pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc \ save_history score_threshold_delete score_threshold_flag \ score_threshold_read search_context sendmail_wait sidebar_width sleep_time \ smime_timeout ssl_min_dh_prime_bits time_inc timeout wrap wrap_headers \ wrapmargin write_inc \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcFormatErrors contained /%./ syn match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/ syn match muttrcStrftimeEscapes contained /%E[cCxXyY]/ syn match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/ syn region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcIndexFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[aAbBcCdDeEfFHilLmMnNOPsStTuvXyYZ%]/ syn match muttrcIndexFormatEscapes contained /%[>|*]./ syn match muttrcIndexFormatConditionals contained /%?[EFHlLMNOXyY]?/ nextgroup=muttrcFormatConditionals2 syn match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ syn match muttrcQueryFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acent%]/ syn match muttrcQueryFormatConditionals contained /%?[e]?/ nextgroup=muttrcFormatConditionals2 syn match muttrcAttachFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CcDdeFfImMnQstTuX%]/ syn match muttrcAttachFormatEscapes contained /%[>|*]./ syn match muttrcAttachFormatConditionals contained /%?[CcdDefInmMQstTuX]?/ nextgroup=muttrcFormatConditionals2 syn match muttrcFormatConditionals2 contained /[^?]*?/ syn match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ syn match muttrcComposeFormatEscapes contained /%[>|*]./ syn match muttrcFolderFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[CDdfFglNstu%]/ syn match muttrcFolderFormatEscapes contained /%[>|*]./ syn match muttrcFolderFormatConditionals contained /%?[N]?/ syn match muttrcMixFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ncsa%]/ syn match muttrcMixFormatConditionals contained /%?[ncsa]?/ syn match muttrcPGPFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[nkualfctp%]/ syn match muttrcPGPFormatConditionals contained /%?[nkualfct]?/ syn match muttrcPGPCmdFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[pfsar%]/ syn match muttrcPGPCmdFormatConditionals contained /%?[pfsar]?/ nextgroup=muttrcFormatConditionals2 syn match muttrcStatusFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[bdfFhlLmMnopPRrsStuvV%]/ syn match muttrcStatusFormatEscapes contained /%[>|*]./ syn match muttrcStatusFormatConditionals contained /%?[bdFlLmMnoptuV]?/ nextgroup=muttrcFormatConditionals2 syn match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[r%]/ syn match muttrcSmimeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[Cciskaf%]/ syn match muttrcSmimeFormatConditionals contained /%?[Cciskaf]?/ nextgroup=muttrcFormatConditionals2 syn region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes syn region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syn region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes syn region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes syn region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syn keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt syn match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr syn keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt syn match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr syn keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt syn match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr syn keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt syn match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr syn keyword muttrcVarStr contained skipwhite folder_format nextgroup=muttrcVarEqualsFolderFmt syn match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr syn keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt syn match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr syn keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt syn match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr syn keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt syn match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr syn keyword muttrcVarStr contained skipwhite pgp_decode_command pgp_verify_command pgp_decrypt_command pgp_clearsign_command pgp_sign_command pgp_encrypt_sign_command pgp_encrypt_only_command pgp_import_command pgp_export_command pgp_verify_key_command pgp_list_secring_command pgp_list_pubring_command nextgroup=muttrcVarEqualsPGPCmdFmt syn match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr syn keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt syn match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr syn keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt syn match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr syn keyword muttrcVarStr contained skipwhite smime_decrypt_command smime_verify_command smime_verify_opaque_command smime_sign_command smime_sign_opaque_command smime_encrypt_command smime_pk7out_command smime_get_cert_command smime_get_signer_cert_command smime_import_cert_command smime_get_cert_email_command nextgroup=muttrcVarEqualsSmimeFmt syn match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr syn keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt syn match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr syn match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarStr contained skipwhite \ abort_noattach_regexp alias_file assumed_charset attach_charset attach_sep \ attribution_locale certificate_file charset config_charset content_type \ default_hook display_filter dotlock_program dsn_notify dsn_return editor \ entropy_file envelope_from_address escape folder forw_format \ forward_attribution_intro forward_attribution_trailer forward_format from gecos_mask \ hdr_format header_cache header_cache_compress header_cache_pagesize history_file \ hostname imap_authenticators imap_delim_chars imap_headers imap_idle imap_login \ imap_pass imap_user indent_str indent_string ispell locale mailcap_path \ mark_macro_prefix mask mbox mbox_type message_cachedir mh_seq_flagged mh_seq_replied \ mh_seq_unseen mime_type_query_command mixmaster msg_format new_mail_command pager \ pgp_default_key pgp_decryption_okay pgp_good_sign pgp_mime_signature_description \ pgp_mime_signature_filename pgp_sign_as pgp_sort_keys pipe_sep pop_authenticators \ pop_host pop_pass pop_user post_indent_str post_indent_string postpone_encrypt_as \ postponed preconnect print_cmd print_command query_command quote_regexp realname \ record reply_regexp send_charset sendmail shell sidebar_delim sidebar_delim_chars \ sidebar_divider_char sidebar_format sidebar_indent_string sidebar_sort_method \ signature simple_search smileys smime_ca_location smime_certificates \ smime_default_key smime_encrypt_with smime_keys smime_sign_as smime_sign_digest_alg \ smtp_authenticators smtp_pass smtp_url sort sort_alias sort_aux sort_browser \ spam_separator spoolfile ssl_ca_certificates_file ssl_ciphers ssl_client_cert \ status_chars tmpdir to_chars trash ts_icon_format ts_status_format tunnel visual \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarBool contained skipwhite imap_force_ssl noimap_force_ssl invimap_force_ssl nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcVarStr contained skipwhite alternates nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcMenu contained alias attach browser compose editor index pager postpone pgp mix query generic syn match muttrcMenuList "\S\+" contained contains=muttrcMenu syn match muttrcMenuCommas /,/ contained syn keyword muttrcHooks contained skipwhite account-hook charset-hook iconv-hook message-hook folder-hook mbox-hook save-hook fcc-hook fcc-save-hook send-hook send2-hook reply-hook crypt-hook syn keyword muttrcCommand skipwhite \ alternative_order auto_view exec hdr_order iconv-hook ignore mailboxes \ mailto_allow mime_lookup my_hdr pgp-hook push score sidebar_whitelist source \ unalternative_order unalternative_order unauto_view ungroup unhdr_order \ unignore unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore \ unsidebar_whitelist syn keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString syn keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks syn keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern syn region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syn region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syn keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern syn region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern syn region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern syn match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType syn match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType syn match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag syn match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)" syn keyword muttrcAsterisk contained * syn keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment syn keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment syn keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment syn keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment syn keyword muttrcAlternateKeyword contained alternates unalternates syn region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment syn match muttrcVariable contained "\\\@]\+" contains=muttrcEmail syn match muttrcFunction contained "\<\%(attach\|bounce\|copy\|delete\|display\|flag\|forward\|mark\|parent\|pipe\|postpone\|print\|purge\|recall\|resend\|root\|save\|send\|tag\|undelete\)-message\>" syn match muttrcFunction contained "\<\%(delete\|next\|previous\|read\|tag\|break\|undelete\)-thread\>" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\<\%(backward\|capitalize\|downcase\|forward\|kill\|upcase\)-word\>" syn match muttrcFunction contained "\<\%(delete\|filter\|first\|last\|next\|pipe\|previous\|print\|save\|select\|tag\|undelete\)-entry\>" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\<\%(un\)\?setenv\>" syn match muttrcFunction contained "\" syn match muttrcFunction contained "\<\%(backspace\|backward-char\|bol\|bottom\|bottom-page\|buffy-cycle\|clear-flag\|complete\%(-query\)\?\|copy-file\|create-alias\|detach-file\|eol\|exit\|extract-keys\|\%(imap-\)\?fetch-mail\|forget-passphrase\|forward-char\|group-reply\|help\|ispell\|jump\|limit\|list-reply\|mail\|mail-key\|mark-as-new\|middle-page\|new-mime\|noop\|pgp-menu\|query\|query-append\|quit\|quote-char\|read-subthread\|redraw-screen\|refresh\|rename-file\|reply\|select-new\|set-flag\|shell-escape\|skip-quoted\|sort\|subscribe\|sync-mailbox\|top\|top-page\|transpose-chars\|unsubscribe\|untag-pattern\|verify-key\|what-key\|write-fcc\)\>" syn keyword muttrcFunction contained imap-logout-all if use_mutt_sidebar == 1 syn match muttrcFunction contained "\]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName syn keyword muttrcCommand set skipwhite nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcCommand unset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcCommand reset skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn keyword muttrcCommand toggle skipwhite nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syn match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL syn match muttrcRXHooks /\<\%(account\|folder\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL syn match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern syn match muttrcPatHooks /\<\%(mbox\|crypt\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern syn match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|\|fcc\%(-save\)\?\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern syn match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction syn match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL syn match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL syn match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL syn match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL syn match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL syn keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL syn region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s syn region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s syn region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s syn match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL syn region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL syn region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma syn match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL syn match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL syn region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite syn match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL syn match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL syn match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL syn match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syn keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syn match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syn match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syn keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syn match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]" syn match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)" syn match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable syn match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer syn match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syn match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syn region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat syn region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+ syn region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+ syn region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 syn region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString syn region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString syn region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString syn match muttrcSimplePatMetas contained /[(|)]/ syn match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas syn match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString syn region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL syn region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL syn region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL syn match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL syn match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat syn region muttrcPattern contained keepend skipwhite start=+[~][<>](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat syn match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat syn match muttrcPattern contained skipwhite /[.]/ syn region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syn match muttrcColorMatchCount contained "[0-9]\+" syn match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syn region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syn region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syn keyword muttrcColorField skipwhite contained \ attachment body bold error hdrdefault header index indicator markers message \ normal prompt quoted search sidebar-divider sidebar-flagged sidebar-highlight \ sidebar-indicator sidebar-new sidebar-spoolfile signature status tilde tree \ underline syn match muttrcColorField contained "\" if use_mutt_sidebar == 1 syn keyword muttrcColorField contained sidebar_new endif syn keyword muttrcColor contained black blue cyan default green magenta red white yellow syn keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow syn match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>" syn match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL syn match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL syn match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL syn match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL syn match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL syn match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorFG,muttrcColorFGNL syn match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL syn match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL syn region muttrcColorLine keepend start=/^\s*color\s\+\%(index\|header\)\@!/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace syn match muttrcPatternNL contained skipnl "\s*\\$" nextgroup=muttrcPattern,muttrcPatternNL syn match muttrcColorBGI contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcPattern,muttrcPatternNL syn match muttrcColorBGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorBGI,muttrcColorBGNLI syn match muttrcColorFGI contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGI,muttrcColorBGNLI syn match muttrcColorFGNLI contained skipnl "\s*\\$" nextgroup=muttrcColorFGI,muttrcColorFGNLI syn match muttrcColorContextI contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGI,muttrcColorFGNLI syn match muttrcColorNLI contained skipnl "\s*\\$" nextgroup=muttrcColorContextI,muttrcColorNLI syn match muttrcColorKeywordI contained skipwhite /\/ nextgroup=muttrcColorContextI,muttrcColorNLI syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordI,muttrcComment,muttrcUnHighlightSpace syn match muttrcRXPatternNL contained skipnl "\s*\\$" nextgroup=muttrcRXString,muttrcRXPatternNL syn match muttrcColorBGH contained /\s*[$]\?\w\+\s*/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcRXString,muttrcRXPatternNL syn match muttrcColorBGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorBGH,muttrcColorBGNLH syn match muttrcColorFGH contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBGH,muttrcColorBGNLH syn match muttrcColorFGNLH contained skipnl "\s*\\$" nextgroup=muttrcColorFGH,muttrcColorFGNLH syn match muttrcColorContextH contained /\s*\/ contains=muttrcUnHighlightSpace nextgroup=muttrcColorFGH,muttrcColorFGNLH syn match muttrcColorNLH contained skipnl "\s*\\$" nextgroup=muttrcColorContextH,muttrcColorNLH syn match muttrcColorKeywordH contained skipwhite /\/ nextgroup=muttrcColorContextH,muttrcColorNLH syn region muttrcColorLine keepend skipwhite start=/\/ skip=+\\$+ end=+$+ contains=muttrcColorKeywordH,muttrcComment,muttrcUnHighlightSpace syn region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syn match muttrcUnColorAll contained skipwhite /[*]/ syn match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL syn match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL syn match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL syn match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL syn region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace syn keyword muttrcMonoAttrib contained bold none normal reverse standout underline syn keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField syn match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono hi def link muttrcComment Comment hi def link muttrcEscape SpecialChar hi def link muttrcRXChars SpecialChar hi def link muttrcString String hi def link muttrcRXString String hi def link muttrcRXString2 String hi def link muttrcSpecial Special hi def link muttrcHooks Type hi def link muttrcGroupFlag Type hi def link muttrcGroupDef Macro hi def link muttrcAddrDef muttrcGroupFlag hi def link muttrcRXDef muttrcGroupFlag hi def link muttrcRXPat String hi def link muttrcAliasGroupName Macro hi def link muttrcAliasKey Identifier hi def link muttrcUnAliasKey Identifier hi def link muttrcAliasEncEmail Identifier hi def link muttrcAliasParens Type hi def link muttrcSetNumAssignment Number hi def link muttrcSetBoolAssignment Boolean hi def link muttrcSetQuadAssignment Boolean hi def link muttrcSetStrAssignment String hi def link muttrcEmail Special hi def link muttrcVariableInner Special hi def link muttrcEscapedVariable String hi def link muttrcHeader Type hi def link muttrcKeySpecial SpecialChar hi def link muttrcKey Type hi def link muttrcKeyName SpecialChar hi def link muttrcVarBool Identifier hi def link muttrcVarQuad Identifier hi def link muttrcVarNum Identifier hi def link muttrcVarStr Identifier hi def link muttrcMenu Identifier hi def link muttrcCommand Keyword hi def link muttrcMacroDescr String hi def link muttrcAction Macro hi def link muttrcBadAction Error hi def link muttrcBindFunction Error hi def link muttrcBindMenuList Error hi def link muttrcFunction Macro hi def link muttrcGroupKeyword muttrcCommand hi def link muttrcGroupLine Error hi def link muttrcSubscribeKeyword muttrcCommand hi def link muttrcSubscribeLine Error hi def link muttrcListsKeyword muttrcCommand hi def link muttrcListsLine Error hi def link muttrcAlternateKeyword muttrcCommand hi def link muttrcAlternatesLine Error hi def link muttrcAttachmentsLine muttrcCommand hi def link muttrcAttachmentsFlag Type hi def link muttrcAttachmentsMimeType String hi def link muttrcColorLine Error hi def link muttrcColorContext Error hi def link muttrcColorContextI Identifier hi def link muttrcColorContextH Identifier hi def link muttrcColorKeyword muttrcCommand hi def link muttrcColorKeywordI muttrcColorKeyword hi def link muttrcColorKeywordH muttrcColorKeyword hi def link muttrcColorField Identifier hi def link muttrcColor Type hi def link muttrcColorFG Error hi def link muttrcColorFGI Error hi def link muttrcColorFGH Error hi def link muttrcColorBG Error hi def link muttrcColorBGI Error hi def link muttrcColorBGH Error hi def link muttrcMonoAttrib muttrcColor hi def link muttrcMono muttrcCommand hi def link muttrcSimplePat Identifier hi def link muttrcSimplePatString Macro hi def link muttrcSimplePatMetas Special hi def link muttrcPattern Error hi def link muttrcUnColorLine Error hi def link muttrcUnColorKeyword muttrcCommand hi def link muttrcUnColorIndex Identifier hi def link muttrcShellString muttrcEscape hi def link muttrcRXHooks muttrcCommand hi def link muttrcRXHookNot Type hi def link muttrcPatHooks muttrcCommand hi def link muttrcPatHookNot Type hi def link muttrcFormatConditionals2 Type hi def link muttrcIndexFormatStr muttrcString hi def link muttrcIndexFormatEscapes muttrcEscape hi def link muttrcIndexFormatConditionals muttrcFormatConditionals2 hi def link muttrcAliasFormatStr muttrcString hi def link muttrcAliasFormatEscapes muttrcEscape hi def link muttrcAttachFormatStr muttrcString hi def link muttrcAttachFormatEscapes muttrcEscape hi def link muttrcAttachFormatConditionals muttrcFormatConditionals2 hi def link muttrcComposeFormatStr muttrcString hi def link muttrcComposeFormatEscapes muttrcEscape hi def link muttrcFolderFormatStr muttrcString hi def link muttrcFolderFormatEscapes muttrcEscape hi def link muttrcFolderFormatConditionals muttrcFormatConditionals2 hi def link muttrcMixFormatStr muttrcString hi def link muttrcMixFormatEscapes muttrcEscape hi def link muttrcMixFormatConditionals muttrcFormatConditionals2 hi def link muttrcPGPFormatStr muttrcString hi def link muttrcPGPFormatEscapes muttrcEscape hi def link muttrcPGPFormatConditionals muttrcFormatConditionals2 hi def link muttrcPGPCmdFormatStr muttrcString hi def link muttrcPGPCmdFormatEscapes muttrcEscape hi def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 hi def link muttrcStatusFormatStr muttrcString hi def link muttrcStatusFormatEscapes muttrcEscape hi def link muttrcStatusFormatConditionals muttrcFormatConditionals2 hi def link muttrcPGPGetKeysFormatStr muttrcString hi def link muttrcPGPGetKeysFormatEscapes muttrcEscape hi def link muttrcSmimeFormatStr muttrcString hi def link muttrcSmimeFormatEscapes muttrcEscape hi def link muttrcSmimeFormatConditionals muttrcFormatConditionals2 hi def link muttrcTimeEscapes muttrcEscape hi def link muttrcPGPTimeEscapes muttrcEscape hi def link muttrcStrftimeEscapes Type hi def link muttrcStrftimeFormatStr muttrcString hi def link muttrcFormatErrors Error hi def link muttrcBindFunctionNL SpecialChar hi def link muttrcBindKeyNL SpecialChar hi def link muttrcBindMenuListNL SpecialChar hi def link muttrcMacroDescrNL SpecialChar hi def link muttrcMacroBodyNL SpecialChar hi def link muttrcMacroKeyNL SpecialChar hi def link muttrcMacroMenuListNL SpecialChar hi def link muttrcColorMatchCountNL SpecialChar hi def link muttrcColorNL SpecialChar hi def link muttrcColorRXNL SpecialChar hi def link muttrcColorBGNL SpecialChar hi def link muttrcColorFGNL SpecialChar hi def link muttrcAliasNameNL SpecialChar hi def link muttrcAliasENNL SpecialChar hi def link muttrcAliasNL SpecialChar hi def link muttrcUnAliasNL SpecialChar hi def link muttrcAliasGroupDefNL SpecialChar hi def link muttrcAliasEncEmailNL SpecialChar hi def link muttrcPatternNL SpecialChar hi def link muttrcUnColorPatNL SpecialChar hi def link muttrcUnColorAPNL SpecialChar hi def link muttrcUnColorIndexNL SpecialChar hi def link muttrcStringNL SpecialChar let b:current_syntax = "muttrc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword mysqlKeyword action add after aggregate all alter as asc auto_increment avg_row_length syn keyword mysqlKeyword both by syn keyword mysqlKeyword cascade change character check checksum column columns comment constraint create cross syn keyword mysqlKeyword current_date current_time current_timestamp syn keyword mysqlKeyword data database databases day day_hour day_minute day_second syn keyword mysqlKeyword default delayed delay_key_write delete desc describe distinct distinctrow drop syn keyword mysqlKeyword enclosed escape escaped explain syn keyword mysqlKeyword fields file first flush for foreign from full function syn keyword mysqlKeyword global grant grants group syn keyword mysqlKeyword having heap high_priority hosts hour hour_minute hour_second syn keyword mysqlKeyword identified ignore index infile inner insert insert_id into isam syn keyword mysqlKeyword join syn keyword mysqlKeyword key keys kill last_insert_id leading left limit lines load local lock logs long syn keyword mysqlKeyword low_priority syn keyword mysqlKeyword match max_rows middleint min_rows minute minute_second modify month myisam syn keyword mysqlKeyword natural no syn keyword mysqlKeyword on optimize option optionally order outer outfile syn keyword mysqlKeyword pack_keys partial password primary privileges procedure process processlist syn keyword mysqlKeyword read references reload rename replace restrict returns revoke right row rows syn keyword mysqlKeyword second select show shutdown soname sql_big_result sql_big_selects sql_big_tables sql_log_off syn keyword mysqlKeyword sql_log_update sql_low_priority_updates sql_select_limit sql_small_result sql_warnings starting syn keyword mysqlKeyword status straight_join string syn keyword mysqlKeyword table tables temporary terminated to trailing type syn keyword mysqlKeyword unique unlock unsigned update usage use using syn keyword mysqlKeyword values varbinary variables varying syn keyword mysqlKeyword where with write syn keyword mysqlKeyword year_month syn keyword mysqlKeyword zerofill syn keyword mysqlSpecial false null true syn region mysqlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region mysqlString start=+'+ skip=+\\\\\|\\'+ end=+'+ syn match mysqlNumber "-\=\<[0-9]*\>" syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*\>" syn match mysqlNumber "-\=\<[0-9][0-9]*e[+-]\=[0-9]*\>" syn match mysqlNumber "-\=\<[0-9]*\.[0-9]*e[+-]\=[0-9]*\>" syn match mysqlNumber "\<0x[abcdefABCDEF0-9]*\>" syn match mysqlVariable "@\a*[A-Za-z0-9]*\([._]*[A-Za-z0-9]\)*" syn match mysqlEscaped "`[^`]*`" syn region mysqlComment start="/\*" end="\*/" syn match mysqlComment "#.*" syn match mysqlComment "--\_s.*" syn sync ccomment mysqlComment syn keyword mysqlType tinyint smallint mediumint int integer bigint syn keyword mysqlType date datetime time bit bool syn keyword mysqlType tinytext mediumtext longtext text syn keyword mysqlType tinyblob mediumblob longblob blob syn region mysqlType start="float\W" end="."me=s-1 syn region mysqlType start="float$" end="."me=s-1 syn region mysqlType start="float(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="double\W" end="."me=s-1 syn region mysqlType start="double$" end="."me=s-1 syn region mysqlType start="double(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="double precision\W" end="."me=s-1 syn region mysqlType start="double precision$" end="."me=s-1 syn region mysqlType start="double precision(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="real\W" end="."me=s-1 syn region mysqlType start="real$" end="."me=s-1 syn region mysqlType start="real(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="numeric(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="dec\W" end="."me=s-1 syn region mysqlType start="dec$" end="."me=s-1 syn region mysqlType start="dec(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="decimal\W" end="."me=s-1 syn region mysqlType start="decimal$" end="."me=s-1 syn region mysqlType start="decimal(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="\Wtimestamp\W" end="."me=s-1 syn region mysqlType start="\Wtimestamp$" end="."me=s-1 syn region mysqlType start="\Wtimestamp(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="^timestamp\W" end="."me=s-1 syn region mysqlType start="^timestamp$" end="."me=s-1 syn region mysqlType start="^timestamp(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="\Wyear(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="^year(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="char(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="varchar(" end=")" contains=mysqlNumber,mysqlVariable syn region mysqlType start="enum(" end=")" contains=mysqlString,mysqlVariable syn region mysqlType start="\Wset(" end=")" contains=mysqlString,mysqlVariable syn region mysqlType start="^set(" end=")" contains=mysqlString,mysqlVariable syn keyword mysqlOperator between not and or is in like regexp rlike binary exists syn region mysqlOperator start="isnull(" end=")" contains=ALL syn region mysqlOperator start="coalesce(" end=")" contains=ALL syn region mysqlOperator start="interval(" end=")" contains=ALL syn keyword mysqlFlow case when then else end syn region mysqlFlow start="ifnull(" end=")" contains=ALL syn region mysqlFlow start="nullif(" end=")" contains=ALL syn region mysqlFlow start="if(" end=")" contains=ALL syn region mysqlFunction start="abs(" end=")" contains=ALL syn region mysqlFunction start="acos(" end=")" contains=ALL syn region mysqlFunction start="adddate(" end=")" contains=ALL syn region mysqlFunction start="ascii(" end=")" contains=ALL syn region mysqlFunction start="asin(" end=")" contains=ALL syn region mysqlFunction start="atan(" end=")" contains=ALL syn region mysqlFunction start="atan2(" end=")" contains=ALL syn region mysqlFunction start="avg(" end=")" contains=ALL syn region mysqlFunction start="benchmark(" end=")" contains=ALL syn region mysqlFunction start="bin(" end=")" contains=ALL syn region mysqlFunction start="bit_and(" end=")" contains=ALL syn region mysqlFunction start="bit_count(" end=")" contains=ALL syn region mysqlFunction start="bit_or(" end=")" contains=ALL syn region mysqlFunction start="ceiling(" end=")" contains=ALL syn region mysqlFunction start="character_length(" end=")" contains=ALL syn region mysqlFunction start="char_length(" end=")" contains=ALL syn region mysqlFunction start="concat(" end=")" contains=ALL syn region mysqlFunction start="concat_ws(" end=")" contains=ALL syn region mysqlFunction start="connection_id(" end=")" contains=ALL syn region mysqlFunction start="conv(" end=")" contains=ALL syn region mysqlFunction start="cos(" end=")" contains=ALL syn region mysqlFunction start="cot(" end=")" contains=ALL syn region mysqlFunction start="count(" end=")" contains=ALL syn region mysqlFunction start="curdate(" end=")" contains=ALL syn region mysqlFunction start="curtime(" end=")" contains=ALL syn region mysqlFunction start="date_add(" end=")" contains=ALL syn region mysqlFunction start="date_format(" end=")" contains=ALL syn region mysqlFunction start="date_sub(" end=")" contains=ALL syn region mysqlFunction start="dayname(" end=")" contains=ALL syn region mysqlFunction start="dayofmonth(" end=")" contains=ALL syn region mysqlFunction start="dayofweek(" end=")" contains=ALL syn region mysqlFunction start="dayofyear(" end=")" contains=ALL syn region mysqlFunction start="decode(" end=")" contains=ALL syn region mysqlFunction start="degrees(" end=")" contains=ALL syn region mysqlFunction start="elt(" end=")" contains=ALL syn region mysqlFunction start="encode(" end=")" contains=ALL syn region mysqlFunction start="encrypt(" end=")" contains=ALL syn region mysqlFunction start="exp(" end=")" contains=ALL syn region mysqlFunction start="export_set(" end=")" contains=ALL syn region mysqlFunction start="extract(" end=")" contains=ALL syn region mysqlFunction start="field(" end=")" contains=ALL syn region mysqlFunction start="find_in_set(" end=")" contains=ALL syn region mysqlFunction start="floor(" end=")" contains=ALL syn region mysqlFunction start="format(" end=")" contains=ALL syn region mysqlFunction start="from_days(" end=")" contains=ALL syn region mysqlFunction start="from_unixtime(" end=")" contains=ALL syn region mysqlFunction start="get_lock(" end=")" contains=ALL syn region mysqlFunction start="greatest(" end=")" contains=ALL syn region mysqlFunction start="group_unique_users(" end=")" contains=ALL syn region mysqlFunction start="hex(" end=")" contains=ALL syn region mysqlFunction start="inet_aton(" end=")" contains=ALL syn region mysqlFunction start="inet_ntoa(" end=")" contains=ALL syn region mysqlFunction start="instr(" end=")" contains=ALL syn region mysqlFunction start="lcase(" end=")" contains=ALL syn region mysqlFunction start="least(" end=")" contains=ALL syn region mysqlFunction start="length(" end=")" contains=ALL syn region mysqlFunction start="load_file(" end=")" contains=ALL syn region mysqlFunction start="locate(" end=")" contains=ALL syn region mysqlFunction start="log(" end=")" contains=ALL syn region mysqlFunction start="log10(" end=")" contains=ALL syn region mysqlFunction start="lower(" end=")" contains=ALL syn region mysqlFunction start="lpad(" end=")" contains=ALL syn region mysqlFunction start="ltrim(" end=")" contains=ALL syn region mysqlFunction start="make_set(" end=")" contains=ALL syn region mysqlFunction start="master_pos_wait(" end=")" contains=ALL syn region mysqlFunction start="max(" end=")" contains=ALL syn region mysqlFunction start="md5(" end=")" contains=ALL syn region mysqlFunction start="mid(" end=")" contains=ALL syn region mysqlFunction start="min(" end=")" contains=ALL syn region mysqlFunction start="mod(" end=")" contains=ALL syn region mysqlFunction start="monthname(" end=")" contains=ALL syn region mysqlFunction start="now(" end=")" contains=ALL syn region mysqlFunction start="oct(" end=")" contains=ALL syn region mysqlFunction start="octet_length(" end=")" contains=ALL syn region mysqlFunction start="ord(" end=")" contains=ALL syn region mysqlFunction start="period_add(" end=")" contains=ALL syn region mysqlFunction start="period_diff(" end=")" contains=ALL syn region mysqlFunction start="pi(" end=")" contains=ALL syn region mysqlFunction start="position(" end=")" contains=ALL syn region mysqlFunction start="pow(" end=")" contains=ALL syn region mysqlFunction start="power(" end=")" contains=ALL syn region mysqlFunction start="quarter(" end=")" contains=ALL syn region mysqlFunction start="radians(" end=")" contains=ALL syn region mysqlFunction start="rand(" end=")" contains=ALL syn region mysqlFunction start="release_lock(" end=")" contains=ALL syn region mysqlFunction start="repeat(" end=")" contains=ALL syn region mysqlFunction start="reverse(" end=")" contains=ALL syn region mysqlFunction start="round(" end=")" contains=ALL syn region mysqlFunction start="rpad(" end=")" contains=ALL syn region mysqlFunction start="rtrim(" end=")" contains=ALL syn region mysqlFunction start="sec_to_time(" end=")" contains=ALL syn region mysqlFunction start="session_user(" end=")" contains=ALL syn region mysqlFunction start="sign(" end=")" contains=ALL syn region mysqlFunction start="sin(" end=")" contains=ALL syn region mysqlFunction start="soundex(" end=")" contains=ALL syn region mysqlFunction start="space(" end=")" contains=ALL syn region mysqlFunction start="sqrt(" end=")" contains=ALL syn region mysqlFunction start="std(" end=")" contains=ALL syn region mysqlFunction start="stddev(" end=")" contains=ALL syn region mysqlFunction start="strcmp(" end=")" contains=ALL syn region mysqlFunction start="subdate(" end=")" contains=ALL syn region mysqlFunction start="substring(" end=")" contains=ALL syn region mysqlFunction start="substring_index(" end=")" contains=ALL syn region mysqlFunction start="subtime(" end=")" contains=ALL syn region mysqlFunction start="sum(" end=")" contains=ALL syn region mysqlFunction start="sysdate(" end=")" contains=ALL syn region mysqlFunction start="system_user(" end=")" contains=ALL syn region mysqlFunction start="tan(" end=")" contains=ALL syn region mysqlFunction start="time_format(" end=")" contains=ALL syn region mysqlFunction start="time_to_sec(" end=")" contains=ALL syn region mysqlFunction start="to_days(" end=")" contains=ALL syn region mysqlFunction start="trim(" end=")" contains=ALL syn region mysqlFunction start="ucase(" end=")" contains=ALL syn region mysqlFunction start="unique_users(" end=")" contains=ALL syn region mysqlFunction start="unix_timestamp(" end=")" contains=ALL syn region mysqlFunction start="upper(" end=")" contains=ALL syn region mysqlFunction start="user(" end=")" contains=ALL syn region mysqlFunction start="version(" end=")" contains=ALL syn region mysqlFunction start="week(" end=")" contains=ALL syn region mysqlFunction start="weekday(" end=")" contains=ALL syn region mysqlFunction start="yearweek(" end=")" contains=ALL hi def link mysqlKeyword Statement hi def link mysqlSpecial Special hi def link mysqlString String hi def link mysqlNumber Number hi def link mysqlVariable Identifier hi def link mysqlComment Comment hi def link mysqlType Type hi def link mysqlOperator Statement hi def link mysqlFlow Statement hi def link mysqlFunction Function let b:current_syntax = "mysql" if exists("b:current_syntax") finish endif syn case ignore syn keyword n1qlSpecial DATASTORES syn keyword n1qlSpecial DUAL syn keyword n1qlSpecial FALSE syn keyword n1qlSpecial INDEXES syn keyword n1qlSpecial KEYSPACES syn keyword n1qlSpecial MISSING syn keyword n1qlSpecial NAMESPACES syn keyword n1qlSpecial NULL syn keyword n1qlSpecial TRUE syn keyword n1qlKeyword ALL syn keyword n1qlKeyword ANY syn keyword n1qlKeyword ASC syn keyword n1qlKeyword BEGIN syn keyword n1qlKeyword BETWEEN syn keyword n1qlKeyword BREAK syn keyword n1qlKeyword BUCKET syn keyword n1qlKeyword CALL syn keyword n1qlKeyword CASE syn keyword n1qlKeyword CAST syn keyword n1qlKeyword CLUSTER syn keyword n1qlKeyword COLLATE syn keyword n1qlKeyword COLLECTION syn keyword n1qlKeyword CONNECT syn keyword n1qlKeyword CONTINUE syn keyword n1qlKeyword CORRELATE syn keyword n1qlKeyword COVER syn keyword n1qlKeyword DATABASE syn keyword n1qlKeyword DATASET syn keyword n1qlKeyword DATASTORE syn keyword n1qlKeyword DECLARE syn keyword n1qlKeyword DECREMENT syn keyword n1qlKeyword DERIVED syn keyword n1qlKeyword DESC syn keyword n1qlKeyword DESCRIBE syn keyword n1qlKeyword DO syn keyword n1qlKeyword EACH syn keyword n1qlKeyword ELEMENT syn keyword n1qlKeyword ELSE syn keyword n1qlKeyword END syn keyword n1qlKeyword EVERY syn keyword n1qlKeyword EXCLUDE syn keyword n1qlKeyword EXISTS syn keyword n1qlKeyword FETCH syn keyword n1qlKeyword FIRST syn keyword n1qlKeyword FLATTEN syn keyword n1qlKeyword FOR syn keyword n1qlKeyword FORCE syn keyword n1qlKeyword FROM syn keyword n1qlKeyword FUNCTION syn keyword n1qlKeyword GROUP syn keyword n1qlKeyword GSI syn keyword n1qlKeyword HAVING syn keyword n1qlKeyword IF syn keyword n1qlKeyword IGNORE syn keyword n1qlKeyword INCLUDE syn keyword n1qlKeyword INCREMENT syn keyword n1qlKeyword INDEX syn keyword n1qlKeyword INITIAL syn keyword n1qlKeyword INLINE syn keyword n1qlKeyword INNER syn keyword n1qlKeyword INTO syn keyword n1qlKeyword KEY syn keyword n1qlKeyword KEYS syn keyword n1qlKeyword KEYSPACE syn keyword n1qlKeyword KNOWN syn keyword n1qlKeyword LAST syn keyword n1qlKeyword LET syn keyword n1qlKeyword LETTING syn keyword n1qlKeyword LIMIT syn keyword n1qlKeyword LOOP syn keyword n1qlKeyword LSM syn keyword n1qlKeyword MAP syn keyword n1qlKeyword MAPPING syn keyword n1qlKeyword MATCHED syn keyword n1qlKeyword MATERIALIZED syn keyword n1qlKeyword MERGE syn keyword n1qlKeyword NAMESPACE syn keyword n1qlKeyword NEST syn keyword n1qlKeyword OPTION syn keyword n1qlKeyword ORDER syn keyword n1qlKeyword OUTER syn keyword n1qlKeyword OVER syn keyword n1qlKeyword PARSE syn keyword n1qlKeyword PARTITION syn keyword n1qlKeyword PASSWORD syn keyword n1qlKeyword PATH syn keyword n1qlKeyword POOL syn keyword n1qlKeyword PRIMARY syn keyword n1qlKeyword PRIVATE syn keyword n1qlKeyword PRIVILEGE syn keyword n1qlKeyword PROCEDURE syn keyword n1qlKeyword PUBLIC syn keyword n1qlKeyword REALM syn keyword n1qlKeyword REDUCE syn keyword n1qlKeyword RETURN syn keyword n1qlKeyword RETURNING syn keyword n1qlKeyword ROLE syn keyword n1qlKeyword SATISFIES syn keyword n1qlKeyword SCHEMA syn keyword n1qlKeyword SELF syn keyword n1qlKeyword SEMI syn keyword n1qlKeyword SHOW syn keyword n1qlKeyword START syn keyword n1qlKeyword STATISTICS syn keyword n1qlKeyword SYSTEM syn keyword n1qlKeyword THEN syn keyword n1qlKeyword TRANSACTION syn keyword n1qlKeyword TRIGGER syn keyword n1qlKeyword UNDER syn keyword n1qlKeyword UNKNOWN syn keyword n1qlKeyword UNSET syn keyword n1qlKeyword USE syn keyword n1qlKeyword USER syn keyword n1qlKeyword USING syn keyword n1qlKeyword VALIDATE syn keyword n1qlKeyword VALUE syn keyword n1qlKeyword VALUED syn keyword n1qlKeyword VALUES syn keyword n1qlKeyword VIEW syn keyword n1qlKeyword WHEN syn keyword n1qlKeyword WHERE syn keyword n1qlKeyword WHILE syn keyword n1qlKeyword WITHIN syn keyword n1qlKeyword WORK syn keyword n1qlOperator ABS syn keyword n1qlOperator ACOS syn keyword n1qlOperator ARRAY_AGG syn keyword n1qlOperator ARRAY_APPEND syn keyword n1qlOperator ARRAY_AVG syn keyword n1qlOperator ARRAY_CONCAT syn keyword n1qlOperator ARRAY_CONTAINS syn keyword n1qlOperator ARRAY_COUNT syn keyword n1qlOperator ARRAY_DISTINCT syn keyword n1qlOperator ARRAY_FLATTEN syn keyword n1qlOperator ARRAY_IFNULL syn keyword n1qlOperator ARRAY_INSERT syn keyword n1qlOperator ARRAY_INTERSECT syn keyword n1qlOperator ARRAY_LENGTH syn keyword n1qlOperator ARRAY_MAX syn keyword n1qlOperator ARRAY_MIN syn keyword n1qlOperator ARRAY_POSITION syn keyword n1qlOperator ARRAY_PREPEND syn keyword n1qlOperator ARRAY_PUT syn keyword n1qlOperator ARRAY_RANGE syn keyword n1qlOperator ARRAY_REMOVE syn keyword n1qlOperator ARRAY_REPEAT syn keyword n1qlOperator ARRAY_REPLACE syn keyword n1qlOperator ARRAY_REVERSE syn keyword n1qlOperator ARRAY_SORT syn keyword n1qlOperator ARRAY_START syn keyword n1qlOperator ARRAY_SUM syn keyword n1qlOperator ARRAY_SYMDIFF syn keyword n1qlOperator ARRAY_UNION syn keyword n1qlOperator ASIN syn keyword n1qlOperator ATAN syn keyword n1qlOperator ATAN2 syn keyword n1qlOperator AVG syn keyword n1qlOperator BASE64 syn keyword n1qlOperator BASE64_DECODE syn keyword n1qlOperator BASE64_ENCODE syn keyword n1qlOperator CEIL syn keyword n1qlOperator CLOCK_LOCAL syn keyword n1qlOperator CLOCK_STR syn keyword n1qlOperator CLOCK_TZ syn keyword n1qlOperator CLOCK_UTC syn keyword n1qlOperator CLOCL_MILLIS syn keyword n1qlOperator CONTAINS syn keyword n1qlOperator COS syn keyword n1qlOperator COUNT syn keyword n1qlOperator DATE_ADD_MILLIS syn keyword n1qlOperator DATE_ADD_STR syn keyword n1qlOperator DATE_DIFF_MILLIS syn keyword n1qlOperator DATE_DIFF_STR syn keyword n1qlOperator DATE_FORMAT_STR syn keyword n1qlOperator DATE_PART_MILLIS syn keyword n1qlOperator DATE_PART_STR syn keyword n1qlOperator DATE_RANGE_MILLIS syn keyword n1qlOperator DATE_RANGE_STR syn keyword n1qlOperator DATE_TRUC_STR syn keyword n1qlOperator DATE_TRUNC_MILLIS syn keyword n1qlOperator DECODE_JSON syn keyword n1qlOperator DEGREES syn keyword n1qlOperator DURATION_TO_STR syn keyword n1qlOperator E syn keyword n1qlOperator ENCODED_SIZE syn keyword n1qlOperator ENCODE_JSON syn keyword n1qlOperator EXP syn keyword n1qlOperator FLOOR syn keyword n1qlOperator GREATEST syn keyword n1qlOperator IFINF syn keyword n1qlOperator IFMISSING syn keyword n1qlOperator IFMISSINGORNULL syn keyword n1qlOperator IFNAN syn keyword n1qlOperator IFNANORINF syn keyword n1qlOperator IFNULL syn keyword n1qlOperator INITCAP syn keyword n1qlOperator ISARRAY syn keyword n1qlOperator ISATOM syn keyword n1qlOperator ISBOOLEAN syn keyword n1qlOperator ISNUMBER syn keyword n1qlOperator ISOBJECT syn keyword n1qlOperator ISSTRING syn keyword n1qlOperator LEAST syn keyword n1qlOperator LENGTH syn keyword n1qlOperator LN syn keyword n1qlOperator LOG syn keyword n1qlOperator LOWER syn keyword n1qlOperator LTRIM syn keyword n1qlOperator MAX syn keyword n1qlOperator META syn keyword n1qlOperator MILLIS syn keyword n1qlOperator MILLIS_TO_LOCAL syn keyword n1qlOperator MILLIS_TO_STR syn keyword n1qlOperator MILLIS_TO_TZ syn keyword n1qlOperator MILLIS_TO_UTC syn keyword n1qlOperator MILLIS_TO_ZONE_NAME syn keyword n1qlOperator MIN syn keyword n1qlOperator MISSINGIF syn keyword n1qlOperator NANIF syn keyword n1qlOperator NEGINFIF syn keyword n1qlOperator NOW_LOCAL syn keyword n1qlOperator NOW_MILLIS syn keyword n1qlOperator NOW_STR syn keyword n1qlOperator NOW_TZ syn keyword n1qlOperator NOW_UTC syn keyword n1qlOperator NULLIF syn keyword n1qlOperator OBJECT_ADD syn keyword n1qlOperator OBJECT_CONCAT syn keyword n1qlOperator OBJECT_INNER_PAIRS syn keyword n1qlOperator OBJECT_INNER_VALUES syn keyword n1qlOperator OBJECT_LENGTH syn keyword n1qlOperator OBJECT_NAMES syn keyword n1qlOperator OBJECT_PAIRS syn keyword n1qlOperator OBJECT_PUT syn keyword n1qlOperator OBJECT_REMOVE syn keyword n1qlOperator OBJECT_RENAME syn keyword n1qlOperator OBJECT_REPLACE syn keyword n1qlOperator OBJECT_UNWRAP syn keyword n1qlOperator OBJECT_VALUES syn keyword n1qlOperator PI syn keyword n1qlOperator POLY_LENGTH syn keyword n1qlOperator POSINIF syn keyword n1qlOperator POSITION syn keyword n1qlOperator POWER syn keyword n1qlOperator RADIANS syn keyword n1qlOperator RANDOM syn keyword n1qlOperator REGEXP_CONTAINS syn keyword n1qlOperator REGEXP_LIKE syn keyword n1qlOperator REGEXP_POSITION syn keyword n1qlOperator REGEXP_REPLACE syn keyword n1qlOperator REPEAT syn keyword n1qlOperator REPLACE syn keyword n1qlOperator REVERSE syn keyword n1qlOperator ROUND syn keyword n1qlOperator RTRIM syn keyword n1qlOperator SIGN syn keyword n1qlOperator SIN syn keyword n1qlOperator SPLIT syn keyword n1qlOperator SQRT syn keyword n1qlOperator STR_TO_DURATION syn keyword n1qlOperator STR_TO_MILLIS syn keyword n1qlOperator STR_TO_TZ syn keyword n1qlOperator STR_TO_UTC syn keyword n1qlOperator STR_TO_ZONE_NAME syn keyword n1qlOperator SUBSTR syn keyword n1qlOperator SUFFIXES syn keyword n1qlOperator SUM syn keyword n1qlOperator TAN syn keyword n1qlOperator TITLE syn keyword n1qlOperator TOARRAY syn keyword n1qlOperator TOATOM syn keyword n1qlOperator TOBOOLEAN syn keyword n1qlOperator TOKENS syn keyword n1qlOperator TONUMBER syn keyword n1qlOperator TOOBJECT syn keyword n1qlOperator TOSTRING syn keyword n1qlOperator TRIM syn keyword n1qlOperator TRUNC syn keyword n1qlOperator TYPE syn keyword n1qlOperator UPPER syn keyword n1qlOperator UUID syn keyword n1qlOperator WEEKDAY_MILLIS syn keyword n1qlOperator WEEKDAY_STR syn keyword n1qlOperator AND syn keyword n1qlOperator AS syn keyword n1qlOperator BY syn keyword n1qlOperator DISTINCT syn keyword n1qlOperator EXCEPT syn keyword n1qlOperator ILIKE syn keyword n1qlOperator IN syn keyword n1qlOperator INTERSECT syn keyword n1qlOperator IS syn keyword n1qlOperator JOIN syn keyword n1qlOperator LEFT syn keyword n1qlOperator LIKE syn keyword n1qlOperator MINUS syn keyword n1qlOperator NEST syn keyword n1qlOperator NESTING syn keyword n1qlOperator NOT syn keyword n1qlOperator OFFSET syn keyword n1qlOperator ON syn keyword n1qlOperator OR syn keyword n1qlOperator OUT syn keyword n1qlOperator RIGHT syn keyword n1qlOperator SOME syn keyword n1qlOperator TO syn keyword n1qlOperator UNION syn keyword n1qlOperator UNIQUE syn keyword n1qlOperator UNNEST syn keyword n1qlOperator VIA syn keyword n1qlOperator WITH syn keyword n1qlOperator XOR syn keyword n1qlStatement ALTER syn keyword n1qlStatement ANALYZE syn keyword n1qlStatement BUILD syn keyword n1qlStatement COMMIT syn keyword n1qlStatement CREATE syn keyword n1qlStatement DELETE syn keyword n1qlStatement DROP syn keyword n1qlStatement EXECUTE syn keyword n1qlStatement EXPLAIN syn keyword n1qlStatement GRANT syn keyword n1qlStatement INFER syn keyword n1qlStatement INSERT syn keyword n1qlStatement MERGE syn keyword n1qlStatement PREPARE syn keyword n1qlStatement RENAME syn keyword n1qlStatement REVOKE syn keyword n1qlStatement ROLLBACK syn keyword n1qlStatement SELECT syn keyword n1qlStatement SET syn keyword n1qlStatement TRUNCATE syn keyword n1qlStatement UPDATE syn keyword n1qlStatement UPSERT syn keyword n1qlType ARRAY syn keyword n1qlType BINARY syn keyword n1qlType BOOLEAN syn keyword n1qlType NUMBER syn keyword n1qlType OBJECT syn keyword n1qlType RAW syn keyword n1qlType STRING syn region n1qlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region n1qlString start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region n1qlBucketSpec start=+`+ skip=+\\\\\|\\'+ end=+`+ syn match n1qlNumber "-\=\<\d*\.\=[0-9_]\>" syn region n1qlComment start="/\*" end="\*/" contains=n1qlTODO syn match n1qlComment "--.*$" contains=n1qlTODO syn sync ccomment n1qlComment syn keyword n1qlTODO contained TODO FIXME XXX DEBUG NOTE hi def link n1qlBucketSpec Underlined hi def link n1qlComment Comment hi def link n1qlKeyword Macro hi def link n1qlOperator Function hi def link n1qlSpecial Special hi def link n1qlStatement Statement hi def link n1qlString String hi def link n1qlTODO Todo hi def link n1qlType Type let b:current_syntax = "n1ql" if exists("b:current_syntax") finish endif syn case match setlocal iskeyword=.,-,48-58,A-Z,a-z,_ syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)" let s:save_cpo = &cpo set cpo-=C syn match namedComment "//.*" syn match namedComment "#.*" syn region namedComment start="/\*" end="\*/" syn region namedString start=/"/ end=/"/ contained syn match namedError /[^;{#]$/ syn keyword namedInclude include nextgroup=namedString skipwhite syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite syn keyword namedKeyword controls nextgroup=namedSection skipwhite syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite syn keyword namedKeyword options nextgroup=namedOptSection skipwhite syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError syn keyword namedIntKeyword contained key algorithm syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedIntKeyword contained transfer-format syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite syn keyword namedIntKeyword contained grant nextgroup=namedString skipwhite syn keyword namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite syn keyword namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError syn keyword namedOption contained version directory \ nextgroup=namedString skipwhite syn keyword namedOption contained named-xfer dump-file pid-file \ nextgroup=namedString skipwhite syn keyword namedOption contained mem-statistics-file statistics-file \ nextgroup=namedString skipwhite syn keyword namedOption contained auth-nxdomain deallocate-on-exit \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained dialup fake-iquery fetch-glue \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained has-old-clients host-statistics \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained maintain-ixfr-base multiple-cnames \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained notify recursion rfc2308-type1 \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained use-id-pool treat-cr-as-space \ nextgroup=namedBool,namedNotBool skipwhite syn keyword namedOption contained also-notify forwarders \ nextgroup=namedIPlist skipwhite syn keyword namedOption contained forward check-names syn keyword namedOption contained allow-query allow-transfer allow-recursion \ nextgroup=namedAML skipwhite syn keyword namedOption contained blackhole listen-on \ nextgroup=namedIntSection skipwhite syn keyword namedOption contained lame-ttl max-transfer-time-in \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained max-ncache-ttl min-roots \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained serial-queries transfers-in \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained transfers-out transfers-per-ns syn keyword namedOption contained transfer-format syn keyword namedOption contained transfer-source \ nextgroup=namedIPaddr,namedIPerror skipwhite syn keyword namedOption contained max-ixfr-log-size \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained coresize datasize files stacksize syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval \ nextgroup=namedNumber,namedNotNumber skipwhite syn keyword namedOption contained topology sortlist rrset-order \ nextgroup=namedIntSection skipwhite syn match namedOption contained /\/ nextgroup=namedSpareDot syn match namedDomain contained /"\."/ms=s+1,me=e-1 syn match namedSpareDot contained /\./ syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1 syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/ syn match namedEParenError contained +{+ syn match namedParenError +}\([^;]\|$\)+ hi def link namedComment Comment hi def link namedInclude Include hi def link namedKeyword Keyword hi def link namedIntKeyword Keyword hi def link namedIdentifier Identifier hi def link namedIntIdent Identifier hi def link namedString String hi def link namedBool Type hi def link namedNotBool Error hi def link namedNumber Number hi def link namedNotNumber Error hi def link namedOption namedKeyword hi def link namedLogOption namedKeyword hi def link namedCNOption namedKeyword hi def link namedQSKeywords Type hi def link namedCNKeywords Type hi def link namedLogCategory Type hi def link namedIPaddr Number hi def link namedDomain Identifier hi def link namedZoneOpt namedKeyword hi def link namedZoneType Type hi def link namedParenError Error hi def link namedEParenError Error hi def link namedIllegalDom Error hi def link namedIPerror Error hi def link namedSpareDot Error hi def link namedError Error let &cpo = s:save_cpo unlet s:save_cpo let b:current_syntax = "named" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword nanorcTodo contained TODO FIXME XXX NOTE syn region nanorcComment display oneline start='^\s*#' end='$' \ contains=nanorcTodo,@Spell syn match nanorcBegin display '^' \ nextgroup=nanorcKeyword,nanorcComment \ skipwhite syn keyword nanorcKeyword contained set unset \ nextgroup=nanorcBoolOption, \ nanorcStringOption,nanorcNumberOption \ skipwhite syn keyword nanorcKeyword contained syntax \ nextgroup=nanorcSynGroupName skipwhite syn keyword nanorcKeyword contained color \ nextgroup=@nanorcFGColor skipwhite syn keyword nanorcBoolOption contained autoindent backup const cut \ historylog morespace mouse multibuffer \ noconvert nofollow nohelp nowrap preserve \ rebinddelete regexp smarthome smooth suspend \ tempfile view syn keyword nanorcStringOption contained backupdir brackets operatingdir \ punct quotestr speller whitespace \ nextgroup=nanorcString skipwhite syn keyword nanorcNumberOption contained fill tabsize \ nextgroup=nanorcNumber skipwhite syn region nanorcSynGroupName contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ \ nextgroup=nanorcRegexes skipwhite syn match nanorcString contained display '".*"' syn region nanorcRegexes contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ \ nextgroup=nanorcRegexes skipwhite syn match nanorcNumber contained display '[+-]\=\<\d\+\>' syn cluster nanorcFGColor contains=nanorcFGWhite,nanorcFGBlack, \ nanorcFGRed,nanorcFGBlue,nanorcFGGreen, \ nanorcFGYellow,nanorcFGMagenta,nanorcFGCyan, \ nanorcFGBWhite,nanorcFGBBlack,nanorcFGBRed, \ nanorcFGBBlue,nanorcFGBGreen,nanorcFGBYellow, \ nanorcFGBMagenta,nanorcFGBCyan syn keyword nanorcFGWhite contained white \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBlack contained black \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGRed contained red \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBlue contained blue \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGGreen contained green \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGYellow contained yellow \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGMagenta contained magenta \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGCyan contained cyan \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBWhite contained brightwhite \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBBlack contained brightblack \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBRed contained brightred \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBBlue contained brightblue \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBGreen contained brightgreen \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBYellow contained brightyellow \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBMagenta contained brightmagenta \ nextgroup=@nanorcFGSpec skipwhite syn keyword nanorcFGBCyan contained brightcyan \ nextgroup=@nanorcFGSpec skipwhite syn cluster nanorcBGColor contains=nanorcBGWhite,nanorcBGBlack, \ nanorcBGRed,nanorcBGBlue,nanorcBGGreen, \ nanorcBGYellow,nanorcBGMagenta,nanorcBGCyan, \ nanorcBGBWhite,nanorcBGBBlack,nanorcBGBRed, \ nanorcBGBBlue,nanorcBGBGreen,nanorcBGBYellow, \ nanorcBGBMagenta,nanorcBGBCyan syn keyword nanorcBGWhite contained white \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBlack contained black \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGRed contained red \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBlue contained blue \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGGreen contained green \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGYellow contained yellow \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGMagenta contained magenta \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGCyan contained cyan \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBWhite contained brightwhite \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBBlack contained brightblack \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBRed contained brightred \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBBlue contained brightblue \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBGreen contained brightgreen \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBYellow contained brightyellow \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBMagenta contained brightmagenta \ nextgroup=@nanorcBGSpec skipwhite syn keyword nanorcBGBCyan contained brightcyan \ nextgroup=@nanorcBGSpec skipwhite syn match nanorcBGColorSep contained ',' nextgroup=@nanorcBGColor syn cluster nanorcFGSpec contains=nanorcBGColorSep,nanorcRegexes, \ nanorcStartRegion syn cluster nanorcBGSpec contains=nanorcRegexes,nanorcStartRegion syn keyword nanorcStartRegion contained start nextgroup=nanorcStartRegionEq syn match nanorcStartRegionEq contained '=' nextgroup=nanorcRegion syn region nanorcRegion contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ \ nextgroup=nanorcEndRegion skipwhite syn keyword nanorcEndRegion contained end nextgroup=nanorcStartRegionEq syn match nanorcEndRegionEq contained '=' nextgroup=nanorcRegex syn region nanorcRegex contained display oneline start=+"+ \ end=+"\ze\%([[:blank:]]\|$\)+ hi def link nanorcTodo Todo hi def link nanorcComment Comment hi def link nanorcKeyword Keyword hi def link nanorcBoolOption Identifier hi def link nanorcStringOption Identifier hi def link nanorcNumberOption Identifier hi def link nanorcSynGroupName String hi def link nanorcString String hi def link nanorcRegexes nanorcString hi def link nanorcNumber Number hi def nanorcFGWhite ctermfg=Gray guifg=Gray hi def nanorcFGBlack ctermfg=Black guifg=Black hi def nanorcFGRed ctermfg=DarkRed guifg=DarkRed hi def nanorcFGBlue ctermfg=DarkBlue guifg=DarkBlue hi def nanorcFGGreen ctermfg=DarkGreen guifg=DarkGreen hi def nanorcFGYellow ctermfg=Brown guifg=Brown hi def nanorcFGMagenta ctermfg=DarkMagenta guifg=DarkMagenta hi def nanorcFGCyan ctermfg=DarkCyan guifg=DarkCyan hi def nanorcFGBWhite ctermfg=White guifg=White hi def nanorcFGBBlack ctermfg=DarkGray guifg=DarkGray hi def nanorcFGBRed ctermfg=Red guifg=Red hi def nanorcFGBBlue ctermfg=Blue guifg=Blue hi def nanorcFGBGreen ctermfg=Green guifg=Green hi def nanorcFGBYellow ctermfg=Yellow guifg=Yellow hi def nanorcFGBMagenta ctermfg=Magenta guifg=Magenta hi def nanorcFGBCyan ctermfg=Cyan guifg=Cyan hi def link nanorcBGColorSep Normal hi def nanorcBGWhite ctermbg=Gray guibg=Gray hi def nanorcBGBlack ctermbg=Black guibg=Black hi def nanorcBGRed ctermbg=DarkRed guibg=DarkRed hi def nanorcBGBlue ctermbg=DarkBlue guibg=DarkBlue hi def nanorcBGGreen ctermbg=DarkGreen guibg=DarkGreen hi def nanorcBGYellow ctermbg=Brown guibg=Brown hi def nanorcBGMagenta ctermbg=DarkMagenta guibg=DarkMagenta hi def nanorcBGCyan ctermbg=DarkCyan guibg=DarkCyan hi def nanorcBGBWhite ctermbg=White guibg=White hi def nanorcBGBBlack ctermbg=DarkGray guibg=DarkGray hi def nanorcBGBRed ctermbg=Red guibg=Red hi def nanorcBGBBlue ctermbg=Blue guibg=Blue hi def nanorcBGBGreen ctermbg=Green guibg=Green hi def nanorcBGBYellow ctermbg=Yellow guibg=Yellow hi def nanorcBGBMagenta ctermbg=Magenta guibg=Magenta hi def nanorcBGBCyan ctermbg=Cyan guibg=Cyan hi def link nanorcStartRegion Type hi def link nanorcStartRegionEq Operator hi def link nanorcRegion nanorcString hi def link nanorcEndRegion Type hi def link nanorcEndRegionEq Operator hi def link nanorcRegex nanoRegexes let b:current_syntax = "nanorc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore setlocal comments=:; setlocal iskeyword=@,48-57,#,$,.,?,@-@,_,~ syn region nasmComment start=";" keepend end="$" contains=@nasmGrpInComments syn region nasmSpecialComment start=";\*\*\*" keepend end="$" syn keyword nasmInCommentTodo contained TODO FIXME XXX[XXXXX] syn cluster nasmGrpInComments contains=nasmInCommentTodo syn cluster nasmGrpComments contains=@nasmGrpInComments,nasmComment,nasmSpecialComment syn match nasmLabelError "$\=\(\d\+\K\|[#.@]\|\$\$\k\)\k*\>" syn match nasmLabel "\<\(\h\|[?@]\)\k*\>" syn match nasmLabel "[\$\~]\(\h\|[?@]\)\k*\>"lc=1 syn match nasmLocalLabel "\<\.\(\w\|[#$?@~]\)\k*\>" syn match nasmLocalLabel "\<\$\.\(\w\|[#$?@~]\)\k*\>"ms=s+1 if !exists("nasm_no_warn") syn match nasmLabelWarn "\<\~\=\$\=[_.][_.\~]*\>" endif if exists("nasm_loose_syntax") syn match nasmSpecialLabel "\<\.\.@\k\+\>" syn match nasmSpecialLabel "\<\$\.\.@\k\+\>"ms=s+1 if !exists("nasm_no_warn") syn match nasmLabelWarn "\<\$\=\.\.@\(\d\|[#$\.~]\)\k*\>" endif syn match nasmLabelError "\<\$\=\.\.@\d\+\.\k*\>" else syn match nasmSpecialLabel "\<\.\.@\(\h\|[?@]\)\k*\>" syn match nasmSpecialLabel "\<\$\.\.@\(\h\|[?@]\)\k*\>"ms=s+1 endif syn match nasmLabelError "\<\$\K\k*\s*:" syn match nasmLabelError "^\s*\$\K\k*\>" syn match nasmLabelError "\<\~\s*\(\k*\s*:\|\$\=\.\k*\)" syn match nasmStringError +["'`]+ syn case match syn match nasmCStringEscape display contained "\\[’"‘\\\?abtnvfre]" syn match nasmCStringEscape display contained "\\\(x\x\{2}\|\o\{1,3}\)" syn match nasmCStringEscape display contained "\\\(u\x\{4}\|U\x\{8}\)" syn match nasmCStringFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match nasmCStringFormat display "%%" contained syn match nasmString +\("[^"]\{-}"\|'[^']\{-}'\)+ syn match nasmCString +\(`[^`]\{-}`\)+ contains=nasmCStringEscape,nasmCStringFormat extend syn case ignore syn match nasmBinNumber "\<[0-1]\+b\>" syn match nasmBinNumber "\<\~[0-1]\+b\>"lc=1 syn match nasmOctNumber "\<\o\+q\>" syn match nasmOctNumber "\<\~\o\+q\>"lc=1 syn match nasmDecNumber "\<\d\+\>" syn match nasmDecNumber "\<\~\d\+\>"lc=1 syn match nasmHexNumber "\<\(\d\x*h\|0x\x\+\|\$\d\x*\)\>" syn match nasmHexNumber "\<\~\(\d\x*h\|0x\x\+\|\$\d\x*\)\>"lc=1 syn match nasmFltNumber "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>" syn keyword nasmFltNumber Inf Infinity Indefinite NaN SNaN QNaN syn match nasmNumberError "\<\~\s*\d\+\.\d*\(e[+-]\=\d\+\)\=\>" syn keyword nasmTypeError DF EXTRN FWORD RESF TBYTE syn keyword nasmType FAR NEAR SHORT syn keyword nasmType BYTE WORD DWORD QWORD DQWORD HWORD DHWORD TWORD syn keyword nasmType CDECL FASTCALL NONE PASCAL STDCALL syn keyword nasmStorage DB DW DD DQ DDQ DT syn keyword nasmStorage RESB RESW RESD RESQ RESDQ REST syn keyword nasmStorage EXTERN GLOBAL COMMON syn match nasmTypeError "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" syn match nasmStructureLabel contained "\<\(AT\|I\=\(END\)\=\(STRUCT\=\|UNION\)\|I\=END\)\>" syn cluster nasmGrpCntnStruc contains=ALLBUT,@nasmGrpInComments,nasmMacroDef,@nasmGrpInMacros,@nasmGrpInPreCondits,nasmStructureDef,@nasmGrpInStrucs syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnStruc syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnStruc syn region nasmStructureDef transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnStruc,nasmInStructure syn match nasmInStructure contained "^\s*AT\>"hs=e-1 syn cluster nasmGrpInStrucs contains=nasmStructure,nasmInStructure,nasmStructureLabel syn match nasmPreProcError "%{\=\(%\=\k\+\|%%\+\k*\|[+-]\=\d\+\)}\=" if exists("nasm_loose_syntax") syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError else syn cluster nasmGrpNxtCtx contains=nasmStructureLabel,nasmLabel,nasmLabelError,nasmPreProcError endif syn cluster nasmGrpCntnMacro contains=ALLBUT,@nasmGrpInComments,nasmStructureDef,@nasmGrpInStrucs,nasmMacroDef,@nasmGrpPreCondits,nasmMemReference,nasmInMacPreCondit,nasmInMacStrucDef syn region nasmMacroDef matchgroup=nasmMacro keepend start="^\s*%macro\>"hs=e-5 start="^\s*%imacro\>"hs=e-6 end="^\s*%endmacro\>"re=e-9 contains=@nasmGrpCntnMacro,nasmInMacStrucDef if exists("nasm_loose_syntax") syn match nasmInMacLabel contained "%\(%\k\+\>\|{%\k\+}\)" syn match nasmInMacLabel contained "%\($\+\(\w\|[#\.?@~]\)\k*\>\|{$\+\(\w\|[#\.?@~]\)\k*}\)" syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=nasmStructureLabel,nasmLabel,nasmInMacParam,nasmLocalLabel,nasmSpecialLabel,nasmLabelError,nasmPreProcError if !exists("nasm_no_warn") syn match nasmInMacLblWarn contained "%\(%[$\.]\k*\>\|{%[$\.]\k*}\)" syn match nasmInMacLblWarn contained "%\($\+\(\d\|[#\.@~]\)\k*\|{\$\+\(\d\|[#\.@~]\)\k*}\)" hi link nasmInMacCatLabel nasmInMacLblWarn else hi link nasmInMacCatLabel nasmInMacLabel endif else syn match nasmInMacLabel contained "%\(%\(\w\|[#?@~]\)\k*\>\|{%\(\w\|[#?@~]\)\k*}\)" syn match nasmInMacLabel contained "%\($\+\(\h\|[?@]\)\k*\>\|{$\+\(\h\|[?@]\)\k*}\)" hi link nasmInMacCatLabel nasmLabelError endif syn match nasmInMacCatLabel contained "\d\K\k*"lc=1 syn match nasmInMacLabel contained "\d}\k\+"lc=2 if !exists("nasm_no_warn") syn match nasmInMacLblWarn contained "%\(\($\+\|%\)[_~][._~]*\>\|{\($\+\|%\)[_~][._~]*}\)" endif syn match nasmInMacPreProc contained "^\s*%pop\>"hs=e-3 syn match nasmInMacPreProc contained "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUCT\>"hs=e-5 end="^\s*ENDSTRUCT\>"re=e-9 contains=@nasmGrpCntnMacro syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="^\s*STRUC\>"hs=e-4 end="^\s*ENDSTRUC\>"re=e-8 contains=@nasmGrpCntnMacro syn region nasmInMacStrucDef contained transparent matchgroup=nasmStructure keepend start="\" end="\" contains=@nasmGrpCntnMacro,nasmInStructure syn region nasmInMacPreConDef contained transparent matchgroup=nasmInMacPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(ctx\|def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(ctx\|def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnMacro,nasmInMacPreCondit,nasmInPreCondit syn match nasmInMacPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx syn match nasmInMacPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx syn match nasmInMacPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx syn match nasmInMacParamNum contained "\<\d\+\.list\>"me=e-5 syn match nasmInMacParamNum contained "\<\d\+\.nolist\>"me=e-7 syn match nasmInMacDirective contained "\.\(no\)\=list\>" syn match nasmInMacMacro contained transparent "macro\s"lc=5 skipwhite nextgroup=nasmStructureLabel syn match nasmInMacMacro contained "^\s*%rotate\>"hs=e-6 syn match nasmInMacParam contained "%\([+-]\=\d\+\|{[+-]\=\d\+}\)" syn cluster nasmGrpInMacros contains=nasmMacro,nasmInMacMacro,nasmInMacParam,nasmInMacParamNum,nasmInMacDirective,nasmInMacLabel,nasmInMacLblWarn,nasmInMacMemRef,nasmInMacPreConDef,nasmInMacPreCondit,nasmInMacPreProc,nasmInMacStrucDef if exists("nasm_ctx_outside_macro") syn region nasmPreConditDef transparent matchgroup=nasmCtxPreCondit start="^\s*%ifnctx\>"hs=e-6 start="^\s*%ifctx\>"hs=e-5 end="%endif\>" contains=@nasmGrpCntnPreCon syn match nasmCtxPreProc "^\s*%pop\>"hs=e-3 if exists("nasm_loose_syntax") syn match nasmCtxLocLabel "%$\+\(\w\|[#.?@~]\)\k*\>" else syn match nasmCtxLocLabel "%$\+\(\h\|[?@]\)\k*\>" endif syn match nasmCtxPreProc "^\s*%\(push\|repl\)\>"hs=e-4 skipwhite nextgroup=@nasmGrpNxtCtx syn match nasmCtxPreCondit contained transparent "ctx\s"lc=3 skipwhite nextgroup=@nasmGrpNxtCtx syn match nasmCtxPreCondit contained "^\s*%elifctx\>"hs=e-7 skipwhite nextgroup=@nasmGrpNxtCtx syn match nasmCtxPreCondit contained "^\s*%elifnctx\>"hs=e-8 skipwhite nextgroup=@nasmGrpNxtCtx if exists("nasm_no_warn") hi link nasmCtxPreCondit nasmPreCondit hi link nasmCtxPreProc nasmPreProc hi link nasmCtxLocLabel nasmLocalLabel else hi link nasmCtxPreCondit nasmPreProcWarn hi link nasmCtxPreProc nasmPreProcWarn hi link nasmCtxLocLabel nasmLabelWarn endif endif syn cluster nasmGrpCntnPreCon contains=ALLBUT,@nasmGrpInComments,@nasmGrpInMacros,@nasmGrpInStrucs syn region nasmPreConditDef transparent matchgroup=nasmPreCondit start="^\s*%ifnidni\>"hs=e-7 start="^\s*%if\(idni\|n\(def\|idn\|num\|str\)\)\>"hs=e-6 start="^\s*%if\(def\|idn\|nid\|num\|str\)\>"hs=e-5 start="^\s*%ifid\>"hs=e-4 start="^\s*%if\>"hs=e-2 end="%endif\>" contains=@nasmGrpCntnPreCon syn match nasmInPreCondit contained "^\s*%el\(if\|se\)\>"hs=e-4 syn match nasmInPreCondit contained "^\s*%elifid\>"hs=e-6 syn match nasmInPreCondit contained "^\s*%elif\(def\|idn\|nid\|num\|str\)\>"hs=e-7 syn match nasmInPreCondit contained "^\s*%elif\(n\(def\|idn\|num\|str\)\|idni\)\>"hs=e-8 syn match nasmInPreCondit contained "^\s*%elifnidni\>"hs=e-9 syn cluster nasmGrpInPreCondits contains=nasmPreCondit,nasmInPreCondit,nasmCtxPreCondit syn cluster nasmGrpPreCondits contains=nasmPreConditDef,@nasmGrpInPreCondits,nasmCtxPreProc,nasmCtxLocLabel syn match nasmPreProc "^\s*%\(rep\|use\)\>"hs=e-3 syn match nasmPreProc "^\s*%line\>"hs=e-4 syn match nasmPreProc "^\s*%\(clear\|error\|fatal\)\>"hs=e-5 syn match nasmPreProc "^\s*%\(endrep\|strlen\|substr\)\>"hs=e-6 syn match nasmPreProc "^\s*%\(exitrep\|warning\)\>"hs=e-7 syn match nasmDefine "^\s*%undef\>"hs=e-5 syn match nasmDefine "^\s*%\(assign\|define\)\>"hs=e-6 syn match nasmDefine "^\s*%i\(assign\|define\)\>"hs=e-7 syn match nasmDefine "^\s*%unmacro\>"hs=e-7 syn match nasmInclude "^\s*%include\>"hs=e-7 syn cluster nasmGrpPreProcs contains=nasmMacroDef,@nasmGrpInMacros,@nasmGrpPreCondits,nasmPreProc,nasmDefine,nasmInclude,nasmPreProcWarn,nasmPreProcError syn match nasmGen08Register "\<[A-D][HL]\>" syn match nasmGen16Register "\<\([A-D]X\|[DS]I\|[BS]P\)\>" syn match nasmGen32Register "\" syn match nasmGen64Register "\" syn match nasmSegRegister "\<[C-GS]S\>" syn match nasmSpcRegister "\" syn match nasmFpuRegister "\" syn match nasmMmxRegister "\" syn match nasmSseRegister "\" syn match nasmCtrlRegister "\" syn match nasmDebugRegister "\" syn match nasmTestRegister "\" syn match nasmRegisterError "\<\(CR[15-9]\|DR[4-58-9]\|TR[0-28-9]\)\>" syn match nasmRegisterError "\" syn match nasmRegisterError "\\)" syn match nasmRegisterError "\" syn match nasmMemRefError "[[\]]" syn cluster nasmGrpCntnMemRef contains=ALLBUT,@nasmGrpComments,@nasmGrpPreProcs,@nasmGrpInStrucs,nasmMemReference,nasmMemRefError syn match nasmInMacMemRef contained "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmInMacLabel,nasmInMacLblWarn,nasmInMacParam syn match nasmMemReference "\[[^;[\]]\{-}\]" contains=@nasmGrpCntnMemRef,nasmPreProcError,nasmCtxLocLabel syn keyword nasmConstant __BITS__ __DATE__ __FILE__ __FORMAT__ __LINE__ syn keyword nasmConstant __NASM_MAJOR__ __NASM_MINOR__ __NASM_VERSION__ syn keyword nasmConstant __TIME__ syn match nasmInstructnError "\" syn match nasmInstrModifier "\(^\|:\)\s*[C-GS]S\>"ms=e-1 syn keyword nasmInstrModifier A16 A32 O16 O32 syn match nasmInstrModifier "\"lc=5,ms=e-1 syn keyword nasmRepeat TIMES syn keyword nasmDirective ALIGN[B] INCBIN EQU NOSPLIT SPLIT syn keyword nasmDirective ABSOLUTE BITS SECTION SEGMENT syn keyword nasmDirective ENDSECTION ENDSEGMENT syn keyword nasmDirective __SECT__ syn case match syn keyword nasmStdDirective ENDPROC EPILOGUE LOCALS PROC PROLOGUE USES syn keyword nasmStdDirective ENDIF ELSE ELIF ELSIF IF syn keyword nasmStdDirective DO ENDFOR ENDWHILE FOR REPEAT UNTIL WHILE EXIT syn case ignore syn keyword nasmFmtDirective ORG syn keyword nasmFmtDirective EXPORT IMPORT GROUP UPPERCASE SEG WRT syn keyword nasmFmtDirective LIBRARY syn case match syn keyword nasmFmtDirective _GLOBAL_OFFSET_TABLE_ __GLOBAL_OFFSET_TABLE_ syn keyword nasmFmtDirective ..start ..got ..gotoff ..gotpc ..plt ..sym syn case ignore syn match nasmInstructnError "\<\(F\=CMOV\|SET\)N\=\a\{0,2}\>" syn keyword nasmInstructnError CMPS MOVS LCS LODS STOS XLAT syn match nasmStdInstruction "\" syn match nasmInstructnError "\\s*[^:]"he=e-1 syn match nasmStdInstruction "\<\(CMOV\|J\|SET\)\(N\=\([ABGL]E\=\|[CEOSZ]\)\|P[EO]\=\)\>" syn match nasmStdInstruction "\" syn keyword nasmStdInstruction AAA AAD AAM AAS ADC ADD AND syn keyword nasmStdInstruction BOUND BSF BSR BSWAP BT[C] BTR BTS syn keyword nasmStdInstruction CALL CBW CDQ CLC CLD CMC CMP CMPSB CMPSD CMPSW CMPSQ syn keyword nasmStdInstruction CMPXCHG CMPXCHG8B CPUID CWD[E] CQO syn keyword nasmStdInstruction DAA DAS DEC DIV ENTER syn keyword nasmStdInstruction IDIV IMUL INC INT[O] IRET[D] IRETW IRETQ syn keyword nasmStdInstruction JCXZ JECXZ JMP syn keyword nasmStdInstruction LAHF LDS LEA LEAVE LES LFS LGS LODSB LODSD LODSQ syn keyword nasmStdInstruction LODSW LOOP[E] LOOPNE LOOPNZ LOOPZ LSS syn keyword nasmStdInstruction MOVSB MOVSD MOVSW MOVSX MOVSQ MOVZX MUL NEG NOP NOT syn keyword nasmStdInstruction OR POPA[D] POPAW POPF[D] POPFW POPFQ syn keyword nasmStdInstruction PUSH[AD] PUSHAW PUSHF[D] PUSHFW PUSHFQ syn keyword nasmStdInstruction RCL RCR RETF RET[N] ROL ROR syn keyword nasmStdInstruction SAHF SAL SAR SBB SCASB SCASD SCASW syn keyword nasmStdInstruction SHL[D] SHR[D] STC STD STOSB STOSD STOSW STOSQ SUB syn keyword nasmStdInstruction TEST XADD XCHG XLATB XOR syn keyword nasmStdInstruction LFENCE MFENCE SFENCE syn keyword nasmSysInstruction ARPL LAR LSL VERR VERW syn keyword nasmSysInstruction LLDT SLDT LGDT SGDT syn keyword nasmSysInstruction LTR STR syn keyword nasmSysInstruction CLTS LOCK WAIT syn keyword nasmInstructnError INS OUTS syn keyword nasmSysInstruction IN INSB INSW INSD OUT OUTSB OUTSB OUTSW OUTSD syn keyword nasmSysInstruction CLI STI LIDT SIDT syn match nasmSysInstruction "\"me=s+3 syn keyword nasmSysInstruction HLT INVD LMSW syn keyword nasmSseInstruction PREFETCHT0 PREFETCHT1 PREFETCHT2 PREFETCHNTA syn keyword nasmSseInstruction RSM SFENCE SMSW SYSENTER SYSEXIT UD2 WBINVD syn match nasmSysInstruction "\"me=s+3 syn keyword nasmSysInstruction INVLPG syn match nasmDbgInstruction "\"me=s+3 syn keyword nasmDbgInstruction INT1 INT3 RDMSR RDTSC RDPMC WRMSR syn match nasmFpuInstruction "\" syn keyword nasmFpuInstruction F2XM1 FABS FADD[P] FBLD FBSTP syn keyword nasmFpuInstruction FCHS FCLEX FCOM[IP] FCOMP[P] FCOS syn keyword nasmFpuInstruction FDECSTP FDISI FDIV[P] FDIVR[P] FENI FFREE syn keyword nasmFpuInstruction FIADD FICOM[P] FIDIV[R] FILD syn keyword nasmFpuInstruction FIMUL FINCSTP FINIT FIST[P] FISUB[R] syn keyword nasmFpuInstruction FLD[1] FLDCW FLDENV FLDL2E FLDL2T FLDLG2 syn keyword nasmFpuInstruction FLDLN2 FLDPI FLDZ FMUL[P] syn keyword nasmFpuInstruction FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE syn keyword nasmFpuInstruction FNSTCW FNSTENV FNSTSW FNSTSW syn keyword nasmFpuInstruction FPATAN FPREM[1] FPTAN FRNDINT FRSTOR syn keyword nasmFpuInstruction FSAVE FSCALE FSETPM FSIN FSINCOS FSQRT syn keyword nasmFpuInstruction FSTCW FSTENV FST[P] FSTSW FSUB[P] FSUBR[P] syn keyword nasmFpuInstruction FTST FUCOM[IP] FUCOMP[P] syn keyword nasmFpuInstruction FXAM FXCH FXTRACT FYL2X FYL2XP1 syn match nasmInstructnError "\" syn match nasmInstructnError "\" syn keyword nasmMmxInstruction EMMS MOVD MOVQ syn keyword nasmMmxInstruction PACKSSDW PACKSSWB PACKUSWB PADDB PADDD PADDW syn keyword nasmMmxInstruction PADDSB PADDSW PADDUSB PADDUSW PAND[N] syn keyword nasmMmxInstruction PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW syn keyword nasmMmxInstruction PMACHRIW PMADDWD PMULHW PMULLW POR syn keyword nasmMmxInstruction PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW syn keyword nasmMmxInstruction PSUBB PSUBD PSUBW PSUBSB PSUBSW PSUBUSB PSUBUSW syn keyword nasmMmxInstruction PUNPCKHBW PUNPCKHDQ PUNPCKHWD syn keyword nasmMmxInstruction PUNPCKLBW PUNPCKLDQ PUNPCKLWD PXOR syn keyword nasmMmxInstruction MASKMOVQ MOVNTQ syn keyword nasmMmxInstruction PAVGB PAVGW PEXTRW PINSRW PMAXSW PMAXUB syn keyword nasmMmxInstruction PMINSW PMINUB PMOVMSKB PMULHUW PSADBW PSHUFW syn match nasmInstructnError "\" syn match nasmSseInstruction "\" syn keyword nasmSseInstruction ADDPS ADDSS ANDNPS ANDPS syn keyword nasmSseInstruction COMISS CVTPI2PS CVTPS2PI syn keyword nasmSseInstruction CVTSI2SS CVTSS2SI CVTTPS2PI CVTTSS2SI syn keyword nasmSseInstruction DIVPS DIVSS FXRSTOR FXSAVE LDMXCSR syn keyword nasmSseInstruction MAXPS MAXSS MINPS MINSS MOVAPS MOVHLPS MOVHPS syn keyword nasmSseInstruction MOVLHPS MOVLPS MOVMSKPS MOVNTPS MOVSS MOVUPS syn keyword nasmSseInstruction MULPS MULSS syn keyword nasmSseInstruction ORPS RCPPS RCPSS RSQRTPS RSQRTSS syn keyword nasmSseInstruction SHUFPS SQRTPS SQRTSS STMXCSR SUBPS SUBSS syn keyword nasmSseInstruction UCOMISS UNPCKHPS UNPCKLPS XORPS syn keyword nasmNowInstruction FEMMS PAVGUSB PF2ID PFACC PFADD PFCMPEQ PFCMPGE syn keyword nasmNowInstruction PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 syn keyword nasmNowInstruction PFRCPIT2 PFRSQIT1 PFRSQRT PFSUB[R] PI2FD syn keyword nasmNowInstruction PMULHRWA PREFETCH[W] syn keyword nasmCrxInstruction PADDSIW PAVEB PDISTIB PMAGW PMULHRW[C] PMULHRIW syn keyword nasmCrxInstruction PMVGEZB PMVLZB PMVNZB PMVZB PSUBSIW syn keyword nasmCrxInstruction RDSHR RSDC RSLDT SMINT SMINTOLD SVDC SVLDT SVTS syn keyword nasmCrxInstruction WRSHR syn keyword nasmAmdInstruction SYSCALL SYSRET syn match nasmUndInstruction "\"me=s+3 syn keyword nasmUndInstruction CMPXCHG486 IBTS ICEBP INT01 INT03 LOADALL syn keyword nasmUndInstruction LOADALL286 LOADALL386 SALC SMI UD1 UMOV XBTS syn sync clear syn sync minlines=50 "for multiple region nesting syn sync match nasmSync grouphere nasmMacroDef "^\s*%i\=macro\>"me=s-1 syn sync match nasmSync grouphere NONE "^\s*%endmacro\>" hi def link nasmInMacDirective nasmDirective hi def link nasmInMacLabel nasmLocalLabel hi def link nasmInMacLblWarn nasmLabelWarn hi def link nasmInMacMacro nasmMacro hi def link nasmInMacParam nasmMacro hi def link nasmInMacParamNum nasmDecNumber hi def link nasmInMacPreCondit nasmPreCondit hi def link nasmInMacPreProc nasmPreProc hi def link nasmInPreCondit nasmPreCondit hi def link nasmInStructure nasmStructure hi def link nasmStructureLabel nasmStructure hi def link nasmComment Comment hi def link nasmSpecialComment SpecialComment hi def link nasmInCommentTodo Todo hi def link nasmString String hi def link nasmCString String hi def link nasmStringError Error hi def link nasmCStringEscape SpecialChar hi def link nasmCStringFormat SpecialChar hi def link nasmBinNumber Number hi def link nasmOctNumber Number hi def link nasmDecNumber Number hi def link nasmHexNumber Number hi def link nasmFltNumber Float hi def link nasmNumberError Error hi def link nasmLabel Identifier hi def link nasmLocalLabel Identifier hi def link nasmSpecialLabel Special hi def link nasmLabelError Error hi def link nasmLabelWarn Todo hi def link nasmPreProc PreProc hi def link nasmDefine Define hi def link nasmInclude Include hi def link nasmMacro Macro hi def link nasmPreCondit PreCondit hi def link nasmPreProcError Error hi def link nasmPreProcWarn Todo hi def link nasmType Type hi def link nasmStorage StorageClass hi def link nasmStructure Structure hi def link nasmTypeError Error hi def link nasmConstant Constant hi def link nasmInstrModifier Operator hi def link nasmRepeat Repeat hi def link nasmDirective Keyword hi def link nasmStdDirective Operator hi def link nasmFmtDirective Keyword hi def link nasmCtrlRegister Special hi def link nasmDebugRegister Debug hi def link nasmTestRegister Special hi def link nasmRegisterError Error hi def link nasmMemRefError Error hi def link nasmStdInstruction Statement hi def link nasmSysInstruction Statement hi def link nasmDbgInstruction Debug hi def link nasmFpuInstruction Statement hi def link nasmMmxInstruction Statement hi def link nasmSseInstruction Statement hi def link nasmNowInstruction Statement hi def link nasmAmdInstruction Special hi def link nasmCrxInstruction Special hi def link nasmUndInstruction Todo hi def link nasmInstructnError Error let b:current_syntax = "nasm" if exists("b:current_syntax") finish endif syn case ignore syn keyword nastranDmapexecmod call dbview delete end equiv equivx exit syn keyword nastranDmapexecmod file message purge purgex return subdmap syn keyword nastranDmapType type syn keyword nastranDmapLabel go to goto syn keyword nastranDmapRepeat if else elseif endif then syn keyword nastranDmapRepeat do while syn region nastranDmapString start=+"+ end=+"+ oneline syn region nastranDmapString start=+'+ end=+'+ oneline syn match nastranDmapNumber "-\=\<[0-9]\+\>" syn match nastranDmapFloat "\<[0-9]\+\.[0-9]*\([edED][-+]\=[0-9]\+\)\=\>" syn match nastranDmapFloat "\.[0-9]\+\([edED][-+]\=[0-9]\+\)\=\>" syn match nastranDmapFloat "\<[0-9]\+[edED][-+]\=[0-9]\+\>" syn match nastranDmapLogical "\(true\|false\)" syn match nastranDmapPreCondit "^#define\>" syn match nastranDmapPreCondit "^#include\>" syn match nastranDmapComment "^[\$].*$" syn match nastranDmapComment "\$.*$" syn match nastranDmapComment "^[\$].*$" contained syn match nastranDmapComment "\$.*$" contained syn match nastranDmapComment "^.\{-72}.*$"lc=72 contained syn keyword nastranDmapUtilmod append copy dbc dbdict dbdir dmin drms1 syn keyword nastranDmapUtilmod dtiin eltprt ifp ifp1 inputt2 inputt4 lamx syn keyword nastranDmapUtilmod matgen matgpr matmod matpch matprn matprt syn keyword nastranDmapUtilmod modtrl mtrxin ofp output2 output4 param syn keyword nastranDmapUtilmod paraml paramr prtparam pvt scalar syn keyword nastranDmapUtilmod seqp setval tabedit tabprt tabpt vec vecplot syn keyword nastranDmapUtilmod xsort syn keyword nastranDmapMatmod add add5 cead dcmp decomp diagonal fbs merge syn keyword nastranDmapMatmod mpyad norm read reigl smpyad solve solvit syn keyword nastranDmapMatmod trnsp umerge umerge1 upartn dmiin partn syn region nastranDmapMatmod start=+^ *[Dd][Mm][Ii]+ end=+[\/]+ syn keyword nastranDmapImplicit abs acos acosh andl asin asinh atan atan2 syn keyword nastranDmapImplicit atanh atanh2 char clen clock cmplx concat1 syn keyword nastranDmapImplicit concat2 concat3 conjg cos cosh dble diagoff syn keyword nastranDmapImplicit diagon dim dlablank dlxblank dprod eqvl exp syn keyword nastranDmapImplicit getdiag getsys ichar imag impl index indexstr syn keyword nastranDmapImplicit int itol leq lge lgt lle llt lne log log10 syn keyword nastranDmapImplicit logx ltoi mcgetsys mcputsys max min mod neqvl syn keyword nastranDmapImplicit nint noop normal notl numeq numge numgt numle syn keyword nastranDmapImplicit numlt numne orl pi precison putdiag putsys syn keyword nastranDmapImplicit rand rdiagon real rtimtogo setcore sign sin syn keyword nastranDmapImplicit sinh sngl sprod sqrt substrin tan tanh syn keyword nastranDmapImplicit timetogo wlen xorl syn keyword nastranNastranCard nastran syn region nastranFMSCard start=+^ *[Aa][Cc][Qq][Uu][Ii]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Aa][Ss][Ss][Ii][Gg]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Cc][oO][Nn][Nn][Ee]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Cc][Ll][Ee]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Dd][Ii][Cc]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Dd][Ii][Rr]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ff][Ii][Xx]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ll][Oo][Aa]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ll][Oo][Cc]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Ss][Ee][Tt]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Uu][Nn][Ll]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Bb][Uu][Pp][Dd]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Dd][Ee][Ff][Ii][Nn]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ee][Nn][Dd][Jj][Oo]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ee][Xx][Pp][Aa][Nn]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ii][Nn][Cc][Ll][Uu]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Ii][Nn][Ii][Tt]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Pp][Rr][Oo][Jj]+ end=+$+ oneline syn region nastranFMSCard start=+^ *[Rr][Ee][Ss][Tt]+ end=+$+ oneline syn match nastranDmapUtilmod "^ *[Rr][Ee][Ss][Tt][Aa].*,.*," contains=nastranDmapComment syn region nastranECSCard start=+^ *[Aa][Ll][Tt][Ee][Rr]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Aa][Pp][Pp]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Cc][Oo][Mm][Pp][Ii]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Dd][Ii][Aa][Gg] + end=+$+ oneline syn region nastranECSCard start=+^ *[Ee][Cc][Hh][Oo]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ee][Nn][Dd][Aa][Ll]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ii][Dd]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ii][Nn][Cc][Ll][Uu]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ll][Ii][Nn][Kk]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Mm][Aa][Ll][Tt][Ee]+ end=+$+ oneline syn region nastranECSCard start=+^ *[Ss][Oo][Ll] + end=+$+ oneline syn region nastranECSCard start=+^ *[Tt][Ii][Mm][Ee]+ end=+$+ oneline syn match nastranDelimiter "[Cc][Ee][Nn][Dd]" contained syn match nastranDelimiter "[Bb][Ee][Gg][Ii][Nn]" contained syn match nastranDelimiter " *[Bb][Uu][Ll][Kk]" contained syn match nastranDelimiter "[Ee][Nn][Dd] *[dD][Aa][Tt][Aa]" contained syn region nastranCC start=+^ *[Cc][Ee][Nn][Dd]+ end=+^ *[Bb][Ee][Gg][Ii][Nn]+ contains=nastranDelimiter,nastranBulkData,nastranDmapComment syn region nastranBulkData start=+ *[Bb][Uu][Ll][Kk] *$+ end=+^ [Ee][Nn][Dd] *[Dd]+ contains=nastranDelimiter,nastranDmapComment syn keyword nastranUtilCard ECHOON ECHOOFF INCLUDE PARAM hi def link nastranDmapexecmod Statement hi def link nastranDmapType Type hi def link nastranDmapPreCondit Error hi def link nastranDmapUtilmod PreProc hi def link nastranDmapMatmod nastranDmapUtilmod hi def link nastranDmapString String hi def link nastranDmapNumber Constant hi def link nastranDmapFloat nastranDmapNumber hi def link nastranDmapInitTab nastranDmapNumber hi def link nastranDmapTab nastranDmapNumber hi def link nastranDmapLogical nastranDmapExecmod hi def link nastranDmapImplicit Identifier hi def link nastranDmapComment Comment hi def link nastranDmapRepeat nastranDmapexecmod hi def link nastranNastranCard nastranDmapPreCondit hi def link nastranECSCard nastranDmapUtilmod hi def link nastranFMSCard nastranNastranCard hi def link nastranCC nastranDmapexecmod hi def link nastranDelimiter Special hi def link nastranBulkData nastranDmapType hi def link nastranUtilCard nastranDmapexecmod let b:current_syntax = "nastran" if exists("b:current_syntax") finish endif setlocal iskeyword+=-,*,#,+,_,/ let s:cpo_save = &cpo set cpo&vim syntax case ignore syn keyword naturalInclude include nextgroup=naturalObjName skipwhite syn keyword naturalKeyword define data end-define syn keyword naturalKeyword independent global parameter local redefine view syn keyword naturalKeyword const[ant] init initial syn keyword naturalLoop read end-read end-work find end-find histogram end-histogram syn keyword naturalLoop end-all sort end-sort sorted descending ascending syn keyword naturalRepeat repeat end-repeat while until for step end-for syn keyword naturalKeyword in file with field starting from ending at thru by isn where syn keyword naturalError on error end-error syn keyword naturalKeyword accept reject end-enddata number unique retain as release syn keyword naturalKeyword start end-start break end-break physical page top sequence syn keyword naturalKeyword end-toppage end-endpage end-endfile before processing syn keyword naturalKeyword end-before syn keyword naturalConditional if then else end-if end-norec syn keyword naturalConditional decide end-decide value when condition none any syn keyword naturalKeyword reset assign move left right justified compress to into edited syn keyword naturalKeyword add subtract multiply divide compute name syn keyword naturalKeyword all giving remainder rounded leaving space numeric syn keyword naturalKeyword examine full replace giving separate delimiter modified syn keyword naturalKeyword suspend identical suppress syn keyword naturalFlow callnat fetch return enter escape bottom top stack formatted syn keyword naturalFlow command call syn keyword naturalflow end-subroutine routine syn keyword naturalKeyword update store get delete end transaction work once close syn keyword naturalKeyword first every of no record[s] found ignore immediate syn keyword naturalKeyword set settime key control stop terminate syn keyword naturalKeyword write display input reinput notitle nohdr map newpage syn keyword naturalKeyword alarm text help eject index window base size syn keyword naturalKeyword format printer skip lines syn keyword naturalKeyword abs atn cos exp frac int log sgn sin sqrt tan val old syn keyword naturalKeyword pos syn keyword naturalRMKeyword same loop obtain indexed do doend syn keyword naturalFlow perform subroutine nextgroup=naturalFunction skipwhite syn match naturalFunction "\<[a-z][-_a-z0-9]*\>" syn keyword naturalFlow using nextgroup=naturalKeyword,naturalObjName skipwhite syn match naturalObjName "\<[a-z][-_a-z0-9]\{,7}\>" syn match naturalLabel "\<[+#a-z][-_#a-z0-9]*\." syn match naturalRef "\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>" syn keyword naturalKeyword mark nextgroup=naturalMark skipwhite syn match naturalMark "\<\*[a-z][-_#.a-z0-9]*\>" syn match naturalSysVar "\<\*[a-z][-a-z0-9]*\>" syn match naturalNumber "\<-\=\d\+\>" syn match naturalNumber "\<-\=\d\+\.\d\+\>" syn match naturalNumber "\.\d\+" syn match naturalFormat "\<\d\+[TX]\>" syn match naturalString "H'\x\+'" syn region naturalString start=+"+ end=+"+ syn region naturalString start=+'+ end=+'+ syn match naturalAttribute "\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>" syn match naturalType contained "\<[ABINP]\d\+\(,\d\+\)\=\>" syn match naturalType contained "\<[CL]\>" syn keyword naturalTodo contained todo test syn match naturalCommentMark contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1 syn region naturalComment start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn region naturalComment start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn region naturalComment start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn match naturalComment "^\*$" syn match naturalComment "^\d\{4} \*$"lc=5 syn region naturalPComment contained start="/\*\s*[^),]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark syn keyword naturalOperator and or not eq ne gt lt ge le mask scan modified syn keyword naturalBoolean true false syn match naturalLineNo "^\d\{4}" syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1 syn match naturalIdent "\<[+#a-z][-_#a-z0-9]*$" syn match naturalLegalIdent "[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*" syn region naturalPar matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment syn match naturalLineRef "(\d\{4})" syntax cluster naturalConstant contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean if v:version >= 600 set foldignore=* endif hi def link naturalFormat Constant hi def link naturalAttribute Constant hi def link naturalNumber Number hi def link naturalString String hi def link naturalBoolean Boolean hi def link naturalConditional Conditional hi def link naturalRepeat Repeat hi def link naturalLoop Repeat hi def link naturalFlow Keyword hi def link naturalError Keyword hi def link naturalKeyword Keyword hi def link naturalOperator Operator hi def link naturalParGui Operator hi def link naturalLabel Label hi def link naturalRefLabel Label hi def link naturalPComment Comment hi def link naturalComment Comment hi def link naturalTodo Todo hi def link naturalCommentMark PreProc hi def link naturalInclude Include hi def link naturalSysVar Identifier hi def link naturalLineNo LineNr hi def link naturalLineRef Error hi def link naturalSpecial Special hi def link naturalComKey Todo hi def link naturalRMKeyword Error hi def link naturalLegalIdent Error hi def link naturalType Type hi def link naturalFunction Function hi def link naturalObjName PreProc let b:current_syntax = "natural" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword ncfCommands mount load unload syn keyword ncfBoolean on off syn keyword ncfCommands set nextgroup=ncfSetCommands syn keyword ncfTimeTypes Reference Primary Secondary Single syn match ncfLoad "\(unl\|l\)oad .*"lc=4 contains=ALLBUT,Error syn match ncfMount "mount .*"lc=5 contains=ALLBUT,Error syn match ncfComment "^\ *rem.*$" syn match ncfComment "^\ *;.*$" syn match ncfComment "^\ *#.*$" syn match ncfSearchPath "search \(add\|del\) " nextgroup=ncfPath syn match ncfPath "\<[^: ]\+:\([A-Za-z0-9._]\|\\\)*\>" syn match ncfServerName "^file server name .*$" syn match ncfIPXNet "^ipx internal net" syn region ncfString start=+"+ end=+"+ syn match ncfContString "= \(\(\.\{0,1}\(OU=\|O=\)\{0,1}[A-Z_]\+\)\+;\{0,1}\)\+"lc=2 syn match ncfHexNumber "\<\d\(\d\+\|[A-F]\+\)*\>" syn match ncfNumber "\<\d\+\.\{0,1}\d*\>" syn match ncfIPAddr "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" syn match ncfTime "\(+|=\)\{0,1}\d\{1,2}:\d\{1,2}:\d\{1,2}" syn match ncfDSTTime "([^ ]\+ [^ ]\+ \(FIRST\|LAST\)\s*\d\{1,2}:\d\{1,2}:\d\{1,2} \(AM\|PM\))" syn match ncfTimeZone "[A-Z]\{3}\d[A-Z]\{3}" syn match ncfLogins "^\([Dd]is\|[Ee]n\)able login[s]*" syn match ncfScript "[^ ]*\.ncf" syn match ncfSetCommandsNum "\(Alert Message Nodes\)\s*=" syn match ncfSetCommandsNum "\(Auto Restart After Abend\)\s*=" syn match ncfSetCommandsNum "\(Auto Restart After Abend Delay Time\)\s*=" syn match ncfSetCommandsNum "\(Compression Daily Check Starting Hour\)\s*=" syn match ncfSetCommandsNum "\(Compression Daily Check Stop Hour\)\s*=" syn match ncfSetCommandsNum "\(Concurrent Remirror Requests\)\s*=" syn match ncfSetCommandsNum "\(Convert Compressed to Uncompressed Option\)\s*=" syn match ncfSetCommandsNum "\(Days Untouched Before Compression\)\s*=" syn match ncfSetCommandsNum "\(Decompress Free Space Warning Interval\)\s*=" syn match ncfSetCommandsNum "\(Decompress Percent Disk Space Free to Allow Commit\)\s*=" syn match ncfSetCommandsNum "\(Deleted Files Compression Option\)\s*=" syn match ncfSetCommandsNum "\(Directory Cache Allocation Wait Time\)\s*=" syn match ncfSetCommandsNum "\(Enable IPX Checksums\)\s*=" syn match ncfSetCommandsNum "\(Garbage Collection Interval\)\s*=" syn match ncfSetCommandsNum "\(IPX NetBIOS Replication Option\)\s*=" syn match ncfSetCommandsNum "\(Maximum Concurrent Compressions\)\s*=" syn match ncfSetCommandsNum "\(Maximum Concurrent Directory Cache Writes\)\s*=" syn match ncfSetCommandsNum "\(Maximum Concurrent Disk Cache Writes\)\s*=" syn match ncfSetCommandsNum "\(Maximum Directory Cache Buffers\)\s*=" syn match ncfSetCommandsNum "\(Maximum Extended Attributes per File or Path\)\s*=" syn match ncfSetCommandsNum "\(Maximum File Locks\)\s*=" syn match ncfSetCommandsNum "\(Maximum File Locks Per Connection\)\s*=" syn match ncfSetCommandsNum "\(Maximum Interrupt Events\)\s*=" syn match ncfSetCommandsNum "\(Maximum Number of Directory Handles\)\s*=" syn match ncfSetCommandsNum "\(Maximum Number of Internal Directory Handles\)\s*=" syn match ncfSetCommandsNum "\(Maximum Outstanding NCP Searches\)\s*=" syn match ncfSetCommandsNum "\(Maximum Packet Receive Buffers\)\s*=" syn match ncfSetCommandsNum "\(Maximum Physical Receive Packet Size\)\s*=" syn match ncfSetCommandsNum "\(Maximum Record Locks\)\s*=" syn match ncfSetCommandsNum "\(Maximum Record Locks Per Connection\)\s*=" syn match ncfSetCommandsNum "\(Maximum Service Processes\)\s*=" syn match ncfSetCommandsNum "\(Maximum Subdirectory Tree Depth\)\s*=" syn match ncfSetCommandsNum "\(Maximum Transactions\)\s*=" syn match ncfSetCommandsNum "\(Minimum Compression Percentage Gain\)\s*=" syn match ncfSetCommandsNum "\(Minimum Directory Cache Buffers\)\s*=" syn match ncfSetCommandsNum "\(Minimum File Cache Buffers\)\s*=" syn match ncfSetCommandsNum "\(Minimum File Cache Report Threshold\)\s*=" syn match ncfSetCommandsNum "\(Minimum Free Memory for Garbage Collection\)\s*=" syn match ncfSetCommandsNum "\(Minimum Packet Receive Buffers\)\s*=" syn match ncfSetCommandsNum "\(Minimum Service Processes\)\s*=" syn match ncfSetCommandsNum "\(NCP Packet Signature Option\)\s*=" syn match ncfSetCommandsNum "\(NDS Backlink Interval\)\s*=" syn match ncfSetCommandsNum "\(NDS Client NCP Retries\)\s*=" syn match ncfSetCommandsNum "\(NDS External Reference Life Span\)\s*=" syn match ncfSetCommandsNum "\(NDS Inactivity Synchronization Interval\)\s*=" syn match ncfSetCommandsNum "\(NDS Janitor Interval\)\s*=" syn match ncfSetCommandsNum "\(New Service Process Wait Time\)\s*=" syn match ncfSetCommandsNum "\(Number of Frees for Garbage Collection\)\s*=" syn match ncfSetCommandsNum "\(Number of Watchdog Packets\)\s*=" syn match ncfSetCommandsNum "\(Pseudo Preemption Count\)\s*=" syn match ncfSetCommandsNum "\(Read Ahead LRU Sitting Time Threshold\)\s*=" syn match ncfSetCommandsNum "\(Remirror Block Size\)\s*=" syn match ncfSetCommandsNum "\(Reserved Buffers Below 16 Meg\)\s*=" syn match ncfSetCommandsNum "\(Server Log File Overflow Size\)\s*=" syn match ncfSetCommandsNum "\(Server Log File State\)\s*=" syn match ncfSetCommandsNum "\(SMP Polling Count\)\s*=" syn match ncfSetCommandsNum "\(SMP Stack Size\)\s*=" syn match ncfSetCommandsNum "\(TIMESYNC Polling Count\)\s*=" syn match ncfSetCommandsNum "\(TIMESYNC Polling Interval\)\s*=" syn match ncfSetCommandsNum "\(TIMESYNC Synchronization Radius\)\s*=" syn match ncfSetCommandsNum "\(TIMESYNC Write Value\)\s*=" syn match ncfSetCommandsNum "\(Volume Log File Overflow Size\)\s*=" syn match ncfSetCommandsNum "\(Volume Log File State\)\s*=" syn match ncfSetCommandsNum "\(Volume Low Warning Reset Threshold\)\s*=" syn match ncfSetCommandsNum "\(Volume Low Warning Threshold\)\s*=" syn match ncfSetCommandsNum "\(Volume TTS Log File Overflow Size\)\s*=" syn match ncfSetCommandsNum "\(Volume TTS Log File State\)\s*=" syn match ncfSetCommandsNum "\(Worker Thread Execute In a Row Count\)\s*=" syn match ncfSetCommandsBool "\(Alloc Memory Check Flag\)\s*=" syn match ncfSetCommandsBool "\(Allow Audit Passwords\)\s*=" syn match ncfSetCommandsBool "\(Allow Change to Client Rights\)\s*=" syn match ncfSetCommandsBool "\(Allow Deletion of Active Directories\)\s*=" syn match ncfSetCommandsBool "\(Allow Invalid Pointers\)\s*=" syn match ncfSetCommandsBool "\(Allow LIP\)\s*=" syn match ncfSetCommandsBool "\(Allow Unencrypted Passwords\)\s*=" syn match ncfSetCommandsBool "\(Allow Unowned Files To Be Extended\)\s*=" syn match ncfSetCommandsBool "\(Auto Register Memory Above 16 Megabytes\)\s*=" syn match ncfSetCommandsBool "\(Auto TTS Backout Flag\)\s*=" syn match ncfSetCommandsBool "\(Automatically Repair Bad Volumes\)\s*=" syn match ncfSetCommandsBool "\(Check Equivalent to Me\)\s*=" syn match ncfSetCommandsBool "\(Command Line Prompt Default Choice\)\s*=" syn match ncfSetCommandsBool "\(Console Display Watchdog Logouts\)\s*=" syn match ncfSetCommandsBool "\(Daylight Savings Time Status\)\s*=" syn match ncfSetCommandsBool "\(Developer Option\)\s*=" syn match ncfSetCommandsBool "\(Display Incomplete IPX Packet Alerts\)\s*=" syn match ncfSetCommandsBool "\(Display Lost Interrupt Alerts\)\s*=" syn match ncfSetCommandsBool "\(Display NCP Bad Component Warnings\)\s*=" syn match ncfSetCommandsBool "\(Display NCP Bad Length Warnings\)\s*=" syn match ncfSetCommandsBool "\(Display Old API Names\)\s*=" syn match ncfSetCommandsBool "\(Display Relinquish Control Alerts\)\s*=" syn match ncfSetCommandsBool "\(Display Spurious Interrupt Alerts\)\s*=" syn match ncfSetCommandsBool "\(Enable Deadlock Detection\)\s*=" syn match ncfSetCommandsBool "\(Enable Disk Read After Write Verify\)\s*=" syn match ncfSetCommandsBool "\(Enable File Compression\)\s*=" syn match ncfSetCommandsBool "\(Enable IO Handicap Attribute\)\s*=" syn match ncfSetCommandsBool "\(Enable SECURE.NCF\)\s*=" syn match ncfSetCommandsBool "\(Fast Volume Mounts\)\s*=" syn match ncfSetCommandsBool "\(Global Pseudo Preemption\)\s*=" syn match ncfSetCommandsBool "\(Halt System on Invalid Parameters\)\s*=" syn match ncfSetCommandsBool "\(Ignore Disk Geometry\)\s*=" syn match ncfSetCommandsBool "\(Immediate Purge of Deleted Files\)\s*=" syn match ncfSetCommandsBool "\(NCP File Commit\)\s*=" syn match ncfSetCommandsBool "\(NDS Trace File Length to Zero\)\s*=" syn match ncfSetCommandsBool "\(NDS Trace to File\)\s*=" syn match ncfSetCommandsBool "\(NDS Trace to Screen\)\s*=" syn match ncfSetCommandsBool "\(New Time With Daylight Savings Time Status\)\s*=" syn match ncfSetCommandsBool "\(Read Ahead Enabled\)\s*=" syn match ncfSetCommandsBool "\(Read Fault Emulation\)\s*=" syn match ncfSetCommandsBool "\(Read Fault Notification\)\s*=" syn match ncfSetCommandsBool "\(Reject NCP Packets with Bad Components\)\s*=" syn match ncfSetCommandsBool "\(Reject NCP Packets with Bad Lengths\)\s*=" syn match ncfSetCommandsBool "\(Replace Console Prompt with Server Name\)\s*=" syn match ncfSetCommandsBool "\(Reply to Get Nearest Server\)\s*=" syn match ncfSetCommandsBool "\(SMP Developer Option\)\s*=" syn match ncfSetCommandsBool "\(SMP Flush Processor Cache\)\s*=" syn match ncfSetCommandsBool "\(SMP Intrusive Abend Mode\)\s*=" syn match ncfSetCommandsBool "\(SMP Memory Protection\)\s*=" syn match ncfSetCommandsBool "\(Sound Bell for Alerts\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC Configured Sources\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC Directory Tree Mode\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC Hardware Clock\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC RESET\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC Restart Flag\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC Service Advertising\)\s*=" syn match ncfSetCommandsBool "\(TIMESYNC Write Parameters\)\s*=" syn match ncfSetCommandsBool "\(TTS Abort Dump Flag\)\s*=" syn match ncfSetCommandsBool "\(Upgrade Low Priority Threads\)\s*=" syn match ncfSetCommandsBool "\(Volume Low Warn All Users\)\s*=" syn match ncfSetCommandsBool "\(Write Fault Emulation\)\s*=" syn match ncfSetCommandsBool "\(Write Fault Notification\)\s*=" syn match ncfSetCommandsStr "\(Default Time Server Type\)\s*=" syn match ncfSetCommandsStr "\(SMP NetWare Kernel Mode\)\s*=" syn match ncfSetCommandsStr "\(Time Zone\)\s*=" syn match ncfSetCommandsStr "\(TIMESYNC ADD Time Source\)\s*=" syn match ncfSetCommandsStr "\(TIMESYNC REMOVE Time Source\)\s*=" syn match ncfSetCommandsStr "\(TIMESYNC Time Source\)\s*=" syn match ncfSetCommandsStr "\(TIMESYNC Type\)\s*=" syn match ncfSetCommandsTime "\(Command Line Prompt Time Out\)\s*=" syn match ncfSetCommandsTime "\(Delay Before First Watchdog Packet\)\s*=" syn match ncfSetCommandsTime "\(Delay Between Watchdog Packets\)\s*=" syn match ncfSetCommandsTime "\(Directory Cache Buffer NonReferenced Delay\)\s*=" syn match ncfSetCommandsTime "\(Dirty Directory Cache Delay Time\)\s*=" syn match ncfSetCommandsTime "\(Dirty Disk Cache Delay Time\)\s*=" syn match ncfSetCommandsTime "\(File Delete Wait Time\)\s*=" syn match ncfSetCommandsTime "\(Minimum File Delete Wait Time\)\s*=" syn match ncfSetCommandsTime "\(Mirrored Devices Are Out of Sync Message Frequency\)\s*=" syn match ncfSetCommandsTime "\(New Packet Receive Buffer Wait Time\)\s*=" syn match ncfSetCommandsTime "\(TTS Backout File Truncation Wait Time\)\s*=" syn match ncfSetCommandsTime "\(TTS UnWritten Cache Wait Time\)\s*=" syn match ncfSetCommandsTime "\(Turbo FAT Re-Use Wait Time\)\s*=" syn match ncfSetCommandsTime "\(Daylight Savings Time Offset\)\s*=" syn match ncfSetCommandsTimeDate "\(End of Daylight Savings Time\)\s*=" syn match ncfSetCommandsTimeDate "\(Start of Daylight Savings Time\)\s*=" syn match ncfSetCommandsBindCon "\(Bindery Context\)\s*=" nextgroup=ncfContString syn cluster ncfSetCommands contains=ncfSetCommandsNum,ncfSetCommandsBool,ncfSetCommandsStr,ncfSetCommandsTime,ncfSetCommandsTimeDate,ncfSetCommandsBindCon if exists("ncf_highlight_unknowns") syn match Error "[^ \t]*" contains=ALL endif hi def link ncfCommands Statement hi def link ncfSetCommands ncfCommands hi def link ncfLogins ncfCommands hi def link ncfString String hi def link ncfContString ncfString hi def link ncfComment Comment hi def link ncfImplicit Type hi def link ncfBoolean Boolean hi def link ncfScript Identifier hi def link ncfNumber Number hi def link ncfIPAddr ncfNumber hi def link ncfHexNumber ncfNumber hi def link ncfTime ncfNumber hi def link ncfDSTTime ncfNumber hi def link ncfPath Constant hi def link ncfServerName Special hi def link ncfIPXNet ncfServerName hi def link ncfTimeTypes Constant hi def link ncfSetCommandsNum ncfSetCommands hi def link ncfSetCommandsBool ncfSetCommands hi def link ncfSetCommandsStr ncfSetCommands hi def link ncfSetCommandsTime ncfSetCommands hi def link ncfSetCommandsTimeDate ncfSetCommands hi def link ncfSetCommandsBindCon ncfSetCommands let b:current_syntax = "ncf" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal isk=@,48-57,_,- syntax match muttrcComment "^# .*$" contains=@Spell syntax match muttrcComment "^#[^ ].*$" syntax match muttrcComment "^#$" syntax match muttrcComment "[^\\]#.*$"lc=1 syntax match muttrcEscape +\\[#tnr"'Cc ]+ syntax match muttrcEscape +[`|]+ syntax match muttrcEscape +\\$+ syntax region muttrcString contained keepend start=+"+ms=e skip=+\\"+ end=+"+ contains=muttrcEscape,muttrcCommand,muttrcAction,muttrcShellString syntax region muttrcString contained keepend start=+'+ms=e skip=+\\'+ end=+'+ contains=muttrcEscape,muttrcCommand,muttrcAction syntax match muttrcStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcString,muttrcStringNL syntax region muttrcShellString matchgroup=muttrcEscape keepend start=+`+ skip=+\\`+ end=+`+ contains=muttrcVarStr,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcCommand,muttrcVarDeprecatedStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad syntax match muttrcRXChars contained /[^\\][][.*?+]\+/hs=s+1 syntax match muttrcRXChars contained /[][|()][.*?+]*/ syntax match muttrcRXChars contained /['"]^/ms=s+1 syntax match muttrcRXChars contained /$['"]/me=e-1 syntax match muttrcRXChars contained /\\/ syntax region muttrcRXString contained skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXChars syntax region muttrcRXString contained skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXChars syntax region muttrcRXString contained skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXChars syntax region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXChars syntax region muttrcRXString contained matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXChars syntax region muttrcRXString2 contained skipwhite start=+'+ skip=+\'+ end=+'+ contains=muttrcRXChars syntax region muttrcRXString2 contained skipwhite start=+"+ skip=+\"+ end=+"+ contains=muttrcRXChars syntax region muttrcRXHookString contained keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syntax region muttrcRXHookString contained keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syntax region muttrcRXHookString contained keepend skipwhite start=+[^ "'^]+ skip=+\\\s+ end=+\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syntax region muttrcRXHookString contained keepend skipwhite start=+\^+ end=+[^\\]\s+re=e-1 contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syntax region muttrcRXHookString contained keepend matchgroup=muttrcRXChars skipwhite start=+\^+ end=+$\s+ contains=muttrcRXString nextgroup=muttrcString,muttrcStringNL syntax match muttrcRXHookStringNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcRXHookString,muttrcRXHookStringNL syntax region muttrcRXPat contained keepend skipwhite start=+'+ skip=+\\'+ end=+'\s*+ contains=muttrcRXString nextgroup=muttrcRXPat syntax region muttrcRXPat contained keepend skipwhite start=+"+ skip=+\\"+ end=+"\s*+ contains=muttrcRXString nextgroup=muttrcRXPat syntax match muttrcRXPat contained /[^-'"#!]\S\+/ skipwhite contains=muttrcRXChars nextgroup=muttrcRXPat syntax match muttrcRXDef contained "-rx\s\+" skipwhite nextgroup=muttrcRXPat syntax match muttrcSpecial +\(['"]\)!\1+ syntax match muttrcSetStrAssignment contained skipwhite /=\s*\%(\\\?\$\)\?[0-9A-Za-z_-]\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*"+hs=s+1 end=+"+ skip=+\\"+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcString syntax region muttrcSetStrAssignment contained skipwhite keepend start=+=\s*'+hs=s+1 end=+'+ skip=+\\'+ nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcString syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable syntax match muttrcSetBoolAssignment contained skipwhite /=\s*\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetBoolAssignment contained skipwhite /=\s*"\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetBoolAssignment contained skipwhite /=\s*'\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable syntax match muttrcSetQuadAssignment contained skipwhite /=\s*\%(ask-\)\?\%(yes\|no\)/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetQuadAssignment contained skipwhite /=\s*"\%(ask-\)\?\%(yes\|no\)"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetQuadAssignment contained skipwhite /=\s*'\%(ask-\)\?\%(yes\|no\)'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetNumAssignment contained skipwhite /=\s*\\\?\$\w\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr contains=muttrcVariable,muttrcEscapedVariable syntax match muttrcSetNumAssignment contained skipwhite /=\s*\d\+/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetNumAssignment contained skipwhite /=\s*"\d\+"/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcSetNumAssignment contained skipwhite /=\s*'\d\+'/hs=s+1 nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcEmail "[a-zA-Z0-9._-]\+@[a-zA-Z0-9./-]\+" syntax match muttrcHeader "\<\c\%(From\|To\|C[Cc]\|B[Cc][Cc]\|Reply-To\|Subject\|Return-Path\|Received\|Date\|Replied\|Attach\)\>:\=" syntax match muttrcKeySpecial contained +\%(\\[Cc'"]\|\^\|\\[01]\d\{2}\)+ syntax match muttrcKey contained "\S\+" contains=muttrcKeySpecial,muttrcKeyName syntax region muttrcKey contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=muttrcKeySpecial,muttrcKeyName syntax region muttrcKey contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=muttrcKeySpecial,muttrcKeyName syntax match muttrcKeyName contained "\\[trne]" syntax match muttrcKeyName contained "\c<\%(BackSpace\|BackTab\|Delete\|Down\|End\|Enter\|Esc\|Home\|Insert\|Left\|Next\|PageDown\|PageUp\|Return\|Right\|Space\|Tab\|Up\)>" syntax match muttrcKeyName contained "\c" syntax match muttrcFormatErrors contained /%./ syntax match muttrcStrftimeEscapes contained /%[AaBbCcDdeFGgHhIjklMmnpRrSsTtUuVvWwXxYyZz+%]/ syntax match muttrcStrftimeEscapes contained /%E[cCxXyY]/ syntax match muttrcStrftimeEscapes contained /%O[BdeHImMSuUVwWy]/ syntax region muttrcIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcGroupIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcGroupIndexFormatEscapes,muttrcGroupIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcSidebarFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSidebarFormatEscapes,muttrcSidebarFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcQueryFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcQueryFormatEscapes,muttrcQueryFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcAliasFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcAliasFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAliasFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcAttachFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcAttachFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcAttachFormatEscapes,muttrcAttachFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcComposeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcComposeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcComposeFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcFolderFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcFolderFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcFolderFormatEscapes,muttrcFolderFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcPGPFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcStatusFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcStatusFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStatusFormatEscapes,muttrcStatusFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcPGPGetKeysFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPGetKeysFormatEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcSmimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcSmimeFormatEscapes,muttrcSmimeFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax region muttrcStrftimeFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcStrftimeEscapes,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcFormatConditionals2 contained /[^?]*?/ function! s:escapesConditionals(baseName, sequence, alignment, secondary) exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?\%(' . a:sequence . '\|%\)/' if a:alignment exec 'syntax match muttrc' . a:baseName . 'Escapes contained /%[>|*]./' endif if a:secondary exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/ nextgroup=muttrcFormatConditionals2' else exec 'syntax match muttrc' . a:baseName . 'Conditionals contained /%?\%(' . a:sequence . '\)?/' endif endfunction call s:escapesConditionals('IndexFormat', '[AaBbCcDdEeFfgHIiJKLlMmNnOPqRrSsTtuvWXxYyZz(<[{]\|G[a-zA-Z]\+', 1, 1) syntax match muttrcAliasFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[afnrt%]/ call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1) call s:escapesConditionals('SidebarFormat', '[BdFLNnSt!]', 1, 1) call s:escapesConditionals('QueryFormat', '[acent]', 0, 1) call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1) syntax match muttrcComposeFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[ahlv%]/ syntax match muttrcComposeFormatEscapes contained /%[>|*]./ call s:escapesConditionals('FolderFormat', '[CDdFfglmNnstu]', 1, 0) call s:escapesConditionals('MixFormat', '[acns]', 0, 0) call s:escapesConditionals('StatusFormat', '[bdFfhLlMmnoPpRrSstuVv]', 1, 1) call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1) call s:escapesConditionals('PGPFormat', '[acfklnptu[]', 0, 0) call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1) syntax match muttrcPGPGetKeysFormatEscapes contained /%\%(\%(-\?[0-9]\+\)\?\%(\.[0-9]\+\)\?\)\?[:_]\?[acfklntu[%]/ syntax region muttrcTimeEscapes contained start=+%{+ end=+}+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%<+ end=+>+ contains=muttrcStrftimeEscapes syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syntax match muttrcVarEqualsAliasFmt contained skipwhite "=" nextgroup=muttrcAliasFormatStr syntax match muttrcVarEqualsAttachFmt contained skipwhite "=" nextgroup=muttrcAttachFormatStr syntax match muttrcVarEqualsComposeFmt contained skipwhite "=" nextgroup=muttrcComposeFormatStr syntax match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=muttrcFolderFormatStr syntax match muttrcVarEqualsGrpIdxFmt contained skipwhite "=" nextgroup=muttrcGroupIndexFormatStr syntax match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr syntax match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr syntax match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr syntax match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr syntax match muttrcVarEqualsPGPGetKeysFmt contained skipwhite "=" nextgroup=muttrcPGPGetKeysFormatStr syntax match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr syntax match muttrcVarEqualsSdbFmt contained skipwhite "=" nextgroup=muttrcSidebarFormatStr syntax match muttrcVarEqualsSmimeFmt contained skipwhite "=" nextgroup=muttrcSmimeFormatStr syntax match muttrcVarEqualsStatusFmt contained skipwhite "=" nextgroup=muttrcStatusFormatStr syntax match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=muttrcStrftimeFormatStr syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcMenu contained alias attach browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu syntax match muttrcMenuCommas /,/ contained syntax keyword muttrcHooks contained skipwhite \ account-hook append-hook close-hook crypt-hook fcc-hook fcc-save-hook \ folder-hook iconv-hook mbox-hook message-hook open-hook pgp-hook \ reply-hook save-hook send-hook send2-hook syntax keyword muttrcHooks skipwhite shutdown-hook startup-hook timeout-hook nextgroup=muttrcCommand syntax region muttrcSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syntax region muttrcSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern nextgroup=muttrcString,muttrcStringNL syntax region muttrcNoSpamPattern contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPattern syntax region muttrcNoSpamPattern contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPattern syntax match muttrcAttachmentsMimeType contained "[*a-z0-9_-]\+/[*a-z0-9._-]\+\s*" skipwhite nextgroup=muttrcAttachmentsMimeType syntax match muttrcAttachmentsFlag contained "[+-]\%([AI]\|inline\|attachment\)\s\+" skipwhite nextgroup=muttrcAttachmentsMimeType syntax match muttrcAttachmentsLine "^\s*\%(un\)\?attachments\s\+" skipwhite nextgroup=muttrcAttachmentsFlag syntax match muttrcUnHighlightSpace contained "\%(\s\+\|\\$\)" syntax keyword muttrcAsterisk contained * syntax keyword muttrcListsKeyword lists skipwhite nextgroup=muttrcGroupDef,muttrcComment syntax keyword muttrcListsKeyword unlists skipwhite nextgroup=muttrcAsterisk,muttrcComment syntax keyword muttrcSubscribeKeyword subscribe nextgroup=muttrcGroupDef,muttrcComment syntax keyword muttrcSubscribeKeyword unsubscribe nextgroup=muttrcAsterisk,muttrcComment syntax keyword muttrcAlternateKeyword contained alternates unalternates syntax region muttrcAlternatesLine keepend start=+^\s*\%(un\)\?alternates\s+ skip=+\\$+ end=+$+ contains=muttrcAlternateKeyword,muttrcGroupDef,muttrcRXPat,muttrcUnHighlightSpace,muttrcComment syntax match muttrcVariable contained "\\\@]\+" contains=muttrcEmail syntax match muttrcAction contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName syntax match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL syntax match muttrcRXHooks /\<\%(account\|append\|close\|crypt\|folder\|mbox\|open\|pgp\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL syntax match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern syntax match muttrcPatHooks /\<\%(charset\|iconv\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern syntax match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|fcc\|fcc-save\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern syntax match muttrcBindFunction contained /\S\+\>/ skipwhite contains=muttrcFunction syntax match muttrcBindFunctionNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindFunction,muttrcBindFunctionNL syntax match muttrcBindKey contained /\S\+/ skipwhite contains=muttrcKey nextgroup=muttrcBindFunction,muttrcBindFunctionNL syntax match muttrcBindKeyNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindKey,muttrcBindKeyNL syntax match muttrcBindMenuList contained /\S\+/ skipwhite contains=muttrcMenu,muttrcMenuCommas nextgroup=muttrcBindKey,muttrcBindKeyNL syntax match muttrcBindMenuListNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcBindMenuList,muttrcBindMenuListNL syntax region muttrcMacroDescr contained keepend skipwhite start=+\s*\S+ms=e skip=+\\ + end=+ \|$+me=s syntax region muttrcMacroDescr contained keepend skipwhite start=+'+ms=e skip=+\\'+ end=+'+me=s syntax region muttrcMacroDescr contained keepend skipwhite start=+"+ms=e skip=+\\"+ end=+"+me=s syntax match muttrcMacroDescrNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcMacroDescr,muttrcMacroDescrNL syntax region muttrcMacroBody contained skipwhite start="\S" skip='\\ \|\\$' end=' \|$' contains=muttrcEscape,muttrcSet,muttrcUnset,muttrcReset,muttrcToggle,muttrcCommand,muttrcAction nextgroup=muttrcMacroDescr,muttrcMacroDescrNL syntax region muttrcMacroBody matchgroup=Type contained skipwhite start=+'+ms=e skip=+\\'+ end=+'\|\%(\%(\\\\\)\@]\+>/ contains=muttrcEmail nextgroup=muttrcAliasComma syntax match muttrcAliasEncEmailNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL syntax match muttrcAliasNameNoParens contained /[^<(@]\+\s\+/ nextgroup=muttrcAliasEncEmail,muttrcAliasEncEmailNL syntax region muttrcAliasName contained matchgroup=Type start=/(/ end=/)/ skipwhite syntax match muttrcAliasNameNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasName,muttrcAliasNameNL syntax match muttrcAliasENNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL syntax match muttrcAliasKey contained /\s*[^- \t]\S\+/ skipwhite nextgroup=muttrcAliasEmail,muttrcAliasEncEmail,muttrcAliasNameNoParens,muttrcAliasENNL syntax match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syntax match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syntax match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFgGklNOpPQRSTuUvV=$]" syntax match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)" syntax match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)\|\%(\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)*\)-\%([0-9]\{1,2}\%(/[0-9]\{1,2}\%(/[0-9]\{2}\%([0-9]\{2}\)\?\)\?\)\?\%([+*-][0-9]\+[ymwd]\)\?\)\?\)\|\%([<>=][0-9]\+[ymwd]\)\|\%(`[^`]\+`\)\|\%(\$[a-zA-Z0-9_-]\+\)\)" contains=muttrcShellString,muttrcVariable syntax match muttrcSimplePat contained "!\?\^\?[~][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatRXContainer syntax match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syntax match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syntax region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat syntax region muttrcSimplePatString contained keepend start=+"+ end=+"+ skip=+\\"+ syntax region muttrcSimplePatString contained keepend start=+'+ end=+'+ skip=+\\'+ syntax region muttrcSimplePatString contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 syntax region muttrcSimplePatRXContainer contained keepend start=+"+ end=+"+ skip=+\\"+ contains=muttrcRXString syntax region muttrcSimplePatRXContainer contained keepend start=+'+ end=+'+ skip=+\\'+ contains=muttrcRXString syntax region muttrcSimplePatRXContainer contained keepend start=+[^ "']+ skip=+\\ + end=+\s+re=e-1 contains=muttrcRXString syntax match muttrcSimplePatMetas contained /[(|)]/ syntax match muttrcOptSimplePat contained skipwhite /[~=%!(^].*/ contains=muttrcSimplePat,muttrcSimplePatMetas syntax match muttrcOptSimplePat contained skipwhite /[^~=%!(^].*/ contains=muttrcRXString syntax region muttrcOptPattern contained matchgroup=Type keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL syntax region muttrcOptPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcOptSimplePat,muttrcUnHighlightSpace nextgroup=muttrcString,muttrcStringNL syntax region muttrcOptPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL syntax match muttrcOptPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat nextgroup=muttrcString,muttrcStringNL syntax match muttrcOptPattern contained skipwhite /[.]/ nextgroup=muttrcString,muttrcStringNL syntax region muttrcPattern contained matchgroup=Type keepend skipwhite start=+"+ skip=+\\"+ end=+"+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syntax region muttrcPattern contained matchgroup=Type keepend skipwhite start=+'+ skip=+\\'+ end=+'+ contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syntax region muttrcPattern contained keepend skipwhite start=+[~](+ end=+)+ skip=+\\)+ contains=muttrcSimplePat syntax match muttrcPattern contained skipwhite /[~][A-Za-z]/ contains=muttrcSimplePat syntax match muttrcPattern contained skipwhite /[.]/ syntax region muttrcPatternInner contained keepend start=+"[~=%!(^]+ms=s+1 skip=+\\"+ end=+"+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syntax region muttrcPatternInner contained keepend start=+'[~=%!(^]+ms=s+1 skip=+\\'+ end=+'+me=e-1 contains=muttrcSimplePat,muttrcUnHighlightSpace,muttrcSimplePatMetas syntax match muttrcColorMatchCount contained "[0-9]\+" syntax match muttrcColorMatchCountNL contained skipwhite skipnl "\s*\\$" nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syntax region muttrcColorRXPat contained start=+\s*'+ skip=+\\'+ end=+'\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syntax region muttrcColorRXPat contained start=+\s*"+ skip=+\\"+ end=+"\s*+ keepend skipwhite contains=muttrcRXString2 nextgroup=muttrcColorMatchCount,muttrcColorMatchCountNL syntax keyword muttrcColor contained black blue cyan default green magenta red white yellow syntax keyword muttrcColor contained brightblack brightblue brightcyan brightdefault brightgreen brightmagenta brightred brightwhite brightyellow syntax match muttrcColor contained "\<\%(bright\)\=color\d\{1,3}\>" syntax match muttrcColorRXNL contained skipnl "\s*\\$" nextgroup=muttrcColorRXPat,muttrcColorRXNL syntax match muttrcColorBG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorRXPat,muttrcColorRXNL syntax match muttrcColorBGNL contained skipnl "\s*\\$" nextgroup=muttrcColorBG,muttrcColorBGNL syntax match muttrcColorFG contained /\s*[$]\?\w\+/ contains=muttrcColor,muttrcVariable,muttrcUnHighlightSpace nextgroup=muttrcColorBG,muttrcColorBGNL syntax match muttrcColorFGNL contained skipnl "\s*\\$" nextgroup=muttrcColorFG,muttrcColorFGNL syntax match muttrcColorContext contained /\s*[$]\?\w\+/ contains=muttrcColorField,muttrcVariable,muttrcUnHighlightSpace,muttrcColorCompose nextgroup=muttrcColorFG,muttrcColorFGNL syntax match muttrcColorNL contained skipnl "\s*\\$" nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose syntax match muttrcColorKeyword contained /^\s*color\s\+/ nextgroup=muttrcColorContext,muttrcColorNL,muttrcColorCompose syntax region muttrcUnColorPatterns contained skipwhite start=+\s*'+ end=+'+ skip=+\\'+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syntax region muttrcUnColorPatterns contained skipwhite start=+\s*"+ end=+"+ skip=+\\"+ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syntax match muttrcUnColorPatterns contained skipwhite /\s*[^'"\s]\S\*/ contains=muttrcPattern nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syntax match muttrcUnColorPatNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorPatNL syntax match muttrcUnColorAll contained skipwhite /[*]/ syntax match muttrcUnColorAPNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL syntax match muttrcUnColorIndex contained skipwhite /\s*index\s\+/ nextgroup=muttrcUnColorPatterns,muttrcUnColorAll,muttrcUnColorAPNL syntax match muttrcUnColorIndexNL contained skipwhite skipnl /\s*\\$/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL syntax match muttrcUnColorKeyword contained skipwhite /^\s*uncolor\s\+/ nextgroup=muttrcUnColorIndex,muttrcUnColorIndexNL syntax region muttrcUnColorLine keepend start=+^\s*uncolor\s+ skip=+\\$+ end=+$+ contains=muttrcUnColorKeyword,muttrcComment,muttrcUnHighlightSpace syntax keyword muttrcMonoAttrib contained bold none normal reverse standout underline syntax keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField,muttrcColorCompose syntax match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono syntax keyword muttrcColorField skipwhite contained \ attachment attach_headers body bold error hdrdefault header index \ index_author index_collapsed index_date index_flags index_label \ index_number index_size index_subject index_tag index_tags indicator \ markers message normal progress prompt quoted search sidebar_divider \ sidebar_flagged sidebar_highlight sidebar_indicator sidebar_new \ sidebar_ordinary sidebar_spoolfile signature status tilde tree underline \ nextgroup=muttrcColor syntax match muttrcColorField contained "\" syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField syntax keyword muttrcColorComposeField skipwhite contained \ header security_both security_encrypt security_none security_sign \ nextgroup=muttrcColorFG,muttrcColorFGNL syntax region muttrcColorLine keepend start=/^\s*color\s\+/ skip=+\\$+ end=+$+ contains=muttrcColorKeyword,muttrcComment,muttrcUnHighlightSpace function! s:boolQuadGen(type, vars, deprecated) let l:novars = copy(a:vars) call map(l:novars, '"no" . v:val') let l:invvars = copy(a:vars) call map(l:invvars, '"inv" . v:val') let l:orig_type = copy(a:type) if a:deprecated let l:type = 'Deprecated' . a:type else let l:type = a:type endif exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(a:vars) . ' nextgroup=muttrcSet' . l:orig_type . 'Assignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr' exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:novars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr' exec 'syntax keyword muttrcVar' . l:type . ' skipwhite contained ' . join(l:invvars) . ' nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr' endfunction call s:boolQuadGen('Bool', [ \ 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc', \ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_split', 'autoedit', \ 'auto_tag', 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly', \ 'change_folder_next', 'check_mbox_size', 'check_new', 'collapse_all', \ 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate', \ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime', \ 'crypt_confirmhook', 'crypt_opportunistic_encrypt', 'crypt_replyencrypt', \ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp', \ 'crypt_use_gpgme', 'crypt_use_pka', 'delete_untag', 'digest_collapse', \ 'duplicate_threads', 'edit_headers', 'encode_from', 'fast_reply', \ 'fcc_clear', 'flag_safe', 'followup_to', 'force_name', 'forward_decode', \ 'forward_decrypt', 'forward_quote', 'forward_references', 'hdrs', \ 'header', 'header_cache_compress', 'header_color_partial', 'help', \ 'hidden_host', 'hide_limited', 'hide_missing', 'hide_thread_subject', \ 'hide_top_limited', 'hide_top_missing', 'history_remove_dups', \ 'honor_disposition', 'idn_decode', 'idn_encode', 'ignore_list_reply_to', \ 'imap_check_subscribed', 'imap_idle', 'imap_list_subscribed', \ 'imap_passive', 'imap_peek', 'imap_servernoise', 'implicit_autoview', \ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize', \ 'maildir_check_cur', 'maildir_header_cache_verify', 'maildir_trash', \ 'mail_check_recent', 'mail_check_stats', 'markers', 'mark_old', \ 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key', \ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject', \ 'mime_type_query_first', 'narrow_tree', 'nm_record', 'nntp_listgroup', \ 'nntp_load_description', 'pager_stop', 'pgp_autoinline', \ 'pgp_auto_decode', 'pgp_check_exit', 'pgp_ignore_subkeys', 'pgp_long_ids', \ 'pgp_replyinline', 'pgp_retainable_sigs', 'pgp_self_encrypt', \ 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent', 'pipe_decode', \ 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt', \ 'print_decode', 'print_split', 'prompt_after', 'read_only', \ 'reflow_space_quotes', 'reflow_text', 'reply_self', 'reply_with_xorig', \ 'resolve', 'resume_draft_files', 'resume_edited_draft_files', \ 'reverse_alias', 'reverse_name', 'reverse_realname', 'rfc2047_parameters', \ 'save_address', 'save_empty', 'save_name', 'save_unsubscribed', 'score', \ 'show_new_news', 'show_only_unread', 'sidebar_folder_indent', \ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_on_right', \ 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top', \ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key', \ 'smime_is_default', 'smime_self_encrypt', 'sort_re', 'ssl_force_tls', \ 'ssl_usesystemcerts', 'ssl_use_sslv2', 'ssl_use_sslv3', 'ssl_use_tlsv1', \ 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_verify_dates', \ 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top', \ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search', \ 'thread_received', 'tilde', 'ts_enabled', 'uncollapse_jump', \ 'uncollapse_new', 'user_agent', 'use_8bitmime', 'use_domain', \ 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile', \ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to' \ ], 0) call s:boolQuadGen('Bool', [ \ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt', \ 'forw_quote', 'ignore_linear_white_space', 'pgp_autoencrypt', \ 'pgp_autosign', 'pgp_auto_traditional', 'pgp_create_traditional', \ 'pgp_replyencrypt', 'pgp_replysign', 'pgp_replysignencrypted', \ 'xterm_set_titles' \ ], 1) call s:boolQuadGen('Quad', [ \ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce', \ 'catchup_newsgroup', 'copy', 'crypt_verify_sig', 'delete', 'fcc_attach', \ 'followup_to_poster', 'forward_edit', 'honor_followup_to', 'include', \ 'mime_forward', 'mime_forward_rest', 'move', 'pgp_mime_auto', \ 'pop_delete', 'pop_reconnect', 'postpone', 'post_moderated', 'print', \ 'quit', 'recall', 'reply_to', 'ssl_starttls' \ ], 0) call s:boolQuadGen('Quad', [ \ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self' \ ], 1) syntax keyword muttrcVarNum skipwhite contained \ connect_timeout debug_level history imap_keepalive imap_pipeline_depth \ imap_poll_timeout mail_check mail_check_stats_interval menu_context \ net_inc nm_db_limit nm_open_timeout nm_query_window_current_position \ nm_query_window_duration nntp_context nntp_poll pager_context \ pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap \ save_history score_threshold_delete score_threshold_flag \ score_threshold_read search_context sendmail_wait sidebar_component_depth \ sidebar_width skip_quoted_offset sleep_time smime_timeout \ ssl_min_dh_prime_bits timeout time_inc wrap wrap_headers write_inc \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarDeprecatedNum contained skipwhite \ wrapmargin \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax match muttrcVarStr contained skipwhite 'my_[a-zA-Z0-9_]\+' nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite alias_format nextgroup=muttrcVarEqualsAliasFmt syntax keyword muttrcVarStr contained skipwhite attach_format nextgroup=muttrcVarEqualsAttachFmt syntax keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcVarEqualsComposeFmt syntax keyword muttrcVarStr contained skipwhite folder_format vfolder_format nextgroup=muttrcVarEqualsFolderFmt syntax keyword muttrcVarStr contained skipwhite attribution index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt syntax keyword muttrcVarDeprecatedStr contained skipwhite hdr_format msg_format nextgroup=muttrcVarEqualsIdxFmt syntax keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt syntax keyword muttrcVarStr contained skipwhite \ pgp_clearsign_command pgp_decode_command pgp_decrypt_command \ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command \ pgp_import_command pgp_list_pubring_command pgp_list_secring_command \ pgp_sign_command pgp_verify_command pgp_verify_key_command \ nextgroup=muttrcVarEqualsPGPCmdFmt syntax keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt syntax keyword muttrcVarStr contained skipwhite pgp_getkeys_command nextgroup=muttrcVarEqualsPGPGetKeysFmt syntax keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt syntax keyword muttrcVarStr contained skipwhite \ smime_decrypt_command smime_encrypt_command smime_get_cert_command \ smime_get_cert_email_command smime_get_signer_cert_command \ smime_import_cert_command smime_pk7out_command smime_sign_command \ smime_verify_command smime_verify_opaque_command \ nextgroup=muttrcVarEqualsSmimeFmt syntax keyword muttrcVarStr contained skipwhite ts_icon_format ts_status_format status_format nextgroup=muttrcVarEqualsStatusFmt syntax keyword muttrcVarDeprecatedStr contained skipwhite xterm_icon xterm_title nextgroup=muttrcVarEqualsStatusFmt syntax keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt syntax keyword muttrcVarStr contained skipwhite group_index_format nextgroup=muttrcVarEqualsGrpIdxFmt syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcVarEqualsSdbFmt syntax keyword muttrcVarStr contained skipwhite \ assumed_charset attach_charset attach_sep attribution_locale charset \ config_charset content_type default_hook dsn_notify dsn_return \ empty_subject escape forward_attribution_intro forward_attribution_trailer \ forward_format header_cache_pagesize hidden_tags hostname \ imap_authenticators imap_delim_chars imap_headers imap_login imap_pass \ imap_user indent_string mailcap_path mark_macro_prefix mh_seq_flagged \ mh_seq_replied mh_seq_unseen mime_type_query_command newsgroups_charset \ news_server nm_default_uri nm_exclude_tags nm_query_type \ nm_query_window_current_search nm_query_window_timebase nm_record_tags \ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key \ pgp_sign_as pipe_sep pop_authenticators pop_host pop_pass pop_user \ postpone_encrypt_as post_indent_string preconnect realname send_charset \ show_multipart_alternative sidebar_delim_chars sidebar_divider_char \ sidebar_indent_string simple_search smime_default_key smime_encrypt_with \ smime_sign_as smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url \ spam_separator ssl_ciphers tunnel \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarDeprecatedStr contained skipwhite \ forw_format indent_str pgp_self_encrypt_as post_indent_str \ smime_self_encrypt_as \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite header_cache_backend nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite \ alias_file certificate_file debug_file display_filter editor entropy_file \ folder header_cache history_file inews ispell mbox message_cachedir mixmaster \ new_mail_command news_cache_dir newsrc pager postponed print_command \ query_command record sendmail shell signature smime_ca_location \ smime_certificates smime_keys spoolfile ssl_ca_certificates_file \ ssl_client_cert tmpdir trash visual \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign \ quote_regex reply_regex smileys \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarDeprecatedStr contained skipwhite print_cmd nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarDeprecatedStr contained skipwhite abort_noattach_regexp attach_keyword quote_regexp reply_regexp nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcVarStr contained skipwhite \ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcCommand skipwhite charset-hook nextgroup=muttrcRXString syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks syntax keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern syntax keyword muttrcCommand skipwhite nospam nextgroup=muttrcNoSpamPattern syntax keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL syntax keyword muttrcCommand skipwhite macro nextgroup=muttrcMacroMenuList,muttrcMacroMenuListNL syntax keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syntax keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syntax keyword muttrcCommand skipwhite set unset reset toggle nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr,muttrcVarDeprecatedBool,muttrcVarDeprecatedQuad,muttrcVarDeprecatedStr syntax keyword muttrcCommand skipwhite exec nextgroup=muttrcFunction syntax keyword muttrcCommand skipwhite \ alternative_order attachments auto_view finish hdr_order ifdef ifndef \ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score \ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats \ tag-transforms unalternative_order unattachments unauto_view uncolor \ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono \ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from \ unvirtual-mailboxes virtual-mailboxes syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" syntax match muttrcFunction contained "\" highlight def link muttrcComment Comment highlight def link muttrcEscape SpecialChar highlight def link muttrcRXChars SpecialChar highlight def link muttrcString String highlight def link muttrcRXString String highlight def link muttrcRXString2 String highlight def link muttrcSpecial Special highlight def link muttrcHooks Type highlight def link muttrcGroupFlag Type highlight def link muttrcGroupDef Macro highlight def link muttrcAddrDef muttrcGroupFlag highlight def link muttrcRXDef muttrcGroupFlag highlight def link muttrcRXPat String highlight def link muttrcAliasGroupName Macro highlight def link muttrcAliasKey Identifier highlight def link muttrcUnAliasKey Identifier highlight def link muttrcAliasEncEmail Identifier highlight def link muttrcAliasParens Type highlight def link muttrcSetNumAssignment Number highlight def link muttrcSetBoolAssignment Boolean highlight def link muttrcSetQuadAssignment Boolean highlight def link muttrcSetStrAssignment String highlight def link muttrcEmail Special highlight def link muttrcVariableInner Special highlight def link muttrcEscapedVariable String highlight def link muttrcHeader Type highlight def link muttrcKeySpecial SpecialChar highlight def link muttrcKey Type highlight def link muttrcKeyName SpecialChar highlight def link muttrcVarBool Identifier highlight def link muttrcVarQuad Identifier highlight def link muttrcVarNum Identifier highlight def link muttrcVarStr Identifier highlight def link muttrcMenu Identifier highlight def link muttrcCommand Keyword highlight def link muttrcMacroDescr String highlight def link muttrcAction Macro highlight def link muttrcBadAction Error highlight def link muttrcBindFunction Error highlight def link muttrcBindMenuList Error highlight def link muttrcFunction Macro highlight def link muttrcGroupKeyword muttrcCommand highlight def link muttrcGroupLine Error highlight def link muttrcSubscribeKeyword muttrcCommand highlight def link muttrcSubscribeLine Error highlight def link muttrcListsKeyword muttrcCommand highlight def link muttrcListsLine Error highlight def link muttrcAlternateKeyword muttrcCommand highlight def link muttrcAlternatesLine Error highlight def link muttrcAttachmentsLine muttrcCommand highlight def link muttrcAttachmentsFlag Type highlight def link muttrcAttachmentsMimeType String highlight def link muttrcColorLine Error highlight def link muttrcColorContext Error highlight def link muttrcColorContextI Identifier highlight def link muttrcColorContextH Identifier highlight def link muttrcColorKeyword muttrcCommand highlight def link muttrcColorField Identifier highlight def link muttrcColorCompose Identifier highlight def link muttrcColorComposeField Identifier highlight def link muttrcColor Type highlight def link muttrcColorFG Error highlight def link muttrcColorFGI Error highlight def link muttrcColorFGH Error highlight def link muttrcColorBG Error highlight def link muttrcColorBGI Error highlight def link muttrcColorBGH Error highlight def link muttrcMonoAttrib muttrcColor highlight def link muttrcMono muttrcCommand highlight def link muttrcSimplePat Identifier highlight def link muttrcSimplePatString Macro highlight def link muttrcSimplePatMetas Special highlight def link muttrcPattern Error highlight def link muttrcUnColorLine Error highlight def link muttrcUnColorKeyword muttrcCommand highlight def link muttrcUnColorIndex Identifier highlight def link muttrcShellString muttrcEscape highlight def link muttrcRXHooks muttrcCommand highlight def link muttrcRXHookNot Type highlight def link muttrcPatHooks muttrcCommand highlight def link muttrcPatHookNot Type highlight def link muttrcFormatConditionals2 Type highlight def link muttrcIndexFormatStr muttrcString highlight def link muttrcIndexFormatEscapes muttrcEscape highlight def link muttrcIndexFormatConditionals muttrcFormatConditionals2 highlight def link muttrcAliasFormatStr muttrcString highlight def link muttrcAliasFormatEscapes muttrcEscape highlight def link muttrcAttachFormatStr muttrcString highlight def link muttrcAttachFormatEscapes muttrcEscape highlight def link muttrcAttachFormatConditionals muttrcFormatConditionals2 highlight def link muttrcComposeFormatStr muttrcString highlight def link muttrcComposeFormatEscapes muttrcEscape highlight def link muttrcFolderFormatStr muttrcString highlight def link muttrcFolderFormatEscapes muttrcEscape highlight def link muttrcFolderFormatConditionals muttrcFormatConditionals2 highlight def link muttrcMixFormatStr muttrcString highlight def link muttrcMixFormatEscapes muttrcEscape highlight def link muttrcMixFormatConditionals muttrcFormatConditionals2 highlight def link muttrcPGPFormatStr muttrcString highlight def link muttrcPGPFormatEscapes muttrcEscape highlight def link muttrcPGPFormatConditionals muttrcFormatConditionals2 highlight def link muttrcPGPCmdFormatStr muttrcString highlight def link muttrcPGPCmdFormatEscapes muttrcEscape highlight def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 highlight def link muttrcStatusFormatStr muttrcString highlight def link muttrcStatusFormatEscapes muttrcEscape highlight def link muttrcStatusFormatConditionals muttrcFormatConditionals2 highlight def link muttrcPGPGetKeysFormatStr muttrcString highlight def link muttrcPGPGetKeysFormatEscapes muttrcEscape highlight def link muttrcSmimeFormatStr muttrcString highlight def link muttrcSmimeFormatEscapes muttrcEscape highlight def link muttrcSmimeFormatConditionals muttrcFormatConditionals2 highlight def link muttrcTimeEscapes muttrcEscape highlight def link muttrcPGPTimeEscapes muttrcEscape highlight def link muttrcStrftimeEscapes Type highlight def link muttrcStrftimeFormatStr muttrcString highlight def link muttrcFormatErrors Error highlight def link muttrcBindFunctionNL SpecialChar highlight def link muttrcBindKeyNL SpecialChar highlight def link muttrcBindMenuListNL SpecialChar highlight def link muttrcMacroDescrNL SpecialChar highlight def link muttrcMacroBodyNL SpecialChar highlight def link muttrcMacroKeyNL SpecialChar highlight def link muttrcMacroMenuListNL SpecialChar highlight def link muttrcColorMatchCountNL SpecialChar highlight def link muttrcColorNL SpecialChar highlight def link muttrcColorRXNL SpecialChar highlight def link muttrcColorBGNL SpecialChar highlight def link muttrcColorFGNL SpecialChar highlight def link muttrcAliasNameNL SpecialChar highlight def link muttrcAliasENNL SpecialChar highlight def link muttrcAliasNL SpecialChar highlight def link muttrcUnAliasNL SpecialChar highlight def link muttrcAliasGroupDefNL SpecialChar highlight def link muttrcAliasEncEmailNL SpecialChar highlight def link muttrcPatternNL SpecialChar highlight def link muttrcUnColorPatNL SpecialChar highlight def link muttrcUnColorAPNL SpecialChar highlight def link muttrcUnColorIndexNL SpecialChar highlight def link muttrcStringNL SpecialChar highlight def link muttrcVarDeprecatedBool Error highlight def link muttrcVarDeprecatedQuad Error highlight def link muttrcVarDeprecatedStr Error let b:current_syntax = "neomuttrc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword netrcKeyword machine nextgroup=netrcMachine skipwhite skipnl syn keyword netrcKeyword account \ login \ nextgroup=netrcLogin,netrcSpecial skipwhite skipnl syn keyword netrcKeyword password nextgroup=netrcPassword skipwhite skipnl syn keyword netrcKeyword default syn keyword netrcKeyword macdef \ nextgroup=netrcInit,netrcMacroName skipwhite skipnl syn region netrcMacro contained start='.' end='^$' syn match netrcMachine contained display '\S\+' syn match netrcMachine contained display '"[^\\"]*\(\\.[^\\"]*\)*"' syn match netrcLogin contained display '\S\+' syn match netrcLogin contained display '"[^\\"]*\(\\.[^\\"]*\)*"' syn match netrcPassword contained display '\S\+' syn match netrcPassword contained display '"[^\\"]*\(\\.[^\\"]*\)*"' syn match netrcMacroName contained display '\S\+' \ nextgroup=netrcMacro skipwhite skipnl syn match netrcMacroName contained display '"[^\\"]*\(\\.[^\\"]*\)*"' \ nextgroup=netrcMacro skipwhite skipnl syn keyword netrcSpecial contained anonymous syn match netrcInit contained '\" contained skipwhite if exists("g:netrw_special_syntax") && g:netrw_special_syntax if exists("+suffixes") && &suffixes != "" let suflist= join(split(&suffixes,',')) let suflist= escape(substitute(suflist," ",'\\|','g'),'.~') exe "syn match netrwSpecFile '\\(\\S\\+ \\)*\\S*\\(".suflist."\\)\\>' contains=netrwTreeBar,@NoSpell" endif syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell if has("unix") syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell endif syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\|docx\)\>" contains=netrwTreeBar,@NoSpell syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell syn match netrwPix "\c\(\S\+ \)*\S*\.\%(bmp\|fits\=\|gif\|je\=pg\|pcx\|ppc\|pgm\|png\|ppm\|psd\|rgb\|tif\|xbm\|xcf\)\>" contains=netrwTreeBar,@NoSpell syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell syn match netrwTags "\" contains=netrwTreeBar,@NoSpell syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell endif if !exists("did_drchip_netrwlist_syntax") let did_drchip_netrwlist_syntax= 1 hi default link netrwClassify Function hi default link netrwCmdSep Delimiter hi default link netrwComment Comment hi default link netrwDir Directory hi default link netrwHelpCmd Function hi default link netrwQHTopic Number hi default link netrwHidePat Statement hi default link netrwHideSep netrwComment hi default link netrwList Statement hi default link netrwVersion Identifier hi default link netrwSymLink Question hi default link netrwExe PreProc hi default link netrwDateSep Delimiter hi default link netrwTreeBar Special hi default link netrwTimeSep netrwDateSep hi default link netrwComma netrwComment hi default link netrwHide netrwComment hi default link netrwMarkFile TabLineSel hi default link netrwLink Special hi default link netrwCoreDump WarningMsg hi default link netrwData DiffChange hi default link netrwHdr netrwPlain hi default link netrwLex netrwPlain hi default link netrwLib DiffChange hi default link netrwMakefile DiffChange hi default link netrwYacc netrwPlain hi default link netrwPix Special hi default link netrwBak netrwGray hi default link netrwCompress netrwGray hi default link netrwSpecFile netrwGray hi default link netrwObj netrwGray hi default link netrwTags netrwGray hi default link netrwTilde netrwGray hi default link netrwTmp netrwGray endif redir => s:netrwgray sil hi netrwGray redir END if s:netrwgray !~ 'guifg' if has("gui") && has("gui_running") if &bg == "dark" exe "hi netrwGray gui=NONE guifg=gray30" else exe "hi netrwGray gui=NONE guifg=gray70" endif else hi link netrwGray Folded endif endif let b:current_syntax = "netrwlist" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match syn match ninjaComment /\(\$\n\)\@" syn match ninjaKeyword "^rule\>" syn match ninjaKeyword "^pool\>" syn match ninjaKeyword "^default\>" syn match ninjaKeyword "^include\>" syn match ninjaKeyword "^subninja\>" syn region ninjaRule start="^rule" end="^\ze\S" contains=TOP transparent syn keyword ninjaRuleCommand contained containedin=ninjaRule command \ deps depfile description generator \ pool restat rspfile rspfile_content syn region ninjaPool start="^pool" end="^\ze\S" contains=TOP transparent syn keyword ninjaPoolCommand contained containedin=ninjaPool depth syn match ninjaDollar "\$\$" syn match ninjaWrapLineOperator "\$$" syn match ninjaSimpleVar "\$[a-zA-Z0-9_-]\+" syn match ninjaVar "\${[a-zA-Z0-9_.-]\+}" syn match ninjaOperator "\(=\|:\||\|||\)\ze\s" hi def link ninjaComment Comment hi def link ninjaKeyword Keyword hi def link ninjaRuleCommand Statement hi def link ninjaPoolCommand Statement hi def link ninjaDollar ninjaOperator hi def link ninjaWrapLineOperator ninjaOperator hi def link ninjaOperator Operator hi def link ninjaSimpleVar ninjaVar hi def link ninjaVar Identifier let b:current_syntax = "ninja" let &cpo = s:cpo_save unlet s:cpo_save if !has("syntax") finish endif au! Syntax augroup syntaxset au! au BufEnter * syn clear au BufEnter * if exists("b:current_syntax") | unlet b:current_syntax | endif doautoall syntaxset BufEnter * au! augroup END if exists("syntax_on") unlet syntax_on endif if exists("syntax_manual") unlet syntax_manual endif if exists("b:current_syntax") finish endif syn keyword nqcStatement break return continue start stop abs sign syn keyword nqcStatement sub task syn keyword nqcLabel case default syn keyword nqcConditional if else switch syn keyword nqcRepeat while for do until repeat syn keyword nqcEvents acquire catch monitor syn keyword nqcType int true false void syn keyword nqcStorageClass asm const inline syn keyword nqcConstant SENSOR_1 SENSOR_2 SENSOR_3 syn keyword nqcConstant SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE syn keyword nqcConstant SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION syn keyword nqcConstant SENSOR_LIGHT SENSOR_TOUCH syn keyword nqcConstant SENSOR_MODE_RAW SENSOR_MODE_BOOL syn keyword nqcConstant SENSOR_MODE_EDGE SENSOR_MODE_PULSE syn keyword nqcConstant SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS syn keyword nqcConstant SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION syn keyword nqcConstant SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION syn keyword nqcConstant SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE syn keyword nqcConstant SENSOR_EDGE syn keyword nqcFunction ClearSensor syn keyword nqcFunction SensorValue SensorType syn keyword nqcFunction SetSensor SetSensorType syn keyword nqcFunction SensorValueBool syn keyword nqcFunction SetSensorMode SensorMode syn keyword nqcFunction SensorValueRaw syn keyword nqcFunction SetSensorLowerLimit SetSensorUpperLimit syn keyword nqcFunction SetSensorHysteresis CalibrateSensor syn keyword nqcConstant OUT_A OUT_B OUT_C syn keyword nqcConstant OUT_ON OUT_OFF OUT_FLOAT syn keyword nqcConstant OUT_FWD OUT_REV OUT_TOGGLE syn keyword nqcConstant OUT_LOW OUT_HALF OUT_FULL syn keyword nqcFunction SetOutput SetDirection SetPower OutputStatus syn keyword nqcFunction On Off Float Fwd Rev Toggle syn keyword nqcFunction OnFwd OnRev OnFor syn keyword nqcFunction SetGlobalOutput SetGlobalDirection SetMaxPower syn keyword nqcFunction GlobalOutputStatus syn keyword nqcConstant SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN syn keyword nqcConstant SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP syn keyword nqcFunction PlaySound PlayTone syn keyword nqcFunction MuteSound UnmuteSound ClearSound syn keyword nqcFunction SelectSounds syn keyword nqcConstant DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2 syn keyword nqcConstant DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B syn keyword nqcConstant DISPLAY_OUT_C syn keyword nqcConstant DISPLAY_USER syn keyword nqcFunction SelectDisplay syn keyword nqcFunction SetUserDisplay syn keyword nqcConstant TX_POWER_LO TX_POWER_HI syn keyword nqcFunction Message ClearMessage SendMessage SetTxPower syn keyword nqcConstant SERIAL_COMM_DEFAULT SERIAL_COMM_4800 syn keyword nqcConstant SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ syn keyword nqcConstant SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE syn keyword nqcConstant SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM syn keyword nqcConstant SERIAL_PACKET_RCX syn keyword nqcFunction SetSerialComm SetSerialPacket SetSerialData syn keyword nqcFunction SerialData SendSerial syn keyword nqcFunction SendVLL syn keyword nqcFunction ClearTimer Timer syn keyword nqcFunction SetTimer FastTimer syn keyword nqcFunction ClearCounter IncCounter DecCounter Counter syn keyword nqcConstant ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C syn keyword nqcConstant ACQUIRE_SOUND syn keyword nqcConstant ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3 syn keyword nqcConstant ACQUIRE_USER_4 syn keyword nqcFunction SetPriority syn keyword nqcConstant EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED syn keyword nqcConstant EVENT_TYPE_PULSE EVENT_TYPE_EDGE syn keyword nqcConstant EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW syn keyword nqcConstant EVENT_TYPE_NORMAL EVENT_TYPE_HIGH syn keyword nqcConstant EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK syn keyword nqcConstant EVENT_TYPE_MESSAGE syn keyword nqcConstant EVENT_1_PRESSED EVENT_1_RELEASED syn keyword nqcConstant EVENT_2_PRESSED EVENT_2_RELEASED syn keyword nqcConstant EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL syn keyword nqcConstant EVENT_LIGHT_LOW EVENT_LIGHT_CLICK syn keyword nqcConstant EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0 syn keyword nqcConstant EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1 syn keyword nqcConstant EVENT_TIMER_2 EVENT_MESSAGE syn keyword nqcFunction ActiveEvents Event syn keyword nqcFunction CurrentEvents syn keyword nqcFunction SetEvent ClearEvent ClearAllEvents EventState syn keyword nqcFunction CalibrateEvent SetUpperLimit UpperLimit syn keyword nqcFunction SetLowerLimit LowerLimit SetHysteresis syn keyword nqcFunction Hysteresis syn keyword nqcFunction SetClickTime ClickTime SetClickCounter syn keyword nqcFunction ClickCounter syn keyword nqcFunction SetSensorClickTime SetCounterLimit syn keyword nqcFunction SetTimerLimit syn keyword nqcFunction CreateDatalog AddToDatalog syn keyword nqcFunction UploadDatalog syn keyword nqcFunction Wait StopAllTasks Random syn keyword nqcFunction SetSleepTime SleepNow syn keyword nqcFunction Program Watch SetWatch syn keyword nqcFunction SetRandomSeed SelectProgram syn keyword nqcFunction BatteryLevel FirmwareVersion syn keyword nqcConstant LIGHT_ON LIGHT_OFF syn keyword nqcFunction SetScoutRules ScoutRules SetScoutMode syn keyword nqcFunction SetEventFeedback EventFeedback SetLight syn keyword nqcConstant OUT_L OUT_R OUT_X syn keyword nqcConstant SENSOR_L SENSOR_M SENSOR_R syn keyword nqcFunction Drive OnWait OnWaitDifferent syn keyword nqcFunction ClearTachoCounter TachoCount TachoSpeed syn keyword nqcFunction ExternalMotorRunning AGC syn keyword nqcTodo contained TODO FIXME XXX syn cluster nqcCommentGroup contains=nqcTodo if exists("nqc_space_errors") if !exists("nqc_no_trail_space_error") syn match nqcSpaceError display excludenl "\s\+$" endif if !exists("nqc_no_tab_space_error") syn match nqcSpaceError display " \+\t"me=e-1 endif endif syn cluster nqcParenGroup contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers if exists("nqc_no_bracket_error") syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen syn match nqcParenError display ")" syn match nqcErrInParen display contained "[{}]" else syn region nqcParen transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket syn region nqcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket syn match nqcParenError display "[\])]" syn match nqcErrInParen display contained "[\]{}]" syn region nqcBracket transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket syn region nqcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket syn match nqcErrInBracket display contained "[);{}]" endif syn case ignore syn match nqcNumbers display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat syn match nqcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" syn match nqcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" syn match nqcFloat display contained "\d\+f" syn match nqcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match nqcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match nqcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" syn case match syn region nqcCommentL start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError syn region nqcComment matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError syntax match nqcCommentError display "\*/" syntax match nqcCommentStartError display "/\*" contained syn region nqcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError syn match nqcPreCondit display "^\s*#\s*\(else\|endif\)\>" if !exists("nqc_no_if0") syn region nqcCppOut start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2 syn region nqcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip syn region nqcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip endif syn region nqcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match nqcInclude display "^\s*#\s*include\>\s*["]" contains=nqcIncluded syn cluster nqcPreProcGroup contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket syn region nqcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup syn region nqcPreProc start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup if !exists("nqc_minlines") if !exists("nqc_no_if0") let nqc_minlines = 50 " #if 0 constructs can be long else let nqc_minlines = 15 " mostly for () constructs endif endif exec "syn sync ccomment nqcComment minlines=" . nqc_minlines hi def link nqcLabel Label hi def link nqcConditional Conditional hi def link nqcRepeat Repeat hi def link nqcCharacter Character hi def link nqcNumber Number hi def link nqcFloat Float hi def link nqcFunction Function hi def link nqcParenError nqcError hi def link nqcErrInParen nqcError hi def link nqcErrInBracket nqcError hi def link nqcCommentL nqcComment hi def link nqcCommentStart nqcComment hi def link nqcCommentError nqcError hi def link nqcCommentStartError nqcError hi def link nqcSpaceError nqcError hi def link nqcStorageClass StorageClass hi def link nqcInclude Include hi def link nqcPreProc PreProc hi def link nqcDefine Macro hi def link nqcIncluded String hi def link nqcError Error hi def link nqcStatement Statement hi def link nqcEvents Statement hi def link nqcPreCondit PreCondit hi def link nqcType Type hi def link nqcConstant Constant hi def link nqcCommentSkip nqcComment hi def link nqcComment Comment hi def link nqcTodo Todo hi def link nqcCppSkip nqcCppOut hi def link nqcCppOut2 nqcCppOut hi def link nqcCppOut Comment let b:current_syntax = "nqc" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if exists("nroff_space_errors") syn match nroffError /\s\+$/ syn match nroffSpaceError /[.,:;!?]\s\{2,}/ endif setlocal paragraphs+=XP if exists("b:preprocs_as_sections") setlocal sections=EQTSPS[\ G1GS endif syn match nroffEscChar /\\[CN]/ nextgroup=nroffEscCharArg syn match nroffEscape /\\[*fgmnYV]/ nextgroup=nroffEscRegPar,nroffEscRegArg syn match nroffEscape /\\s[+-]\=/ nextgroup=nroffSize syn match nroffEscape /\\[$AbDhlLRvxXZ]/ nextgroup=nroffEscPar,nroffEscArg syn match nroffEscRegArg /./ contained syn match nroffEscRegArg2 /../ contained syn match nroffEscRegPar /(/ contained nextgroup=nroffEscRegArg2 syn match nroffEscArg /./ contained syn match nroffEscArg2 /../ contained syn match nroffEscPar /(/ contained nextgroup=nroffEscArg2 syn match nroffSize /\((\d\)\=\d/ contained syn region nroffEscCharArg start=/'/ end=/'/ contained syn region nroffEscArg start=/'/ end=/'/ contained contains=nroffEscape,@nroffSpecial if exists("b:nroff_is_groff") syn region nroffEscRegArg matchgroup=nroffEscape start=/\[/ end=/\]/ contained oneline syn region nroffSize matchgroup=nroffEscape start=/\[/ end=/\]/ contained endif syn match nroffEscape /\\[adprtu{}]/ syn match nroffEscape /\\$/ syn match nroffEscape /\\\$[@*]/ syn match nroffSpecialChar /\\[\\eE?!-]/ syn match nroffSpace "\\[&%~|^0)/,]" syn match nroffSpecialChar /\\(../ if exists("b:nroff_is_groff") syn match nroffSpecialChar /\\\[[^]]*]/ syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\?/ end=/\\?/ oneline endif syn region nroffPreserve matchgroup=nroffSpecialChar start=/\\!/ end=/$/ oneline syn cluster nroffSpecial contains=nroffSpecialChar,nroffSpace syn region nroffString start=/"/ end=/"/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained syn region nroffString start=/'/ end=/'/ skip=/\\$/ contains=nroffEscape,@nroffSpecial contained syn match nroffNumBlock /[0-9.]\a\=/ contained contains=nroffNumber syn match nroffNumber /\d\+\(\.\d*\)\=/ contained nextgroup=nroffUnit,nroffBadChar syn match nroffNumber /\.\d\+)/ contained nextgroup=nroffUnit,nroffBadChar syn match nroffBadChar /./ contained syn match nroffUnit /[icpPszmnvMu]/ contained syn match nroffReqLeader /^[.']/ nextgroup=nroffReqName skipwhite syn match nroffReqLeader /[.']/ contained nextgroup=nroffReqName skipwhite if exists("b:nroff_is_groff") syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg else syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg endif syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite syn match nroffReqName /el/ contained nextgroup=nroffReqLeader skipwhite syn match nroffCond /\S\+/ contained nextgroup=nroffReqLeader skipwhite syn match nroffReqname /[da]s/ contained nextgroup=nroffDefIdent skipwhite syn match nroffDefIdent /\S\+/ contained nextgroup=nroffDefinition skipwhite syn region nroffDefinition matchgroup=nroffSpecialChar start=/"/ matchgroup=NONE end=/\\"/me=e-2 skip=/\\$/ start=/\S/ end=/$/ contained contains=nroffDefSpecial syn match nroffDefSpecial /\\$/ contained syn match nroffDefSpecial /\\\((.\)\=./ contained if exists("b:nroff_is_groff") syn match nroffDefSpecial /\\\[[^]]*]/ contained endif syn match nroffReqName /\(d[ei]\|am\)/ contained nextgroup=nroffIdent skipwhite syn match nroffIdent /[^[?( \t]\+/ contained if exists("b:nroff_is_groff") syn match nroffReqName /als/ contained nextgroup=nroffIdent skipwhite endif syn match nroffReqName /[rn]r/ contained nextgroup=nroffIdent skipwhite if exists("b:nroff_is_groff") syn match nroffReqName /\(rnn\|aln\)/ contained nextgroup=nroffIdent skipwhite endif syn region nroffEquation start=/^\.\s*EQ\>/ end=/^\.\s*EN\>/ syn region nroffTable start=/^\.\s*TS\>/ end=/^\.\s*TE\>/ syn region nroffPicture start=/^\.\s*PS\>/ end=/^\.\s*PE\>/ syn region nroffRefer start=/^\.\s*\[\>/ end=/^\.\s*\]\>/ syn region nroffGrap start=/^\.\s*G1\>/ end=/^\.\s*G2\>/ syn region nroffGremlin start=/^\.\s*GS\>/ end=/^\.\s*GE|GF\>/ syn region nroffIgnore start=/^[.']\s*ig/ end=/^['.]\s*\./ syn match nroffComment /\(^[.']\s*\)\=\\".*/ contains=nroffTodo syn match nroffComment /^'''.*/ contains=nroffTodo if exists("b:nroff_is_groff") syn match nroffComment "\\#.*$" contains=nroffTodo endif syn keyword nroffTodo TODO XXX FIXME contained hi def link nroffEscChar nroffSpecialChar hi def link nroffEscCharAr nroffSpecialChar hi def link nroffSpecialChar SpecialChar hi def link nroffSpace Delimiter hi def link nroffEscRegArg2 nroffEscRegArg hi def link nroffEscRegArg nroffIdent hi def link nroffEscArg2 nroffEscArg hi def link nroffEscPar nroffEscape hi def link nroffEscRegPar nroffEscape hi def link nroffEscArg nroffEscape hi def link nroffSize nroffEscape hi def link nroffEscape Preproc hi def link nroffIgnore Comment hi def link nroffComment Comment hi def link nroffTodo Todo hi def link nroffReqLeader nroffRequest hi def link nroffReqName nroffRequest hi def link nroffRequest Statement hi def link nroffCond PreCondit hi def link nroffDefIdent nroffIdent hi def link nroffIdent Identifier hi def link nroffEquation PreProc hi def link nroffTable PreProc hi def link nroffPicture PreProc hi def link nroffRefer PreProc hi def link nroffGrap PreProc hi def link nroffGremlin PreProc hi def link nroffNumber Number hi def link nroffBadChar nroffError hi def link nroffSpaceError nroffError hi def link nroffError Error hi def link nroffPreserve String hi def link nroffString String hi def link nroffDefinition String hi def link nroffDefSpecial Special let b:current_syntax = "nroff" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match nsisLine nextgroup=@nsisPseudoStatement skipwhite "^" syn cluster nsisPseudoStatement contains=nsisFirstComment,nsisLocalLabel,nsisGlobalLabel syn cluster nsisPseudoStatement add=nsisDefine,nsisPreCondit,nsisMacro,nsisInclude,nsisSystem syn cluster nsisPseudoStatement add=nsisAttribute,nsisCompiler,nsisVersionInfo,nsisInstruction,nsisStatement syn keyword nsisTodo todo attention note fixme readme syn region nsisComment start="[;#]" end="$" contains=nsisTodo,nsisLineContinuation,@Spell oneline syn region nsisComment start=".\@1<=/\*" end="\*/" contains=nsisTodo,@Spell syn region nsisFirstComment start="/\*" end="\*/" contained contains=nsisTodo,@Spell skipwhite \ nextgroup=@nsisPseudoStatement syn match nsisLineContinuation "\\$" syn region nsisString start=/"/ end=/"/ contains=@nsisStringItems,@Spell syn region nsisString start=/'/ end=/'/ contains=@nsisStringItems,@Spell syn region nsisString start=/`/ end=/`/ contains=@nsisStringItems,@Spell syn cluster nsisStringItems contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisRegistry,nsisLineContinuation syn match nsisNumber "\<[1-9]\d*\>" syn match nsisNumber "\<0x\x\+\>" syn match nsisNumber "\<0\o*\>" syn region nsisPreprocSubst start="\${" end="}" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar syn region nsisPreprocLangStr start="\$(" end=")" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar syn region nsisPreprocEnvVar start="\$%" end="%" contains=nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar syn match nsisUserVar "$\d" syn match nsisUserVar "$R\d" syn match nsisSysVar "$INSTDIR" syn match nsisSysVar "$OUTDIR" syn match nsisSysVar "$CMDLINE" syn match nsisSysVar "$LANGUAGE" syn match nsisSysVar "$PROGRAMFILES" syn match nsisSysVar "$PROGRAMFILES32" syn match nsisSysVar "$PROGRAMFILES64" syn match nsisSysVar "$COMMONFILES" syn match nsisSysVar "$COMMONFILES32" syn match nsisSysVar "$COMMONFILES64" syn match nsisSysVar "$DESKTOP" syn match nsisSysVar "$EXEDIR" syn match nsisSysVar "$EXEFILE" syn match nsisSysVar "$EXEPATH" syn match nsisSysVar "${NSISDIR}" syn match nsisSysVar "$WINDIR" syn match nsisSysVar "$SYSDIR" syn match nsisSysVar "$TEMP" syn match nsisSysVar "$STARTMENU" syn match nsisSysVar "$SMPROGRAMS" syn match nsisSysVar "$SMSTARTUP" syn match nsisSysVar "$QUICKLAUNCH" syn match nsisSysVar "$DOCUMENTS" syn match nsisSysVar "$SENDTO" syn match nsisSysVar "$RECENT" syn match nsisSysVar "$FAVORITES" syn match nsisSysVar "$MUSIC" syn match nsisSysVar "$PICTURES" syn match nsisSysVar "$VIDEOS" syn match nsisSysVar "$NETHOOD" syn match nsisSysVar "$FONTS" syn match nsisSysVar "$TEMPLATES" syn match nsisSysVar "$APPDATA" syn match nsisSysVar "$LOCALAPPDATA" syn match nsisSysVar "$PRINTHOOD" syn match nsisSysVar "$INTERNET_CACHE" syn match nsisSysVar "$COOKIES" syn match nsisSysVar "$HISTORY" syn match nsisSysVar "$PROFILE" syn match nsisSysVar "$ADMINTOOLS" syn match nsisSysVar "$RESOURCES" syn match nsisSysVar "$RESOURCES_LOCALIZED" syn match nsisSysVar "$CDBURN_AREA" syn match nsisSysVar "$HWNDPARENT" syn match nsisSysVar "$PLUGINSDIR" syn match nsisSysVar "$\\r" syn match nsisSysVar "$\\n" syn match nsisSysVar "$\\t" syn match nsisSysVar "$\$" syn match nsisSysVar "$\\["'`]" syn match nsisLocalLabel contained "[^-+!$0-9;"'#. \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)" syn match nsisGlobalLabel contained "\.[^-+!$0-9;"'# \t/*][^ \t:;#]*:\ze\%($\|[ \t;#]\|\/\*\)" syn keyword nsisBoolean contained true false syn keyword nsisOnOff contained on off syn keyword nsisRegistry contained HKCR HKLM HKCU HKU HKCC HKDD HKPD SHCTX syn keyword nsisRegistry contained HKCR32 HKCR64 HKCU32 HKCU64 HKLM32 HKLM64 syn keyword nsisRegistry contained HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_USERS syn keyword nsisRegistry contained HKEY_CLASSES_ROOT32 HKEY_CLASSES_ROOT64 syn keyword nsisRegistry contained HKEY_CURRENT_USER32 HKEY_CURRENT_USER64 syn keyword nsisRegistry contained HKEY_LOCAL_MACHINE32 HKEY_LOCAL_MACHINE64 syn keyword nsisRegistry contained HKEY_CURRENT_CONFIG HKEY_DYN_DATA HKEY_PERFORMANCE_DATA syn keyword nsisRegistry contained SHELL_CONTEXT syn cluster nsisAnyOpt contains=nsisComment,nsisLineContinuation,nsisPreprocSubst,nsisPreprocLangStr,nsisPreprocEnvVar,nsisUserVar,nsisSysVar,nsisString,nsisNumber syn region nsisBooleanOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBoolean syn region nsisOnOffOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisOnOff syn region nsisLangOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLangKwd syn match nsisLangKwd contained "/LANG\>" syn region nsisFontOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFontKwd syn match nsisFontKwd contained "/\%(ITALIC\|UNDERLINE\|STRIKE\)\>" syn keyword nsisStatement contained Page UninstPage nextgroup=nsisPageOpt skipwhite syn region nsisPageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageKwd syn keyword nsisPageKwd contained custom license components directory instfiles uninstConfirm syn match nsisPageKwd contained "/ENABLECANCEL\>" syn keyword nsisStatement contained PageEx nextgroup=nsisPageExOpt skipwhite syn region nsisPageExOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPageExKwd syn match nsisPageExKwd contained "\<\%(un\.\)\?\%(custom\|license\|components\|directory\|instfiles\|uninstConfirm\)\>" syn keyword nsisStatement contained PageExEnd PageCallbacks syn keyword nsisStatement contained AddSize SectionEnd SectionGroupEnd syn keyword nsisStatement contained Section nextgroup=nsisSectionOpt skipwhite syn region nsisSectionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionKwd syn match nsisSectionKwd contained "/o\>" syn keyword nsisStatement contained SectionIn nextgroup=nsisSectionInOpt skipwhite syn region nsisSectionInOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionInKwd syn keyword nsisSectionInKwd contained RO syn keyword nsisStatement contained SectionGroup nextgroup=nsisSectionGroupOpt skipwhite syn region nsisSectionGroupOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSectionGroupKwd syn match nsisSectionGroupKwd contained "/e\>" syn keyword nsisStatement contained Function FunctionEnd syn match nsisStatement "${If}" syn match nsisStatement "${IfNot}" syn match nsisStatement "${Unless}" syn match nsisStatement "${ElseIf}" syn match nsisStatement "${ElseIfNot}" syn match nsisStatement "${ElseUnless}" syn match nsisStatement "${Else}" syn match nsisStatement "${EndIf}" syn match nsisStatement "${EndUnless}" syn match nsisStatement "${AndIf}" syn match nsisStatement "${AndIfNot}" syn match nsisStatement "${AndUnless}" syn match nsisStatement "${OrIf}" syn match nsisStatement "${OrIfNot}" syn match nsisStatement "${OrUnless}" syn match nsisStatement "${IfThen}" syn match nsisStatement "${IfNotThen}" syn match nsisStatement "${||\?}" nextgroup=@nsisPseudoStatement skipwhite syn match nsisStatement "${IfCmd}" nextgroup=@nsisPseudoStatement skipwhite syn match nsisStatement "${Select}" syn match nsisStatement "${Case}" syn match nsisStatement "${Case[2-5]}" syn match nsisStatement "${CaseElse}" syn match nsisStatement "${Default}" syn match nsisStatement "${EndSelect}" syn match nsisStatement "${Switch}" syn match nsisStatement "${EndSwitch}" syn match nsisStatement "${Break}" syn match nsisStatement "${Do}" syn match nsisStatement "${DoWhile}" syn match nsisStatement "${DoUntil}" syn match nsisStatement "${ExitDo}" syn match nsisStatement "${Continue}" syn match nsisStatement "${Loop}" syn match nsisStatement "${LoopWhile}" syn match nsisStatement "${LoopUntil}" syn match nsisStatement "${For}" syn match nsisStatement "${ForEach}" syn match nsisStatement "${ExitFor}" syn match nsisStatement "${Next}" syn match nsisStatement "${MementoSection}" syn match nsisStatement "${MementoSectionEnd}" syn keyword nsisInstruction contained Var nextgroup=nsisVarOpt skipwhite syn region nsisVarOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVarKwd syn match nsisVarKwd contained "/GLOBAL\>" syn keyword nsisAttribute contained Caption ChangeUI CheckBitmap CompletedText ComponentText syn keyword nsisAttribute contained DetailsButtonText DirText DirVar syn keyword nsisAttribute contained FileErrorText Icon InstallButtonText syn keyword nsisAttribute contained InstallDir InstProgressFlags syn keyword nsisAttribute contained LicenseData LicenseText syn keyword nsisAttribute contained MiscButtonText Name OutFile syn keyword nsisAttribute contained SpaceTexts SubCaption UninstallButtonText UninstallCaption syn keyword nsisAttribute contained UninstallIcon UninstallSubCaption UninstallText syn keyword nsisAttribute contained AddBrandingImage nextgroup=nsisAddBrandingImageOpt skipwhite syn region nsisAddBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddBrandingImageKwd syn keyword nsisAddBrandingImageKwd contained left right top bottom width height syn keyword nsisAttribute contained nextgroup=nsisBooleanOpt skipwhite \ AllowRootDirInstall AutoCloseWindow syn keyword nsisAttribute contained BGFont nextgroup=nsisFontOpt skipwhite syn keyword nsisAttribute contained BGGradient nextgroup=nsisBGGradientOpt skipwhite syn region nsisBGGradientOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBGGradientKwd syn keyword nsisBGGradientKwd contained off syn keyword nsisAttribute contained BrandingText nextgroup=nsisBrandingTextOpt skipwhite syn region nsisBrandingTextOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisBrandingTextKwd syn match nsisBrandingTextKwd contained "/TRIM\%(LEFT\|RIGHT\|CENTER\)\>" syn keyword nsisAttribute contained CRCCheck nextgroup=nsisCRCCheckOpt skipwhite syn region nsisCRCCheckOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCRCCheckKwd syn keyword nsisCRCCheckKwd contained on off force syn keyword nsisAttribute contained DirVerify nextgroup=nsisDirVerifyOpt skipwhite syn region nsisDirVerifyOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDirVerifyKwd syn keyword nsisDirVerifyKwd contained auto leave syn keyword nsisAttribute contained InstallColors nextgroup=nsisInstallColorsOpt skipwhite syn region nsisInstallColorsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstallColorsKwd syn match nsisInstallColorsKwd contained "/windows\>" syn keyword nsisAttribute contained InstallDirRegKey nextgroup=nsisRegistryOpt skipwhite syn keyword nsisAttribute contained InstType nextgroup=nsisInstTypeOpt skipwhite syn region nsisInstTypeOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisInstTypeKwd syn match nsisInstTypeKwd contained "/\%(NOCUSTOM\|CUSTOMSTRING\|COMPONENTSONLYONCUSTOM\)\>" syn keyword nsisAttribute contained LicenseBkColor nextgroup=nsisLicenseBkColorOpt skipwhite syn region nsisLicenseBkColorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseBkColorKwd syn match nsisLicenseBkColorKwd contained "/\%(gray\|windows\)\>" syn keyword nsisAttribute contained LicenseForceSelection nextgroup=nsisLicenseForceSelectionOpt skipwhite syn region nsisLicenseForceSelectionOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisLicenseForceSelectionKwd syn keyword nsisLicenseForceSelectionKwd contained checkbox radiobuttons off syn keyword nsisAttribute contained ManifestDPIAware nextgroup=nsisManifestDPIAwareOpt skipwhite syn region nsisManifestDPIAwareOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestDPIAwareKwd syn keyword nsisManifestDPIAwareKwd contained notset true false syn keyword nsisAttribute contained ManifestSupportedOS nextgroup=nsisManifestSupportedOSOpt skipwhite syn region nsisManifestSupportedOSOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisManifestSupportedOSKwd syn match nsisManifestSupportedOSKwd contained "\<\%(none\|all\|WinVista\|Win7\|Win8\|Win8\.1\|Win10\)\>" syn keyword nsisAttribute contained RequestExecutionLevel nextgroup=nsisRequestExecutionLevelOpt skipwhite syn region nsisRequestExecutionLevelOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRequestExecutionLevelKwd syn keyword nsisRequestExecutionLevelKwd contained none user highest admin syn keyword nsisAttribute contained SetFont nextgroup=nsisLangOpt skipwhite syn keyword nsisAttribute contained nextgroup=nsisShowInstDetailsOpt skipwhite \ ShowInstDetails ShowUninstDetails syn region nsisShowInstDetailsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisShowInstDetailsKwd syn keyword nsisShowInstDetailsKwd contained hide show nevershow syn keyword nsisAttribute contained SilentInstall nextgroup=nsisSilentInstallOpt skipwhite syn region nsisSilentInstallOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentInstallKwd syn keyword nsisSilentInstallKwd contained normal silent silentlog syn keyword nsisAttribute contained SilentUnInstall nextgroup=nsisSilentUnInstallOpt skipwhite syn region nsisSilentUnInstallOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSilentUnInstallKwd syn keyword nsisSilentUnInstallKwd contained normal silent syn keyword nsisAttribute contained nextgroup=nsisOnOffOpt skipwhite \ WindowIcon XPStyle syn keyword nsisCompiler contained nextgroup=nsisOnOffOpt skipwhite \ AllowSkipFiles SetDatablockOptimize SetDateSave syn keyword nsisCompiler contained FileBufSize SetCompressorDictSize syn keyword nsisCompiler contained SetCompress nextgroup=nsisSetCompressOpt skipwhite syn region nsisSetCompressOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressKwd syn keyword nsisSetCompressKwd contained auto force off syn keyword nsisCompiler contained SetCompressor nextgroup=nsisSetCompressorOpt skipwhite syn region nsisSetCompressorOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCompressorKwd syn keyword nsisSetCompressorKwd contained zlib bzip2 lzma syn match nsisSetCompressorKwd contained "/\%(SOLID\|FINAL\)" syn keyword nsisCompiler contained SetOverwrite nextgroup=nsisSetOverwriteOpt skipwhite syn region nsisSetOverwriteOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetOverwriteKwd syn keyword nsisSetOverwriteKwd contained on off try ifnewer ifdiff lastused syn keyword nsisCompiler contained Unicode nextgroup=nsisBooleanOpt skipwhite syn keyword nsisVersionInfo contained VIAddVersionKey nextgroup=nsisLangOpt skipwhite syn keyword nsisVersionInfo contained VIProductVersion VIFileVersion syn keyword nsisInstruction contained Delete Rename nextgroup=nsisDeleteOpt skipwhite syn region nsisDeleteOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteKwd syn match nsisDeleteKwd contained "/REBOOTOK\>" syn keyword nsisInstruction contained Exec ExecWait SetOutPath syn keyword nsisInstruction contained ExecShell ExecShellWait nextgroup=nsisExecShellOpt skipwhite syn region nsisExecShellOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisExecShellKwd syn keyword nsisExecShellKwd contained SW_SHOWDEFAULT SW_SHOWNORMAL SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_HIDE syn match nsisExecShellKwd contained "/INVOKEIDLIST\>" syn keyword nsisInstruction contained File nextgroup=nsisFileOpt skipwhite syn region nsisFileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileKwd syn match nsisFileKwd contained "/\%(nonfatal\|[arx]\|oname\)\>" syn keyword nsisInstruction contained ReserveFile nextgroup=nsisReserveFileOpt skipwhite syn region nsisReserveFileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisReserveFileKwd syn match nsisReserveFileKwd contained "/\%(nonfatal\|[rx]\|plugin\)\>" syn keyword nsisInstruction contained RMDir nextgroup=nsisRMDirOpt skipwhite syn region nsisRMDirOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRMDirKwd syn match nsisRMDirKwd contained "/\%(REBOOTOK\|r\)\>" syn keyword nsisInstruction contained DeleteINISec DeleteINIStr FlushINI ReadINIStr WriteINIStr syn keyword nsisInstruction contained ExpandEnvStrings ReadEnvStr syn keyword nsisInstruction contained DeleteRegKey nextgroup=nsisDeleteRegKeyOpt skipwhite syn region nsisDeleteRegKeyOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDeleteRegKeyKwd,nsisRegistry syn match nsisDeleteRegKeyKwd contained "/ifempty\>" syn keyword nsisInstruction contained nextgroup=nsisRegistryOpt skipwhite \ DeleteRegValue EnumRegKey EnumRegValue ReadRegDWORD ReadRegStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegStr syn region nsisRegistryOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry syn keyword nsisInstruction contained WriteRegMultiStr nextgroup=nsisWriteRegMultiStrOpt skipwhite syn region nsisWriteRegMultiStrOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisRegistry,nsisWriteRegMultiStrKwd syn match nsisWriteRegMultiStrKwd contained "/REGEDIT5\>" syn keyword nsisInstruction contained SetRegView nextgroup=nsisSetRegViewOpt skipwhite syn region nsisSetRegViewOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetRegViewKwd syn keyword nsisSetRegViewKwd contained default lastused syn keyword nsisInstruction contained CallInstDLL CreateDirectory GetDLLVersion syn keyword nsisInstruction contained GetDLLVersionLocal GetFileTime GetFileTimeLocal syn keyword nsisInstruction contained GetTempFileName SearchPath RegDLL UnRegDLL syn keyword nsisInstruction contained CopyFiles nextgroup=nsisCopyFilesOpt skipwhite syn region nsisCopyFilesOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCopyFilesKwd syn match nsisCopyFilesKwd contained "/\%(SILENT\|FILESONLY\)\>" syn keyword nsisInstruction contained CreateShortcut nextgroup=nsisCreateShortcutOpt skipwhite syn region nsisCreateShortcutOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisCreateShortcutKwd syn match nsisCreateShortcutKwd contained "/NoWorkingDir\>" syn keyword nsisInstruction contained GetFullPathName nextgroup=nsisGetFullPathNameOpt skipwhite syn region nsisGetFullPathNameOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisGetFullPathNameKwd syn match nsisGetFullPathNameKwd contained "/SHORT\>" syn keyword nsisInstruction contained SetFileAttributes nextgroup=nsisSetFileAttributesOpt skipwhite syn region nsisSetFileAttributesOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileAttrib syn keyword nsisFileAttrib contained NORMAL ARCHIVE HIDDEN OFFLINE READONLY SYSTEM TEMPORARY syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_HIDDEN syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_OFFLINE FILE_ATTRIBUTE_READONLY FILE_ATTRIBUTE_SYSTEM syn keyword nsisFileAttrib contained FILE_ATTRIBUTE_TEMPORARY syn keyword nsisInstruction contained Abort Call ClearErrors GetCurrentAddress syn keyword nsisInstruction contained GetFunctionAddress GetLabelAddress Goto syn keyword nsisInstruction contained IfAbort IfErrors IfFileExists IfRebootFlag IfSilent syn keyword nsisInstruction contained IntCmp IntCmpU Int64Cmp Int64CmpU IntPtrCmp IntPtrCmpU syn keyword nsisInstruction contained Return Quit SetErrors StrCmp StrCmpS syn keyword nsisInstruction contained MessageBox nextgroup=nsisMessageBoxOpt skipwhite syn region nsisMessageBoxOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisMessageBox syn keyword nsisMessageBox contained MB_OK MB_OKCANCEL MB_ABORTRETRYIGNORE MB_RETRYCANCEL MB_YESNO MB_YESNOCANCEL syn keyword nsisMessageBox contained MB_ICONEXCLAMATION MB_ICONINFORMATION MB_ICONQUESTION MB_ICONSTOP MB_USERICON syn keyword nsisMessageBox contained MB_TOPMOST MB_SETFOREGROUND MB_RIGHT MB_RTLREADING syn keyword nsisMessageBox contained MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3 MB_DEFBUTTON4 syn keyword nsisMessageBox contained IDABORT IDCANCEL IDIGNORE IDNO IDOK IDRETRY IDYES syn match nsisMessageBox contained "/SD\>" syn keyword nsisInstruction contained FileClose FileOpen FileRead FileReadUTF16LE syn keyword nsisInstruction contained FileReadByte FileReadWord FileSeek FileWrite syn keyword nsisInstruction contained FileWriteByte FileWriteWord syn keyword nsisInstruction contained FindClose FindFirst FindNext syn keyword nsisInstruction contained FileWriteUTF16LE nextgroup=nsisFileWriteUTF16LEOpt skipwhite syn region nsisFileWriteUTF16LEOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisFileWriteUTF16LEKwd syn match nsisFileWriteUTF16LEKwd contained "/BOM\>" syn keyword nsisInstruction contained WriteUninstaller syn keyword nsisInstruction contained GetErrorLevel GetInstDirError InitPluginsDir Nop syn keyword nsisInstruction contained SetErrorLevel Sleep syn keyword nsisInstruction contained SetShellVarContext nextgroup=nsisSetShellVarContextOpt skipwhite syn region nsisSetShellVarContextOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetShellVarContextKwd syn keyword nsisSetShellVarContextKwd contained current all syn keyword nsisInstruction contained StrCpy StrLen syn keyword nsisInstruction contained Exch Push Pop syn keyword nsisInstruction contained IntFmt Int64Fmt IntOp IntPtrOp syn keyword nsisInstruction contained Reboot SetRebootFlag syn keyword nsisInstruction contained LogSet nextgroup=nsisOnOffOpt skipwhite syn keyword nsisInstruction contained LogText syn keyword nsisInstruction contained SectionSetFlags SectionGetFlags SectionSetText syn keyword nsisInstruction contained SectionGetText SectionSetInstTypes SectionGetInstTypes syn keyword nsisInstruction contained SectionSetSize SectionGetSize SetCurInstType GetCurInstType syn keyword nsisInstruction contained InstTypeSetText InstTypeGetText syn keyword nsisInstruction contained BringToFront DetailPrint EnableWindow syn keyword nsisInstruction contained FindWindow GetDlgItem HideWindow IsWindow syn keyword nsisInstruction contained ShowWindow syn keyword nsisInstruction contained CreateFont nextgroup=nsisFontOpt skipwhite syn keyword nsisInstruction contained nextgroup=nsisBooleanOpt skipwhite \ LockWindow SetAutoClose syn keyword nsisInstruction contained SendMessage nextgroup=nsisSendMessageOpt skipwhite syn region nsisSendMessageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSendMessageKwd syn match nsisSendMessageKwd contained "/TIMEOUT\>" syn keyword nsisInstruction contained SetBrandingImage nextgroup=nsisSetBrandingImageOpt skipwhite syn region nsisSetBrandingImageOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetBrandingImageKwd syn match nsisSetBrandingImageKwd contained "/\%(IMGID\|RESIZETOFIT\)\>" syn keyword nsisInstruction contained SetDetailsView nextgroup=nsisSetDetailsViewOpt skipwhite syn region nsisSetDetailsViewOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsViewKwd syn keyword nsisSetDetailsViewKwd contained show hide syn keyword nsisInstruction contained SetDetailsPrint nextgroup=nsisSetDetailsPrintOpt skipwhite syn region nsisSetDetailsPrintOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetDetailsPrintKwd syn keyword nsisSetDetailsPrintKwd contained none listonly textonly both lastused syn keyword nsisInstruction contained SetCtlColors nextgroup=nsisSetCtlColorsOpt skipwhite syn region nsisSetCtlColorsOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetCtlColorsKwd syn match nsisSetCtlColorsKwd contained "/BRANDING\>" syn keyword nsisInstruction contained SetSilent nextgroup=nsisSetSilentOpt skipwhite syn region nsisSetSilentOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSetSilentKwd syn keyword nsisSetSilentKwd contained silent normal syn keyword nsisInstruction contained LoadLanguageFile LangString LicenseLangString syn match nsisCallback "\.onGUIInit" syn match nsisCallback "\.onInit" syn match nsisCallback "\.onInstFailed" syn match nsisCallback "\.onInstSuccess" syn match nsisCallback "\.onGUIEnd" syn match nsisCallback "\.onMouseOverSection" syn match nsisCallback "\.onRebootFailed" syn match nsisCallback "\.onSelChange" syn match nsisCallback "\.onUserAbort" syn match nsisCallback "\.onVerifyInstDir" syn match nsisCallback "un\.onGUIInit" syn match nsisCallback "un\.onInit" syn match nsisCallback "un\.onUninstFailed" syn match nsisCallback "un\.onUninstSuccess" syn match nsisCallback "un\.onGUIEnd" syn match nsisCallback "un\.onRebootFailed" syn match nsisCallback "un\.onSelChange" syn match nsisCallback "un\.onUserAbort" syn match nsisInclude contained "!include\>" nextgroup=nsisIncludeOpt skipwhite syn region nsisIncludeOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIncludeKwd syn match nsisIncludeKwd contained "/\%(NONFATAL\|CHARSET\)\>" syn match nsisSystem contained "!addincludedir\>" syn match nsisSystem contained "!addplugindir\>" nextgroup=nsisAddplugindirOpt skipwhite syn region nsisAddplugindirOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAddplugindirKwd syn match nsisAddplugindirKwd contained "/\%(x86-ansi\|x86-unicode\)\>" syn match nsisSystem contained "!appendfile\>" nextgroup=nsisAppendfileOpt skipwhite syn region nsisAppendfileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisAppendfileKwd syn match nsisAppendfileKwd contained "/\%(CHARSET\|RawNL\)\>" syn match nsisSystem contained "!cd\>" syn match nsisSystem contained "!delfile\>" nextgroup=nsisDelfileOpt skipwhite syn region nsisDelfileOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDelfileKwd syn match nsisDelfileKwd contained "/nonfatal\>" syn match nsisSystem contained "!echo\>" syn match nsisSystem contained "!error\>" syn match nsisSystem contained "!execute\>" syn match nsisSystem contained "!makensis\>" syn match nsisSystem contained "!packhdr\>" syn match nsisSystem contained "!finalize\>" syn match nsisSystem contained "!system\>" syn match nsisSystem contained "!tempfile\>" syn match nsisSystem contained "!getdllversion\>" syn match nsisSystem contained "!gettlbversion\>" syn match nsisSystem contained "!warning\>" syn match nsisSystem contained "!pragma\>" nextgroup=nsisPragmaOpt skipwhite syn region nsisPragmaOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisPragmaKwd syn keyword nsisPragmaKwd contained enable disable default push pop syn match nsisSystem contained "!verbose\>" nextgroup=nsisVerboseOpt skipwhite syn region nsisVerboseOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisVerboseKwd syn keyword nsisVerboseKwd contained push pop syn match nsisDefine contained "!define\>" nextgroup=nsisDefineOpt skipwhite syn region nsisDefineOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisDefineKwd syn match nsisDefineKwd contained "/\%(ifndef\|redef\|date\|utcdate\|math\|file\)\>" syn match nsisDefine contained "!undef\>" syn match nsisPreCondit contained "!ifdef\>" syn match nsisPreCondit contained "!ifndef\>" syn match nsisPreCondit contained "!if\>" nextgroup=nsisIfOpt skipwhite syn region nsisIfOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisIfKwd syn match nsisIfKwd contained "/FileExists\>" syn match nsisPreCondit contained "!ifmacrodef\>" syn match nsisPreCondit contained "!ifmacrondef\>" syn match nsisPreCondit contained "!else\>" syn match nsisPreCondit contained "!endif\>" syn match nsisMacro contained "!insertmacro\>" syn match nsisMacro contained "!macro\>" syn match nsisMacro contained "!macroend\>" syn match nsisMacro contained "!macroundef\>" syn match nsisMacro contained "!searchparse\>" nextgroup=nsisSearchparseOpt skipwhite syn region nsisSearchparseOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchparseKwd syn match nsisSearchparseKwd contained "/\%(ignorecase\|noerrors\|file\)\>" syn match nsisMacro contained "!searchreplace\>" nextgroup=nsisSearchreplaceOpt skipwhite syn region nsisSearchreplaceOpt contained start="" end="$" transparent keepend contains=@nsisAnyOpt,nsisSearchreplaceKwd syn match nsisSearchreplaceKwd contained "/ignorecase\>" hi def link nsisInstruction Function hi def link nsisComment Comment hi def link nsisFirstComment Comment hi def link nsisLocalLabel Label hi def link nsisGlobalLabel Label hi def link nsisStatement Statement hi def link nsisString String hi def link nsisBoolean Boolean hi def link nsisOnOff Boolean hi def link nsisFontKwd Constant hi def link nsisLangKwd Constant hi def link nsisPageKwd Constant hi def link nsisPageExKwd Constant hi def link nsisSectionKwd Constant hi def link nsisSectionInKwd Constant hi def link nsisSectionGroupKwd Constant hi def link nsisVarKwd Constant hi def link nsisAddBrandingImageKwd Constant hi def link nsisBGGradientKwd Constant hi def link nsisBrandingTextKwd Constant hi def link nsisCRCCheckKwd Constant hi def link nsisDirVerifyKwd Constant hi def link nsisInstallColorsKwd Constant hi def link nsisInstTypeKwd Constant hi def link nsisLicenseBkColorKwd Constant hi def link nsisLicenseForceSelectionKwd Constant hi def link nsisManifestDPIAwareKwd Constant hi def link nsisManifestSupportedOSKwd Constant hi def link nsisRequestExecutionLevelKwd Constant hi def link nsisShowInstDetailsKwd Constant hi def link nsisSilentInstallKwd Constant hi def link nsisSilentUnInstallKwd Constant hi def link nsisSetCompressKwd Constant hi def link nsisSetCompressorKwd Constant hi def link nsisSetOverwriteKwd Constant hi def link nsisDeleteKwd Constant hi def link nsisExecShellKwd Constant hi def link nsisFileKwd Constant hi def link nsisReserveFileKwd Constant hi def link nsisRMDirKwd Constant hi def link nsisDeleteRegKeyKwd Constant hi def link nsisWriteRegMultiStrKwd Constant hi def link nsisSetRegViewKwd Constant hi def link nsisCopyFilesKwd Constant hi def link nsisCreateShortcutKwd Constant hi def link nsisGetFullPathNameKwd Constant hi def link nsisFileAttrib Constant hi def link nsisMessageBox Constant hi def link nsisFileWriteUTF16LEKwd Constant hi def link nsisSetShellVarContextKwd Constant hi def link nsisSendMessageKwd Constant hi def link nsisSetBrandingImageKwd Constant hi def link nsisSetDetailsViewKwd Constant hi def link nsisSetDetailsPrintKwd Constant hi def link nsisSetCtlColorsKwd Constant hi def link nsisSetSilentKwd Constant hi def link nsisRegistry Identifier hi def link nsisNumber Number hi def link nsisError Error hi def link nsisUserVar Identifier hi def link nsisSysVar Identifier hi def link nsisAttribute Type hi def link nsisCompiler Type hi def link nsisVersionInfo Type hi def link nsisTodo Todo hi def link nsisCallback Identifier hi def link nsisPreprocSubst PreProc hi def link nsisPreprocLangStr PreProc hi def link nsisPreprocEnvVar PreProc hi def link nsisDefine Define hi def link nsisMacro Macro hi def link nsisPreCondit PreCondit hi def link nsisInclude Include hi def link nsisSystem PreProc hi def link nsisLineContinuation Special hi def link nsisIncludeKwd Constant hi def link nsisAddplugindirKwd Constant hi def link nsisAppendfileKwd Constant hi def link nsisDelfileKwd Constant hi def link nsisPragmaKwd Constant hi def link nsisVerboseKwd Constant hi def link nsisDefineKwd Constant hi def link nsisIfKwd Constant hi def link nsisSearchparseKwd Constant hi def link nsisSearchreplaceKwd Constant let b:current_syntax = "nsis" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match objError "^\a\+" syn match objKeywords "^cstype\s" syn match objKeywords "^ctech\s" syn match objKeywords "^stech\s" syn match objKeywords "^deg\s" syn match objKeywords "^curv\(2\?\)\s" syn match objKeywords "^parm\s" syn match objKeywords "^surf\s" syn match objKeywords "^end\s" syn match objKeywords "^bzp\s" syn match objKeywords "^bsp\s" syn match objKeywords "^res\s" syn match objKeywords "^cdc\s" syn match objKeywords "^con\s" syn match objKeywords "^shadow_obj\s" syn match objKeywords "^trace_obj\s" syn match objKeywords "^usemap\s" syn match objKeywords "^lod\s" syn match objKeywords "^maplib\s" syn match objKeywords "^d_interp\s" syn match objKeywords "^c_interp\s" syn match objKeywords "^bevel\s" syn match objKeywords "^mg\s" syn match objKeywords "^s\s" syn match objKeywords "^con\s" syn match objKeywords "^trim\s" syn match objKeywords "^hole\s" syn match objKeywords "^scrv\s" syn match objKeywords "^sp\s" syn match objKeywords "^step\s" syn match objKeywords "^bmat\s" syn match objKeywords "^csh\s" syn match objKeywords "^call\s" syn match objComment "^#.*" syn match objVertex "^v\s" syn match objFace "^f\s" syn match objVertice "^vt\s" syn match objNormale "^vn\s" syn match objGroup "^g\s.*" syn match objMaterial "^usemtl\s.*" syn match objInclude "^mtllib\s.*" syn match objFloat "-\?\d\+\.\d\+\(e\(+\|-\)\d\+\)\?" syn match objInt "\d\+" syn match objIndex "\d\+\/\d*\/\d*" hi def link objError Error hi def link objComment Comment hi def link objInclude PreProc hi def link objFloat Float hi def link objInt Number hi def link objGroup Structure hi def link objIndex Constant hi def link objMaterial Label hi def link objVertex Keyword hi def link objNormale Keyword hi def link objVertice Keyword hi def link objFace Keyword hi def link objKeywords Keyword let b:current_syntax = "obj" if exists("b:current_syntax") finish endif if &filetype != 'objcpp' syn clear runtime! syntax/c.vim endif let s:cpo_save = &cpo set cpo&vim syn keyword objcPreProcMacro __OBJC__ __OBJC2__ __clang__ syn keyword objcPrincipalType id Class SEL IMP BOOL instancetype syn keyword objcUsefulTerm nil Nil NO YES syn region objcImported display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match objcImported display contained "\(<\h[-a-zA-Z0-9_/]*\.h>\|<[a-z0-9]\+>\)" syn match objcImport display "^\s*\(%:\|#\)\s*import\>\s*["<]" contains=objcImported syn match objcObjDef display /@interface\>\|@implementation\>\|@end\>\|@class\>/ syn match objcProtocol display /@protocol\>\|@optional\>\|@required\>/ syn match objcProperty display /@property\>\|@synthesize\>\|@dynamic\>/ syn match objcIvarScope display /@private\>\|@protected\>\|@public\>\|@package\>/ syn match objcInternalRep display /@selector\>\|@encode\>/ syn match objcException display /@try\>\|@throw\>\|@catch\|@finally\>/ syn match objcThread display /@synchronized\>/ syn match objcPool display /@autoreleasepool\>/ syn match objcModuleImport display /@import\>/ syn match objcSpecial display contained "%@" syn region objcString start=+\(@"\|"\)+ skip=+\\\\\|\\"+ end=+"+ contains=cFormat,cSpecial,objcSpecial syn keyword objcHiddenArgument self _cmd super syn keyword objcBlocksQualifier __block syn keyword objcObjectLifetimeQualifier __strong __weak __unsafe_unretained __autoreleasing syn keyword objcTollFreeBridgeQualifier __bridge __bridge_retained __bridge_transfer syn match objcRemoteMessagingQualifier display contained /\((\s*oneway\s\+\|(\s*in\s\+\|(\s*out\s\+\|(\s*inout\s\+\|(\s*bycopy\s\+\(in\(out\)\?\|out\)\?\|(\s*byref\s\+\(in\(out\)\?\|out\)\?\)/hs=s+1 syn keyword objcStorageClass _Nullable _Nonnull _Null_unspecified syn keyword objcStorageClass __nullable __nonnull __null_unspecified syn keyword objcStorageClass nullable nonnull null_unspecified syn keyword objcTypeSpecifier __kindof __covariant syn keyword objcTypeInfoParams ObjectType KeyType syn cluster objcTypeQualifier contains=objcBlocksQualifier,objcObjectLifetimeQualifier,objcTollFreeBridgeQualifier,objcRemoteMessagingQualifier syn match objcFastEnumKeyword display /\sin\(\s\|$\)/ syn match objcLiteralSyntaxNumber display /@\(YES\>\|NO\>\|\d\|-\|+\)/ contains=cNumber,cFloat,cOctal syn match objcLiteralSyntaxSpecialChar display /@'/ contains=cSpecialCharacter syn match objcLiteralSyntaxChar display /@'[^\\]'/ syn match objcLiteralSyntaxOp display /@\((\|\[\|{\)/me=e-1,he=e-1 syn match objDeclPropAccessorNameAssign display /\s*=\s*/ contained syn region objcDeclPropAccessorName display start=/\(getter\|setter\)/ end=/\h\w*/ contains=objDeclPropAccessorNameAssign syn keyword objcDeclPropAccessorType readonly readwrite contained syn keyword objcDeclPropAssignSemantics assign retain copy contained syn keyword objcDeclPropAtomicity nonatomic contained syn keyword objcDeclPropARC strong weak contained syn match objcDeclPropNullable /\((\|\s\)nullable\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained syn match objcDeclPropNonnull /\((\|\s\)nonnull\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained syn match objcDeclPropNullUnspecified /\((\|\s\)null_unspecified\(,\|)\)/ms=s+1,hs=s+1,me=e-1,he=e-1 contained syn keyword objcDeclProcNullResettable null_resettable contained syn region objcDeclProp display transparent keepend start=/@property\s*(/ end=/)/ contains=objcProperty,objcDeclPropAccessorName,objcDeclPropAccessorType,objcDeclPropAssignSemantics,objcDeclPropAtomicity,objcDeclPropARC,objcDeclPropNullable,objcDeclPropNonnull,objcDeclPropNullUnspecified,objcDeclProcNullResettable syn match objcColon display /^\s*\h\w*\s*\:\(\s\|.\)/me=e-1,he=e-1 syn match objcProtocolList display /<\h\w*\(\s*,\s*\h\w*\)*>/ contains=objcPrincipalType,cType,Type,objcType,objcTypeInfoParams syn match objcTypeInfo display /<\h\w*\s*<\(\h\w*\s*\**\|\h\w*\)>>/ contains=objcPrincipalType,cType,Type,objcType,objcTypeInfoParams syn cluster objcCEntities contains=cType,cStructure,cStorageClass,cString,cCharacter,cSpecialCharacter,cNumbers,cConstant,cOperator,cComment,cCommentL,cStatement,cLabel,cConditional,cRepeat syn cluster objcObjCEntities contains=objcHiddenArgument,objcPrincipalType,objcString,objcUsefulTerm,objcProtocol,objcInternalRep,objcException,objcThread,objcPool,objcModuleImport,@objcTypeQualifier,objcLiteralSyntaxNumber,objcLiteralSyntaxOp,objcLiteralSyntaxChar,objcLiteralSyntaxSpecialChar,objcProtocolList,objcColon,objcFastEnumKeyword,objcType,objcClass,objcMacro,objcEnum,objcEnumValue,objcExceptionValue,objcNotificationValue,objcConstVar,objcPreProcMacro,objcTypeInfo syn region objcMethodCall start=/\[/ end=/\]/ contains=objcMethodCall,objcBlocks,@objcObjCEntities,@objcCEntities syn match objcInstanceMethod display /^s*-\s*/ syn match objcClassMethod display /^s*+\s*/ syn region objcBlocks start=/\(\^\s*([^)]\+)\s*{\|\^\s*{\)/ end=/}/ contains=objcBlocks,objcMethodCall,@objcObjCEntities,@objcCEntities syn cluster cParenGroup add=objcMethodCall syn cluster cPreProcGroup add=objcMethodCall syn match objcClass /Protocol\s*\*/me=s+8,he=s+8 syn keyword objcType NSInteger NSUInteger NSComparator syn keyword objcEnum NSComparisonResult syn keyword objcEnumValue NSOrderedAscending NSOrderedSame NSOrderedDescending syn keyword objcEnum NSEnumerationOptions syn keyword objcEnumValue NSEnumerationConcurrent NSEnumerationReverse syn keyword objcEnum NSSortOptions syn keyword objcEnumValue NSSortConcurrent NSSortStable syn keyword objcEnumValue NSNotFound syn keyword objcMacro NSIntegerMax NSIntegerMin NSUIntegerMax syn keyword objcMacro NS_INLINE NS_BLOCKS_AVAILABLE NS_NONATOMIC_IOSONLY NS_FORMAT_FUNCTION NS_FORMAT_ARGUMENT NS_RETURNS_RETAINED NS_RETURNS_NOT_RETAINED NS_RETURNS_INNER_POINTER NS_AUTOMATED_REFCOUNT_UNAVAILABLE NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE NS_REQUIRES_PROPERTY_DEFINITIONS NS_REPLACES_RECEIVER NS_RELEASES_ARGUMENT NS_VALID_UNTIL_END_OF_SCOPE NS_ROOT_CLASS NS_REQUIRES_SUPER NS_PROTOCOL_REQUIRES_EXPLICIT_IMPLEMENTATION NS_DESIGNATED_INITIALIZER NS_REQUIRES_NIL_TERMINATION syn keyword objcEnum NSQualityOfService syn keyword objcEnumValue NSQualityOfServiceUserInteractive NSQualityOfServiceUserInitiated NSQualityOfServiceUtility NSQualityOfServiceBackground NSQualityOfServiceDefault syn keyword objcType NSRange NSRangePointer syn keyword objcType NSPoint NSPointPointer NSPointArray NSSize NSSizePointer NSSizeArray NSRect NSRectPointer NSRectArray NSEdgeInsets syn keyword objcEnum NSRectEdge syn keyword objcEnumValue NSMinXEdge NSMinYEdge NSMaxXEdge NSMaxYEdge syn keyword objcEnumValue NSRectEdgeMinX NSRectEdgeMinY NSRectEdgeMaxX NSRectEdgeMaxY syn keyword objcConstVar NSZeroPoint NSZeroSize NSZeroRect NSEdgeInsetsZero syn keyword cType CGFloat CGPoint CGSize CGRect syn keyword objcEnum NSAlignmentOptions syn keyword objcEnumValue NSAlignMinXInward NSAlignMinYInward NSAlignMaxXInward NSAlignMaxYInward NSAlignWidthInward NSAlignHeightInward NSAlignMinXOutward NSAlignMinYOutward NSAlignMaxXOutward NSAlignMaxYOutward NSAlignWidthOutward NSAlignHeightOutward NSAlignMinXNearest NSAlignMinYNearest NSAlignMaxXNearest NSAlignMaxYNearest NSAlignWidthNearest NSAlignHeightNearest NSAlignRectFlipped NSAlignAllEdgesInward NSAlignAllEdgesOutward NSAlignAllEdgesNearest syn keyword objcType NSDecimal syn keyword objcEnum NSRoundingMode syn keyword objcEnumValue NSRoundPlain NSRoundDown NSRoundUp NSRoundBankers syn keyword objcEnum NSCalculationError syn keyword objcEnumValue NSCalculationNoError NSCalculationLossOfPrecision NSCalculationUnderflow NSCalculationOverflow NSCalculationDivideByZero syn keyword objcConstVar NSDecimalMaxSize NSDecimalNoScale syn match objcClass /NSDate\s*\*/me=s+6,he=s+6 syn keyword objcType NSTimeInterval syn keyword objcNotificationValue NSSystemClockDidChangeNotification syn keyword objcMacro NSTimeIntervalSince1970 syn match objcType /NSZone\s*\*/me=s+6,he=s+6 syn keyword objcEnumValue NSScannedOption NSCollectorDisabledOption syn match objcClass /NSError\s*\*/me=s+7,he=s+7 syn keyword objcConstVar NSCocoaErrorDomain NSPOSIXErrorDomain NSOSStatusErrorDomain NSMachErrorDomain NSUnderlyingErrorKey NSLocalizedDescriptionKey NSLocalizedFailureReasonErrorKey NSLocalizedRecoverySuggestionErrorKey NSLocalizedRecoveryOptionsErrorKey NSRecoveryAttempterErrorKey NSHelpAnchorErrorKey NSStringEncodingErrorKey NSURLErrorKey NSFilePathErrorKey syn match objcClass /NSException\s*\*/me=s+11,he=s+11 syn match objcClass /NSAssertionHandler\s*\*/me=s+18,he=s+18 syn keyword objcType NSUncaughtExceptionHandler syn keyword objcConstVar NSGenericException NSRangeException NSInvalidArgumentException NSInternalInconsistencyException NSMallocException NSObjectInaccessibleException NSObjectNotAvailableException NSDestinationInvalidException NSPortTimeoutException NSInvalidSendPortException NSInvalidReceivePortException NSPortSendException NSPortReceiveException NSOldStyleException syn match objcClass /NSNotification\s*\*/me=s+14,he=s+14 syn match objcClass /NSNotificationCenter\s*\*/me=s+20,he=s+20 syn match objcClass /NSDistributedNotificationCenter\s*\*/me=s+31,he=s+31 syn keyword objcConstVar NSLocalNotificationCenterType syn keyword objcEnum NSNotificationSuspensionBehavior syn keyword objcEnumValue NSNotificationSuspensionBehaviorDrop NSNotificationSuspensionBehaviorCoalesce NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorHold NSNotificationSuspensionBehaviorDeliverImmediately syn keyword objcEnumValue NSNotificationDeliverImmediately NSNotificationPostToAllSessions syn keyword objcEnum NSDistributedNotificationOptions syn keyword objcEnumValue NSDistributedNotificationDeliverImmediately NSDistributedNotificationPostToAllSessions syn match objcClass /NSNotificationQueue\s*\*/me=s+19,he=s+19 syn keyword objcEnum NSPostingStyle syn keyword objcEnumValue NSPostWhenIdle NSPostASAP NSPostNow syn keyword objcEnum NSNotificationCoalescing syn keyword objcEnumValue NSNotificationNoCoalescing NSNotificationCoalescingOnName NSNotificationCoalescingOnSender syn match objcClass /NSEnumerator\s*\*/me=s+12,he=s+12 syn match objcClass /NSEnumerator<.*>\s*\*/me=s+12,he=s+12 contains=objcTypeInfoParams syn keyword objcType NSFastEnumerationState syn match objcClass /NSIndexSet\s*\*/me=s+10,he=s+10 syn match objcClass /NSMutableIndexSet\s*\*/me=s+17,he=s+17 syn match objcClass /NSCharacterSet\s*\*/me=s+14,he=s+14 syn match objcClass /NSMutableCharacterSet\s*\*/me=s+21,he=s+21 syn keyword objcConstVar NSOpenStepUnicodeReservedBase syn match objcClass /NSURL\s*\*/me=s+5,he=s+5 syn keyword objcEnum NSURLBookmarkCreationOptions syn keyword objcEnumValue NSURLBookmarkCreationPreferFileIDResolution NSURLBookmarkCreationMinimalBookmark NSURLBookmarkCreationSuitableForBookmarkFile NSURLBookmarkCreationWithSecurityScope NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess syn keyword objcEnum NSURLBookmarkResolutionOptions syn keyword objcEnumValue NSURLBookmarkResolutionWithoutUI NSURLBookmarkResolutionWithoutMounting NSURLBookmarkResolutionWithSecurityScope syn keyword objcType NSURLBookmarkFileCreationOptions syn keyword objcConstVar NSURLFileScheme NSURLKeysOfUnsetValuesKey syn keyword objcConstVar NSURLNameKey NSURLLocalizedNameKey NSURLIsRegularFileKey NSURLIsDirectoryKey NSURLIsSymbolicLinkKey NSURLIsVolumeKey NSURLIsPackageKey NSURLIsApplicationKey NSURLApplicationIsScriptableKey NSURLIsSystemImmutableKey NSURLIsUserImmutableKey NSURLIsHiddenKey NSURLHasHiddenExtensionKey NSURLCreationDateKey NSURLContentAccessDateKey NSURLContentModificationDateKey NSURLAttributeModificationDateKey NSURLLinkCountKey NSURLParentDirectoryURLKey NSURLVolumeURLKey NSURLTypeIdentifierKey NSURLLocalizedTypeDescriptionKey NSURLLabelNumberKey NSURLLabelColorKey NSURLLocalizedLabelKey NSURLEffectiveIconKey NSURLCustomIconKey NSURLFileResourceIdentifierKey NSURLVolumeIdentifierKey NSURLPreferredIOBlockSizeKey NSURLIsReadableKey NSURLIsWritableKey NSURLIsExecutableKey NSURLFileSecurityKey NSURLIsExcludedFromBackupKey NSURLTagNamesKey NSURLPathKey NSURLIsMountTriggerKey NSURLGenerationIdentifierKey NSURLDocumentIdentifierKey NSURLAddedToDirectoryDateKey NSURLQuarantinePropertiesKey NSURLFileResourceTypeKey syn keyword objcConstVar NSURLFileResourceTypeNamedPipe NSURLFileResourceTypeCharacterSpecial NSURLFileResourceTypeDirectory NSURLFileResourceTypeBlockSpecial NSURLFileResourceTypeRegular NSURLFileResourceTypeSymbolicLink NSURLFileResourceTypeSocket NSURLFileResourceTypeUnknown NSURLThumbnailDictionaryKey NSURLThumbnailKey NSThumbnail1024x1024SizeKey syn keyword objcConstVar NSURLFileSizeKey NSURLFileAllocatedSizeKey NSURLTotalFileSizeKey NSURLTotalFileAllocatedSizeKey NSURLIsAliasFileKey NSURLFileProtectionKey NSURLFileProtectionNone NSURLFileProtectionComplete NSURLFileProtectionCompleteUnlessOpen NSURLFileProtectionCompleteUntilFirstUserAuthentication syn keyword objcConstVar NSURLVolumeLocalizedFormatDescriptionKey NSURLVolumeTotalCapacityKey NSURLVolumeAvailableCapacityKey NSURLVolumeResourceCountKey NSURLVolumeSupportsPersistentIDsKey NSURLVolumeSupportsSymbolicLinksKey NSURLVolumeSupportsHardLinksKey NSURLVolumeSupportsJournalingKey NSURLVolumeIsJournalingKey NSURLVolumeSupportsSparseFilesKey NSURLVolumeSupportsZeroRunsKey NSURLVolumeSupportsCaseSensitiveNamesKey NSURLVolumeSupportsCasePreservedNamesKey NSURLVolumeSupportsRootDirectoryDatesKey NSURLVolumeSupportsVolumeSizesKey NSURLVolumeSupportsRenamingKey NSURLVolumeSupportsAdvisoryFileLockingKey NSURLVolumeSupportsExtendedSecurityKey NSURLVolumeIsBrowsableKey NSURLVolumeMaximumFileSizeKey NSURLVolumeIsEjectableKey NSURLVolumeIsRemovableKey NSURLVolumeIsInternalKey NSURLVolumeIsAutomountedKey NSURLVolumeIsLocalKey NSURLVolumeIsReadOnlyKey NSURLVolumeCreationDateKey NSURLVolumeURLForRemountingKey NSURLVolumeUUIDStringKey NSURLVolumeNameKey NSURLVolumeLocalizedNameKey syn keyword objcConstVar NSURLIsUbiquitousItemKey NSURLUbiquitousItemHasUnresolvedConflictsKey NSURLUbiquitousItemIsDownloadedKey NSURLUbiquitousItemIsDownloadingKey NSURLUbiquitousItemIsUploadedKey NSURLUbiquitousItemIsUploadingKey NSURLUbiquitousItemPercentDownloadedKey NSURLUbiquitousItemPercentUploadedKey NSURLUbiquitousItemDownloadingStatusKey NSURLUbiquitousItemDownloadingErrorKey NSURLUbiquitousItemUploadingErrorKey NSURLUbiquitousItemDownloadRequestedKey NSURLUbiquitousItemContainerDisplayNameKey NSURLUbiquitousItemDownloadingStatusNotDownloaded NSURLUbiquitousItemDownloadingStatusDownloaded NSURLUbiquitousItemDownloadingStatusCurrent syn match objcClass /NSString\s*\*/me=s+8,he=s+8 syn match objcClass /NSMutableString\s*\*/me=s+15,he=s+15 syn keyword objcType unichar syn keyword objcExceptionValue NSParseErrorException NSCharacterConversionException syn keyword objcMacro NSMaximumStringLength syn keyword objcEnum NSStringCompareOptions syn keyword objcEnumValue NSCaseInsensitiveSearch NSLiteralSearch NSBackwardsSearch NSAnchoredSearch NSNumericSearch NSDiacriticInsensitiveSearch NSWidthInsensitiveSearch NSForcedOrderingSearch NSRegularExpressionSearch syn keyword objcEnum NSStringEncoding syn keyword objcEnumValue NSProprietaryStringEncoding syn keyword objcEnumValue NSASCIIStringEncoding NSNEXTSTEPStringEncoding NSJapaneseEUCStringEncoding NSUTF8StringEncoding NSISOLatin1StringEncoding NSSymbolStringEncoding NSNonLossyASCIIStringEncoding NSShiftJISStringEncoding NSISOLatin2StringEncoding NSUnicodeStringEncoding NSWindowsCP1251StringEncoding NSWindowsCP1252StringEncoding NSWindowsCP1253StringEncoding NSWindowsCP1254StringEncoding NSWindowsCP1250StringEncoding NSISO2022JPStringEncoding NSMacOSRomanStringEncoding NSUTF16StringEncoding NSUTF16BigEndianStringEncoding NSUTF16LittleEndianStringEncoding NSUTF32StringEncoding NSUTF32BigEndianStringEncoding NSUTF32LittleEndianStringEncoding syn keyword objcEnum NSStringEncodingConversionOptions syn keyword objcEnumValue NSStringEncodingConversionAllowLossy NSStringEncodingConversionExternalRepresentation syn keyword objcEnum NSStringEnumerationOptions syn keyword objcEnumValue NSStringEnumerationByLines NSStringEnumerationByParagraphs NSStringEnumerationByComposedCharacterSequences NSStringEnumerationByWords NSStringEnumerationBySentences NSStringEnumerationReverse NSStringEnumerationSubstringNotRequired NSStringEnumerationLocalized syn keyword objcConstVar NSStringTransformLatinToKatakana NSStringTransformLatinToHiragana NSStringTransformLatinToHangul NSStringTransformLatinToArabic NSStringTransformLatinToHebrew NSStringTransformLatinToThai NSStringTransformLatinToCyrillic NSStringTransformLatinToGreek NSStringTransformToLatin NSStringTransformMandarinToLatin NSStringTransformHiraganaToKatakana NSStringTransformFullwidthToHalfwidth NSStringTransformToXMLHex NSStringTransformToUnicodeName NSStringTransformStripCombiningMarks NSStringTransformStripDiacritics syn keyword objcConstVar NSStringEncodingDetectionSuggestedEncodingsKey NSStringEncodingDetectionDisallowedEncodingsKey NSStringEncodingDetectionUseOnlySuggestedEncodingsKey NSStringEncodingDetectionAllowLossyKey NSStringEncodingDetectionFromWindowsKey NSStringEncodingDetectionLossySubstitutionKey NSStringEncodingDetectionLikelyLanguageKey syn match objcClass /NSAttributedString\s*\*/me=s+18,he=s+18 syn match objcClass /NSMutableAttributedString\s*\*/me=s+25,he=s+25 syn keyword objcEnum NSAttributedStringEnumerationOptions syn keyword objcEnumValue NSAttributedStringEnumerationReverse NSAttributedStringEnumerationLongestEffectiveRangeNotRequired syn match objcClass /NSValue\s*\*/me=s+7,he=s+7 syn match objcClass /NSNumber\s*\*/me=s+8,he=s+8 syn match objcClass /NSDecimalNumber\s*\*/me=s+15,he=s+15 syn match objcClass /NSDecimalNumberHandler\s*\*/me=s+22,he=s+22 syn keyword objcExceptionValue NSDecimalNumberExactnessException NSDecimalNumberOverflowException NSDecimalNumberUnderflowException NSDecimalNumberDivideByZeroException syn match objcClass /NSData\s*\*/me=s+6,he=s+6 syn match objcClass /NSMutableData\s*\*/me=s+13,he=s+13 syn keyword objcEnum NSDataReadingOptions syn keyword objcEnumValue NSDataReadingMappedIfSafe NSDataReadingUncached NSDataReadingMappedAlways NSDataReadingMapped NSMappedRead NSUncachedRead syn keyword objcEnum NSDataWritingOptions syn keyword objcEnumValue NSDataWritingAtomic NSDataWritingWithoutOverwriting NSDataWritingFileProtectionNone NSDataWritingFileProtectionComplete NSDataWritingFileProtectionCompleteUnlessOpen NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication NSDataWritingFileProtectionMask NSAtomicWrite syn keyword objcEnum NSDataSearchOptions syn keyword objcEnumValue NSDataSearchBackwards NSDataSearchAnchored syn keyword objcEnum NSDataBase64EncodingOptions NSDataBase64DecodingOptions syn keyword objcEnumValue NSDataBase64Encoding64CharacterLineLength NSDataBase64Encoding76CharacterLineLength NSDataBase64EncodingEndLineWithCarriageReturn NSDataBase64EncodingEndLineWithLineFeed NSDataBase64DecodingIgnoreUnknownCharacters syn match objcClass /NSArray\s*\*/me=s+7,he=s+7 syn match objcClass /NSArray<.*>\s*\*/me=s+7,he=s+7 contains=objcTypeInfoParams syn match objcClass /NSMutableArray\s*\*/me=s+14,he=s+14 syn match objcClass /NSMutableArray<.*>\s*\*/me=s+14,he=s+14 contains=objcTypeInfoParams syn keyword objcEnum NSBinarySearchingOptions syn keyword objcEnumValue NSBinarySearchingFirstEqual NSBinarySearchingLastEqual NSBinarySearchingInsertionIndex syn match objcClass /NSDictionary\s*\*/me=s+12,he=s+12 syn match objcClass /NSDictionary<.*>\s*\*/me=s+12,he=s+12 contains=objcTypeInfoParams syn match objcClass /NSMutableDictionary\s*\*/me=s+19,he=s+19 syn match objcClass /NSMutableDictionary<.*>\s*\*/me=s+19,he=s+19 contains=objcTypeInfoParams syn match objcClass /NSSet\s*\*/me=s+5,me=s+5 syn match objcClass /NSSet<.*>\s*\*/me=s+5,me=s+5 contains=objcTypeInfoParams syn match objcClass /NSMutableSet\s*\*/me=s+12,me=s+12 syn match objcClass /NSMutableSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams syn match objcClass /NSCountedSet\s*\*/me=s+12,me=s+12 syn match objcClass /NSCountedSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams syn match objcClass /NSOrderedSet\s*\*/me=s+12,me=s+12 syn match objcClass /NSOrderedSet<.*>\s*\*/me=s+12,me=s+12 contains=objcTypeInfoParams syn match objcClass /NSMutableOrderedSet\s*\*/me=s+19,me=s+19 syn match objcClass /NSMutableOrderedSet<.*>\s*\*/me=s+19,me=s+19 syn keyword objcEnum NSSearchPathDirectory syn keyword objcEnumValue NSApplicationDirectory NSDemoApplicationDirectory NSDeveloperApplicationDirectory NSAdminApplicationDirectory NSLibraryDirectory NSDeveloperDirectory NSUserDirectory NSDocumentationDirectory NSDocumentDirectory NSCoreServiceDirectory NSAutosavedInformationDirectory NSDesktopDirectory NSCachesDirectory NSApplicationSupportDirectory NSDownloadsDirectory NSInputMethodsDirectory NSMoviesDirectory NSMusicDirectory NSPicturesDirectory NSPrinterDescriptionDirectory NSSharedPublicDirectory NSPreferencePanesDirectory NSApplicationScriptsDirectory NSItemReplacementDirectory NSAllApplicationsDirectory NSAllLibrariesDirectory NSTrashDirectory syn keyword objcEnum NSSearchPathDomainMask syn keyword objcEnumValue NSUserDomainMask NSLocalDomainMask NSNetworkDomainMask NSSystemDomainMask NSAllDomainsMask syn match objcClass /NSFileManager\s*\*/me=s+13,he=s+13 syn match objcClass /NSDirectoryEnumerator\s*\*/me=s+21,he=s+21 contains=objcTypeInfoParams syn match objcClass /NSDirectoryEnumerator<.*>\s*\*/me=s+21,he=s+21 syn keyword objcEnum NSVolumeEnumerationOptions syn keyword objcEnumValue NSVolumeEnumerationSkipHiddenVolumes NSVolumeEnumerationProduceFileReferenceURLs syn keyword objcEnum NSURLRelationship syn keyword objcEnumValue NSURLRelationshipContains NSURLRelationshipSame NSURLRelationshipOther syn keyword objcEnum NSFileManagerUnmountOptions syn keyword objcEnumValue NSFileManagerUnmountAllPartitionsAndEjectDisk NSFileManagerUnmountWithoutUI syn keyword objcConstVar NSFileManagerUnmountDissentingProcessIdentifierErrorKey syn keyword objcEnum NSDirectoryEnumerationOptions syn keyword objcEnumValue NSDirectoryEnumerationSkipsSubdirectoryDescendants NSDirectoryEnumerationSkipsPackageDescendants NSDirectoryEnumerationSkipsHiddenFiles syn keyword objcEnum NSFileManagerItemReplacementOptions syn keyword objcEnumValue NSFileManagerItemReplacementUsingNewMetadataOnly NSFileManagerItemReplacementWithoutDeletingBackupItem syn keyword objcNotificationValue NSUbiquityIdentityDidChangeNotification syn keyword objcConstVar NSFileType NSFileTypeDirectory NSFileTypeRegular NSFileTypeSymbolicLink NSFileTypeSocket NSFileTypeCharacterSpecial NSFileTypeBlockSpecial NSFileTypeUnknown NSFileSize NSFileModificationDate NSFileReferenceCount NSFileDeviceIdentifier NSFileOwnerAccountName NSFileGroupOwnerAccountName NSFilePosixPermissions NSFileSystemNumber NSFileSystemFileNumber NSFileExtensionHidden NSFileHFSCreatorCode NSFileHFSTypeCode NSFileImmutable NSFileAppendOnly NSFileCreationDate NSFileOwnerAccountID NSFileGroupOwnerAccountID NSFileBusy NSFileProtectionKey NSFileProtectionNone NSFileProtectionComplete NSFileProtectionCompleteUnlessOpen NSFileProtectionCompleteUntilFirstUserAuthentication NSFileSystemSize NSFileSystemFreeSize NSFileSystemNodes NSFileSystemFreeNodes syn match objcClass /NSFileHandle\s*\*/me=s+12,he=s+12 syn keyword objcExceptionValue NSFileHandleOperationException syn keyword objcNotificationValue NSFileHandleReadCompletionNotification NSFileHandleReadToEndOfFileCompletionNotification NSFileHandleConnectionAcceptedNotification NSFileHandleDataAvailableNotification NSFileHandleNotificationDataItem NSFileHandleNotificationFileHandleItem NSFileHandleNotificationMonitorModes syn match objcClass /NSPipe\s*\*/me=s+6,he=s+6 syn match objcClass /NSLocale\s*\*/me=s+8,he=s+8 syn keyword objcEnum NSLocaleLanguageDirection syn keyword objcEnumValue NSLocaleLanguageDirectionUnknown NSLocaleLanguageDirectionLeftToRight NSLocaleLanguageDirectionRightToLeft NSLocaleLanguageDirectionTopToBottom NSLocaleLanguageDirectionBottomToTop syn keyword objcNotificationValue NSCurrentLocaleDidChangeNotification syn keyword objcConstVar NSLocaleIdentifier NSLocaleLanguageCode NSLocaleCountryCode NSLocaleScriptCode NSLocaleVariantCode NSLocaleExemplarCharacterSet NSLocaleCalendar NSLocaleCollationIdentifier NSLocaleUsesMetricSystem NSLocaleMeasurementSystem NSLocaleDecimalSeparator NSLocaleGroupingSeparator NSLocaleCurrencySymbol NSLocaleCurrencyCode NSLocaleCollatorIdentifier NSLocaleQuotationBeginDelimiterKey NSLocaleQuotationEndDelimiterKey NSLocaleAlternateQuotationBeginDelimiterKey NSLocaleAlternateQuotationEndDelimiterKey NSGregorianCalendar NSBuddhistCalendar NSChineseCalendar NSHebrewCalendar NSIslamicCalendar NSIslamicCivilCalendar NSJapaneseCalendar NSRepublicOfChinaCalendar NSPersianCalendar NSIndianCalendar NSISO8601Calendar syn match objcClass /NSFormatter\s*\*/me=s+11,he=s+11 syn keyword objcEnum NSFormattingContext NSFormattingUnitStyle syn keyword objcEnumValue NSFormattingContextUnknown NSFormattingContextDynamic NSFormattingContextStandalone NSFormattingContextListItem NSFormattingContextBeginningOfSentence NSFormattingContextMiddleOfSentence NSFormattingUnitStyleShort NSFormattingUnitStyleMedium NSFormattingUnitStyleLong syn match objcClass /NSNumberFormatter\s*\*/me=s+17,he=s+17 syn keyword objcEnum NSNumberFormatterStyle syn keyword objcEnumValue NSNumberFormatterNoStyle NSNumberFormatterDecimalStyle NSNumberFormatterCurrencyStyle NSNumberFormatterPercentStyle NSNumberFormatterScientificStyle NSNumberFormatterSpellOutStyle NSNumberFormatterOrdinalStyle NSNumberFormatterCurrencyISOCodeStyle NSNumberFormatterCurrencyPluralStyle NSNumberFormatterCurrencyAccountingStyle syn keyword objcEnum NSNumberFormatterBehavior syn keyword objcEnumValue NSNumberFormatterBehaviorDefault NSNumberFormatterBehavior10_0 NSNumberFormatterBehavior10_4 syn keyword objcEnum NSNumberFormatterPadPosition syn keyword objcEnumValue NSNumberFormatterPadBeforePrefix NSNumberFormatterPadAfterPrefix NSNumberFormatterPadBeforeSuffix NSNumberFormatterPadAfterSuffix syn keyword objcEnum NSNumberFormatterRoundingMode syn keyword objcEnumValue NSNumberFormatterRoundCeiling NSNumberFormatterRoundFloor NSNumberFormatterRoundDown NSNumberFormatterRoundUp NSNumberFormatterRoundHalfEven NSNumberFormatterRoundHalfDown NSNumberFormatterRoundHalfUp syn match objcClass /NSDateFormatter\s*\*/me=s+15,he=s+15 syn keyword objcEnum NSDateFormatterStyle syn keyword objcEnumValue NSDateFormatterNoStyle NSDateFormatterShortStyle NSDateFormatterMediumStyle NSDateFormatterLongStyle NSDateFormatterFullStyle syn keyword objcEnum NSDateFormatterBehavior syn keyword objcEnumValue NSDateFormatterBehaviorDefault NSDateFormatterBehavior10_0 NSDateFormatterBehavior10_4 syn match objcClass /NSCalendar\s*\*/me=s+10,he=s+10 syn keyword objcConstVar NSCalendarIdentifierGregorian NSCalendarIdentifierBuddhist NSCalendarIdentifierChinese NSCalendarIdentifierCoptic NSCalendarIdentifierEthiopicAmeteMihret NSCalendarIdentifierEthiopicAmeteAlem NSCalendarIdentifierHebrew NSCalendarIdentifierISO8601 NSCalendarIdentifierIndian NSCalendarIdentifierIslamic NSCalendarIdentifierIslamicCivil NSCalendarIdentifierJapanese NSCalendarIdentifierPersian NSCalendarIdentifierRepublicOfChina NSCalendarIdentifierIslamicTabular NSCalendarIdentifierIslamicUmmAlQura syn keyword objcEnum NSCalendarUnit syn keyword objcEnumValue NSCalendarUnitEra NSCalendarUnitYear NSCalendarUnitMonth NSCalendarUnitDay NSCalendarUnitHour NSCalendarUnitMinute NSCalendarUnitSecond NSCalendarUnitWeekday NSCalendarUnitWeekdayOrdinal NSCalendarUnitQuarter NSCalendarUnitWeekOfMonth NSCalendarUnitWeekOfYear NSCalendarUnitYearForWeekOfYear NSCalendarUnitNanosecond NSCalendarUnitCalendar NSCalendarUnitTimeZone syn keyword objcEnumValue NSEraCalendarUnit NSYearCalendarUnit NSMonthCalendarUnit NSDayCalendarUnit NSHourCalendarUnit NSMinuteCalendarUnit NSSecondCalendarUnit NSWeekCalendarUnit NSWeekdayCalendarUnit NSWeekdayOrdinalCalendarUnit NSQuarterCalendarUnit NSWeekOfMonthCalendarUnit NSWeekOfYearCalendarUnit NSYearForWeekOfYearCalendarUnit NSCalendarCalendarUnit NSTimeZoneCalendarUnit syn keyword objcEnumValue NSWrapCalendarComponents NSUndefinedDateComponent NSDateComponentUndefined syn match objcClass /NSDateComponents\s*\*/me=s+16,he=s+16 syn keyword objcEnum NSCalendarOptions syn keyword objcEnumValue NSCalendarWrapComponents NSCalendarMatchStrictly NSCalendarSearchBackwards NSCalendarMatchPreviousTimePreservingSmallerUnits NSCalendarMatchNextTimePreservingSmallerUnits NSCalendarMatchNextTime NSCalendarMatchFirst NSCalendarMatchLast syn keyword objcConstVar NSCalendarDayChangedNotification syn match objcClass /NSTimeZone\s*\*/me=s+10,he=s+10 syn keyword objcEnum NSTimeZoneNameStyle syn keyword objcEnumValue NSTimeZoneNameStyleStandard NSTimeZoneNameStyleShortStandard NSTimeZoneNameStyleDaylightSaving NSTimeZoneNameStyleShortDaylightSaving NSTimeZoneNameStyleGeneric NSTimeZoneNameStyleShortGeneric syn keyword objcNotificationValue NSSystemTimeZoneDidChangeNotification syn match objcClass /NSCoder\s*\*/me=s+7,he=s+7 syn match objcClass /NSArchiver\s*\*/me=s+10,he=s+10 syn match objcClass /NSUnarchiver\s*\*/me=s+12,he=s+12 syn keyword objcExceptionValue NSInconsistentArchiveException syn match objcClass /NSKeyedArchiver\s*\*/me=s+15,he=s+15 syn match objcClass /NSKeyedUnarchiver\s*\*/me=s+17,he=s+17 syn keyword objcExceptionValue NSInvalidArchiveOperationException NSInvalidUnarchiveOperationException syn keyword objcConstVar NSKeyedArchiveRootObjectKey syn keyword objcEnum NSPropertyListMutabilityOptions syn keyword objcEnumValue NSPropertyListImmutable NSPropertyListMutableContainers NSPropertyListMutableContainersAndLeaves syn keyword objcEnum NSPropertyListFormat syn keyword objcEnumValue NSPropertyListOpenStepFormat NSPropertyListXMLFormat_v1_0 NSPropertyListBinaryFormat_v1_0 syn keyword objcType NSPropertyListReadOptions NSPropertyListWriteOptions syn match objcClass /NSUserDefaults\s*\*/me=s+14,he=s+14 syn keyword objcConstVar NSGlobalDomain NSArgumentDomain NSRegistrationDomain syn keyword objcNotificationValue NSUserDefaultsDidChangeNotification syn match objcClass /NSBundle\s*\*/me=s+8,he=s+8 syn keyword objcEnumValue NSBundleExecutableArchitectureI386 NSBundleExecutableArchitecturePPC NSBundleExecutableArchitectureX86_64 NSBundleExecutableArchitecturePPC64 syn keyword objcNotificationValue NSBundleDidLoadNotification NSLoadedClasses NSBundleResourceRequestLowDiskSpaceNotification syn keyword objcConstVar NSBundleResourceRequestLoadingPriorityUrgent syn match objcClass /NSProcessInfo\s*\*/me=s+13,he=s+13 syn keyword objcEnumValue NSWindowsNTOperatingSystem NSWindows95OperatingSystem NSSolarisOperatingSystem NSHPUXOperatingSystem NSMACHOperatingSystem NSSunOSOperatingSystem NSOSF1OperatingSystem syn keyword objcType NSOperatingSystemVersion syn keyword objcEnum NSActivityOptions NSProcessInfoThermalState syn keyword objcEnumValue NSActivityIdleDisplaySleepDisabled NSActivityIdleSystemSleepDisabled NSActivitySuddenTerminationDisabled NSActivityAutomaticTerminationDisabled NSActivityUserInitiated NSActivityUserInitiatedAllowingIdleSystemSleep NSActivityBackground NSActivityLatencyCritical NSProcessInfoThermalStateNominal NSProcessInfoThermalStateFair NSProcessInfoThermalStateSerious NSProcessInfoThermalStateCritical syn keyword objcNotificationValue NSProcessInfoThermalStateDidChangeNotification NSProcessInfoPowerStateDidChangeNotification syn match objcClass /NSTask\s*\*/me=s+6,he=s+6 syn keyword objcEnum NSTaskTerminationReason syn keyword objcEnumValue NSTaskTerminationReasonExit NSTaskTerminationReasonUncaughtSignal syn keyword objcNotificationValue NSTaskDidTerminateNotification syn match objcClass /NSThread\s*\*/me=s+8,he=s+8 syn keyword objcNotificationValue NSWillBecomeMultiThreadedNotification NSDidBecomeSingleThreadedNotification NSThreadWillExitNotification syn match objcClass /NSLock\s*\*/me=s+6,he=s+6 syn match objcClass /NSConditionLock\s*\*/me=s+15,he=s+15 syn match objcClass /NSRecursiveLock\s*\*/me=s+15,he=s+15 syn match objcClass /NSDistributedLock\s*\*/me=s+17,he=s+17 syn match objcClass /NSOperation\s*\*/me=s+11,he=s+11 syn keyword objcEnum NSOperationQueuePriority syn keyword objcEnumValue NSOperationQueuePriorityVeryLow NSOperationQueuePriorityLow NSOperationQueuePriorityNormal NSOperationQueuePriorityHigh NSOperationQueuePriorityVeryHigh syn match objcClass /NSBlockOperation\s*\*/me=s+16,he=s+16 syn match objcClass /NSInvocationOperation\s*\*/me=s+21,he=s+21 syn keyword objcExceptionValue NSInvocationOperationVoidResultException NSInvocationOperationCancelledException syn match objcClass /NSOperationQueue\s*\*/me=s+16,he=s+16 syn keyword objcEnumValue NSOperationQueueDefaultMaxConcurrentOperationCount syn match objcClass /NSConnection\s*\*/me=s+12,he=s+12 syn keyword objcConstVar NSConnectionReplyMode syn keyword objcNotificationValue NSConnectionDidDieNotification NSConnectionDidInitializeNotification syn keyword objcExceptionValue NSFailedAuthenticationException syn match objcClass /NSPort\s*\*/me=s+6,he=s+6 syn keyword objcType NSSocketNativeHandle syn keyword objcNotificationValue NSPortDidBecomeInvalidNotification syn match objcClass /NSMachPort\s*\*/me=s+10,he=s+10 syn keyword objcEnum NSMachPortOptions syn keyword objcEnumValue NSMachPortDeallocateNone NSMachPortDeallocateSendRight NSMachPortDeallocateReceiveRight syn match objcClass /NSMessagePort\s*\*/me=s+13,he=s+13 syn match objcClass /NSSocketPort\s*\*/me=s+12,he=s+12 syn match objcClass /NSPortMessage\s*\*/me=s+13,he=s+13 syn match objcClass /NSDistantObject\s*\*/me=s+15,he=s+15 syn match objcClass /NSPortNameServer\s*\*/me=s+16,he=s+16 syn match objcClass /NSMessagePortNameServer\s*\*/me=s+23,he=s+23 syn match objcClass /NSSocketPortNameServer\s*\*/me=s+22,he=s+22 syn match objcClass /NSHost\s*\*/me=s+6,he=s+6 syn match objcClass /NSInvocation\s*\*/me=s+12,he=s+12 syn match objcClass /NSMethodSignature\s*\*/me=s+17,he=s+17 syn match objcClass /NSScanner\s*\*/me=s+9,he=s+9 syn match objcClass /NSTimer\s*\*/me=s+7,he=s+7 syn match objcClass /NSAutoreleasePool\s*\*/me=s+17,he=s+17 syn match objcClass /NSRunLoop\s*\*/me=s+9,he=s+9 syn keyword objcConstVar NSDefaultRunLoopMode NSRunLoopCommonModes syn match objcClass /NSNull\s*\*/me=s+6,he=s+6 syn match objcClass /NSProxy\s*\*/me=s+7,he=s+7 syn match objcClass /NSObject\s*\*/me=s+8,he=s+8 syn match objcClass /NSCache\s*\*/me=s+7,he=s+7 syn match objcClass /NSCache<.*>\s*\*/me=s+7,he=s+7 contains=objcTypeInfoParams syn match objcClass /NSHashTable\s*\*/me=s+11,he=s+11 syn match objcClass /NSHashTable<.*>\s*\*/me=s+11,he=s+11 contains=objcTypeInfoParams syn keyword objcConstVar NSHashTableStrongMemory NSHashTableZeroingWeakMemory NSHashTableCopyIn NSHashTableObjectPointerPersonality NSHashTableWeakMemory syn keyword objcType NSHashTableOptions NSHashEnumerator NSHashTableCallBacks syn keyword objcConstVar NSIntegerHashCallBacks NSNonOwnedPointerHashCallBacks NSNonRetainedObjectHashCallBacks NSObjectHashCallBacks NSOwnedObjectIdentityHashCallBacks NSOwnedPointerHashCallBacks NSPointerToStructHashCallBacks NSOwnedObjectIdentityHashCallBacks NSOwnedObjectIdentityHashCallBacks NSIntHashCallBacks syn match objcClass /NSMapTable\s*\*/me=s+10,he=s+10 syn match objcClass /NSMapTable<.*>\s*\*/me=s+10,he=s+10 contains=objcTypeInfoParams syn keyword objcConstVar NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks NSPointerToStructHashCallBacks syn keyword objcConstVar NSMapTableStrongMemory NSMapTableZeroingWeakMemory NSMapTableCopyIn NSMapTableObjectPointerPersonality NSMapTableWeakMemory syn keyword objcType NSMapTableOptions NSMapEnumerator NSMapTableKeyCallBacks NSMapTableValueCallBacks syn keyword objcMacro NSNotAnIntMapKey NSNotAnIntegerMapKey NSNotAPointerMapKey syn keyword objcConstVar NSIntegerMapKeyCallBacks NSNonOwnedPointerMapKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks NSNonRetainedObjectMapKeyCallBacks NSObjectMapKeyCallBacks NSOwnedPointerMapKeyCallBacks NSIntMapKeyCallBacks NSIntegerMapValueCallBacks NSNonOwnedPointerMapValueCallBacks NSObjectMapValueCallBacks NSNonRetainedObjectMapValueCallBacks NSOwnedPointerMapValueCallBacks NSIntMapValueCallBacks syn match objcClass /NSPointerFunctions\s*\*/me=s+18,he=s+18 syn keyword objcEnum NSPointerFunctionsOptions syn keyword objcEnumValue NSPointerFunctionsStrongMemory NSPointerFunctionsZeroingWeakMemory NSPointerFunctionsOpaqueMemory NSPointerFunctionsMallocMemory NSPointerFunctionsMachVirtualMemory NSPointerFunctionsWeakMemory NSPointerFunctionsObjectPersonality NSPointerFunctionsOpaquePersonality NSPointerFunctionsObjectPointerPersonality NSPointerFunctionsCStringPersonality NSPointerFunctionsStructPersonality NSPointerFunctionsIntegerPersonality NSPointerFunctionsCopyIn hi def link objcPreProcMacro cConstant hi def link objcPrincipalType cType hi def link objcUsefulTerm cConstant hi def link objcImport cInclude hi def link objcImported cString hi def link objcObjDef cOperator hi def link objcProtocol cOperator hi def link objcProperty cOperator hi def link objcIvarScope cOperator hi def link objcInternalRep cOperator hi def link objcException cOperator hi def link objcThread cOperator hi def link objcPool cOperator hi def link objcModuleImport cOperator hi def link objcSpecial cSpecial hi def link objcString cString hi def link objcHiddenArgument cStatement hi def link objcBlocksQualifier cStorageClass hi def link objcObjectLifetimeQualifier cStorageClass hi def link objcTollFreeBridgeQualifier cStorageClass hi def link objcRemoteMessagingQualifier cStorageClass hi def link objcStorageClass cStorageClass hi def link objcFastEnumKeyword cStatement hi def link objcLiteralSyntaxNumber cNumber hi def link objcLiteralSyntaxChar cCharacter hi def link objcLiteralSyntaxSpecialChar cCharacter hi def link objcLiteralSyntaxOp cOperator hi def link objcDeclPropAccessorName cConstant hi def link objcDeclPropAccessorType cConstant hi def link objcDeclPropAssignSemantics cConstant hi def link objcDeclPropAtomicity cConstant hi def link objcDeclPropARC cConstant hi def link objcDeclPropNullable cConstant hi def link objcDeclPropNonnull cConstant hi def link objcDeclPropNullUnspecified cConstant hi def link objcDeclProcNullResettable cConstant hi def link objcInstanceMethod Function hi def link objcClassMethod Function hi def link objcType cType hi def link objcClass cType hi def link objcTypeSpecifier cType hi def link objcMacro cConstant hi def link objcEnum cType hi def link objcEnumValue cConstant hi def link objcExceptionValue cConstant hi def link objcNotificationValue cConstant hi def link objcConstVar cConstant hi def link objcTypeInfoParams Identifier let b:current_syntax = "objc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/cpp.vim unlet b:current_syntax runtime! syntax/objc.vim syn keyword objCppNonStructure class template namespace transparent contained syn keyword objCppNonStatement new delete friend using transparent contained let b:current_syntax = "objcpp" if exists("b:current_syntax") && b:current_syntax == "ocaml" finish endif setlocal iskeyword+=' syn case match syn match ocamlMethod "#" syn match ocamlComment "^#!.*" contains=@Spell syn match ocamlScript "^#\<\(quit\|labels\|warnings\|warn_error\|directory\|remove_directory\|cd\|load\|load_rec\|use\|mod_use\|install_printer\|remove_printer\|require\|list\|ppx\|principal\|predicates\|rectypes\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\|camlp4o\|camlp4r\|topfind_log\|topfind_verbose\)\>" syn match ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ syn match ocamlKeyChar "|" syn match ocamlBraceErr "}" syn match ocamlBrackErr "\]" syn match ocamlParenErr ")" syn match ocamlArrErr "|]" syn match ocamlCommentErr "\*)" syn match ocamlCountErr "\" syn match ocamlCountErr "\" if !exists("ocaml_revised") syn match ocamlDoErr "\" endif syn match ocamlDoneErr "\" syn match ocamlThenErr "\" if exists("ocaml_noend_error") syn match ocamlKeyword "\" else syn match ocamlEndErr "\" endif syn cluster ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr syn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal syn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr syn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr syn region ocamlComment start="(\*" end="\*)" contains=@Spell,ocamlComment,ocamlTodo syn keyword ocamlTodo contained TODO FIXME XXX NOTE syn region ocamlEnd matchgroup=ocamlObject start="\" matchgroup=ocamlObject end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr if !exists("ocaml_revised") syn region ocamlEnd matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr endif syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr if !exists("ocaml_revised") syn region ocamlDo matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlDoneErr endif syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlKeyword end="\" contains=ALLBUT,@ocamlContained,ocamlThenErr syn match ocamlPpxIdentifier /\(\[@\{1,3\}\)\@<=\w\+\(\.\w\+\)*/ syn region ocamlPpx matchgroup=ocamlPpxEncl start="\[@\{1,3\}" contains=TOP end="\]" syn region ocamlSig matchgroup=ocamlSigEncl start="\" matchgroup=ocamlSigEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule syn region ocamlModSpec matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr syn region ocamlNone matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment syn match ocamlKeyword "\" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod syn region ocamlModule matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef syn region ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|=\|)"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS syn region ocamlModParam start="([^*]" end=")" contained contains=ocamlGenMod,ocamlModParam1,ocamlSig,ocamlVal syn match ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty syn match ocamlGenMod "()" contained skipwhite skipempty syn region ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3 syn region ocamlMPRestr1 matchgroup=ocamlSigEncl start="\ssig\s\=" matchgroup=ocamlSigEncl end="\" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule syn region ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2 syn match ocamlMPRestr3 "\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*" contained syn match ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod syn keyword ocamlKeyword val syn region ocamlVal matchgroup=ocamlKeyword start="\" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlMPRestr syn region ocamlModRHS start="." end=". *\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod syn match ocamlFullMod "\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith syn region ocamlFuncWith start="([^*)]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith syn region ocamlFuncStruct matchgroup=ocamlStructEncl start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlStructEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr syn match ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained syn region ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith syn match ocamlWith "\<\(\u\(\w\|'\)* *\. *\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest syn region ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained syn region ocamlStruct matchgroup=ocamlStructEncl start="\<\(module\s\+\)\=struct\>" matchgroup=ocamlStructEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr syn region ocamlKeyword start="\\s*\\(\s*\\)\=" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef syn match ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s+1 skipwhite skipempty nextgroup=ocamlFullMod syn region ocamlString matchgroup=ocamlQuotedStringDelim start="{\z\([a-z_]*\)|" end="|\z1}" contains=@Spell syn keyword ocamlKeyword and as assert class syn keyword ocamlKeyword constraint else syn keyword ocamlKeyword exception external fun syn keyword ocamlKeyword in inherit initializer syn keyword ocamlKeyword lazy let match syn keyword ocamlKeyword method mutable new nonrec of syn keyword ocamlKeyword parser private rec syn keyword ocamlKeyword try type syn keyword ocamlKeyword virtual when while with if exists("ocaml_revised") syn keyword ocamlKeyword do value syn keyword ocamlBoolean True False else syn keyword ocamlKeyword function syn keyword ocamlBoolean true false endif syn keyword ocamlType array bool char exn float format format4 syn keyword ocamlType int int32 int64 lazy_t list nativeint option syn keyword ocamlType bytes string unit syn match ocamlConstructor "(\s*)" syn match ocamlConstructor "\[\s*\]" syn match ocamlConstructor "\[|\s*>|]" syn match ocamlConstructor "\[<\s*>\]" syn match ocamlConstructor "\u\(\w\|'\)*\>" syn match ocamlConstructor "`\w\(\w\|'\)*\>" syn match ocamlModPath "\u\(\w\|'\)* *\."he=e-1 syn match ocamlCharacter "'\\\d\d\d'\|'\\[\'ntbr]'\|'.'" syn match ocamlCharacter "'\\x\x\x'" syn match ocamlCharErr "'\\\d\d'\|'\\\d'" syn match ocamlCharErr "'\\[^\'ntbr]'" syn region ocamlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell syn match ocamlTopStop ";;" syn match ocamlAnyVar "\<_\>" syn match ocamlKeyChar "|[^\]]"me=e-1 syn match ocamlKeyChar ";" syn match ocamlKeyChar "\~" syn match ocamlKeyChar "?" syn match ocamlEqual "=" syn match ocamlStar "*" syn match ocamlAngle "<" syn match ocamlAngle ">" syn match ocamlIndexingOp "\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\(()\|\[]\|{}\)\(<-\)\?" syn match ocamlExtensionOp "#[#~?!.:|&$%<=>@^*/+-]\+" syn match ocamlPrefixOp "![~?!.:|&$%<=>@^*/+-]*" syn match ocamlPrefixOp "[~?][~?!.:|&$%<=>@^*/+-]\+" syn match ocamlInfixOp "[&$%@^/+-][~?!.:|&$%<=>@^*/+-]*" syn match ocamlInfixOp "[|<=>*][~?!.:|&$%<=>@^*/+-]\+" syn match ocamlInfixOp "#[~?!.:|&$%<=>@^*/+-]\+#\@!" syn match ocamlInfixOp "!=[~?!.:|&$%<=>@^*/+-]\@!" syn keyword ocamlInfixOpKeyword asr land lor lsl lsr lxor mod or syn match ocamlRefAssign ":=" syn match ocamlCons "::" syn match ocamlArrow "->[~?!.:|&$%<=>@^*/+-]\@!" if exists("ocaml_revised") syn match ocamlErr "<-[~?!.:|&$%<=>@^*/+-]\@!" else syn match ocamlKeyChar "<-[~?!.:|&$%<=>@^*/+-]\@!" endif syn match ocamlNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>" syn match ocamlNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>" syn match ocamlNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>" syn match ocamlNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>" syn match ocamlFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>" syn match ocamlLabel "\~\(\l\|_\)\(\w\|'\)*"lc=1 syn match ocamlLabel "?\(\l\|_\)\(\w\|'\)*"lc=1 syn region ocamlLabel transparent matchgroup=ocamlLabel start="[~?](\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr syn sync minlines=50 syn sync maxlines=500 if !exists("ocaml_revised") syn sync match ocamlDoSync grouphere ocamlDo "\" syn sync match ocamlDoSync groupthere ocamlDo "\" endif if exists("ocaml_revised") syn sync match ocamlEndSync grouphere ocamlEnd "\<\(object\)\>" else syn sync match ocamlEndSync grouphere ocamlEnd "\<\(begin\|object\)\>" endif syn sync match ocamlEndSync groupthere ocamlEnd "\" syn sync match ocamlStructSync grouphere ocamlStruct "\" syn sync match ocamlStructSync groupthere ocamlStruct "\" syn sync match ocamlSigSync grouphere ocamlSig "\" syn sync match ocamlSigSync groupthere ocamlSig "\" hi def link ocamlBraceErr Error hi def link ocamlBrackErr Error hi def link ocamlParenErr Error hi def link ocamlArrErr Error hi def link ocamlCommentErr Error hi def link ocamlCountErr Error hi def link ocamlDoErr Error hi def link ocamlDoneErr Error hi def link ocamlEndErr Error hi def link ocamlThenErr Error hi def link ocamlCharErr Error hi def link ocamlErr Error hi def link ocamlComment Comment hi def link ocamlModPath Include hi def link ocamlObject Include hi def link ocamlModule Include hi def link ocamlModParam1 Include hi def link ocamlModType Include hi def link ocamlMPRestr3 Include hi def link ocamlFullMod Include hi def link ocamlModTypeRestr Include hi def link ocamlWith Include hi def link ocamlMTDef Include hi def link ocamlSigEncl ocamlModule hi def link ocamlStructEncl ocamlModule hi def link ocamlScript Include hi def link ocamlConstructor Constant hi def link ocamlVal Keyword hi def link ocamlModPreRHS Keyword hi def link ocamlMPRestr2 Keyword hi def link ocamlKeyword Keyword hi def link ocamlMethod Include hi def link ocamlKeyChar Keyword hi def link ocamlAnyVar Keyword hi def link ocamlTopStop Keyword hi def link ocamlRefAssign ocamlKeyChar hi def link ocamlEqual ocamlKeyChar hi def link ocamlStar ocamlInfixOp hi def link ocamlAngle ocamlInfixOp hi def link ocamlCons ocamlInfixOp hi def link ocamlPrefixOp ocamlOperator hi def link ocamlInfixOp ocamlOperator hi def link ocamlExtensionOp ocamlOperator hi def link ocamlIndexingOp ocamlOperator if exists("ocaml_highlight_operators") hi def link ocamlInfixOpKeyword ocamlOperator hi def link ocamlOperator Operator else hi def link ocamlInfixOpKeyword Keyword endif hi def link ocamlBoolean Boolean hi def link ocamlCharacter Character hi def link ocamlNumber Number hi def link ocamlFloat Float hi def link ocamlString String hi def link ocamlQuotedStringDelim Identifier hi def link ocamlLabel Identifier hi def link ocamlType Type hi def link ocamlTodo Todo hi def link ocamlEncl Keyword hi def link ocamlPpxEncl ocamlEncl let b:current_syntax = "ocaml" if exists("b:current_syntax") finish endif setlocal shiftwidth=2 setlocal softtabstop=2 setlocal expandtab setlocal iskeyword+=. syn case match syn keyword occamType BYTE BOOL INT INT16 INT32 INT64 REAL32 REAL64 ANY syn keyword occamType CHAN DATA OF TYPE TIMER INITIAL VAL PORT MOBILE PLACED syn keyword occamType PROCESSOR PACKED RECORD PROTOCOL SHARED ROUND TRUNC syn keyword occamStructure SEQ PAR IF ALT PRI FORKING PLACE AT syn keyword occamKeyword PROC IS TRUE FALSE SIZE RECURSIVE REC syn keyword occamKeyword RETYPES RESHAPES STEP FROM FOR RESCHEDULE STOP SKIP FORK syn keyword occamKeyword FUNCTION VALOF RESULT ELSE CLONE CLAIM syn keyword occamBoolean TRUE FALSE syn keyword occamRepeat WHILE syn keyword occamConditional CASE syn keyword occamConstant MOSTNEG MOSTPOS syn match occamBrackets /\[\|\]/ syn match occamParantheses /(\|)/ syn keyword occamOperator AFTER TIMES MINUS PLUS INITIAL REM AND OR XOR NOT syn keyword occamOperator BITAND BITOR BITNOT BYTESIN OFFSETOF syn match occamOperator /::\|:=\|?\|!/ syn match occamOperator /<\|>\|+\|-\|\*\|\/\|\\\|=\|\~/ syn match occamOperator /@\|\$\$\|%\|&&\|<&\|&>\|<\]\|\[>\|\^/ syn match occamSpecialChar /\M**\|*'\|*"\|*#\(\[0-9A-F\]\+\)/ contained syn match occamChar /\M\L\='\[^*\]'/ syn match occamChar /L'[^']*'/ contains=occamSpecialChar syn case ignore syn match occamTodo /\:\=/ contained syn match occamNote /\:\=/ contained syn case match syn keyword occamNote NOT contained syn match occamComment /--.*/ contains=occamCommentTitle,occamTodo,occamNote syn match occamCommentTitle /--\s*\u\a*\(\s\+\u\a*\)*:/hs=s+2 contained contains=occamTodo,occamNote syn match occamCommentTitle /--\s*KROC-LIBRARY\(\.so\|\.a\)\=\s*$/hs=s+2 contained syn match occamCommentTitle /--\s*\(KROC-OPTIONS:\|RUN-PARAMETERS:\)/hs=s+2 contained syn match occamIdentifier /\<[A-Z.][A-Z.0-9]*\>/ syn match occamFunction /\<[A-Za-z.][A-Za-z0-9.]*\>/ contained syn match occamPPIdentifier /##.\{-}\>/ syn region occamString start=/"/ skip=/\M*"/ end=/"/ contains=occamSpecialChar syn region occamCharString start=/'/ end=/'/ contains=occamSpecialChar syn match occamNumber /\<\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/ syn match occamNumber /-\d\+\(\.\d\+\(E\(+\|-\)\d\+\)\=\)\=/ syn match occamNumber /#\(\d\|[A-F]\)\+/ syn match occamNumber /-#\(\d\|[A-F]\)\+/ syn keyword occamCDString SHARED EXTERNAL DEFINED NOALIAS NOUSAGE NOT contained syn keyword occamCDString FILE LINE PROCESS.PRIORITY OCCAM2.5 contained syn keyword occamCDString USER.DEFINED.OPERATORS INITIAL.DECL MOBILES contained syn keyword occamCDString BLOCKING.SYSCALLS VERSION NEED.QUAD.ALIGNMENT contained syn keyword occamCDString TARGET.CANONICAL TARGET.CPU TARGET.OS TARGET.VENDOR contained syn keyword occamCDString TRUE FALSE AND OR contained syn match occamCDString /<\|>\|=\|(\|)/ contained syn region occamCDirective start=/#\(USE\|INCLUDE\|PRAGMA\|DEFINE\|UNDEFINE\|UNDEF\|IF\|ELIF\|ELSE\|ENDIF\|WARNING\|ERROR\|RELAX\)\>/ end=/$/ contains=occamString,occamComment,occamCDString hi def link occamType Type hi def link occamKeyword Keyword hi def link occamComment Comment hi def link occamCommentTitle PreProc hi def link occamTodo Todo hi def link occamNote Todo hi def link occamString String hi def link occamCharString String hi def link occamNumber Number hi def link occamCDirective PreProc hi def link occamCDString String hi def link occamPPIdentifier PreProc hi def link occamBoolean Boolean hi def link occamSpecialChar SpecialChar hi def link occamChar Character hi def link occamStructure Structure hi def link occamIdentifier Identifier hi def link occamConstant Constant hi def link occamOperator Operator hi def link occamFunction Ignore hi def link occamRepeat Repeat hi def link occamConditional Conditional hi def link occamBrackets Type hi def link occamParantheses Delimiter let b:current_syntax = "occam" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,128-167,224-235,- syn keyword omnimarkKeywords ACTIVATE AGAIN syn keyword omnimarkKeywords CATCH CLEAR CLOSE COPY COPY-CLEAR CROSS-TRANSLATE syn keyword omnimarkKeywords DEACTIVATE DECLARE DECREMENT DEFINE DISCARD DIVIDE DO DOCUMENT-END DOCUMENT-START DONE DTD-START syn keyword omnimarkKeywords ELEMENT ELSE ESCAPE EXIT syn keyword omnimarkKeywords FAIL FIND FIND-END FIND-START FORMAT syn keyword omnimarkKeywords GROUP syn keyword omnimarkKeywords HALT HALT-EVERYTHING syn keyword omnimarkKeywords IGNORE IMPLIED INCLUDE INCLUDE-END INCLUDE-START INCREMENT INPUT syn keyword omnimarkKeywords JOIN syn keyword omnimarkKeywords LINE-END LINE-START LOG LOOKAHEAD syn keyword omnimarkKeywords MACRO syn keyword omnimarkKeywords MACRO-END MARKED-SECTION MARKUP-COMMENT MARKUP-ERROR MARKUP-PARSER MASK MATCH MINUS MODULO syn keyword omnimarkKeywords NEW NEWLINE NEXT syn keyword omnimarkKeywords OPEN OUTPUT OUTPUT-TO OVER syn keyword omnimarkKeywords PROCESS PROCESS-END PROCESS-START PROCESSING-INSTRUCTION PROLOG-END PROLOG-IN-ERROR PUT syn keyword omnimarkKeywords REMOVE REOPEN REPEAT RESET RETHROW RETURN syn keyword omnimarkKeywords WHEN WHITE-SPACE syn keyword omnimarkKeywords SAVE SAVE-CLEAR SCAN SELECT SET SGML SGML-COMMENT SGML-DECLARATION-END SGML-DTD SGML-DTDS SGML-ERROR SGML-IN SGML-OUT SGML-PARSE SGML-PARSER SHIFT SUBMIT SUCCEED SUPPRESS syn keyword omnimarkKeywords SYSTEM-CALL syn keyword omnimarkKeywords TEST-SYSTEM THROW TO TRANSLATE syn keyword omnimarkKeywords UC UL UNLESS UP-TRANSLATE syn keyword omnimarkKeywords XML-PARSE syn keyword omnimarkCommands ACTIVE AFTER ANCESTOR AND ANOTHER ARG AS ATTACHED ATTRIBUTE ATTRIBUTES syn keyword omnimarkCommands BASE BEFORE BINARY BINARY-INPUT BINARY-MODE BINARY-OUTPUT BREAK-WIDTH BUFFER BY syn keyword omnimarkCommands CASE CHILDREN CLOSED COMPILED-DATE COMPLEMENT CONREF CONTENT CONTEXT-TRANSLATE COUNTER CREATED CREATING CREATOR CURRENT syn keyword omnimarkCommands DATA-ATTRIBUTE DATA-ATTRIBUTES DATA-CONTENT DATA-LETTERS DATE DECLARED-CONREF DECLARED-CURRENT DECLARED-DEFAULTED DECLARED-FIXED DECLARED-IMPLIED DECLARED-REQUIRED syn keyword omnimarkCommands DEFAULT-ENTITY DEFAULTED DEFAULTING DELIMITER DIFFERENCE DIRECTORY DOCTYPE DOCUMENT DOCUMENT-ELEMENT DOMAIN-FREE DOWN-TRANSLATE DTD DTD-END DTDS syn keyword omnimarkCommands ELEMENTS ELSEWHERE EMPTY ENTITIES ENTITY EPILOG-START EQUAL EXCEPT EXISTS EXTERNAL EXTERNAL-DATA-ENTITY EXTERNAL-ENTITY EXTERNAL-FUNCTION EXTERNAL-OUTPUT-FUNCTION syn keyword omnimarkCommands EXTERNAL-TEXT-ENTITY syn keyword omnimarkCommands FALSE FILE FUNCTION FUNCTION-LIBRARY syn keyword omnimarkCommands GENERAL GLOBAL GREATER-EQUAL GREATER-THAN GROUPS syn keyword omnimarkCommands HAS HASNT HERALDED-NAMES syn keyword omnimarkCommands ID ID-CHECKING IDREF IDREFS IN IN-LIBRARY INCLUSION INITIAL INITIAL-SIZE INSERTION-BREAK INSTANCE INTERNAL INVALID-DATA IS ISNT ITEM syn keyword omnimarkCommands KEY KEYED syn keyword omnimarkCommands LAST LASTMOST LC LENGTH LESS-EQUAL LESS-THAN LETTERS LIBRARY LITERAL LOCAL syn keyword omnimarkCommands MATCHES MIXED MODIFIABLE syn keyword omnimarkCommands NAME NAME-LETTERS NAMECASE NAMED NAMES NDATA-ENTITY NEGATE NESTED-REFERENTS NMTOKEN NMTOKENS NO NO-DEFAULT-IO NON-CDATA NON-IMPLIED NON-SDATA NOT NOTATION NUMBER-OF NUMBERS syn keyword omnimarkCommands NUTOKEN NUTOKENS syn keyword omnimarkCommands OCCURRENCE OF OPAQUE OPTIONAL OR syn keyword omnimarkCommands PARAMETER PARENT PAST PATTERN PLUS PREPARENT PREVIOUS PROPER PUBLIC syn keyword omnimarkCommands READ-ONLY READABLE REFERENT REFERENTS REFERENTS-ALLOWED REFERENTS-DISPLAYED REFERENTS-NOT-ALLOWED REMAINDER REPEATED REPLACEMENT-BREAK REVERSED syn keyword omnimarkCommands SILENT-REFERENT SIZE SKIP SOURCE SPECIFIED STATUS STREAM SUBDOC-ENTITY SUBDOCUMENT SUBDOCUMENTS SUBELEMENT SWITCH SYMBOL SYSTEM syn keyword omnimarkCommands TEXT-MODE THIS TIMES TOKEN TRUE syn keyword omnimarkCommands UNANCHORED UNATTACHED UNION USEMAP USING syn keyword omnimarkCommands VALUE VALUED VARIABLE syn keyword omnimarkCommands WITH WRITABLE syn keyword omnimarkCommands XML XML-DTD XML-DTDS syn keyword omnimarkCommands YES syn keyword omnimarkCommands #ADDITIONAL-INFO #APPINFO #CAPACITY #CHARSET #CLASS #COMMAND-LINE-NAMES #CONSOLE #CURRENT-INPUT #CURRENT-OUTPUT #DATA #DOCTYPE #DOCUMENT #DTD #EMPTY #ERROR #ERROR-CODE syn keyword omnimarkCommands #FILE-NAME #FIRST #GROUP #IMPLIED #ITEM #LANGUAGE-VERSION #LAST #LIBPATH #LIBRARY #LIBVALUE #LINE-NUMBER #MAIN-INPUT #MAIN-OUTPUT #MARKUP-ERROR-COUNT #MARKUP-ERROR-TOTAL syn keyword omnimarkCommands #MARKUP-PARSER #MARKUP-WARNING-COUNT #MARKUP-WARNING-TOTAL #MESSAGE #NONE #OUTPUT #PLATFORM-INFO #PROCESS-INPUT #PROCESS-OUTPUT #RECOVERY-INFO #SGML #SGML-ERROR-COUNT syn keyword omnimarkCommands #SGML-ERROR-TOTAL #SGML-WARNING-COUNT #SGML-WARNING-TOTAL #SUPPRESS #SYNTAX #! syn keyword omnimarkPatterns ANY ANY-TEXT syn keyword omnimarkPatterns BLANK syn keyword omnimarkPatterns CDATA CDATA-ENTITY CONTENT-END CONTENT-START syn keyword omnimarkPatterns DIGIT syn keyword omnimarkPatterns LETTER syn keyword omnimarkPatterns NUMBER syn keyword omnimarkPatterns PCDATA syn keyword omnimarkPatterns RCDATA syn keyword omnimarkPatterns SDATA SDATA-ENTITY SPACE syn keyword omnimarkPatterns TEXT syn keyword omnimarkPatterns VALUE-END VALUE-START syn keyword omnimarkPatterns WORD-END WORD-START syn region omnimarkComment start=";" end="$" syn region omnimarkString matchgroup=Normal start=+'+ end=+'+ skip=+%'+ contains=omnimarkEscape syn region omnimarkString matchgroup=Normal start=+"+ end=+"+ skip=+%"+ contains=omnimarkEscape syn match omnimarkEscape contained +%.+ syn match omnimarkEscape contained +%[0-9][0-9]#+ syn sync minlines=2000 hi def link omnimarkCommands Statement hi def link omnimarkKeywords Identifier hi def link omnimarkString String hi def link omnimarkPatterns Macro hi def link omnimarkComment Comment hi def link omnimarkEscape Special let b:current_syntax = "omnimark" if exists("b:current_syntax") finish endif syntax case ignore syntax keyword openroadKeyword ABORT ALL ALTER AND ANY AS ASC AT AVG BEGIN syntax keyword openroadKeyword BETWEEN BY BYREF CALL CALLFRAME CALLPROC CASE syntax keyword openroadKeyword CLEAR CLOSE COMMIT CONNECT CONTINUE COPY COUNT syntax keyword openroadKeyword CREATE CURRENT DBEVENT DECLARE DEFAULT DELETE syntax keyword openroadKeyword DELETEROW DESC DIRECT DISCONNECT DISTINCT DO syntax keyword openroadKeyword DROP ELSE ELSEIF END ENDCASE ENDDECLARE ENDFOR syntax keyword openroadKeyword ENDIF ENDLOOP ENDWHILE ESCAPE EXECUTE EXISTS syntax keyword openroadKeyword EXIT FETCH FIELD FOR FROM GOTOFRAME GRANT GROUP syntax keyword openroadKeyword HAVING IF IMMEDIATE IN INDEX INITIALISE syntax keyword openroadKeyword INITIALIZE INQUIRE_INGRES INQUIRE_SQL INSERT syntax keyword openroadKeyword INSERTROW INSTALLATION INTEGRITY INTO KEY LIKE syntax keyword openroadKeyword LINK MAX MESSAGE METHOD MIN MODE MODIFY NEXT syntax keyword openroadKeyword NOECHO NOT NULL OF ON OPEN OPENFRAME OR ORDER syntax keyword openroadKeyword PERMIT PROCEDURE PROMPT QUALIFICATION RAISE syntax keyword openroadKeyword REGISTER RELOCATE REMOVE REPEAT REPEATED RESUME syntax keyword openroadKeyword RETURN RETURNING REVOKE ROLE ROLLBACK RULE SAVE syntax keyword openroadKeyword SAVEPOINT SELECT SET SLEEP SOME SUM SYSTEM TABLE syntax keyword openroadKeyword THEN TO TRANSACTION UNION UNIQUE UNTIL UPDATE syntax keyword openroadKeyword VALUES VIEW WHERE WHILE WITH WORK syntax keyword openroadTodo contained TODO syntax cluster openroadParenGroup contains=openroadParenError,openroadTodo syntax region openroadParen transparent start='(' end=')' contains=ALLBUT,@openroadParenGroup syntax match openroadParenError ")" highlight link openroadParenError cError syntax match openroadNumber "\<[0-9]\+\>" syntax region openroadString start=+'+ end=+'+ syntax match openroadOperator /[\+\-\*\/=\<\>;\(\)]/ syntax keyword openroadType ARRAY BYTE CHAR DATE DECIMAL FLOAT FLOAT4 syntax keyword openroadType FLOAT8 INT1 INT2 INT4 INTEGER INTEGER1 syntax keyword openroadType INTEGER2 INTEGER4 MONEY OBJECT_KEY syntax keyword openroadType SECURITY_LABEL SMALLINT TABLE_KEY VARCHAR syntax keyword openroadFunc IFNULL syntax keyword openroadClass ACTIVEFIELD ANALOGFIELD APPFLAG APPSOURCE syntax keyword openroadClass ARRAYOBJECT ATTRIBUTEOBJECT BARFIELD syntax keyword openroadClass BITMAPOBJECT BOXTRIM BREAKSPEC BUTTONFIELD syntax keyword openroadClass CELLATTRIBUTE CHOICEBITMAP CHOICEDETAIL syntax keyword openroadClass CHOICEFIELD CHOICEITEM CHOICELIST CLASS syntax keyword openroadClass CLASSSOURCE COLUMNCROSS COLUMNFIELD syntax keyword openroadClass COMPOSITEFIELD COMPSOURCE CONTROLBUTTON syntax keyword openroadClass CROSSTABLE CURSORBITMAP CURSOROBJECT DATASTREAM syntax keyword openroadClass DATEOBJECT DBEVENTOBJECT DBSESSIONOBJECT syntax keyword openroadClass DISPLAYFORM DYNEXPR ELLIPSESHAPE ENTRYFIELD syntax keyword openroadClass ENUMFIELD EVENT EXTOBJECT EXTOBJFIELD syntax keyword openroadClass FIELDOBJECT FLEXIBLEFORM FLOATOBJECT FORMFIELD syntax keyword openroadClass FRAMEEXEC FRAMEFORM FRAMESOURCE FREETRIM syntax keyword openroadClass GHOSTEXEC GHOSTSOURCE IMAGEFIELD IMAGETRIM syntax keyword openroadClass INTEGEROBJECT LISTFIELD LISTVIEWCOLATTR syntax keyword openroadClass LISTVIEWFIELD LONGBYTEOBJECT LONGVCHAROBJECT syntax keyword openroadClass MATRIXFIELD MENUBAR MENUBUTTON MENUFIELD syntax keyword openroadClass MENUGROUP MENUITEM MENULIST MENUSEPARATOR syntax keyword openroadClass MENUSTACK MENUTOGGLE METHODEXEC METHODOBJECT syntax keyword openroadClass MONEYOBJECT OBJECT OPTIONFIELD OPTIONMENU syntax keyword openroadClass PALETTEFIELD POPUPBUTTON PROC4GLSOURCE PROCEXEC syntax keyword openroadClass PROCHANDLE QUERYCOL QUERYOBJECT QUERYPARM syntax keyword openroadClass QUERYTABLE RADIOFIELD RECTANGLESHAPE ROWCROSS syntax keyword openroadClass SCALARFIELD SCOPE SCROLLBARFIELD SEGMENTSHAPE syntax keyword openroadClass SESSIONOBJECT SHAPEFIELD SLIDERFIELD SQLSELECT syntax keyword openroadClass STACKFIELD STRINGOBJECT SUBFORM TABBAR syntax keyword openroadClass TABFIELD TABFOLDER TABLEFIELD TABPAGE syntax keyword openroadClass TOGGLEFIELD TREE TREENODE TREEVIEWFIELD syntax keyword openroadClass USERCLASSOBJECT USEROBJECT VIEWPORTFIELD syntax keyword openroadEvent CHILDCLICK CHILDCLICKPOINT CHILDCOLLAPSED syntax keyword openroadEvent CHILDDETAILS CHILDDOUBLECLICK CHILDDRAGBOX syntax keyword openroadEvent CHILDDRAGSEGMENT CHILDENTRY CHILDEXIT syntax keyword openroadEvent CHILDEXPANDED CHILDHEADERCLICK CHILDMOVED syntax keyword openroadEvent CHILDPROPERTIES CHILDRESIZED CHILDSCROLL syntax keyword openroadEvent CHILDSELECT CHILDSELECTIONCHANGED CHILDSETVALUE syntax keyword openroadEvent CHILDUNSELECT CHILDVALIDATE CLICK CLICKPOINT syntax keyword openroadEvent COLLAPSED DBEVENT DETAILS DOUBLECLICK DRAGBOX syntax keyword openroadEvent DRAGSEGMENT ENTRY EXIT EXPANDED EXTCLASSEVENT syntax keyword openroadEvent FRAMEACTIVATE FRAMEDEACTIVATE HEADERCLICK syntax keyword openroadEvent INSERTROW LABELCHANGED MOVED PAGEACTIVATED syntax keyword openroadEvent PAGECHANGED PAGEDEACTIVATED PROPERTIES RESIZED syntax keyword openroadEvent SCROLL SELECT SELECTIONCHANGED SETVALUE syntax keyword openroadEvent TERMINATE UNSELECT USEREVENT VALIDATE syntax keyword openroadEvent WINDOWCLOSE WINDOWICON WINDOWMOVED WINDOWRESIZED syntax keyword openroadEvent WINDOWVISIBLE syntax keyword openroadConst BF_BMP BF_GIF BF_SUNRASTER BF_TIFF syntax keyword openroadConst BF_WINDOWCURSOR BF_WINDOWICON BF_XBM syntax keyword openroadConst CC_BACKGROUND CC_BLACK CC_BLUE CC_BROWN CC_CYAN syntax keyword openroadConst CC_DEFAULT_1 CC_DEFAULT_10 CC_DEFAULT_11 syntax keyword openroadConst CC_DEFAULT_12 CC_DEFAULT_13 CC_DEFAULT_14 syntax keyword openroadConst CC_DEFAULT_15 CC_DEFAULT_16 CC_DEFAULT_17 syntax keyword openroadConst CC_DEFAULT_18 CC_DEFAULT_19 CC_DEFAULT_2 syntax keyword openroadConst CC_DEFAULT_20 CC_DEFAULT_21 CC_DEFAULT_22 syntax keyword openroadConst CC_DEFAULT_23 CC_DEFAULT_24 CC_DEFAULT_25 syntax keyword openroadConst CC_DEFAULT_26 CC_DEFAULT_27 CC_DEFAULT_28 syntax keyword openroadConst CC_DEFAULT_29 CC_DEFAULT_3 CC_DEFAULT_30 syntax keyword openroadConst CC_DEFAULT_4 CC_DEFAULT_5 CC_DEFAULT_6 syntax keyword openroadConst CC_DEFAULT_7 CC_DEFAULT_8 CC_DEFAULT_9 syntax keyword openroadConst CC_FOREGROUND CC_GRAY CC_GREEN CC_LIGHT_BLUE syntax keyword openroadConst CC_LIGHT_BROWN CC_LIGHT_CYAN CC_LIGHT_GRAY syntax keyword openroadConst CC_LIGHT_GREEN CC_LIGHT_ORANGE CC_LIGHT_PINK syntax keyword openroadConst CC_LIGHT_PURPLE CC_LIGHT_RED CC_LIGHT_YELLOW syntax keyword openroadConst CC_MAGENTA CC_ORANGE CC_PALE_BLUE CC_PALE_BROWN syntax keyword openroadConst CC_PALE_CYAN CC_PALE_GRAY CC_PALE_GREEN syntax keyword openroadConst CC_PALE_ORANGE CC_PALE_PINK CC_PALE_PURPLE syntax keyword openroadConst CC_PALE_RED CC_PALE_YELLOW CC_PINK CC_PURPLE syntax keyword openroadConst CC_RED CC_SYS_ACTIVEBORDER CC_SYS_ACTIVECAPTION syntax keyword openroadConst CC_SYS_APPWORKSPACE CC_SYS_BACKGROUND syntax keyword openroadConst CC_SYS_BTNFACE CC_SYS_BTNSHADOW CC_SYS_BTNTEXT syntax keyword openroadConst CC_SYS_CAPTIONTEXT CC_SYS_GRAYTEXT syntax keyword openroadConst CC_SYS_HIGHLIGHT CC_SYS_HIGHLIGHTTEXT syntax keyword openroadConst CC_SYS_INACTIVEBORDER CC_SYS_INACTIVECAPTION syntax keyword openroadConst CC_SYS_INACTIVECAPTIONTEXT CC_SYS_MENU syntax keyword openroadConst CC_SYS_MENUTEXT CC_SYS_SCROLLBAR CC_SYS_SHADOW syntax keyword openroadConst CC_SYS_WINDOW CC_SYS_WINDOWFRAME syntax keyword openroadConst CC_SYS_WINDOWTEXT CC_WHITE CC_YELLOW syntax keyword openroadConst CL_INVALIDVALUE CP_BOTH CP_COLUMNS CP_NONE syntax keyword openroadConst CP_ROWS CS_CLOSED CS_CURRENT CS_NOCURRENT syntax keyword openroadConst CS_NO_MORE_ROWS CS_OPEN CS_OPEN_CACHED DC_BW syntax keyword openroadConst DC_COLOR DP_AUTOSIZE_FIELD DP_CLIP_IMAGE syntax keyword openroadConst DP_SCALE_IMAGE_H DP_SCALE_IMAGE_HW syntax keyword openroadConst DP_SCALE_IMAGE_W DS_CONNECTED DS_DISABLED syntax keyword openroadConst DS_DISCONNECTED DS_INGRES_DBMS DS_NO_DBMS syntax keyword openroadConst DS_ORACLE_DBMS DS_SQLSERVER_DBMS DV_NULL syntax keyword openroadConst DV_STRING DV_SYSTEM EH_NEXT_HANDLER EH_RESUME syntax keyword openroadConst EH_RETRY EP_INTERACTIVE EP_NONE EP_OUTPUT syntax keyword openroadConst ER_FAIL ER_NAMEEXISTS ER_OK ER_OUTOFRANGE syntax keyword openroadConst ER_ROWNOTFOUND ER_USER1 ER_USER10 ER_USER2 syntax keyword openroadConst ER_USER3 ER_USER4 ER_USER5 ER_USER6 ER_USER7 syntax keyword openroadConst ER_USER8 ER_USER9 FALSE FA_BOTTOMCENTER syntax keyword openroadConst FA_BOTTOMLEFT FA_BOTTOMRIGHT FA_CENTER syntax keyword openroadConst FA_CENTERLEFT FA_CENTERRIGHT FA_DEFAULT FA_NONE syntax keyword openroadConst FA_TOPCENTER FA_TOPLEFT FA_TOPRIGHT syntax keyword openroadConst FB_CHANGEABLE FB_CLICKPOINT FB_DIMMED FB_DRAGBOX syntax keyword openroadConst FB_DRAGSEGMENT FB_FLEXIBLE FB_INVISIBLE syntax keyword openroadConst FB_LANDABLE FB_MARKABLE FB_RESIZEABLE syntax keyword openroadConst FB_VIEWABLE FB_VISIBLE FC_LOWER FC_NONE FC_UPPER syntax keyword openroadConst FM_QUERY FM_READ FM_UPDATE FM_USER1 FM_USER2 syntax keyword openroadConst FM_USER3 FO_DEFAULT FO_HORIZONTAL FO_VERTICAL syntax keyword openroadConst FP_BITMAP FP_CLEAR FP_CROSSHATCH FP_DARKSHADE syntax keyword openroadConst FP_DEFAULT FP_HORIZONTAL FP_LIGHTSHADE FP_SHADE syntax keyword openroadConst FP_SOLID FP_VERTICAL FT_NOTSETVALUE FT_SETVALUE syntax keyword openroadConst FT_TABTO FT_TAKEFOCUS GF_BOTTOM GF_DEFAULT syntax keyword openroadConst GF_LEFT GF_RIGHT GF_TOP HC_DOUBLEQUOTE syntax keyword openroadConst HC_FORMFEED HC_NEWLINE HC_QUOTE HC_SPACE HC_TAB syntax keyword openroadConst HV_CONTENTS HV_CONTEXT HV_HELPONHELP HV_KEY syntax keyword openroadConst HV_QUIT LS_3D LS_DASH LS_DASHDOT LS_DASHDOTDOT syntax keyword openroadConst LS_DEFAULT LS_DOT LS_SOLID LW_DEFAULT syntax keyword openroadConst LW_EXTRATHIN LW_MAXIMUM LW_MIDDLE LW_MINIMUM syntax keyword openroadConst LW_NOLINE LW_THICK LW_THIN LW_VERYTHICK syntax keyword openroadConst LW_VERYTHIN MB_DISABLED MB_ENABLED MB_INVISIBLE syntax keyword openroadConst MB_MOVEABLE MT_ERROR MT_INFO MT_NONE MT_WARNING syntax keyword openroadConst OP_APPEND OP_NONE OS3D OS_DEFAULT OS_SHADOW syntax keyword openroadConst OS_SOLID PU_CANCEL PU_OK QS_ACTIVE QS_INACTIVE syntax keyword openroadConst QS_SETCOL QY_ARRAY QY_CACHE QY_CURSOR QY_DIRECT syntax keyword openroadConst RC_CHILDSELECTED RC_DOWN RC_END RC_FIELDFREED syntax keyword openroadConst RC_FIELDORPHANED RC_GROUPSELECT RC_HOME RC_LEFT syntax keyword openroadConst RC_MODECHANGED RC_MOUSECLICK RC_MOUSEDRAG syntax keyword openroadConst RC_NEXT RC_NOTAPPLICABLE RC_PAGEDOWN RC_PAGEUP syntax keyword openroadConst RC_PARENTSELECTED RC_PREVIOUS RC_PROGRAM syntax keyword openroadConst RC_RESUME RC_RETURN RC_RIGHT RC_ROWDELETED syntax keyword openroadConst RC_ROWINSERTED RC_ROWSALLDELETED RC_SELECT syntax keyword openroadConst RC_TFSCROLL RC_TOGGLESELECT RC_UP RS_CHANGED syntax keyword openroadConst RS_DELETED RS_NEW RS_UNCHANGED RS_UNDEFINED syntax keyword openroadConst SK_CLOSE SK_COPY SK_CUT SK_DELETE SK_DETAILS syntax keyword openroadConst SK_DUPLICATE SK_FIND SK_GO SK_HELP SK_NEXT syntax keyword openroadConst SK_NONE SK_PASTE SK_PROPS SK_QUIT SK_REDO syntax keyword openroadConst SK_SAVE SK_TFDELETEALLROWS SK_TFDELETEROW syntax keyword openroadConst SK_TFFIND SK_TFINSERTROW SK_UNDO SP_APPSTARTING syntax keyword openroadConst SP_ARROW SP_CROSS SP_IBEAM SP_ICON SP_NO syntax keyword openroadConst SP_SIZE SP_SIZENESW SP_SIZENS SP_SIZENWSE syntax keyword openroadConst SP_SIZEWE SP_UPARROW SP_WAIT SY_NT SY_OS2 syntax keyword openroadConst SY_UNIX SY_VMS SY_WIN95 TF_COURIER TF_HELVETICA syntax keyword openroadConst TF_LUCIDA TF_MENUDEFAULT TF_NEWCENTURY TF_SYSTEM syntax keyword openroadConst TF_TIMESROMAN TRUE UE_DATAERROR UE_EXITED syntax keyword openroadConst UE_NOTACTIVE UE_PURGED UE_RESUMED UE_UNKNOWN syntax keyword openroadConst WI_MOTIF WI_MSWIN32 WI_MSWINDOWS WI_NONE WI_PM syntax keyword openroadConst WP_FLOATING WP_INTERACTIVE WP_PARENTCENTERED syntax keyword openroadConst WP_PARENTRELATIVE WP_SCREENCENTERED syntax keyword openroadConst WP_SCREENRELATIVE WV_ICON WV_INVISIBLE syntax keyword openroadConst WV_UNREALIZED WV_VISIBLE syntax keyword openroadVar CurFrame CurProcedure CurMethod CurObject syntax match openroadIdent /[a-zA-Z_][a-zA-Z_]*![a-zA-Z_][a-zA-Z_]*/ if exists("openroad_comment_strings") syntax match openroadCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region openroadCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" syntax region openroadComment start="/\*" end="\*/" contains=openroadCommentString,openroadCharacter,openroadNumber syntax match openroadComment "//.*" contains=openroadComment2String,openroadCharacter,openroadNumber else syn region openroadComment start="/\*" end="\*/" syn match openroadComment "//.*" endif hi def link openroadKeyword Statement hi def link openroadNumber Number hi def link openroadString String hi def link openroadComment Comment hi def link openroadOperator Operator hi def link openroadType Type hi def link openroadFunc Special hi def link openroadClass Type hi def link openroadEvent Statement hi def link openroadConst Constant hi def link openroadVar Identifier hi def link openroadIdent Identifier hi def link openroadTodo Todo let b:current_syntax = "openroad" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn keyword OPLStatement proc endp abs acos addr adjustalloc alert alloc app syn keyword OPLStatement append appendsprite asc asin at atan back beep syn keyword OPLStatement begintrans bookmark break busy byref cache syn keyword OPLStatement cachehdr cacherec cachetidy call cancel caption syn keyword OPLStatement changesprite chr$ clearflags close closesprite cls syn keyword OPLStatement cmd$ committrans compact compress const continue syn keyword OPLStatement copy cos count create createsprite cursor syn keyword OPLStatement datetosecs datim$ day dayname$ days daystodate syn keyword OPLStatement dbuttons dcheckbox dchoice ddate declare dedit syn keyword OPLStatement deditmulti defaultwin deg delete dfile dfloat syn keyword OPLStatement dialog diaminit diampos dinit dir$ dlong do dow syn keyword OPLStatement dposition drawsprite dtext dtime dxinput edit else syn keyword OPLStatement elseif enda endif endv endwh entersend entersend0 syn keyword OPLStatement eof erase err err$ errx$ escape eval exist exp ext syn keyword OPLStatement external find findfield findlib first fix$ flags syn keyword OPLStatement flt font freealloc gat gborder gbox gbutton syn keyword OPLStatement gcircle gclock gclose gcls gcolor gcopy gcreate syn keyword OPLStatement gcreatebit gdrawobject gellipse gen$ get get$ syn keyword OPLStatement getcmd$ getdoc$ getevent getevent32 geteventa32 syn keyword OPLStatement geteventc getlibh gfill gfont ggmode ggrey gheight syn keyword OPLStatement gidentity ginfo ginfo32 ginvert giprint glineby syn keyword OPLStatement glineto gloadbit gloadfont global gmove gorder syn keyword OPLStatement goriginx goriginy goto gotomark gpatt gpeekline syn keyword OPLStatement gpoly gprint gprintb gprintclip grank gsavebit syn keyword OPLStatement gscroll gsetpenwidth gsetwin gstyle gtmode gtwidth syn keyword OPLStatement gunloadfont gupdate guse gvisible gwidth gx syn keyword OPLStatement gxborder gxprint gy hex$ hour iabs icon if include syn keyword OPLStatement input insert int intf intrans key key$ keya keyc syn keyword OPLStatement killmark kmod last lclose left$ len lenalloc syn keyword OPLStatement linklib ln loadlib loadm loc local lock log lopen syn keyword OPLStatement lower$ lprint max mcard mcasc mean menu mid$ min syn keyword OPLStatement minit minute mkdir modify month month$ mpopup syn keyword OPLStatement newobj newobjh next notes num$ odbinfo off onerr syn keyword OPLStatement open openr opx os parse$ path pause peek pi syn keyword OPLStatement pointerfilter poke pos position possprite print syn keyword OPLStatement put rad raise randomize realloc recsize rename syn keyword OPLStatement rept$ return right$ rmdir rnd rollback sci$ screen syn keyword OPLStatement screeninfo second secstodate send setdoc setflags syn keyword OPLStatement setname setpath sin space sqr statuswin syn keyword OPLStatement statwininfo std stop style sum tan testevent trap syn keyword OPLStatement type uadd unloadlib unloadm until update upper$ syn keyword OPLStatement use usr usr$ usub val var vector week while year syn match OPLNumber "\<\d\+\>" syn match OPLNumber "\<\d\+\.\d*\>" syn match OPLNumber "\.\d\+\>" syn region OPLString start=+"+ end=+"+ syn region OPLComment start="REM[\t ]" end="$" syn match OPLMathsOperator "-\|=\|[:<>+\*^/\\]" hi def link OPLStatement Statement hi def link OPLNumber Number hi def link OPLString String hi def link OPLComment Comment hi def link OPLMathsOperator Conditional let b:current_syntax = "opl" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'ora' endif syn case ignore syn match oraComment "\#.*" syn region oraParen transparent start="(" end=")" contains=@oraAll,oraParen syn match oraParenError ")" syn region oraString start=+"+ end=+"+ syn keyword oraKeywordGroup ADDRESS ADDRESS_LIST syn keyword oraKeywordGroup DESCRIPTION_LIST DESCRIPTION syn keyword oraKeyword PROTOCOL syn keyword oraValue ipc tcp nmp syn keyword oraKeyword PROGRAM ARGV0 ARGS syn keyword oraKeyword KEY syn keyword oraKeyword SERVER PIPE syn keyword oraKeyword LU_NAME LLU LOCAL_LU LLU_NAME LOCAL_LU_NAME syn keyword oraKeyword MODE MDN syn keyword oraKeyword PLU PARTNER_LU_NAME PLU_LA PARTNER_LU_LOCAL_ALIAS syn keyword oraKeyword TP_NAME TPN syn keyword oraKeyword SERVICE syn keyword oraKeyword HOST PORT syn keyword oraKeywordGroup COMMUNITY_LIST syn keyword oraKeyword COMMUNITY NAME DEFAULT_ZONE syn keyword oraValue tcpcom syn keyword oraValue yes no on off true false null all none ok syn keyword oraModifier world syn keyword oraKeyword TRACE_DIRECTORY TRACE_LEVEL TRACE_FILE syn keyword oraKeywordPref NAMES NAMESCTL syn keyword oraKeywordPref OSS SOURCE SQLNET TNSPING syn keyword oraKeyword AUTOMATIC_IPC BEQUEATH_DETACH DAEMON TRACE_MASK syn keyword oraKeyword DISABLE_OOB syn keyword oraKeyword LOG_DIRECTORY_CLIENT LOG_DIRECTORY_SERVER syn keyword oraKeyword LOG_FILE_CLIENT LOG_FILE_SERVER syn keyword oraKeyword DCE PREFIX DEFAULT_DOMAIN DIRECTORY_PATH syn keyword oraKeyword INITIAL_RETRY_TIMEOUT MAX_OPEN_CONNECTIONS syn keyword oraKeyword MESSAGE_POOL_START_SIZE NIS META_MAP syn keyword oraKeyword PASSWORD PREFERRED_SERVERS REQUEST_RETRIES syn keyword oraKeyword INTERNAL_ENCRYPT_PASSWORD INTERNAL_USE syn keyword oraKeyword NO_INITIAL_SERVER NOCONFIRM syn keyword oraKeyword SERVER_PASSWORD TRACE_UNIQUE MY_WALLET syn keyword oraKeyword LOCATION DIRECTORY METHOD METHOD_DATA syn keyword oraKeyword SQLNET_ADDRESS syn keyword oraKeyword AUTHENTICATION_SERVICES syn keyword oraKeyword AUTHENTICATION_KERBEROS5_SERVICE syn keyword oraKeyword AUTHENTICATION_GSSAPI_SERVICE syn keyword oraKeyword CLIENT_REGISTRATION syn keyword oraKeyword CRYPTO_CHECKSUM_CLIENT CRYPTO_CHECKSUM_SERVER syn keyword oraKeyword CRYPTO_CHECKSUM_TYPES_CLIENT CRYPTO_CHECKSUM_TYPES_SERVER syn keyword oraKeyword CRYPTO_SEED syn keyword oraKeyword ENCRYPTION_CLIENT ENCRYPTION_SERVER syn keyword oraKeyword ENCRYPTION_TYPES_CLIENT ENCRYPTION_TYPES_SERVER syn keyword oraKeyword EXPIRE_TIME syn keyword oraKeyword IDENTIX_FINGERPRINT_DATABASE IDENTIX_FINGERPRINT_DATABASE_USER syn keyword oraKeyword IDENTIX_FINGERPRINT_DATABASE_PASSWORD IDENTIX_FINGERPRINT_METHOD syn keyword oraKeyword KERBEROS5_CC_NAME KERBEROS5_CLOCKSKEW KERBEROS5_CONF syn keyword oraKeyword KERBEROS5_KEYTAB KERBEROS5_REALMS syn keyword oraKeyword RADIUS_ALTERNATE RADIUS_ALTERNATE_PORT RADIUS_ALTERNATE_RETRIES syn keyword oraKeyword RADIUS_AUTHENTICATION_TIMEOUT RADIUS_AUTHENTICATION syn keyword oraKeyword RADIUS_AUTHENTICATION_INTERFACE RADIUS_AUTHENTICATION_PORT syn keyword oraKeyword RADIUS_AUTHENTICATION_RETRIES RADIUS_AUTHENTICATION_TIMEOUT syn keyword oraKeyword RADIUS_CHALLENGE_RESPONSE RADIUS_SECRET RADIUS_SEND_ACCOUNTING syn keyword oraKeyword SSL_CLIENT_AUTHENTICATION SSL_CIPHER_SUITES SSL_VERSION syn keyword oraKeyword TRACE_DIRECTORY_CLIENT TRACE_DIRECTORY_SERVER syn keyword oraKeyword TRACE_FILE_CLIENT TRACE_FILE_SERVER syn keyword oraKeyword TRACE_LEVEL_CLIENT TRACE_LEVEL_SERVER syn keyword oraKeyword TRACE_UNIQUE_CLIENT syn keyword oraKeyword USE_CMAN USE_DEDICATED_SERVER syn keyword oraValue user admin support syn keyword oraValue accept accepted reject rejected requested required syn keyword oraValue md5 rc4_40 rc4_56 rc4_128 des des_40 syn keyword oraValue tnsnames onames hostname dce nis novell syn keyword oraValue file oracle syn keyword oraValue oss syn keyword oraValue beq nds nts kerberos5 securid cybersafe identix dcegssapi radius syn keyword oraValue undetermined syn keyword oraKeywordGroup CONNECT_DATA FAILOVER_MODE syn keyword oraKeyword FAILOVER LOAD_BALANCE SOURCE_ROUTE TYPE_OF_SERVICE syn keyword oraKeyword BACKUP TYPE METHOD GLOBAL_NAME HS syn keyword oraKeyword INSTANCE_NAME RDB_DATABASE SDU SERVER syn keyword oraKeyword SERVICE_NAME SERVICE_NAMES SID syn keyword oraKeyword HANDLER_NAME EXTPROC_CONNECTION_DATA syn keyword oraValue session select basic preconnect dedicated shared syn keyword oraKeywordGroup SID_LIST SID_DESC PRESPAWN_LIST PRESPAWN_DESC syn match oraKeywordGroup "SID_LIST_\w*" syn keyword oraKeyword PROTOCOL_STACK PRESENTATION SESSION syn keyword oraKeyword GLOBAL_DBNAME ORACLE_HOME PROGRAM SID_NAME syn keyword oraKeyword PRESPAWN_MAX POOL_SIZE TIMEOUT syn match oraKeyword "CONNECT_TIMEOUT_\w*" syn match oraKeyword "LOG_DIRECTORY_\w*" syn match oraKeyword "LOG_FILE_\w*" syn match oraKeyword "PASSWORDS_\w*" syn match oraKeyword "STARTUP_WAIT_TIME_\w*" syn match oraKeyword "STARTUP_WAITTIME_\w*" syn match oraKeyword "TRACE_DIRECTORY_\w*" syn match oraKeyword "TRACE_FILE_\w*" syn match oraKeyword "TRACE_LEVEL_\w*" syn match oraKeyword "USE_PLUG_AND_PLAY_\w*" syn keyword oraValue ttc giop ns raw syn keyword oraKeywordGroup ADDRESSES ADMIN_REGION syn keyword oraKeywordGroup DEFAULT_FORWARDERS FORWARDER_LIST FORWARDER syn keyword oraKeywordGroup DOMAIN_HINTS HINT_DESC HINT_LIST syn keyword oraKeywordGroup DOMAINS DOMAIN_LIST DOMAIN syn keyword oraKeywordPref NAMES syn keyword oraKeyword EXPIRE REFRESH REGION RETRY USERID VERSION syn keyword oraKeyword AUTHORITY_REQUIRED CONNECT_TIMEOUT syn keyword oraKeyword AUTO_REFRESH_EXPIRE AUTO_REFRESH_RETRY syn keyword oraKeyword CACHE_CHECKPOINT_FILE CACHE_CHECKPOINT_INTERVAL syn keyword oraKeyword CONFIG_CHECKPOINT_FILE DEFAULT_FORWARDERS_ONLY syn keyword oraKeyword HINT FORWARDING_AVAILABLE FORWARDING_DESIRED syn keyword oraKeyword KEEP_DB_OPEN syn keyword oraKeyword LOG_DIRECTORY LOG_FILE LOG_STATS_INTERVAL LOG_UNIQUE syn keyword oraKeyword MAX_OPEN_CONNECTIONS MAX_REFORWARDS syn keyword oraKeyword MESSAGE_POOL_START_SIZE syn keyword oraKeyword NO_MODIFY_REQUESTS NO_REGION_DATABASE syn keyword oraKeyword PASSWORD REGION_CHECKPOINT_FILE syn keyword oraKeyword RESET_STATS_INTERVAL SAVE_CONFIG_ON_STOP syn keyword oraKeyword SERVER_NAME TRACE_FUNC TRACE_UNIQUE syn keyword oraKeywordGroup CMAN CMAN_ADMIN CMAN_PROFILE PARAMETER_LIST syn keyword oraKeywordGroup CMAN_RULES RULES_LIST RULE syn keyword oraKeyword ANSWER_TIMEOUT AUTHENTICATION_LEVEL LOG_LEVEL syn keyword oraKeyword MAX_FREELIST_BUFFERS MAXIMUM_CONNECT_DATA MAXIMUM_RELAYS syn keyword oraKeyword RELAY_STATISTICS SHOW_TNS_INFO TRACING syn keyword oraKeyword USE_ASYNC_CALL SRC DST SRV ACT syn match oraKeyword "\w*\.EXCLUDED_NODES" syn match oraKeyword "\w*\.INVITED_NODES" syn match oraKeyword "\w*\.VALIDNODE_CHECKING" syn keyword oraKeyword TCP NODELAY syn keyword oraValue nested_loops merge hash unlimited syn keyword oraKeyword O7_DICTIONARY_ACCESSIBILITY ALWAYS_ANTI_JOIN ALWAYS_SEMI_JOIN syn keyword oraKeyword AQ_TM_PROCESSES ARCH_IO_SLAVES AUDIT_FILE_DEST AUDIT_TRAIL syn keyword oraKeyword BACKGROUND_CORE_DUMP BACKGROUND_DUMP_DEST syn keyword oraKeyword BACKUP_TAPE_IO_SLAVES BITMAP_MERGE_AREA_SIZE syn keyword oraKeyword BLANK_TRIMMING BUFFER_POOL_KEEP BUFFER_POOL_RECYCLE syn keyword oraKeyword COMMIT_POINT_STRENGTH COMPATIBLE CONTROL_FILE_RECORD_KEEP_TIME syn keyword oraKeyword CONTROL_FILES CORE_DUMP_DEST CPU_COUNT syn keyword oraKeyword CREATE_BITMAP_AREA_SIZE CURSOR_SPACE_FOR_TIME syn keyword oraKeyword DB_BLOCK_BUFFERS DB_BLOCK_CHECKING DB_BLOCK_CHECKSUM syn keyword oraKeyword DB_BLOCK_LRU_LATCHES DB_BLOCK_MAX_DIRTY_TARGET syn keyword oraKeyword DB_BLOCK_SIZE DB_DOMAIN syn keyword oraKeyword DB_FILE_DIRECT_IO_COUNT DB_FILE_MULTIBLOCK_READ_COUNT syn keyword oraKeyword DB_FILE_NAME_CONVERT DB_FILE_SIMULTANEOUS_WRITES syn keyword oraKeyword DB_FILES DB_NAME DB_WRITER_PROCESSES syn keyword oraKeyword DBLINK_ENCRYPT_LOGIN DBWR_IO_SLAVES syn keyword oraKeyword DELAYED_LOGGING_BLOCK_CLEANOUTS DISCRETE_TRANSACTIONS_ENABLED syn keyword oraKeyword DISK_ASYNCH_IO DISTRIBUTED_TRANSACTIONS syn keyword oraKeyword DML_LOCKS ENQUEUE_RESOURCES ENT_DOMAIN_NAME EVENT syn keyword oraKeyword FAST_START_IO_TARGET FAST_START_PARALLEL_ROLLBACK syn keyword oraKeyword FIXED_DATE FREEZE_DB_FOR_FAST_INSTANCE_RECOVERY syn keyword oraKeyword GC_DEFER_TIME GC_FILES_TO_LOCKS GC_RELEASABLE_LOCKS GC_ROLLBACK_LOCKS syn keyword oraKeyword GLOBAL_NAMES HASH_AREA_SIZE syn keyword oraKeyword HASH_JOIN_ENABLED HASH_MULTIBLOCK_IO_COUNT syn keyword oraKeyword HI_SHARED_MEMORY_ADDRESS HS_AUTOREGISTER syn keyword oraKeyword IFILE syn keyword oraKeyword INSTANCE_GROUPS INSTANCE_NAME INSTANCE_NUMBER syn keyword oraKeyword JAVA_POOL_SIZE JOB_QUEUE_INTERVAL JOB_QUEUE_PROCESSES LARGE_POOL_SIZE syn keyword oraKeyword LICENSE_MAX_SESSIONS LICENSE_MAX_USERS LICENSE_SESSIONS_WARNING syn keyword oraKeyword LM_LOCKS LM_PROCS LM_RESS syn keyword oraKeyword LOCAL_LISTENER LOCK_NAME_SPACE LOCK_SGA LOCK_SGA_AREAS syn keyword oraKeyword LOG_ARCHIVE_BUFFER_SIZE LOG_ARCHIVE_BUFFERS LOG_ARCHIVE_DEST syn match oraKeyword "LOG_ARCHIVE_DEST_\(1\|2\|3\|4\|5\)" syn match oraKeyword "LOG_ARCHIVE_DEST_STATE_\(1\|2\|3\|4\|5\)" syn keyword oraKeyword LOG_ARCHIVE_DUPLEX_DEST LOG_ARCHIVE_FORMAT LOG_ARCHIVE_MAX_PROCESSES syn keyword oraKeyword LOG_ARCHIVE_MIN_SUCCEED_DEST LOG_ARCHIVE_START syn keyword oraKeyword LOG_BUFFER LOG_CHECKPOINT_INTERVAL LOG_CHECKPOINT_TIMEOUT syn keyword oraKeyword LOG_CHECKPOINTS_TO_ALERT LOG_FILE_NAME_CONVERT syn keyword oraKeyword MAX_COMMIT_PROPAGATION_DELAY MAX_DUMP_FILE_SIZE syn keyword oraKeyword MAX_ENABLED_ROLES MAX_ROLLBACK_SEGMENTS syn keyword oraKeyword MTS_DISPATCHERS MTS_MAX_DISPATCHERS MTS_MAX_SERVERS MTS_SERVERS syn keyword oraKeyword NLS_CALENDAR NLS_COMP NLS_CURRENCY NLS_DATE_FORMAT syn keyword oraKeyword NLS_DATE_LANGUAGE NLS_DUAL_CURRENCY NLS_ISO_CURRENCY NLS_LANGUAGE syn keyword oraKeyword NLS_NUMERIC_CHARACTERS NLS_SORT NLS_TERRITORY syn keyword oraKeyword OBJECT_CACHE_MAX_SIZE_PERCENT OBJECT_CACHE_OPTIMAL_SIZE syn keyword oraKeyword OPEN_CURSORS OPEN_LINKS OPEN_LINKS_PER_INSTANCE syn keyword oraKeyword OPS_ADMINISTRATION_GROUP syn keyword oraKeyword OPTIMIZER_FEATURES_ENABLE OPTIMIZER_INDEX_CACHING syn keyword oraKeyword OPTIMIZER_INDEX_COST_ADJ OPTIMIZER_MAX_PERMUTATIONS syn keyword oraKeyword OPTIMIZER_MODE OPTIMIZER_PERCENT_PARALLEL syn keyword oraKeyword OPTIMIZER_SEARCH_LIMIT syn keyword oraKeyword ORACLE_TRACE_COLLECTION_NAME ORACLE_TRACE_COLLECTION_PATH syn keyword oraKeyword ORACLE_TRACE_COLLECTION_SIZE ORACLE_TRACE_ENABLE syn keyword oraKeyword ORACLE_TRACE_FACILITY_NAME ORACLE_TRACE_FACILITY_PATH syn keyword oraKeyword OS_AUTHENT_PREFIX OS_ROLES syn keyword oraKeyword PARALLEL_ADAPTIVE_MULTI_USER PARALLEL_AUTOMATIC_TUNING syn keyword oraKeyword PARALLEL_BROADCAST_ENABLED PARALLEL_EXECUTION_MESSAGE_SIZE syn keyword oraKeyword PARALLEL_INSTANCE_GROUP PARALLEL_MAX_SERVERS syn keyword oraKeyword PARALLEL_MIN_PERCENT PARALLEL_MIN_SERVERS syn keyword oraKeyword PARALLEL_SERVER PARALLEL_SERVER_INSTANCES PARALLEL_THREADS_PER_CPU syn keyword oraKeyword PARTITION_VIEW_ENABLED PLSQL_V2_COMPATIBILITY syn keyword oraKeyword PRE_PAGE_SGA PROCESSES syn keyword oraKeyword QUERY_REWRITE_ENABLED QUERY_REWRITE_INTEGRITY syn keyword oraKeyword RDBMS_SERVER_DN READ_ONLY_OPEN_DELAYED RECOVERY_PARALLELISM syn keyword oraKeyword REMOTE_DEPENDENCIES_MODE REMOTE_LOGIN_PASSWORDFILE syn keyword oraKeyword REMOTE_OS_AUTHENT REMOTE_OS_ROLES syn keyword oraKeyword REPLICATION_DEPENDENCY_TRACKING syn keyword oraKeyword RESOURCE_LIMIT RESOURCE_MANAGER_PLAN syn keyword oraKeyword ROLLBACK_SEGMENTS ROW_LOCKING SERIAL _REUSE SERVICE_NAMES syn keyword oraKeyword SESSION_CACHED_CURSORS SESSION_MAX_OPEN_FILES SESSIONS syn keyword oraKeyword SHADOW_CORE_DUMP syn keyword oraKeyword SHARED_MEMORY_ADDRESS SHARED_POOL_RESERVED_SIZE SHARED_POOL_SIZE syn keyword oraKeyword SORT_AREA_RETAINED_SIZE SORT_AREA_SIZE SORT_MULTIBLOCK_READ_COUNT syn keyword oraKeyword SQL92_SECURITY SQL_TRACE STANDBY_ARCHIVE_DEST syn keyword oraKeyword STAR_TRANSFORMATION_ENABLED TAPE_ASYNCH_IO THREAD syn keyword oraKeyword TIMED_OS_STATISTICS TIMED_STATISTICS syn keyword oraKeyword TRANSACTION_AUDITING TRANSACTIONS TRANSACTIONS_PER_ROLLBACK_SEGMENT syn keyword oraKeyword USE_INDIRECT_DATA_BUFFERS USER_DUMP_DEST syn keyword oraKeyword UTL_FILE_DIR syn keyword oraKeywordObs ALLOW_PARTIAL_SN_RESULTS B_TREE_BITMAP_PLANS syn keyword oraKeywordObs BACKUP_DISK_IO_SLAVES CACHE_SIZE_THRESHOLD syn keyword oraKeywordObs CCF_IO_SIZE CLEANUP_ROLLBACK_ENTRIES syn keyword oraKeywordObs CLOSE_CACHED_OPEN_CURSORS COMPATIBLE_NO_RECOVERY syn keyword oraKeywordObs COMPLEX_VIEW_MERGING syn keyword oraKeywordObs DB_BLOCK_CHECKPOINT_BATCH DB_BLOCK_LRU_EXTENDED_STATISTICS syn keyword oraKeywordObs DB_BLOCK_LRU_STATISTICS syn keyword oraKeywordObs DISTRIBUTED_LOCK_TIMEOUT DISTRIBUTED_RECOVERY_CONNECTION_HOLD_TIME syn keyword oraKeywordObs FAST_FULL_SCAN_ENABLED GC_LATCHES GC_LCK_PROCS syn keyword oraKeywordObs LARGE_POOL_MIN_ALLOC LGWR_IO_SLAVES syn keyword oraKeywordObs LOG_BLOCK_CHECKSUM LOG_FILES syn keyword oraKeywordObs LOG_SIMULTANEOUS_COPIES LOG_SMALL_ENTRY_MAX_SIZE syn keyword oraKeywordObs MAX_TRANSACTION_BRANCHES syn keyword oraKeywordObs MTS_LISTENER_ADDRESS MTS_MULTIPLE_LISTENERS syn keyword oraKeywordObs MTS_RATE_LOG_SIZE MTS_RATE_SCALE MTS_SERVICE syn keyword oraKeywordObs OGMS_HOME OPS_ADMIN_GROUP syn keyword oraKeywordObs PARALLEL_DEFAULT_MAX_INSTANCES PARALLEL_MIN_MESSAGE_POOL syn keyword oraKeywordObs PARALLEL_SERVER_IDLE_TIME PARALLEL_TRANSACTION_RESOURCE_TIMEOUT syn keyword oraKeywordObs PUSH_JOIN_PREDICATE REDUCE_ALARM ROW_CACHE_CURSORS syn keyword oraKeywordObs SEQUENCE_CACHE_ENTRIES SEQUENCE_CACHE_HASH_BUCKETS syn keyword oraKeywordObs SHARED_POOL_RESERVED_MIN_ALLOC syn keyword oraKeywordObs SORT_DIRECT_WRITES SORT_READ_FAC SORT_SPACEMAP_SIZE syn keyword oraKeywordObs SORT_WRITE_BUFFER_SIZE SORT_WRITE_BUFFERS syn keyword oraKeywordObs SPIN_COUNT TEMPORARY_TABLE_LOCKS USE_ISM syn keyword oraValue db os full partial mandatory optional reopen enable defer syn keyword oraValue always default intent disable dml plsql temp_disable syn match oravalue "Arabic Hijrah" syn match oravalue "English Hijrah" syn match oravalue "Gregorian" syn match oravalue "Japanese Imperial" syn match oravalue "Persian" syn match oravalue "ROC Official" syn match oravalue "Thai Buddha" syn match oravalue "8.0.0" syn match oravalue "8.0.3" syn match oravalue "8.0.4" syn match oravalue "8.1.3" syn match oraModifier "archived log" syn match oraModifier "backup corruption" syn match oraModifier "backup datafile" syn match oraModifier "backup piece " syn match oraModifier "backup redo log" syn match oraModifier "backup set" syn match oraModifier "copy corruption" syn match oraModifier "datafile copy" syn match oraModifier "deleted object" syn match oraModifier "loghistory" syn match oraModifier "offline range" syn keyword oraKeywordUndObs _latch_spin_count _trace_instance_termination syn keyword oraKeywordUndObs _wakeup_timeout _lgwr_async_write syn keyword oraKeywordUndObs _standby_lock_space_name _enable_dba_locking syn keyword oraKeywordUnd _NUMA_instance_mapping _NUMA_pool_size syn keyword oraKeywordUnd _advanced_dss_features _affinity_on _all_shared_dblinks syn keyword oraKeywordUnd _allocate_creation_order _allow_resetlogs_corruption syn keyword oraKeywordUnd _always_star_transformation _bump_highwater_mark_count syn keyword oraKeywordUnd _column_elimination_off _controlfile_enqueue_timeout syn keyword oraKeywordUnd _corrupt_blocks_on_stuck_recovery _corrupted_rollback_segments syn keyword oraKeywordUnd _cr_deadtime _cursor_db_buffers_pinned syn keyword oraKeywordUnd _db_block_cache_clone _db_block_cache_map _db_block_cache_protect syn keyword oraKeywordUnd _db_block_hash_buckets _db_block_hi_priority_batch_size syn keyword oraKeywordUnd _db_block_max_cr_dba _db_block_max_scan_cnt syn keyword oraKeywordUnd _db_block_med_priority_batch_size _db_block_no_idle_writes syn keyword oraKeywordUnd _db_block_write_batch _db_handles _db_handles_cached syn keyword oraKeywordUnd _db_large_dirty_queue _db_no_mount_lock syn keyword oraKeywordUnd _db_writer_histogram_statistics _db_writer_scan_depth syn keyword oraKeywordUnd _db_writer_scan_depth_decrement _db_writer_scan_depth_increment syn keyword oraKeywordUnd _disable_incremental_checkpoints syn keyword oraKeywordUnd _disable_latch_free_SCN_writes_via_32cas syn keyword oraKeywordUnd _disable_latch_free_SCN_writes_via_64cas syn keyword oraKeywordUnd _disable_logging _disable_ntlog_events syn keyword oraKeywordUnd _dss_cache_flush _dynamic_stats_threshold syn keyword oraKeywordUnd _enable_cscn_caching _enable_default_affinity syn keyword oraKeywordUnd _enqueue_debug_multi_instance _enqueue_hash syn keyword oraKeywordUnd _enqueue_hash_chain_latches _enqueue_locks syn keyword oraKeywordUnd _fifth_spare_parameter _first_spare_parameter _fourth_spare_parameter syn keyword oraKeywordUnd _gc_class_locks _groupby_nopushdown_cut_ratio syn keyword oraKeywordUnd _idl_conventional_index_maintenance _ignore_failed_escalates syn keyword oraKeywordUnd _init_sql_file syn keyword oraKeywordUnd _io_slaves_disabled _ioslave_batch_count _ioslave_issue_count syn keyword oraKeywordUnd _kgl_bucket_count _kgl_latch_count _kgl_multi_instance_invalidation syn keyword oraKeywordUnd _kgl_multi_instance_lock _kgl_multi_instance_pin syn keyword oraKeywordUnd _latch_miss_stat_sid _latch_recovery_alignment _latch_wait_posting syn keyword oraKeywordUnd _lm_ast_option _lm_direct_sends _lm_dlmd_procs _lm_domains _lm_groups syn keyword oraKeywordUnd _lm_non_fault_tolerant _lm_send_buffers _lm_statistics _lm_xids syn keyword oraKeywordUnd _log_blocks_during_backup _log_buffers_debug _log_checkpoint_recovery_check syn keyword oraKeywordUnd _log_debug_multi_instance _log_entry_prebuild_threshold _log_io_size syn keyword oraKeywordUnd _log_space_errors syn keyword oraKeywordUnd _max_exponential_sleep _max_sleep_holding_latch syn keyword oraKeywordUnd _messages _minimum_giga_scn _mts_load_constants _nested_loop_fudge syn keyword oraKeywordUnd _no_objects _no_or_expansion syn keyword oraKeywordUnd _number_cached_attributes _offline_rollback_segments _open_files_limit syn keyword oraKeywordUnd _optimizer_undo_changes syn keyword oraKeywordUnd _oracle_trace_events _oracle_trace_facility_version syn keyword oraKeywordUnd _ordered_nested_loop _parallel_server_sleep_time syn keyword oraKeywordUnd _passwordfile_enqueue_timeout _pdml_slaves_diff_part syn keyword oraKeywordUnd _plsql_dump_buffer_events _predicate_elimination_enabled syn keyword oraKeywordUnd _project_view_columns syn keyword oraKeywordUnd _px_broadcast_fudge_factor _px_broadcast_trace _px_dop_limit_degree syn keyword oraKeywordUnd _px_dop_limit_threshold _px_kxfr_granule_allocation _px_kxib_tracing syn keyword oraKeywordUnd _release_insert_threshold _reuse_index_loop syn keyword oraKeywordUnd _rollback_segment_count _rollback_segment_initial syn keyword oraKeywordUnd _row_cache_buffer_size _row_cache_instance_locks syn keyword oraKeywordUnd _save_escalates _scn_scheme syn keyword oraKeywordUnd _second_spare_parameter _session_idle_bit_latches syn keyword oraKeywordUnd _shared_session_sort_fetch_buffer _single_process syn keyword oraKeywordUnd _small_table_threshold _sql_connect_capability_override syn keyword oraKeywordUnd _sql_connect_capability_table syn keyword oraKeywordUnd _test_param_1 _test_param_2 _test_param_3 syn keyword oraKeywordUnd _third_spare_parameter _tq_dump_period syn keyword oraKeywordUnd _trace_archive_dest _trace_archive_start _trace_block_size syn keyword oraKeywordUnd _trace_buffers_per_process _trace_enabled _trace_events syn keyword oraKeywordUnd _trace_file_size _trace_files_public _trace_flushing _trace_write_batch_size syn keyword oraKeywordUnd _upconvert_from_ast _use_vector_post _wait_for_sync _walk_insert_threshold syn keyword oraKeywordUndObs _arch_io_slaves _average_dirties_half_life _b_tree_bitmap_plans syn keyword oraKeywordUndObs _backup_disk_io_slaves _backup_io_pool_size syn keyword oraKeywordUndObs _cleanup_rollback_entries _close_cached_open_cursors syn keyword oraKeywordUndObs _compatible_no_recovery _complex_view_merging syn keyword oraKeywordUndObs _cpu_to_io _cr_server syn keyword oraKeywordUndObs _db_aging_cool_count _db_aging_freeze_cr _db_aging_hot_criteria syn keyword oraKeywordUndObs _db_aging_stay_count _db_aging_touch_time syn keyword oraKeywordUndObs _db_percent_hot_default _db_percent_hot_keep _db_percent_hot_recycle syn keyword oraKeywordUndObs _db_writer_chunk_writes _db_writer_max_writes syn keyword oraKeywordUndObs _dbwr_async_io _dbwr_tracing syn keyword oraKeywordUndObs _defer_multiple_waiters _discrete_transaction_enabled syn keyword oraKeywordUndObs _distributed_lock_timeout _distributed_recovery _distribited_recovery_ syn keyword oraKeywordUndObs _domain_index_batch_size _domain_index_dml_batch_size syn keyword oraKeywordUndObs _enable_NUMA_optimization _enable_block_level_transaction_recovery syn keyword oraKeywordUndObs _enable_list_io _enable_multiple_sampling syn keyword oraKeywordUndObs _fairness_treshold _fast_full_scan_enabled _foreground_locks syn keyword oraKeywordUndObs _full_pwise_join_enabled _gc_latches _gc_lck_procs syn keyword oraKeywordUndObs _high_server_treshold _index_prefetch_factor _kcl_debug syn keyword oraKeywordUndObs _kkfi_trace _large_pool_min_alloc _lazy_freelist_close _left_nested_loops_random syn keyword oraKeywordUndObs _lgwr_async_io _lgwr_io_slaves _lock_sga_areas syn keyword oraKeywordUndObs _log_archive_buffer_size _log_archive_buffers _log_simultaneous_copies syn keyword oraKeywordUndObs _low_server_treshold _max_transaction_branches syn keyword oraKeywordUndObs _mts_rate_log_size _mts_rate_scale syn keyword oraKeywordUndObs _mview_cost_rewrite _mview_rewrite_2 syn keyword oraKeywordUndObs _ncmb_readahead_enabled _ncmb_readahead_tracing syn keyword oraKeywordUndObs _ogms_home syn keyword oraKeywordUndObs _parallel_adaptive_max_users _parallel_default_max_instances syn keyword oraKeywordUndObs _parallel_execution_message_align _parallel_fake_class_pct syn keyword oraKeywordUndObs _parallel_load_bal_unit _parallel_load_balancing syn keyword oraKeywordUndObs _parallel_min_message_pool _parallel_recovery_stopat syn keyword oraKeywordUndObs _parallel_server_idle_time _parallelism_cost_fudge_factor syn keyword oraKeywordUndObs _partial_pwise_join_enabled _pdml_separate_gim _push_join_predicate syn keyword oraKeywordUndObs _px_granule_size _px_index_sampling _px_load_publish_interval syn keyword oraKeywordUndObs _px_max_granules_per_slave _px_min_granules_per_slave _px_no_stealing syn keyword oraKeywordUndObs _row_cache_cursors _serial_direct_read _shared_pool_reserved_min_alloc syn keyword oraKeywordUndObs _sort_space_for_write_buffers _spin_count _system_trig_enabled syn keyword oraKeywordUndObs _trace_buffer_flushes _trace_cr_buffer_creates _trace_multi_block_reads syn keyword oraKeywordUndObs _transaction_recovery_servers _use_ism _yield_check_interval syn cluster oraAll add=oraKeyword,oraKeywordGroup,oraKeywordPref,oraKeywordObs,oraKeywordUnd,oraKeywordUndObs syn cluster oraAll add=oraValue,oraModifier,oraString,oraSpecial,oraComment hi def link oraKeyword Statement "usual keywords hi def link oraKeywordGroup Type "keywords which group other keywords hi def link oraKeywordPref oraKeywordGroup "keywords which act as prefixes hi def link oraKeywordObs Todo "obsolete keywords hi def link oraKeywordUnd PreProc "undocumented keywords hi def link oraKeywordUndObs oraKeywordObs "undocumented obsolete keywords hi def link oraValue Identifier "values, like true or false hi def link oraModifier oraValue "modifies values hi def link oraString String "strings hi def link oraSpecial Special "special characters hi def link oraError Error "errors hi def link oraParenError oraError "errors caused by mismatching parantheses hi def link oraComment Comment "comments let b:current_syntax = "ora" if main_syntax == 'ora' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match pamconfService '^[[:graph:]]\+' \ nextgroup=pamconfType, \ pamconfServiceLineCont skipwhite syn keyword pamconfTodo contained TODO FIXME XXX NOTE syn region pamconfComment display oneline start='#' end='$' \ contains=pamconfTodo,@Spell syn match pamconfServiceLineCont contained '\\$' \ nextgroup=pamconfType, \ pamconfServiceLineCont skipwhite skipnl syn keyword pamconfType account auth password session \ nextgroup=pamconfControl, \ pamconfTypeLineCont skipwhite syn match pamconfTypeLineCont contained '\\$' \ nextgroup=pamconfControl, \ pamconfTypeLineCont skipwhite skipnl syn keyword pamconfControl contained requisite required sufficient \ optional include substack \ nextgroup=pamconfMPath, \ pamconfControlLineContH skipwhite syn match pamconfControlBegin '\[' nextgroup=pamconfControlValues, \ pamconfControlLineCont skipwhite syn match pamconfControlLineCont contained '\\$' \ nextgroup=pamconfControlValues, \ pamconfControlLineCont skipwhite skipnl syn keyword pamconfControlValues contained success open_err symbol_err \ service_err system_err buf_err \ perm_denied auth_err cred_insufficient \ authinfo_unavail user_unknown maxtries \ new_authtok_reqd acct_expired session_err \ cred_unavail cred_expired cred_err \ no_module_data conv_err authtok_err \ authtok_recover_err authtok_lock_busy \ authtok_disable_aging try_again ignore \ abort authtok_expired module_unknown \ bad_item and default \ nextgroup=pamconfControlValueEq syn match pamconfControlValueEq contained '=' \ nextgroup=pamconfControlActionN, \ pamconfControlAction syn match pamconfControlActionN contained '\d\+\>' \ nextgroup=pamconfControlValues, \ pamconfControlLineCont,pamconfControlEnd \ skipwhite syn keyword pamconfControlAction contained ignore bad die ok done reset \ nextgroup=pamconfControlValues, \ pamconfControlLineCont,pamconfControlEnd \ skipwhite syn match pamconfControlEnd contained '\]' \ nextgroup=pamconfMPath, \ pamconfControlLineContH skipwhite syn match pamconfControlLineContH contained '\\$' \ nextgroup=pamconfMPath, \ pamconfControlLineContH skipwhite skipnl syn match pamconfMPath contained '\S\+' \ nextgroup=pamconfMPathLineCont, \ pamconfArgs skipwhite syn match pamconfArgs contained '\S\+' \ nextgroup=pamconfArgsLineCont, \ pamconfArgs skipwhite syn match pamconfMPathLineCont contained '\\$' \ nextgroup=pamconfMPathLineCont, \ pamconfArgs skipwhite skipnl syn match pamconfArgsLineCont contained '\\$' \ nextgroup=pamconfArgsLineCont, \ pamconfArgs skipwhite skipnl hi def link pamconfTodo Todo hi def link pamconfComment Comment hi def link pamconfService Statement hi def link pamconfServiceLineCont Special hi def link pamconfType Type hi def link pamconfTypeLineCont pamconfServiceLineCont hi def link pamconfControl Macro hi def link pamconfControlBegin Delimiter hi def link pamconfControlLineContH pamconfServiceLineCont hi def link pamconfControlLineCont pamconfServiceLineCont hi def link pamconfControlValues Identifier hi def link pamconfControlValueEq Operator hi def link pamconfControlActionN Number hi def link pamconfControlAction Identifier hi def link pamconfControlEnd Delimiter hi def link pamconfMPath String hi def link pamconfMPathLineCont pamconfServiceLineCont hi def link pamconfArgs Normal hi def link pamconfArgsLineCont pamconfServiceLineCont let b:current_syntax = "pamconf" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/xml.vim unlet b:current_syntax if exists("papp_include_html") syn include @PAppHtml syntax/html.vim unlet b:current_syntax syntax spell default " added by Bram endif syn include @PAppPerl syntax/perl.vim syn cluster xmlFoldCluster add=papp_perl,papp_xperl,papp_phtml,papp_pxml,papp_perlPOD syn region papp_prep matchgroup=papp_prep start="^#\s*\(if\|elsif\)" end="$" keepend contains=@perlExpr contained syn match papp_prep /^#\s*\(else\|endif\|??\).*$/ contained syn region papp_gettext start=/__"/ end=/"/ contained contains=@papp_perlInterpDQ syn cluster PAppHtml add=papp_gettext,papp_prep syn region papp_perl matchgroup=xmlTag start="" end="" contains=papp_CDATAp,@PAppPerl keepend syn region papp_xperl matchgroup=xmlTag start="" end="" contains=papp_CDATAp,@PAppPerl keepend syn region papp_phtml matchgroup=xmlTag start="" end="" contains=papp_CDATAh,papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml keepend syn region papp_pxml matchgroup=xmlTag start="" end="" contains=papp_CDATAx,papp_ph_perl,papp_ph_xml,papp_ph_xint keepend syn region papp_perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,perlTodo keepend syn region papp_CDATAp matchgroup=xmlCdataDecl start="" contains=@PAppPerl contained keepend syn region papp_CDATAh matchgroup=xmlCdataDecl start="" contains=papp_ph_perl,papp_ph_html,papp_ph_hint,@PAppHtml contained keepend syn region papp_CDATAx matchgroup=xmlCdataDecl start="" contains=papp_ph_perl,papp_ph_xml,papp_ph_xint contained keepend syn region papp_ph_perl matchgroup=Delimiter start="<[:?]" end="[:?]>"me=e-2 nextgroup=papp_ph_html contains=@PAppPerl contained keepend syn region papp_ph_html matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@PAppHtml contained keepend syn region papp_ph_hint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ,@PAppHtml contained keepend syn region papp_ph_xml matchgroup=Delimiter start=":>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains= contained keepend syn region papp_ph_xint matchgroup=Delimiter start="?>" end="<[:?]"me=e-2 nextgroup=papp_ph_perl contains=@perlInterpDQ contained keepend syn sync clear syn sync match pappSync grouphere papp_CDATAh "" syn sync match pappSync grouphere papp_CDATAh "^# *\(if\|elsif\|else\|endif\)" syn sync match pappSync grouphere papp_CDATAh "" syn sync match pappSync grouphere NONE "" syn sync maxlines=300 syn sync minlines=5 hi def link papp_prep preCondit hi def link papp_gettext String let b:current_syntax = "papp" if exists("b:current_syntax") finish endif syn case ignore syn sync lines=250 syn keyword pascalBoolean true false syn keyword pascalConditional if else then syn keyword pascalConstant nil maxint syn keyword pascalLabel case goto label syn keyword pascalOperator and div downto in mod not of or packed with syn keyword pascalRepeat do for do repeat while to until syn keyword pascalStatement procedure function syn keyword pascalStatement program begin end const var type syn keyword pascalStruct record syn keyword pascalType array boolean char integer file pointer real set syn keyword pascalType string text variant syn keyword pascalTodo contained TODO FIXME XXX DEBUG NOTE if exists("pascal_space_errors") if !exists("pascal_no_trail_space_error") syn match pascalSpaceError "\s\+$" endif if !exists("pascal_no_tab_space_error") syn match pascalSpaceError " \+\t"me=e-1 endif endif if !exists("pascal_one_line_string") syn region pascalString matchgroup=pascalString start=+'+ end=+'+ contains=pascalStringEscape if exists("pascal_gpc") syn region pascalString matchgroup=pascalString start=+"+ end=+"+ contains=pascalStringEscapeGPC else syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ contains=pascalStringEscape endif else syn region pascalStringError matchgroup=pascalStringError start=+'+ end=+'+ end=+$+ contains=pascalStringEscape if exists("pascal_gpc") syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscapeGPC else syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscape endif syn region pascalString matchgroup=pascalString start=+'+ end=+'+ oneline contains=pascalStringEscape if exists("pascal_gpc") syn region pascalString matchgroup=pascalString start=+"+ end=+"+ oneline contains=pascalStringEscapeGPC else syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ oneline contains=pascalStringEscape endif end syn match pascalStringEscape contained "''" syn match pascalStringEscapeGPC contained '""' if exists("pascal_symbol_operator") syn match pascalSymbolOperator "[+\-/*=]" syn match pascalSymbolOperator "[<>]=\=" syn match pascalSymbolOperator "<>" syn match pascalSymbolOperator ":=" syn match pascalSymbolOperator "[()]" syn match pascalSymbolOperator "\.\." syn match pascalSymbolOperator "[\^.]" syn match pascalMatrixDelimiter "[][]" endif syn match pascalNumber "-\=\<\d\+\>" syn match pascalFloat "-\=\<\d\+\.\d\+\>" syn match pascalFloat "-\=\<\d\+\.\d\+[eE]-\=\d\+\>" syn match pascalHexNumber "\$[0-9a-fA-F]\+\>" if exists("pascal_no_tabs") syn match pascalShowTab "\t" endif syn region pascalComment start="(\*\|{" end="\*)\|}" contains=pascalTodo,pascalSpaceError if !exists("pascal_no_functions") syn keyword pascalFunction pack unpack syn keyword pascalFunction Dispose New syn keyword pascalFunction Abs Arctan Cos Exp Ln Sin Sqr Sqrt syn keyword pascalFunction Eof Eoln Write Writeln syn keyword pascalPredefined Input Output if exists("pascal_traditional") syn keyword pascalFunction Get Page Put endif syn keyword pascalFunction Odd Pred Succ syn keyword pascalFunction Chr Ord Round Trunc endif if !exists("pascal_traditional") syn keyword pascalStatement constructor destructor implementation inherited syn keyword pascalStatement interface unit uses syn keyword pascalModifier absolute assembler external far forward inline syn keyword pascalModifier interrupt near virtual syn keyword pascalAcces private public syn keyword pascalStruct object syn keyword pascalOperator shl shr xor syn region pascalPreProc start="(\*\$" end="\*)" contains=pascalTodo syn region pascalPreProc start="{\$" end="}" syn region pascalAsm matchgroup=pascalAsmKey start="\" end="\" contains=pascalComment,pascalPreProc syn keyword pascalType ShortInt LongInt Byte Word syn keyword pascalType ByteBool WordBool LongBool syn keyword pascalType Cardinal LongWord syn keyword pascalType Single Double Extended Comp syn keyword pascalType PChar if !exists ("pascal_fpc") syn keyword pascalPredefined Result endif if exists("pascal_fpc") syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError syn keyword pascalStatement fail otherwise operator syn keyword pascalDirective popstack syn keyword pascalPredefined self syn keyword pascalType ShortString AnsiString WideString endif if exists("pascal_gpc") syn keyword pascalType SmallInt syn keyword pascalType AnsiChar syn keyword pascalType PAnsiChar endif if exists("pascal_delphi") syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError syn keyword pascalType SmallInt Int64 syn keyword pascalType Real48 Currency syn keyword pascalType AnsiChar WideChar syn keyword pascalType ShortString AnsiString WideString syn keyword pascalType PAnsiChar PWideChar syn match pascalFloat "-\=\<\d\+\.\d\+[dD]-\=\d\+\>" syn match pascalStringEscape contained "#[12][0-9]\=[0-9]\=" syn keyword pascalStruct class dispinterface syn keyword pascalException try except raise at on finally syn keyword pascalStatement out syn keyword pascalStatement library package syn keyword pascalStatement initialization finalization uses exports syn keyword pascalStatement property out resourcestring threadvar syn keyword pascalModifier contains syn keyword pascalModifier overridden reintroduce abstract syn keyword pascalModifier override export dynamic name message syn keyword pascalModifier dispid index stored default nodefault readonly syn keyword pascalModifier writeonly implements overload requires resident syn keyword pascalAcces protected published automated syn keyword pascalDirective register pascal cvar cdecl stdcall safecall syn keyword pascalOperator as is endif if exists("pascal_no_functions") else syn keyword pascalFunction Break Continue Exit Halt RunError syn keyword pascalFunction Dec Inc High Low syn keyword pascalFunction Frac Int Pi syn keyword pascalFunction Concat Copy Delete Insert Length Pos Str Val syn keyword pascalFunction FreeMem GetMem MaxAvail MemAvail syn keyword pascalFunction Addr Assigned CSeg DSeg Ofs Ptr Seg SPtr SSeg syn keyword pascalFunction Exclude FillChar Hi Include Lo Move ParamCount syn keyword pascalFunction ParamStr Random Randomize SizeOf Swap TypeOf syn keyword pascalFunction UpCase syn keyword pascalPredefined ErrorAddr ExitCode ExitProc FileMode FreeList syn keyword pascalPredefined FreeZero HeapEnd HeapError HeapOrg HeapPtr syn keyword pascalPredefined InOutRes OvrCodeList OvrDebugPtr OvrDosHandle syn keyword pascalPredefined OvrEmsHandle OvrHeapEnd OvrHeapOrg OvrHeapPtr syn keyword pascalPredefined OvrHeapSize OvrLoadList PrefixSeg RandSeed syn keyword pascalPredefined SaveInt00 SaveInt02 SaveInt1B SaveInt21 syn keyword pascalPredefined SaveInt23 SaveInt24 SaveInt34 SaveInt35 syn keyword pascalPredefined SaveInt36 SaveInt37 SaveInt38 SaveInt39 syn keyword pascalPredefined SaveInt3A SaveInt3B SaveInt3C SaveInt3D syn keyword pascalPredefined SaveInt3E SaveInt3F SaveInt75 SegA000 SegB000 syn keyword pascalPredefined SegB800 SelectorInc StackLimit Test8087 syn keyword pascalFunction Append Assign BlockRead BlockWrite ChDir Close syn keyword pascalFunction Erase FilePos FileSize Flush GetDir IOResult syn keyword pascalFunction MkDir Read Readln Rename Reset Rewrite RmDir syn keyword pascalFunction Seek SeekEof SeekEoln SetTextBuf Truncate syn keyword pascalFunction AssignCrt ClrEol ClrScr Delay DelLine GotoXY syn keyword pascalFunction HighVideo InsLine KeyPressed LowVideo NormVideo syn keyword pascalFunction NoSound ReadKey Sound TextBackground TextColor syn keyword pascalFunction TextMode WhereX WhereY Window syn keyword pascalPredefined CheckBreak CheckEOF CheckSnow DirectVideo syn keyword pascalPredefined LastMode TextAttr WindMin WindMax syn keyword pascalFunction BigCursor CursorOff CursorOn syn keyword pascalConstant Black Blue Green Cyan Red Magenta Brown syn keyword pascalConstant LightGray DarkGray LightBlue LightGreen syn keyword pascalConstant LightCyan LightRed LightMagenta Yellow White syn keyword pascalConstant Blink ScreenWidth ScreenHeight bw40 syn keyword pascalConstant co40 bw80 co80 mono syn keyword pascalPredefined TextChar syn keyword pascalFunction AddDisk DiskFree DiskSize DosExitCode DosVersion syn keyword pascalFunction EnvCount EnvStr Exec Expand FindClose FindFirst syn keyword pascalFunction FindNext FSearch FSplit GetCBreak GetDate syn keyword pascalFunction GetEnv GetFAttr GetFTime GetIntVec GetTime syn keyword pascalFunction GetVerify Intr Keep MSDos PackTime SetCBreak syn keyword pascalFunction SetDate SetFAttr SetFTime SetIntVec SetTime syn keyword pascalFunction SetVerify SwapVectors UnPackTime syn keyword pascalConstant FCarry FParity FAuxiliary FZero FSign FOverflow syn keyword pascalConstant Hidden Sysfile VolumeId Directory Archive syn keyword pascalConstant AnyFile fmClosed fmInput fmOutput fmInout syn keyword pascalConstant TextRecNameLength TextRecBufSize syn keyword pascalType ComStr PathStr DirStr NameStr ExtStr SearchRec syn keyword pascalType FileRec TextBuf TextRec Registers DateTime syn keyword pascalPredefined DosError syn keyword pascalFunction Arc Bar Bar3D Circle ClearDevice ClearViewPort syn keyword pascalFunction CloseGraph DetectGraph DrawPoly Ellipse syn keyword pascalFunction FillEllipse FillPoly FloodFill GetArcCoords syn keyword pascalFunction GetAspectRatio GetBkColor GetColor syn keyword pascalFunction GetDefaultPalette GetDriverName GetFillPattern syn keyword pascalFunction GetFillSettings GetGraphMode GetImage syn keyword pascalFunction GetLineSettings GetMaxColor GetMaxMode GetMaxX syn keyword pascalFunction GetMaxY GetModeName GetModeRange GetPalette syn keyword pascalFunction GetPaletteSize GetPixel GetTextSettings syn keyword pascalFunction GetViewSettings GetX GetY GraphDefaults syn keyword pascalFunction GraphErrorMsg GraphResult ImageSize InitGraph syn keyword pascalFunction InstallUserDriver InstallUserFont Line LineRel syn keyword pascalFunction LineTo MoveRel MoveTo OutText OutTextXY syn keyword pascalFunction PieSlice PutImage PutPixel Rectangle syn keyword pascalFunction RegisterBGIDriver RegisterBGIFont syn keyword pascalFunction RestoreCRTMode Sector SetActivePage syn keyword pascalFunction SetAllPallette SetAspectRatio SetBkColor syn keyword pascalFunction SetColor SetFillPattern SetFillStyle syn keyword pascalFunction SetGraphBufSize SetGraphMode SetLineStyle syn keyword pascalFunction SetPalette SetRGBPalette SetTextJustify syn keyword pascalFunction SetTextStyle SetUserCharSize SetViewPort syn keyword pascalFunction SetVisualPage SetWriteMode TextHeight TextWidth syn keyword pascalType ArcCoordsType FillPatternType FillSettingsType syn keyword pascalType LineSettingsType PaletteType PointType syn keyword pascalType TextSettingsType ViewPortType syn keyword pascalFunction StrAlloc StrBufSize StrCat StrComp StrCopy syn keyword pascalFunction StrDispose StrECopy StrEnd StrFmt StrIComp syn keyword pascalFunction StrLCat StrLComp StrLCopy StrLen StrLFmt syn keyword pascalFunction StrLIComp StrLower StrMove StrNew StrPas syn keyword pascalFunction StrPCopy StrPLCopy StrPos StrRScan StrScan syn keyword pascalFunction StrUpper endif endif hi def link pascalAcces pascalStatement hi def link pascalBoolean Boolean hi def link pascalComment Comment hi def link pascalConditional Conditional hi def link pascalConstant Constant hi def link pascalDelimiter Identifier hi def link pascalDirective pascalStatement hi def link pascalException Exception hi def link pascalFloat Float hi def link pascalFunction Function hi def link pascalLabel Label hi def link pascalMatrixDelimiter Identifier hi def link pascalModifier Type hi def link pascalNumber Number hi def link pascalOperator Operator hi def link pascalPredefined pascalStatement hi def link pascalPreProc PreProc hi def link pascalRepeat Repeat hi def link pascalSpaceError Error hi def link pascalStatement Statement hi def link pascalString String hi def link pascalStringEscape Special hi def link pascalStringEscapeGPC Special hi def link pascalStringError Error hi def link pascalStruct pascalStatement hi def link pascalSymbolOperator pascalOperator hi def link pascalTodo Todo hi def link pascalType Type hi def link pascalUnclassified pascalStatement hi def link pascalError Error hi def link pascalAsmKey pascalStatement hi def link pascalShowTab Error let b:current_syntax = "pascal" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match passwdBegin display '^' nextgroup=passwdAccount syn match passwdAccount contained display '[^:]\+' \ nextgroup=passwdPasswordColon syn match passwdPasswordColon contained display ':' \ nextgroup=passwdPassword,passwdShadow syn match passwdPassword contained display '[^:]\+' \ nextgroup=passwdUIDColon syn match passwdShadow contained display '[x*!]' \ nextgroup=passwdUIDColon syn match passwdUIDColon contained display ':' nextgroup=passwdUID syn match passwdUID contained display '\d\{0,10}' \ nextgroup=passwdGIDColon syn match passwdGIDColon contained display ':' nextgroup=passwdGID syn match passwdGID contained display '\d\{0,10}' \ nextgroup=passwdGecosColon syn match passwdGecosColon contained display ':' nextgroup=passwdGecos syn match passwdGecos contained display '[^:]*' \ nextgroup=passwdDirColon syn match passwdDirColon contained display ':' nextgroup=passwdDir syn match passwdDir contained display '/[^:]*' \ nextgroup=passwdShellColon syn match passwdShellColon contained display ':' \ nextgroup=passwdShell syn match passwdShell contained display '.*' hi def link passwdColon Normal hi def link passwdAccount Identifier hi def link passwdPasswordColon passwdColon hi def link passwdPassword Number hi def link passwdShadow Special hi def link passwdUIDColon passwdColon hi def link passwdUID Number hi def link passwdGIDColon passwdColon hi def link passwdGID Number hi def link passwdGecosColon passwdColon hi def link passwdGecos Comment hi def link passwdDirColon passwdColon hi def link passwdDir Type hi def link passwdShellColon passwdColon hi def link passwdShell Operator let b:current_syntax = "passwd" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif setlocal isk=@,46-57,_,-,#,=,192-255 syn match pcapBad '^.\+$' "define any line as bad syn match pcapBadword '\k\+' contained "define any sequence of keywords as bad syn match pcapBadword ':' contained "define any single : as bad syn match pcapBadword '\\' contained "define any single \ as bad syn match pcapKeyword contained ':\(fo\|hl\|ic\|rs\|rw\|sb\|sc\|sf\|sh\)' syn match pcapKeyword contained ':\(br\|du\|fc\|fs\|mx\|pc\|pl\|pw\|px\|py\|xc\|xs\)#\d\+' syn match pcapKeyword contained ':\(af\|cf\|df\|ff\|gf\|if\|lf\|lo\|lp\|nd\|nf\|of\|rf\|rg\|rm\|rp\|sd\|st\|tf\|tr\|vf\)=\k*' syn match pcapEnd ':\\$' contained syn match pcapDefineLast '^\s.\+$' contains=pcapBadword,pcapKeyword syn match pcapDefine '^\s.\+$' contains=pcapBadword,pcapKeyword,pcapEnd syn match pcapHeader '^\k[^|]\+\(|\k[^|]\+\)*:\\$' syn match pcapComment "#.*$" syn sync minlines=50 hi def link pcapBad WarningMsg hi def link pcapBadword WarningMsg hi def link pcapComment Comment let b:current_syntax = "pcap" if exists("b:current_syntax") finish endif syn include @cppTopLevel syntax/cpp.vim syn region pcctsAction matchgroup=pcctsDelim start="<<" end=">>?\=" contains=@cppTopLevel,pcctsRuleRef syn region pcctsArgBlock matchgroup=pcctsDelim start="\(>\s*\)\=\[" end="\]" contains=@cppTopLevel,pcctsRuleRef syn region pcctsString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pcctsSpecialChar syn match pcctsSpecialChar "\\\\\|\\\"" contained syn region pcctsComment start="/\*" end="\*/" contains=cTodo syn match pcctsComment "//.*$" contains=cTodo syn region pcctsDirective start="^\s*#header\s\+<<" end=">>" contains=pcctsAction keepend syn match pcctsDirective "^\s*#parser\>.*$" contains=pcctsString,pcctsComment syn match pcctsDirective "^\s*#tokdefs\>.*$" contains=pcctsString,pcctsComment syn match pcctsDirective "^\s*#token\>.*$" contains=pcctsString,pcctsAction,pcctsTokenName,pcctsComment syn region pcctsDirective start="^\s*#tokclass\s\+[A-Z]\i*\s\+{" end="}" contains=pcctsString,pcctsTokenName syn match pcctsDirective "^\s*#lexclass\>.*$" contains=pcctsTokenName syn region pcctsDirective start="^\s*#errclass\s\+[^{]\+\s\+{" end="}" contains=pcctsString,pcctsTokenName syn match pcctsDirective "^\s*#pred\>.*$" contains=pcctsTokenName,pcctsAction syn cluster pcctsInRule contains=pcctsString,pcctsRuleName,pcctsTokenName,pcctsAction,pcctsArgBlock,pcctsSubRule,pcctsLabel,pcctsComment syn region pcctsRule start="\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\(\s*>\s*\[[^]]*\]\)\=\s*:" end=";" contains=@pcctsInRule syn region pcctsSubRule matchgroup=pcctsDelim start="(" end=")\(+\|\*\|?\(\s*=>\)\=\)\=" contains=@pcctsInRule contained syn region pcctsSubRule matchgroup=pcctsDelim start="{" end="}" contains=@pcctsInRule contained syn match pcctsRuleName "\<[a-z]\i*\>" contained syn match pcctsTokenName "\<[A-Z]\i*\>" contained syn match pcctsLabel "\<\I\i*:\I\i*" contained contains=pcctsLabelHack,pcctsRuleName,pcctsTokenName syn match pcctsLabel "\<\I\i*:\"\([^\\]\|\\.\)*\"" contained contains=pcctsLabelHack,pcctsString syn match pcctsLabelHack "\<\I\i*:" contained syn match pcctsRuleRef "\$\I\i*\>" contained syn match pcctsRuleRef "\$\d\+\(\.\d\+\)\>" contained syn keyword pcctsClass class nextgroup=pcctsClassName skipwhite syn match pcctsClassName "\<\I\i*\>" contained nextgroup=pcctsClassBlock skipwhite skipnl syn region pcctsClassBlock start="{" end="}" contained contains=pcctsRule,pcctsComment,pcctsDirective,pcctsAction,pcctsException,pcctsExceptionHandler syn keyword pcctsException exception nextgroup=pcctsExceptionRuleRef skipwhite syn match pcctsExceptionRuleRef "\[\I\i*\]" contained contains=pcctsExceptionID syn match pcctsExceptionID "\I\i*" contained syn keyword pcctsExceptionHandler catch default syn keyword pcctsExceptionHandler NoViableAlt NoSemViableAlt syn keyword pcctsExceptionHandler MismatchedToken syn sync clear syn sync match pcctsSyncAction grouphere pcctsAction "<<" syn sync match pcctsSyncAction "<<\([^>]\|>[^>]\)*>>" syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\s*\[[^]]*\]\s*:" syn sync match pcctsSyncRule grouphere pcctsRule "\<[a-z][A-Za-z0-9_]*\>\(\s*\[[^]]*\]\)\=\s*>\s*\[[^]]*\]\s*:" hi def link pcctsDelim Special hi def link pcctsTokenName Identifier hi def link pcctsRuleName Statement hi def link pcctsLabelHack Label hi def link pcctsDirective PreProc hi def link pcctsString String hi def link pcctsComment Comment hi def link pcctsClass Statement hi def link pcctsClassName Identifier hi def link pcctsException Statement hi def link pcctsExceptionHandler Keyword hi def link pcctsExceptionRuleRef pcctsDelim hi def link pcctsExceptionID Identifier hi def link pcctsRuleRef Identifier hi def link pcctsSpecialChar SpecialChar let b:current_syntax = "pccts" if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'pdf' endif syn include @pdfXML syntax/xml.vim syn case match syn cluster pdfObjects contains=pdfBoolean,pdfConstant,pdfNumber,pdfFloat,pdfName,pdfHexString,pdfString,pdfArray,pdfHash,pdfReference,pdfComment syn keyword pdfBoolean true false contained syn keyword pdfConstant null contained syn match pdfNumber "[+-]\=\<\d\+\>" syn match pdfFloat "[+-]\=\<\%(\d\+\.\|\d*\.\d\+\)\>" contained syn match pdfNameError "#\X\|#\x\X\|#00" contained containedin=pdfName syn match pdfSpecialChar "#\x\x" contained containedin=pdfName syn match pdfName "/[^[:space:]\[\](){}<>/]*" contained syn match pdfHexError "[^[:space:][:xdigit:]<>]" contained syn region pdfHexString matchgroup=pdfDelimiter start="<<\@!" end=">" contained contains=pdfHexError syn match pdfStringError "\\." contained containedin=pdfString syn match pdfSpecialChar "\\\%(\o\{1,3\}\|[nrtbf()\\]\)" contained containedin=pdfString syn region pdfString matchgroup=pdfDelimiter start="\\\@>" contains=@pdfObjects contained syn match pdfReference "\<\d\+\s\+\d\+\s\+R\>" syn region pdfObject matchgroup=pdfType start="\" end="\" contains=@pdfObjects syn region pdfObject matchgroup=pdfType start="\" syn match perlConditional "\\)\|\>\)" contains=perlElseIfError skipwhite skipnl skipempty syn match perlRepeat "\<\%(while\|for\%(each\)\=\|do\|until\|continue\)\>" syn match perlOperator "\<\%(defined\|undef\|eq\|ne\|[gl][et]\|cmp\|not\|and\|or\|xor\|not\|bless\|ref\|do\)\>" syn match perlFakeGroup "" contained syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgroup=perlFakeGroup syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|fc\|uc\%(first\)\=\)\>" syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" syn match perlStatementHash "\<\%(delete\|each\|exists\|keys\|values\)\>" syn match perlStatementIOfunc "\<\%(syscall\|dbmopen\|dbmclose\)\>" syn match perlStatementFiledesc "\<\%(binmode\|close\%(dir\)\=\|eof\|fileno\|getc\|lstat\|printf\=\|read\%(dir\|line\|pipe\)\|rewinddir\|say\|select\|stat\|tell\%(dir\)\=\|write\)\>" nextgroup=perlFiledescStatementNocomma skipwhite syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read\|seek\%(dir\)\=\|sys\%(open\|read\|seek\|write\)\|truncate\)\>" nextgroup=perlFiledescStatementComma skipwhite syn match perlStatementVector "\" syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>" syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>" syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>" syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>" syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>" syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>" syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\%(\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*\)\@<={" end="}" transparent extend syn match perlLabel "^\s*\h\w*\s*::\@!\%(\(-]" syn match perlVarPlain "@[-+]" syn match perlVarPlain "$\%(0\|[1-9]\d*\)" syn match perlVarPlain "$::\@!" syn match perlVarNotInMatches "$[|)]" syn match perlVarSlash "$/" syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\=\%(::\|'\)\I"ms=s+1,me=e-1 contained if !exists("perl_no_scope_in_variables") syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref else syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref endif syn match perlVarPlain2 "%[-+]" if !exists("perl_no_extended_vars") syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contains=perlVarSimpleMemberName contained extend syn match perlVarSimpleMemberName "\I\i*" contained syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod,perlPostDeref syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref syn match perlPostDeref "->\%($#\|[$@%&*]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref syn region perlPostDeref start="->\%($#\|[$@%&*]\)\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref syn region perlPostDeref matchgroup=perlPostDeref start="->\%($#\|[$@%&*]\){" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref endif syn match perlFiledescRead "<\h\w*>" syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatement "\<\u\w*\>" contained syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend syn match perlSpecialStringU2 "\\." extend contained contains=NONE syn match perlSpecialStringU "\\\\" contained syn match perlSpecialMatch "\\[1-9]" contained extend syn match perlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained syn match perlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained syn match perlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained syn match perlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained extend syn match perlSpecialMatch "[+*()?.]" contained syn match perlSpecialMatch "(?[#:=!]" contained syn match perlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained syn match perlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained syn match perlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained syn match perlSpecialMatch "(\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\=\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\=\|ACCEPT\))" contained syn match perlNotEmptyLine "^\s\+$" contained syn match perlElseIfError "else\_s*if" containedin=perlConditional syn keyword perlElseIfError elseif containedin=perlConditional syn cluster perlInterpDQ contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock syn cluster perlInterpSQ contains=perlSpecialStringU,perlSpecialStringU2 syn cluster perlInterpSlash contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock syn cluster perlInterpMatch contains=@perlInterpSlash,perlVarSlash syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ keepend syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" syn match perlFloat "\.[[:digit:]][[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV syn match perlVStringV "\+ extend contained contains=perlAnglesSQ,@perlInterpSQ keepend syn region perlParensDQ start=+(+ end=+)+ extend contained contains=perlParensDQ,@perlInterpDQ keepend syn region perlBracketsDQ start=+\[+ end=+\]+ extend contained contains=perlBracketsDQ,@perlInterpDQ keepend syn region perlBracesDQ start=+{+ end=+}+ extend contained contains=perlBracesDQ,@perlInterpDQ keepend syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesDQ,@perlInterpDQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@[msixpodualgcn]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcern]*+ contained contains=@perlInterpSQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@[cdsr]*+ contains=perlAnglesSQ contained syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend extend syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpDQ,perlAnglesDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@+ contains=@perlInterpSQ,perlAnglesSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosxdual]*+ contains=@perlInterpMatch keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\)\@\)\@\)\@\)\@\)\@[imosxdual]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@\zs\_[^)]\+" contained syn match perlSubPrototype +(\_[^)]*)\_s*+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError endif syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlSignature,perlSubAttributes,perlComment syn match perlFunction +\\_s*+ nextgroup=perlSubName syn match perlString "\I\@\)\@=" syn match perlComment "#.*" contains=perlTodo,@Spell extend syn match perlSharpBang "^#!.*" syn region perlFormat matchgroup=perlStatementIOFunc start="^\s*\~]\+\%(\.\.\.\)\=" contained syn match perlFormatField "[@^]#[#.]*" contained syn match perlFormatField "@\*" contained syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained syn match perlFormatField "@$" contained if exists("perl_fold") syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA fold syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold else syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA endif if exists("perl_fold") if !exists("perl_nofold_packages") syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend endif if !exists("perl_nofold_subs") if get(g:, "perl_fold_anonymous_subs", 0) syn region perlSubFold start="\[^{]*{" end="}" transparent fold keepend extend syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend else syn region perlSubFold start="^\z(\s*\)\.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend endif endif if exists("perl_fold_blocks") syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)for\%(each\)\=\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend endif setlocal foldmethod=syntax syn sync fromstart else syn sync minlines=0 endif hi def link perlSharpBang PreProc hi def link perlControl PreProc hi def link perlInclude Include hi def link perlSpecial Special hi def link perlString String hi def link perlCharacter Character hi def link perlNumber Number hi def link perlFloat Float hi def link perlType Type hi def link perlIdentifier Identifier hi def link perlLabel Label hi def link perlStatement Statement hi def link perlConditional Conditional hi def link perlRepeat Repeat hi def link perlOperator Operator hi def link perlFunction Keyword hi def link perlSubName Function hi def link perlSubPrototype Type hi def link perlSignature Type hi def link perlSubAttributes PreProc hi def link perlSubAttributesCont perlSubAttributes hi def link perlComment Comment hi def link perlTodo Todo if exists("perl_string_as_statement") hi def link perlStringStartEnd perlStatement else hi def link perlStringStartEnd perlString endif hi def link perlVStringV perlStringStartEnd hi def link perlList perlStatement hi def link perlMisc perlStatement hi def link perlVarPlain perlIdentifier hi def link perlVarPlain2 perlIdentifier hi def link perlArrow perlIdentifier hi def link perlFiledescRead perlIdentifier hi def link perlFiledescStatement perlIdentifier hi def link perlVarSimpleMember perlIdentifier hi def link perlVarSimpleMemberName perlString hi def link perlVarNotInMatches perlIdentifier hi def link perlVarSlash perlIdentifier hi def link perlQQ perlString hi def link perlHereDoc perlString hi def link perlStringUnexpanded perlString hi def link perlSubstitutionSQ perlString hi def link perlSubstitutionGQQ perlString hi def link perlTranslationGQ perlString hi def link perlMatch perlString hi def link perlMatchStartEnd perlStatement hi def link perlFormatName perlIdentifier hi def link perlFormatField perlString hi def link perlPackageDecl perlType hi def link perlStorageClass perlType hi def link perlPackageRef perlType hi def link perlStatementPackage perlStatement hi def link perlStatementStorage perlStatement hi def link perlStatementControl perlStatement hi def link perlStatementScalar perlStatement hi def link perlStatementRegexp perlStatement hi def link perlStatementNumeric perlStatement hi def link perlStatementList perlStatement hi def link perlStatementHash perlStatement hi def link perlStatementIOfunc perlStatement hi def link perlStatementFiledesc perlStatement hi def link perlStatementVector perlStatement hi def link perlStatementFiles perlStatement hi def link perlStatementFlow perlStatement hi def link perlStatementInclude perlStatement hi def link perlStatementProc perlStatement hi def link perlStatementSocket perlStatement hi def link perlStatementIPC perlStatement hi def link perlStatementNetwork perlStatement hi def link perlStatementPword perlStatement hi def link perlStatementTime perlStatement hi def link perlStatementMisc perlStatement hi def link perlStatementIndirObj perlStatement hi def link perlFunctionName perlIdentifier hi def link perlMethod perlIdentifier hi def link perlPostDeref perlIdentifier hi def link perlFunctionPRef perlType if !get(g:, 'perl_include_pod', 1) hi def link perlPOD perlComment endif hi def link perlShellCommand perlString hi def link perlSpecialAscii perlSpecial hi def link perlSpecialDollar perlSpecial hi def link perlSpecialString perlSpecial hi def link perlSpecialStringU perlSpecial hi def link perlSpecialMatch perlSpecial hi def link perlDATA perlComment hi def link perlParensSQ perlString hi def link perlBracketsSQ perlString hi def link perlBracesSQ perlString hi def link perlAnglesSQ perlString hi def link perlParensDQ perlString hi def link perlBracketsDQ perlString hi def link perlBracesDQ perlString hi def link perlAnglesDQ perlString hi def link perlSpecialStringU2 perlString hi def link perlNotEmptyLine Error hi def link perlElseIfError Error hi def link perlSubPrototypeError Error hi def link perlSubError Error if !exists("perl_no_sync_on_sub") syn sync match perlSync grouphere NONE "^\s*\" syn sync match perlSync grouphere NONE "^}" endif if !exists("perl_no_sync_on_global_var") syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{" syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*(" endif if exists("perl_sync_dist") execute "syn sync maxlines=" . perl_sync_dist else syn sync maxlines=100 endif syn sync match perlSyncPOD grouphere perlPOD "^=pod" syn sync match perlSyncPOD grouphere perlPOD "^=head" syn sync match perlSyncPOD grouphere perlPOD "^=item" syn sync match perlSyncPOD grouphere NONE "^=cut" let b:current_syntax = "perl" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*" let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@.;\\]" syn match p6Operator display "\%(:\@\)" syn match p6Operator display "\d\@<=i\k\@!" syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)" let s:infix_a = [ \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x", \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt", \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^", \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax", \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=", \ "+ - \\*\\* \\* // / \\~ || |", \ ] let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^" let s:infix_a_long = join(s:infix_a, " ") let s:infix_a_words = split(s:infix_a_long) let s:infix_a_pattern = join(s:infix_a_words, "\\|") let s:infix_n_words = split(s:infix_n) let s:infix_n_pattern = join(s:infix_n_words, "\\|") let s:both = [s:infix_a_pattern, s:infix_n_pattern] let s:infix = join(s:both, "\\|") let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)" let s:infix = "!\\?\\%(" . s:infix . "\\)" unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern unlet s:infix_n s:infix_n_pattern s:both exec "syn match p6ReduceOp display \"\\k\\@" syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@=" syn match p6Type display "\\%(\s*(\|\s\+\d\)\@!" syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)" syn match p6PackageTwigil display "\%(::\)\@<=\*" syn region p6MatchVarSigil \ matchgroup=p6Variable \ start="\$\%(<<\@!\)\@=" \ end=">\@<=" \ contains=p6MatchVar syn region p6MatchVar \ matchgroup=p6Twigil \ start="<" \ end=">" \ contained syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>" syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@=" syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpArray \ matchgroup=p6Context \ start="@\ze()\@!" \ start="@@\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpHash \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpHash \ matchgroup=p6Context \ start="%\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpFunction \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpFunction \ matchgroup=p6Context \ start="&\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpClosure \ start="\\\@" contained syn match p6EscCloseFrench display "\\»" contained syn match p6EscBackTick display "\\`" contained syn match p6EscForwardSlash display "\\/" contained syn match p6EscVerticalBar display "\\|" contained syn match p6EscExclamation display "\\!" contained syn match p6EscComma display "\\," contained syn match p6EscDollar display "\\\$" contained syn match p6EscCloseCurly display "\\}" contained syn match p6EscCloseBracket display "\\\]" contained syn match p6EscOctOld display "\\\d\{1,3}" contained syn match p6EscNull display "\\0\d\@!" contained syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence syn match p6EscOpenCurly display "\\{" contained syn match p6EscHash display "\\#" contained syn match p6EscBackSlash display "\\\\" contained syn region p6QQSequence \ matchgroup=p6Escape \ start="\[" \ skip="\[[^\]]*]" \ end="]" \ contained \ transparent \ contains=@p6Interp_qq syn match p6CodePoint display "\%(\d\+\|\S\)" contained syn region p6CodePoint \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn match p6HexSequence display "\x\+" contained syn region p6HexSequence \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn match p6OctSequence display "\o\+" contained syn region p6OctSequence \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn region p6Adverb \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" \ start="\%(\s\|[<+~=]\)\@\|[-=]\{1,2}>\@!\)\@!" \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" \ skip="\\\@" \ end=">" \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle syn region p6InnerAnglesOne \ matchgroup=p6StringAngle \ start="<" \ skip="\\\@" \ end=">" \ transparent \ contained \ contains=p6InnerAnglesOne syn region p6StringAngles \ matchgroup=p6Quote \ start="<<=\@!" \ skip="\\\@" \ end=">>" \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ syn region p6InnerAnglesTwo \ matchgroup=p6StringAngles \ start="<<" \ skip="\\\@" \ end=">>" \ transparent \ contained \ contains=p6InnerAnglesTwo syn region p6StringFrench \ matchgroup=p6Quote \ start="«" \ skip="\\\@" nextgroup=p6QPairs skipwhite skipempty syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*" if exists("perl6_embedded_pir") syn include @p6PIR syntax/pir.vim endif let s:delims = [ \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@", "p6EscCloseAngle", "\\%(\\\\\\@\\|<[^>]*>\\)"], \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@>", "p6EscCloseAngle", "\\%(\\\\\\@>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"]) call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"]) endif if !exists("perl6_extended_q") && !exists("perl6_extended_all") for [start_delim, end_delim, end_group, skip] in s:delims exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained" endfor if exists("perl6_embedded_pir") for [start_delim, end_delim, end_group, skip] in s:delims exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained" endfor endif else let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%(" let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<=" let s:adverbs = [ \ ["s", "scalar"], \ ["a", "array"], \ ["h", "hash"], \ ["f", "function"], \ ["c", "closure"], \ ["b", "backslash"], \ ["w", "words"], \ ["ww", "quotewords"], \ ["x", "exec"], \ ] let s:q_adverbs = [ \ ["q", "single"], \ ["qq", "double"], \ ] for [start_delim, end_delim, end_group, skip] in s:delims exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained" exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained" exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained" for [short, long] in s:adverbs exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" for [q_short, q_long] in s:q_adverbs exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained" endfor exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" for [short2, long2] in s:adverbs exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained" for [q_short2, q_long2] in s:q_adverbs exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained" endfor exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained" exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained" endfor endfor endfor unlet s:before s:after s:adverbs s:q_adverbs endif unlet s:delims syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" syn match p6Operator display ":\@" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>" exec "syn match p6HyperOp display \"»" .s:infix."»\\?\"" exec "syn match p6HyperOp display \"«\\?".s:infix."«\"" exec "syn match p6HyperOp display \"»" .s:infix."«\"" exec "syn match p6HyperOp display \"«" .s:infix. "»\"" exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\"" exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\"" exec "syn match p6HyperOp display \">>" .s:infix."<<\"" exec "syn match p6HyperOp display \"<<" .s:infix.">>\"" unlet s:infix syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained syn region p6RegexBlock \ matchgroup=p6Normal \ start="{" \ end="}" \ contained \ contains=@p6Regexen,@p6Variables syn cluster p6Regexen \ add=p6RxMeta \ add=p6RxEscape \ add=p6EscHex \ add=p6EscOct \ add=p6EscNull \ add=p6RxAnchor \ add=p6RxCapture \ add=p6RxGroup \ add=p6RxAlternation \ add=p6RxAdverb \ add=p6RxAdverbArg \ add=p6RxStorage \ add=p6RxAssertion \ add=p6RxQuoteWords \ add=p6RxClosure \ add=p6RxStringSQ \ add=p6RxStringDQ \ add=p6Comment syn match p6RxMeta display contained ".\%(\k\|\s\)\@" \ contained \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall syn region p6RxAssertCall \ matchgroup=p6Normal \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@=" \ end=")\@<=" \ contained \ contains=TOP syn region p6RxCharClass \ matchgroup=p6StringSpecial2 \ start="\%(<[-!+?]\?\)\@<=\[" \ skip="\\]" \ end="]" \ contained \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull syn region p6RxQuoteWords \ matchgroup=p6StringSpecial2 \ start="< " \ end=">" \ contained syn region p6RxAdverb \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6RxAdverbArg \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=(" \ skip="([^)]*)" \ end=")" \ contained \ contains=TOP syn region p6RxStorage \ matchgroup=p6Operator \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" \ end="$" \ contains=TOP \ contained syn cluster p6RegexP5Base \ add=p6RxP5Escape \ add=p6RxP5Oct \ add=p6RxP5Hex \ add=p6RxP5EscMeta \ add=p6RxP5CodePoint \ add=p6RxP5Prop syn cluster p6RegexP5 \ add=@p6RegexP5Base \ add=p6RxP5Quantifier \ add=p6RxP5Meta \ add=p6RxP5QuoteMeta \ add=p6RxP5ParenMod \ add=p6RxP5Verb \ add=p6RxP5Count \ add=p6RxP5Named \ add=p6RxP5ReadRef \ add=p6RxP5WriteRef \ add=p6RxP5CharClass \ add=p6RxP5Anchor syn cluster p6RegexP5Class \ add=@p6RegexP5Base \ add=p6RxP5Posix \ add=p6RxP5Range syn match p6RxP5Escape display contained "\\\S" syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId syn match p6RxP5CPId display contained "\S" syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq syn match p6RxP5OctSeq display contained "\o\{1,3}" syn match p6RxP5Anchor display contained "[\^$]" syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq syn match p6RxP5HexSeq display contained "\x\{1,2}" syn region p6RxP5HexSeq \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn region p6RxP5Named \ matchgroup=p6RxP5Escape \ start="\%(\\N\)\@<={" \ end="}" \ contained syn match p6RxP5Quantifier display contained "\%([+*]\|(\@" \ contained syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId syn match p6RxP5WriteRefId display contained "\d\+" syn region p6RxP5WriteRefId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId syn match p6RxP5PropId display contained "\a" syn region p6RxP5PropId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Meta display contained "[(|).]" syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" syn match p6RxP5Mod display contained "?-\?[impsx]\+" syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)" syn match p6RxP5Mod display contained "?(DEFINE)" syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef syn match p6RxP5ModDef display contained "\h\w*" syn region p6RxP5ModName \ matchgroup=p6StringSpecial \ start="?'" \ end="'" \ contained syn region p6RxP5ModName \ matchgroup=p6StringSpecial \ start="?P\?<" \ end=">" \ contained syn region p6RxP5Code \ matchgroup=p6StringSpecial \ start="??\?{" \ end="})\@=" \ contained \ contains=TOP syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId syn region p6RxP5CountId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" syn region p6RxP5QuoteMeta \ matchgroup=p6RxP5Escape \ start="\\Q" \ end="\\E" \ contained \ contains=@p6Variables,p6EscBackSlash syn region p6RxP5CharClass \ matchgroup=p6StringSpecial \ start="\[\^\?" \ skip="\\]" \ end="]" \ contained \ contains=@p6RegexP5Class syn region p6RxP5Posix \ matchgroup=p6RxP5Escape \ start="\[:" \ end=":]" \ contained syn match p6RxP5Range display contained "-" syn region p6RxStringSQ \ matchgroup=p6Quote \ start="'" \ skip="\\\@\@!>\@!" \ skip="\\>" \ end=">" \ contains=@p6Regexen,@p6Variables syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" \ skip="\\>" \ end=">" \ contains=@p6Regexen,@p6Variables syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" \ skip="\\>" \ end=">" \ contains=@p6RegexP5,p6Variables syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@]*>" \ end=">" \ matchgroup=p6Error \ start="^#<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@]\|>>\@!\)*>>" \ end=">>" \ matchgroup=p6Error \ start="^#<<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@]\|>\%(>>\)\@!\)*>>>" \ end=">>>" \ matchgroup=p6Error \ start="^#<<<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrCodeType \ keepend syn region p6PodAbbrCodeType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodName,p6PodAbbrCode syn region p6PodAbbrCode \ start="^" \ end="^\ze\%(\s*$\|=\K\)" \ contained syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\zecomment\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrCommentType \ keepend syn region p6PodAbbrCommentType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodComment,p6PodAbbrNoCode syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrType \ keepend syn region p6PodAbbrType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodName,p6PodAbbr syn region p6PodAbbr \ start="^" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=@p6PodFormat,p6PodImplicitCode syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\zeEND\>" \ end="\%$" \ contains=p6PodAbbrEOFType \ keepend syn region p6PodAbbrEOFType \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodName,p6PodAbbrEOF syn region p6PodAbbrEOF \ start="^" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode syn region p6PodDirectRegion \ matchgroup=p6PodPrefix \ start="^=\%(config\|use\)\>" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contains=p6PodDirectArgRegion \ keepend syn region p6PodDirectArgRegion \ matchgroup=p6PodType \ start="\S\+" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=p6PodDirectConfigRegion syn region p6PodDirectConfigRegion \ start="" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=@p6PodConfig syn region p6PodDirectRegion \ matchgroup=p6PodPrefix \ start="^=encoding\>" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contains=p6PodEncodingArgRegion \ keepend syn region p6PodEncodingArgRegion \ matchgroup=p6PodName \ start="\S\+" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaNoCodeTypeRegion \ keepend \ extend syn region p6PodParaNoCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodParaNoCode,p6PodParaConfigRegion syn region p6PodParaConfigRegion \ start="" \ end="^\ze\%([^=]\|=\k\@\ze\s*code\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaCodeTypeRegion \ keepend \ extend syn region p6PodParaCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodParaCode,p6PodParaConfigRegion syn region p6PodParaCode \ start="^[^=]" \ end="^\ze\%(\s*$\|=\K\)" \ contained syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaTypeRegion \ keepend \ extend syn region p6PodParaTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodPara,p6PodParaConfigRegion syn region p6PodPara \ start="^[^=]" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=@p6PodFormat,p6PodImplicitCode syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>\ze\s\+END\>" \ end="\%$" \ contains=p6PodParaEOFTypeRegion \ keepend \ extend syn region p6PodParaEOFTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodParaEOF,p6PodParaConfigRegion syn region p6PodParaEOF \ start="^[^=]" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>" \ end="^=end\>" \ contains=p6PodDelimNoCodeTypeRegion \ keepend \ extend syn region p6PodDelimNoCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion syn region p6PodDelimConfigRegion \ start="" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=@p6PodConfig syn region p6PodDelimNoCode \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s*code\>" \ end="^=end\>" \ contains=p6PodDelimCodeTypeRegion \ keepend \ extend syn region p6PodDelimCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelimCode,p6PodDelimConfigRegion syn region p6PodDelimCode \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" \ end="^=end\>" \ contains=p6PodDelimTypeRegion \ keepend \ extend syn region p6PodDelimTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelim,p6PodDelimConfigRegion syn region p6PodDelim \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s\+END\>" \ end="\%$" \ contains=p6PodDelimEOFTypeRegion \ extend syn region p6PodDelimEOFTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodDelimEOF,p6PodDelimConfigRegion syn region p6PodDelimEOF \ start="^" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode syn cluster p6PodConfig \ add=p6PodConfigOperator \ add=p6PodExtraConfig \ add=p6StringAuto \ add=p6PodAutoQuote \ add=p6StringSQ syn region p6PodParens \ start="(" \ end=")" \ contained \ contains=p6Number,p6StringSQ syn match p6PodAutoQuote display contained "=>" syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle syn match p6PodExtraConfig display contained "^=" syn match p6PodVerticalBar display contained "|" syn match p6PodColon display contained ":" syn match p6PodSemicolon display contained ";" syn match p6PodComma display contained "," syn match p6PodImplicitCode display contained "^\s.*" syn region p6PodDelimEndRegion \ matchgroup=p6PodType \ start="\%(^=end\>\)\@<=" \ end="\K\k*" syn cluster p6PodNestedBlocks \ add=p6PodAbbrRegion \ add=p6PodDirectRegion \ add=p6PodParaRegion \ add=p6PodDelimRegion \ add=p6PodDelimEndRegion syn cluster p6PodFormat \ add=p6PodFormatOne \ add=p6PodFormatTwo \ add=p6PodFormatThree \ add=p6PodFormatFrench syn region p6PodFormatAnglesOne \ matchgroup=p6PodFormat \ start="<" \ skip="<[^>]*>" \ end=">" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne syn region p6PodFormatAnglesTwo \ matchgroup=p6PodFormat \ start="<<" \ skip="<<[^>]*>>" \ end=">>" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo syn region p6PodFormatAnglesThree \ matchgroup=p6PodFormat \ start="<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree syn region p6PodFormatAnglesFrench \ matchgroup=p6PodFormat \ start="«" \ skip="«[^»]*»" \ end="»" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="\u<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="\u<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="\u<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="\u«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="[CV]<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="[CV]<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="[CV]<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="[CV]«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="L<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="L<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="L<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="L«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="E<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="E<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="E<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="E«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="M<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="M<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="M<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="M«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="D<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="D<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="D<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="D«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="X<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="X<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="X<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="X«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma hi def link p6EscOctOld p6Error hi def link p6PackageTwigil p6Twigil hi def link p6StringAngle p6String hi def link p6StringFrench p6String hi def link p6StringAngles p6String hi def link p6StringSQ p6String hi def link p6StringDQ p6String hi def link p6StringQ p6String hi def link p6RxStringSQ p6String hi def link p6RxStringDQ p6String hi def link p6Substitution p6String hi def link p6Transliteration p6String hi def link p6StringAuto p6String hi def link p6StringP5Auto p6String hi def link p6Key p6String hi def link p6Match p6String hi def link p6RegexBlock p6String hi def link p6RxP5CharClass p6String hi def link p6RxP5QuoteMeta p6String hi def link p6RxCharClass p6String hi def link p6RxQuoteWords p6String hi def link p6ReduceOp p6Operator hi def link p6ReverseCrossOp p6Operator hi def link p6HyperOp p6Operator hi def link p6QuoteQ p6Operator hi def link p6RxRange p6StringSpecial hi def link p6RxAnchor p6StringSpecial hi def link p6RxP5Anchor p6StringSpecial hi def link p6CodePoint p6StringSpecial hi def link p6RxMeta p6StringSpecial hi def link p6RxP5Range p6StringSpecial hi def link p6RxP5CPId p6StringSpecial hi def link p6RxP5Posix p6StringSpecial hi def link p6RxP5Mod p6StringSpecial hi def link p6RxP5HexSeq p6StringSpecial hi def link p6RxP5OctSeq p6StringSpecial hi def link p6RxP5WriteRefId p6StringSpecial hi def link p6HexSequence p6StringSpecial hi def link p6OctSequence p6StringSpecial hi def link p6RxP5Named p6StringSpecial hi def link p6RxP5PropId p6StringSpecial hi def link p6RxP5Quantifier p6StringSpecial hi def link p6RxP5CountId p6StringSpecial hi def link p6RxP5Verb p6StringSpecial hi def link p6Escape p6StringSpecial2 hi def link p6EscNull p6StringSpecial2 hi def link p6EscHash p6StringSpecial2 hi def link p6EscQQ p6StringSpecial2 hi def link p6EscQuote p6StringSpecial2 hi def link p6EscDoubleQuote p6StringSpecial2 hi def link p6EscBackTick p6StringSpecial2 hi def link p6EscForwardSlash p6StringSpecial2 hi def link p6EscVerticalBar p6StringSpecial2 hi def link p6EscExclamation p6StringSpecial2 hi def link p6EscDollar p6StringSpecial2 hi def link p6EscOpenCurly p6StringSpecial2 hi def link p6EscCloseCurly p6StringSpecial2 hi def link p6EscCloseBracket p6StringSpecial2 hi def link p6EscCloseAngle p6StringSpecial2 hi def link p6EscCloseFrench p6StringSpecial2 hi def link p6EscBackSlash p6StringSpecial2 hi def link p6RxEscape p6StringSpecial2 hi def link p6RxCapture p6StringSpecial2 hi def link p6RxAlternation p6StringSpecial2 hi def link p6RxP5 p6StringSpecial2 hi def link p6RxP5ReadRef p6StringSpecial2 hi def link p6RxP5Oct p6StringSpecial2 hi def link p6RxP5Hex p6StringSpecial2 hi def link p6RxP5EscMeta p6StringSpecial2 hi def link p6RxP5Meta p6StringSpecial2 hi def link p6RxP5Escape p6StringSpecial2 hi def link p6RxP5CodePoint p6StringSpecial2 hi def link p6RxP5WriteRef p6StringSpecial2 hi def link p6RxP5Prop p6StringSpecial2 hi def link p6Property Tag hi def link p6Attention Todo hi def link p6Type Type hi def link p6Error Error hi def link p6BlockLabel Label hi def link p6Float Float hi def link p6Normal Normal hi def link p6Package Normal hi def link p6PackageScope Normal hi def link p6Number Number hi def link p6VersionNum Number hi def link p6String String hi def link p6Repeat Repeat hi def link p6Keyword Keyword hi def link p6Pragma Keyword hi def link p6Module Keyword hi def link p6DeclareRoutine Keyword hi def link p6VarStorage Special hi def link p6FlowControl Special hi def link p6NumberBase Special hi def link p6Twigil Special hi def link p6StringSpecial2 Special hi def link p6VersionDot Special hi def link p6Comment Comment hi def link p6Include Include hi def link p6Shebang PreProc hi def link p6ClosureTrait PreProc hi def link p6Routine Function hi def link p6Operator Operator hi def link p6Version Operator hi def link p6Context Operator hi def link p6Quote Delimiter hi def link p6TypeConstraint PreCondit hi def link p6Exception Exception hi def link p6Placeholder Identifier hi def link p6Variable Identifier hi def link p6VarSlash Identifier hi def link p6VarNum Identifier hi def link p6VarExclam Identifier hi def link p6VarMatch Identifier hi def link p6VarName Identifier hi def link p6MatchVar Identifier hi def link p6RxP5ReadRefId Identifier hi def link p6RxP5ModDef Identifier hi def link p6RxP5ModName Identifier hi def link p6Conditional Conditional hi def link p6StringSpecial SpecialChar hi def link p6PodAbbr p6Pod hi def link p6PodAbbrEOF p6Pod hi def link p6PodAbbrNoCode p6Pod hi def link p6PodAbbrCode p6PodCode hi def link p6PodPara p6Pod hi def link p6PodParaEOF p6Pod hi def link p6PodParaNoCode p6Pod hi def link p6PodParaCode p6PodCode hi def link p6PodDelim p6Pod hi def link p6PodDelimEOF p6Pod hi def link p6PodDelimNoCode p6Pod hi def link p6PodDelimCode p6PodCode hi def link p6PodImplicitCode p6PodCode hi def link p6PodExtraConfig p6PodPrefix hi def link p6PodVerticalBar p6PodFormatCode hi def link p6PodColon p6PodFormatCode hi def link p6PodSemicolon p6PodFormatCode hi def link p6PodComma p6PodFormatCode hi def link p6PodFormatOne p6PodFormat hi def link p6PodFormatTwo p6PodFormat hi def link p6PodFormatThree p6PodFormat hi def link p6PodFormatFrench p6PodFormat hi def link p6PodType Type hi def link p6PodConfigOption String hi def link p6PodCode PreProc hi def link p6Pod Comment hi def link p6PodComment Comment hi def link p6PodAutoQuote Operator hi def link p6PodConfigOperator Operator hi def link p6PodPrefix Statement hi def link p6PodName Identifier hi def link p6PodFormatCode SpecialChar hi def link p6PodFormat SpecialComment syn sync fromstart setlocal foldmethod=syntax let b:current_syntax = "perl6" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif let b:current_syntax = "pf" setlocal foldmethod=syntax syn iskeyword @,48-57,_,-,+ syn sync fromstart syn cluster pfNotLS contains=pfTodo,pfVarAssign syn keyword pfCmd anchor antispoof block include match pass queue syn keyword pfCmd queue set table syn match pfCmd /^\s*load\sanchor\>/ syn keyword pfTodo TODO XXX contained syn keyword pfWildAddr any no-route urpf-failed self syn match pfComment /#.*$/ contains=pfTodo syn match pfCont /\\$/ syn match pfErrClose /}/ syn match pfIPv4 /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match pfIPv6 /[a-fA-F0-9:]*::[a-fA-F0-9:.]*/ syn match pfIPv6 /[a-fA-F0-9:]\+:[a-fA-F0-9:]\+:[a-fA-F0-9:.]\+/ syn match pfNetmask /\/\d\+/ syn match pfNum /[a-zA-Z0-9_:.]\@/ syn match pfVar /$[a-zA-Z][a-zA-Z0-9_]*/ syn match pfVarAssign /^\s*[a-zA-Z][a-zA-Z0-9_]*\s*=/me=e-1 syn region pfFold1 start=/^#\{1}>/ end=/^#\{1,3}>/me=s-1 transparent fold syn region pfFold2 start=/^#\{2}>/ end=/^#\{2,3}>/me=s-1 transparent fold syn region pfFold3 start=/^#\{3}>/ end=/^#\{3}>/me=s-1 transparent fold syn region pfList start=/{/ end=/}/ transparent contains=ALLBUT,pfErrClose,@pfNotLS syn region pfString start=/"/ skip=/\\"/ end=/"/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar syn region pfString start=/'/ skip=/\\'/ end=/'/ contains=pfIPv4,pfIPv6,pfNetmask,pfTable,pfVar hi def link pfCmd Statement hi def link pfComment Comment hi def link pfCont Statement hi def link pfErrClose Error hi def link pfIPv4 Type hi def link pfIPv6 Type hi def link pfNetmask Constant hi def link pfNum Constant hi def link pfService Constant hi def link pfString String hi def link pfTable Identifier hi def link pfTodo Todo hi def link pfVar Identifier hi def link pfVarAssign Identifier hi def link pfWildAddr Type syn keyword pfService 802-11-iapp syn keyword pfService Microsoft-SQL-Monitor syn keyword pfService Microsoft-SQL-Server syn keyword pfService NeXTStep syn keyword pfService NextStep syn keyword pfService afpovertcp syn keyword pfService afs3-bos syn keyword pfService afs3-callback syn keyword pfService afs3-errors syn keyword pfService afs3-fileserver syn keyword pfService afs3-kaserver syn keyword pfService afs3-prserver syn keyword pfService afs3-rmtsys syn keyword pfService afs3-update syn keyword pfService afs3-vlserver syn keyword pfService afs3-volser syn keyword pfService amt-redir-tcp syn keyword pfService amt-redir-tls syn keyword pfService amt-soap-http syn keyword pfService amt-soap-https syn keyword pfService asf-rmcp syn keyword pfService at-echo syn keyword pfService at-nbp syn keyword pfService at-rtmp syn keyword pfService at-zis syn keyword pfService auth syn keyword pfService authentication syn keyword pfService bfd-control syn keyword pfService bfd-echo syn keyword pfService bftp syn keyword pfService bgp syn keyword pfService bgpd syn keyword pfService biff syn keyword pfService bootpc syn keyword pfService bootps syn keyword pfService canna syn keyword pfService cddb syn keyword pfService cddbp syn keyword pfService chargen syn keyword pfService chat syn keyword pfService cmd syn keyword pfService cmip-agent syn keyword pfService cmip-man syn keyword pfService comsat syn keyword pfService conference syn keyword pfService conserver syn keyword pfService courier syn keyword pfService csnet-ns syn keyword pfService cso-ns syn keyword pfService cvspserver syn keyword pfService daap syn keyword pfService datametrics syn keyword pfService daytime syn keyword pfService dhcpd-sync syn keyword pfService dhcpv6-client syn keyword pfService dhcpv6-server syn keyword pfService discard syn keyword pfService domain syn keyword pfService echo syn keyword pfService efs syn keyword pfService eklogin syn keyword pfService ekshell syn keyword pfService ekshell2 syn keyword pfService epmap syn keyword pfService eppc syn keyword pfService exec syn keyword pfService finger syn keyword pfService ftp syn keyword pfService ftp-data syn keyword pfService git syn keyword pfService gopher syn keyword pfService gre-in-udp syn keyword pfService gre-udp-dtls syn keyword pfService hostname syn keyword pfService hostnames syn keyword pfService hprop syn keyword pfService http syn keyword pfService https syn keyword pfService hunt syn keyword pfService hylafax syn keyword pfService iapp syn keyword pfService icb syn keyword pfService ident syn keyword pfService imap syn keyword pfService imap2 syn keyword pfService imap3 syn keyword pfService imaps syn keyword pfService ingreslock syn keyword pfService ipp syn keyword pfService iprop syn keyword pfService ipsec-msft syn keyword pfService ipsec-nat-t syn keyword pfService ipx syn keyword pfService irc syn keyword pfService isakmp syn keyword pfService iscsi syn keyword pfService isisd syn keyword pfService iso-tsap syn keyword pfService kauth syn keyword pfService kdc syn keyword pfService kerberos syn keyword pfService kerberos-adm syn keyword pfService kerberos-iv syn keyword pfService kerberos-sec syn keyword pfService kerberos_master syn keyword pfService kf syn keyword pfService kip syn keyword pfService klogin syn keyword pfService kpasswd syn keyword pfService kpop syn keyword pfService krb524 syn keyword pfService krb_prop syn keyword pfService krbupdate syn keyword pfService krcmd syn keyword pfService kreg syn keyword pfService kshell syn keyword pfService kx syn keyword pfService l2tp syn keyword pfService ldap syn keyword pfService ldaps syn keyword pfService ldp syn keyword pfService link syn keyword pfService login syn keyword pfService mail syn keyword pfService mdns syn keyword pfService mdnsresponder syn keyword pfService microsoft-ds syn keyword pfService ms-sql-m syn keyword pfService ms-sql-s syn keyword pfService msa syn keyword pfService msp syn keyword pfService mtp syn keyword pfService mysql syn keyword pfService name syn keyword pfService nameserver syn keyword pfService netbios-dgm syn keyword pfService netbios-ns syn keyword pfService netbios-ssn syn keyword pfService netnews syn keyword pfService netplan syn keyword pfService netrjs syn keyword pfService netstat syn keyword pfService netwall syn keyword pfService newdate syn keyword pfService nextstep syn keyword pfService nfs syn keyword pfService nfsd syn keyword pfService nicname syn keyword pfService nnsp syn keyword pfService nntp syn keyword pfService ntalk syn keyword pfService ntp syn keyword pfService null syn keyword pfService openwebnet syn keyword pfService ospf6d syn keyword pfService ospfapi syn keyword pfService ospfd syn keyword pfService photuris syn keyword pfService pop2 syn keyword pfService pop3 syn keyword pfService pop3pw syn keyword pfService pop3s syn keyword pfService poppassd syn keyword pfService portmap syn keyword pfService postgresql syn keyword pfService postoffice syn keyword pfService pptp syn keyword pfService presence syn keyword pfService printer syn keyword pfService prospero syn keyword pfService prospero-np syn keyword pfService puppet syn keyword pfService pwdgen syn keyword pfService qotd syn keyword pfService quote syn keyword pfService radacct syn keyword pfService radius syn keyword pfService radius-acct syn keyword pfService rdp syn keyword pfService readnews syn keyword pfService remotefs syn keyword pfService resource syn keyword pfService rfb syn keyword pfService rfe syn keyword pfService rfs syn keyword pfService rfs_server syn keyword pfService ripd syn keyword pfService ripng syn keyword pfService rje syn keyword pfService rkinit syn keyword pfService rlp syn keyword pfService routed syn keyword pfService router syn keyword pfService rpc syn keyword pfService rpcbind syn keyword pfService rsync syn keyword pfService rtelnet syn keyword pfService rtsp syn keyword pfService sa-msg-port syn keyword pfService sane-port syn keyword pfService sftp syn keyword pfService shell syn keyword pfService sieve syn keyword pfService silc syn keyword pfService sink syn keyword pfService sip syn keyword pfService smtp syn keyword pfService smtps syn keyword pfService smux syn keyword pfService snmp syn keyword pfService snmp-trap syn keyword pfService snmptrap syn keyword pfService snpp syn keyword pfService socks syn keyword pfService source syn keyword pfService spamd syn keyword pfService spamd-cfg syn keyword pfService spamd-sync syn keyword pfService spooler syn keyword pfService spop3 syn keyword pfService ssdp syn keyword pfService ssh syn keyword pfService submission syn keyword pfService sunrpc syn keyword pfService supdup syn keyword pfService supfiledbg syn keyword pfService supfilesrv syn keyword pfService support syn keyword pfService svn syn keyword pfService svrloc syn keyword pfService swat syn keyword pfService syslog syn keyword pfService syslog-tls syn keyword pfService systat syn keyword pfService tacacs syn keyword pfService tacas+ syn keyword pfService talk syn keyword pfService tap syn keyword pfService tcpmux syn keyword pfService telnet syn keyword pfService tempo syn keyword pfService tftp syn keyword pfService time syn keyword pfService timed syn keyword pfService timeserver syn keyword pfService timserver syn keyword pfService tsap syn keyword pfService ttylink syn keyword pfService ttytst syn keyword pfService ub-dns-control syn keyword pfService ulistserv syn keyword pfService untp syn keyword pfService usenet syn keyword pfService users syn keyword pfService uucp syn keyword pfService uucp-path syn keyword pfService uucpd syn keyword pfService vnc syn keyword pfService vxlan syn keyword pfService wais syn keyword pfService webster syn keyword pfService who syn keyword pfService whod syn keyword pfService whois syn keyword pfService www syn keyword pfService x400 syn keyword pfService x400-snd syn keyword pfService xcept syn keyword pfService xdmcp syn keyword pfService xmpp-bosh syn keyword pfService xmpp-client syn keyword pfService xmpp-server syn keyword pfService z3950 syn keyword pfService zabbix-agent syn keyword pfService zabbix-trapper syn keyword pfService zebra syn keyword pfService zebrasrv if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,- syntax case match syntax sync minlines=1 syntax keyword pfmainConf 2bounce_notice_recipient syntax keyword pfmainConf access_map_defer_code syntax keyword pfmainConf access_map_reject_code syntax keyword pfmainConf address_verify_cache_cleanup_interval syntax keyword pfmainConf address_verify_default_transport syntax keyword pfmainConf address_verify_local_transport syntax keyword pfmainConf address_verify_map syntax keyword pfmainConf address_verify_negative_cache syntax keyword pfmainConf address_verify_negative_expire_time syntax keyword pfmainConf address_verify_negative_refresh_time syntax keyword pfmainConf address_verify_poll_count syntax keyword pfmainConf address_verify_poll_delay syntax keyword pfmainConf address_verify_positive_expire_time syntax keyword pfmainConf address_verify_positive_refresh_time syntax keyword pfmainConf address_verify_relay_transport syntax keyword pfmainConf address_verify_relayhost syntax keyword pfmainConf address_verify_sender syntax keyword pfmainConf address_verify_sender_dependent_default_transport_maps syntax keyword pfmainConf address_verify_sender_dependent_relayhost_maps syntax keyword pfmainConf address_verify_sender_ttl syntax keyword pfmainConf address_verify_service_name syntax keyword pfmainConf address_verify_transport_maps syntax keyword pfmainConf address_verify_virtual_transport syntax keyword pfmainConf alias_database syntax keyword pfmainConf alias_maps syntax keyword pfmainConf allow_mail_to_commands syntax keyword pfmainConf allow_mail_to_files syntax keyword pfmainConf allow_min_user syntax keyword pfmainConf allow_percent_hack syntax keyword pfmainConf allow_untrusted_routing syntax keyword pfmainConf alternate_config_directories syntax keyword pfmainConf always_add_missing_headers syntax keyword pfmainConf always_bcc syntax keyword pfmainConf anvil_rate_time_unit syntax keyword pfmainConf anvil_status_update_time syntax keyword pfmainConf append_at_myorigin syntax keyword pfmainConf append_dot_mydomain syntax keyword pfmainConf application_event_drain_time syntax keyword pfmainConf authorized_flush_users syntax keyword pfmainConf authorized_mailq_users syntax keyword pfmainConf authorized_submit_users syntax keyword pfmainConf authorized_verp_clients syntax keyword pfmainConf backwards_bounce_logfile_compatibility syntax keyword pfmainConf berkeley_db_create_buffer_size syntax keyword pfmainConf berkeley_db_read_buffer_size syntax keyword pfmainConf best_mx_transport syntax keyword pfmainConf biff syntax keyword pfmainConf body_checks syntax keyword pfmainConf body_checks_size_limit syntax keyword pfmainConf bounce_notice_recipient syntax keyword pfmainConf bounce_queue_lifetime syntax keyword pfmainConf bounce_service_name syntax keyword pfmainConf bounce_size_limit syntax keyword pfmainConf bounce_template_file syntax keyword pfmainConf broken_sasl_auth_clients syntax keyword pfmainConf canonical_classes syntax keyword pfmainConf canonical_maps syntax keyword pfmainConf cleanup_service_name syntax keyword pfmainConf command_directory syntax keyword pfmainConf command_execution_directory syntax keyword pfmainConf command_expansion_filter syntax keyword pfmainConf command_time_limit syntax keyword pfmainConf compatibility_level syntax keyword pfmainConf config_directory syntax keyword pfmainConf confirm_delay_cleared syntax keyword pfmainConf connection_cache_protocol_timeout syntax keyword pfmainConf connection_cache_service_name syntax keyword pfmainConf connection_cache_status_update_time syntax keyword pfmainConf connection_cache_ttl_limit syntax keyword pfmainConf content_filter syntax keyword pfmainConf cyrus_sasl_config_path syntax keyword pfmainConf daemon_directory syntax keyword pfmainConf daemon_table_open_error_is_fatal syntax keyword pfmainConf daemon_timeout syntax keyword pfmainConf data_directory syntax keyword pfmainConf debug_peer_level syntax keyword pfmainConf debug_peer_list syntax keyword pfmainConf debugger_command syntax keyword pfmainConf default_database_type syntax keyword pfmainConf default_delivery_slot_cost syntax keyword pfmainConf default_delivery_slot_discount syntax keyword pfmainConf default_delivery_slot_loan syntax keyword pfmainConf default_delivery_status_filter syntax keyword pfmainConf default_destination_concurrency_failed_cohort_limit syntax keyword pfmainConf default_destination_concurrency_limit syntax keyword pfmainConf default_destination_concurrency_negative_feedback syntax keyword pfmainConf default_destination_concurrency_positive_feedback syntax keyword pfmainConf default_destination_rate_delay syntax keyword pfmainConf default_destination_recipient_limit syntax keyword pfmainConf default_extra_recipient_limit syntax keyword pfmainConf default_filter_nexthop syntax keyword pfmainConf default_minimum_delivery_slots syntax keyword pfmainConf default_privs syntax keyword pfmainConf default_process_limit syntax keyword pfmainConf default_rbl_reply syntax keyword pfmainConf default_recipient_limit syntax keyword pfmainConf default_recipient_refill_delay syntax keyword pfmainConf default_recipient_refill_limit syntax keyword pfmainConf default_transport syntax keyword pfmainConf default_verp_delimiters syntax keyword pfmainConf defer_code syntax keyword pfmainConf defer_service_name syntax keyword pfmainConf defer_transports syntax keyword pfmainConf delay_logging_resolution_limit syntax keyword pfmainConf delay_notice_recipient syntax keyword pfmainConf delay_warning_time syntax keyword pfmainConf deliver_lock_attempts syntax keyword pfmainConf deliver_lock_delay syntax keyword pfmainConf destination_concurrency_feedback_debug syntax keyword pfmainConf detect_8bit_encoding_header syntax keyword pfmainConf disable_dns_lookups syntax keyword pfmainConf disable_mime_input_processing syntax keyword pfmainConf disable_mime_output_conversion syntax keyword pfmainConf disable_verp_bounces syntax keyword pfmainConf disable_vrfy_command syntax keyword pfmainConf dnsblog_reply_delay syntax keyword pfmainConf dnsblog_service_name syntax keyword pfmainConf dont_remove syntax keyword pfmainConf double_bounce_sender syntax keyword pfmainConf duplicate_filter_limit syntax keyword pfmainConf empty_address_default_transport_maps_lookup_key syntax keyword pfmainConf empty_address_recipient syntax keyword pfmainConf empty_address_relayhost_maps_lookup_key syntax keyword pfmainConf enable_errors_to syntax keyword pfmainConf enable_long_queue_ids syntax keyword pfmainConf enable_original_recipient syntax keyword pfmainConf error_notice_recipient syntax keyword pfmainConf error_service_name syntax keyword pfmainConf execution_directory_expansion_filter syntax keyword pfmainConf expand_owner_alias syntax keyword pfmainConf export_environment syntax keyword pfmainConf extract_recipient_limit syntax keyword pfmainConf fallback_relay syntax keyword pfmainConf fallback_transport syntax keyword pfmainConf fallback_transport_maps syntax keyword pfmainConf fast_flush_domains syntax keyword pfmainConf fast_flush_purge_time syntax keyword pfmainConf fast_flush_refresh_time syntax keyword pfmainConf fault_injection_code syntax keyword pfmainConf flush_service_name syntax keyword pfmainConf fork_attempts syntax keyword pfmainConf fork_delay syntax keyword pfmainConf forward_expansion_filter syntax keyword pfmainConf forward_path syntax keyword pfmainConf frozen_delivered_to syntax keyword pfmainConf hash_queue_depth syntax keyword pfmainConf hash_queue_names syntax keyword pfmainConf header_address_token_limit syntax keyword pfmainConf header_checks syntax keyword pfmainConf header_size_limit syntax keyword pfmainConf helpful_warnings syntax keyword pfmainConf home_mailbox syntax keyword pfmainConf hopcount_limit syntax keyword pfmainConf html_directory syntax keyword pfmainConf ignore_mx_lookup_error syntax keyword pfmainConf import_environment syntax keyword pfmainConf in_flow_delay syntax keyword pfmainConf inet_interfaces syntax keyword pfmainConf inet_protocols syntax keyword pfmainConf initial_destination_concurrency syntax keyword pfmainConf internal_mail_filter_classes syntax keyword pfmainConf invalid_hostname_reject_code syntax keyword pfmainConf ipc_idle syntax keyword pfmainConf ipc_timeout syntax keyword pfmainConf ipc_ttl syntax keyword pfmainConf line_length_limit syntax keyword pfmainConf lmdb_map_size syntax keyword pfmainConf lmtp_address_preference syntax keyword pfmainConf lmtp_address_verify_target syntax keyword pfmainConf lmtp_assume_final syntax keyword pfmainConf lmtp_bind_address syntax keyword pfmainConf lmtp_bind_address6 syntax keyword pfmainConf lmtp_body_checks syntax keyword pfmainConf lmtp_cache_connection syntax keyword pfmainConf lmtp_cname_overrides_servername syntax keyword pfmainConf lmtp_connect_timeout syntax keyword pfmainConf lmtp_connection_cache_destinations syntax keyword pfmainConf lmtp_connection_cache_on_demand syntax keyword pfmainConf lmtp_connection_cache_time_limit syntax keyword pfmainConf lmtp_connection_reuse_count_limit syntax keyword pfmainConf lmtp_connection_reuse_time_limit syntax keyword pfmainConf lmtp_data_done_timeout syntax keyword pfmainConf lmtp_data_init_timeout syntax keyword pfmainConf lmtp_data_xfer_timeout syntax keyword pfmainConf lmtp_defer_if_no_mx_address_found syntax keyword pfmainConf lmtp_delivery_status_filter syntax keyword pfmainConf lmtp_destination_concurrency_limit syntax keyword pfmainConf lmtp_destination_recipient_limit syntax keyword pfmainConf lmtp_discard_lhlo_keyword_address_maps syntax keyword pfmainConf lmtp_discard_lhlo_keywords syntax keyword pfmainConf lmtp_dns_reply_filter syntax keyword pfmainConf lmtp_dns_resolver_options syntax keyword pfmainConf lmtp_dns_support_level syntax keyword pfmainConf lmtp_enforce_tls syntax keyword pfmainConf lmtp_generic_maps syntax keyword pfmainConf lmtp_header_checks syntax keyword pfmainConf lmtp_host_lookup syntax keyword pfmainConf lmtp_lhlo_name syntax keyword pfmainConf lmtp_lhlo_timeout syntax keyword pfmainConf lmtp_line_length_limit syntax keyword pfmainConf lmtp_mail_timeout syntax keyword pfmainConf lmtp_mime_header_checks syntax keyword pfmainConf lmtp_mx_address_limit syntax keyword pfmainConf lmtp_mx_session_limit syntax keyword pfmainConf lmtp_nested_header_checks syntax keyword pfmainConf lmtp_per_record_deadline syntax keyword pfmainConf lmtp_pix_workaround_delay_time syntax keyword pfmainConf lmtp_pix_workaround_maps syntax keyword pfmainConf lmtp_pix_workaround_threshold_time syntax keyword pfmainConf lmtp_pix_workarounds syntax keyword pfmainConf lmtp_quit_timeout syntax keyword pfmainConf lmtp_quote_rfc821_envelope syntax keyword pfmainConf lmtp_randomize_addresses syntax keyword pfmainConf lmtp_rcpt_timeout syntax keyword pfmainConf lmtp_reply_filter syntax keyword pfmainConf lmtp_rset_timeout syntax keyword pfmainConf lmtp_sasl_auth_cache_name syntax keyword pfmainConf lmtp_sasl_auth_cache_time syntax keyword pfmainConf lmtp_sasl_auth_enable syntax keyword pfmainConf lmtp_sasl_auth_soft_bounce syntax keyword pfmainConf lmtp_sasl_mechanism_filter syntax keyword pfmainConf lmtp_sasl_password_maps syntax keyword pfmainConf lmtp_sasl_path syntax keyword pfmainConf lmtp_sasl_security_options syntax keyword pfmainConf lmtp_sasl_tls_security_options syntax keyword pfmainConf lmtp_sasl_tls_verified_security_options syntax keyword pfmainConf lmtp_sasl_type syntax keyword pfmainConf lmtp_send_dummy_mail_auth syntax keyword pfmainConf lmtp_send_xforward_command syntax keyword pfmainConf lmtp_sender_dependent_authentication syntax keyword pfmainConf lmtp_skip_5xx_greeting syntax keyword pfmainConf lmtp_skip_quit_response syntax keyword pfmainConf lmtp_starttls_timeout syntax keyword pfmainConf lmtp_tcp_port syntax keyword pfmainConf lmtp_tls_CAfile syntax keyword pfmainConf lmtp_tls_CApath syntax keyword pfmainConf lmtp_tls_block_early_mail_reply syntax keyword pfmainConf lmtp_tls_cert_file syntax keyword pfmainConf lmtp_tls_ciphers syntax keyword pfmainConf lmtp_tls_dcert_file syntax keyword pfmainConf lmtp_tls_dkey_file syntax keyword pfmainConf lmtp_tls_eccert_file syntax keyword pfmainConf lmtp_tls_eckey_file syntax keyword pfmainConf lmtp_tls_enforce_peername syntax keyword pfmainConf lmtp_tls_exclude_ciphers syntax keyword pfmainConf lmtp_tls_fingerprint_cert_match syntax keyword pfmainConf lmtp_tls_fingerprint_digest syntax keyword pfmainConf lmtp_tls_force_insecure_host_tlsa_lookup syntax keyword pfmainConf lmtp_tls_key_file syntax keyword pfmainConf lmtp_tls_loglevel syntax keyword pfmainConf lmtp_tls_mandatory_ciphers syntax keyword pfmainConf lmtp_tls_mandatory_exclude_ciphers syntax keyword pfmainConf lmtp_tls_mandatory_protocols syntax keyword pfmainConf lmtp_tls_note_starttls_offer syntax keyword pfmainConf lmtp_tls_per_site syntax keyword pfmainConf lmtp_tls_policy_maps syntax keyword pfmainConf lmtp_tls_protocols syntax keyword pfmainConf lmtp_tls_scert_verifydepth syntax keyword pfmainConf lmtp_tls_secure_cert_match syntax keyword pfmainConf lmtp_tls_security_level syntax keyword pfmainConf lmtp_tls_session_cache_database syntax keyword pfmainConf lmtp_tls_session_cache_timeout syntax keyword pfmainConf lmtp_tls_trust_anchor_file syntax keyword pfmainConf lmtp_tls_verify_cert_match syntax keyword pfmainConf lmtp_use_tls syntax keyword pfmainConf lmtp_xforward_timeout syntax keyword pfmainConf local_command_shell syntax keyword pfmainConf local_delivery_status_filter syntax keyword pfmainConf local_destination_concurrency_limit syntax keyword pfmainConf local_destination_recipient_limit syntax keyword pfmainConf local_header_rewrite_clients syntax keyword pfmainConf local_recipient_maps syntax keyword pfmainConf local_transport syntax keyword pfmainConf luser_relay syntax keyword pfmainConf mail_name syntax keyword pfmainConf mail_owner syntax keyword pfmainConf mail_release_date syntax keyword pfmainConf mail_spool_directory syntax keyword pfmainConf mail_version syntax keyword pfmainConf mailbox_command syntax keyword pfmainConf mailbox_command_maps syntax keyword pfmainConf mailbox_delivery_lock syntax keyword pfmainConf mailbox_size_limit syntax keyword pfmainConf mailbox_transport syntax keyword pfmainConf mailbox_transport_maps syntax keyword pfmainConf mailq_path syntax keyword pfmainConf manpage_directory syntax keyword pfmainConf maps_rbl_domains syntax keyword pfmainConf maps_rbl_reject_code syntax keyword pfmainConf masquerade_classes syntax keyword pfmainConf masquerade_domains syntax keyword pfmainConf masquerade_exceptions syntax keyword pfmainConf master_service_disable syntax keyword pfmainConf max_idle syntax keyword pfmainConf max_use syntax keyword pfmainConf maximal_backoff_time syntax keyword pfmainConf maximal_queue_lifetime syntax keyword pfmainConf message_drop_headers syntax keyword pfmainConf message_reject_characters syntax keyword pfmainConf message_size_limit syntax keyword pfmainConf message_strip_characters syntax keyword pfmainConf meta_directory syntax keyword pfmainConf milter_command_timeout syntax keyword pfmainConf milter_connect_macros syntax keyword pfmainConf milter_connect_timeout syntax keyword pfmainConf milter_content_timeout syntax keyword pfmainConf milter_data_macros syntax keyword pfmainConf milter_default_action syntax keyword pfmainConf milter_end_of_data_macros syntax keyword pfmainConf milter_end_of_header_macros syntax keyword pfmainConf milter_header_checks syntax keyword pfmainConf milter_helo_macros syntax keyword pfmainConf milter_macro_daemon_name syntax keyword pfmainConf milter_macro_v syntax keyword pfmainConf milter_mail_macros syntax keyword pfmainConf milter_protocol syntax keyword pfmainConf milter_rcpt_macros syntax keyword pfmainConf milter_unknown_command_macros syntax keyword pfmainConf mime_boundary_length_limit syntax keyword pfmainConf mime_header_checks syntax keyword pfmainConf mime_nesting_limit syntax keyword pfmainConf minimal_backoff_time syntax keyword pfmainConf multi_instance_directories syntax keyword pfmainConf multi_instance_enable syntax keyword pfmainConf multi_instance_group syntax keyword pfmainConf multi_instance_name syntax keyword pfmainConf multi_instance_wrapper syntax keyword pfmainConf multi_recipient_bounce_reject_code syntax keyword pfmainConf mydestination syntax keyword pfmainConf mydomain syntax keyword pfmainConf myhostname syntax keyword pfmainConf mynetworks syntax keyword pfmainConf mynetworks_style syntax keyword pfmainConf myorigin syntax keyword pfmainConf nested_header_checks syntax keyword pfmainConf newaliases_path syntax keyword pfmainConf non_fqdn_reject_code syntax keyword pfmainConf non_smtpd_milters syntax keyword pfmainConf notify_classes syntax keyword pfmainConf nullmx_reject_code syntax keyword pfmainConf owner_request_special syntax keyword pfmainConf parent_domain_matches_subdomains syntax keyword pfmainConf permit_mx_backup_networks syntax keyword pfmainConf pickup_service_name syntax keyword pfmainConf pipe_delivery_status_filter syntax keyword pfmainConf plaintext_reject_code syntax keyword pfmainConf postmulti_control_commands syntax keyword pfmainConf postmulti_start_commands syntax keyword pfmainConf postmulti_stop_commands syntax keyword pfmainConf postscreen_access_list syntax keyword pfmainConf postscreen_bare_newline_action syntax keyword pfmainConf postscreen_bare_newline_enable syntax keyword pfmainConf postscreen_bare_newline_ttl syntax keyword pfmainConf postscreen_blacklist_action syntax keyword pfmainConf postscreen_cache_cleanup_interval syntax keyword pfmainConf postscreen_cache_map syntax keyword pfmainConf postscreen_cache_retention_time syntax keyword pfmainConf postscreen_client_connection_count_limit syntax keyword pfmainConf postscreen_command_count_limit syntax keyword pfmainConf postscreen_command_filter syntax keyword pfmainConf postscreen_command_time_limit syntax keyword pfmainConf postscreen_disable_vrfy_command syntax keyword pfmainConf postscreen_discard_ehlo_keyword_address_maps syntax keyword pfmainConf postscreen_discard_ehlo_keywords syntax keyword pfmainConf postscreen_dnsbl_action syntax keyword pfmainConf postscreen_dnsbl_reply_map syntax keyword pfmainConf postscreen_dnsbl_sites syntax keyword pfmainConf postscreen_dnsbl_threshold syntax keyword pfmainConf postscreen_dnsbl_timeout syntax keyword pfmainConf postscreen_dnsbl_ttl syntax keyword pfmainConf postscreen_dnsbl_whitelist_threshold syntax keyword pfmainConf postscreen_enforce_tls syntax keyword pfmainConf postscreen_expansion_filter syntax keyword pfmainConf postscreen_forbidden_commands syntax keyword pfmainConf postscreen_greet_action syntax keyword pfmainConf postscreen_greet_banner syntax keyword pfmainConf postscreen_greet_ttl syntax keyword pfmainConf postscreen_greet_wait syntax keyword pfmainConf postscreen_helo_required syntax keyword pfmainConf postscreen_non_smtp_command_action syntax keyword pfmainConf postscreen_non_smtp_command_enable syntax keyword pfmainConf postscreen_non_smtp_command_ttl syntax keyword pfmainConf postscreen_pipelining_action syntax keyword pfmainConf postscreen_pipelining_enable syntax keyword pfmainConf postscreen_pipelining_ttl syntax keyword pfmainConf postscreen_post_queue_limit syntax keyword pfmainConf postscreen_pre_queue_limit syntax keyword pfmainConf postscreen_reject_footer syntax keyword pfmainConf postscreen_tls_security_level syntax keyword pfmainConf postscreen_upstream_proxy_protocol syntax keyword pfmainConf postscreen_upstream_proxy_timeout syntax keyword pfmainConf postscreen_use_tls syntax keyword pfmainConf postscreen_watchdog_timeout syntax keyword pfmainConf postscreen_whitelist_interfaces syntax keyword pfmainConf prepend_delivered_header syntax keyword pfmainConf process_id syntax keyword pfmainConf process_id_directory syntax keyword pfmainConf process_name syntax keyword pfmainConf propagate_unmatched_extensions syntax keyword pfmainConf proxy_interfaces syntax keyword pfmainConf proxy_read_maps syntax keyword pfmainConf proxy_write_maps syntax keyword pfmainConf proxymap_service_name syntax keyword pfmainConf proxywrite_service_name syntax keyword pfmainConf qmgr_clog_warn_time syntax keyword pfmainConf qmgr_daemon_timeout syntax keyword pfmainConf qmgr_fudge_factor syntax keyword pfmainConf qmgr_ipc_timeout syntax keyword pfmainConf qmgr_message_active_limit syntax keyword pfmainConf qmgr_message_recipient_limit syntax keyword pfmainConf qmgr_message_recipient_minimum syntax keyword pfmainConf qmqpd_authorized_clients syntax keyword pfmainConf qmqpd_client_port_logging syntax keyword pfmainConf qmqpd_error_delay syntax keyword pfmainConf qmqpd_timeout syntax keyword pfmainConf queue_directory syntax keyword pfmainConf queue_file_attribute_count_limit syntax keyword pfmainConf queue_minfree syntax keyword pfmainConf queue_run_delay syntax keyword pfmainConf queue_service_name syntax keyword pfmainConf rbl_reply_maps syntax keyword pfmainConf readme_directory syntax keyword pfmainConf receive_override_options syntax keyword pfmainConf recipient_bcc_maps syntax keyword pfmainConf recipient_canonical_classes syntax keyword pfmainConf recipient_canonical_maps syntax keyword pfmainConf recipient_delimiter syntax keyword pfmainConf reject_code syntax keyword pfmainConf reject_tempfail_action syntax keyword pfmainConf relay_clientcerts syntax keyword pfmainConf relay_destination_concurrency_limit syntax keyword pfmainConf relay_destination_recipient_limit syntax keyword pfmainConf relay_domains syntax keyword pfmainConf relay_domains_reject_code syntax keyword pfmainConf relay_recipient_maps syntax keyword pfmainConf relay_transport syntax keyword pfmainConf relayhost syntax keyword pfmainConf relocated_maps syntax keyword pfmainConf remote_header_rewrite_domain syntax keyword pfmainConf require_home_directory syntax keyword pfmainConf reset_owner_alias syntax keyword pfmainConf resolve_dequoted_address syntax keyword pfmainConf resolve_null_domain syntax keyword pfmainConf resolve_numeric_domain syntax keyword pfmainConf rewrite_service_name syntax keyword pfmainConf sample_directory syntax keyword pfmainConf send_cyrus_sasl_authzid syntax keyword pfmainConf sender_based_routing syntax keyword pfmainConf sender_bcc_maps syntax keyword pfmainConf sender_canonical_classes syntax keyword pfmainConf sender_canonical_maps syntax keyword pfmainConf sender_dependent_default_transport_maps syntax keyword pfmainConf sender_dependent_relayhost_maps syntax keyword pfmainConf sendmail_fix_line_endings syntax keyword pfmainConf sendmail_path syntax keyword pfmainConf service_throttle_time syntax keyword pfmainConf setgid_group syntax keyword pfmainConf shlib_directory syntax keyword pfmainConf show_user_unknown_table_name syntax keyword pfmainConf showq_service_name syntax keyword pfmainConf smtp_address_preference syntax keyword pfmainConf smtp_address_verify_target syntax keyword pfmainConf smtp_always_send_ehlo syntax keyword pfmainConf smtp_bind_address syntax keyword pfmainConf smtp_bind_address6 syntax keyword pfmainConf smtp_body_checks syntax keyword pfmainConf smtp_cname_overrides_servername syntax keyword pfmainConf smtp_connect_timeout syntax keyword pfmainConf smtp_connection_cache_destinations syntax keyword pfmainConf smtp_connection_cache_on_demand syntax keyword pfmainConf smtp_connection_cache_time_limit syntax keyword pfmainConf smtp_connection_reuse_count_limit syntax keyword pfmainConf smtp_connection_reuse_time_limit syntax keyword pfmainConf smtp_data_done_timeout syntax keyword pfmainConf smtp_data_init_timeout syntax keyword pfmainConf smtp_data_xfer_timeout syntax keyword pfmainConf smtp_defer_if_no_mx_address_found syntax keyword pfmainConf smtp_delivery_status_filter syntax keyword pfmainConf smtp_destination_concurrency_limit syntax keyword pfmainConf smtp_destination_recipient_limit syntax keyword pfmainConf smtp_discard_ehlo_keyword_address_maps syntax keyword pfmainConf smtp_discard_ehlo_keywords syntax keyword pfmainConf smtp_dns_reply_filter syntax keyword pfmainConf smtp_dns_resolver_options syntax keyword pfmainConf smtp_dns_support_level syntax keyword pfmainConf smtp_enforce_tls syntax keyword pfmainConf smtp_fallback_relay syntax keyword pfmainConf smtp_generic_maps syntax keyword pfmainConf smtp_header_checks syntax keyword pfmainConf smtp_helo_name syntax keyword pfmainConf smtp_helo_timeout syntax keyword pfmainConf smtp_host_lookup syntax keyword pfmainConf smtp_line_length_limit syntax keyword pfmainConf smtp_mail_timeout syntax keyword pfmainConf smtp_mime_header_checks syntax keyword pfmainConf smtp_mx_address_limit syntax keyword pfmainConf smtp_mx_session_limit syntax keyword pfmainConf smtp_nested_header_checks syntax keyword pfmainConf smtp_never_send_ehlo syntax keyword pfmainConf smtp_per_record_deadline syntax keyword pfmainConf smtp_pix_workaround_delay_time syntax keyword pfmainConf smtp_pix_workaround_maps syntax keyword pfmainConf smtp_pix_workaround_threshold_time syntax keyword pfmainConf smtp_pix_workarounds syntax keyword pfmainConf smtp_quit_timeout syntax keyword pfmainConf smtp_quote_rfc821_envelope syntax keyword pfmainConf smtp_randomize_addresses syntax keyword pfmainConf smtp_rcpt_timeout syntax keyword pfmainConf smtp_reply_filter syntax keyword pfmainConf smtp_rset_timeout syntax keyword pfmainConf smtp_sasl_auth_cache_name syntax keyword pfmainConf smtp_sasl_auth_cache_time syntax keyword pfmainConf smtp_sasl_auth_enable syntax keyword pfmainConf smtp_sasl_auth_soft_bounce syntax keyword pfmainConf smtp_sasl_mechanism_filter syntax keyword pfmainConf smtp_sasl_password_maps syntax keyword pfmainConf smtp_sasl_path syntax keyword pfmainConf smtp_sasl_security_options syntax keyword pfmainConf smtp_sasl_tls_security_options syntax keyword pfmainConf smtp_sasl_tls_verified_security_options syntax keyword pfmainConf smtp_sasl_type syntax keyword pfmainConf smtp_send_dummy_mail_auth syntax keyword pfmainConf smtp_send_xforward_command syntax keyword pfmainConf smtp_sender_dependent_authentication syntax keyword pfmainConf smtp_skip_4xx_greeting syntax keyword pfmainConf smtp_skip_5xx_greeting syntax keyword pfmainConf smtp_skip_quit_response syntax keyword pfmainConf smtp_starttls_timeout syntax keyword pfmainConf smtp_tls_CAfile syntax keyword pfmainConf smtp_tls_CApath syntax keyword pfmainConf smtp_tls_block_early_mail_reply syntax keyword pfmainConf smtp_tls_cert_file syntax keyword pfmainConf smtp_tls_cipherlist syntax keyword pfmainConf smtp_tls_ciphers syntax keyword pfmainConf smtp_tls_dcert_file syntax keyword pfmainConf smtp_tls_dkey_file syntax keyword pfmainConf smtp_tls_eccert_file syntax keyword pfmainConf smtp_tls_eckey_file syntax keyword pfmainConf smtp_tls_enforce_peername syntax keyword pfmainConf smtp_tls_exclude_ciphers syntax keyword pfmainConf smtp_tls_fingerprint_cert_match syntax keyword pfmainConf smtp_tls_fingerprint_digest syntax keyword pfmainConf smtp_tls_force_insecure_host_tlsa_lookup syntax keyword pfmainConf smtp_tls_key_file syntax keyword pfmainConf smtp_tls_loglevel syntax keyword pfmainConf smtp_tls_mandatory_ciphers syntax keyword pfmainConf smtp_tls_mandatory_exclude_ciphers syntax keyword pfmainConf smtp_tls_mandatory_protocols syntax keyword pfmainConf smtp_tls_note_starttls_offer syntax keyword pfmainConf smtp_tls_per_site syntax keyword pfmainConf smtp_tls_policy_maps syntax keyword pfmainConf smtp_tls_protocols syntax keyword pfmainConf smtp_tls_scert_verifydepth syntax keyword pfmainConf smtp_tls_secure_cert_match syntax keyword pfmainConf smtp_tls_security_level syntax keyword pfmainConf smtp_tls_session_cache_database syntax keyword pfmainConf smtp_tls_session_cache_timeout syntax keyword pfmainConf smtp_tls_trust_anchor_file syntax keyword pfmainConf smtp_tls_verify_cert_match syntax keyword pfmainConf smtp_tls_wrappermode syntax keyword pfmainConf smtp_use_tls syntax keyword pfmainConf smtp_xforward_timeout syntax keyword pfmainConf smtpd_authorized_verp_clients syntax keyword pfmainConf smtpd_authorized_xclient_hosts syntax keyword pfmainConf smtpd_authorized_xforward_hosts syntax keyword pfmainConf smtpd_banner syntax keyword pfmainConf smtpd_client_connection_count_limit syntax keyword pfmainConf smtpd_client_connection_rate_limit syntax keyword pfmainConf smtpd_client_event_limit_exceptions syntax keyword pfmainConf smtpd_client_message_rate_limit syntax keyword pfmainConf smtpd_client_new_tls_session_rate_limit syntax keyword pfmainConf smtpd_client_port_logging syntax keyword pfmainConf smtpd_client_recipient_rate_limit syntax keyword pfmainConf smtpd_client_restrictions syntax keyword pfmainConf smtpd_command_filter syntax keyword pfmainConf smtpd_data_restrictions syntax keyword pfmainConf smtpd_delay_open_until_valid_rcpt syntax keyword pfmainConf smtpd_delay_reject syntax keyword pfmainConf smtpd_discard_ehlo_keyword_address_maps syntax keyword pfmainConf smtpd_discard_ehlo_keywords syntax keyword pfmainConf smtpd_dns_reply_filter syntax keyword pfmainConf smtpd_end_of_data_restrictions syntax keyword pfmainConf smtpd_enforce_tls syntax keyword pfmainConf smtpd_error_sleep_time syntax keyword pfmainConf smtpd_etrn_restrictions syntax keyword pfmainConf smtpd_expansion_filter syntax keyword pfmainConf smtpd_forbidden_commands syntax keyword pfmainConf smtpd_hard_error_limit syntax keyword pfmainConf smtpd_helo_required syntax keyword pfmainConf smtpd_helo_restrictions syntax keyword pfmainConf smtpd_history_flush_threshold syntax keyword pfmainConf smtpd_junk_command_limit syntax keyword pfmainConf smtpd_log_access_permit_actions syntax keyword pfmainConf smtpd_milters syntax keyword pfmainConf smtpd_noop_commands syntax keyword pfmainConf smtpd_null_access_lookup_key syntax keyword pfmainConf smtpd_peername_lookup syntax keyword pfmainConf smtpd_per_record_deadline syntax keyword pfmainConf smtpd_policy_service_default_action syntax keyword pfmainConf smtpd_policy_service_max_idle syntax keyword pfmainConf smtpd_policy_service_max_ttl syntax keyword pfmainConf smtpd_policy_service_request_limit syntax keyword pfmainConf smtpd_policy_service_retry_delay syntax keyword pfmainConf smtpd_policy_service_timeout syntax keyword pfmainConf smtpd_policy_service_try_limit syntax keyword pfmainConf smtpd_proxy_ehlo syntax keyword pfmainConf smtpd_proxy_filter syntax keyword pfmainConf smtpd_proxy_options syntax keyword pfmainConf smtpd_proxy_timeout syntax keyword pfmainConf smtpd_recipient_limit syntax keyword pfmainConf smtpd_recipient_overshoot_limit syntax keyword pfmainConf smtpd_recipient_restrictions syntax keyword pfmainConf smtpd_reject_footer syntax keyword pfmainConf smtpd_reject_unlisted_recipient syntax keyword pfmainConf smtpd_reject_unlisted_sender syntax keyword pfmainConf smtpd_relay_restrictions syntax keyword pfmainConf smtpd_restriction_classes syntax keyword pfmainConf smtpd_sasl_application_name syntax keyword pfmainConf smtpd_sasl_auth_enable syntax keyword pfmainConf smtpd_sasl_authenticated_header syntax keyword pfmainConf smtpd_sasl_exceptions_networks syntax keyword pfmainConf smtpd_sasl_local_domain syntax keyword pfmainConf smtpd_sasl_path syntax keyword pfmainConf smtpd_sasl_security_options syntax keyword pfmainConf smtpd_sasl_service syntax keyword pfmainConf smtpd_sasl_tls_security_options syntax keyword pfmainConf smtpd_sasl_type syntax keyword pfmainConf smtpd_sender_login_maps syntax keyword pfmainConf smtpd_sender_restrictions syntax keyword pfmainConf smtpd_service_name syntax keyword pfmainConf smtpd_soft_error_limit syntax keyword pfmainConf smtpd_starttls_timeout syntax keyword pfmainConf smtpd_timeout syntax keyword pfmainConf smtpd_tls_CAfile syntax keyword pfmainConf smtpd_tls_CApath syntax keyword pfmainConf smtpd_tls_always_issue_session_ids syntax keyword pfmainConf smtpd_tls_ask_ccert syntax keyword pfmainConf smtpd_tls_auth_only syntax keyword pfmainConf smtpd_tls_ccert_verifydepth syntax keyword pfmainConf smtpd_tls_cert_file syntax keyword pfmainConf smtpd_tls_cipherlist syntax keyword pfmainConf smtpd_tls_ciphers syntax keyword pfmainConf smtpd_tls_dcert_file syntax keyword pfmainConf smtpd_tls_dh1024_param_file syntax keyword pfmainConf smtpd_tls_dh512_param_file syntax keyword pfmainConf smtpd_tls_dkey_file syntax keyword pfmainConf smtpd_tls_eccert_file syntax keyword pfmainConf smtpd_tls_eckey_file syntax keyword pfmainConf smtpd_tls_eecdh_grade syntax keyword pfmainConf smtpd_tls_exclude_ciphers syntax keyword pfmainConf smtpd_tls_fingerprint_digest syntax keyword pfmainConf smtpd_tls_key_file syntax keyword pfmainConf smtpd_tls_loglevel syntax keyword pfmainConf smtpd_tls_mandatory_ciphers syntax keyword pfmainConf smtpd_tls_mandatory_exclude_ciphers syntax keyword pfmainConf smtpd_tls_mandatory_protocols syntax keyword pfmainConf smtpd_tls_protocols syntax keyword pfmainConf smtpd_tls_received_header syntax keyword pfmainConf smtpd_tls_req_ccert syntax keyword pfmainConf smtpd_tls_security_level syntax keyword pfmainConf smtpd_tls_session_cache_database syntax keyword pfmainConf smtpd_tls_session_cache_timeout syntax keyword pfmainConf smtpd_tls_wrappermode syntax keyword pfmainConf smtpd_upstream_proxy_protocol syntax keyword pfmainConf smtpd_upstream_proxy_timeout syntax keyword pfmainConf smtpd_use_tls syntax keyword pfmainConf smtputf8_autodetect_classes syntax keyword pfmainConf smtputf8_enable syntax keyword pfmainConf soft_bounce syntax keyword pfmainConf stale_lock_time syntax keyword pfmainConf stress syntax keyword pfmainConf strict_7bit_headers syntax keyword pfmainConf strict_8bitmime syntax keyword pfmainConf strict_8bitmime_body syntax keyword pfmainConf strict_mailbox_ownership syntax keyword pfmainConf strict_mime_encoding_domain syntax keyword pfmainConf strict_rfc821_envelopes syntax keyword pfmainConf strict_smtputf8 syntax keyword pfmainConf sun_mailtool_compatibility syntax keyword pfmainConf swap_bangpath syntax keyword pfmainConf syslog_facility syntax keyword pfmainConf syslog_name syntax keyword pfmainConf tcp_windowsize syntax keyword pfmainConf tls_append_default_CA syntax keyword pfmainConf tls_daemon_random_bytes syntax keyword pfmainConf tls_dane_digest_agility syntax keyword pfmainConf tls_dane_digests syntax keyword pfmainConf tls_dane_trust_anchor_digest_enable syntax keyword pfmainConf tls_disable_workarounds syntax keyword pfmainConf tls_eecdh_strong_curve syntax keyword pfmainConf tls_eecdh_ultra_curve syntax keyword pfmainConf tls_export_cipherlist syntax keyword pfmainConf tls_high_cipherlist syntax keyword pfmainConf tls_legacy_public_key_fingerprints syntax keyword pfmainConf tls_low_cipherlist syntax keyword pfmainConf tls_medium_cipherlist syntax keyword pfmainConf tls_null_cipherlist syntax keyword pfmainConf tls_preempt_cipherlist syntax keyword pfmainConf tls_random_bytes syntax keyword pfmainConf tls_random_exchange_name syntax keyword pfmainConf tls_random_prng_update_period syntax keyword pfmainConf tls_random_reseed_period syntax keyword pfmainConf tls_random_source syntax keyword pfmainConf tls_session_ticket_cipher syntax keyword pfmainConf tls_ssl_options syntax keyword pfmainConf tls_wildcard_matches_multiple_labels syntax keyword pfmainConf tlsmgr_service_name syntax keyword pfmainConf tlsproxy_enforce_tls syntax keyword pfmainConf tlsproxy_service_name syntax keyword pfmainConf tlsproxy_tls_CAfile syntax keyword pfmainConf tlsproxy_tls_CApath syntax keyword pfmainConf tlsproxy_tls_always_issue_session_ids syntax keyword pfmainConf tlsproxy_tls_ask_ccert syntax keyword pfmainConf tlsproxy_tls_ccert_verifydepth syntax keyword pfmainConf tlsproxy_tls_cert_file syntax keyword pfmainConf tlsproxy_tls_ciphers syntax keyword pfmainConf tlsproxy_tls_dcert_file syntax keyword pfmainConf tlsproxy_tls_dh1024_param_file syntax keyword pfmainConf tlsproxy_tls_dh512_param_file syntax keyword pfmainConf tlsproxy_tls_dkey_file syntax keyword pfmainConf tlsproxy_tls_eccert_file syntax keyword pfmainConf tlsproxy_tls_eckey_file syntax keyword pfmainConf tlsproxy_tls_eecdh_grade syntax keyword pfmainConf tlsproxy_tls_exclude_ciphers syntax keyword pfmainConf tlsproxy_tls_fingerprint_digest syntax keyword pfmainConf tlsproxy_tls_key_file syntax keyword pfmainConf tlsproxy_tls_loglevel syntax keyword pfmainConf tlsproxy_tls_mandatory_ciphers syntax keyword pfmainConf tlsproxy_tls_mandatory_exclude_ciphers syntax keyword pfmainConf tlsproxy_tls_mandatory_protocols syntax keyword pfmainConf tlsproxy_tls_protocols syntax keyword pfmainConf tlsproxy_tls_req_ccert syntax keyword pfmainConf tlsproxy_tls_security_level syntax keyword pfmainConf tlsproxy_tls_session_cache_timeout syntax keyword pfmainConf tlsproxy_use_tls syntax keyword pfmainConf tlsproxy_watchdog_timeout syntax keyword pfmainConf trace_service_name syntax keyword pfmainConf transport_delivery_slot_cost syntax keyword pfmainConf transport_delivery_slot_discount syntax keyword pfmainConf transport_delivery_slot_loan syntax keyword pfmainConf transport_destination_concurrency_failed_cohort_limit syntax keyword pfmainConf transport_destination_concurrency_limit syntax keyword pfmainConf transport_destination_concurrency_negative_feedback syntax keyword pfmainConf transport_destination_concurrency_positive_feedback syntax keyword pfmainConf transport_destination_rate_delay syntax keyword pfmainConf transport_destination_recipient_limit syntax keyword pfmainConf transport_extra_recipient_limit syntax keyword pfmainConf transport_initial_destination_concurrency syntax keyword pfmainConf transport_maps syntax keyword pfmainConf transport_minimum_delivery_slots syntax keyword pfmainConf transport_recipient_limit syntax keyword pfmainConf transport_recipient_refill_delay syntax keyword pfmainConf transport_recipient_refill_limit syntax keyword pfmainConf transport_retry_time syntax keyword pfmainConf transport_time_limit syntax keyword pfmainConf trigger_timeout syntax keyword pfmainConf undisclosed_recipients_header syntax keyword pfmainConf unknown_address_reject_code syntax keyword pfmainConf unknown_address_tempfail_action syntax keyword pfmainConf unknown_client_reject_code syntax keyword pfmainConf unknown_helo_hostname_tempfail_action syntax keyword pfmainConf unknown_hostname_reject_code syntax keyword pfmainConf unknown_local_recipient_reject_code syntax keyword pfmainConf unknown_relay_recipient_reject_code syntax keyword pfmainConf unknown_virtual_alias_reject_code syntax keyword pfmainConf unknown_virtual_mailbox_reject_code syntax keyword pfmainConf unverified_recipient_defer_code syntax keyword pfmainConf unverified_recipient_reject_code syntax keyword pfmainConf unverified_recipient_reject_reason syntax keyword pfmainConf unverified_recipient_tempfail_action syntax keyword pfmainConf unverified_sender_defer_code syntax keyword pfmainConf unverified_sender_reject_code syntax keyword pfmainConf unverified_sender_reject_reason syntax keyword pfmainConf unverified_sender_tempfail_action syntax keyword pfmainConf verp_delimiter_filter syntax keyword pfmainConf virtual_alias_address_length_limit syntax keyword pfmainConf virtual_alias_domains syntax keyword pfmainConf virtual_alias_expansion_limit syntax keyword pfmainConf virtual_alias_maps syntax keyword pfmainConf virtual_alias_recursion_limit syntax keyword pfmainConf virtual_delivery_status_filter syntax keyword pfmainConf virtual_destination_concurrency_limit syntax keyword pfmainConf virtual_destination_recipient_limit syntax keyword pfmainConf virtual_gid_maps syntax keyword pfmainConf virtual_mailbox_base syntax keyword pfmainConf virtual_mailbox_domains syntax keyword pfmainConf virtual_mailbox_limit syntax keyword pfmainConf virtual_mailbox_lock syntax keyword pfmainConf virtual_mailbox_maps syntax keyword pfmainConf virtual_maps syntax keyword pfmainConf virtual_minimum_uid syntax keyword pfmainConf virtual_transport syntax keyword pfmainConf virtual_uid_maps syntax match pfmainRef "$\<2bounce_notice_recipient\>" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax match pfmainRef "$\" syntax keyword pfmainWord accept syntax keyword pfmainWord all syntax keyword pfmainWord always syntax keyword pfmainWord check_address_map syntax keyword pfmainWord check_ccert_access syntax keyword pfmainWord check_client_a_access syntax keyword pfmainWord check_client_access syntax keyword pfmainWord check_client_mx_access syntax keyword pfmainWord check_client_ns_access syntax keyword pfmainWord check_etrn_access syntax keyword pfmainWord check_helo_a_access syntax keyword pfmainWord check_helo_access syntax keyword pfmainWord check_helo_mx_access syntax keyword pfmainWord check_helo_ns_access syntax keyword pfmainWord check_policy_service syntax keyword pfmainWord check_recipient_a_access syntax keyword pfmainWord check_recipient_access syntax keyword pfmainWord check_recipient_maps syntax keyword pfmainWord check_recipient_mx_access syntax keyword pfmainWord check_recipient_ns_access syntax keyword pfmainWord check_relay_domains syntax keyword pfmainWord check_reverse_client_hostname_a_access syntax keyword pfmainWord check_reverse_client_hostname_access syntax keyword pfmainWord check_reverse_client_hostname_mx_access syntax keyword pfmainWord check_reverse_client_hostname_ns_access syntax keyword pfmainWord check_sasl_access syntax keyword pfmainWord check_sender_a_access syntax keyword pfmainWord check_sender_access syntax keyword pfmainWord check_sender_mx_access syntax keyword pfmainWord check_sender_ns_access syntax keyword pfmainWord class syntax keyword pfmainWord client_address syntax keyword pfmainWord client_port syntax keyword pfmainWord dane syntax keyword pfmainWord dane-only syntax keyword pfmainWord defer syntax keyword pfmainWord defer_if_permit syntax keyword pfmainWord defer_if_reject syntax keyword pfmainWord defer_unauth_destination syntax keyword pfmainWord disabled syntax keyword pfmainWord dns syntax keyword pfmainWord dnssec syntax keyword pfmainWord drop syntax keyword pfmainWord dunno syntax keyword pfmainWord enabled syntax keyword pfmainWord encrypt syntax keyword pfmainWord enforce syntax keyword pfmainWord envelope_recipient syntax keyword pfmainWord envelope_sender syntax keyword pfmainWord export syntax keyword pfmainWord fingerprint syntax keyword pfmainWord header_recipient syntax keyword pfmainWord header_sender syntax keyword pfmainWord high syntax keyword pfmainWord host syntax keyword pfmainWord ignore syntax keyword pfmainWord ipv4 syntax keyword pfmainWord ipv6 syntax keyword pfmainWord localtime syntax keyword pfmainWord low syntax keyword pfmainWord may syntax keyword pfmainWord maybe syntax keyword pfmainWord medium syntax keyword pfmainWord native syntax keyword pfmainWord never syntax keyword pfmainWord no_address_mappings syntax keyword pfmainWord no_header_body_checks syntax keyword pfmainWord no_header_reply syntax keyword pfmainWord no_milters syntax keyword pfmainWord no_unknown_recipient_checks syntax keyword pfmainWord none syntax keyword pfmainWord null syntax keyword pfmainWord off syntax keyword pfmainWord on syntax keyword pfmainWord permit syntax keyword pfmainWord permit_auth_destination syntax keyword pfmainWord permit_dnswl_client syntax keyword pfmainWord permit_inet_interfaces syntax keyword pfmainWord permit_mx_backup syntax keyword pfmainWord permit_mynetworks syntax keyword pfmainWord permit_naked_ip_address syntax keyword pfmainWord permit_rhswl_client syntax keyword pfmainWord permit_sasl_authenticated syntax keyword pfmainWord permit_tls_all_clientcerts syntax keyword pfmainWord permit_tls_clientcerts syntax keyword pfmainWord quarantine syntax keyword pfmainWord reject syntax keyword pfmainWord reject_authenticated_sender_login_mismatch syntax keyword pfmainWord reject_invalid_helo_hostname syntax keyword pfmainWord reject_invalid_hostname syntax keyword pfmainWord reject_known_sender_login_mismatch syntax keyword pfmainWord reject_maps_rbl syntax keyword pfmainWord reject_multi_recipient_bounce syntax keyword pfmainWord reject_non_fqdn_helo_hostname syntax keyword pfmainWord reject_non_fqdn_hostname syntax keyword pfmainWord reject_non_fqdn_recipient syntax keyword pfmainWord reject_non_fqdn_sender syntax keyword pfmainWord reject_plaintext_session syntax keyword pfmainWord reject_rbl syntax keyword pfmainWord reject_rbl_client syntax keyword pfmainWord reject_rhsbl_client syntax keyword pfmainWord reject_rhsbl_helo syntax keyword pfmainWord reject_rhsbl_recipient syntax keyword pfmainWord reject_rhsbl_reverse_client syntax keyword pfmainWord reject_rhsbl_sender syntax keyword pfmainWord reject_sender_login_mismatch syntax keyword pfmainWord reject_unauth_destination syntax keyword pfmainWord reject_unauth_pipelining syntax keyword pfmainWord reject_unauthenticated_sender_login_mismatch syntax keyword pfmainWord reject_unknown_address syntax keyword pfmainWord reject_unknown_client syntax keyword pfmainWord reject_unknown_client_hostname syntax keyword pfmainWord reject_unknown_forward_client_hostname syntax keyword pfmainWord reject_unknown_helo_hostname syntax keyword pfmainWord reject_unknown_hostname syntax keyword pfmainWord reject_unknown_recipient_domain syntax keyword pfmainWord reject_unknown_reverse_client_hostname syntax keyword pfmainWord reject_unknown_sender_domain syntax keyword pfmainWord reject_unlisted_recipient syntax keyword pfmainWord reject_unlisted_sender syntax keyword pfmainWord reject_unverified_recipient syntax keyword pfmainWord reject_unverified_sender syntax keyword pfmainWord secure syntax keyword pfmainWord server_name syntax keyword pfmainWord sleep syntax keyword pfmainWord smtpd_access_maps syntax keyword pfmainWord speed_adjust syntax keyword pfmainWord strong syntax keyword pfmainWord subnet syntax keyword pfmainWord tempfail syntax keyword pfmainWord ultra syntax keyword pfmainWord warn_if_reject syntax keyword pfmainWord CRYPTOPRO_TLSEXT_BUG syntax keyword pfmainWord DONT_INSERT_EMPTY_FRAGMENTS syntax keyword pfmainWord LEGACY_SERVER_CONNECT syntax keyword pfmainWord MICROSOFT_BIG_SSLV3_BUFFER syntax keyword pfmainWord MICROSOFT_SESS_ID_BUG syntax keyword pfmainWord MSIE_SSLV2_RSA_PADDING syntax keyword pfmainWord NETSCAPE_CHALLENGE_BUG syntax keyword pfmainWord NETSCAPE_REUSE_CIPHER_CHANGE_BUG syntax keyword pfmainWord SSLEAY_080_CLIENT_DH_BUG syntax keyword pfmainWord SSLREF2_REUSE_CERT_TYPE_BUG syntax keyword pfmainWord TLS_BLOCK_PADDING_BUG syntax keyword pfmainWord TLS_D5_BUG syntax keyword pfmainWord TLS_ROLLBACK_BUG syntax keyword pfmainDict btree cidr environ hash nis pcre proxy regexp sdbm static tcp unix syntax keyword pfmainQueueDir incoming active deferred corrupt hold syntax keyword pfmainTransport smtp lmtp unix local relay uucp virtual syntax keyword pfmainLock fcntl flock dotlock syntax keyword pfmainAnswer yes no syntax match pfmainComment "#.*$" syntax match pfmainNumber "\<\d\+\>" syntax match pfmainTime "\<\d\+[hmsd]\>" syntax match pfmainIP "\<\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>" syntax match pfmainVariable "\$\w\+" contains=pfmainRef syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\<2bounce\>" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" syntax match pfmainSpecial "\" hi def link pfmainConf Statement hi def link pfmainRef PreProc hi def link pfmainWord identifier hi def link pfmainDict Type hi def link pfmainQueueDir Constant hi def link pfmainTransport Constant hi def link pfmainLock Constant hi def link pfmainAnswer Constant hi def link pfmainComment Comment hi def link pfmainNumber Number hi def link pfmainTime Number hi def link pfmainIP Number hi def link pfmainVariable Error hi def link pfmainSpecial Special let b:current_syntax = "pfmain" if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'php' endif runtime! syntax/html.vim unlet b:current_syntax if !exists("php_sync_method") if exists("php_minlines") let php_sync_method=php_minlines else let php_sync_method=-1 endif endif if exists("php_parentError") && !exists("php_parent_error_open") && !exists("php_parent_error_close") let php_parent_error_close=1 let php_parent_error_open=1 endif syn cluster htmlPreproc add=phpRegion,phpRegionAsp,phpRegionSc syn include @sqlTop syntax/sql.vim syn sync clear unlet b:current_syntax syn cluster sqlTop remove=sqlString,sqlComment if exists( "php_sql_query") syn cluster phpAddStrings contains=@sqlTop endif if exists( "php_htmlInStrings") syn cluster phpAddStrings add=@htmlTop endif let s:cpo_save = &cpo set cpo&vim syn case match syn keyword phpEnvVar GATEWAY_INTERFACE SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TRANSLATED SCRIPT_NAME REQUEST_URI contained syn keyword phpIntVar GLOBALS PHP_ERRMSG PHP_SELF HTTP_GET_VARS HTTP_POST_VARS HTTP_COOKIE_VARS HTTP_POST_FILES HTTP_ENV_VARS HTTP_SERVER_VARS HTTP_SESSION_VARS HTTP_RAW_POST_DATA HTTP_STATE_VARS _GET _POST _COOKIE _FILES _SERVER _ENV _SERVER _REQUEST _SESSION contained syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END contained syn keyword phpCoreConstant E_ALL E_COMPILE_ERROR E_COMPILE_WARNING E_CORE_ERROR E_CORE_WARNING E_DEPRECATED E_ERROR E_NOTICE E_PARSE E_RECOVERABLE_ERROR E_STRICT E_USER_DEPRECATED E_USER_ERROR E_USER_NOTICE E_USER_WARNING E_WARNING contained syn case ignore syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__ __TRAIT__ contained syn keyword phpFunctions apache_child_terminate apache_get_modules apache_get_version apache_getenv apache_lookup_uri apache_note apache_request_headers apache_response_headers apache_setenv ascii2ebcdic ebcdic2ascii getallheaders virtual contained syn keyword phpFunctions array_change_key_case array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift array_slice array_splice array_sum array_udiff_assoc array_udiff_uassoc array_udiff array_uintersect_assoc array_uintersect_uassoc array_uintersect array_unique array_unshift array_values array_walk_recursive array_walk arsort asort count current each end in_array key_exists key krsort ksort natcasesort natsort next pos prev range reset rsort shuffle sizeof sort uasort uksort usort contained syn keyword phpFunctions aspell_check aspell_new aspell_suggest contained syn keyword phpFunctions bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub contained syn keyword phpFunctions bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite contained syn keyword phpFunctions cal_days_in_month cal_from_jd cal_info cal_to_jd easter_date easter_days frenchtojd gregoriantojd jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd juliantojd unixtojd contained syn keyword phpFunctions ccvs_add ccvs_auth ccvs_command ccvs_count ccvs_delete ccvs_done ccvs_init ccvs_lookup ccvs_new ccvs_report ccvs_return ccvs_reverse ccvs_sale ccvs_status ccvs_textvalue ccvs_void contained syn keyword phpFunctions call_user_method_array call_user_method class_exists get_class_methods get_class_vars get_class get_declared_classes get_object_vars get_parent_class is_a is_subclass_of method_exists contained syn keyword phpFunctions com VARIANT com_addref com_get com_invoke com_isenum com_load_typelib com_load com_propget com_propput com_propset com_release com_set contained syn keyword phpFunctions cpdf_add_annotation cpdf_add_outline cpdf_arc cpdf_begin_text cpdf_circle cpdf_clip cpdf_close cpdf_closepath_fill_stroke cpdf_closepath_stroke cpdf_closepath cpdf_continue_text cpdf_curveto cpdf_end_text cpdf_fill_stroke cpdf_fill cpdf_finalize_page cpdf_finalize cpdf_global_set_document_limits cpdf_import_jpeg cpdf_lineto cpdf_moveto cpdf_newpath cpdf_open cpdf_output_buffer cpdf_page_init cpdf_place_inline_image cpdf_rect cpdf_restore cpdf_rlineto cpdf_rmoveto cpdf_rotate_text cpdf_rotate cpdf_save_to_file cpdf_save cpdf_scale cpdf_set_action_url cpdf_set_char_spacing cpdf_set_creator cpdf_set_current_page cpdf_set_font_directories cpdf_set_font_map_file cpdf_set_font cpdf_set_horiz_scaling cpdf_set_keywords cpdf_set_leading cpdf_set_page_animation cpdf_set_subject cpdf_set_text_matrix cpdf_set_text_pos cpdf_set_text_rendering cpdf_set_text_rise cpdf_set_title cpdf_set_viewer_preferences cpdf_set_word_spacing cpdf_setdash cpdf_setflat cpdf_setgray_fill cpdf_setgray_stroke cpdf_setgray cpdf_setlinecap cpdf_setlinejoin cpdf_setlinewidth cpdf_setmiterlimit cpdf_setrgbcolor_fill cpdf_setrgbcolor_stroke cpdf_setrgbcolor cpdf_show_xy cpdf_show cpdf_stringwidth cpdf_stroke cpdf_text cpdf_translate contained syn keyword phpFunctions crack_check crack_closedict crack_getlastmessage crack_opendict contained syn keyword phpFunctions ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit contained syn keyword phpFunctions curl_close curl_errno curl_error curl_exec curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_setopt curl_version contained syn keyword phpFunctions cybercash_base64_decode cybercash_base64_encode cybercash_decr cybercash_encr contained syn keyword phpFunctions cyrus_authenticate cyrus_bind cyrus_close cyrus_connect cyrus_query cyrus_unbind contained syn keyword phpFunctions checkdate date getdate gettimeofday gmdate gmmktime gmstrftime localtime microtime mktime strftime strtotime time contained syn keyword phpFunctions dba_close dba_delete dba_exists dba_fetch dba_firstkey dba_handlers dba_insert dba_key_split dba_list dba_nextkey dba_open dba_optimize dba_popen dba_replace dba_sync contained syn keyword phpFunctions dbase_add_record dbase_close dbase_create dbase_delete_record dbase_get_header_info dbase_get_record_with_names dbase_get_record dbase_numfields dbase_numrecords dbase_open dbase_pack dbase_replace_record contained syn keyword phpFunctions dblist dbmclose dbmdelete dbmexists dbmfetch dbmfirstkey dbminsert dbmnextkey dbmopen dbmreplace contained syn keyword phpFunctions dbplus_add dbplus_aql dbplus_chdir dbplus_close dbplus_curr dbplus_errcode dbplus_errno dbplus_find dbplus_first dbplus_flush dbplus_freealllocks dbplus_freelock dbplus_freerlocks dbplus_getlock dbplus_getunique dbplus_info dbplus_last dbplus_lockrel dbplus_next dbplus_open dbplus_prev dbplus_rchperm dbplus_rcreate dbplus_rcrtexact dbplus_rcrtlike dbplus_resolve dbplus_restorepos dbplus_rkeys dbplus_ropen dbplus_rquery dbplus_rrename dbplus_rsecindex dbplus_runlink dbplus_rzap dbplus_savepos dbplus_setindex dbplus_setindexbynumber dbplus_sql dbplus_tcl dbplus_tremove dbplus_undo dbplus_undoprepare dbplus_unlockrel dbplus_unselect dbplus_update dbplus_xlockrel dbplus_xunlockrel contained syn keyword phpFunctions dbx_close dbx_compare dbx_connect dbx_error dbx_escape_string dbx_fetch_row dbx_query dbx_sort contained syn keyword phpFunctions dio_close dio_fcntl dio_open dio_read dio_seek dio_stat dio_tcsetattr dio_truncate dio_write contained syn keyword phpFunctions chdir chroot dir closedir getcwd opendir readdir rewinddir scandir contained syn keyword phpFunctions domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet xpath_eval_expression xpath_eval xpath_new_context xptr_eval xptr_new_context contained syn keyword phpMethods name specified value create_attribute create_cdata_section create_comment create_element_ns create_element create_entity_reference create_processing_instruction create_text_node doctype document_element dump_file dump_mem get_element_by_id get_elements_by_tagname html_dump_mem xinclude entities internal_subset name notations public_id system_id get_attribute_node get_attribute get_elements_by_tagname has_attribute remove_attribute set_attribute tagname add_namespace append_child append_sibling attributes child_nodes clone_node dump_node first_child get_content has_attributes has_child_nodes insert_before is_blank_node last_child next_sibling node_name node_type node_value owner_document parent_node prefix previous_sibling remove_child replace_child replace_node set_content set_name set_namespace unlink_node data target process result_dump_file result_dump_mem contained syn keyword phpFunctions dotnet_load contained syn keyword phpFunctions debug_backtrace debug_print_backtrace error_log error_reporting restore_error_handler set_error_handler trigger_error user_error contained syn keyword phpFunctions escapeshellarg escapeshellcmd exec passthru proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec system contained syn keyword phpFunctions fam_cancel_monitor fam_close fam_monitor_collection fam_monitor_directory fam_monitor_file fam_next_event fam_open fam_pending fam_resume_monitor fam_suspend_monitor contained syn keyword phpFunctions fbsql_affected_rows fbsql_autocommit fbsql_change_user fbsql_close fbsql_commit fbsql_connect fbsql_create_blob fbsql_create_clob fbsql_create_db fbsql_data_seek fbsql_database_password fbsql_database fbsql_db_query fbsql_db_status fbsql_drop_db fbsql_errno fbsql_error fbsql_fetch_array fbsql_fetch_assoc fbsql_fetch_field fbsql_fetch_lengths fbsql_fetch_object fbsql_fetch_row fbsql_field_flags fbsql_field_len fbsql_field_name fbsql_field_seek fbsql_field_table fbsql_field_type fbsql_free_result fbsql_get_autostart_info fbsql_hostname fbsql_insert_id fbsql_list_dbs fbsql_list_fields fbsql_list_tables fbsql_next_result fbsql_num_fields fbsql_num_rows fbsql_password fbsql_pconnect fbsql_query fbsql_read_blob fbsql_read_clob fbsql_result fbsql_rollback fbsql_select_db fbsql_set_lob_mode fbsql_set_transaction fbsql_start_db fbsql_stop_db fbsql_tablename fbsql_username fbsql_warnings contained syn keyword phpFunctions fdf_add_doc_javascript fdf_add_template fdf_close fdf_create fdf_enum_values fdf_errno fdf_error fdf_get_ap fdf_get_attachment fdf_get_encoding fdf_get_file fdf_get_flags fdf_get_opt fdf_get_status fdf_get_value fdf_get_version fdf_header fdf_next_field_name fdf_open_string fdf_open fdf_remove_item fdf_save_string fdf_save fdf_set_ap fdf_set_encoding fdf_set_file fdf_set_flags fdf_set_javascript_action fdf_set_opt fdf_set_status fdf_set_submit_form_action fdf_set_target_frame fdf_set_value fdf_set_version contained syn keyword phpFunctions filepro_fieldcount filepro_fieldname filepro_fieldtype filepro_fieldwidth filepro_retrieve filepro_rowcount filepro contained syn keyword phpFunctions basename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink contained syn keyword phpFunctions fribidi_log2vis contained syn keyword phpFunctions ftp_alloc ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get_option ftp_get ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_ssl_connect ftp_systype contained syn keyword phpFunctions call_user_func_array call_user_func create_function func_get_arg func_get_args func_num_args function_exists get_defined_functions register_shutdown_function register_tick_function unregister_tick_function contained syn keyword phpFunctions bind_textdomain_codeset bindtextdomain dcgettext dcngettext dgettext dngettext gettext ngettext textdomain contained syn keyword phpFunctions gmp_abs gmp_add gmp_and gmp_clrbit gmp_cmp gmp_com gmp_div_q gmp_div_qr gmp_div_r gmp_div gmp_divexact gmp_fact gmp_gcd gmp_gcdext gmp_hamdist gmp_init gmp_intval gmp_invert gmp_jacobi gmp_legendre gmp_mod gmp_mul gmp_neg gmp_or gmp_perfect_square gmp_popcount gmp_pow gmp_powm gmp_prob_prime gmp_random gmp_scan0 gmp_scan1 gmp_setbit gmp_sign gmp_sqrt gmp_sqrtrem gmp_sqrtrm gmp_strval gmp_sub gmp_xor contained syn keyword phpFunctions header headers_list headers_sent setcookie contained syn keyword phpFunctions hw_api_attribute hwapi_hgcsp hw_api_content hw_api_object contained syn keyword phpMethods key langdepvalue value values checkin checkout children mimetype read content copy dbstat dcstat dstanchors dstofsrcanchors count reason find ftstat hwstat identify info insert insertanchor insertcollection insertdocument link lock move assign attreditable count insert remove title value object objectbyanchor parents description type remove replace setcommitedversion srcanchors srcsofdst unlock user userlist contained syn keyword phpFunctions hw_Array2Objrec hw_changeobject hw_Children hw_ChildrenObj hw_Close hw_Connect hw_connection_info hw_cp hw_Deleteobject hw_DocByAnchor hw_DocByAnchorObj hw_Document_Attributes hw_Document_BodyTag hw_Document_Content hw_Document_SetContent hw_Document_Size hw_dummy hw_EditText hw_Error hw_ErrorMsg hw_Free_Document hw_GetAnchors hw_GetAnchorsObj hw_GetAndLock hw_GetChildColl hw_GetChildCollObj hw_GetChildDocColl hw_GetChildDocCollObj hw_GetObject hw_GetObjectByQuery hw_GetObjectByQueryColl hw_GetObjectByQueryCollObj hw_GetObjectByQueryObj hw_GetParents hw_GetParentsObj hw_getrellink hw_GetRemote hw_getremotechildren hw_GetSrcByDestObj hw_GetText hw_getusername hw_Identify hw_InCollections hw_Info hw_InsColl hw_InsDoc hw_insertanchors hw_InsertDocument hw_InsertObject hw_mapid hw_Modifyobject hw_mv hw_New_Document hw_objrec2array hw_Output_Document hw_pConnect hw_PipeDocument hw_Root hw_setlinkroot hw_stat hw_Unlock hw_Who contained syn keyword phpFunctions ibase_add_user ibase_affected_rows ibase_blob_add ibase_blob_cancel ibase_blob_close ibase_blob_create ibase_blob_echo ibase_blob_get ibase_blob_import ibase_blob_info ibase_blob_open ibase_close ibase_commit_ret ibase_commit ibase_connect ibase_delete_user ibase_drop_db ibase_errcode ibase_errmsg ibase_execute ibase_fetch_assoc ibase_fetch_object ibase_fetch_row ibase_field_info ibase_free_event_handler ibase_free_query ibase_free_result ibase_gen_id ibase_modify_user ibase_name_result ibase_num_fields ibase_num_params ibase_param_info ibase_pconnect ibase_prepare ibase_query ibase_rollback_ret ibase_rollback ibase_set_event_handler ibase_timefmt ibase_trans ibase_wait_event contained syn keyword phpFunctions iconv_get_encoding iconv_mime_decode_headers iconv_mime_decode iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr iconv ob_iconv_handler contained syn keyword phpFunctions ifx_affected_rows ifx_blobinfile_mode ifx_byteasvarchar ifx_close ifx_connect ifx_copy_blob ifx_create_blob ifx_create_char ifx_do ifx_error ifx_errormsg ifx_fetch_row ifx_fieldproperties ifx_fieldtypes ifx_free_blob ifx_free_char ifx_free_result ifx_get_blob ifx_get_char ifx_getsqlca ifx_htmltbl_result ifx_nullformat ifx_num_fields ifx_num_rows ifx_pconnect ifx_prepare ifx_query ifx_textasvarchar ifx_update_blob ifx_update_char ifxus_close_slob ifxus_create_slob ifxus_free_slob ifxus_open_slob ifxus_read_slob ifxus_seek_slob ifxus_tell_slob ifxus_write_slob contained syn keyword phpFunctions exif_imagetype exif_read_data exif_thumbnail gd_info getimagesize image_type_to_mime_type image2wbmp imagealphablending imageantialias imagearc imagechar imagecharup imagecolorallocate imagecolorallocatealpha imagecolorat imagecolorclosest imagecolorclosestalpha imagecolorclosesthwb imagecolordeallocate imagecolorexact imagecolorexactalpha imagecolormatch imagecolorresolve imagecolorresolvealpha imagecolorset imagecolorsforindex imagecolorstotal imagecolortransparent imagecopy imagecopymerge imagecopymergegray imagecopyresampled imagecopyresized imagecreate imagecreatefromgd2 imagecreatefromgd2part imagecreatefromgd imagecreatefromgif imagecreatefromjpeg imagecreatefrompng imagecreatefromstring imagecreatefromwbmp imagecreatefromxbm imagecreatefromxpm imagecreatetruecolor imagedashedline imagedestroy imageellipse imagefill imagefilledarc imagefilledellipse imagefilledpolygon imagefilledrectangle imagefilltoborder imagefontheight imagefontwidth imageftbbox imagefttext imagegammacorrect imagegd2 imagegd imagegif imageinterlace imageistruecolor imagejpeg imageline imageloadfont imagepalettecopy imagepng imagepolygon imagepsbbox imagepscopyfont imagepsencodefont imagepsextendfont imagepsfreefont imagepsloadfont imagepsslantfont imagepstext imagerectangle imagerotate imagesavealpha imagesetbrush imagesetpixel imagesetstyle imagesetthickness imagesettile imagestring imagestringup imagesx imagesy imagetruecolortopalette imagettfbbox imagettftext imagetypes imagewbmp iptcembed iptcparse jpeg2wbmp png2wbmp read_exif_data contained syn keyword phpFunctions imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct imap_check imap_clearflag_full imap_close imap_createmailbox imap_delete imap_deletemailbox imap_errors imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_get_quota imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers imap_last_error imap_list imap_listmailbox imap_listscan imap_listsubscribed imap_lsub imap_mail_compose imap_mail_copy imap_mail_move imap_mail imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open imap_ping imap_qprint imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers imap_rfc822_write_address imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode imap_utf7_encode imap_utf8 contained syn keyword phpFunctions assert_options assert dl extension_loaded get_cfg_var get_current_user get_defined_constants get_extension_funcs get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_required_files getenv getlastmod getmygid getmyinode getmypid getmyuid getopt getrusage ini_alter ini_get_all ini_get ini_restore ini_set main memory_get_usage php_ini_scanned_files php_logo_guid php_sapi_name php_uname phpcredits phpinfo phpversion putenv restore_include_path set_include_path set_magic_quotes_runtime set_time_limit version_compare zend_logo_guid zend_version contained syn keyword phpFunctions ingres_autocommit ingres_close ingres_commit ingres_connect ingres_fetch_array ingres_fetch_object ingres_fetch_row ingres_field_length ingres_field_name ingres_field_nullable ingres_field_precision ingres_field_scale ingres_field_type ingres_num_fields ingres_num_rows ingres_pconnect ingres_query ingres_rollback contained syn keyword phpFunctions ircg_channel_mode ircg_disconnect ircg_fetch_error_msg ircg_get_username ircg_html_encode ircg_ignore_add ircg_ignore_del ircg_is_conn_alive ircg_join ircg_kick ircg_lookup_format_messages ircg_msg ircg_nick ircg_nickname_escape ircg_nickname_unescape ircg_notice ircg_part ircg_pconnect ircg_register_format_messages ircg_set_current ircg_set_file ircg_set_on_die ircg_topic ircg_whois contained syn keyword phpFunctions java_last_exception_clear java_last_exception_get contained syn keyword phpFunctions json_decode json_encode json_last_error contained syn keyword phpFunctions ldap_8859_to_t61 ldap_add ldap_bind ldap_close ldap_compare ldap_connect ldap_count_entries ldap_delete ldap_dn2ufn ldap_err2str ldap_errno ldap_error ldap_explode_dn ldap_first_attribute ldap_first_entry ldap_first_reference ldap_free_result ldap_get_attributes ldap_get_dn ldap_get_entries ldap_get_option ldap_get_values_len ldap_get_values ldap_list ldap_mod_add ldap_mod_del ldap_mod_replace ldap_modify ldap_next_attribute ldap_next_entry ldap_next_reference ldap_parse_reference ldap_parse_result ldap_read ldap_rename ldap_search ldap_set_option ldap_set_rebind_proc ldap_sort ldap_start_tls ldap_t61_to_8859 ldap_unbind contained syn keyword phpFunctions lzf_compress lzf_decompress lzf_optimized_for contained syn keyword phpFunctions ezmlm_hash mail contained syn keyword phpFunctions mailparse_determine_best_xfer_encoding mailparse_msg_create mailparse_msg_extract_part_file mailparse_msg_extract_part mailparse_msg_free mailparse_msg_get_part_data mailparse_msg_get_part mailparse_msg_get_structure mailparse_msg_parse_file mailparse_msg_parse mailparse_rfc822_parse_addresses mailparse_stream_encode mailparse_uudecode_all contained syn keyword phpFunctions abs acos acosh asin asinh atan2 atan atanh base_convert bindec ceil cos cosh decbin dechex decoct deg2rad exp expm1 floor fmod getrandmax hexdec hypot is_finite is_infinite is_nan lcg_value log10 log1p log max min mt_getrandmax mt_rand mt_srand octdec pi pow rad2deg rand round sin sinh sqrt srand tan tanh contained syn keyword phpFunctions mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_ereg_match mb_ereg_replace mb_ereg_search_getpos mb_ereg_search_getregs mb_ereg_search_init mb_ereg_search_pos mb_ereg_search_regs mb_ereg_search_setpos mb_ereg_search mb_ereg mb_eregi_replace mb_eregi mb_get_info mb_http_input mb_http_output mb_internal_encoding mb_language mb_output_handler mb_parse_str mb_preferred_mime_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_strlen mb_strpos mb_strrpos mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr contained syn keyword phpFunctions mcal_append_event mcal_close mcal_create_calendar mcal_date_compare mcal_date_valid mcal_day_of_week mcal_day_of_year mcal_days_in_month mcal_delete_calendar mcal_delete_event mcal_event_add_attribute mcal_event_init mcal_event_set_alarm mcal_event_set_category mcal_event_set_class mcal_event_set_description mcal_event_set_end mcal_event_set_recur_daily mcal_event_set_recur_monthly_mday mcal_event_set_recur_monthly_wday mcal_event_set_recur_none mcal_event_set_recur_weekly mcal_event_set_recur_yearly mcal_event_set_start mcal_event_set_title mcal_expunge mcal_fetch_current_stream_event mcal_fetch_event mcal_is_leap_year mcal_list_alarms mcal_list_events mcal_next_recurrence mcal_open mcal_popen mcal_rename_calendar mcal_reopen mcal_snooze mcal_store_event mcal_time_valid mcal_week_of_year contained syn keyword phpFunctions mcrypt_cbc mcrypt_cfb mcrypt_create_iv mcrypt_decrypt mcrypt_ecb mcrypt_enc_get_algorithms_name mcrypt_enc_get_block_size mcrypt_enc_get_iv_size mcrypt_enc_get_key_size mcrypt_enc_get_modes_name mcrypt_enc_get_supported_key_sizes mcrypt_enc_is_block_algorithm_mode mcrypt_enc_is_block_algorithm mcrypt_enc_is_block_mode mcrypt_enc_self_test mcrypt_encrypt mcrypt_generic_deinit mcrypt_generic_end mcrypt_generic_init mcrypt_generic mcrypt_get_block_size mcrypt_get_cipher_name mcrypt_get_iv_size mcrypt_get_key_size mcrypt_list_algorithms mcrypt_list_modes mcrypt_module_close mcrypt_module_get_algo_block_size mcrypt_module_get_algo_key_size mcrypt_module_get_supported_key_sizes mcrypt_module_is_block_algorithm_mode mcrypt_module_is_block_algorithm mcrypt_module_is_block_mode mcrypt_module_open mcrypt_module_self_test mcrypt_ofb mdecrypt_generic contained syn keyword phpFunctions mcve_adduser mcve_adduserarg mcve_bt mcve_checkstatus mcve_chkpwd mcve_chngpwd mcve_completeauthorizations mcve_connect mcve_connectionerror mcve_deleteresponse mcve_deletetrans mcve_deleteusersetup mcve_deluser mcve_destroyconn mcve_destroyengine mcve_disableuser mcve_edituser mcve_enableuser mcve_force mcve_getcell mcve_getcellbynum mcve_getcommadelimited mcve_getheader mcve_getuserarg mcve_getuserparam mcve_gft mcve_gl mcve_gut mcve_initconn mcve_initengine mcve_initusersetup mcve_iscommadelimited mcve_liststats mcve_listusers mcve_maxconntimeout mcve_monitor mcve_numcolumns mcve_numrows mcve_override mcve_parsecommadelimited mcve_ping mcve_preauth mcve_preauthcompletion mcve_qc mcve_responseparam mcve_return mcve_returncode mcve_returnstatus mcve_sale mcve_setblocking mcve_setdropfile mcve_setip mcve_setssl_files mcve_setssl mcve_settimeout mcve_settle mcve_text_avs mcve_text_code mcve_text_cv mcve_transactionauth mcve_transactionavs mcve_transactionbatch mcve_transactioncv mcve_transactionid mcve_transactionitem mcve_transactionssent mcve_transactiontext mcve_transinqueue mcve_transnew mcve_transparam mcve_transsend mcve_ub mcve_uwait mcve_verifyconnection mcve_verifysslcert mcve_void contained syn keyword phpFunctions mhash_count mhash_get_block_size mhash_get_hash_name mhash_keygen_s2k mhash contained syn keyword phpFunctions mime_content_type contained syn keyword phpFunctions ming_setcubicthreshold ming_setscale ming_useswfversion SWFAction SWFBitmap swfbutton_keypress SWFbutton SWFDisplayItem SWFFill SWFFont SWFGradient SWFMorph SWFMovie SWFShape SWFSprite SWFText SWFTextField contained syn keyword phpMethods getHeight getWidth addAction addShape setAction setdown setHit setOver setUp addColor move moveTo multColor remove Rotate rotateTo scale scaleTo setDepth setName setRatio skewX skewXTo skewY skewYTo moveTo rotateTo scaleTo skewXTo skewYTo getwidth addEntry getshape1 getshape2 add nextframe output remove save setbackground setdimension setframes setrate streammp3 addFill drawCurve drawCurveTo drawLine drawLineTo movePen movePenTo setLeftFill setLine setRightFill add nextframe remove setframes addString getWidth moveTo setColor setFont setHeight setSpacing addstring align setbounds setcolor setFont setHeight setindentation setLeftMargin setLineSpacing setMargins setname setrightMargin contained syn keyword phpFunctions connection_aborted connection_status connection_timeout constant define defined die eval exit get_browser highlight_file highlight_string ignore_user_abort pack show_source sleep uniqid unpack usleep contained syn keyword phpFunctions udm_add_search_limit udm_alloc_agent udm_api_version udm_cat_list udm_cat_path udm_check_charset udm_check_stored udm_clear_search_limits udm_close_stored udm_crc32 udm_errno udm_error udm_find udm_free_agent udm_free_ispell_data udm_free_res udm_get_doc_count udm_get_res_field udm_get_res_param udm_load_ispell_data udm_open_stored udm_set_agent_param contained syn keyword phpFunctions msession_connect msession_count msession_create msession_destroy msession_disconnect msession_find msession_get_array msession_get msession_getdata msession_inc msession_list msession_listvar msession_lock msession_plugin msession_randstr msession_set_array msession_set msession_setdata msession_timeout msession_uniq msession_unlock contained syn keyword phpFunctions msql_affected_rows msql_close msql_connect msql_create_db msql_createdb msql_data_seek msql_dbname msql_drop_db msql_dropdb msql_error msql_fetch_array msql_fetch_field msql_fetch_object msql_fetch_row msql_field_seek msql_fieldflags msql_fieldlen msql_fieldname msql_fieldtable msql_fieldtype msql_free_result msql_freeresult msql_list_dbs msql_list_fields msql_list_tables msql_listdbs msql_listfields msql_listtables msql_num_fields msql_num_rows msql_numfields msql_numrows msql_pconnect msql_query msql_regcase msql_result msql_select_db msql_selectdb msql_tablename msql contained syn keyword phpFunctions mssql_bind mssql_close mssql_connect mssql_data_seek mssql_execute mssql_fetch_array mssql_fetch_assoc mssql_fetch_batch mssql_fetch_field mssql_fetch_object mssql_fetch_row mssql_field_length mssql_field_name mssql_field_seek mssql_field_type mssql_free_result mssql_free_statement mssql_get_last_message mssql_guid_string mssql_init mssql_min_error_severity mssql_min_message_severity mssql_next_result mssql_num_fields mssql_num_rows mssql_pconnect mssql_query mssql_result mssql_rows_affected mssql_select_db contained syn keyword phpFunctions muscat_close muscat_get muscat_give muscat_setup_net muscat_setup contained syn keyword phpFunctions mysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query contained syn keyword phpFunctions mysqli_affected_rows mysqli_autocommit mysqli_bind_param mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno mysqli_error mysqli_execute mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_fetch mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_master_query mysqli_num_fields mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare_result mysqli_prepare mysqli_profiler mysqli_query mysqli_read_query_result mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reload mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_slave_query mysqli_ssl_set mysqli_stat mysqli_stmt_affected_rows mysqli_stmt_close mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count contained syn keyword phpFunctions ncurses_addch ncurses_addchnstr ncurses_addchstr ncurses_addnstr ncurses_addstr ncurses_assume_default_colors ncurses_attroff ncurses_attron ncurses_attrset ncurses_baudrate ncurses_beep ncurses_bkgd ncurses_bkgdset ncurses_border ncurses_bottom_panel ncurses_can_change_color ncurses_cbreak ncurses_clear ncurses_clrtobot ncurses_clrtoeol ncurses_color_content ncurses_color_set ncurses_curs_set ncurses_def_prog_mode ncurses_def_shell_mode ncurses_define_key ncurses_del_panel ncurses_delay_output ncurses_delch ncurses_deleteln ncurses_delwin ncurses_doupdate ncurses_echo ncurses_echochar ncurses_end ncurses_erase ncurses_erasechar ncurses_filter ncurses_flash ncurses_flushinp ncurses_getch ncurses_getmaxyx ncurses_getmouse ncurses_getyx ncurses_halfdelay ncurses_has_colors ncurses_has_ic ncurses_has_il ncurses_has_key ncurses_hide_panel ncurses_hline ncurses_inch ncurses_init_color ncurses_init_pair ncurses_init ncurses_insch ncurses_insdelln ncurses_insertln ncurses_insstr ncurses_instr ncurses_isendwin ncurses_keyok ncurses_keypad ncurses_killchar ncurses_longname ncurses_meta ncurses_mouse_trafo ncurses_mouseinterval ncurses_mousemask ncurses_move_panel ncurses_move ncurses_mvaddch ncurses_mvaddchnstr ncurses_mvaddchstr ncurses_mvaddnstr ncurses_mvaddstr ncurses_mvcur ncurses_mvdelch ncurses_mvgetch ncurses_mvhline ncurses_mvinch ncurses_mvvline ncurses_mvwaddstr ncurses_napms ncurses_new_panel ncurses_newpad ncurses_newwin ncurses_nl ncurses_nocbreak ncurses_noecho ncurses_nonl ncurses_noqiflush ncurses_noraw ncurses_pair_content ncurses_panel_above ncurses_panel_below ncurses_panel_window ncurses_pnoutrefresh ncurses_prefresh ncurses_putp ncurses_qiflush ncurses_raw ncurses_refresh ncurses_replace_panel ncurses_reset_prog_mode ncurses_reset_shell_mode ncurses_resetty ncurses_savetty ncurses_scr_dump ncurses_scr_init ncurses_scr_restore ncurses_scr_set ncurses_scrl ncurses_show_panel ncurses_slk_attr ncurses_slk_attroff ncurses_slk_attron ncurses_slk_attrset ncurses_slk_clear ncurses_slk_color ncurses_slk_init ncurses_slk_noutrefresh ncurses_slk_refresh ncurses_slk_restore ncurses_slk_set ncurses_slk_touch ncurses_standend ncurses_standout ncurses_start_color ncurses_termattrs ncurses_termname ncurses_timeout ncurses_top_panel ncurses_typeahead ncurses_ungetch ncurses_ungetmouse ncurses_update_panels ncurses_use_default_colors ncurses_use_env ncurses_use_extended_names ncurses_vidattr ncurses_vline ncurses_waddch ncurses_waddstr ncurses_wattroff ncurses_wattron ncurses_wattrset ncurses_wborder ncurses_wclear ncurses_wcolor_set ncurses_werase ncurses_wgetch ncurses_whline ncurses_wmouse_trafo ncurses_wmove ncurses_wnoutrefresh ncurses_wrefresh ncurses_wstandend ncurses_wstandout ncurses_wvline contained syn keyword phpFunctions checkdnsrr closelog debugger_off debugger_on define_syslog_variables dns_check_record dns_get_mx dns_get_record fsockopen gethostbyaddr gethostbyname gethostbynamel getmxrr getprotobyname getprotobynumber getservbyname getservbyport ip2long long2ip openlog pfsockopen socket_get_status socket_set_blocking socket_set_timeout syslog contained syn keyword phpFunctions yp_all yp_cat yp_err_string yp_errno yp_first yp_get_default_domain yp_master yp_match yp_next yp_order contained syn keyword phpFunctions notes_body notes_copy_db notes_create_db notes_create_note notes_drop_db notes_find_note notes_header_info notes_list_msgs notes_mark_read notes_mark_unread notes_nav_create notes_search notes_unread notes_version contained syn keyword phpFunctions nsapi_request_headers nsapi_response_headers nsapi_virtual contained syn keyword phpFunctions aggregate_info aggregate_methods_by_list aggregate_methods_by_regexp aggregate_methods aggregate_properties_by_list aggregate_properties_by_regexp aggregate_properties aggregate aggregation_info deaggregate contained syn keyword phpFunctions ocibindbyname ocicancel ocicloselob ocicollappend ocicollassign ocicollassignelem ocicollgetelem ocicollmax ocicollsize ocicolltrim ocicolumnisnull ocicolumnname ocicolumnprecision ocicolumnscale ocicolumnsize ocicolumntype ocicolumntyperaw ocicommit ocidefinebyname ocierror ociexecute ocifetch ocifetchinto ocifetchstatement ocifreecollection ocifreecursor ocifreedesc ocifreestatement ociinternaldebug ociloadlob ocilogoff ocilogon ocinewcollection ocinewcursor ocinewdescriptor ocinlogon ocinumcols ociparse ociplogon ociresult ocirollback ocirowcount ocisavelob ocisavelobfile ociserverversion ocisetprefetch ocistatementtype ociwritelobtofile ociwritetemporarylob contained syn keyword phpFunctions odbc_autocommit odbc_binmode odbc_close_all odbc_close odbc_columnprivileges odbc_columns odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns odbc_procedures odbc_result_all odbc_result odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics odbc_tableprivileges odbc_tables contained syn keyword phpFunctions openssl_cipher_iv_length openssl_csr_export_to_file openssl_csr_export openssl_csr_get_public_key openssl_csr_get_subject openssl_csr_new openssl_csr_sign openssl_decrypt openssl_dh_compute_key openssl_digest openssl_encrypt openssl_error_string openssl_free_key openssl_get_cert_locations openssl_get_cipher_methods openssl_get_md_methods openssl_get_privatekey openssl_get_publickey openssl_open openssl_pbkdf2 openssl_pkcs12_export_to_file openssl_pkcs12_export openssl_pkcs12_read openssl_pkcs7_decrypt openssl_pkcs7_encrypt openssl_pkcs7_sign openssl_pkcs7_verify openssl_pkey_export_to_file openssl_pkey_export openssl_pkey_free openssl_pkey_get_details openssl_pkey_get_private openssl_pkey_get_public openssl_pkey_new openssl_private_decrypt openssl_private_encrypt openssl_public_decrypt openssl_public_encrypt openssl_random_pseudo_bytes openssl_seal openssl_sign openssl_spki_export_challenge openssl_spki_export openssl_spki_new openssl_spki_verify openssl_verify openssl_x509_check_private_key openssl_x509_checkpurpose openssl_x509_export_to_file openssl_x509_export openssl_x509_fingerprint openssl_x509_free openssl_x509_parse openssl_x509_read contained syn keyword phpFunctions ora_bind ora_close ora_columnname ora_columnsize ora_columntype ora_commit ora_commitoff ora_commiton ora_do ora_error ora_errorcode ora_exec ora_fetch_into ora_fetch ora_getcolumn ora_logoff ora_logon ora_numcols ora_numrows ora_open ora_parse ora_plogon ora_rollback contained syn keyword phpFunctions flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_implicit_flush ob_list_handlers ob_start output_add_rewrite_var output_reset_rewrite_vars contained syn keyword phpFunctions overload contained syn keyword phpFunctions ovrimos_close ovrimos_commit ovrimos_connect ovrimos_cursor ovrimos_exec ovrimos_execute ovrimos_fetch_into ovrimos_fetch_row ovrimos_field_len ovrimos_field_name ovrimos_field_num ovrimos_field_type ovrimos_free_result ovrimos_longreadlen ovrimos_num_fields ovrimos_num_rows ovrimos_prepare ovrimos_result_all ovrimos_result ovrimos_rollback contained syn keyword phpFunctions pcntl_exec pcntl_fork pcntl_signal pcntl_waitpid pcntl_wexitstatus pcntl_wifexited pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig contained syn keyword phpFunctions preg_grep preg_match_all preg_match preg_quote preg_replace_callback preg_replace preg_split contained syn keyword phpFunctions pdf_add_annotation pdf_add_bookmark pdf_add_launchlink pdf_add_locallink pdf_add_note pdf_add_outline pdf_add_pdflink pdf_add_thumbnail pdf_add_weblink pdf_arc pdf_arcn pdf_attach_file pdf_begin_page pdf_begin_pattern pdf_begin_template pdf_circle pdf_clip pdf_close_image pdf_close_pdi_page pdf_close_pdi pdf_close pdf_closepath_fill_stroke pdf_closepath_stroke pdf_closepath pdf_concat pdf_continue_text pdf_curveto pdf_delete pdf_end_page pdf_end_pattern pdf_end_template pdf_endpath pdf_fill_stroke pdf_fill pdf_findfont pdf_get_buffer pdf_get_font pdf_get_fontname pdf_get_fontsize pdf_get_image_height pdf_get_image_width pdf_get_majorversion pdf_get_minorversion pdf_get_parameter pdf_get_pdi_parameter pdf_get_pdi_value pdf_get_value pdf_initgraphics pdf_lineto pdf_makespotcolor pdf_moveto pdf_new pdf_open_CCITT pdf_open_file pdf_open_gif pdf_open_image_file pdf_open_image pdf_open_jpeg pdf_open_memory_image pdf_open_pdi_page pdf_open_pdi pdf_open_png pdf_open_tiff pdf_open pdf_place_image pdf_place_pdi_page pdf_rect pdf_restore pdf_rotate pdf_save pdf_scale pdf_set_border_color pdf_set_border_dash pdf_set_border_style pdf_set_char_spacing pdf_set_duration pdf_set_font pdf_set_horiz_scaling pdf_set_info_author pdf_set_info_creator pdf_set_info_keywords pdf_set_info_subject pdf_set_info_title pdf_set_info pdf_set_leading pdf_set_parameter pdf_set_text_matrix pdf_set_text_pos pdf_set_text_rendering pdf_set_text_rise pdf_set_value pdf_set_word_spacing pdf_setcolor pdf_setdash pdf_setflat pdf_setfont pdf_setgray_fill pdf_setgray_stroke pdf_setgray pdf_setlinecap pdf_setlinejoin pdf_setlinewidth pdf_setmatrix pdf_setmiterlimit pdf_setpolydash pdf_setrgbcolor_fill pdf_setrgbcolor_stroke pdf_setrgbcolor pdf_show_boxed pdf_show_xy pdf_show pdf_skew pdf_stringwidth pdf_stroke pdf_translate contained syn keyword phpFunctions pfpro_cleanup pfpro_init pfpro_process_raw pfpro_process pfpro_version contained syn keyword phpFunctions pg_affected_rows pg_cancel_query pg_client_encoding pg_close pg_connect pg_connection_busy pg_connection_reset pg_connection_status pg_convert pg_copy_from pg_copy_to pg_dbname pg_delete pg_end_copy pg_escape_bytea pg_escape_string pg_fetch_all pg_fetch_array pg_fetch_assoc pg_fetch_object pg_fetch_result pg_fetch_row pg_field_is_null pg_field_name pg_field_num pg_field_prtlen pg_field_size pg_field_type pg_free_result pg_get_notify pg_get_pid pg_get_result pg_host pg_insert pg_last_error pg_last_notice pg_last_oid pg_lo_close pg_lo_create pg_lo_export pg_lo_import pg_lo_open pg_lo_read_all pg_lo_read pg_lo_seek pg_lo_tell pg_lo_unlink pg_lo_write pg_meta_data pg_num_fields pg_num_rows pg_options pg_pconnect pg_ping pg_port pg_put_line pg_query pg_result_error pg_result_seek pg_result_status pg_select pg_send_query pg_set_client_encoding pg_trace pg_tty pg_unescape_bytea pg_untrace pg_update contained syn keyword phpFunctions posix_ctermid posix_get_last_error posix_getcwd posix_getegid posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid posix_isatty posix_kill posix_mkfifo posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid posix_setuid posix_strerror posix_times posix_ttyname posix_uname contained syn keyword phpFunctions printer_abort printer_close printer_create_brush printer_create_dc printer_create_font printer_create_pen printer_delete_brush printer_delete_dc printer_delete_font printer_delete_pen printer_draw_bmp printer_draw_chord printer_draw_elipse printer_draw_line printer_draw_pie printer_draw_rectangle printer_draw_roundrect printer_draw_text printer_end_doc printer_end_page printer_get_option printer_list printer_logical_fontheight printer_open printer_select_brush printer_select_font printer_select_pen printer_set_option printer_start_doc printer_start_page printer_write contained syn keyword phpFunctions pspell_add_to_personal pspell_add_to_session pspell_check pspell_clear_session pspell_config_create pspell_config_ignore pspell_config_mode pspell_config_personal pspell_config_repl pspell_config_runtogether pspell_config_save_repl pspell_new_config pspell_new_personal pspell_new pspell_save_wordlist pspell_store_replacement pspell_suggest contained syn keyword phpFunctions qdom_error qdom_tree contained syn keyword phpFunctions readline_add_history readline_clear_history readline_completion_function readline_info readline_list_history readline_read_history readline_write_history readline contained syn keyword phpFunctions recode_file recode_string recode contained syn keyword phpFunctions ereg_replace ereg eregi_replace eregi split spliti sql_regcase contained syn keyword phpFunctions ftok msg_get_queue msg_receive msg_remove_queue msg_send msg_set_queue msg_stat_queue sem_acquire sem_get sem_release sem_remove shm_attach shm_detach shm_get_var shm_put_var shm_remove_var shm_remove contained syn keyword phpFunctions sesam_affected_rows sesam_commit sesam_connect sesam_diagnostic sesam_disconnect sesam_errormsg sesam_execimm sesam_fetch_array sesam_fetch_result sesam_fetch_row sesam_field_array sesam_field_name sesam_free_result sesam_num_fields sesam_query sesam_rollback sesam_seek_row sesam_settransaction contained syn keyword phpFunctions session_cache_expire session_cache_limiter session_decode session_destroy session_encode session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister session_unset session_write_close contained syn keyword phpFunctions shmop_close shmop_delete shmop_open shmop_read shmop_size shmop_write contained syn keyword phpFunctions snmp_get_quick_print snmp_set_quick_print snmpget snmprealwalk snmpset snmpwalk snmpwalkoid contained syn keyword phpFunctions socket_accept socket_bind socket_clear_error socket_close socket_connect socket_create_listen socket_create_pair socket_create socket_get_option socket_getpeername socket_getsockname socket_iovec_add socket_iovec_alloc socket_iovec_delete socket_iovec_fetch socket_iovec_free socket_iovec_set socket_last_error socket_listen socket_read socket_readv socket_recv socket_recvfrom socket_recvmsg socket_select socket_send socket_sendmsg socket_sendto socket_set_block socket_set_nonblock socket_set_option socket_shutdown socket_strerror socket_write socket_writev contained syn keyword phpFunctions sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_fetch_array sqlite_fetch_single sqlite_fetch_string sqlite_field_name sqlite_has_more sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_query sqlite_rewind sqlite_seek sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query contained syn keyword phpFunctions stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register contained syn keyword phpFunctions addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string count_chars crc32 crypt explode fprintf get_html_translation_table hebrev hebrevc html_entity_decode htmlentities htmlspecialchars implode join levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br number_format ord parse_str print printf quoted_printable_decode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_compare substr_count substr_replace substr trim ucfirst ucwords vprintf vsprintf wordwrap contained syn keyword phpFunctions swf_actiongeturl swf_actiongotoframe swf_actiongotolabel swf_actionnextframe swf_actionplay swf_actionprevframe swf_actionsettarget swf_actionstop swf_actiontogglequality swf_actionwaitforframe swf_addbuttonrecord swf_addcolor swf_closefile swf_definebitmap swf_definefont swf_defineline swf_definepoly swf_definerect swf_definetext swf_endbutton swf_enddoaction swf_endshape swf_endsymbol swf_fontsize swf_fontslant swf_fonttracking swf_getbitmapinfo swf_getfontinfo swf_getframe swf_labelframe swf_lookat swf_modifyobject swf_mulcolor swf_nextid swf_oncondition swf_openfile swf_ortho2 swf_ortho swf_perspective swf_placeobject swf_polarview swf_popmatrix swf_posround swf_pushmatrix swf_removeobject swf_rotate swf_scale swf_setfont swf_setframe swf_shapearc swf_shapecurveto3 swf_shapecurveto swf_shapefillbitmapclip swf_shapefillbitmaptile swf_shapefilloff swf_shapefillsolid swf_shapelinesolid swf_shapelineto swf_shapemoveto swf_showframe swf_startbutton swf_startdoaction swf_startshape swf_startsymbol swf_textwidth swf_translate swf_viewport contained syn keyword phpFunctions sybase_affected_rows sybase_close sybase_connect sybase_data_seek sybase_deadlock_retry_count sybase_fetch_array sybase_fetch_assoc sybase_fetch_field sybase_fetch_object sybase_fetch_row sybase_field_seek sybase_free_result sybase_get_last_message sybase_min_client_severity sybase_min_error_severity sybase_min_message_severity sybase_min_server_severity sybase_num_fields sybase_num_rows sybase_pconnect sybase_query sybase_result sybase_select_db sybase_set_message_handler sybase_unbuffered_query contained syn keyword phpFunctions tidy_access_count tidy_clean_repair tidy_config_count tidy_diagnose tidy_error_count tidy_get_body tidy_get_config tidy_get_error_buffer tidy_get_head tidy_get_html_ver tidy_get_html tidy_get_output tidy_get_release tidy_get_root tidy_get_status tidy_getopt tidy_is_xhtml tidy_load_config tidy_parse_file tidy_parse_string tidy_repair_file tidy_repair_string tidy_reset_config tidy_save_config tidy_set_encoding tidy_setopt tidy_warning_count contained syn keyword phpMethods attributes children get_attr get_nodes has_children has_siblings is_asp is_comment is_html is_jsp is_jste is_text is_xhtml is_xml next prev tidy_node contained syn keyword phpFunctions token_get_all token_name contained syn keyword phpFunctions base64_decode base64_encode get_meta_tags http_build_query parse_url rawurldecode rawurlencode urldecode urlencode contained syn keyword phpFunctions doubleval empty floatval get_defined_vars get_resource_type gettype import_request_variables intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset var_dump var_export contained syn keyword phpFunctions vpopmail_add_alias_domain_ex vpopmail_add_alias_domain vpopmail_add_domain_ex vpopmail_add_domain vpopmail_add_user vpopmail_alias_add vpopmail_alias_del_domain vpopmail_alias_del vpopmail_alias_get_all vpopmail_alias_get vpopmail_auth_user vpopmail_del_domain_ex vpopmail_del_domain vpopmail_del_user vpopmail_error vpopmail_passwd vpopmail_set_user_quota contained syn keyword phpFunctions w32api_deftype w32api_init_dtype w32api_invoke_function w32api_register_function w32api_set_call_method contained syn keyword phpFunctions wddx_add_vars wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars contained syn keyword phpFunctions utf8_decode utf8_encode xml_error_string xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse_into_struct xml_parse xml_parser_create_ns xml_parser_create xml_parser_free xml_parser_get_option xml_parser_set_option xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler contained syn keyword phpFunctions xmlrpc_decode_request xmlrpc_decode xmlrpc_encode_request xmlrpc_encode xmlrpc_get_type xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback xmlrpc_server_register_method xmlrpc_set_type contained syn keyword phpFunctions xslt_create xslt_errno xslt_error xslt_free xslt_output_process xslt_set_base xslt_set_encoding xslt_set_error_handler xslt_set_log xslt_set_sax_handler xslt_set_sax_handlers xslt_set_scheme_handler xslt_set_scheme_handlers contained syn keyword phpFunctions yaz_addinfo yaz_ccl_conf yaz_ccl_parse yaz_close yaz_connect yaz_database yaz_element yaz_errno yaz_error yaz_es_result yaz_get_option yaz_hits yaz_itemorder yaz_present yaz_range yaz_record yaz_scan_result yaz_scan yaz_schema yaz_search yaz_set_option yaz_sort yaz_syntax yaz_wait contained syn keyword phpFunctions zip_close zip_entry_close zip_entry_compressedsize zip_entry_compressionmethod zip_entry_filesize zip_entry_name zip_entry_open zip_entry_read zip_open zip_read contained syn keyword phpFunctions gzclose gzcompress gzdeflate gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress gzwrite readgzfile zlib_get_coding_type contained if exists( "php_baselib" ) syn keyword phpMethods query next_record num_rows affected_rows nf f p np num_fields haltmsg seek link_id query_id metadata table_names nextid connect halt free register unregister is_registered delete url purl self_url pself_url hidden_session add_query padd_query reimport_get_vars reimport_post_vars reimport_cookie_vars set_container set_tokenname release_token put_headers get_id get_id put_id freeze thaw gc reimport_any_vars start url purl login_if is_authenticated auth_preauth auth_loginform auth_validatelogin auth_refreshlogin auth_registerform auth_doregister start check have_perm permsum perm_invalid contained syn keyword phpFunctions page_open page_close sess_load sess_save contained endif syn keyword phpConditional declare else enddeclare endswitch elseif endif if switch contained syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contained syn keyword phpLabel case default switch contained syn keyword phpStatement return break continue exit goto yield contained syn keyword phpKeyword var const contained syn keyword phpType void bool boolean int integer real double float string array object NULL callable iterable contained syn keyword phpStructure namespace extends implements instanceof parent self contained syn match phpOperator "[-=+%^&|*!.~?:]" contained display syn match phpOperator "[-+*/%^&|.]=" contained display syn match phpOperator "/[^*/]"me=e-1 contained display syn match phpOperator "\$" contained display syn match phpOperator "&&\|\" contained display syn match phpOperator "||\|\" contained display syn match phpRelation "[!=<>]=" contained display syn match phpRelation "[<>]" contained display syn match phpMemberSelector "->" contained display syn match phpVarSelector "\$" contained display syn match phpIdentifier "$\h\w*" contained contains=phpEnvVar,phpIntVar,phpVarSelector display syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contained display syn region phpIdentifierComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained syn match phpBrackets "[][}{]" contained display syn match phpInterpSimpleError "\[[^]]*\]" contained display " fallback (if nothing else matches) syn match phpInterpSimpleError "->[^a-zA-Z_]" contained display syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches) syn match phpinterpSimpleBracketsInner "\w\+" contained syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display syn match phpInterpVarname "\h\w*" contained syn match phpInterpMethodName "\h\w*" contained " default color syn match phpInterpSimpleCurly "\${\h\w*}" contains=phpInterpVarname contained extend syn region phpInterpDollarCurley1Helper matchgroup=phpParent start="{" end="\[" contains=phpInterpVarname contained syn region phpInterpDollarCurly1 matchgroup=phpParent start="\${\h\w*\["rs=s+1 end="]}" contains=phpInterpDollarCurley1Helper,@phpClConst contained extend syn match phpInterpDollarCurley2Helper "{\h\w*->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained syn match phpInterpBogusDollarCurley "${\h\w*->}" contained display syn match phpInterpBogusDollarCurley "${\h\w*\[]}" contained display syn region phpInterpComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained syn cluster phpInterpDouble contains=phpInterpSimple,phpInterpSimpleCurly,phpInterpDollarCurly1,phpInterpDollarCurly2,phpInterpBogusDollarCurley,phpInterpComplex syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display syn keyword phpInclude include require include_once require_once use contained syn keyword phpDefine new clone contained syn keyword phpBoolean true false contained syn match phpNumber "-\=\<\d\+\>" contained display syn match phpNumber "\<0x\x\{1,8}\>" contained display syn match phpFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display syn case match syn match phpBackslashSequences "\\[fnrtv\\\"$]" contained display syn match phpBackslashSequences "\\\d\{1,3}" contained contains=phpOctalError display syn match phpBackslashSequences "\\x\x\{1,2}" contained display syn match phpBackslashDoubleQuote "\\[\"]" contained display syn match phpBackslashSingleQuote "\\[\\']" contained display syn case ignore syn match phpOctalError "[89]" contained display if exists("php_parent_error_close") syn match phpParentError "[)\]}]" contained display endif syn keyword phpTodo todo fixme xxx contained if exists("php_parent_error_open") syn region phpComment start="/\*" end="\*/" contained contains=phpTodo,@Spell else syn region phpComment start="/\*" end="\*/" contained contains=phpTodo,@Spell extend endif syn match phpComment "#.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell syn match phpComment "//.\{-}\(?>\|$\)\@=" contained contains=phpTodo,@Spell if exists("php_parent_error_open") syn region phpStringDouble matchgroup=phpStringDouble start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble,@Spell contained keepend syn region phpBacktick matchgroup=phpBacktick start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained keepend syn region phpStringSingle matchgroup=phpStringSingle start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote,@Spell contained keepend else syn region phpStringDouble matchgroup=phpStringDouble start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble,@Spell contained extend keepend syn region phpBacktick matchgroup=phpBacktick start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained extend keepend syn region phpStringSingle matchgroup=phpStringSingle start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote,@Spell contained keepend extend endif syn case match syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\I\i*\)\2$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar,@Spell keepend extend syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\I\i*\)'$" end="^\z1\(;\=$\)\@=" contained contains=@Spell keepend extend syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,@Spell keepend extend syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,@Spell keepend extend syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,@Spell keepend extend syn case ignore if exists("php_parent_error_close") || exists("php_parent_error_open") syn match phpParent "[{}]" contained syn region phpParent matchgroup=Delimiter start="(" end=")" contained contains=@phpClInside transparent syn region phpParent matchgroup=Delimiter start="\[" end="\]" contained contains=@phpClInside transparent if !exists("php_parent_error_close") syn match phpParent "[\])]" contained endif else syn match phpParent "[({[\]})]" contained endif syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch if exists("php_parent_error_open") if exists("php_noShortTags") syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop else syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop endif syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop if exists("php_asp_tags") syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop endif else if exists("php_noShortTags") syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend else syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend endif syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop keepend if exists("php_asp_tags") syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend endif endif if exists("php_folding") && php_folding==1 syn keyword phpSCKeyword abstract final private protected public static contained syn keyword phpFCKeyword function contained syn keyword phpStorageClass global contained syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*\(trait\|class\)\(\s\+.*}\)\@=" contained syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained syn match phpException "\(\s\|^\)finally\(\s\+.*}\)\@=" contained setlocal foldmethod=syntax syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="" end="-]@]\=?[<>]@!" contained containedin=phpRegion syntax case ignore syntax keyword phpComparison instanceof contained containedin=phpRegion hi def link phpComparison Statement endif if php_sync_method==-1 if exists("php_noShortTags") syn sync match phpRegionSync grouphere phpRegion "^\s*\s*$+ if exists("php_asp_tags") syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$" endif syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$" syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$" syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$" elseif php_sync_method>0 exec "syn sync minlines=" . php_sync_method else exec "syn sync fromstart" endif syntax match phpDocCustomTags "@[a-zA-Z]*\(\s\+\|\n\|\r\)" containedin=phpComment syntax region phpDocTags start="{@\(example\|id\|internal\|inheritdoc\|link\|source\|toc\|tutorial\)" end="}" containedin=phpComment syntax match phpDocTags "@\(abstract\|access\|author\|category\|copyright\|deprecated\|example\|final\|global\|ignore\|internal\|license\|link\|method\|name\|package\|param\|property\|return\|see\|since\|static\|staticvar\|subpackage\|tutorial\|uses\|var\|version\|contributor\|modified\|filename\|description\|filesource\|throws\)\(\s\+\)\?" containedin=phpComment syntax match phpDocTodo "@\(todo\|fixme\|xxx\)\(\s\+\)\?" containedin=phpComment hi def link phpConstant Constant hi def link phpCoreConstant Constant hi def link phpComment Comment hi def link phpDocTags PreProc hi def link phpDocCustomTags Type hi def link phpException Exception hi def link phpBoolean Boolean hi def link phpStorageClass StorageClass hi def link phpSCKeyword StorageClass hi def link phpFCKeyword Define hi def link phpStructure Structure hi def link phpStringSingle String hi def link phpStringDouble String hi def link phpBacktick String hi def link phpNumber Number hi def link phpFloat Float hi def link phpMethods Function hi def link phpFunctions Function hi def link phpBaselib Function hi def link phpRepeat Repeat hi def link phpConditional Conditional hi def link phpLabel Label hi def link phpStatement Statement hi def link phpKeyword Statement hi def link phpType Type hi def link phpInclude Include hi def link phpDefine Define hi def link phpBackslashSequences SpecialChar hi def link phpBackslashDoubleQuote SpecialChar hi def link phpBackslashSingleQuote SpecialChar hi def link phpParent Delimiter hi def link phpBrackets Delimiter hi def link phpIdentifierConst Delimiter hi def link phpParentError Error hi def link phpOctalError Error hi def link phpInterpSimpleError Error hi def link phpInterpBogusDollarCurley Error hi def link phpInterpDollarCurly1 Error hi def link phpInterpDollarCurly2 Error hi def link phpInterpSimpleBracketsInner String hi def link phpInterpSimpleCurly Delimiter hi def link phpInterpVarname Identifier hi def link phpTodo Todo hi def link phpDocTodo Todo hi def link phpMemberSelector Structure if exists("php_oldStyle") hi def phpIntVar guifg=Red ctermfg=DarkRed hi def phpEnvVar guifg=Red ctermfg=DarkRed hi def phpOperator guifg=SeaGreen ctermfg=DarkGreen hi def phpVarSelector guifg=SeaGreen ctermfg=DarkGreen hi def phpRelation guifg=SeaGreen ctermfg=DarkGreen hi def phpIdentifier guifg=DarkGray ctermfg=Brown hi def phpIdentifierSimply guifg=DarkGray ctermfg=Brown else hi def link phpIntVar Identifier hi def link phpEnvVar Identifier hi def link phpOperator Operator hi def link phpVarSelector Operator hi def link phpRelation Operator hi def link phpIdentifier Identifier hi def link phpIdentifierSimply Identifier endif let b:current_syntax = "php" if main_syntax == 'php' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save if !exists("b:current_syntax") runtime! syntax/php.vim endif if exists("b:current_syntax") finish endif syn case match syn keyword picTodo NOTE TODO XXX contained syn case ignore syn match picIdentifier "[a-z_$][a-z0-9_$]*" syn match picLabel "^[A-Z_$][A-Z0-9_$]*" syn match picLabel "^[A-Z_$][A-Z0-9_$]*:"me=e-1 syn match picASCII "A\='.'" syn match picBinary "B'[0-1]\+'" syn match picDecimal "D'\d\+'" syn match picDecimal "\d\+" syn match picHexadecimal "0x\x\+" syn match picHexadecimal "H'\x\+'" syn match picHexadecimal "[0-9]\x*h" syn match picOctal "O'[0-7]\o*'" syn match picComment ";.*" contains=picTodo syn region picString start=+"+ end=+"+ syn keyword picRegister INDF TMR0 PCL STATUS FSR PORTA PORTB syn keyword picRegister EEDATA EEADR PCLATH INTCON INDF OPTION_REG PCL syn keyword picRegister FSR TRISA TRISB EECON1 EECON2 INTCON OPTION syn keyword picRegisterPart IRP RP1 RP0 TO PD Z DC C syn keyword picRegisterPart T0CKI syn match picRegisterPart "RA[0-4]" syn keyword picRegisterPart INT syn match picRegisterPart "RB[0-7]" syn keyword picRegisterPart GIE EEIE T0IE INTE RBIE T0IF INTF RBIF syn keyword picRegisterPart RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 syn keyword picRegisterPart EEIF WRERR WREN WR RD syn keyword picRegisterPart GIE EEIE T0IE INTE RBIE T0IF INTF RBIF syn keyword picOpcode ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ syn keyword picOpcode IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF syn keyword picOpcode BCF BSF BTFSC BTFSS syn keyword picOpcode ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE syn keyword picOpcode RETLW RETURN SLEEP SUBLW XORLW syn keyword picOpcode GOTO syn keyword picDirective __BADRAM BANKISEL BANKSEL CBLOCK CODE __CONFIG syn keyword picDirective CONSTANT DATA DB DE DT DW ELSE END ENDC syn keyword picDirective ENDIF ENDM ENDW EQU ERROR ERRORLEVEL EXITM EXPAND syn keyword picDirective EXTERN FILL GLOBAL IDATA __IDLOCS IF IFDEF IFNDEF syn keyword picDirective INCLUDE LIST LOCAL MACRO __MAXRAM MESSG NOEXPAND syn keyword picDirective NOLIST ORG PAGE PAGESEL PROCESSOR RADIX RES SET syn keyword picDirective SPACE SUBTITLE TITLE UDATA UDATA_OVR UDATA_SHR syn keyword picDirective VARIABLE WHILE INCLUDE syn match picDirective "#\=UNDEFINE" syn match picDirective "#\=INCLUDE" syn match picDirective "#\=DEFINE" hi def link picTodo Todo hi def link picComment Comment hi def link picDirective Statement hi def link picLabel Label hi def link picString String hi def link picASCII String hi def link picBinary Number hi def link picDecimal Number hi def link picHexadecimal Number hi def link picOctal Number hi def link picIdentifier Identifier let b:current_syntax = "pic" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn include @pikeSQL :p:h/sqloracle.vim unlet b:current_syntax syn include @pikeAutodoc :p:h/autodoc.vim unlet b:current_syntax syn case match packadd! matchit let b:match_words = "({:}\\@1<=),(\\[:]\\@1<=),(<:>\\@1<=),^\s*#\s*\%(if\%(n\?def\)\|else\|el\%(se\)\?if\|endif\)\>" syn keyword pikeDebug gauge backtrace describe_backtrace werror _Static_assert static_assert syn keyword pikeException error catch throw syn keyword pikeLabel case default break return continue syn keyword pikeConditional if else switch syn keyword pikeRepeat while for foreach do syn keyword pikePredef RegGetKeyNames RegGetValue RegGetValues syn keyword pikePredef __automap__ __empty_program syn keyword pikePredef __handle_sprintf_format __parse_pike_type _disable_threads syn keyword pikePredef _do_call_outs _exit _gdb_breakpoint syn keyword pikePredef abs access acos acosh add_constant alarm all_constants syn keyword pikePredef array_sscanf asin asinh atan atan2 atanh atexit syn keyword pikePredef basetype call_function call_out call_out_info cd ceil syn keyword pikePredef combine_path combine_path_nt syn keyword pikePredef combine_path_unix compile copy_value cos cosh cpp crypt syn keyword pikePredef ctime decode_value delay encode_value encode_value_canonic syn keyword pikePredef enumerate errno exece exit exp file_stat file_truncate syn keyword pikePredef filesystem_stat find_call_out floor fork function_name syn keyword pikePredef function_object function_program gc syn keyword pikePredef get_active_compilation_handler get_active_error_handler syn keyword pikePredef get_all_groups get_all_users get_dir get_groups_for_user syn keyword pikePredef get_iterator get_profiling_info get_weak_flag getcwd syn keyword pikePredef getgrgid getgrnam gethrdtime gethrtime gethrvtime getpid syn keyword pikePredef getpwnam getpwuid getxattr glob gmtime has_index has_prefix syn keyword pikePredef has_suffix has_value hash hash_7_0 hash_7_4 hash_8_0 syn keyword pikePredef hash_value kill limit listxattr load_module localtime syn keyword pikePredef log lower_case master max min mkdir mktime mv syn keyword pikePredef object_program pow query_num_arg random_seed syn keyword pikePredef remove_call_out removexattr replace_master rm round syn keyword pikePredef set_priority set_weak_flag setxattr sgn signal signame syn keyword pikePredef signum sin sinh sleep sort sprintf sqrt sscanf strerror syn keyword pikePredef string_filter_non_unicode string_to_unicode string_to_utf8 syn keyword pikePredef tan tanh time trace types ualarm unicode_to_string syn keyword pikePredef upper_case utf8_to_string version syn keyword pikePredef write lock try_lock syn keyword pikePredef MutexKey Timestamp Date Time TimeTZ Interval Inet Range syn keyword pikePredef Null null inf nan syn keyword pikeTodo contained TODO FIXME XXX syn cluster pikePreShort contains=pikeDefine,pikePreProc,pikeCppOutWrapper,pikeCppInWrapper,pikePreCondit,pikePreConditMatch syn cluster pikeExprGroup contains=pikeMappIndex,@pikeStmt,pikeNest,@pikeBadGroup,pikeSoftCast syn match pikeWord transparent contained /[^()'"[\]{},;:]\+/ contains=ALLBUT,@pikePreProcGroup,@pikeExprGroup syn match pikeFirstWord transparent display contained /^\s*#[^()'"[\]{},;:]\+/ contains=@pikePreShort syn cluster pikeMappElm contains=pikeMappIndex,@pikeStmt syn cluster pikeStmt contains=pikeFirstWord,pikeCharacter,pikeString,pikeMlString,pikeWord,pikeNest syn cluster pikeBadGroup contains=pikeBadPClose,pikeBadAClose,pikeBadBClose,pikeBadSPClose,pikeBadSAClose,pikeBadSBClose,pikeBadSClose,pikeBadSPAClose,pikeBadSBAClose syn match pikeBadPClose display contained "[}\]]" syn match pikeBadAClose display contained "[)\]]" syn match pikeBadBClose display contained "[)}]" syn match pikeBadSPClose display contained "[;}\]]" syn match pikeBadSAClose display contained "[;)\]]" syn match pikeBadSPAClose display contained "[;\]]" syn match pikeBadSBAClose display contained "[;}]" syn match pikeBadSClose display contained "[;)}\]]" syn region pikeNest transparent start="(\@1)" contains=@pikeStmt,pikeBadSPClose keepend syn match pikeBadContinuation contained "\\\s\+$" syn cluster pikeCommentGroup contains=pikeTodo,pikeBadContinuation syn match pikeSpecial display contained "\\\%(x\x*\|d\d*\|\o\+\|u\x\{4}\|U\x\{8}\|[abefnrtv]\|$\)" if !exists("c_no_cformat") syn match pikeFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjzt]\|ll\|hh\)\=\%([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match pikeFormat display "%%" contained syn region pikeString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=pikeSpecial,pikeDelimiterDQ,pikeFormat,@Spell keepend syn region pikeMlString start=+#"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeSpecial,pikeFormat,pikeDelimiterDQ,@Spell,pikeEmbeddedString keepend else syn region pikeString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=pikeSpecial,pikeDelimiterDQ,@Spell syn region pikeMlString transparent start=+#"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeSpecial,pikeDelimiterDQ,@Spell,pikeEmbeddedString keepend endif syn case ignore syn region pikeEmbeddedString contained start=+\%(#"\n\?\)\@2<=\_s*\%(SELECT\|INSERT\|UPDATE\|DELETE\|WITH\|CREATE\|DROP\|ALTER\)\>+ skip=+\\\\\|\\"+ end=+[\\#]\@1" syn match pikeNumber display contained "\<0x\x\+\%(u\=l\{0,2}\|ll\=u\)\>" syn match pikeOctal display contained "\<0\o\+\%(u\=l\{0,2}\|ll\=u\)\>" contains=pikeOctalZero syn match pikeOctalZero display contained "\<0" syn match pikeFloat display contained "\<\d\+\%(f\|\.[0-9.]\@!\d*\%(e[-+]\=\d\+\)\=[fl]\=\)" syn match pikeFloat display contained "[0-9.]\@1" syn match pikeFloat display contained "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match pikeFloat display contained "\<0x\%(\x\+\.\?\|\x*\.\x\+\)p[-+]\=\d\+[fl]\=\>" syn match pikeOctalError display contained "\<0\o*[89]\d*" syn case match if exists("c_comment_strings") syn match pikeCommentSkip contained "^\s*\*\%($\|\s\+\)" syn region pikeCommentString contained start=+\\\@" skip="\\$" end="$" transparent keepend contains=pikeString,pikeCharacter,pikeNumbers,pikeCommentError,pikeSpaceError,pikeCppOperator,pikeCppPrefix syn match pikePreConditMatch display "^\s*\zs#\s*\%(else\|endif\)\>" if !exists("c_no_if0") syn cluster pikeCppOutInGroup contains=pikeCppInIf,pikeCppInElse,pikeCppInElse2,pikeCppOutIf,pikeCppOutIf2,pikeCppOutElse,pikeCppInSkip,pikeCppOutSkip syn region pikeCppOutWrapper start="^\s*\zs#\s*if\s\+0\+\s*\%($\|//\|/\*\|&\)" end=".\@=\|$" contains=pikeCppOutIf,pikeCppOutElse,@NoSpell fold syn region pikeCppOutIf contained start="0\+" matchgroup=pikeCppOutWrapper end="^\s*#\s*endif\>" contains=pikeCppOutIf2,pikeCppOutElse if !exists("c_no_if0_fold") syn region pikeCppOutIf2 contained matchgroup=pikeCppOutWrapper start="0\+" end="^\ze\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)" contains=pikeSpaceError,pikeCppOutSkip,@Spell fold else syn region pikeCppOutIf2 contained matchgroup=pikeCppOutWrapper start="0\+" end="^\ze\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)" contains=pikeSpaceError,pikeCppOutSkip,@Spell endif syn region pikeCppOutElse contained matchgroup=pikeCppOutWrapper start="^\s*#\s*\%(else\|el\%(se\)\?if\)" end="^\s*#\s*endif\>" contains=TOP,pikePreCondit syn region pikeCppInWrapper start="^\s*\zs#\s*if\s\+0*[1-9]\d*\s*\%($\|//\|/\*\||\)" end=".\@=\|$" contains=pikeCppInIf,pikeCppInElse fold syn region pikeCppInIf contained matchgroup=pikeCppInWrapper start="\d\+" end="^\s*#\s*endif\>" contains=TOP,pikePreCondit if !exists("c_no_if0_fold") syn region pikeCppInElse contained start="^\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=pikeCppInIf contains=pikeCppInElse2 fold else syn region pikeCppInElse contained start="^\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=pikeCppInIf contains=pikeCppInElse2 endif syn region pikeCppInElse2 contained matchgroup=pikeCppInWrapper start="^\s*#\s*\%(else\|el\%(se\)\?if\)\%([^/]\|/[^/*]\)*" end="^\ze\s*#\s*endif\>" contains=pikeSpaceError,pikeCppOutSkip,@Spell syn region pikeCppOutSkip contained start="^\s*#\s*if\%(n\?def\)\?\>" skip="\\$" end="^\s*#\s*endif\>" contains=pikeSpaceError,pikeCppOutSkip syn region pikeCppInSkip contained matchgroup=pikeCppInWrapper start="^\s*#\s*\%(if\s\+\%(\d\+\s*\%($\|//\|/\*\||\|&\)\)\@!\|ifn\?def\>\)" skip="\\$" end="^\s*#\s*endif\>" containedin=pikeCppOutElse,pikeCppInIf,pikeCppInSkip contains=TOP,pikePreProc endif syn region pikeIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeDelimiterDQ keepend syn match pikeIncluded display contained "<[^>]*>" syn match pikeInclude display "^\s*\zs#\s*include\>\s*["<]" contains=pikeIncluded syn cluster pikePreProcGroup contains=pikeIncluded,pikeInclude,pikeEmbeddedString,pikeCppOutWrapper,pikeCppInWrapper,@pikeCppOutInGroup,pikeFormat,pikeMlString,pikeCommentStartError,@pikeBadGroup,pikeWord syn region pikeDefine start="^\s*\zs#\s*\%(define\|undef\)\>" skip="\\$" end="$" keepend contains=@pikeStmt,@pikeBadGroup syn region pikePreProc start="^\s*\zs#\s*\%(pragma\|charset\|pike\|require\|string\|line\|warning\|error\)\>" skip="\\$" end="$" transparent keepend contains=pikeString,pikeCharacter,pikeNumbers,pikeCommentError,pikeSpaceError,pikeCppOperator,pikeCppPrefix,@Spell,pikeConstant syn match pikeAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@pikeAutodoc containedin=pikeComment,pikeCommentL syn cluster pikeCommentGroup add=pikeAutodocReal syn cluster pikePreProcGroup add=pikeAutodocReal syn match pikeUserLabel display "\%(^\|[{};]\)\zs\I\i*\s*\ze:\%([^:]\|$\)" contained contains=NONE syn match pikeUserLabel display "\%(\<\%(break\|continue\)\_s\+\)\@10<=\I\i*" contained contains=NONE syn match pikeUserLabel display "\%(\" syn match pilrcNumber "\<\d\+\>" syn region pilrcComment start="/\*" end="\*/" syn region pilrcComment start="//" end="$" syn keyword pilrcConstant AUTO AUTOID BOTTOM CENTER PREVBOTTOM PREVHEIGHT syn keyword pilrcConstant PREVLEFT PREVRIGHT PREVTOP PREVWIDTH RIGHT syn keyword pilrcConstant SEPARATOR syn match pilrcIdentifier "\<\h\w*\>" syn match pilrcType "\" syn match pilrcKeyword "\\s*\" syn match pilrcType "\" syn keyword pilrcFunction BEGIN END syn match pilrcInclude "\#include" syn match pilrcInclude "\#define" syn keyword pilrcInclude equ syn keyword pilrcInclude package syn region pilrcInclude start="public class" end="}" syn sync ccomment pilrcComment hi def link pilrcKeyword Statement hi def link pilrcType Type hi def link pilrcError Error hi def link pilrcCountry SpecialChar hi def link pilrcLanguage SpecialChar hi def link pilrcString SpecialChar hi def link pilrcNumber Number hi def link pilrcComment Comment hi def link pilrcConstant Constant hi def link pilrcFunction Function hi def link pilrcInclude SpecialChar hi def link pilrcIdentifier Number let b:current_syntax = "pilrc" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,128-167,224-235,- syn keyword pineConfig addrbook-sort-rule syn keyword pineConfig address-book syn keyword pineConfig addressbook-formats syn keyword pineConfig alt-addresses syn keyword pineConfig bugs-additional-data syn keyword pineConfig bugs-address syn keyword pineConfig bugs-fullname syn keyword pineConfig character-set syn keyword pineConfig color-style syn keyword pineConfig compose-mime syn keyword pineConfig composer-wrap-column syn keyword pineConfig current-indexline-style syn keyword pineConfig cursor-style syn keyword pineConfig customized-hdrs syn keyword pineConfig debug-memory syn keyword pineConfig default-composer-hdrs syn keyword pineConfig default-fcc syn keyword pineConfig default-saved-msg-folder syn keyword pineConfig disable-these-authenticators syn keyword pineConfig disable-these-drivers syn keyword pineConfig display-filters syn keyword pineConfig download-command syn keyword pineConfig download-command-prefix syn keyword pineConfig editor syn keyword pineConfig elm-style-save syn keyword pineConfig empty-header-message syn keyword pineConfig fcc-name-rule syn keyword pineConfig feature-level syn keyword pineConfig feature-list syn keyword pineConfig file-directory syn keyword pineConfig folder-collections syn keyword pineConfig folder-extension syn keyword pineConfig folder-sort-rule syn keyword pineConfig font-char-set syn keyword pineConfig font-name syn keyword pineConfig font-size syn keyword pineConfig font-style syn keyword pineConfig forced-abook-entry syn keyword pineConfig form-letter-folder syn keyword pineConfig global-address-book syn keyword pineConfig goto-default-rule syn keyword pineConfig header-in-reply syn keyword pineConfig image-viewer syn keyword pineConfig inbox-path syn keyword pineConfig incoming-archive-folders syn keyword pineConfig incoming-folders syn keyword pineConfig incoming-startup-rule syn keyword pineConfig index-answered-background-color syn keyword pineConfig index-answered-foreground-color syn keyword pineConfig index-deleted-background-color syn keyword pineConfig index-deleted-foreground-color syn keyword pineConfig index-format syn keyword pineConfig index-important-background-color syn keyword pineConfig index-important-foreground-color syn keyword pineConfig index-new-background-color syn keyword pineConfig index-new-foreground-color syn keyword pineConfig index-recent-background-color syn keyword pineConfig index-recent-foreground-color syn keyword pineConfig index-to-me-background-color syn keyword pineConfig index-to-me-foreground-color syn keyword pineConfig index-unseen-background-color syn keyword pineConfig index-unseen-foreground-color syn keyword pineConfig initial-keystroke-list syn keyword pineConfig kblock-passwd-count syn keyword pineConfig keylabel-background-color syn keyword pineConfig keylabel-foreground-color syn keyword pineConfig keyname-background-color syn keyword pineConfig keyname-foreground-color syn keyword pineConfig last-time-prune-questioned syn keyword pineConfig last-version-used syn keyword pineConfig ldap-servers syn keyword pineConfig literal-signature syn keyword pineConfig local-address syn keyword pineConfig local-fullname syn keyword pineConfig mail-check-interval syn keyword pineConfig mail-directory syn keyword pineConfig mailcap-search-path syn keyword pineConfig mimetype-search-path syn keyword pineConfig new-version-threshold syn keyword pineConfig news-active-file-path syn keyword pineConfig news-collections syn keyword pineConfig news-spool-directory syn keyword pineConfig newsrc-path syn keyword pineConfig nntp-server syn keyword pineConfig normal-background-color syn keyword pineConfig normal-foreground-color syn keyword pineConfig old-style-reply syn keyword pineConfig operating-dir syn keyword pineConfig patterns syn keyword pineConfig patterns-filters syn keyword pineConfig patterns-filters2 syn keyword pineConfig patterns-indexcolors syn keyword pineConfig patterns-other syn keyword pineConfig patterns-roles syn keyword pineConfig patterns-scores syn keyword pineConfig patterns-scores2 syn keyword pineConfig personal-name syn keyword pineConfig personal-print-category syn keyword pineConfig personal-print-command syn keyword pineConfig postponed-folder syn keyword pineConfig print-font-char-set syn keyword pineConfig print-font-name syn keyword pineConfig print-font-size syn keyword pineConfig print-font-style syn keyword pineConfig printer syn keyword pineConfig prompt-background-color syn keyword pineConfig prompt-foreground-color syn keyword pineConfig pruned-folders syn keyword pineConfig pruning-rule syn keyword pineConfig quote1-background-color syn keyword pineConfig quote1-foreground-color syn keyword pineConfig quote2-background-color syn keyword pineConfig quote2-foreground-color syn keyword pineConfig quote3-background-color syn keyword pineConfig quote3-foreground-color syn keyword pineConfig read-message-folder syn keyword pineConfig remote-abook-history syn keyword pineConfig remote-abook-metafile syn keyword pineConfig remote-abook-validity syn keyword pineConfig reply-indent-string syn keyword pineConfig reply-leadin syn keyword pineConfig reverse-background-color syn keyword pineConfig reverse-foreground-color syn keyword pineConfig rsh-command syn keyword pineConfig rsh-open-timeout syn keyword pineConfig rsh-path syn keyword pineConfig save-by-sender syn keyword pineConfig saved-msg-name-rule syn keyword pineConfig scroll-margin syn keyword pineConfig selectable-item-background-color syn keyword pineConfig selectable-item-foreground-color syn keyword pineConfig sending-filters syn keyword pineConfig sendmail-path syn keyword pineConfig show-all-characters syn keyword pineConfig signature-file syn keyword pineConfig smtp-server syn keyword pineConfig sort-key syn keyword pineConfig speller syn keyword pineConfig ssh-command syn keyword pineConfig ssh-open-timeout syn keyword pineConfig ssh-path syn keyword pineConfig standard-printer syn keyword pineConfig status-background-color syn keyword pineConfig status-foreground-color syn keyword pineConfig status-message-delay syn keyword pineConfig suggest-address syn keyword pineConfig suggest-fullname syn keyword pineConfig tcp-open-timeout syn keyword pineConfig tcp-query-timeout syn keyword pineConfig tcp-read-warning-timeout syn keyword pineConfig tcp-write-warning-timeout syn keyword pineConfig threading-display-style syn keyword pineConfig threading-expanded-character syn keyword pineConfig threading-index-style syn keyword pineConfig threading-indicator-character syn keyword pineConfig threading-lastreply-character syn keyword pineConfig title-background-color syn keyword pineConfig title-foreground-color syn keyword pineConfig titlebar-color-style syn keyword pineConfig upload-command syn keyword pineConfig upload-command-prefix syn keyword pineConfig url-viewers syn keyword pineConfig use-only-domain-name syn keyword pineConfig user-domain syn keyword pineConfig user-id syn keyword pineConfig user-id syn keyword pineConfig user-input-timeout syn keyword pineConfig viewer-hdr-colors syn keyword pineConfig viewer-hdrs syn keyword pineConfig viewer-overlap syn keyword pineConfig window-position syn keyword pineOption allow-changing-from syn keyword pineOption allow-talk syn keyword pineOption alternate-compose-menu syn keyword pineOption assume-slow-link syn keyword pineOption auto-move-read-msgs syn keyword pineOption auto-open-next-unread syn keyword pineOption auto-unzoom-after-apply syn keyword pineOption auto-zoom-after-select syn keyword pineOption cache-remote-pinerc syn keyword pineOption check-newmail-when-quitting syn keyword pineOption combined-addrbook-display syn keyword pineOption combined-folder-display syn keyword pineOption combined-subdirectory-display syn keyword pineOption compose-cut-from-cursor syn keyword pineOption compose-maps-delete-key-to-ctrl-d syn keyword pineOption compose-rejects-unqualified-addrs syn keyword pineOption compose-send-offers-first-filter syn keyword pineOption compose-sets-newsgroup-without-confirm syn keyword pineOption confirm-role-even-for-default syn keyword pineOption continue-tab-without-confirm syn keyword pineOption delete-skips-deleted syn keyword pineOption disable-2022-jp-conversions syn keyword pineOption disable-busy-alarm syn keyword pineOption disable-charset-conversions syn keyword pineOption disable-config-cmd syn keyword pineOption disable-keyboard-lock-cmd syn keyword pineOption disable-keymenu syn keyword pineOption disable-password-caching syn keyword pineOption disable-password-cmd syn keyword pineOption disable-pipes-in-sigs syn keyword pineOption disable-pipes-in-templates syn keyword pineOption disable-roles-setup-cmd syn keyword pineOption disable-roles-sig-edit syn keyword pineOption disable-roles-template-edit syn keyword pineOption disable-sender syn keyword pineOption disable-shared-namespaces syn keyword pineOption disable-signature-edit-cmd syn keyword pineOption disable-take-last-comma-first syn keyword pineOption enable-8bit-esmtp-negotiation syn keyword pineOption enable-8bit-nntp-posting syn keyword pineOption enable-aggregate-command-set syn keyword pineOption enable-alternate-editor-cmd syn keyword pineOption enable-alternate-editor-implicitly syn keyword pineOption enable-arrow-navigation syn keyword pineOption enable-arrow-navigation-relaxed syn keyword pineOption enable-background-sending syn keyword pineOption enable-bounce-cmd syn keyword pineOption enable-cruise-mode syn keyword pineOption enable-cruise-mode-delete syn keyword pineOption enable-delivery-status-notification syn keyword pineOption enable-dot-files syn keyword pineOption enable-dot-folders syn keyword pineOption enable-exit-via-lessthan-command syn keyword pineOption enable-fast-recent-test syn keyword pineOption enable-flag-cmd syn keyword pineOption enable-flag-screen-implicitly syn keyword pineOption enable-full-header-and-text syn keyword pineOption enable-full-header-cmd syn keyword pineOption enable-goto-in-file-browser syn keyword pineOption enable-incoming-folders syn keyword pineOption enable-jump-shortcut syn keyword pineOption enable-lame-list-mode syn keyword pineOption enable-mail-check-cue syn keyword pineOption enable-mailcap-param-substitution syn keyword pineOption enable-mouse-in-xterm syn keyword pineOption enable-msg-view-addresses syn keyword pineOption enable-msg-view-attachments syn keyword pineOption enable-msg-view-forced-arrows syn keyword pineOption enable-msg-view-urls syn keyword pineOption enable-msg-view-web-hostnames syn keyword pineOption enable-newmail-in-xterm-icon syn keyword pineOption enable-partial-match-lists syn keyword pineOption enable-print-via-y-command syn keyword pineOption enable-reply-indent-string-editing syn keyword pineOption enable-rules-under-take syn keyword pineOption enable-search-and-replace syn keyword pineOption enable-sigdashes syn keyword pineOption enable-suspend syn keyword pineOption enable-tab-completion syn keyword pineOption enable-take-export syn keyword pineOption enable-tray-icon syn keyword pineOption enable-unix-pipe-cmd syn keyword pineOption enable-verbose-smtp-posting syn keyword pineOption expanded-view-of-addressbooks syn keyword pineOption expanded-view-of-distribution-lists syn keyword pineOption expanded-view-of-folders syn keyword pineOption expose-hidden-config syn keyword pineOption expunge-only-manually syn keyword pineOption expunge-without-confirm syn keyword pineOption expunge-without-confirm-everywhere syn keyword pineOption fcc-on-bounce syn keyword pineOption fcc-only-without-confirm syn keyword pineOption fcc-without-attachments syn keyword pineOption include-attachments-in-reply syn keyword pineOption include-header-in-reply syn keyword pineOption include-text-in-reply syn keyword pineOption ldap-result-to-addrbook-add syn keyword pineOption mark-fcc-seen syn keyword pineOption mark-for-cc syn keyword pineOption news-approximates-new-status syn keyword pineOption news-deletes-across-groups syn keyword pineOption news-offers-catchup-on-close syn keyword pineOption news-post-without-validation syn keyword pineOption news-read-in-newsrc-order syn keyword pineOption next-thread-without-confirm syn keyword pineOption old-growth syn keyword pineOption pass-control-characters-as-is syn keyword pineOption prefer-plain-text syn keyword pineOption preserve-start-stop-characters syn keyword pineOption print-formfeed-between-messages syn keyword pineOption print-includes-from-line syn keyword pineOption print-index-enabled syn keyword pineOption print-offers-custom-cmd-prompt syn keyword pineOption quell-attachment-extra-prompt syn keyword pineOption quell-berkeley-format-timezone syn keyword pineOption quell-content-id syn keyword pineOption quell-dead-letter-on-cancel syn keyword pineOption quell-empty-directories syn keyword pineOption quell-extra-post-prompt syn keyword pineOption quell-folder-internal-msg syn keyword pineOption quell-imap-envelope-update syn keyword pineOption quell-lock-failure-warnings syn keyword pineOption quell-maildomain-warning syn keyword pineOption quell-news-envelope-update syn keyword pineOption quell-partial-fetching syn keyword pineOption quell-ssl-largeblocks syn keyword pineOption quell-status-message-beeping syn keyword pineOption quell-timezone-comment-when-sending syn keyword pineOption quell-user-lookup-in-passwd-file syn keyword pineOption quit-without-confirm syn keyword pineOption reply-always-uses-reply-to syn keyword pineOption save-aggregates-copy-sequence syn keyword pineOption save-will-advance syn keyword pineOption save-will-not-delete syn keyword pineOption save-will-quote-leading-froms syn keyword pineOption scramble-message-id syn keyword pineOption select-without-confirm syn keyword pineOption selectable-item-nobold syn keyword pineOption separate-folder-and-directory-entries syn keyword pineOption show-cursor syn keyword pineOption show-plain-text-internally syn keyword pineOption show-selected-in-boldface syn keyword pineOption signature-at-bottom syn keyword pineOption single-column-folder-list syn keyword pineOption slash-collapses-entire-thread syn keyword pineOption spell-check-before-sending syn keyword pineOption store-window-position-in-config syn keyword pineOption strip-from-sigdashes-on-reply syn keyword pineOption tab-visits-next-new-message-only syn keyword pineOption termdef-takes-precedence syn keyword pineOption thread-index-shows-important-color syn keyword pineOption try-alternative-authentication-driver-first syn keyword pineOption unselect-will-not-advance syn keyword pineOption use-current-dir syn keyword pineOption use-function-keys syn keyword pineOption use-sender-not-x-sender syn keyword pineOption use-subshell-for-suspend syn keyword pineOption vertical-folder-list syn match pineComment "^#.*$" hi def link pineConfig Type hi def link pineComment Comment hi def link pineOption Macro let b:current_syntax = "pine" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn case ignore syn keyword pinfoTodo contained FIXME TODO XXX NOTE syn region pinfoComment start='^#' end='$' contains=pinfoTodo,@Spell syn keyword pinfoOptions MANUAL CUT-MAN-HEADERS CUT-EMPTY-MAN-LINES \ RAW-FILENAME APROPOS \ DONT-HANDLE-WITHOUT-TAG-TABLE HTTPVIEWER \ FTPVIEWER MAILEDITOR PRINTUTILITY MANLINKS \ INFOPATH MAN-OPTIONS STDERR-REDIRECTION \ LONG-MANUAL-LINKS FILTER-0xB7 \ QUIT-CONFIRMATION QUIT-CONFIRM-DEFAULT \ CLEAR-SCREEN-AT-EXIT CALL-READLINE-HISTORY \ HIGHLIGHTREGEXP SAFE-USER SAFE-GROUP syn keyword pinfoColors COL_NORMAL COL_TOPLINE COL_BOTTOMLINE \ COL_MENU COL_MENUSELECTED COL_NOTE \ COL_NOTESELECTED COL_URL COL_URLSELECTED \ COL_INFOHIGHLIGHT COL_MANUALBOLD \ COL_MANUALITALIC COL_SEARCHHIGHLIGHT syn keyword pinfoColorDefault COLOR_DEFAULT syn keyword pinfoColorBold BOLD syn keyword pinfoColorNoBold NO_BOLD syn keyword pinfoColorBlink BLINK syn keyword pinfoColorNoBlink NO_BLINK syn keyword pinfoColorBlack COLOR_BLACK syn keyword pinfoColorRed COLOR_RED syn keyword pinfoColorGreen COLOR_GREEN syn keyword pinfoColorYellow COLOR_YELLOW syn keyword pinfoColorBlue COLOR_BLUE syn keyword pinfoColorMagenta COLOR_MAGENTA syn keyword pinfoColorCyan COLOR_CYAN syn keyword pinfoColorWhite COLOR_WHITE syn keyword pinfoKeys KEY_TOTALSEARCH_1 KEY_TOTALSEARCH_2 \ KEY_SEARCH_1 KEY_SEARCH_2 \ KEY_SEARCH_AGAIN_1 KEY_SEARCH_AGAIN_2 \ KEY_GOTO_1 KEY_GOTO_2 KEY_PREVNODE_1 \ KEY_PREVNODE_2 KEY_NEXTNODE_1 \ KEY_NEXTNODE_2 KEY_UP_1 KEY_UP_2 KEY_END_1 \ KEY_END_2 KEY_PGDN_1 KEY_PGDN_2 \ KEY_PGDN_AUTO_1 KEY_PGDN_AUTO_2 KEY_HOME_1 \ KEY_HOME_2 KEY_PGUP_1 KEY_PGUP_2 \ KEY_PGUP_AUTO_1 KEY_PGUP_AUTO_2 KEY_DOWN_1 \ KEY_DOWN_2 KEY_TOP_1 KEY_TOP_2 KEY_BACK_1 \ KEY_BACK_2 KEY_FOLLOWLINK_1 \ KEY_FOLLOWLINK_2 KEY_REFRESH_1 \ KEY_REFRESH_2 KEY_SHELLFEED_1 \ KEY_SHELLFEED_2 KEY_QUIT_1 KEY_QUIT_2 \ KEY_GOLINE_1 KEY_GOLINE_2 KEY_PRINT_1 \ KEY_PRINT_2 KEY_DIRPAGE_1 KEY_DIRPAGE_2 \ KEY_TWODOWN_1 KEY_TWODOWN_2 KEY_TWOUP_1 \ KEY_TWOUP_2 syn keyword pinfoSpecialKeys KEY_BREAK KEY_DOWN KEY_UP KEY_LEFT KEY_RIGHT \ KEY_DOWN KEY_HOME KEY_BACKSPACE KEY_NPAGE \ KEY_PPAGE KEY_END KEY_IC KEY_DC syn region pinfoSpecialKeys matchgroup=pinfoSpecialKeys transparent \ start=+KEY_\%(F\|CTRL\|ALT\)(+ end=+)+ syn region pinfoSimpleKey start=+'+ skip=+\\'+ end=+'+ \ contains=pinfoSimpleKeyEscape syn match pinfoSimpleKeyEscape +\\[\\nt']+ syn match pinfoKeycode '\<\d\+\>' syn keyword pinfoConstants TRUE FALSE YES NO hi def link pinfoTodo Todo hi def link pinfoComment Comment hi def link pinfoOptions Keyword hi def link pinfoColors Keyword hi def link pinfoColorDefault Normal hi def link pinfoSpecialKeys SpecialChar hi def link pinfoSimpleKey String hi def link pinfoSimpleKeyEscape SpecialChar hi def link pinfoKeycode Number hi def link pinfoConstants Constant hi def link pinfoKeys Keyword hi def pinfoColorBold cterm=bold hi def pinfoColorNoBold cterm=none hi def pinfoColorBlink cterm=inverse hi def pinfoColorNoBlink cterm=none hi def pinfoColorBlack ctermfg=Black guifg=Black hi def pinfoColorRed ctermfg=DarkRed guifg=DarkRed hi def pinfoColorGreen ctermfg=DarkGreen guifg=DarkGreen hi def pinfoColorYellow ctermfg=DarkYellow guifg=DarkYellow hi def pinfoColorBlue ctermfg=DarkBlue guifg=DarkBlue hi def pinfoColorMagenta ctermfg=DarkMagenta guifg=DarkMagenta hi def pinfoColorCyan ctermfg=DarkCyan guifg=DarkCyan hi def pinfoColorWhite ctermfg=LightGray guifg=LightGray let b:current_syntax = "pinfo" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match plaintexControlSequence display contains=@NoSpell \ '\\[a-zA-Z@]\+' runtime! syntax/initex.vim unlet b:current_syntax syn match plaintexComment display \ contains=ALLBUT,initexComment,plaintexComment \ '^\s*%[CDM].*$' if exists("g:plaintex_delimiters") syn match plaintexDelimiter display '[][{}]' endif syn match plaintexRepeat display contains=@NoSpell \ '\\\%(loop\|repeat\)\>' syn match plaintexCommand display contains=@NoSpell \ '\\\%(plainoutput\|TeX\)\>' syn match plaintexBoxCommand display contains=@NoSpell \ '\\\%(null\|strut\)\>' syn match plaintexDebuggingCommand display contains=@NoSpell \ '\\\%(showhyphens\|tracingall\|wlog\)\>' syn match plaintexFontsCommand display contains=@NoSpell \ '\\\%(bf\|\%(five\|seven\)\%(bf\|i\|rm\|sy\)\|it\|oldstyle\|rm\|sl\|ten\%(bf\|ex\|it\=\|rm\|sl\|sy\|tt\)\|tt\)\>' syn match plaintexGlueCommand display contains=@NoSpell \ '\\\%(\%(big\|en\|med\|\%(no\|off\)interline\|small\)skip\|\%(center\|left\|right\)\=line\|\%(dot\|\%(left\|right\)arrow\)fill\|[hv]glue\|[lr]lap\|q\=quad\|space\|topglue\)\>' syn match plaintexInsertsCommand display contains=@NoSpell \ '\\\%(\%(end\|top\)insert\|v\=footnote\)\>' syn match plaintexJobCommand display contains=@NoSpell \ '\\\%(bye\|fmt\%(name\|version\)\)\>' syn match plaintexInsertsCommand display contains=@NoSpell \ '\\\%(mid\|page\)insert\>' syn match plaintexKernCommand display contains=@NoSpell \ '\\\%(en\|\%(neg\)\=thin\)space\>' syn match plaintexMacroCommand display contains=@NoSpell \ '\\\%(active\|[be]group\|empty\)\>' syn match plaintexPageCommand display contains=@NoSpell \ '\\\%(\%(super\)\=eject\|nopagenumbers\|\%(normal\|ragged\)bottom\)\>' syn match plaintexParagraphCommand display contains=@NoSpell \ '\\\%(endgraf\|\%(non\)\=frenchspacing\|hang\|item\%(item\)\=\|narrower\|normalbaselines\|obey\%(lines\|spaces\)\|openup\|proclaim\|\%(tt\)\=raggedright\|textindent\)\>' syn match plaintexPenaltiesCommand display contains=@NoSpell \ '\\\%(allow\|big\|fil\|good\|med\|no\|small\)\=break\>' syn match plaintexRegistersCommand display contains=@NoSpell \ '\\\%(advancepageno\|new\%(box\|count\|dimen\|fam\|help\|if\|insert\|language\|muskip\|read\|skip\|toks\|write\)\)\>' syn match plaintexTablesCommand display contains=@NoSpell \ '&\|\\+\|\\\%(cleartabs\|endline\|hidewidth\|ialign\|multispan\|settabs\|tabalign\)\>' if !exists("g:plaintex_no_math") syn region plaintexMath matchgroup=plaintexMath \ contains=@plaintexMath,@NoSpell \ start='\$' skip='\\\\\|\\\$' end='\$' syn region plaintexMath matchgroup=plaintexMath \ contains=@plaintexMath,@NoSpell keepend \ start='\$\$' skip='\\\\\|\\\$' end='\$\$' endif syn match plaintexCharacterCommand display contains=@NoSpell \ /\\\%(["#$%&'.=^_`~]\|``\|''\|-\{2,3}\|[?!]`\|^^L\|\~\|\%(a[ae]\|A[AE]\|acute\|[cdHoOPStuvijlL]\|copyright\|d\=dag\|folio\|ldotp\|[lr]q\|oe\|OE\|slash\|ss\|underbar\)\>\)/ syn cluster plaintexMath \ contains=plaintexMathCommand,plaintexMathBoxCommand, \ plaintexMathCharacterCommand,plaintexMathDelimiter, \ plaintexMathFontsCommand,plaintexMathLetter,plaintexMathSymbol, \ plaintexMathFunction,plaintexMathOperator,plaintexMathPunctuation, \ plaintexMathRelation syn match plaintexMathCommand display contains=@NoSpell contained \ '\\\%([!*,;>{}|_^]\|\%([aA]rrowvert\|[bB]ig\%(g[lmr]\=\|r\)\=\|\%(border\|p\)\=matrix\|displaylines\|\%(down\|up\)bracefill\|eqalign\%(no\)\|leqalignno\|[lr]moustache\|mathpalette\|root\|s[bp]\|skew\|sqrt\)\>\)' syn match plaintexMathBoxCommand display contains=@NoSpell contained \ '\\\%([hv]\=phantom\|mathstrut\|smash\)\>' syn match plaintexMathCharacterCommand display contains=@NoSpell contained \ '\\\%(b\|bar\|breve\|check\|d\=dots\=\|grave\|hat\|[lv]dots\|tilde\|vec\|wide\%(hat\|tilde\)\)\>' syn match plaintexMathDelimiter display contains=@NoSpell contained \ '\\\%(brace\%(vert\)\=\|brack\|cases\|choose\|[lr]\%(angle\|brace\|brack\|ceil\|floor\|group\)\|over\%(brace\|\%(left\|right\)arrow\)\|underbrace\)\>' syn match plaintexMathFontsCommand display contains=@NoSpell contained \ '\\\%(\%(bf\|it\|sl\|tt\)fam\|cal\|mit\)\>' syn match plaintexMathLetter display contains=@NoSpell contained \ '\\\%(aleph\|alpha\|beta\|chi\|[dD]elta\|ell\|epsilon\|eta\|[gG]amma\|[ij]math\|iota\|kappa\|[lL]ambda\|[mn]u\|[oO]mega\|[pP][hs]\=i\|rho\|[sS]igma\|tau\|[tT]heta\|[uU]psilon\|var\%(epsilon\|ph\=i\|rho\|sigma\|theta\)\|[xX]i\|zeta\)\>' syn match plaintexMathSymbol display contains=@NoSpell contained \ '\\\%(angle\|backslash\|bot\|clubsuit\|emptyset\|epsilon\|exists\|flat\|forall\|hbar\|heartsuit\|Im\|infty\|int\|lnot\|nabla\|natural\|neg\|pmod\|prime\|Re\|sharp\|smallint\|spadesuit\|surd\|top\|triangle\%(left\|right\)\=\|vdash\|wp\)\>' syn match plaintexMathFunction display contains=@NoSpell contained \ '\\\%(arc\%(cos\|sin\|tan\)\|arg\|\%(cos\|sin\|tan\)h\=\|coth\=\|csc\|de[gt]\|dim\|exp\|gcd\|hom\|inf\|ker\|lo\=g\|lim\%(inf\|sup\)\=\|ln\|max\|min\|Pr\|sec\|sup\)\>' syn match plaintexMathOperator display contains=@NoSpell contained \ '\\\%(amalg\|ast\|big\%(c[au]p\|circ\|o\%(dot\|plus\|times\|sqcup\)\|triangle\%(down\|up\)\|uplus\|vee\|wedge\|bmod\|bullet\)\|c[au]p\|cdot[ps]\=\|circ\|coprod\|d\=dagger\|diamond\%(suit\)\=\|div\|land\|lor\|mp\|o\%(dot\|int\|minus\|plus\|slash\|times\)pm\|prod\|setminus\|sqc[au]p\|sqsu[bp]seteq\|star\|su[bp]set\%(eq\)\=\|sum\|times\|uplus\|vee\|wedge\|wr\)\>' syn match plaintexMathPunctuation display contains=@NoSpell contained \ '\\\%(colon\)\>' syn match plaintexMathRelation display contains=@NoSpell contained \ '\\\%(approx\|asymp\|bowtie\|buildrel\|cong\|dashv\|doteq\|[dD]ownarrow\|equiv\|frown\|geq\=\|gets\|gg\|hook\%(left\|right\)arrow\|iff\|in\|leq\=\|[lL]eftarrow\|\%(left\|right\)harpoon\%(down\|up\)\|[lL]eftrightarrow\|ll\|[lL]ongleftrightarrow\|longmapsto\|[lL]ongrightarrow\|mapsto\|mid\|models\|[ns][ew]arrow\|neq\=\|ni\|not\%(in\)\=\|owns\|parallel\|perp\|prec\%(eq\)\=\|propto\|[rR]ightarrow\|rightleftharpoons\|sim\%(eq\)\=\|smile\|succ\%(eq\)\=\|to\|[uU]parrow\|[uU]pdownarrow\|[vV]ert\)\>' syn match plaintexParameterDimen display contains=@NoSpell \ '\\maxdimen\>' syn match plaintexMathParameterDimen display contains=@NoSpell \ '\\jot\>' syn match plaintexParagraphParameterGlue display contains=@NoSpell \ '\\\%(\%(big\|med\|small\)skipamount\|normalbaselineskip\|normallineskip\%(limit\)\=\)\>' syn match plaintexFontParameterInteger display contains=@NoSpell \ '\\magstep\%(half\)\=\>' syn match plaintexJobParameterInteger display contains=@NoSpell \ '\\magnification\>' syn match plaintexPageParameterInteger display contains=@NoSpell \ '\\pageno\>' syn match plaintexPageParameterToken display contains=@NoSpell \ '\\\%(foot\|head\)line\>' hi def link plaintexOperator Operator hi def link plaintexDelimiter Delimiter hi def link plaintexControlSequence Identifier hi def link plaintexComment Comment hi def link plaintexInclude Include hi def link plaintexRepeat Repeat hi def link plaintexCommand initexCommand hi def link plaintexBoxCommand plaintexCommand hi def link plaintexCharacterCommand initexCharacterCommand hi def link plaintexDebuggingCommand initexDebuggingCommand hi def link plaintexFontsCommand initexFontsCommand hi def link plaintexGlueCommand plaintexCommand hi def link plaintexInsertsCommand plaintexCommand hi def link plaintexJobCommand initexJobCommand hi def link plaintexKernCommand plaintexCommand hi def link plaintexMacroCommand initexMacroCommand hi def link plaintexPageCommand plaintexCommand hi def link plaintexParagraphCommand plaintexCommand hi def link plaintexPenaltiesCommand plaintexCommand hi def link plaintexRegistersCommand plaintexCommand hi def link plaintexTablesCommand plaintexCommand hi def link plaintexMath String hi def link plaintexMathCommand plaintexCommand hi def link plaintexMathBoxCommand plaintexBoxCommand hi def link plaintexMathCharacterCommand plaintexCharacterCommand hi def link plaintexMathDelimiter plaintexDelimiter hi def link plaintexMathFontsCommand plaintexFontsCommand hi def link plaintexMathLetter plaintexMathCharacterCommand hi def link plaintexMathSymbol plaintexMathLetter hi def link plaintexMathFunction Function hi def link plaintexMathOperator plaintexOperator hi def link plaintexMathPunctuation plaintexCharacterCommand hi def link plaintexMathRelation plaintexOperator hi def link plaintexParameterDimen initexParameterDimen hi def link plaintexMathParameterDimen initexMathParameterDimen hi def link plaintexParagraphParameterGlue initexParagraphParameterGlue hi def link plaintexFontParameterInteger initexFontParameterInteger hi def link plaintexJobParameterInteger initexJobParameterInteger hi def link plaintexPageParameterInteger initexPageParameterInteger hi def link plaintexPageParameterToken initexParameterToken let b:current_syntax = "plaintex" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE syn cluster pl1CommentGroup contains=pl1Todo syn match pl1Garbage "[^ \t()]" syn match pl1Identifier "[a-z][a-z0-9$_#]*" syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*" if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match pl1SpaceError "\s\+$" endif if !exists("c_no_tab_space_error") syn match pl1SpaceError " \+\t"me=e-1 endif endif syn match pl1Symbol "\(;\|,\|\.\)" syn match pl1PreProcSym "%" syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2 syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2 syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE if exists("pl1_highlight_triggers") syn keyword pl1Trigger INSERTING UPDATING DELETING endif syn keyword pl1Conditional ELSIF ELSE IF syn match pl1Conditional "\" syn keyword pl1Repeat FOR LOOP WHILE FORALL syn match pl1Repeat "\" if exists("c_comment_strings") syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)" syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError else syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError endif syn sync ccomment pl1Comment syn sync ccomment pl1CommentL syn match pl1StringError "'.*$" syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral syn match pl1IntLiteral contained "[+-]\=\d\+" syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*" syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*" syn match pl1CharLiteral "'[^']'" syn match pl1StringLiteral "'\([^']\|''\)*'" syn keyword pl1BooleanLiteral TRUE FALSE NULL syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>" syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom if exists("c_no_bracket_error") syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup syn match pl1ParenError ")" syn match pl1ErrInParen contained "[{}]" else syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket syn match pl1ParenError "[\])]" syn match pl1ErrInParen contained "[{}]" syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen syn match pl1ErrInBracket contained "[);{}]" endif syn sync minlines=10 maxlines=100 hi def link pl1Attribute Macro hi def link pl1BlockError Error hi def link pl1BooleanLiteral Boolean hi def link pl1CharLiteral Character hi def link pl1Comment Comment hi def link pl1CommentL Comment hi def link pl1Conditional Conditional hi def link pl1Error Error hi def link pl1ErrInBracket Error hi def link pl1ErrInBlock Error hi def link pl1ErrInParen Error hi def link pl1Exception Function hi def link pl1FloatLiteral Float hi def link pl1Function Function hi def link pl1Garbage Error hi def link pl1HostIdentifier Label hi def link pl1Identifier Normal hi def link pl1IntLiteral Number hi def link pl1Operator Operator hi def link pl1Paren Normal hi def link pl1ParenError Error hi def link pl1SpaceError Error hi def link pl1Pseudo PreProc hi def link pl1PreProc PreProc hi def link pl1PreProcSym PreProc hi def link pl1Keyword Keyword hi def link pl1Other Keyword hi def link pl1Repeat Repeat hi def link pl1Statement Keyword hi def link pl1Storage StorageClass hi def link pl1StringError Error hi def link pl1StringLiteral String hi def link pl1CommentString String hi def link pl1Comment2String String hi def link pl1Symbol Normal hi def link pl1Trigger Function hi def link pl1TypeAttribute StorageClass hi def link pl1Todo Todo let b:current_syntax = "pl1" if exists("b:current_syntax") finish endif syn case ignore syn keyword plmTodo contained TODO FIXME XXX syn region plmString start=+'+ end=+'+ syn match plmOperator "[@=\+\-\*\/\<\>]" syn match plmIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match plmDelimiter "[();,]" syn region plmPreProc start="^\s*\$\s*" skip="\\$" end="$" syn match plmNumber "-\=\<\d\+\>" syn match plmNumber "\<[0-9a-fA-F]*[hH]*\>" if exists("c_space_errors") syn match plmSpaceError "\s*$" syn match plmSpaceError " \+\t"me=e-1 endif if exists("c_comment_strings") syntax match plmCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region plmCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plmSpecial,plmCommentSkip syntax region plmComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=plmSpecial syntax region plmComment start="/\*" end="\*/" contains=plmTodo,plmCommentString,plmCharacter,plmNumber,plmFloat,plmSpaceError syntax match plmComment "//.*" contains=plmTodo,plmComment2String,plmCharacter,plmNumber,plmSpaceError else syn region plmComment start="/\*" end="\*/" contains=plmTodo,plmSpaceError syn match plmComment "//.*" contains=plmTodo,plmSpaceError endif syntax match plmCommentError "\*/" syn keyword plmReserved ADDRESS AND AT BASED BY BYTE CALL CASE syn keyword plmReserved DATA DECLARE DISABLE DO DWORD syn keyword plmReserved ELSE ENABLE END EOF EXTERNAL syn keyword plmReserved GO GOTO HALT IF INITIAL INTEGER INTERRUPT syn keyword plmReserved LABEL LITERALLY MINUS MOD NOT OR syn keyword plmReserved PLUS POINTER PROCEDURE PUBLIC syn keyword plmReserved REAL REENTRANT RETURN SELECTOR STRUCTURE syn keyword plmReserved THEN TO WHILE WORD XOR syn keyword plm386Reserved CHARINT HWORD LONGINT OFFSET QWORD SHORTINT syn keyword plmBuiltIn ABS ADJUSTRPL BLOCKINPUT BLOCKINWORD BLOCKOUTPUT syn keyword plmBuiltIn BLOCKOUTWORD BUILPTR CARRY CAUSEINTERRUPT CMPB syn keyword plmBuiltIn CMPW DEC DOUBLE FINDB FINDRB FINDRW FINDW FIX syn keyword plmBuiltIn FLAGS FLOAT GETREALERROR HIGH IABS INITREALMATHUNIT syn keyword plmBuiltIn INPUT INT INWORD LAST LOCKSET LENGTH LOW MOVB MOVE syn keyword plmBuiltIn MOVRB MOVRW MOVW NIL OUTPUT OUTWORD RESTOREREALSTATUS syn keyword plmBuiltIn ROL ROR SAL SAVEREALSTATUS SCL SCR SELECTOROF SETB syn keyword plmBuiltIn SETREALMODE SETW SHL SHR SIGN SIGNED SIZE SKIPB syn keyword plmBuiltIn SKIPRB SKIPRW SKIPW STACKBASE STACKPTR TIME SIZE syn keyword plmBuiltIn UNSIGN XLAT ZERO syn keyword plm386BuiltIn INTERRUPT SETINTERRUPT syn keyword plm286BuiltIn CLEARTASKSWITCHEDFLAG GETACCESSRIGHTS syn keyword plm286BuiltIn GETSEGMENTLIMIT LOCALTABLE MACHINESTATUS syn keyword plm286BuiltIn OFFSETOF PARITY RESTOREGLOBALTABLE syn keyword plm286BuiltIn RESTOREINTERRUPTTABLE SAVEGLOBALTABLE syn keyword plm286BuiltIn SAVEINTERRUPTTABLE SEGMENTREADABLE syn keyword plm286BuiltIn SEGMENTWRITABLE TASKREGISTER WAITFORINTERRUPT syn keyword plm386BuiltIn CONTROLREGISTER DEBUGREGISTER FINDHW syn keyword plm386BuiltIn FINDRHW INHWORD MOVBIT MOVRBIT MOVHW MOVRHW syn keyword plm386BuiltIn OUTHWORD SCANBIT SCANRBIT SETHW SHLD SHRD syn keyword plm386BuiltIn SKIPHW SKIPRHW TESTREGISTER syn keyword plm386w16BuiltIn BLOCKINDWORD BLOCKOUTDWORD CMPD FINDD syn keyword plm386w16BuiltIn FINDRD INDWORD MOVD MOVRD OUTDWORD syn keyword plm386w16BuiltIn SETD SKIPD SKIPRD syn sync lines=50 hi def link plmTodo Todo hi def link plmNumber Number hi def link plmOperator Operator hi def link plmDelimiter Operator hi def link plmIdentifier Identifier hi def link plmBuiltIn Statement hi def link plm286BuiltIn Statement hi def link plm386BuiltIn Statement hi def link plm386w16BuiltIn Statement hi def link plmReserved Statement hi def link plm386Reserved Statement hi def link plmPreProc PreProc hi def link plmCommentError plmError hi def link plmCommentString plmString hi def link plmComment2String plmString hi def link plmCommentSkip plmComment hi def link plmString String hi def link plmComment Comment let b:current_syntax = "plm" if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'perlscript' endif runtime! syntax/html.vim unlet b:current_syntax syn include @PLPperl syntax/perl.vim syn cluster htmlPreproc add=PLPperlblock syn keyword perlControl PLP_END syn keyword perlStatementInclude include Include syn keyword perlStatementFiles ReadFile WriteFile Counter syn keyword perlStatementScalar Entity AutoURL DecodeURI EncodeURI syn cluster PLPperlcode contains=perlStatement.*,perlFunction,perlOperator,perlVarPlain,perlVarNotInMatches,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlControl,perlConditional,perlRepeat,perlComment,perlPOD,perlHereDoc,perlPackageDecl,perlElseIfError,perlFiledescRead,perlMatch syn region PLPperlblock keepend matchgroup=Delimiter start=+<:=\=+ end=+:>+ transparent contains=@PLPperlcode syn region PLPinclude keepend matchgroup=Delimiter start=+<(+ end=+)>+ let b:current_syntax = "plp" if exists("b:current_syntax") finish endif syn keyword plsqlTodo TODO FIXME XXX DEBUG NOTE syn cluster plsqlCommentGroup contains=plsqlTodo syn case ignore syn match plsqlGarbage "[^ \t()]" syn match plsqlIdentifier "[a-z][a-z0-9$_#]*" syn match plsqlHostIdentifier ":[a-z][a-z0-9$_#]*" if exists("c_space_errors") if !exists("c_no_trail_space_error") syn match plsqlSpaceError "\s\+$" endif if !exists("c_no_tab_space_error") syn match plsqlSpaceError " \+\t"me=e-1 endif endif syn match plsqlSymbol "\(;\|,\|\.\)" syn match plsqlOperator "\(+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" syn match plsqlOperator "\(^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY syn keyword plsqlSQLKeyword AS ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT syn keyword plsqlSQLKeyword CONSTRAINT CRASH CREATE CURRENT DATA DATABASE syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT syn keyword plsqlSQLKeyword DROP DUAL ELSE EXCLUSIVE EXISTS EXTENDS EXTRACT syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE IS ISOLATION KEY LIBRARY syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION OR ORDER ORGANIZATION syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA SELECT SEPARATE SESSION SET syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH syn keyword plsqlKeyword AGENT AND ANY ARRAY ASSIGN AS AT AUTHID BEGIN BODY BY syn keyword plsqlKeyword BULK C CASE CHAR_BASE CHARSETFORM CHARSETID CLOSE syn keyword plsqlKeyword COLLECT CONSTANT CONSTRUCTOR CONTEXT CURRVAL DECLARE syn keyword plsqlKeyword DVOID EXCEPTION EXCEPTION_INIT EXECUTE EXIT FETCH syn keyword plsqlKeyword FINAL FUNCTION GOTO HASH IMMEDIATE IN INDICATOR syn keyword plsqlKeyword INSTANTIABLE IS JAVA LANGUAGE LIBRARY MAP MAXLEN syn keyword plsqlKeyword MEMBER NAME NEW NOCOPY NUMBER_BASE OBJECT OCICOLL syn keyword plsqlKeyword OCIDATE OCIDATETIME OCILOBLOCATOR OCINUMBER OCIRAW syn keyword plsqlKeyword OCISTRING OF OPAQUE OPEN OR ORDER OTHERS OUT syn keyword plsqlKeyword OVERRIDING PACKAGE PARALLEL_ENABLE PARAMETERS syn keyword plsqlKeyword PARTITION PIPELINED PRAGMA PROCEDURE RAISE RANGE REF syn keyword plsqlKeyword RESULT RETURN REVERSE ROWTYPE SB1 SELF SHORT SIZE_T syn keyword plsqlKeyword SQL SQLCODE SQLERRM STATIC STRUCT SUBTYPE TDO THEN syn keyword plsqlKeyword TABLE TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE syn keyword plsqlKeyword TIMEZONE_REGION TYPE UNDER UNSIGNED USING VARIANCE syn keyword plsqlKeyword VARRAY VARYING WHEN WRITE syn match plsqlKeyword "\" syn match plsqlKeyword "\.COUNT\>"hs=s+1 syn match plsqlKeyword "\.EXISTS\>"hs=s+1 syn match plsqlKeyword "\.FIRST\>"hs=s+1 syn match plsqlKeyword "\.LAST\>"hs=s+1 syn match plsqlKeyword "\.DELETE\>"hs=s+1 syn match plsqlKeyword "\.PREV\>"hs=s+1 syn match plsqlKeyword "\.NEXT\>"hs=s+1 syn keyword plsqlFunction ABS ACOS ADD_MONTHS ASCII ASCIISTR ASIN ATAN ATAN2 syn keyword plsqlFunction BFILENAME BITAND CEIL CHARTOROWID CHR COALESCE syn keyword plsqlFunction COMMIT COMMIT_CM COMPOSE CONCAT CONVERT COS COSH syn keyword plsqlFunction COUNT CUBE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP syn keyword plsqlFunction DBTIMEZONE DECODE DECOMPOSE DEREF DUMP EMPTY_BLOB syn keyword plsqlFunction EMPTY_CLOB EXISTS EXP FLOOR FROM_TZ GETBND GLB syn keyword plsqlFunction GREATEST GREATEST_LB GROUPING HEXTORAW INITCAP syn keyword plsqlFunction INSTR INSTR2 INSTR4 INSTRB INSTRC ISNCHAR LAST_DAY syn keyword plsqlFunction LEAST LEAST_UB LENGTH LENGTH2 LENGTH4 LENGTHB LENGTHC syn keyword plsqlFunction LN LOCALTIME LOCALTIMESTAMP LOG LOWER LPAD syn keyword plsqlFunction LTRIM LUB MAKE_REF MAX MIN MOD MONTHS_BETWEEN syn keyword plsqlFunction NCHARTOROWID NCHR NEW_TIME NEXT_DAY NHEXTORAW syn keyword plsqlFunction NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME syn keyword plsqlFunction NLS_INITCAP NLS_LOWER NLSSORT NLS_UPPER NULLFN NULLIF syn keyword plsqlFunction NUMTODSINTERVAL NUMTOYMINTERVAL NVL POWER syn keyword plsqlFunction RAISE_APPLICATION_ERROR RAWTOHEX RAWTONHEX REF syn keyword plsqlFunction REFTOHEX REPLACE ROLLBACK_NR ROLLBACK_SV ROLLUP ROUND syn keyword plsqlFunction ROWIDTOCHAR ROWIDTONCHAR ROWLABEL RPAD RTRIM syn keyword plsqlFunction SAVEPOINT SESSIONTIMEZONE SETBND SET_TRANSACTION_USE syn keyword plsqlFunction SIGN SIN SINH SOUNDEX SQLCODE SQLERRM SQRT STDDEV syn keyword plsqlFunction SUBSTR SUBSTR2 SUBSTR4 SUBSTRB SUBSTRC SUM syn keyword plsqlFunction SYS_AT_TIME_ZONE SYS_CONTEXT SYSDATE SYS_EXTRACT_UTC syn keyword plsqlFunction SYS_GUID SYS_LITERALTODATE SYS_LITERALTODSINTERVAL syn keyword plsqlFunction SYS_LITERALTOTIME SYS_LITERALTOTIMESTAMP syn keyword plsqlFunction SYS_LITERALTOTZTIME SYS_LITERALTOTZTIMESTAMP syn keyword plsqlFunction SYS_LITERALTOYMINTERVAL SYS_OVER__DD SYS_OVER__DI syn keyword plsqlFunction SYS_OVER__ID SYS_OVER_IID SYS_OVER_IIT syn keyword plsqlFunction SYS_OVER__IT SYS_OVER__TI SYS_OVER__TT syn keyword plsqlFunction SYSTIMESTAMP TAN TANH TO_ANYLOB TO_BLOB TO_CHAR syn keyword plsqlFunction TO_CLOB TO_DATE TO_DSINTERVAL TO_LABEL TO_MULTI_BYTE syn keyword plsqlFunction TO_NCHAR TO_NCLOB TO_NUMBER TO_RAW TO_SINGLE_BYTE syn keyword plsqlFunction TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ TO_TIME_TZ syn keyword plsqlFunction TO_YMINTERVAL TRANSLATE TREAT TRIM TRUNC TZ_OFFSET UID syn keyword plsqlFunction UNISTR UPPER UROWID USER USERENV VALUE VARIANCE syn keyword plsqlFunction VSIZE WORK XOR syn match plsqlFunction "\" syn keyword plsqlException ACCESS_INTO_NULL CASE_NOT_FOUND COLLECTION_IS_NULL syn keyword plsqlException CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR syn keyword plsqlException INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND syn keyword plsqlException NOT_LOGGED_ON PROGRAM_ERROR ROWTYPE_MISMATCH syn keyword plsqlException SELF_IS_NULL STORAGE_ERROR SUBSCRIPT_BEYOND_COUNT syn keyword plsqlException SUBSCRIPT_OUTSIDE_LIMIT SYS_INVALID_ROWID syn keyword plsqlException TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR syn keyword plsqlException ZERO_DIVIDE syn keyword plsqlPseudo CURRVAL LEVEL NEXTVAL ROWID ROWNUM if exists("plsql_highlight_triggers") syn keyword plsqlTrigger INSERTING UPDATING DELETING endif syn keyword plsqlConditional ELSIF ELSE IF syn match plsqlConditional "\" syn keyword plsqlRepeat FOR LOOP WHILE FORALL syn match plsqlRepeat "\" if exists("c_comment_strings") syntax match plsqlCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region plsqlCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plsqlCommentSkip syntax region plsqlComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError else syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlSpaceError syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlSpaceError endif syn sync ccomment plsqlComment syn sync ccomment plsqlCommentL syn match plsqlStringError "'.*$" syn match plsqlNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral syn match plsqlNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral syn match plsqlIntLiteral contained "[+-]\=\d\+" syn match plsqlFloatLiteral contained "[+-]\=\d\+\.\d*" syn match plsqlFloatLiteral contained "[+-]\=\d*\.\d*" syn match plsqlCharLiteral "'[^']'" syn match plsqlStringLiteral "'\([^']\|''\)*'" syn keyword plsqlBooleanLiteral TRUE FALSE NULL syn keyword plsqlStorage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN syn keyword plsqlStorage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL syn keyword plsqlStorage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR syn keyword plsqlStorage INT INTEGER INTERVAL LOB LONG MINUTE syn keyword plsqlStorage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB syn keyword plsqlStorage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER syn keyword plsqlStorage POSITIVE POSITIVEN PRECISION RAW REAL RECORD syn keyword plsqlStorage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME syn keyword plsqlStorage TIMESTAMP TIMESTAMP_UNCONSTRAINED syn keyword plsqlStorage TIMESTAMP_TZ_UNCONSTRAINED syn keyword plsqlStorage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR syn keyword plsqlStorage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE syn match plsqlTypeAttribute "%\(TYPE\|ROWTYPE\)\>" syn match plsqlAttribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>" syn cluster plsqlParenGroup contains=plsqlParenError,@plsqlCommentGroup,plsqlCommentSkip,plsqlIntLiteral,plsqlFloatLiteral,plsqlNumbersCom if exists("c_no_bracket_error") syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup syn match plsqlParenError ")" syn match plsqlErrInParen contained "[{}]" else syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket syn match plsqlParenError "[\])]" syn match plsqlErrInParen contained "[{}]" syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen syn match plsqlErrInBracket contained "[);{}]" endif syn sync minlines=10 maxlines=100 hi def link plsqlAttribute Macro hi def link plsqlBlockError Error hi def link plsqlBooleanLiteral Boolean hi def link plsqlCharLiteral Character hi def link plsqlComment Comment hi def link plsqlCommentL Comment hi def link plsqlConditional Conditional hi def link plsqlError Error hi def link plsqlErrInBracket Error hi def link plsqlErrInBlock Error hi def link plsqlErrInParen Error hi def link plsqlException Function hi def link plsqlFloatLiteral Float hi def link plsqlFunction Function hi def link plsqlGarbage Error hi def link plsqlHostIdentifier Label hi def link plsqlIdentifier Normal hi def link plsqlIntLiteral Number hi def link plsqlOperator Operator hi def link plsqlParen Normal hi def link plsqlParenError Error hi def link plsqlSpaceError Error hi def link plsqlPseudo PreProc hi def link plsqlKeyword Keyword hi def link plsqlRepeat Repeat hi def link plsqlStorage StorageClass hi def link plsqlSQLKeyword Function hi def link plsqlStringError Error hi def link plsqlStringLiteral String hi def link plsqlCommentString String hi def link plsqlComment2String String hi def link plsqlSymbol Normal hi def link plsqlTrigger Function hi def link plsqlTypeAttribute StorageClass hi def link plsqlTodo Todo let b:current_syntax = "plsql" if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn sync minlines=10 syn match poStatementMsgCTxt "^msgctxt" syn match poStatementMsgidplural "^msgid_plural" contained syn match poPluralCaseN "[0-9]" contained syn match poStatementMsgstr "^msgstr\(\[[0-9]\]\)" contains=poPluralCaseN syn match poHtml "<\_[^<>]\+>" contains=poHtmlTranslatables,poLineBreak syn match poHtmlNot +"<[^<]\+>"+ms=s+1,me=e-1 syn region poHtmlTranslatables start=+\(abbr\|alt\|content\|summary\|standby\|title\)=\\"+ms=e-1 end=+\\"+ contained contains=@Spell syn match poLineBreak +"\n"+ contained syn region poMsgCTxt matchgroup=poStatementMsgCTxt start=+^msgctxt "+rs=e-1 matchgroup=poStringCTxt end=+^msgid "+me=s-1 contains=poStringCTxt syn region poMsgID matchgroup=poStatementMsgid start=+^msgid "+rs=e-1 matchgroup=poStringID end=+^msgstr\(\|\[[\]0\[]\]\) "+me=s-1 contains=poStringID,poStatementMsgidplural,poStatementMsgid syn region poMsgSTR matchgroup=poStatementMsgstr start=+^msgstr\(\|\[[\]0\[]\]\) "+rs=e-1 matchgroup=poStringSTR end=+\n\n+me=s-1 contains=poStringSTR,poStatementMsgstr syn region poStringCTxt start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region poStringID start=+"+ skip=+\\\\\|\\"+ end=+"+ contained \ contains=poSpecial,poFormat,poCommentKDE,poPluralKDE,poKDEdesktopFile,poHtml,poAcceleratorId,poHtmlNot,poVariable syn region poStringSTR start=+"+ skip=+\\\\\|\\"+ end=+"+ contained \ contains=@Spell,poSpecial,poFormat,poHeaderItem,poCommentKDEError,poHeaderUndefined,poPluralKDEError,poMsguniqError,poKDEdesktopFile,poHtml,poAcceleratorStr,poHtmlNot,poVariable syn match poHeaderItem "\(Project-Id-Version\|Report-Msgid-Bugs-To\|POT-Creation-Date\|PO-Revision-Date\|Last-Translator\|Language-Team\|Language\|MIME-Version\|Content-Type\|Content-Transfer-Encoding\|Plural-Forms\|X-Generator\): " contained syn match poHeaderUndefined "\(PACKAGE VERSION\|YEAR-MO-DA HO:MI+ZONE\|FULL NAME \|LANGUAGE \|CHARSET\|ENCODING\|INTEGER\|EXPRESSION\)" contained syn match poCopyrightUnset "SOME DESCRIPTIVE TITLE\|FIRST AUTHOR , YEAR\|Copyright (C) YEAR Free Software Foundation, Inc\|YEAR THE PACKAGE\'S COPYRIGHT HOLDER\|PACKAGE" contained syn match poComment "^#.*$" syn keyword poFlagFuzzy fuzzy contained syn match poCommentTranslator "^# .*$" contains=poCopyrightUnset syn match poCommentAutomatic "^#\..*$" syn match poCommentSources "^#:.*$" syn match poCommentFlags "^#,.*$" contains=poFlagFuzzy syn match poDiffOld '\(^#| "[^{]*+}\|{+[^}]*+}\|{+[^}]*\|"$\)' contained syn match poDiffNew '\(^#| "[^{]*-}\|{-[^}]*-}\|{-[^}]*\|"$\)' contained syn match poCommentDiff "^#|.*$" contains=poDiffOld,poDiffNew syn region poCommentKDE start=+"_: +ms=s+1 end="\\n" end="\"\n^msgstr"me=s-1 contained syn region poCommentKDEError start=+"\(\|\s\+\)_:+ms=s+1 end="\\n" end=+"\n\n+me=s-1 contained syn match poPluralKDE +"_n: +ms=s+1 contained syn region poPluralKDEError start=+"\(\|\s\+\)_n:+ms=s+1 end="\"\n\n"me=s-1 contained syn match poSpecial contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" syn match poFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match poFormat "%%" contained syn region poMsguniqError matchgroup=poMsguniqErrorMarkers start="#-#-#-#-#" end='#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)-\("\n"\|\)#\("\n"\|\)\\n' contained syn match poObsolete "^#\~.*$" syn match poKDEdesktopFile "\"\(Name\|Comment\|GenericName\|Description\|Keywords\|About\)="ms=s+1,me=e-1 syn match poAcceleratorId contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 syn match poAcceleratorStr contained "[^&_~][&_~]\(\a\|\d\)[^:]"ms=s+1,me=e-1 contains=@Spell syn match poVariable contained "%\d" hi def link poCommentSources PreProc hi def link poComment Comment hi def link poCommentAutomatic Comment hi def link poCommentTranslator Comment hi def link poCommentFlags Special hi def link poCommentDiff Comment hi def link poCopyrightUnset Todo hi def link poFlagFuzzy Todo hi def link poDiffOld Todo hi def link poDiffNew Special hi def link poObsolete Comment hi def link poStatementMsgid Statement hi def link poStatementMsgstr Statement hi def link poStatementMsgidplural Statement hi def link poStatementMsgCTxt Statement hi def link poPluralCaseN Constant hi def link poStringCTxt Comment hi def link poStringID String hi def link poStringSTR String hi def link poCommentKDE Comment hi def link poCommentKDEError Error hi def link poPluralKDE Comment hi def link poPluralKDEError Error hi def link poHeaderItem Identifier hi def link poHeaderUndefined Todo hi def link poKDEdesktopFile Identifier hi def link poHtml Identifier hi def link poHtmlNot String hi def link poHtmlTranslatables String hi def link poLineBreak String hi def link poFormat poSpecial hi def link poSpecial Special hi def link poAcceleratorId Special hi def link poAcceleratorStr Special hi def link poVariable Special hi def link poMsguniqError Special hi def link poMsguniqErrorMarkers Comment let b:current_syntax = "po" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match podCommand "^=encoding" nextgroup=podCmdText contains=@NoSpell syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell syn match podCommand "^=back" contains=@NoSpell syn match podCommand "^=cut" contains=@NoSpell syn match podCommand "^=pod" contains=@NoSpell syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell syn match podCmdText ".*$" contained contains=podFormat,@NoSpell syn match podOverIndent "\d\+" contained contains=@NoSpell syn match podForKeywd "\S\+" contained contains=@NoSpell syn match podVerbatimLine "^\s.*$" contains=@NoSpell syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell syn match podFormat "Z<>" syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell hi def link podCommand Statement hi def link podCmdText String hi def link podOverIndent Number hi def link podForKeywd Identifier hi def link podFormat Identifier hi def link podVerbatimLine PreProc hi def link podSpecial Identifier hi def link podEscape String hi def link podEscape2 Number if exists("perl_pod_spellcheck_headings") syn clear podCmdText syn match podCmdText ".*$" contained contains=podFormat endif if exists("perl_pod_formatting") syn clear podFormat syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell syn region podFormat start="[CLF]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell syn match podFormat "Z<>" contains=podEscape,podEscape2,@NoSpell syn match podBoldOpen "B<" contains=@NoSpell syn match podItalicOpen "I<" contains=@NoSpell syn match podNoSpaceOpen "S<" contains=@NoSpell syn match podIndexOpen "X<" contains=@NoSpell syn match podBoldAlternativeDelimOpen "B<< " contains=@NoSpell syn match podItalicAlternativeDelimOpen "I<< " contains=@NoSpell syn match podNoSpaceAlternativeDelimOpen "S<< " contains=@NoSpell syn match podIndexAlternativeDelimOpen "X<< " contains=@NoSpell syn region podBold start="B<[^<]"me=e end=">" oneline contains=podBoldItalic,podBoldOpen syn region podBoldAlternativeDelim start="B<<\s" end="\s>>" oneline contains=podBoldAlternativeDelimOpen syn region podItalic start="I<[^<]"me=e end=">" oneline contains=podItalicBold,podItalicOpen syn region podItalicAlternativeDelim start="I<<\s" end="\s>>" oneline contains=podItalicAlternativeDelimOpen syn region podBoldItalic contained start="I<[^<]"me=e end=">" oneline syn region podItalicBold contained start="B<[^<]"me=e end=">" oneline syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e oneline contains=podNoSpaceOpen syn region podNoSpaceAlternativeDelim start="S<<\s"ms=s-2 end="\s>>"me=e oneline contains=podNoSpaceAlternativeDelimOpen syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e oneline contains=podIndexOpen syn region podIndexAlternativeDelim start="X<<\s"ms=s-2 end="\s>>"me=e oneline contains=podIndexAlternativeDelimOpen syn match podVerbatimLine "^\s.*$" contains=@NoSpell syn clear podCmdText if exists("perl_pod_spellcheck_headings") syn match podCmdText ".*$" contained contains=podFormat,podBold, \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen, \podItalicAlternativeDelimOpen,podNoSpaceOpen else syn match podCmdText ".*$" contained contains=podFormat,podBold, \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, \@NoSpell endif hi def podBold term=bold cterm=bold gui=bold hi link podBoldAlternativeDelim podBold hi link podBoldAlternativeDelimOpen podBold hi link podBoldOpen podBold hi link podNoSpace Identifier hi link podNoSpaceAlternativeDelim Identifier hi link podIndex Identifier hi link podIndexAlternativeDelim Identifier hi def podItalic term=italic cterm=italic gui=italic hi link podItalicAlternativeDelim podItalic hi link podItalicAlternativeDelimOpen podItalic hi link podItalicOpen podItalic hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold endif let b:current_syntax = "pod" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match setlocal iskeyword=33-127,^(,^),^<,^>,^[,^],^{,^},^/,^% syn keyword postscrTodo contained TODO syn match postscrComment "%.*$" contains=postscrTodo,@Spell syn match postscrDSCComment "^%!PS-Adobe-\d\+\.\d\+\s*.*$" syn match postscrDSCComment "^%%\u\+.*$" contains=@postscrString,@postscrNumber,@Spell syn match postscrDSCComment "^%%+ *.*$" contains=@postscrString,@postscrNumber,@Spell syn match postscrName "\k\+" syn match postscrIdentifierError "/\{1,2}[[:space:]\[\]{}]"me=e-1 syn match postscrIdentifier "/\{1,2}\k\+" contains=postscrConstant,postscrBoolean,postscrCustConstant syn case ignore syn match postscrHex "^[[:xdigit:]][[:xdigit:][:space:]]*$" syn match postscrInteger "\<[+-]\=\d\+\>" syn match postscrRadix "\d\+#\x\+\>" syn match postscrFloat "[+-]\=\d\+\.\>" syn match postscrFloat "[+-]\=\d\+\.\d*\(e[+-]\=\d\+\)\=\>" syn match postscrFloat "[+-]\=\.\d\+\(e[+-]\=\d\+\)\=\>" syn match postscrFloat "[+-]\=\d\+e[+-]\=\d\+\>" syn cluster postscrNumber contains=postscrInteger,postscrRadix,postscrFloat syn case match syn match postscrSpecialChar contained "\\[nrtbf\\()]" syn match postscrSpecialCharError contained "\\[^nrtbf\\()]"he=e-1 syn match postscrSpecialChar contained "\\\o\{1,3}" syn region postscrASCIIString start=+(+ end=+)+ skip=+([^)]*)+ contains=postscrSpecialChar,postscrSpecialCharError,@Spell syn match postscrASCIIStringError ")" syn match postscrHexCharError contained "[^<>[:xdigit:][:space:]]" syn region postscrHexString start=+<\($\|[^<]\)+ end=+>+ contains=postscrHexCharError syn match postscrHexString "<>" syn match postscrASCII85CharError contained "[^<>\~!-uz[:space:]]" syn region postscrASCII85String start=+<\~+ end=+\~>+ contains=postscrASCII85CharError syn cluster postscrString contains=postscrASCIIString,postscrHexString,postscrASCII85String if !exists("postscr_level") let postscr_level = 2 endif syn keyword postscrOperator pop exch dup copy index roll clear count mark cleartomark counttomark syn keyword postscrMathOperator add div idiv mod mul sub abs neg ceiling floor round truncate sqrt atan cos syn keyword postscrMathOperator sin exp ln log rand srand rrand syn match postscrOperator "[\[\]{}]" syn keyword postscrOperator array length get put getinterval putinterval astore aload copy syn keyword postscrRepeat forall syn keyword postscrOperator dict maxlength begin end def load store known where currentdict syn keyword postscrOperator countdictstack dictstack cleardictstack internaldict syn keyword postscrConstant $error systemdict userdict statusdict errordict syn keyword postscrOperator string anchorsearch search token syn keyword postscrLogicalOperator eq ne ge gt le lt and not or if exists("postscr_andornot_binaryop") syn keyword postscrBinaryOperator and or not else syn keyword postscrLogicalOperator and not or endif syn keyword postscrBinaryOperator xor bitshift syn keyword postscrBoolean true false syn keyword postscrConstant arraytype booleantype conditiontype dicttype filetype fonttype gstatetype syn keyword postscrConstant integertype locktype marktype nametype nulltype operatortype syn keyword postscrConstant packedarraytype realtype savetype stringtype syn keyword postscrConditional if ifelse syn keyword postscrRepeat for repeat loop syn keyword postscrOperator exec exit stop stopped countexecstack execstack quit syn keyword postscrProcedure start syn keyword postscrOperator type cvlit cvx xcheck executeonly noaccess readonly rcheck wcheck cvi cvn cvr syn keyword postscrOperator cvrs cvs syn keyword postscrOperator file closefile read write readhexstring writehexstring readstring writestring syn keyword postscrOperator bytesavailable flush flushfile resetfile status run currentfile print syn keyword postscrOperator stack pstack readline deletefile setfileposition fileposition renamefile syn keyword postscrRepeat filenameforall syn keyword postscrProcedure = == syn keyword postscrOperator save restore syn keyword postscrOperator bind null usertime executive echo realtime syn keyword postscrConstant product revision serialnumber version syn keyword postscrProcedure prompt syn keyword postscrOperator gsave grestore grestoreall initgraphics setlinewidth setlinecap currentgray syn keyword postscrOperator currentlinejoin setmiterlimit currentmiterlimit setdash currentdash setgray syn keyword postscrOperator sethsbcolor currenthsbcolor setrgbcolor currentrgbcolor currentlinewidth syn keyword postscrOperator currentlinecap setlinejoin setcmykcolor currentcmykcolor syn keyword postscrOperator setscreen currentscreen settransfer currenttransfer setflat currentflat syn keyword postscrOperator currentblackgeneration setblackgeneration setundercolorremoval syn keyword postscrOperator setcolorscreen currentcolorscreen setcolortransfer currentcolortransfer syn keyword postscrOperator currentundercolorremoval syn keyword postscrOperator matrix initmatrix identmatrix defaultmatrix currentmatrix setmatrix translate syn keyword postscrOperator concat concatmatrix transform dtransform itransform idtransform invertmatrix syn keyword postscrOperator scale rotate syn keyword postscrOperator newpath currentpoint moveto rmoveto lineto rlineto arc arcn arcto curveto syn keyword postscrOperator closepath flattenpath reversepath strokepath charpath clippath pathbbox syn keyword postscrOperator initclip clip eoclip rcurveto syn keyword postscrRepeat pathforall syn keyword postscrOperator erasepage fill eofill stroke image imagemask colorimage syn keyword postscrOperator showpage copypage nulldevice syn keyword postscrProcedure findfont syn keyword postscrConstant FontDirectory ISOLatin1Encoding StandardEncoding syn keyword postscrOperator definefont scalefont makefont setfont currentfont show ashow syn keyword postscrOperator stringwidth kshow setcachedevice syn keyword postscrOperator setcharwidth widthshow awidthshow findencoding cshow rootfont setcachedevice2 syn keyword postscrOperator vmstatus cachestatus setcachelimit syn keyword postscrConstant contained Gray Red Green Blue All None DeviceGray DeviceRGB syn keyword postscrConstant contained ASCIIHexDecode ASCIIHexEncode ASCII85Decode ASCII85Encode LZWDecode syn keyword postscrConstant contained RunLengthDecode RunLengthEncode SubFileDecode NullEncode syn keyword postscrConstant contained GIFDecode PNGDecode LZWEncode syn keyword postscrConstant contained DCTEncode DCTDecode Colors HSamples VSamples QuantTables QFactor syn keyword postscrConstant contained HuffTables ColorTransform syn keyword postscrConstant contained CCITTFaxEncode CCITTFaxDecode Uncompressed K EndOfLine syn keyword postscrConstant contained Columns Rows EndOfBlock Blacks1 DamagedRowsBeforeError syn keyword postscrConstant contained EncodedByteAlign syn keyword postscrConstant contained FormType XUID BBox Matrix PaintProc Implementation syn keyword postscrProcedure handleerror syn keyword postscrConstant contained configurationerror dictfull dictstackunderflow dictstackoverflow syn keyword postscrConstant contained execstackoverflow interrupt invalidaccess syn keyword postscrConstant contained invalidcontext invalidexit invalidfileaccess invalidfont syn keyword postscrConstant contained invalidid invalidrestore ioerror limitcheck nocurrentpoint syn keyword postscrConstant contained rangecheck stackoverflow stackunderflow syntaxerror timeout syn keyword postscrConstant contained typecheck undefined undefinedfilename undefinedresource syn keyword postscrConstant contained undefinedresult unmatchedmark unregistered VMerror if exists("postscr_fonts") syn keyword postscrConstant contained Symbol Times-Roman Times-Italic Times-Bold Times-BoldItalic syn keyword postscrConstant contained Helvetica Helvetica-Oblique Helvetica-Bold Helvetica-BoldOblique syn keyword postscrConstant contained Courier Courier-Oblique Courier-Bold Courier-BoldOblique endif if exists("postscr_display") syn keyword postscrOperator currentcontext fork join detach lock monitor condition wait notify yield syn keyword postscrOperator viewclip eoviewclip rectviewclip initviewclip viewclippath deviceinfo syn keyword postscrOperator sethalftonephase currenthalftonephase wtranslation defineusername endif if exists("postscr_encodings") syn keyword postscrConstant contained .notdef syn keyword postscrConstant contained space exclam quotedbl numbersign dollar percent ampersand quoteright syn keyword postscrConstant contained parenleft parenright asterisk plus comma hyphen period slash zero syn keyword postscrConstant contained one two three four five six seven eight nine colon semicolon less syn keyword postscrConstant contained equal greater question at syn keyword postscrConstant contained bracketleft backslash bracketright asciicircum underscore quoteleft syn keyword postscrConstant contained braceleft bar braceright asciitilde syn keyword postscrConstant contained exclamdown cent sterling fraction yen florin section currency syn keyword postscrConstant contained quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright syn keyword postscrConstant contained fi fl endash dagger daggerdbl periodcentered paragraph bullet syn keyword postscrConstant contained quotesinglbase quotedblbase quotedblright guillemotright ellipsis syn keyword postscrConstant contained perthousand questiondown grave acute circumflex tilde macron breve syn keyword postscrConstant contained dotaccent dieresis ring cedilla hungarumlaut ogonek caron emdash syn keyword postscrConstant contained AE ordfeminine Lslash Oslash OE ordmasculine ae dotlessi lslash syn keyword postscrConstant contained oslash oe germandbls syn keyword postscrConstant contained universal existential suchthat asteriskmath minus syn keyword postscrConstant contained congruent Alpha Beta Chi Delta Epsilon Phi Gamma Eta Iota theta1 syn keyword postscrConstant contained Kappa Lambda Mu Nu Omicron Pi Theta Rho Sigma Tau Upsilon sigma1 syn keyword postscrConstant contained Omega Xi Psi Zeta therefore perpendicular syn keyword postscrConstant contained radicalex alpha beta chi delta epsilon phi gamma eta iota phi1 syn keyword postscrConstant contained kappa lambda mu nu omicron pi theta rho sigma tau upsilon omega1 syn keyword postscrConstant contained Upsilon1 minute lessequal infinity club diamond heart spade syn keyword postscrConstant contained arrowboth arrowleft arrowup arrowright arrowdown degree plusminus syn keyword postscrConstant contained second greaterequal multiply proportional partialdiff divide syn keyword postscrConstant contained notequal equivalence approxequal arrowvertex arrowhorizex syn keyword postscrConstant contained aleph Ifraktur Rfraktur weierstrass circlemultiply circleplus syn keyword postscrConstant contained emptyset intersection union propersuperset reflexsuperset notsubset syn keyword postscrConstant contained propersubset reflexsubset element notelement angle gradient syn keyword postscrConstant contained registerserif copyrightserif trademarkserif radical dotmath syn keyword postscrConstant contained logicalnot logicaland logicalor arrowdblboth arrowdblleft arrowdblup syn keyword postscrConstant contained arrowdblright arrowdbldown omega xi psi zeta similar carriagereturn syn keyword postscrConstant contained lozenge angleleft registersans copyrightsans trademarksans summation syn keyword postscrConstant contained parenlefttp parenleftex parenleftbt bracketlefttp bracketleftex syn keyword postscrConstant contained bracketleftbt bracelefttp braceleftmid braceleftbt braceex euro syn keyword postscrConstant contained angleright integral integraltp integralex integralbt parenrighttp syn keyword postscrConstant contained parenrightex parenrightbt bracketrighttp bracketrightex syn keyword postscrConstant contained bracketrightbt bracerighttp bracerightmid bracerightbt syn keyword postscrConstant contained brokenbar copyright registered twosuperior threesuperior syn keyword postscrConstant contained onesuperior onequarter onehalf threequarters syn keyword postscrConstant contained Agrave Aacute Acircumflex Atilde Adieresis Aring Ccedilla Egrave syn keyword postscrConstant contained Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis syn keyword postscrConstant contained Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis Ugrave Uacute syn keyword postscrConstant contained Ucircumflex Udieresis Yacute Thorn syn keyword postscrConstant contained agrave aacute acircumflex atilde adieresis aring ccedilla egrave syn keyword postscrConstant contained eacute ecircumflex edieresis igrave iacute icircumflex idieresis syn keyword postscrConstant contained eth ntilde ograve oacute ocircumflex otilde odieresis ugrave uacute syn keyword postscrConstant contained ucircumflex udieresis yacute thorn ydieresis syn keyword postscrConstant contained zcaron exclamsmall Hungarumlautsmall dollaroldstyle dollarsuperior syn keyword postscrConstant contained ampersandsmall Acutesmall parenleftsuperior parenrightsuperior syn keyword postscrConstant contained twodotenleader onedotenleader zerooldstyle oneoldstyle twooldstyle syn keyword postscrConstant contained threeoldstyle fouroldstyle fiveoldstyle sixoldstyle sevenoldstyle syn keyword postscrConstant contained eightoldstyle nineoldstyle commasuperior syn keyword postscrConstant contained threequartersemdash periodsuperior questionsmall asuperior bsuperior syn keyword postscrConstant contained centsuperior dsuperior esuperior isuperior lsuperior msuperior syn keyword postscrConstant contained nsuperior osuperior rsuperior ssuperior tsuperior ff ffi ffl syn keyword postscrConstant contained parenleftinferior parenrightinferior Circumflexsmall hyphensuperior syn keyword postscrConstant contained Gravesmall Asmall Bsmall Csmall Dsmall Esmall Fsmall Gsmall Hsmall syn keyword postscrConstant contained Ismall Jsmall Ksmall Lsmall Msmall Nsmall Osmall Psmall Qsmall syn keyword postscrConstant contained Rsmall Ssmall Tsmall Usmall Vsmall Wsmall Xsmall Ysmall Zsmall syn keyword postscrConstant contained colonmonetary onefitted rupiah Tildesmall exclamdownsmall syn keyword postscrConstant contained centoldstyle Lslashsmall Scaronsmall Zcaronsmall Dieresissmall syn keyword postscrConstant contained Brevesmall Caronsmall Dotaccentsmall Macronsmall figuredash syn keyword postscrConstant contained hypheninferior Ogoneksmall Ringsmall Cedillasmall questiondownsmall syn keyword postscrConstant contained oneeighth threeeighths fiveeighths seveneighths onethird twothirds syn keyword postscrConstant contained zerosuperior foursuperior fivesuperior sixsuperior sevensuperior syn keyword postscrConstant contained eightsuperior ninesuperior zeroinferior oneinferior twoinferior syn keyword postscrConstant contained threeinferior fourinferior fiveinferior sixinferior seveninferior syn keyword postscrConstant contained eightinferior nineinferior centinferior dollarinferior periodinferior syn keyword postscrConstant contained commainferior Agravesmall Aacutesmall Acircumflexsmall syn keyword postscrConstant contained Atildesmall Adieresissmall Aringsmall AEsmall Ccedillasmall syn keyword postscrConstant contained Egravesmall Eacutesmall Ecircumflexsmall Edieresissmall Igravesmall syn keyword postscrConstant contained Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall syn keyword postscrConstant contained Ogravesmall Oacutesmall Ocircumflexsmall Otildesmall Odieresissmall syn keyword postscrConstant contained OEsmall Oslashsmall Ugravesmall Uacutesmall Ucircumflexsmall syn keyword postscrConstant contained Udieresissmall Yacutesmall Thornsmall Ydieresissmall Black Bold Book syn keyword postscrConstant contained Light Medium Regular Roman Semibold syn keyword postscrConstant contained trademark Scaron Ydieresis Zcaron scaron softhyphen overscore syn keyword postscrConstant contained graybox Sacute Tcaron Zacute sacute tcaron zacute Aogonek Scedilla syn keyword postscrConstant contained Zdotaccent aogonek scedilla Lcaron lcaron zdotaccent Racute Abreve syn keyword postscrConstant contained Lacute Cacute Ccaron Eogonek Ecaron Dcaron Dcroat Nacute Ncaron syn keyword postscrConstant contained Ohungarumlaut Rcaron Uring Uhungarumlaut Tcommaaccent racute abreve syn keyword postscrConstant contained lacute cacute ccaron eogonek ecaron dcaron dcroat nacute ncaron syn keyword postscrConstant contained ohungarumlaut rcaron uring uhungarumlaut tcommaaccent Gbreve syn keyword postscrConstant contained Idotaccent gbreve blank apple endif if postscr_level == 2 || postscr_level == 3 syn match postscrL2Operator "\(<<\|>>\)" syn keyword postscrL2Operator undef syn keyword postscrConstant globaldict shareddict syn keyword postscrL2Operator setpagedevice currentpagedevice syn keyword postscrL2Operator rectclip setbbox uappend ucache upath ustrokepath arct syn keyword postscrL2Operator rectfill rectstroke ufill ueofill ustroke syn keyword postscrL2Operator currentpacking setpacking packedarray syn keyword postscrL2Operator languagelevel syn keyword postscrL2Operator infill ineofill instroke inufill inueofill inustroke syn keyword postscrL2Operator gstate setgstate currentgstate setcolor syn keyword postscrL2Operator setcolorspace currentcolorspace setstrokeadjust currentstrokeadjust syn keyword postscrL2Operator currentcolor syn keyword postscrL2Operator sethalftone currenthalftone setoverprint currentoverprint syn keyword postscrL2Operator setcolorrendering currentcolorrendering syn keyword postscrL2Constant GlobalFontDirectory SharedFontDirectory syn keyword postscrL2Operator glyphshow selectfont syn keyword postscrL2Operator addglyph undefinefont xshow xyshow yshow syn keyword postscrL2Operator makepattern setpattern execform syn keyword postscrL2Operator defineresource undefineresource findresource resourcestatus syn keyword postscrL2Repeat resourceforall syn keyword postscrL2Operator filter printobject writeobject setobjectformat currentobjectformat syn keyword postscrL2Operator currentshared setshared defineuserobject execuserobject undefineuserobject syn keyword postscrL2Operator gcheck scheck startjob currentglobal setglobal syn keyword postscrConstant UserObjects syn keyword postscrL2Operator setucacheparams setvmthreshold ucachestatus setsystemparams syn keyword postscrL2Operator setuserparams currentuserparams setcacheparams currentcacheparams syn keyword postscrL2Operator currentdevparams setdevparams vmreclaim currentsystemparams syn keyword postscrConstant contained DeviceCMYK Pattern Indexed Separation Cyan Magenta Yellow Black syn keyword postscrConstant contained CIEBasedA CIEBasedABC CIEBasedDEF CIEBasedDEFG syn keyword postscrConstant contained newerror errorname command errorinfo ostack estack dstack syn keyword postscrConstant contained recordstacks binary syn keyword postscrConstant contained DefineResource UndefineResource FindResource ResourceStatus syn keyword postscrConstant contained ResourceForAll Category InstanceType ResourceFileName syn keyword postscrConstant contained Font Encoding Form Pattern ProcSet ColorSpace Halftone syn keyword postscrConstant contained ColorRendering Filter ColorSpaceFamily Emulator IODevice syn keyword postscrConstant contained ColorRenderingType FMapType FontType FormType HalftoneType syn keyword postscrConstant contained ImageType PatternType Category Generic syn keyword postscrConstant contained PageSize MediaColor MediaWeight MediaType InputAttributes ManualFeed syn keyword postscrConstant contained OutputType OutputAttributes NumCopies Collate Duplex Tumble syn keyword postscrConstant contained Separations HWResolution Margins NegativePrint MirrorPrint syn keyword postscrConstant contained CutMedia AdvanceMedia AdvanceDistance ImagingBBox syn keyword postscrConstant contained Policies Install BeginPage EndPage PolicyNotFound PolicyReport syn keyword postscrConstant contained ManualSize OutputFaceUp Jog syn keyword postscrConstant contained Bind BindDetails Booklet BookletDetails CollateDetails syn keyword postscrConstant contained DeviceRenderingInfo ExitJamRecovery Fold FoldDetails Laminate syn keyword postscrConstant contained ManualFeedTimeout Orientation OutputPage syn keyword postscrConstant contained PostRenderingEnhance PostRenderingEnhanceDetails syn keyword postscrConstant contained PreRenderingEnhance PreRenderingEnhanceDetails syn keyword postscrConstant contained Signature SlipSheet Staple StapleDetails Trim syn keyword postscrConstant contained ProofSet REValue PrintQuality ValuesPerColorComponent AntiAlias syn keyword postscrConstant contained Selector LanguageFamily LanguageVersion syn keyword postscrConstant contained HalftoneType HalftoneName syn keyword postscrConstant contained AccurateScreens ActualAngle Xsquare Ysquare AccurateFrequency syn keyword postscrConstant contained Frequency SpotFunction Angle Width Height Thresholds syn keyword postscrConstant contained RedFrequency RedSpotFunction RedAngle RedWidth RedHeight syn keyword postscrConstant contained GreenFrequency GreenSpotFunction GreenAngle GreenWidth GreenHeight syn keyword postscrConstant contained BlueFrequency BlueSpotFunction BlueAngle BlueWidth BlueHeight syn keyword postscrConstant contained GrayFrequency GrayAngle GraySpotFunction GrayWidth GrayHeight syn keyword postscrConstant contained GrayThresholds BlueThresholds GreenThresholds RedThresholds syn keyword postscrConstant contained TransferFunction syn keyword postscrConstant contained RangeA DecodeA MatrixA RangeABC DecodeABC MatrixABC BlackPoint syn keyword postscrConstant contained RangeLMN DecodeLMN MatrixLMN WhitePoint RangeDEF DecodeDEF RangeHIJ syn keyword postscrConstant contained RangeDEFG DecodeDEFG RangeHIJK Table syn keyword postscrConstant contained ColorRenderingType EncodeLMB EncodeABC RangePQR MatrixPQR syn keyword postscrConstant contained AbsoluteColorimetric RelativeColorimetric Saturation Perceptual syn keyword postscrConstant contained TransformPQR RenderTable syn keyword postscrConstant contained PatternType PaintType TilingType XStep YStep syn keyword postscrConstant contained ImageType ImageMatrix MultipleDataSources DataSource syn keyword postscrConstant contained BitsPerComponent Decode Interpolate syn keyword postscrConstant contained FontType FontMatrix FontName FontInfo LanguageLevel WMode Encoding syn keyword postscrConstant contained UniqueID StrokeWidth Metrics Metrics2 CDevProc CharStrings Private syn keyword postscrConstant contained FullName Notice version ItalicAngle isFixedPitch UnderlinePosition syn keyword postscrConstant contained FMapType Encoding FDepVector PrefEnc EscChar ShiftOut ShiftIn syn keyword postscrConstant contained WeightVector Blend $Blend CIDFontType sfnts CIDSystemInfo CodeMap syn keyword postscrConstant contained CMap CIDFontName CIDSystemInfo UIDBase CIDDevProc CIDCount syn keyword postscrConstant contained CIDMapOffset FDArray FDBytes GDBytes GlyphData GlyphDictionary syn keyword postscrConstant contained SDBytes SubrMapOffset SubrCount BuildGlyph CIDMap FID MIDVector syn keyword postscrConstant contained Ordering Registry Supplement CMapName CMapVersion UIDOffset syn keyword postscrConstant contained SubsVector UnderlineThickness FamilyName FontBBox CurMID syn keyword postscrConstant contained Weight syn keyword postscrConstant contained MaxFontItem MinFontCompress MaxUPathItem MaxFormItem MaxPatternItem syn keyword postscrConstant contained MaxScreenItem MaxOpStack MaxDictStack MaxExecStack MaxLocalVM syn keyword postscrConstant contained VMReclaim VMThreshold syn keyword postscrConstant contained SystemParamsPassword StartJobPassword BuildTime ByteOrder RealFormat syn keyword postscrConstant contained MaxFontCache CurFontCache MaxOutlineCache CurOutlineCache syn keyword postscrConstant contained MaxUPathCache CurUPathCache MaxFormCache CurFormCache syn keyword postscrConstant contained MaxPatternCache CurPatternCache MaxScreenStorage CurScreenStorage syn keyword postscrConstant contained MaxDisplayList CurDisplayList syn keyword postscrConstant contained Predictor syn keyword postscrL2Operator letter lettersmall legal ledger 11x17 a4 a3 a4small b5 note syn keyword postscrL2Operator lettertray legaltray ledgertray a3tray a4tray b5tray 11x17tray syn keyword postscrL2Operator sccbatch sccinteractive setsccbatch setsccinteractive syn keyword postscrL2Operator duplexmode firstside newsheet setduplexmode settumble tumble syn keyword postscrL2Operator devdismount devformat devmount devstatus syn keyword postscrL2Repeat devforall syn keyword postscrL2Operator accuratescreens checkscreen pagemargin pageparams setaccuratescreens setpage syn keyword postscrL2Operator setpagemargin setpageparams syn keyword postscrL2Operator appletalktype buildtime byteorder checkpassword defaulttimeouts diskonline syn keyword postscrL2Operator diskstatus manualfeed manualfeedtimeout margins mirrorprint pagecount syn keyword postscrL2Operator pagestackorder printername processcolors sethardwareiomode setjobtimeout syn keyword postscrL2Operator setpagestockorder setprintername setresolution doprinterrors dostartpage syn keyword postscrL2Operator hardwareiomode initializedisk jobname jobtimeout ramsize realformat resolution syn keyword postscrL2Operator setdefaulttimeouts setdoprinterrors setdostartpage setdosysstart syn keyword postscrL2Operator setuserdiskpercent softwareiomode userdiskpercent waittimeout syn keyword postscrL2Operator setsoftwareiomode dosysstart emulate setmargins setmirrorprint endif " PS2 highlighting if postscr_level == 3 syn keyword postscrL3Operator setsmoothness currentsmoothness shfill syn keyword postscrL3Operator clipsave cliprestore syn keyword postscrL3Operator setpage setpageparams syn keyword postscrL3Operator findcolorrendering syn keyword postscrL3Operator composefont syn keyword postscrConstant contained DeviceN TrappingDetailsType syn keyword postscrConstant contained DeferredMediaSelection ImageShift InsertSheet LeadingEdge MaxSeparations syn keyword postscrConstant contained MediaClass MediaPosition OutputDevice PageDeviceName PageOffset ProcessColorModel syn keyword postscrConstant contained RollFedMedia SeparationColorNames SeparationOrder Trapping TrappingDetails syn keyword postscrConstant contained TraySwitch UseCIEColor syn keyword postscrConstant contained ColorantDetails ColorantName ColorantType NeutralDensity TrappingOrder syn keyword postscrConstant contained ColorantSetName syn keyword postscrConstant contained BlackColorLimit BlackDensityLimit BlackWidth ColorantZoneDetails syn keyword postscrConstant contained SlidingTrapLimit StepLimit TrapColorScaling TrapSetName TrapWidth syn keyword postscrConstant contained ImageResolution ImageToObjectTrapping ImageTrapPlacement syn keyword postscrConstant contained StepLimit TrapColorScaling Enabled ImageInternalTrapping syn keyword postscrConstant contained ReusableStreamDecode CloseSource CloseTarget UnitSize LowBitFirst syn keyword postscrConstant contained FlateEncode FlateDecode DecodeParams Intent AsyncRead syn keyword postscrConstant contained Height2 Width2 syn keyword postscrConstant contained FunctionType Domain Range Order BitsPerSample Encode Size C0 C1 N syn keyword postscrConstant contained Functions Bounds syn keyword postscrConstant contained InterleaveType MaskDict DataDict MaskColor syn keyword postscrConstant contained Shading ShadingType Background ColorSpace Coords Extend Function syn keyword postscrConstant contained VerticesPerRow BitsPerCoordinate BitsPerFlag syn keyword postscrConstant contained XOrigin YOrigin UnpaintedPath PixelCopy syn keyword postscrProcedure GetHalftoneName GetPageDeviceName GetSubstituteCRD syn keyword postscrProcedure beginbfchar beginbfrange begincidchar begincidrange begincmap begincodespacerange syn keyword postscrProcedure beginnotdefchar beginnotdefrange beginrearrangedfont beginusematrix syn keyword postscrProcedure endbfchar endbfrange endcidchar endcidrange endcmap endcodespacerange syn keyword postscrProcedure endnotdefchar endnotdefrange endrearrangedfont endusematrix syn keyword postscrProcedure StartData usefont usecmp syn keyword postscrProcedure settrapparams currenttrapparams settrapzone syn keyword postscrProcedure removeall removeglyphs if exists("postscr_fonts") syn keyword postscrConstant contained AlbertusMT AlbertusMT-Italic AlbertusMT-Light Apple-Chancery Apple-ChanceryCE syn keyword postscrConstant contained AntiqueOlive-Roman AntiqueOlive-Italic AntiqueOlive-Bold AntiqueOlive-Compact syn keyword postscrConstant contained AntiqueOliveCE-Roman AntiqueOliveCE-Italic AntiqueOliveCE-Bold AntiqueOliveCE-Compact syn keyword postscrConstant contained ArialMT Arial-ItalicMT Arial-LightMT Arial-BoldMT Arial-BoldItalicMT syn keyword postscrConstant contained ArialCE ArialCE-Italic ArialCE-Light ArialCE-Bold ArialCE-BoldItalic syn keyword postscrConstant contained AvantGarde-Book AvantGarde-BookOblique AvantGarde-Demi AvantGarde-DemiOblique syn keyword postscrConstant contained AvantGardeCE-Book AvantGardeCE-BookOblique AvantGardeCE-Demi AvantGardeCE-DemiOblique syn keyword postscrConstant contained Bodoni Bodoni-Italic Bodoni-Bold Bodoni-BoldItalic Bodoni-Poster Bodoni-PosterCompressed syn keyword postscrConstant contained BodoniCE BodoniCE-Italic BodoniCE-Bold BodoniCE-BoldItalic BodoniCE-Poster BodoniCE-PosterCompressed syn keyword postscrConstant contained Bookman-Light Bookman-LightItalic Bookman-Demi Bookman-DemiItalic syn keyword postscrConstant contained BookmanCE-Light BookmanCE-LightItalic BookmanCE-Demi BookmanCE-DemiItalic syn keyword postscrConstant contained Carta Chicago ChicagoCE Clarendon Clarendon-Light Clarendon-Bold syn keyword postscrConstant contained ClarendonCE ClarendonCE-Light ClarendonCE-Bold CooperBlack CooperBlack-Italic syn keyword postscrConstant contained Copperplate-ThirtyTwoBC CopperPlate-ThirtyThreeBC Coronet-Regular CoronetCE-Regular syn keyword postscrConstant contained CourierCE CourierCE-Oblique CourierCE-Bold CourierCE-BoldOblique syn keyword postscrConstant contained Eurostile Eurostile-Bold Eurostile-ExtendedTwo Eurostile-BoldExtendedTwo syn keyword postscrConstant contained Eurostile EurostileCE-Bold EurostileCE-ExtendedTwo EurostileCE-BoldExtendedTwo syn keyword postscrConstant contained Geneva GenevaCE GillSans GillSans-Italic GillSans-Bold GillSans-BoldItalic GillSans-BoldCondensed syn keyword postscrConstant contained GillSans-Light GillSans-LightItalic GillSans-ExtraBold syn keyword postscrConstant contained GillSansCE-Roman GillSansCE-Italic GillSansCE-Bold GillSansCE-BoldItalic GillSansCE-BoldCondensed syn keyword postscrConstant contained GillSansCE-Light GillSansCE-LightItalic GillSansCE-ExtraBold syn keyword postscrConstant contained Goudy Goudy-Italic Goudy-Bold Goudy-BoldItalic Goudy-ExtraBould syn keyword postscrConstant contained HelveticaCE HelveticaCE-Oblique HelveticaCE-Bold HelveticaCE-BoldOblique syn keyword postscrConstant contained Helvetica-Condensed Helvetica-Condensed-Oblique Helvetica-Condensed-Bold Helvetica-Condensed-BoldObl syn keyword postscrConstant contained HelveticaCE-Condensed HelveticaCE-Condensed-Oblique HelveticaCE-Condensed-Bold syn keyword postscrConstant contained HelveticaCE-Condensed-BoldObl Helvetica-Narrow Helvetica-Narrow-Oblique Helvetica-Narrow-Bold syn keyword postscrConstant contained Helvetica-Narrow-BoldOblique HelveticaCE-Narrow HelveticaCE-Narrow-Oblique HelveticaCE-Narrow-Bold syn keyword postscrConstant contained HelveticaCE-Narrow-BoldOblique HoeflerText-Regular HoeflerText-Italic HoeflerText-Black syn keyword postscrConstant contained HoeflerText-BlackItalic HoeflerText-Ornaments HoeflerTextCE-Regular HoeflerTextCE-Italic syn keyword postscrConstant contained HoeflerTextCE-Black HoeflerTextCE-BlackItalic syn keyword postscrConstant contained JoannaMT JoannaMT-Italic JoannaMT-Bold JoannaMT-BoldItalic syn keyword postscrConstant contained JoannaMTCE JoannaMTCE-Italic JoannaMTCE-Bold JoannaMTCE-BoldItalic syn keyword postscrConstant contained LetterGothic LetterGothic-Slanted LetterGothic-Bold LetterGothic-BoldSlanted syn keyword postscrConstant contained LetterGothicCE LetterGothicCE-Slanted LetterGothicCE-Bold LetterGothicCE-BoldSlanted syn keyword postscrConstant contained LubalinGraph-Book LubalinGraph-BookOblique LubalinGraph-Demi LubalinGraph-DemiOblique syn keyword postscrConstant contained LubalinGraphCE-Book LubalinGraphCE-BookOblique LubalinGraphCE-Demi LubalinGraphCE-DemiOblique syn keyword postscrConstant contained Marigold Monaco MonacoCE MonaLisa-Recut Oxford Symbol Tekton syn keyword postscrConstant contained NewCennturySchlbk-Roman NewCenturySchlbk-Italic NewCenturySchlbk-Bold NewCenturySchlbk-BoldItalic syn keyword postscrConstant contained NewCenturySchlbkCE-Roman NewCenturySchlbkCE-Italic NewCenturySchlbkCE-Bold syn keyword postscrConstant contained NewCenturySchlbkCE-BoldItalic NewYork NewYorkCE syn keyword postscrConstant contained Optima Optima-Italic Optima-Bold Optima-BoldItalic syn keyword postscrConstant contained OptimaCE OptimaCE-Italic OptimaCE-Bold OptimaCE-BoldItalic syn keyword postscrConstant contained Palatino-Roman Palatino-Italic Palatino-Bold Palatino-BoldItalic syn keyword postscrConstant contained PalatinoCE-Roman PalatinoCE-Italic PalatinoCE-Bold PalatinoCE-BoldItalic syn keyword postscrConstant contained StempelGaramond-Roman StempelGaramond-Italic StempelGaramond-Bold StempelGaramond-BoldItalic syn keyword postscrConstant contained StempelGaramondCE-Roman StempelGaramondCE-Italic StempelGaramondCE-Bold StempelGaramondCE-BoldItalic syn keyword postscrConstant contained TimesCE-Roman TimesCE-Italic TimesCE-Bold TimesCE-BoldItalic syn keyword postscrConstant contained TimesNewRomanPSMT TimesNewRomanPS-ItalicMT TimesNewRomanPS-BoldMT TimesNewRomanPS-BoldItalicMT syn keyword postscrConstant contained TimesNewRomanCE TimesNewRomanCE-Italic TimesNewRomanCE-Bold TimesNewRomanCE-BoldItalic syn keyword postscrConstant contained Univers Univers-Oblique Univers-Bold Univers-BoldOblique syn keyword postscrConstant contained UniversCE-Medium UniversCE-Oblique UniversCE-Bold UniversCE-BoldOblique syn keyword postscrConstant contained Univers-Light Univers-LightOblique UniversCE-Light UniversCE-LightOblique syn keyword postscrConstant contained Univers-Condensed Univers-CondensedOblique Univers-CondensedBold Univers-CondensedBoldOblique syn keyword postscrConstant contained UniversCE-Condensed UniversCE-CondensedOblique UniversCE-CondensedBold UniversCE-CondensedBoldOblique syn keyword postscrConstant contained Univers-Extended Univers-ExtendedObl Univers-BoldExt Univers-BoldExtObl syn keyword postscrConstant contained UniversCE-Extended UniversCE-ExtendedObl UniversCE-BoldExt UniversCE-BoldExtObl syn keyword postscrConstant contained Wingdings-Regular ZapfChancery-MediumItalic ZapfChanceryCE-MediumItalic ZapfDingBats endif " Font names endif " PS LL3 highlighting if exists("postscr_ghostscript") syn keyword postscrGSOperator .setaccuratecurves .currentaccuratecurves .setclipoutside syn keyword postscrGSOperator .setdashadapt .currentdashadapt .setdefaultmatrix .setdotlength syn keyword postscrGSOperator .currentdotlength .setfilladjust2 .currentfilladjust2 syn keyword postscrGSOperator .currentclipoutside .setcurvejoin .currentcurvejoin syn keyword postscrGSOperator .setblendmode .currentblendmode .setopacityalpha .currentopacityalpha .setshapealpha .currentshapealpha syn keyword postscrGSOperator .setlimitclamp .currentlimitclamp .setoverprintmode .currentoverprintmode syn keyword postscrGSOperator .dashpath .rectappend syn keyword postscrGSOperator .setrasterop .currentrasterop .setsourcetransparent syn keyword postscrGSOperator .settexturetransparent .currenttexturetransparent syn keyword postscrGSOperator .currentsourcetransparent syn keyword postscrGSOperator .charboxpath .type1execchar %Type1BuildChar %Type1BuildGlyph syn keyword postscrGSMathOperator arccos arcsin syn keyword postscrGSOperator .dicttomark .forceput .forceundef .knownget .setmaxlength syn keyword postscrGSOperator .type1encrypt .type1decrypt syn keyword postscrGSOperator .bytestring .namestring .stringmatch syn keyword postscrGSMathOperator max min syn keyword postscrGSOperator findlibfile unread writeppmfile syn keyword postscrGSOperator .filename .fileposition .peekstring .unread syn keyword postscrGSOperator .forgetsave syn keyword postscrGSOperator copydevice .getdevice makeimagedevice makewordimagedevice copyscanlines syn keyword postscrGSOperator setdevice currentdevice getdeviceprops putdeviceprops flushpage syn keyword postscrGSOperator finddevice findprotodevice .getbitsrect syn keyword postscrGSOperator getenv .makeoperator .setdebug .oserrno .oserror .execn syn keyword postscrGSOperator .begintransparencygroup .discardtransparencygroup .endtransparencygroup syn keyword postscrGSOperator .begintransparencymask .discardtransparencymask .endtransparencymask .inittransparencymask syn keyword postscrGSOperator .settextknockout .currenttextknockout syn keyword postscrConstant contained BCPEncode BCPDecode eexecEncode eexecDecode PCXDecode syn keyword postscrConstant contained PixelDifferenceEncode PixelDifferenceDecode syn keyword postscrConstant contained PNGPredictorDecode TBCPEncode TBCPDecode zlibEncode syn keyword postscrConstant contained zlibDecode PNGPredictorEncode PFBDecode syn keyword postscrConstant contained MD5Encode syn keyword postscrConstant contained InitialCodeLength FirstBitLowOrder BlockData DecodedByteAlign syn keyword postscrConstant contained BitsPerPixel .HWMargins HWSize Name GrayValues syn keyword postscrConstant contained ColorValues TextAlphaBits GraphicsAlphaBits BufferSpace syn keyword postscrConstant contained OpenOutputFile PageCount BandHeight BandWidth BandBufferSpace syn keyword postscrConstant contained ViewerPreProcess GreenValues BlueValues OutputFile syn keyword postscrConstant contained MaxBitmap RedValues endif " GhostScript highlighting hi def link postscrComment Comment hi def link postscrConstant Constant hi def link postscrString String hi def link postscrASCIIString postscrString hi def link postscrHexString postscrString hi def link postscrASCII85String postscrString hi def link postscrNumber Number hi def link postscrInteger postscrNumber hi def link postscrHex postscrNumber hi def link postscrRadix postscrNumber hi def link postscrFloat Float hi def link postscrBoolean Boolean hi def link postscrIdentifier Identifier hi def link postscrProcedure Function hi def link postscrName Statement hi def link postscrConditional Conditional hi def link postscrRepeat Repeat hi def link postscrL2Repeat postscrRepeat hi def link postscrOperator Operator hi def link postscrL1Operator postscrOperator hi def link postscrL2Operator postscrOperator hi def link postscrL3Operator postscrOperator hi def link postscrMathOperator postscrOperator hi def link postscrLogicalOperator postscrOperator hi def link postscrBinaryOperator postscrOperator hi def link postscrDSCComment SpecialComment hi def link postscrSpecialChar SpecialChar hi def link postscrTodo Todo hi def link postscrError Error hi def link postscrSpecialCharError postscrError hi def link postscrASCII85CharError postscrError hi def link postscrHexCharError postscrError hi def link postscrASCIIStringError postscrError hi def link postscrIdentifierError postscrError if exists("postscr_ghostscript") hi def link postscrGSOperator postscrOperator hi def link postscrGSMathOperator postscrMathOperator else hi def link postscrGSOperator postscrError hi def link postscrGSMathOperator postscrError endif let b:current_syntax = "postscr" if exists("b:current_syntax") finish endif syn case match syn keyword povCommands global_settings syn keyword povObjects array atmosphere background bicubic_patch blob box camera component cone cubic cylinder disc fog height_field isosurface julia_fractal lathe light_group light_source mesh mesh2 object ovus parametric pattern photons plane poly polygon polynomial prism quadric quartic rainbow sky_sphere smooth_triangle sor sphere sphere_sweep spline superellipsoid text torus triangle syn keyword povCSG clipped_by composite contained_by difference intersection merge union syn keyword povAppearance interior material media texture interior_texture texture_list syn keyword povGlobalSettings ambient_light assumed_gamma charset hf_gray_16 irid_wavelength max_intersections max_trace_level number_of_waves radiosity noise_generator syn keyword povTransform inverse matrix rotate scale translate transform syn keyword povDescriptors finish inside_vector normal pigment uv_mapping uv_vectors vertex_vectors syn keyword povDescriptors adc_bailout always_sample brightness count error_bound distance_maximum gray_threshold load_file low_error_factor maximum_reuse max_sample media minimum_reuse mm_per_unit nearest_count normal pretrace_end pretrace_start recursion_limit save_file syn keyword povDescriptors color colour rgb rgbt rgbf rgbft srgb srgbf srgbt srgbft syn match povDescriptors "\<\(red\|green\|blue\|gray\)\>" syn keyword povDescriptors bump_map color_map colour_map image_map material_map pigment_map quick_color quick_colour normal_map texture_map image_pattern pigment_pattern syn keyword povDescriptors ambient brilliance conserve_energy crand diffuse fresnel irid metallic phong phong_size refraction reflection reflection_exponent roughness specular subsurface syn keyword povDescriptors cylinder fisheye mesh_camera omnimax orthographic panoramic perspective spherical ultra_wide_angle syn keyword povDescriptors agate aoi average brick boxed bozo bumps cells checker crackle cylindrical dents facets function gradient granite hexagon julia leopard magnet mandel marble onion pavement planar quilted radial ripples slope spherical spiral1 spiral2 spotted square tiles tile2 tiling toroidal triangular waves wood wrinkles syn keyword povDescriptors density_file syn keyword povDescriptors area_light shadowless spotlight parallel syn keyword povDescriptors absorption confidence density emission intervals ratio samples scattering variance syn keyword povDescriptors distance fog_alt fog_offset fog_type turb_depth syn keyword povDescriptors b_spline bezier_spline cubic_spline evaluate face_indices form linear_spline max_gradient natural_spline normal_indices normal_vectors quadratic_spline uv_indices syn keyword povDescriptors target syn keyword povModifiers caustics dispersion dispersion_samples fade_color fade_colour fade_distance fade_power ior syn keyword povModifiers bounded_by double_illuminate hierarchy hollow no_shadow open smooth sturm threshold water_level syn keyword povModifiers importance no_radiosity syn keyword povModifiers hypercomplex max_iteration precision quaternion slice syn keyword povModifiers conic_sweep linear_sweep syn keyword povModifiers flatness type u_steps v_steps syn keyword povModifiers aa_level aa_threshold adaptive area_illumination falloff jitter looks_like media_attenuation media_interaction method point_at radius tightness syn keyword povModifiers angle aperture bokeh blur_samples confidence direction focal_point h_angle location look_at right sky up v_angle variance syn keyword povModifiers all bump_size gamma interpolate map_type once premultiplied slope_map use_alpha use_color use_colour use_index syn match povModifiers "\<\(filter\|transmit\)\>" syn keyword povModifiers black_hole agate_turb brick_size control0 control1 cubic_wave density_map flip frequency interpolate inverse lambda metric mortar octaves offset omega phase poly_wave ramp_wave repeat scallop_wave sine_wave size strength triangle_wave thickness turbulence turb_depth type warp syn keyword povModifiers eccentricity extinction syn keyword povModifiers arc_angle falloff_angle width syn keyword povModifiers accuracy all_intersections altitude autostop circular collect coords cutaway_textures dist_exp expand_thresholds exponent exterior gather global_lights major_radius max_trace no_bump_scale no_image no_reflection orient orientation pass_through precompute projected_through range_divider solid spacing split_union tolerance syn keyword povBMPType alpha exr gif hdr iff jpeg pgm png pot ppm sys tga tiff syn keyword povFontType ttf contained syn keyword povDensityType df3 contained syn keyword povCharset ascii utf8 contained syn keyword povFunctions abs acos acosh asc asin asinh atan atan2 atanh bitwise_and bitwise_or bitwise_xor ceil cos cosh defined degrees dimensions dimension_size div exp file_exists floor inside int internal ln log max min mod pow prod radians rand seed select sin sinh sqrt strcmp strlen sum tan tanh val vdot vlength vstr vturbulence syn keyword povFunctions min_extent max_extent trace vcross vrotate vaxis_rotate vnormalize vturbulence syn keyword povFunctions chr concat datetime now substr str strupr strlwr syn keyword povJuliaFunctions acosh asinh atan cosh cube pwr reciprocal sinh sqr tanh syn keyword povConsts clock clock_delta clock_on final_clock final_frame frame_number initial_clock initial_frame input_file_name image_width image_height false no off on pi true version yes syn match povConsts "\<[tuvxyz]\>" syn match povDotItem "\.\@<=\(blue\|green\|gray\|filter\|red\|transmit\|hf\|t\|u\|v\|x\|y\|z\)\>" display syn region povComment start="/\*" end="\*/" contains=povTodo,povComment syn match povComment "//.*" contains=povTodo syn match povCommentError "\*/" syn sync ccomment povComment syn sync minlines=50 syn keyword povTodo TODO FIXME XXX NOT contained syn cluster povPRIVATE add=povTodo syn match povConditionalDir "#\s*\(else\|end\|for\|if\|ifdef\|ifndef\|switch\|while\)\>" syn match povLabelDir "#\s*\(break\|case\|default\|range\)\>" syn match povDeclareDir "#\s*\(declare\|default\|local\|macro\|undef\|version\)\>" nextgroup=povDeclareOption skipwhite syn keyword povDeclareOption deprecated once contained nextgroup=povDeclareOption skipwhite syn match povIncludeDir "#\s*include\>" syn match povFileDir "#\s*\(fclose\|fopen\|read\|write\)\>" syn keyword povFileDataType uint8 sint8 unit16be uint16le sint16be sint16le sint32le sint32be syn match povMessageDir "#\s*\(debug\|error\|render\|statistics\|warning\)\>" syn region povFileOpen start="#\s*fopen\>" skip=+"[^"]*"+ matchgroup=povOpenType end="\<\(read\|write\|append\)\>" contains=ALLBUT,PovParenError,PovBraceError,@PovPRIVATE transparent keepend syn match povSpecialChar "\\u\x\{4}\|\\\d\d\d\|\\." contained syn region povString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=povSpecialChar oneline syn cluster povPRIVATE add=povSpecialChar syn region povParen start='(' end=')' contains=ALLBUT,povParenError,@povPRIVATE transparent syn match povParenError ")" syn region povBrace start='{' end='}' contains=ALLBUT,povBraceError,@povPRIVATE transparent syn match povBraceError "}" syn match povNumber "\(^\|\W\)\@<=[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\=" hi def link povComment Comment hi def link povTodo Todo hi def link povNumber Number hi def link povString String hi def link povFileOpen Constant hi def link povConsts Constant hi def link povDotItem povSpecial hi def link povBMPType povSpecial hi def link povCharset povSpecial hi def link povDensityType povSpecial hi def link povFontType povSpecial hi def link povOpenType povSpecial hi def link povSpecialChar povSpecial hi def link povSpecial Special hi def link povConditionalDir PreProc hi def link povLabelDir PreProc hi def link povDeclareDir Define hi def link povDeclareOption Define hi def link povIncludeDir Include hi def link povFileDir PreProc hi def link povFileDataType Special hi def link povMessageDir Debug hi def link povAppearance povDescriptors hi def link povObjects povDescriptors hi def link povGlobalSettings povDescriptors hi def link povDescriptors Type hi def link povJuliaFunctions PovFunctions hi def link povModifiers povFunctions hi def link povFunctions Function hi def link povCommands Operator hi def link povTransform Operator hi def link povCSG Operator hi def link povParenError povError hi def link povBraceError povError hi def link povCommentError povError hi def link povError Error let b:current_syntax = "pov" if exists("b:current_syntax") finish endif syn case ignore syn match poviniInclude "^\s*[^[+-;]\S*\s*$" contains=poviniSection syn match poviniLabel "^.\{-1,}\ze=" transparent contains=poviniKeyword nextgroup=poviniBool,poviniNumber syn keyword poviniBool On Off True False Yes No syn match poviniNumber "\<\d*\.\=\d\+\>" syn keyword poviniKeyword Clock Initial_Frame Final_Frame Frame_Final Frame_Step Initial_Clock Final_Clock Subset_Start_Frame Subset_End_Frame Cyclic_Animation Clockless_Animation Real_Time_Raytracing Field_Render Odd_Field Work_Threads syn keyword poviniKeyword Width Height Start_Column Start_Row End_Column End_Row Test_Abort Test_Abort_Count Continue_Trace Create_Ini syn keyword poviniKeyword Display Video_Mode Palette Display_Gamma Pause_When_Done Verbose Draw_Vistas Preview_Start_Size Preview_End_Size Render_Block_Size Render_Block_Step Render_Pattern Max_Image_Buffer_Memory syn keyword poviniKeyword Output_to_File Output_File_Type Output_Alpha Bits_Per_Color Output_File_Name Buffer_Output Buffer_Size Dither Dither_Method File_Gamma syn keyword poviniKeyword BSP_Base BSP_Child BSP_Isect BSP_Max BSP_Miss syn keyword poviniKeyword Histogram_Type Histogram_Grid_Size Histogram_Name syn keyword poviniKeyword Input_File_Name Include_Header Library_Path Version syn keyword poviniKeyword Debug_Console Fatal_Console Render_Console Statistic_Console Warning_Console All_Console Debug_File Fatal_File Render_File Statistic_File Warning_File All_File Warning_Level syn keyword poviniKeyword Quality Bounding Bounding_Method Bounding_Threshold Light_Buffer Vista_Buffer Remove_Bounds Split_Unions Antialias Sampling_Method Antialias_Threshold Jitter Jitter_Amount Antialias_Depth Antialias_Gamma syn keyword poviniKeyword Pre_Scene_Return Pre_Frame_Return Post_Scene_Return Post_Frame_Return User_Abort_Return Fatal_Error_Return syn keyword poviniKeyword Radiosity Radiosity_File_Name Radiosity_From_File Radiosity_To_File Radiosity_Vain_Pretrace High_Reproducibility syn match poviniShellOut "^\s*\(Pre_Scene_Command\|Pre_Frame_Command\|Post_Scene_Command\|Post_Frame_Command\|User_Abort_Command\|Fatal_Error_Command\)\>" nextgroup=poviniShellOutEq skipwhite syn match poviniShellOutEq "=" nextgroup=poviniShellOutRHS skipwhite contained syn match poviniShellOutRHS "[^;]\+" skipwhite contained contains=poviniShellOutSpecial syn match poviniShellOutSpecial "%[osnkhw%]" contained syn keyword poviniDeclare Declare syn match poviniComment ";.*$" syn match poviniOption "^\s*[+-]\S*" syn match poviniIncludeLabel "^\s*Include_INI\s*=" nextgroup=poviniIncludedFile skipwhite syn match poviniIncludedFile "[^;]\+" contains=poviniSection contained syn region poviniSection start="\[" end="\]" hi def link poviniSection Special hi def link poviniComment Comment hi def link poviniDeclare poviniKeyword hi def link poviniShellOut poviniKeyword hi def link poviniIncludeLabel poviniKeyword hi def link poviniKeyword Type hi def link poviniShellOutSpecial Special hi def link poviniIncludedFile poviniInclude hi def link poviniInclude Include hi def link poviniOption Keyword hi def link poviniBool Constant hi def link poviniNumber Number let b:current_syntax = "povini" if exists("b:current_syntax") finish endif syn match ppdComment "^\*%.*" syn match ppdDef "\*[a-zA-Z0-9]\+" syn match ppdDefine "\*[a-zA-Z0-9\-_]\+:" syn match ppdUI "\*[a-zA-Z]*\(Open\|Close\)UI" syn match ppdUIGroup "\*[a-zA-Z]*\(Open\|Close\)Group" syn match ppdGUIText "/.*:" syn match ppdContraints "^*UIConstraints:" hi def link ppdComment Comment hi def link ppdDefine Statement hi def link ppdUI Function hi def link ppdUIGroup Function hi def link ppdDef String hi def link ppdGUIText Type hi def link ppdContraints Special let b:current_syntax = "ppd" if exists("b:current_syntax") finish endif syn case ignore if !exists("ppwiz_highlight_defs") let ppwiz_highlight_defs = 1 endif if !exists("ppwiz_with_html") let ppwiz_with_html = 1 endif syn match ppwizComment "^;.*$" syn match ppwizComment ";;.*$" if ppwiz_with_html > 0 syn region ppwizHTML start="<" end=">" contains=ppwizArg,ppwizMacro syn match ppwizHTML "\&\w\+;" endif if ppwiz_highlight_defs == 1 syn match ppwizDef "^\s*\#\S\+\s\+\S\+" contains=ALL syn match ppwizDef "^\s*\#\(if\|else\|endif\)" contains=ALL syn match ppwizDef "^\s*\#\({\|break\|continue\|}\)" contains=ALL else syn region ppwizDef start="^\s*\#" end="[^\\]$" end="^$" keepend contains=ppwizCont endif syn match ppwizError "\s.\\$" syn match ppwizCont "\s\([+\-%]\|\)\\$" syn region ppwizMacro start="<\$" end=">" contains=@ppwizArgVal,ppwizCont syn region ppwizArg start="{" end="}" contains=ppwizEqual,ppwizString syn match ppwizEqual "=" contained syn match ppwizOperator "<>\|=\|<\|>" contained syn region ppwizStdVar start="" contains=@ppwizArgVal syn region ppwizRexxVar start="" contains=@ppwizArgVal syn region ppwizString start=+"+ end=+"+ contained contains=ppwizMacro,ppwizArg,ppwizHTML,ppwizCont,ppwizStdVar,ppwizRexxVar syn region ppwizString start=+'+ end=+'+ contained contains=ppwizMacro,ppwizArg,ppwizHTML,ppwizCont,ppwizStdVar,ppwizRexxVar syn match ppwizInteger "\d\+" contained syn cluster ppwizArgVal add=ppwizString,ppwizInteger hi def link ppwizSpecial Special hi def link ppwizEqual ppwizSpecial hi def link ppwizOperator ppwizSpecial hi def link ppwizComment Comment hi def link ppwizDef PreProc hi def link ppwizMacro Statement hi def link ppwizArg Identifier hi def link ppwizStdVar Identifier hi def link ppwizRexxVar Identifier hi def link ppwizString Constant hi def link ppwizInteger Constant hi def link ppwizCont ppwizSpecial hi def link ppwizError Error hi def link ppwizHTML Type let b:current_syntax = "ppwiz" if exists("b:current_syntax") finish endif syn match prescribeSpecial "!R!" syn keyword prescribeStatement ALTF AMCR ARC ASFN ASTK BARC BLK BOX CALL syn keyword prescribeStatement CASS CIR CLIP CLPR CLSP COPY CPTH CSET CSTK syn keyword prescribeStatement CTXT DAF DAM DAP DELF DELM DPAT DRP DRPA DUPX syn keyword prescribeStatement DXPG DXSD DZP ENDD ENDM ENDR EPL EPRM EXIT syn keyword prescribeStatement FDIR FILL FLAT FLST FONT FPAT FRPO FSET FTMD syn keyword prescribeStatement GPAT ICCD INTL JOG LDFC MAP MCRO MDAT MID syn keyword prescribeStatement MLST MRP MRPA MSTK MTYP MZP NEWP PAGE PARC PAT syn keyword prescribeStatement PCRP PCZP PDIR RDRP PDZP PELP PIE PMRA PMRP PMZP syn keyword prescribeStatement PRBX PRRC PSRC PXPL RDMP RES RSL RGST RPCS RPF syn keyword prescribeStatement RPG RPP RPU RTTX RTXT RVCD RVRD SBM SCAP SCCS syn keyword prescribeStatement SCF SCG SCP SCPI SCRC SCS SCU SDP SEM SETF SFA syn keyword prescribeStatement SFNT SIMG SIR SLJN SLM SLPI SLPP SLS SMLT SPD syn keyword prescribeStatement SPL SPLT SPO SPSZ SPW SRM SRO SROP SSTK STAT STRK syn keyword prescribeStatement SULP SVCP TATR TEXT TPRS UNIT UOM WIDE WRED XPAT syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeStatement "\" syn match prescribeCSETArg "[0-9]\{1,3}[A-Z]" syn match prescribeFRPOArg "[A-Z][0-9]\{1,2}" syn match prescribeNumber "[0-9]\+" syn region prescribeString start=+'+ end=+'+ skip=+\\'+ syn region prescribeComment start=+CMNT+ end=+;+ hi def link prescribeSpecial PreProc hi def link prescribeStatement Statement hi def link prescribeNumber Number hi def link prescribeCSETArg String hi def link prescribeFRPOArg String hi def link prescribeComment Comment let b:current_syntax = "prescribe" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=@,48-57,_,- syn keyword privoxyTodo contained TODO FIXME XXX NOTE syn match privoxyComment "#.*" contains=privoxyTodo,@Spell syn region privoxyActionLine matchgroup=privoxyActionLineDelimiter start="^\s*\zs{" end="}\ze\s*$" \ contains=privoxyEnabledPrefix,privoxyDisabledPrefix syn match privoxyEnabledPrefix "\%(^\|\s\|{\)\@<=+\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained syn match privoxyDisabledPrefix "\%(^\|\s\|{\)\@<=-\l\@=" nextgroup=privoxyAction,privoxyFilterAction contained syn match privoxyAction "\%(add-header\|block\|content-type-overwrite\|crunch-client-header\|crunch-if-none-match\)\>" contained syn match privoxyAction "\%(crunch-incoming-cookies\|crunch-outgoing-cookies\|crunch-server-header\|deanimate-gifs\)\>" contained syn match privoxyAction "\%(downgrade-http-version\|fast-redirects\|filter-client-headers\|filter-server-headers\)\>" contained syn match privoxyAction "\%(filter\|force-text-mode\|handle-as-empty-document\|handle-as-image\)\>" contained syn match privoxyAction "\%(hide-accept-language\|hide-content-disposition\|hide-forwarded-for-headers\)\>" contained syn match privoxyAction "\%(hide-from-header\|hide-if-modified-since\|hide-referrer\|hide-user-agent\|inspect-jpegs\)\>" contained syn match privoxyAction "\%(kill-popups\|limit-connect\|overwrite-last-modified\|prevent-compression\|redirect\)\>" contained syn match privoxyAction "\%(send-vanilla-wafer\|send-wafer\|session-cookies-only\|set-image-blocker\)\>" contained syn match privoxyAction "\%(treat-forbidden-connects-like-blocks\)\>" syn match privoxyFilterAction "filter{[^}]*}" contained contains=privoxyFilterArg,privoxyActionBraces syn match privoxyActionBraces "[{}]" contained syn keyword privoxyFilterArg js-annoyances js-events html-annoyances content-cookies refresh-tags unsolicited-popups all-popups \ img-reorder banners-by-size banners-by-link webbugs tiny-textforms jumping-windows frameset-borders demoronizer \ shockwave-flash quicktime-kioskmode fun crude-parental ie-exploits site-specifics no-ping google yahoo msn blogspot \ x-httpd-php-to-html html-to-xml xml-to-html hide-tor-exit-notation contained syn match privoxyAction "\%(kill-popup\|hide-referer\|prevent-keeping-cookies\)\>" contained syn match privoxyAction "\%(no-cookie-read\|no-cookie-set\|prevent-reading-cookies\|prevent-setting-cookies\)\>" contained syn match privoxyAction "\%(downgrade\|hide-forwarded\|hide-from\|image\|image-blocker\|no-compression\)\>" contained syn match privoxyAction "\%(no-cookies-keep\|no-cookies-read\|no-cookies-set\|no-popups\|vanilla-wafer\|wafer\)\>" contained syn match privoxySetting "\" syn match privoxyHeader "^\s*\zs{{\%(alias\|settings\)}}\ze\s*$" hi def link privoxyAction Identifier hi def link privoxyFilterAction Identifier hi def link privoxyActionLineDelimiter Delimiter hi def link privoxyDisabledPrefix SpecialChar hi def link privoxyEnabledPrefix SpecialChar hi def link privoxyHeader PreProc hi def link privoxySetting Identifier hi def link privoxyFilterArg Constant hi def link privoxyComment Comment hi def link privoxyTodo Todo let b:current_syntax = "privoxy" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match procmailComment "#.*$" contains=procmailTodo syn keyword procmailTodo contained Todo TBD syn region procmailString start=+"+ skip=+\\"+ end=+"+ syn region procmailString start=+'+ skip=+\\'+ end=+'+ syn region procmailVarDeclRegion start="^\s*[a-zA-Z0-9_]\+\s*="hs=e-1 skip=+\\$+ end=+$+ contains=procmailVar,procmailVarDecl,procmailString syn match procmailVarDecl contained "^\s*[a-zA-Z0-9_]\+" syn match procmailVar "$[a-zA-Z0-9_]\+" syn match procmailCondition contained "^\s*\*.*" syn match procmailActionFolder contained "^\s*[-_a-zA-Z0-9/]\+" syn match procmailActionVariable contained "^\s*$[a-zA-Z_]\+" syn region procmailActionForward start=+^\s*!+ skip=+\\$+ end=+$+ syn region procmailActionPipe start=+^\s*|+ skip=+\\$+ end=+$+ syn region procmailActionNested start=+^\s*{+ end=+^\s*}+ contains=procmailRecipe,procmailComment,procmailVarDeclRegion syn region procmailRecipe start=+^\s*:.*$+ end=+^\s*\($\|}\)+me=e-1 contains=procmailComment,procmailCondition,procmailActionFolder,procmailActionVariable,procmailActionForward,procmailActionPipe,procmailActionNested,procmailVarDeclRegion hi def link procmailComment Comment hi def link procmailTodo Todo hi def link procmailRecipe Statement hi def link procmailActionFolder procmailAction hi def link procmailActionVariable procmailAction hi def link procmailActionForward procmailAction hi def link procmailActionPipe procmailAction hi def link procmailAction Function hi def link procmailVar Identifier hi def link procmailVarDecl Identifier hi def link procmailString String let b:current_syntax = "procmail" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword=@,48-57,_,-,!,#,$,% set expandtab syn case ignore syn match ProgressEndError "\" syn region ProgressDoBlock transparent matchgroup=ProgressDo start="\" matchgroup=ProgressDo end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressForBlock transparent matchgroup=ProgressFor start="\" matchgroup=ProgressFor end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressRepeatBlock transparent matchgroup=ProgressRepeat start="\" matchgroup=ProgressRepeat end="\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn region ProgressCaseBlock transparent matchgroup=ProgressCase start="\" matchgroup=ProgressCase end="\\|\" contains=ALLBUT,ProgressProcedure,ProgressFunction syn keyword ProgressConditional if else then when otherwise syn keyword ProgressFor each where syn keyword ProgressTodo contained TODO BUG FIX syn keyword ProgressDebug contained DEBUG syn keyword ProgressDebug debugger syn match ProgressProcedure "^\s*procedure.*" syn match ProgressProcedure "^\s*end\s\s*procedure.*" syn match ProgressFunction "^\s*function.*" syn match ProgressFunction "^\s*end\s\s*function.*" syn keyword ProgressReserved accum[ulate] active-form active-window add alias all alter ambig[uous] analyz[e] and any apply as asc[ending] syn keyword ProgressReserved assign asynchronous at attr[-space] audit-control audit-policy authorization auto-ret[urn] avail[able] back[ground] syn keyword ProgressReserved before-h[ide] begins bell between big-endian blank break buffer-comp[are] buffer-copy by by-pointer by-variant-point[er] call syn keyword ProgressReserved can-do can-find case case-sen[sitive] cast center[ed] check chr clear clipboard codebase-locator colon color column-lab[el] syn keyword ProgressReserved col[umns] com-self compiler connected control copy-lob count-of cpstream create current current-changed current-lang[uage] syn keyword ProgressReserved current-window current_date curs[or] database dataservers dataset dataset-handle db-remote-host dbcodepage dbcollation dbname syn keyword ProgressReserved dbparam dbrest[rictions] dbtaskid dbtype dbvers[ion] dde deblank debug-list debugger decimals declare default syn keyword ProgressReserved default-noxl[ate] default-window def[ine] delete delimiter desc[ending] dict[ionary] disable discon[nect] disp[lay] distinct do dos syn keyword ProgressReserved down drop dynamic-cast dynamic-func[tion] dynamic-new each editing else enable encode end entry error-stat[us] escape syn keyword ProgressReserved etime event-procedure except exclusive[-lock] exclusive-web[-user] exists export false fetch field[s] file-info[rmation] syn keyword ProgressReserved fill find find-case-sensitive find-global find-next-occurrence find-prev-occurrence find-select find-wrap-around first syn keyword ProgressReserved first-of focus font for form[at] fram[e] frame-col frame-db frame-down frame-field frame-file frame-inde[x] frame-line syn keyword ProgressReserved frame-name frame-row frame-val[ue] from from-c[hars] from-p[ixels] function-call-type gateway[s] get-attr-call-type get-byte syn keyword ProgressReserved get-codepage[s] get-coll[ations] get-column get-error-column get-error-row get-file-name get-file-offse[t] get-key-val[ue] syn keyword ProgressReserved get-message-type get-row getbyte global go-on go-pend[ing] grant graphic-e[dge] group having header help hide host-byte-order if syn keyword ProgressReserved import in index indicator input input-o[utput] insert into is is-attr[-space] join kblabel key-code key-func[tion] key-label syn keyword ProgressReserved keycode keyfunc[tion] keylabel keys keyword label last last-even[t] last-key last-of lastkey ldbname leave library like syn keyword ProgressReserved like-sequential line-count[er] listi[ng] little-endian locked log-manager lookup machine-class map member message message-lines mouse syn keyword ProgressReserved mpe new next next-prompt no no-attr[-space] no-error no-f[ill] no-help no-hide no-label[s] no-lobs no-lock no-map syn keyword ProgressReserved no-mes[sage] no-pause no-prefe[tch] no-return-val[ue] no-undo no-val[idate] no-wait not now null num-ali[ases] num-dbs num-entries syn keyword ProgressReserved of off old on open opsys option or os-append os-command os-copy os-create-dir os-delete os-dir os-drive[s] os-error syn keyword ProgressReserved os-rename otherwise output overlay page page-bot[tom] page-num[ber] page-top param[eter] password-field pause pdbname syn keyword ProgressReserved persist[ent] pixels preproc[ess] privileges proc-ha[ndle] proc-st[atus] procedure-call-type process profiler program-name progress syn keyword ProgressReserved prompt[-for] promsgs propath provers[ion] publish put put-byte put-key-val[ue] putbyte query query-tuning quit r-index syn keyword ProgressReserved rcode-info[rmation] read-available read-exact-num readkey recid record-len[gth] rect[angle] release repeat reposition retain retry return syn keyword ProgressReserved return-val[ue] revert revoke row-created row-deleted row-modified row-unmodified run save sax-comple[te] sax-parser-error syn keyword ProgressReserved sax-running sax-uninitialized sax-write-begin sax-write-complete sax-write-content sax-write-element sax-write-error syn keyword ProgressReserved sax-write-idle sax-write-tag schema screen screen-io screen-lines scroll sdbname search search-self search-target security-policy syn keyword ProgressReserved seek select self session set set-attr-call-type setuser[id] share[-lock] shared show-stat[s] skip some source-procedure syn keyword ProgressReserved space status stream stream-handle stream-io string-xref subscribe super system-dialog table table-handle target-procedure syn keyword ProgressReserved term[inal] text text-cursor text-seg[-grow] then this-object this-procedure time title to today top-only trans[action] trigger syn keyword ProgressReserved triggers trim true underl[ine] undo unform[atted] union unique unix unless-hidden unsubscribe up update use-index use-revvideo syn keyword ProgressReserved use-underline user[id] using value values view view-as wait-for web-con[text] when where while window window-delayed-min[imize] syn keyword ProgressReserved window-maxim[ized] window-minim[ized] window-normal with work-tab[le] workfile write xcode xcode-session-key xref xref-xml yes syn region ProgressString matchgroup=ProgressQuote start=+"+ end=+"+ skip=+\~'\|\~\~\|\~"+ contains=@Spell syn region ProgressString matchgroup=ProgressQuote start=+'+ end=+'+ skip=+\~'\|\~\~\|\~"+ contains=@Spell syn match ProgressIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>()" syn match ProgressMatrixDelimiter "[][]" syn match ProgressNumber "\<\-\=\d\+\(u\=l\=\|lu\|f\)\>" syn match ProgressByte "\$[0-9a-fA-F]\+" syn match ProgressNumber "?" syn keyword ProgressNumber true false yes no syn match ProgressShowTab "\t" syn region ProgressComment start="/\*" end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell syn region ProgressInclude start="^[ ]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment syn region ProgressPreProc start="&" end="\>" contained syn match ProgressOperator "[!;|)(:.><+*=]\|\s-\s\|^-\s\|\s-$" syn keyword ProgressOperator <= <> >= syn keyword ProgressOperator abs[olute] accelerator accept-changes accept-row-changes across active actor add-buffer add-calc-col[umn] syn keyword ProgressOperator add-columns-from add-events-proc[edure] add-fields-from add-first add-header-entry add-index-field add-interval add-last syn keyword ProgressOperator add-like-col[umn] add-like-field add-like-index add-new-field add-new-index add-rel[ation] add-schema-location add-source-buffer syn keyword ProgressOperator add-super-proc[edure] adm-data advise after-buffer after-rowid after-table alert-box allow-column-searching allow-replication alternate-key syn keyword ProgressOperator always-on-top ansi-only anywhere append append-child appl-alert[-boxes] appl-context-id application apply-callback appserver-info syn keyword ProgressOperator appserver-password appserver-userid array-m[essage] ask-overwrite assembly async-request-count async-request-handle attach-data-source syn keyword ProgressOperator attached-pairlist attach attribute-names audit-enabled audit-event-context authentication-failed auto-comp[letion] auto-delete syn keyword ProgressOperator auto-delete-xml auto-end-key auto-endkey auto-go auto-ind[ent] auto-resize auto-synchronize auto-val[idate] auto-z[ap] automatic syn keyword ProgressOperator available-formats ave[rage] avg backward[s] base-ade base-key basic-logging batch[-mode] batch-size before-buffer before-rowid syn keyword ProgressOperator before-table begin-event-group bgc[olor] binary bind bind-where blob block-iteration-display border-b[ottom-chars] syn keyword ProgressOperator border-bottom-p[ixels] border-l[eft-chars] border-left-p[ixels] border-r[ight-chars] border-right-p[ixels] border-t[op-chars] syn keyword ProgressOperator border-top-p[ixels] both bottom box box-select[able] browse buffer buffer-chars buffer-create buffer-delete buffer-field buffer-handle syn keyword ProgressOperator buffer-lines buffer-n[ame] buffer-releas[e] buffer-validate buffer-value button[s] by-reference by-value byte bytes-read syn keyword ProgressOperator bytes-written cache cache-size call-name call-type can-crea[te] can-dele[te] can-query can-read can-set can-writ[e] cancel-break syn keyword ProgressOperator cancel-button cancel-requests cancelled caps careful-paint catch cdecl chained char[acter] character_length charset checked syn keyword ProgressOperator child-buffer child-num choose class class-type clear-appl-context clear-log clear-select[ion] clear-sort-arrow[s] syn keyword ProgressOperator client-connection-id client-principal client-tty client-type client-workstation clob clone-node close close-log code codepage syn keyword ProgressOperator codepage-convert col-of collate colon-align[ed] color-table column-bgc[olor] column-codepage column-dcolor column-fgc[olor] syn keyword ProgressOperator column-font column-movable column-of column-pfc[olor] column-read-only column-resizable column-sc[rolling] com-handle combo-box syn keyword ProgressOperator command compare[s] compile complete config-name connect constructor contents context context-help context-help-file syn keyword ProgressOperator context-help-id context-pop[up] control-box control-fram[e] convert convert-to-offs[et] copy-dataset copy-sax-attributes syn keyword ProgressOperator copy-temp-table count cpcase cpcoll cpint[ernal] cplog cpprint cprcodein cprcodeout cpterm crc-val[ue] create-like syn keyword ProgressOperator create-like-sequential create-node create-node-namespace create-result-list-entry create-test-file current-column current-env[ironment] syn keyword ProgressOperator current-iteration current-query current-result-row current-row-modified current-value cursor-char cursor-line cursor-offset data-b[ind] syn keyword ProgressOperator data-entry-ret[urn] data-rel[ation] data-source data-source-complete-map data-source-modified data-source-rowid data-t[ype] date syn keyword ProgressOperator date-f[ormat] day db-references dcolor dde-error dde-i[d] dde-item dde-name dde-topic debu[g] debug-alert syn keyword ProgressOperator declare-namespace decrypt default-buffer-handle default-but[ton] default-commit default-ex[tension] default-string syn keyword ProgressOperator default-value define-user-event-manager defined delete-char delete-current-row delete-header-entry delete-line delete-node syn keyword ProgressOperator delete-result-list-entry delete-selected-row delete-selected-rows descript[ion] deselect-focused-row deselect-rows deselect-selected-row syn keyword ProgressOperator destructor detach-data-source dialog-box dir directory disable-auto-zap disable-connections disable-dump-triggers syn keyword ProgressOperator disable-load-triggers disabled display-message display-timezone display-t[ype] domain-description domain-name domain-type double syn keyword ProgressOperator drag-enabled drop-down drop-down-list drop-target dump dump-logging-now dynamic dynamic-current-value dynamic-next-value echo syn keyword ProgressOperator edge[-chars] edge-p[ixels] edit-can-paste edit-can-undo edit-clear edit-copy edit-cut edit-paste edit-undo editor empty syn keyword ProgressOperator empty-dataset empty-temp-table enable-connections enabled encoding encrypt encrypt-audit-mac-key encryption-salt end-document syn keyword ProgressOperator end-element end-event-group end-file-drop end-key end-user-prompt endkey entered entry-types-list eq error error-col[umn] syn keyword ProgressOperator error-object-detail error-row error-stack-trace error-string event-group-id event-procedure-context event-t[ype] events exclusive-id syn keyword ProgressOperator execute execution-log exp expand expandable expire explicit export-principal extended extent external extract syn keyword ProgressOperator fetch-selected-row fgc[olor] file file-create-d[ate] file-create-t[ime] file-mod-d[ate] file-mod-t[ime] file-name file-off[set] syn keyword ProgressOperator file-size file-type filename fill-in fill-mode fill-where-string filled filters final finally find-by-rowid find-current syn keyword ProgressOperator find-first find-last find-unique finder first-async[-request] first-buffer first-child first-column first-data-source syn keyword ProgressOperator first-dataset first-form first-object first-proc[edure] first-query first-serv[er] first-server-socket first-socket syn keyword ProgressOperator first-tab-i[tem] fit-last-column fix-codepage fixed-only flat-button float focused-row focused-row-selected font-table force-file syn keyword ProgressOperator fore[ground] foreign-key-hidden form-input form-long-input formatte[d] forward-only forward[s] fragmen[t] frame-spa[cing] frame-x syn keyword ProgressOperator frame-y frequency from-cur[rent] full-height[-chars] full-height-p[ixels] full-pathn[ame] full-width[-chars] syn keyword ProgressOperator full-width-p[ixels] function ge generate-pbe-key generate-pbe-salt generate-random-key generate-uuid get get-attribute get-attribute-node syn keyword ProgressOperator get-binary-data get-bits get-blue[-value] get-browse-col[umn] get-buffer-handle get-byte-order get-bytes get-bytes-available syn keyword ProgressOperator get-callback-proc-context get-callback-proc-name get-cgi-list get-cgi-long-value get-cgi-value get-changes get-child get-child-rel[ation] syn keyword ProgressOperator get-config-value get-curr[ent] get-dataset-buffer get-dir get-document-element get-double get-dropped-file get-dynamic get-file syn keyword ProgressOperator get-firs[t] get-float get-green[-value] get-header-entr[y] get-index-by-namespace-name get-index-by-qname get-iteration get-last syn keyword ProgressOperator get-localname-by-index get-long get-message get-next get-node get-number get-parent get-pointer-value get-prev get-printers get-property syn keyword ProgressOperator get-qname-by-index get-red[-value] get-rel[ation] get-repositioned-row get-rgb[-value] get-selected[-widget] get-serialized get-short syn keyword ProgressOperator get-signature get-size get-socket-option get-source-buffer get-string get-tab-item get-text-height[-chars] get-text-height-p[ixels] syn keyword ProgressOperator get-text-width[-chars] get-text-width-p[ixels] get-top-buffer get-type-by-index get-type-by-namespace-name get-type-by-qname syn keyword ProgressOperator get-unsigned-long get-unsigned-short get-uri-by-index get-value-by-index get-value-by-namespace-name get-value-by-qname syn keyword ProgressOperator get-wait[-state] grayed grid-factor-h[orizontal] grid-factor-v[ertical] grid-snap grid-unit-height[-chars] grid-unit-height-p[ixels] syn keyword ProgressOperator grid-unit-width[-chars] grid-unit-width-p[ixels] grid-visible group-box gt guid handle handler has-lobs has-records height[-chars] syn keyword ProgressOperator height-p[ixels] help-topic hex-decode hex-encode hidden hint hori[zontal] html-charset html-end-of-line html-end-of-page syn keyword ProgressOperator html-frame-begin html-frame-end html-header-begin html-header-end html-title-begin html-title-end hwnd icfparam[eter] icon syn keyword ProgressOperator ignore-current-mod[ified] image image-down image-insensitive image-size image-size-c[hars] image-size-p[ixels] image-up immediate-display syn keyword ProgressOperator implements import-node import-principal in-handle increment-exclusive-id index-hint index-info[rmation] indexed-reposition syn keyword ProgressOperator info[rmation] inherit-bgc[olor] inherit-fgc[olor] inherits init[ial] initial-dir initial-filter initialize-document-type initiate syn keyword ProgressOperator inner inner-chars inner-lines input-value insert-attribute insert-b[acktab] insert-before insert-file insert-row syn keyword ProgressOperator insert-string insert-t[ab] instantiating-procedure int[eger] interface internal-entries interval invoke is-clas[s] syn keyword ProgressOperator is-codepage-fixed is-column-codepage is-lead-byte is-open is-parameter-set is-row-selected is-selected is-xml iso-date item syn keyword ProgressOperator items-per-row join-by-sqldb keep-connection-open keep-frame-z[-order] keep-messages keep-security-cache keep-tab-order key syn keyword ProgressOperator keyword-all label-bgc[olor] label-dc[olor] label-fgc[olor] label-font label-pfc[olor] labels landscape language[s] large syn keyword ProgressOperator large-to-small last-async[-request] last-batch last-child last-form last-object last-proce[dure] last-serv[er] last-server-socket syn keyword ProgressOperator last-socket last-tab-i[tem] lc le leading left left-align[ed] left-trim length line list-events list-item-pairs list-items syn keyword ProgressOperator list-property-names list-query-attrs list-set-attrs list-widgets literal-question load load-domains load-icon load-image load-image-down syn keyword ProgressOperator load-image-insensitive load-image-up load-mouse-p[ointer] load-picture load-small-icon lob-dir local-host local-name local-port syn keyword ProgressOperator locator-column-number locator-line-number locator-public-id locator-system-id locator-type lock-registration log log-audit-event syn keyword ProgressOperator log-entry-types log-threshold logfile-name logging-level logical login-expiration-timestamp login-host login-state logout long[char] syn keyword ProgressOperator longchar-to-node-value lookahead lower lt mandatory manual-highlight margin-extra margin-height[-chars] margin-height-p[ixels] syn keyword ProgressOperator margin-width[-chars] margin-width-p[ixels] mark-new mark-row-state matches max-button max-chars max-data-guess max-height[-chars] syn keyword ProgressOperator max-height-p[ixels] max-rows max-size max-val[ue] max-width[-chars] max-width-p[ixels] maximize max[imum] maximum-level memory memptr syn keyword ProgressOperator memptr-to-node-value menu menu-bar menu-item menu-k[ey] menu-m[ouse] menubar merge-by-field merge-changes merge-row-changes message-area syn keyword ProgressOperator message-area-font method min-button min-column-width-c[hars] min-column-width-p[ixels] min-height[-chars] min-height-p[ixels] syn keyword ProgressOperator min-schema-marshal min-size min-val[ue] min-width[-chars] min-width-p[ixels] min[imum] modified mod[ulo] month mouse-p[ointer] movable syn keyword ProgressOperator move-after[-tab-item] move-befor[e-tab-item] move-col[umn] move-to-b[ottom] move-to-eof move-to-t[op] mtime multi-compile multiple syn keyword ProgressOperator multiple-key multitasking-interval must-exist must-understand name namespace-prefix namespace-uri native ne needs-appserver-prompt syn keyword ProgressOperator needs-prompt nested new-instance new-row next-col[umn] next-rowid next-sibling next-tab-ite[m] next-value no-apply syn keyword ProgressOperator no-array-m[essage] no-assign no-attr-l[ist] no-auto-validate no-bind-where no-box no-console no-convert no-current-value no-debug syn keyword ProgressOperator no-drag no-echo no-empty-space no-focus no-index-hint no-inherit-bgc[olor] no-inherit-fgc[olor] no-join-by-sqldb no-lookahead syn keyword ProgressOperator no-row-markers no-schema-marshal no-scrollbar-v[ertical] no-separate-connection no-separators no-tab[-stop] no-und[erline] syn keyword ProgressOperator no-word-wrap node-value node-value-to-longchar node-value-to-memptr nonamespace-schema-location none normalize not-active syn keyword ProgressOperator num-buffers num-but[tons] num-child-relations num-children num-col[umns] num-copies num-dropped-files num-fields num-formats syn keyword ProgressOperator num-header-entries num-items num-iterations num-lines num-locked-col[umns] num-log-files num-messages num-parameters num-references syn keyword ProgressOperator num-relations num-repl[aced] num-results num-selected-rows num-selected[-widgets] num-source-buffers num-tabs num-to-retain syn keyword ProgressOperator num-top-buffers num-visible-col[umns] numeric numeric-dec[imal-point] numeric-f[ormat] numeric-sep[arator] object ok ok-cancel syn keyword ProgressOperator on-frame[-border] ordered-join ordinal orientation origin-handle origin-rowid os-getenv outer outer-join override owner owner-document syn keyword ProgressOperator page-size page-wid[th] paged parent parent-buffer parent-rel[ation] parse-status partial-key pascal pathname syn keyword ProgressOperator pbe-hash-alg[orithm] pbe-key-rounds perf[ormance] persistent-cache-disabled persistent-procedure pfc[olor] pixels-per-col[umn] syn keyword ProgressOperator pixels-per-row popup-m[enu] popup-o[nly] portrait position precision prefer-dataset prepare-string prepared presel[ect] prev syn keyword ProgressOperator prev-col[umn] prev-sibling prev-tab-i[tem] primary printer printer-control-handle printer-hdc printer-name printer-port syn keyword ProgressOperator printer-setup private private-d[ata] proce[dure] procedure-name progress-s[ource] property protected proxy proxy-password syn keyword ProgressOperator proxy-userid public public-id published-events put-bits put-bytes put-double put-float put-long put-short put-string syn keyword ProgressOperator put-unsigned-long put-unsigned-short query-close query-off-end query-open query-prepare question quoter radio-buttons radio-set random syn keyword ProgressOperator raw raw-transfer read read-file read-only read-xml read-xmlschema real recursive reference-only refresh syn keyword ProgressOperator refresh-audit-policy refreshable register-domain reject-changes reject-row-changes rejected relation-fi[elds] relations-active remote syn keyword ProgressOperator remote-host remote-port remove-attribute remove-child remove-events-proc[edure] remove-super-proc[edure] replace replace-child syn keyword ProgressOperator replace-selection-text replication-create replication-delete replication-write reposition-back[ward] reposition-forw[ard] reposition-to-row syn keyword ProgressOperator reposition-to-rowid request reset resiza[ble] resize restart-row restart-rowid result retain-s[hape] retry-cancel return-ins[erted] syn keyword ProgressOperator return-to-start-di[r] return-value-data-type returns reverse-from rgb-v[alue] right right-align[ed] right-trim roles round rounded syn keyword ProgressOperator routine-level row row-height[-chars] row-height-p[ixels] row-ma[rkers] row-of row-resizable row-state rowid rule run-proc[edure] syn keyword ProgressOperator save-as save-file save-row-changes save-where-string sax-attributes sax-parse sax-parse-first sax-parse-next sax-reader syn keyword ProgressOperator sax-writer schema-change schema-location schema-marshal schema-path screen-val[ue] scroll-bars scroll-delta scroll-offset syn keyword ProgressOperator scroll-to-current-row scroll-to-i[tem] scroll-to-selected-row scrollable scrollbar-h[orizontal] scrollbar-v[ertical] syn keyword ProgressOperator scrolled-row-pos[ition] scrolling seal seal-timestamp section select-all select-focused-row select-next-row select-prev-row select-row syn keyword ProgressOperator selectable selected selection-end selection-list selection-start selection-text send sensitive separate-connection syn keyword ProgressOperator separator-fgc[olor] separators server server-connection-bo[und] server-connection-bound-re[quest] server-connection-co[ntext] syn keyword ProgressOperator server-connection-id server-operating-mode server-socket session-end session-id set-actor set-appl-context set-attribute syn keyword ProgressOperator set-attribute-node set-blue[-value] set-break set-buffers set-byte-order set-callback set-callback-procedure set-client set-commit syn keyword ProgressOperator set-connect-procedure set-contents set-db-client set-dynamic set-green[-value] set-input-source set-must-understand set-node syn keyword ProgressOperator set-numeric-form[at] set-option set-output-destination set-parameter set-pointer-val[ue] set-property set-read-response-procedure syn keyword ProgressOperator set-red[-value] set-repositioned-row set-rgb[-value] set-rollback set-selection set-serialized set-size set-socket-option syn keyword ProgressOperator set-sort-arrow set-wait[-state] short show-in-task[bar] side-label-h[andle] side-lab[els] silent simple single single-character size syn keyword ProgressOperator size-c[hars] size-p[ixels] skip-deleted-rec[ord] slider small-icon small-title smallint soap-fault soap-fault-actor syn keyword ProgressOperator soap-fault-code soap-fault-detail soap-fault-string soap-header soap-header-entryref socket sort sort-ascending sort-number source syn keyword ProgressOperator sql sqrt ssl-server-name standalone start-document start-element start[ing] startup-parameters state-detail static syn keyword ProgressOperator status-area status-area-font stdcall stop stop-parsing stoppe[d] stored-proc[edure] stretch-to-fit strict string string-value syn keyword ProgressOperator sub-ave[rage] sub-count sub-max[imum] sub-menu sub-menu-help sub-min[imum] sub-total subst[itute] substr[ing] subtype sum syn keyword ProgressOperator super-proc[edures] suppress-namespace-processing suppress-w[arnings] suspend symmetric-encryption-algorithm symmetric-encryption-iv syn keyword ProgressOperator symmetric-encryption-key symmetric-support synchronize system-alert[-boxes] system-help system-id tab-position tab-stop table-crc-list syn keyword ProgressOperator table-list table-num[ber] target temp-dir[ectory] temp-table temp-table-prepar[e] terminate text-selected three-d through throw syn keyword ProgressOperator thru tic-marks time-source timezone title-bgc[olor] title-dc[olor] title-fgc[olor] title-fo[nt] to-rowid toggle-box syn keyword ProgressOperator tooltip tooltips top top-nav-query topic total tracking-changes trailing trans-init-proc[edure] transaction-mode syn keyword ProgressOperator transpar[ent] trunc[ate] ttcodepage type type-of unbox unbuff[ered] unique-id unique-match unload unsigned-byte unsigned-integer syn keyword ProgressOperator unsigned-long unsigned-short update-attribute upper url url-decode url-encode url-password url-userid use use-dic[t-exps] syn keyword ProgressOperator use-filename use-text use-widget-pool user-id valid-event valid-handle valid-object validate validate-expressio[n] syn keyword ProgressOperator validate-message validate-seal validate-xml validation-enabled var[iable] verb[ose] version vert[ical] view-first-column-on-reopen syn keyword ProgressOperator virtual-height[-chars] virtual-height-p[ixels] virtual-width[-chars] virtual-width-p[ixels] visible void wait warning weekday where-string syn keyword ProgressOperator widget widget-e[nter] widget-h[andle] widget-id widget-l[eave] widget-pool width[-chars] width-p[ixels] window-name syn keyword ProgressOperator window-sta[te] window-sys[tem] word-index word-wrap work-area-height-p[ixels] work-area-width-p[ixels] work-area-x work-area-y syn keyword ProgressOperator write-cdata write-characters write-comment write-data-element write-empty-element write-entity-ref write-external-dtd syn keyword ProgressOperator write-fragment write-message write-processing-instruction write-status write-xml write-xmlschema x x-document x-noderef x-of syn keyword ProgressOperator xml-data-type xml-node-name xml-node-type xml-schema-pat[h] xml-suppress-namespace-processing y y-of year year-offset yes-no syn keyword ProgressOperator yes-no-cancel syn keyword ProgressType char[acter] int[eger] int64 dec[imal] log[ical] da[te] datetime datetime-tz syn sync lines=800 hi def link ProgressByte Number hi def link ProgressCase Repeat hi def link ProgressComment Comment hi def link ProgressConditional Conditional hi def link ProgressDebug Debug hi def link ProgressDo Repeat hi def link ProgressEndError Error hi def link ProgressFor Repeat hi def link ProgressFunction Procedure hi def link ProgressIdentifier Identifier hi def link ProgressInclude Include hi def link ProgressMatrixDelimiter Identifier hi def link ProgressNumber Number hi def link ProgressOperator Operator hi def link ProgressPreProc PreProc hi def link ProgressProcedure Procedure hi def link ProgressQuote Delimiter hi def link ProgressRepeat Repeat hi def link ProgressReserved Statement hi def link ProgressSpaceError Error hi def link ProgressString String hi def link ProgressTodo Todo hi def link ProgressType Statement hi def link ProgressShowTab Error let b:current_syntax = "progress" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match syn region prologCComment start=+/\*+ end=+\*/+ syn match prologComment +%.*+ syn keyword prologKeyword module meta_predicate multifile dynamic syn match prologCharCode +0'\\\=.+ syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause if !exists("prolog_highlighting_clean") syn keyword prologKeyword abolish current_output peek_code syn keyword prologKeyword append current_predicate put_byte syn keyword prologKeyword arg current_prolog_flag put_char syn keyword prologKeyword asserta fail put_code syn keyword prologKeyword assertz findall read syn keyword prologKeyword at_end_of_stream float read_term syn keyword prologKeyword atom flush_output repeat syn keyword prologKeyword atom_chars functor retract syn keyword prologKeyword atom_codes get_byte set_input syn keyword prologKeyword atom_concat get_char set_output syn keyword prologKeyword atom_length get_code set_prolog_flag syn keyword prologKeyword atomic halt set_stream_position syn keyword prologKeyword bagof integer setof syn keyword prologKeyword call is stream_property syn keyword prologKeyword catch nl sub_atom syn keyword prologKeyword char_code nonvar throw syn keyword prologKeyword char_conversion number true syn keyword prologKeyword clause number_chars unify_with_occurs_check syn keyword prologKeyword close number_codes var syn keyword prologKeyword compound once write syn keyword prologKeyword copy_term op write_canonical syn keyword prologKeyword current_char_conversion open write_term syn keyword prologKeyword current_input peek_byte writeq syn keyword prologKeyword current_op peek_char syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|=" syn match prologAsIs "===\|\\===\|<=\|=>" syn match prologNumber "\<[0123456789]*\>'\@!" syn match prologCommentError "\*/" syn match prologSpecialCharacter ";" syn match prologSpecialCharacter "!" syn match prologSpecialCharacter ":-" syn match prologSpecialCharacter "-->" syn match prologQuestion "?-.*\." contains=prologNumber endif syn sync maxlines=50 hi def link prologComment Comment hi def link prologCComment Comment hi def link prologCharCode Special if exists ("prolog_highlighting_clean") hi def link prologKeyword Statement hi def link prologClauseHead Statement hi def link prologClause Normal else hi def link prologKeyword Keyword hi def link prologClauseHead Constant hi def link prologClause Normal hi def link prologQuestion PreProc hi def link prologSpecialCharacter Special hi def link prologNumber Number hi def link prologAsIs Normal hi def link prologCommentError Error hi def link prologAtom String hi def link prologString String hi def link prologOperator Operator endif let b:current_syntax = "prolog" if exists("b:current_syntax") finish endif syn keyword promelaStatement proctype if else while chan do od fi break goto unless syn keyword promelaStatement active assert label atomic syn keyword promelaFunctions skip timeout run syn keyword promelaTodo contained TODO syn keyword promelaType bit bool byte short int syn match promelaOperator "!" syn match promelaOperator "?" syn match promelaOperator "->" syn match promelaOperator "=" syn match promelaOperator "+" syn match promelaOperator "*" syn match promelaOperator "/" syn match promelaOperator "-" syn match promelaOperator "<" syn match promelaOperator ">" syn match promelaOperator "<=" syn match promelaOperator ">=" syn match promelaSpecial "\[" syn match promelaSpecial "\]" syn match promelaSpecial ";" syn match promelaSpecial "::" syn region promelaComment start="/\*" end="\*/" contains=promelaTodo,@Spell syn match promelaComment "//.*" contains=promelaTodo,@Spell hi def link promelaStatement Statement hi def link promelaType Type hi def link promelaComment Comment hi def link promelaOperator Type hi def link promelaSpecial Special hi def link promelaFunctions Special hi def link promelaString String hi def link promelaTodo Todo let b:current_syntax = "promela" if exists("b:current_syntax") finish endif syn case match syn keyword protoTodo contained TODO FIXME XXX syn cluster protoCommentGrp contains=protoTodo syn keyword protoSyntax syntax import option syn keyword protoStructure package message group syn keyword protoRepeat optional required repeated syn keyword protoDefault default syn keyword protoExtend extend extensions to max syn keyword protoRPC service rpc returns syn keyword protoType int32 int64 uint32 uint64 sint32 sint64 syn keyword protoType fixed32 fixed64 sfixed32 sfixed64 syn keyword protoType float double bool string bytes syn keyword protoTypedef enum syn keyword protoBool true false syn match protoInt /-\?\<\d\+\>/ syn match protoInt /\<0[xX]\x+\>/ syn match protoFloat /\<-\?\d*\(\.\d*\)\?/ syn region protoComment start="\/\*" end="\*\/" contains=@protoCommentGrp syn region protoComment start="//" skip="\\$" end="$" keepend contains=@protoCommentGrp syn region protoString start=/"/ skip=/\\./ end=/"/ syn region protoString start=/'/ skip=/\\./ end=/'/ hi def link protoTodo Todo hi def link protoSyntax Include hi def link protoStructure Structure hi def link protoRepeat Repeat hi def link protoDefault Keyword hi def link protoExtend Keyword hi def link protoRPC Keyword hi def link protoType Type hi def link protoTypedef Typedef hi def link protoBool Boolean hi def link protoInt Number hi def link protoFloat Float hi def link protoComment Comment hi def link protoString String let b:current_syntax = "proto" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match protocolsBegin display '^' \ nextgroup=protocolsName,protocolsComment syn match protocolsName contained display '[[:graph:]]\+' \ nextgroup=protocolsPort skipwhite syn match protocolsPort contained display '\d\+' \ nextgroup=protocolsAliases,protocolsComment \ skipwhite syn match protocolsAliases contained display '\S\+' \ nextgroup=protocolsAliases,protocolsComment \ skipwhite syn keyword protocolsTodo contained TODO FIXME XXX NOTE syn region protocolsComment display oneline start='#' end='$' \ contains=protocolsTodo,@Spell hi def link protocolsTodo Todo hi def link protocolsComment Comment hi def link protocolsName Identifier hi def link protocolsPort Number hi def link protocolsPPDiv Delimiter hi def link protocolsPPDivDepr Error hi def link protocolsProtocol Type hi def link protocolsAliases Macro let b:current_syntax = "protocols" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match syn keyword psfObject bundle category control_file depot distribution syn keyword psfObject end file fileset host installed_software media syn keyword psfObject product root subproduct vendor syn match psfUnquotString +[^"# ][^#]*+ contained syn region psfQuotString start=+"+ skip=+\\"+ end=+"+ contained syn match psfObjTag "\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*" contained syn match psfAttAbbrev ",\<\(fa\|fr\|[aclqrv]\)\(<\|>\|<=\|>=\|=\|==\)[^,]\+" contained syn match psfObjTags "\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*\(\s\+\<[-_+A-Z0-9a-z]\+\(\.[-_+A-Z0-9a-z]\+\)*\)*" contained syn match psfNumber "\<\d\+\>" contained syn match psfFloat "\<\d\+\>\(\.\<\d\+\>\)*" contained syn match psfLongDate "\<\d\d\d\d\d\d\d\d\d\d\d\d\.\d\d\>" contained syn keyword psfState available configured corrupt installed transient contained syn keyword psfPState applied committed superseded contained syn keyword psfBoolean false true contained syn region psfAttUnquotString matchgroup=psfAttrib start=~^\s*[^# ]\+\s\+[^#" ]~rs=e-1 contains=psfUnquotString,psfComment end=~$~ keepend oneline syn region psfAttQuotString matchgroup=psfAttrib start=~^\s*[^# ]\+\s\+"~rs=e-1 contains=psfQuotString,psfComment skip=~\\"~ matchgroup=psfQuotString end=~"~ keepend syn region psfAttTag matchgroup=psfAttrib start="^\s*tag\s\+" contains=psfObjTag,psfComment end="$" keepend oneline syn region psfAttSpec matchgroup=psfAttrib start="^\s*\(ancestor\|applied_patches\|applied_to\|contents\|corequisites\|exrequisites\|prerequisites\|software_spec\|supersedes\|superseded_by\)\s\+" contains=psfObjTag,psfAttAbbrev,psfComment end="$" keepend syn region psfAttTags matchgroup=psfAttrib start="^\s*all_filesets\s\+" contains=psfObjTags,psfComment end="$" keepend syn region psfAttNumber matchgroup=psfAttrib start="^\s*\(compressed_size\|instance_id\|media_sequence_number\|sequence_number\|size\)\s\+" contains=psfNumber,psfComment end="$" keepend oneline syn region psfAttTime matchgroup=psfAttrib start="^\s*\(create_time\|ctime\|mod_time\|mtime\|timestamp\)\s\+" contains=psfNumber,psfComment end="$" keepend oneline syn region psfAttFloat matchgroup=psfAttrib start="^\s*\(data_model_revision\|layout_version\)\s\+" contains=psfFloat,psfComment end="$" keepend oneline syn region psfAttLongDate matchgroup=psfAttrib start="^\s*install_date\s\+" contains=psfLongDate,psfComment end="$" keepend oneline syn region psfAttState matchgroup=psfAttrib start="^\s*\(state\)\s\+" contains=psfState,psfComment end="$" keepend oneline syn region psfAttPState matchgroup=psfAttrib start="^\s*\(patch_state\)\s\+" contains=psfPState,psfComment end="$" keepend oneline syn region psfAttBoolean matchgroup=psfAttrib start="^\s*\(is_kernel\|is_locatable\|is_patch\|is_protected\|is_reboot\|is_reference\|is_secure\|is_sparse\)\s\+" contains=psfBoolean,psfComment end="$" keepend oneline syn match psfComment "#.*$" hi def link psfObject Statement hi def link psfAttrib Type hi def link psfQuotString String hi def link psfObjTag Identifier hi def link psfAttAbbrev PreProc hi def link psfObjTags Identifier hi def link psfComment Comment syn sync lines=100 let b:current_syntax = "psf" if exists("b:current_syntax") finish endif syn case ignore if exists("ptcap_minlines") exe "syn sync lines=".ptcap_minlines else syn sync lines=20 endif syn match ptcapError "^.*\S.*$" syn match ptcapLeadBlank "^\s\+" contained syn match ptcapDelimiter "[:|]" contained syn match ptcapEscapedChar "\\." contained syn match ptcapEscapedChar "\^." contained syn match ptcapEscapedChar "\\\o\{3}" contained syn match ptcapLineCont "\\$" contained syn match ptcapNumber "#\(+\|-\)\=\d\+"lc=1 contained syn match ptcapNumberError "#\d*[^[:digit:]:\\]"lc=1 contained syn match ptcapNumber "#0x\x\{1,8}"lc=1 contained syn match ptcapNumberError "#0x\X"me=e-1,lc=1 contained syn match ptcapNumberError "#0x\x\{9}"lc=1 contained syn match ptcapNumberError "#0x\x*[^[:xdigit:]:\\]"lc=1 contained syn match ptcapOperator "[@#=]" contained syn match ptcapSpecialCap "\W[#@]\d" contains=ptcapDelimiter contained if exists("b:ptcap_type") && b:ptcap_type[0] == 't' syn region ptcapEntry start="^\s*[^[:space:]:]" end="[^\\]\(\\\\\)*$" end="^$" contains=ptcapNames,ptcapField,ptcapLeadBlank keepend else syn region ptcapEntry start="^\s*[^[:space:]:]"me=e-1 end="^\s*[^[:space:]:#]"me=e-1 contains=ptcapNames,ptcapField,ptcapLeadBlank,ptcapComment endif syn region ptcapNames start="^\s*[^[:space:]:]" skip="[^\\]\(\\\\\)*\\:" end=":"me=e-1 contains=ptcapDelimiter,ptcapEscapedChar,ptcapLineCont,ptcapLeadBlank,ptcapComment keepend contained syn region ptcapField start=":" skip="[^\\]\(\\\\\)*\\$" end="[^\\]\(\\\\\)*:"me=e-1 end="$" contains=ptcapDelimiter,ptcapString,ptcapNumber,ptcapNumberError,ptcapOperator,ptcapLineCont,ptcapSpecialCap,ptcapLeadBlank,ptcapComment keepend contained syn region ptcapString matchgroup=ptcapOperator start="=" skip="[^\\]\(\\\\\)*\\:" matchgroup=ptcapDelimiter end=":"me=e-1 matchgroup=NONE end="[^\\]\(\\\\\)*[^\\]$" end="^$" contains=ptcapEscapedChar,ptcapLineCont keepend contained syn region ptcapComment start="^\s*#" end="$" contains=ptcapLeadBlank hi def link ptcapComment Comment hi def link ptcapDelimiter Delimiter hi def link ptcapEntry Todo hi def link ptcapError Error hi def link ptcapEscapedChar SpecialChar hi def link ptcapField Type hi def link ptcapLeadBlank NONE hi def link ptcapLineCont Special hi def link ptcapNames Label hi def link ptcapNumber NONE hi def link ptcapNumberError Error hi def link ptcapOperator Operator hi def link ptcapSpecialCap Type hi def link ptcapString NONE let b:current_syntax = "ptcap" if exists("b:current_syntax") finish endif syn match purifyLogHeader "^\*\*\*\*.*$" syn match purifyLogFIU "^FIU:.*$" syn match purifyLogMAF "^MAF:.*$" syn match purifyLogMIU "^MIU:.*$" syn match purifyLogSIG "^SIG:.*$" syn match purifyLogWPF "^WPF:.*$" syn match purifyLogWPM "^WPM:.*$" syn match purifyLogWPN "^WPN:.*$" syn match purifyLogWPR "^WPR:.*$" syn match purifyLogWPW "^WPW:.*$" syn match purifyLogWPX "^WPX:.*$" syn match purifyLogABR "^ABR:.*$" syn match purifyLogBSR "^BSR:.*$" syn match purifyLogBSW "^BSW:.*$" syn match purifyLogFMR "^FMR:.*$" syn match purifyLogMLK "^MLK:.*$" syn match purifyLogMSE "^MSE:.*$" syn match purifyLogPAR "^PAR:.*$" syn match purifyLogPLK "^PLK:.*$" syn match purifyLogSBR "^SBR:.*$" syn match purifyLogSOF "^SOF:.*$" syn match purifyLogUMC "^UMC:.*$" syn match purifyLogUMR "^UMR:.*$" syn match purifyLogABW "^ABW:.*$" syn match purifyLogBRK "^BRK:.*$" syn match purifyLogFMW "^FMW:.*$" syn match purifyLogFNH "^FNH:.*$" syn match purifyLogFUM "^FUM:.*$" syn match purifyLogMRE "^MRE:.*$" syn match purifyLogSBW "^SBW:.*$" syn match purifyLogCOR "^COR:.*$" syn match purifyLogNPR "^NPR:.*$" syn match purifyLogNPW "^NPW:.*$" syn match purifyLogZPR "^ZPR:.*$" syn match purifyLogZPW "^ZPW:.*$" hi def link purifyLogFIU purifyLogInformational hi def link purifyLogMAF purifyLogInformational hi def link purifyLogMIU purifyLogInformational hi def link purifyLogSIG purifyLogInformational hi def link purifyLogWPF purifyLogInformational hi def link purifyLogWPM purifyLogInformational hi def link purifyLogWPN purifyLogInformational hi def link purifyLogWPR purifyLogInformational hi def link purifyLogWPW purifyLogInformational hi def link purifyLogWPX purifyLogInformational hi def link purifyLogABR purifyLogWarning hi def link purifyLogBSR purifyLogWarning hi def link purifyLogBSW purifyLogWarning hi def link purifyLogFMR purifyLogWarning hi def link purifyLogMLK purifyLogWarning hi def link purifyLogMSE purifyLogWarning hi def link purifyLogPAR purifyLogWarning hi def link purifyLogPLK purifyLogWarning hi def link purifyLogSBR purifyLogWarning hi def link purifyLogSOF purifyLogWarning hi def link purifyLogUMC purifyLogWarning hi def link purifyLogUMR purifyLogWarning hi def link purifyLogABW purifyLogCorrupting hi def link purifyLogBRK purifyLogCorrupting hi def link purifyLogFMW purifyLogCorrupting hi def link purifyLogFNH purifyLogCorrupting hi def link purifyLogFUM purifyLogCorrupting hi def link purifyLogMRE purifyLogCorrupting hi def link purifyLogSBW purifyLogCorrupting hi def link purifyLogCOR purifyLogFatal hi def link purifyLogNPR purifyLogFatal hi def link purifyLogNPW purifyLogFatal hi def link purifyLogZPR purifyLogFatal hi def link purifyLogZPW purifyLogFatal hi def link purifyLogHeader Comment hi def link purifyLogInformational PreProc hi def link purifyLogWarning Type hi def link purifyLogCorrupting Error hi def link purifyLogFatal Error let b:current_syntax = "purifylog" if exists("b:current_syntax") finish endif runtime! syntax/python.vim unlet b:current_syntax syn keyword pyrexStatement cdef typedef ctypedef sizeof syn keyword pyrexType int long short float double char object void syn keyword pyrexType signed unsigned syn keyword pyrexStructure struct union enum syn keyword pyrexInclude include cimport syn keyword pyrexAccess public private property readonly extern if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins") syn keyword pyrexBuiltin NULL endif syn clear pythonInclude syn keyword pythonInclude import syn match pythonInclude "from" syn match pyrexForFrom "\(for[^:]*\)\@<=from" hi def link pyrexStatement Statement hi def link pyrexType Type hi def link pyrexStructure Structure hi def link pyrexInclude PreCondit hi def link pyrexAccess pyrexStatement if exists("python_highlight_builtins") || exists("pyrex_highlight_builtins") hi def link pyrexBuiltin Function endif hi def link pyrexForFrom Statement let b:current_syntax = "pyrex" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if exists("python_no_doctest_highlight") let python_no_doctest_code_highlight = 1 endif if exists("python_highlight_all") if exists("python_no_builtin_highlight") unlet python_no_builtin_highlight endif if exists("python_no_doctest_code_highlight") unlet python_no_doctest_code_highlight endif if exists("python_no_doctest_highlight") unlet python_no_doctest_highlight endif if exists("python_no_exception_highlight") unlet python_no_exception_highlight endif if exists("python_no_number_highlight") unlet python_no_number_highlight endif let python_space_error_highlight = 1 endif syn keyword pythonStatement False None True syn keyword pythonStatement as assert break continue del exec global syn keyword pythonStatement lambda nonlocal pass print return with yield syn keyword pythonStatement class def nextgroup=pythonFunction skipwhite syn keyword pythonConditional elif else if syn keyword pythonRepeat for while syn keyword pythonOperator and in is not or syn keyword pythonException except finally raise try syn keyword pythonInclude from import syn keyword pythonAsync async await syn match pythonDecorator "@" display contained syn match pythonDecoratorName "@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator syn match pythonMatrixMultiply \ "\%(\w\|[])]\)\s*@" \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue \ transparent syn match pythonMatrixMultiply \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@" \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue \ transparent syn match pythonMatrixMultiply \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*" \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue \ transparent syn match pythonFunction "\h\w*" display contained syn match pythonComment "#.*$" contains=pythonTodo,@Spell syn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained syn region pythonString matchgroup=pythonQuotes \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" \ contains=pythonEscape,@Spell syn region pythonString matchgroup=pythonTripleQuotes \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell syn region pythonRawString matchgroup=pythonQuotes \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" \ contains=@Spell syn region pythonRawString matchgroup=pythonTripleQuotes \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend \ contains=pythonSpaceError,pythonDoctest,@Spell syn match pythonEscape +\\[abfnrtv'"\\]+ contained syn match pythonEscape "\\\o\{1,3}" contained syn match pythonEscape "\\x\x\{2}" contained syn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained syn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained syn match pythonEscape "\\$" if !exists("python_no_number_highlight") syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>" syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>" syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>" syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>" syn match pythonNumber "\<\d\+[jJ]\>" syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" syn match pythonNumber \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=" syn match pythonNumber \ "\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" endif if !exists("python_no_builtin_highlight") syn keyword pythonBuiltin False True None syn keyword pythonBuiltin NotImplemented Ellipsis __debug__ syn keyword pythonBuiltin abs all any bin bool bytearray callable chr syn keyword pythonBuiltin classmethod compile complex delattr dict dir syn keyword pythonBuiltin divmod enumerate eval filter float format syn keyword pythonBuiltin frozenset getattr globals hasattr hash syn keyword pythonBuiltin help hex id input int isinstance syn keyword pythonBuiltin issubclass iter len list locals map max syn keyword pythonBuiltin memoryview min next object oct open ord pow syn keyword pythonBuiltin print property range repr reversed round set syn keyword pythonBuiltin setattr slice sorted staticmethod str syn keyword pythonBuiltin sum super tuple type vars zip __import__ syn keyword pythonBuiltin basestring cmp execfile file syn keyword pythonBuiltin long raw_input reduce reload unichr syn keyword pythonBuiltin unicode xrange syn keyword pythonBuiltin ascii bytes exec syn keyword pythonBuiltin apply buffer coerce intern syn match pythonAttribute /\.\h\w*/hs=s+1 \ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync \ transparent endif if !exists("python_no_exception_highlight") syn keyword pythonExceptions BaseException Exception syn keyword pythonExceptions ArithmeticError BufferError syn keyword pythonExceptions LookupError syn keyword pythonExceptions EnvironmentError StandardError syn keyword pythonExceptions AssertionError AttributeError syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit syn keyword pythonExceptions ImportError IndentationError syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt syn keyword pythonExceptions MemoryError NameError NotImplementedError syn keyword pythonExceptions OSError OverflowError ReferenceError syn keyword pythonExceptions RuntimeError StopIteration SyntaxError syn keyword pythonExceptions SystemError SystemExit TabError TypeError syn keyword pythonExceptions UnboundLocalError UnicodeError syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError syn keyword pythonExceptions UnicodeTranslateError ValueError syn keyword pythonExceptions ZeroDivisionError syn keyword pythonExceptions BlockingIOError BrokenPipeError syn keyword pythonExceptions ChildProcessError ConnectionAbortedError syn keyword pythonExceptions ConnectionError ConnectionRefusedError syn keyword pythonExceptions ConnectionResetError FileExistsError syn keyword pythonExceptions FileNotFoundError InterruptedError syn keyword pythonExceptions IsADirectoryError NotADirectoryError syn keyword pythonExceptions PermissionError ProcessLookupError syn keyword pythonExceptions RecursionError StopAsyncIteration syn keyword pythonExceptions TimeoutError syn keyword pythonExceptions IOError VMSError WindowsError syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning syn keyword pythonExceptions ImportWarning PendingDeprecationWarning syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning syn keyword pythonExceptions UserWarning Warning syn keyword pythonExceptions ResourceWarning endif if exists("python_space_error_highlight") syn match pythonSpaceError display excludenl "\s\+$" syn match pythonSpaceError display " \+\t" syn match pythonSpaceError display "\t\+ " endif if !exists("python_no_doctest_highlight") if !exists("python_no_doctest_code_highlight") syn region pythonDoctest \ start="^\s*>>>\s" end="^\s*$" \ contained contains=ALLBUT,pythonDoctest,pythonFunction,@Spell syn region pythonDoctestValue \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" \ contained else syn region pythonDoctest \ start="^\s*>>>" end="^\s*$" \ contained contains=@NoSpell endif endif syn sync match pythonSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]" hi def link pythonStatement Statement hi def link pythonConditional Conditional hi def link pythonRepeat Repeat hi def link pythonOperator Operator hi def link pythonException Exception hi def link pythonInclude Include hi def link pythonAsync Statement hi def link pythonDecorator Define hi def link pythonDecoratorName Function hi def link pythonFunction Function hi def link pythonComment Comment hi def link pythonTodo Todo hi def link pythonString String hi def link pythonRawString String hi def link pythonQuotes String hi def link pythonTripleQuotes pythonQuotes hi def link pythonEscape Special if !exists("python_no_number_highlight") hi def link pythonNumber Number endif if !exists("python_no_builtin_highlight") hi def link pythonBuiltin Function endif if !exists("python_no_exception_highlight") hi def link pythonExceptions Structure endif if exists("python_space_error_highlight") hi def link pythonSpaceError Error endif if !exists("python_no_doctest_highlight") hi def link pythonDoctest Special hi def link pythonDoctestValue Define endif let b:current_syntax = "python" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match qfFileName "^[^|]*" nextgroup=qfSeparator syn match qfSeparator "|" nextgroup=qfLineNr contained syn match qfLineNr "[^|]*" contained contains=qfError syn match qfError "error" contained hi def link qfFileName Directory hi def link qfLineNr LineNr hi def link qfError Error let b:current_syntax = "qf" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=-,+ syn keyword quakeTodo contained TODO FIXME XXX NOTE syn region quakeComment display oneline start='//' end='$' end=';' \ keepend contains=quakeTodo,@Spell syn region quakeString display oneline start=+"+ skip=+\\\\\|\\"+ \ end=+"\|$+ contains=quakeNumbers, \ @quakeCommands,@quake3Colors syn case ignore syn match quakeNumbers display transparent '\<-\=\d\|\.\d' \ contains=quakeNumber,quakeFloat, \ quakeOctalError,quakeOctal syn match quakeNumber contained display '\d\+\>' syn match quakeFloat contained display '\d\+\.\d*' syn match quakeFloat contained display '\.\d\+\>' if exists("quake_is_quake1") || exists("quake_is_quake2") syn match quakeOctal contained display '0\o\+\>' \ contains=quakeOctalZero syn match quakeOctalZero contained display '\<0' syn match quakeOctalError contained display '0\o*[89]\d*' endif syn cluster quakeCommands contains=quakeCommand,quake1Command, \ quake12Command,Quake2Command,Quake23Command, \ Quake3Command syn keyword quakeCommand +attack +back +forward +left +lookdown +lookup syn keyword quakeCommand +mlook +movedown +moveleft +moveright +moveup syn keyword quakeCommand +right +speed +strafe -attack -back bind syn keyword quakeCommand bindlist centerview clear connect cvarlist dir syn keyword quakeCommand disconnect dumpuser echo error exec -forward syn keyword quakeCommand god heartbeat joy_advancedupdate kick kill syn keyword quakeCommand killserver -left -lookdown -lookup map syn keyword quakeCommand messagemode messagemode2 -mlook modellist syn keyword quakeCommand -movedown -moveleft -moveright -moveup play syn keyword quakeCommand quit rcon reconnect record -right say say_team syn keyword quakeCommand screenshot serverinfo serverrecord serverstop syn keyword quakeCommand set sizedown sizeup snd_restart soundinfo syn keyword quakeCommand soundlist -speed spmap status -strafe stopsound syn keyword quakeCommand toggleconsole unbind unbindall userinfo pause syn keyword quakeCommand vid_restart viewpos wait weapnext weapprev if exists("quake_is_quake1") syn keyword quake1Command sv endif if exists("quake_is_quake1") || exists("quake_is_quake2") syn keyword quake12Command +klook alias cd impulse link load save syn keyword quake12Command timerefresh changing info loading syn keyword quake12Command pingservers playerlist players score endif if exists("quake_is_quake2") syn keyword quake2Command cmd demomap +use condump download drop gamemap syn keyword quake2Command give gun_model setmaster sky sv_maplist wave syn keyword quake2Command cmdlist gameversiona gun_next gun_prev invdrop syn keyword quake2Command inven invnext invnextp invnextw invprev syn keyword quake2Command invprevp invprevw invuse menu_addressbook syn keyword quake2Command menu_credits menu_dmoptions menu_game syn keyword quake2Command menu_joinserver menu_keys menu_loadgame syn keyword quake2Command menu_main menu_multiplayer menu_options syn keyword quake2Command menu_playerconfig menu_quit menu_savegame syn keyword quake2Command menu_startserver menu_video syn keyword quake2Command notarget precache prog togglechat vid_front syn keyword quake2Command weaplast endif if exists("quake_is_quake2") || exists("quake_is_quake3") syn keyword quake23Command imagelist modellist path z_stats endif if exists("quake_is_quake3") syn keyword quake3Command +info +scores +zoom addbot arena banClient syn keyword quake3Command banUser callteamvote callvote changeVectors syn keyword quake3Command cinematic clientinfo clientkick cmd cmdlist syn keyword quake3Command condump configstrings crash cvar_restart devmap syn keyword quake3Command fdir follow freeze fs_openedList Fs_pureList syn keyword quake3Command Fs_referencedList gfxinfo globalservers syn keyword quake3Command hunk_stats in_restart -info levelshot syn keyword quake3Command loaddeferred localservers map_restart mem_info syn keyword quake3Command messagemode3 messagemode4 midiinfo model music syn keyword quake3Command modelist net_restart nextframe nextskin noclip syn keyword quake3Command notarget ping prevframe prevskin reset restart syn keyword quake3Command s_disable_a3d s_enable_a3d s_info s_list s_stop syn keyword quake3Command scanservers -scores screenshotJPEG sectorlist syn keyword quake3Command serverstatus seta setenv sets setu setviewpos syn keyword quake3Command shaderlist showip skinlist spdevmap startOribt syn keyword quake3Command stats stopdemo stoprecord systeminfo togglemenu syn keyword quake3Command tcmd team teamtask teamvote tell tell_attacker syn keyword quake3Command tell_target testgun testmodel testshader toggle syn keyword quake3Command touchFile vminfo vmprofile vmtest vosay syn keyword quake3Command vosay_team vote votell vsay vsay_team vstr syn keyword quake3Command vtaunt vtell vtell_attacker vtell_target weapon syn keyword quake3Command writeconfig -zoom syn match quake3Command display "\<[+-]button\(\d\|1[0-4]\)\>" endif if exists("quake_is_quake3") syn cluster quake3Colors contains=quake3Red,quake3Green,quake3Yellow, \ quake3Blue,quake3Cyan,quake3Purple,quake3White, \ quake3Orange,quake3Grey,quake3Black,quake3Shadow syn region quake3Red contained start=+\^1+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Green contained start=+\^2+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Yellow contained start=+\^3+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Blue contained start=+\^4+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Cyan contained start=+\^5+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Purple contained start=+\^6+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3White contained start=+\^7+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Orange contained start=+\^8+hs=e+1 end=+[$^\"\n]+he=e-1 syn region quake3Grey contained start=+\^9+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Black contained start=+\^0+hs=e+1 end=+[$^"\n]+he=e-1 syn region quake3Shadow contained start=+\^[Xx]+hs=e+1 end=+[$^"\n]+he=e-1 endif hi def link quakeComment Comment hi def link quakeTodo Todo hi def link quakeString String hi def link quakeNumber Number hi def link quakeOctal Number hi def link quakeOctalZero PreProc hi def link quakeFloat Number hi def link quakeOctalError Error hi def link quakeCommand quakeCommands hi def link quake1Command quakeCommands hi def link quake12Command quakeCommands hi def link quake2Command quakeCommands hi def link quake23Command quakeCommands hi def link quake3Command quakeCommands hi def link quakeCommands Keyword if exists("quake_is_quake3") hi quake3Red ctermfg=Red guifg=Red hi quake3Green ctermfg=Green guifg=Green hi quake3Yellow ctermfg=Yellow guifg=Yellow hi quake3Blue ctermfg=Blue guifg=Blue hi quake3Cyan ctermfg=Cyan guifg=Cyan hi quake3Purple ctermfg=DarkMagenta guifg=Purple hi quake3White ctermfg=White guifg=White hi quake3Black ctermfg=Black guifg=Black hi quake3Orange ctermfg=Brown guifg=Orange hi quake3Grey ctermfg=LightGrey guifg=LightGrey hi quake3Shadow cterm=underline gui=underline endif let b:current_syntax = "quake" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif if has("patch-7.4.1142") syn iskeyword @,48-57,_,. else setlocal iskeyword=@,48-57,_,. endif if exists("g:r_hl_roxygen") let g:r_syntax_hl_roxygen = g:r_hl_roxygen endif if exists("g:r_syn_minlines") let g:r_syntax_minlines = g:r_syn_minlines endif if exists("g:r_syntax_folding") && g:r_syntax_folding setlocal foldmethod=syntax endif let g:r_syntax_hl_roxygen = get(g:, 'r_syntax_hl_roxygen', 1) syn case match syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):" syn match rTodoParen contained "\(BUG\|FIXME\|NOTE\|TODO\)\s*(.\{-})\s*:" contains=rTodoKeyw,rTodoInfo transparent syn keyword rTodoKeyw BUG FIXME NOTE TODO contained syn match rTodoInfo "(\zs.\{-}\ze)" contained syn match rComment contains=@Spell,rCommentTodo,rTodoParen,rOBlock "#.*" if g:r_syntax_hl_roxygen syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag syn match rOTitleTag contained "@title" syn match rOCommentKey "^\s*#\{1,2}'" contained syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold syn match rOTag contained "@aliases" syn match rOTag contained "@author" syn match rOTag contained "@backref" syn match rOTag contained "@concept" syn match rOTag contained "@describeIn" syn match rOTag contained "@description" syn match rOTag contained "@details" syn match rOTag contained "@docType" syn match rOTag contained "@encoding" syn match rOTag contained "@evalRd" syn match rOTag contained "@example" syn match rOTag contained "@examples" syn match rOTag contained "@family" syn match rOTag contained "@field" syn match rOTag contained "@format" syn match rOTag contained "@inherit" syn match rOTag contained "@inheritParams" syn match rOTag contained "@inheritDotParams" syn match rOTag contained "@inheritSection" syn match rOTag contained "@keywords" syn match rOTag contained "@method" syn match rOTag contained "@name" syn match rOTag contained "@md" syn match rOTag contained "@noMd" syn match rOTag contained "@noRd" syn match rOTag contained "@note" syn match rOTag contained "@param" syn match rOTag contained "@rdname" syn match rOTag contained "@rawRd" syn match rOTag contained "@references" syn match rOTag contained "@return" syn match rOTag contained "@section" syn match rOTag contained "@seealso" syn match rOTag contained "@slot" syn match rOTag contained "@source" syn match rOTag contained "@template" syn match rOTag contained "@templateVar" syn match rOTag contained "@title" syn match rOTag contained "@usage" syn match rOTag contained "@export" syn match rOTag contained "@exportClass" syn match rOTag contained "@exportMethod" syn match rOTag contained "@exportPattern" syn match rOTag contained "@import" syn match rOTag contained "@importClassesFrom" syn match rOTag contained "@importFrom" syn match rOTag contained "@importMethodsFrom" syn match rOTag contained "@rawNamespace" syn match rOTag contained "@S3method" syn match rOTag contained "@useDynLib" syn match rOTag contained "@include" endif if &filetype == "rhelp" syn region rString contains=rSpecial,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/ syn region rString contains=rSpecial,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/ else syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/ syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/ endif syn match rStrError display contained "\\." syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\" syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)" syn match rSpecial display contained "\\u\x\{1,4}" syn match rSpecial display contained "\\U\x\{1,8}" syn match rSpecial display contained "\\u{\x\{1,4}}" syn match rSpecial display contained "\\U{\x\{1,8}}" syn keyword rStatement break next return syn keyword rConditional if else syn keyword rRepeat for in repeat while syn keyword rConstant T F LETTERS letters month.abb month.name pi syn keyword rConstant R.version.string syn keyword rNumber NA_integer_ NA_real_ NA_complex_ NA_character_ syn keyword rConstant NULL syn keyword rBoolean FALSE TRUE syn keyword rNumber NA Inf NaN syn match rInteger "\<\d\+L" syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L" syn match rInteger "\<\d\+[Ee]+\=\d\+L" syn match rNumber "\<\d\+\>" syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+" syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=" syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\=" syn match rFloat "\<\d\+[Ee][-+]\=\d\+" syn match rComplex "\<\d\+i" syn match rComplex "\<\d\++\d\+i" syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i" syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i" syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i" syn match rComplex "\<\d\+[Ee][-+]\=\d\+i" syn match rAssign '=' syn match rOperator "&" syn match rOperator '-' syn match rOperator '\*' syn match rOperator '+' if &filetype != "rmd" && &filetype != "rrst" syn match rOperator "[|!<>^~/:]" else syn match rOperator "[|!<>^~`/:]" endif syn match rOperator "%\{2}\|%\S\{-}%" syn match rOperator '\([!><]\)\@<==' syn match rOperator '==' syn match rOpError '\*\{3}' syn match rOpError '//' syn match rOpError '&&&' syn match rOpError '|||' syn match rOpError '<<' syn match rOpError '>>' syn match rAssign "<\{1,2}-" syn match rAssign "->\{1,2}" syn match rDelimiter "[,;:]" if exists("g:r_syntax_folding") syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError fold syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError fold syn region rSection matchgroup=Title start=/^#.*[-=#]\{4,}/ end=/^#.*[-=#]\{4,}/ms=s-2,me=s-1 transparent contains=ALL fold else syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError endif syn match rError "[)\]}]" syn match rBraceError "[)}]" contained syn match rCurlyError "[)\]]" contained syn match rParenError "[\]}]" contained if !exists("g:r_syntax_fun_pattern") let s:ff = split(substitute(globpath(&rtp, "R/functions.vim"), "functions.vim", "", "g"), "\n") if len(s:ff) > 0 let g:r_syntax_fun_pattern = 0 else let g:r_syntax_fun_pattern = 1 endif endif if g:r_syntax_fun_pattern == 1 syn match rFunction '[0-9a-zA-Z_\.]\+\s*\ze(' else runtime R/functions.vim endif syn match rDollar display contained "\$" syn match rDollar display contained "@" syn match rLstElmt "\$[a-zA-Z0-9\\._]*" contains=rDollar syn match rLstElmt "@[a-zA-Z0-9\\._]*" contains=rDollar syn keyword rPreProc library require attach detach source if &filetype == "rhelp" syn match rHelpIdent '\\method' syn match rHelpIdent '\\S4method' endif syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame if &filetype != "rmd" && &filetype != "rrst" syn region rNameWSpace start="`" end="`" contains=rSpaceFun endif if &filetype == "rhelp" syn match rhPreProc "^#ifdef.*" syn match rhPreProc "^#endif.*" syn match rhSection "\\dontrun\>" endif if exists("r_syntax_minlines") exe "syn sync minlines=" . r_syntax_minlines else syn sync minlines=40 endif hi def link rAssign Statement hi def link rBoolean Boolean hi def link rBraceError Error hi def link rComment Comment hi def link rTodoParen Comment hi def link rTodoInfo SpecialComment hi def link rCommentTodo Todo hi def link rTodoKeyw Todo hi def link rComplex Number hi def link rConditional Conditional hi def link rConstant Constant hi def link rCurlyError Error hi def link rDelimiter Delimiter hi def link rDollar SpecialChar hi def link rError Error hi def link rFloat Float hi def link rFunction Function hi def link rSpaceFun Function hi def link rHelpIdent Identifier hi def link rhPreProc PreProc hi def link rhSection PreCondit hi def link rInteger Number hi def link rLstElmt Normal hi def link rNameWSpace Normal hi def link rNumber Number hi def link rOperator Operator hi def link rOpError Error hi def link rParenError Error hi def link rPreProc PreProc hi def link rRepeat Repeat hi def link rSpecial SpecialChar hi def link rStatement Statement hi def link rString String hi def link rStrError Error hi def link rType Type if g:r_syntax_hl_roxygen hi def link rOTitleTag Operator hi def link rOTag Operator hi def link rOTitleBlock Title hi def link rOBlock Comment hi def link rOBlockNoTitle Comment hi def link rOTitle Title hi def link rOCommentKey Comment hi def link rOExamples SpecialComment endif let b:current_syntax="r" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword raccTodo contained TODO FIXME XXX NOTE syn region raccComment start='/\*' end='\*/' \ contains=raccTodo,@Spell syn region raccComment display oneline start='#' end='$' \ contains=raccTodo,@Spell syn region raccClass transparent matchgroup=raccKeyword \ start='\' end='\'he=e-4 \ contains=raccComment,raccPrecedence, \ raccTokenDecl,raccExpect,raccOptions,raccConvert, \ raccStart, syn region raccPrecedence transparent matchgroup=raccKeyword \ start='\' end='\' \ contains=raccComment,raccPrecSpec syn keyword raccPrecSpec contained nonassoc left right \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn match raccPrecToken contained '\<\u[A-Z0-9_]*\>' \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn region raccPrecString matchgroup=raccPrecString start=+"+ \ skip=+\\\\\|\\"+ end=+"+ \ contains=raccSpecial \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn region raccPrecString matchgroup=raccPrecString start=+'+ \ skip=+\\\\\|\\'+ end=+'+ contains=raccSpecial \ nextgroup=raccPrecToken,raccPrecString skipwhite \ skipnl syn keyword raccTokenDecl contained token \ nextgroup=raccTokenR skipwhite skipnl syn match raccTokenR contained '\<\u[A-Z0-9_]*\>' \ nextgroup=raccTokenR skipwhite skipnl syn keyword raccExpect contained expect \ nextgroup=raccNumber skipwhite skipnl syn match raccNumber contained '\<\d\+\>' syn keyword raccOptions contained options \ nextgroup=raccOptionsR skipwhite skipnl syn keyword raccOptionsR contained omit_action_call result_var \ nextgroup=raccOptionsR skipwhite skipnl syn region raccConvert transparent contained matchgroup=raccKeyword \ start='\' end='\' \ contains=raccComment,raccConvToken skipwhite \ skipnl syn match raccConvToken contained '\<\u[A-Z0-9_]*\>' \ nextgroup=raccString skipwhite skipnl syn keyword raccStart contained start \ nextgroup=raccTargetS skipwhite skipnl syn match raccTargetS contained '\<\l[a-z0-9_]*\>' syn match raccSpecial contained '\\["'\\]' syn region raccString start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=raccSpecial syn region raccString start=+'+ skip=+\\\\\|\\'+ end=+'+ \ contains=raccSpecial syn region raccRules transparent matchgroup=raccKeyword start='\' \ end='\' contains=raccComment,raccString, \ raccNumber,raccToken,raccTarget,raccDelimiter, \ raccAction syn match raccTarget contained '\<\l[a-z0-9_]*\>' syn match raccDelimiter contained '[:|]' syn match raccToken contained '\<\u[A-Z0-9_]*\>' syn include @raccRuby syntax/ruby.vim syn region raccAction transparent matchgroup=raccDelimiter \ start='{' end='}' contains=@raccRuby syn region raccHeader transparent matchgroup=raccPreProc \ start='^---- header.*' end='^----'he=e-4 \ contains=@raccRuby syn region raccInner transparent matchgroup=raccPreProc \ start='^---- inner.*' end='^----'he=e-4 \ contains=@raccRuby syn region raccFooter transparent matchgroup=raccPreProc \ start='^---- footer.*' end='^----'he=e-4 \ contains=@raccRuby syn sync match raccSyncHeader grouphere raccHeader '^---- header' syn sync match raccSyncInner grouphere raccInner '^---- inner' syn sync match raccSyncFooter grouphere raccFooter '^---- footer' hi def link raccTodo Todo hi def link raccComment Comment hi def link raccPrecSpec Type hi def link raccPrecToken raccToken hi def link raccPrecString raccString hi def link raccTokenDecl Keyword hi def link raccToken Identifier hi def link raccTokenR raccToken hi def link raccExpect Keyword hi def link raccNumber Number hi def link raccOptions Keyword hi def link raccOptionsR Identifier hi def link raccConvToken raccToken hi def link raccStart Keyword hi def link raccTargetS Type hi def link raccSpecial special hi def link raccString String hi def link raccTarget Type hi def link raccDelimiter Delimiter hi def link raccPreProc PreProc hi def link raccKeyword Keyword let b:current_syntax = "racc" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif setlocal iskeyword=\",$-~ syn keyword radianceKeyword void syn keyword radianceExtraType contained alias instance syn keyword radianceSurfType contained ring polygon sphere bubble syn keyword radianceSurfType contained cone cup cylinder tube source syn keyword radianceLightType contained light glow illum spotlight syn keyword radianceMatType contained mirror mist prism1 prism2 syn keyword radianceMatType contained metal plastic trans syn keyword radianceMatType contained metal2 plastic2 trans2 syn keyword radianceMatType contained metfunc plasfunc transfunc syn keyword radianceMatType contained metdata plasdata transdata syn keyword radianceMatType contained dielectric interface glass syn keyword radianceMatType contained BRTDfunc antimatter syn keyword radiancePatType contained colorfunc brightfunc syn keyword radiancePatType contained colordata colorpict brightdata syn keyword radiancePatType contained colortext brighttext syn keyword radianceTexType contained texfunc texdata syn keyword radianceMixType contained mixfunc mixdata mixpict mixtext syn region radianceID start="\" end="\<\k*\>" contains=radianceExtraType syn region radianceID start="\" end="\<\k*\>" contains=radianceExtraType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceSurfType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceLightType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radianceMatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radiancePatType syn region radianceID start="\" end="\<\k*\>" contains=radianceTexType syn region radianceID start="\" end="\<\k*\>" contains=radianceTexType syn region radianceID start="\" end="\<\k*\>" contains=radianceMixType syn region radianceID start="\" end="\<\k*\>" contains=radianceMixType syn region radianceID start="\" end="\<\k*\>" contains=radianceMixType syn match radianceCommand "^\s*!\s*[^\s]\+\>" syn keyword radianceTodo contained TODO XXX syn match radianceComment "#.*$" contains=radianceTodo hi def link radianceKeyword Keyword hi def link radianceExtraType Type hi def link radianceSurfType Type hi def link radianceLightType Type hi def link radianceMatType Type hi def link radiancePatType Type hi def link radianceTexType Type hi def link radianceMixType Type hi def link radianceComment Comment hi def link radianceCommand Function hi def link radianceID String hi def link radianceTodo Todo let b:current_syntax = "radiance" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword ramlTodo contained TODO FIXME XXX NOTE syn region ramlComment display oneline start='\%(^\|\s\)#' end='$' \ contains=ramlTodo,@Spell syn region ramlVersion display oneline start='#%RAML' end='$' syn match ramlNodeProperty '!\%(![^\\^% ]\+\|[^!][^:/ ]*\)' syn match ramlAnchor '&.\+' syn match ramlAlias '\*.\+' syn match ramlDelimiter '[-,:]' syn match ramlBlock '[\[\]{}>|]' syn match ramlOperator '[?+-]' syn match ramlKey '\h\+\(?\)\?\ze\s*:' syn match ramlKey '\w\+\(\s\+\w\+\)*\(?\)\?\ze\s*:' syn match routeKey '\/\w\+\(\s\+\w\+\)*\ze\s*:' syn match routeKey 'application\/\w\+\ze\s*:' syn match routeParamKey '\/{\w\+}*\ze\s*:' syn region ramlString matchgroup=ramlStringDelimiter \ start=+\s"+ skip=+\\"+ end=+"+ \ contains=ramlEscape syn region ramlString matchgroup=ramlStringDelimiter \ start=+\s'+ skip=+''+ end=+'+ \ contains=ramlStringEscape syn region ramlParameter matchgroup=ramlParameterDelimiter \ start=+<<+ skip=+''+ end=+>>+ syn match ramlEscape contained display +\\[\\"abefnrtv^0_ NLP]+ syn match ramlEscape contained display '\\x\x\{2}' syn match ramlEscape contained display '\\u\x\{4}' syn match ramlEscape contained display '\\U\x\{8}' syn match ramlEscape display '\\\%(\r\n\|[\r\n]\)' syn match ramlStringEscape contained +''+ syn match ramlNumber display \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' syn match ramlNumber display '0\o\+' syn match ramlNumber display '0x\x\+' syn match ramlNumber display '([+-]\=[iI]nf)' syn match ramlNumber display '(NaN)' syn match ramlConstant '\<[~yn]\>' syn keyword ramlConstant true True TRUE false False FALSE syn keyword ramlConstant yes Yes on ON no No off OFF syn keyword ramlConstant null Null NULL nil Nil NIL syn keyword httpVerbs get post put delete head patch options syn keyword ramlTypes string number integer date boolean file syn match ramlTimestamp '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\=' syn region ramlDocumentHeader start='---' end='$' contains=ramlDirective syn match ramlDocumentEnd '\.\.\.' syn match ramlDirective contained '%[^:]\+:.\+' hi def link ramlVersion String hi def link routeInterpolation String hi def link ramlInterpolation Constant hi def link ramlTodo Todo hi def link ramlComment Comment hi def link ramlDocumentHeader PreProc hi def link ramlDocumentEnd PreProc hi def link ramlDirective Keyword hi def link ramlNodeProperty Type hi def link ramlAnchor Type hi def link ramlAlias Type hi def link ramlBlock Operator hi def link ramlOperator Operator hi def link routeParamKey SpecialChar hi def link ramlKey Identifier hi def link routeKey SpecialChar hi def link ramlParameterDelimiter Type hi def link ramlParameter Type hi def link ramlString String hi def link ramlStringDelimiter ramlString hi def link ramlEscape SpecialChar hi def link ramlStringEscape SpecialChar hi def link ramlNumber Number hi def link ramlConstant Constant hi def link ramlTimestamp Number hi def link httpVerbs Statement hi def link ramlTypes Type hi def link ramlDelimiter Delimiter let b:current_syntax = "raml" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match ratpoisonComment "^\s*#.*$" contains=ratpoisonTodo syn keyword ratpoisonTodo TODO NOTE FIXME XXX contained syn case ignore syn keyword ratpoisonBooleanArg on off contained syn case match syn keyword ratpoisonCommandArg abort addhook alias banish chdir contained syn keyword ratpoisonCommandArg clrunmanaged cnext colon compat cother contained syn keyword ratpoisonCommandArg cprev curframe dedicate definekey delete contained syn keyword ratpoisonCommandArg delkmap describekey echo escape exec contained syn keyword ratpoisonCommandArg fdump focus focusdown focuslast focusleft contained syn keyword ratpoisonCommandArg focusprev focusright focusup frestore fselect contained syn keyword ratpoisonCommandArg gdelete getenv getsel gmerge gmove contained syn keyword ratpoisonCommandArg gnew gnewbg gnext gprev gravity contained syn keyword ratpoisonCommandArg groups gselect help hsplit inext contained syn keyword ratpoisonCommandArg info iother iprev kill lastmsg contained syn keyword ratpoisonCommandArg license link listhook meta msgwait contained syn keyword ratpoisonCommandArg newkmap newwm next nextscreen number contained syn keyword ratpoisonCommandArg only other prev prevscreen prompt contained syn keyword ratpoisonCommandArg putsel quit ratclick rathold ratrelwarp contained syn keyword ratpoisonCommandArg ratwarp readkey redisplay redo remhook contained syn keyword ratpoisonCommandArg remove resize restart rudeness sdump contained syn keyword ratpoisonCommandArg select set setenv sfdump shrink contained syn keyword ratpoisonCommandArg source sselect startup_message time title contained syn keyword ratpoisonCommandArg tmpwm unalias undefinekey undo unmanage contained syn keyword ratpoisonCommandArg unsetenv verbexec version vsplit warp contained syn keyword ratpoisonCommandArg windows contained syn match ratpoisonGravityArg "\<\(n\|north\)\>" contained syn match ratpoisonGravityArg "\<\(nw\|northwest\)\>" contained syn match ratpoisonGravityArg "\<\(ne\|northeast\)\>" contained syn match ratpoisonGravityArg "\<\(w\|west\)\>" contained syn match ratpoisonGravityArg "\<\(c\|center\)\>" contained syn match ratpoisonGravityArg "\<\(e\|east\)\>" contained syn match ratpoisonGravityArg "\<\(s\|south\)\>" contained syn match ratpoisonGravityArg "\<\(sw\|southwest\)\>" contained syn match ratpoisonGravityArg "\<\(se\|southeast\)\>" contained syn case match syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(F[1-9][0-9]\=\|\(\a\|\d\)\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(space\|exclam\|quotedbl\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(numbersign\|dollar\|percent\|ampersand\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(apostrophe\|quoteright\|parenleft\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(parenright\|asterisk\|plus\|comma\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(minus\|period\|slash\|colon\|semicolon\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(less\|equal\|greater\|question\|at\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(bracketleft\|backslash\|bracketright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciicircum\|underscore\|grave\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(quoteleft\|braceleft\|bar\|braceright\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(asciitilde\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(BackSpace\|Tab\|Linefeed\|Clear\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Return\|Pause\|Scroll_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Sys_Req\|Escape\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Home\|Left\|Up\|Right\|Down\|Prior\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Page_Up\|Next\|Page_Down\|End\|Begin\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Select\|Print\|Execute\|Insert\|Undo\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Redo\|Menu\|Find\|Cancel\|Help\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=\(Break\|Mode_switch\|script_switch\|Num_Lock\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Space\|Tab\|Enter\|F[1234]\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Home\|Left\|Up\|Right\|Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Prior\|Page_Up\|Next\|Page_Down\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(End\|Begin\|Insert\|Delete\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Equal\|Multiply\|Add\|Separator\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonKeySeqArg "\<\([CMASH]\(-[CMASH]\)\{,4}-\)\=KP_\(Subtract\|Decimal\|Divide\|\d\)\>" contained nextgroup=ratpoisonCommandArg skipwhite syn match ratpoisonHookArg "\<\(key\|switchwin\|switchframe\|switchgroup\|quit\|restart\)\>" contained syn match ratpoisonNumberArg "\<\d\+\>" contained nextgroup=ratpoisonNumberArg skipwhite syn keyword ratpoisonSetArg barborder contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg bargravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg barpadding contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg bgcolor syn keyword ratpoisonSetArg border contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg fgcolor syn keyword ratpoisonSetArg fwcolor syn keyword ratpoisonSetArg bwcolor syn keyword ratpoisonSetArg historysize syn keyword ratpoisonSetArg historycompaction syn keyword ratpoisonSetArg historyexpansion syn keyword ratpoisonSetArg topkmap syn keyword ratpoisonSetArg barinpadding syn keyword ratpoisonSetArg font syn keyword ratpoisonSetArg framesels syn keyword ratpoisonSetArg inputwidth contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg maxsizegravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg padding contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg resizeunit contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg transgravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg waitcursor contained nextgroup=ratpoisonNumberArg syn keyword ratpoisonSetArg winfmt contained nextgroup=ratpoisonWinFmtArg syn keyword ratpoisonSetArg wingravity contained nextgroup=ratpoisonGravityArg syn keyword ratpoisonSetArg winliststyle contained nextgroup=ratpoisonWinListArg syn keyword ratpoisonSetArg winname contained nextgroup=ratpoisonWinNameArg syn match ratpoisonWinFmtArg "%[nstacil]" contained nextgroup=ratpoisonWinFmtArg skipwhite syn match ratpoisonWinListArg "\<\(row\|column\)\>" contained syn match ratpoisonWinNameArg "\<\(name\|title\|class\)\>" contained syn match ratpoisonDefCommand "^\s*set\s*" nextgroup=ratpoisonSetArg syn match ratpoisonDefCommand "^\s*defbarborder\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*defbargravity\s*" nextgroup=ratpoisonGravityArg syn match ratpoisonDefCommand "^\s*defbarpadding\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*defbgcolor\s*" syn match ratpoisonDefCommand "^\s*defborder\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*deffgcolor\s*" syn match ratpoisonDefCommand "^\s*deffont\s*" syn match ratpoisonDefCommand "^\s*defframesels\s*" syn match ratpoisonDefCommand "^\s*definputwidth\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*defmaxsizegravity\s*" nextgroup=ratpoisonGravityArg syn match ratpoisonDefCommand "^\s*defpadding\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*defresizeunit\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*deftransgravity\s*" nextgroup=ratpoisonGravityArg syn match ratpoisonDefCommand "^\s*defwaitcursor\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonDefCommand "^\s*defwinfmt\s*" nextgroup=ratpoisonWinFmtArg syn match ratpoisonDefCommand "^\s*defwingravity\s*" nextgroup=ratpoisonGravityArg syn match ratpoisonDefCommand "^\s*defwinliststyle\s*" nextgroup=ratpoisonWinListArg syn match ratpoisonDefCommand "^\s*defwinname\s*" nextgroup=ratpoisonWinNameArg syn match ratpoisonDefCommand "^\s*msgwait\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonStringCommand "^\s*\zsaddhook\ze\s*" nextgroup=ratpoisonHookArg syn match ratpoisonStringCommand "^\s*\zsalias\ze\s*" syn match ratpoisonStringCommand "^\s*\zsbind\ze\s*" nextgroup=ratpoisonKeySeqArg syn match ratpoisonStringCommand "^\s*\zschdir\ze\s*" syn match ratpoisonStringCommand "^\s*\zscolon\ze\s*" nextgroup=ratpoisonCommandArg syn match ratpoisonStringCommand "^\s*\zsdedicate\ze\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonStringCommand "^\s*\zsdefinekey\ze\s*" syn match ratpoisonStringCommand "^\s*\zsdelkmap\ze\s*" syn match ratpoisonStringCommand "^\s*\zsdescribekey\ze\s*" syn match ratpoisonStringCommand "^\s*\zsecho\ze\s*" syn match ratpoisonStringCommand "^\s*\zsescape\ze\s*" nextgroup=ratpoisonKeySeqArg syn match ratpoisonStringCommand "^\s*\zsexec\ze\s*" syn match ratpoisonStringCommand "^\s*\zsfdump\ze\s*" syn match ratpoisonStringCommand "^\s*\zsfrestore\ze\s*" syn match ratpoisonStringCommand "^\s*\zsgdelete\ze\s*" syn match ratpoisonStringCommand "^\s*\zsgetenv\ze\s*" syn match ratpoisonStringCommand "^\s*\zsgravity\ze\s*" nextgroup=ratpoisonGravityArg syn match ratpoisonStringCommand "^\s*\zsgselect\ze\s*" syn match ratpoisonStringCommand "^\s*\zslink\ze\s*" nextgroup=ratpoisonKeySeqArg syn match ratpoisonStringCommand "^\s*\zslisthook\ze\s*" nextgroup=ratpoisonHookArg syn match ratpoisonStringCommand "^\s*\zsnewkmap\ze\s*" syn match ratpoisonStringCommand "^\s*\zsnewwm\ze\s*" syn match ratpoisonStringCommand "^\s*\zsnumber\ze\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonStringCommand "^\s*\zsprompt\ze\s*" syn match ratpoisonStringCommand "^\s*\zsratwarp\ze\s*" syn match ratpoisonStringCommand "^\s*\zsratrelwarp\ze\s*" syn match ratpoisonStringCommand "^\s*\zsratclick\ze\s*" syn match ratpoisonStringCommand "^\s*\zsrathold\ze\s*" syn match ratpoisonStringCommand "^\s*\zsreadkey\ze\s*" syn match ratpoisonStringCommand "^\s*\zsremhook\ze\s*" nextgroup=ratpoisonHookArg syn match ratpoisonStringCommand "^\s*\zsresize\ze\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonStringCommand "^\s*\zsrudeness\ze\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonStringCommand "^\s*\zsselect\ze\s*" nextgroup=ratpoisonNumberArg syn match ratpoisonStringCommand "^\s*\zssetenv\ze\s*" syn match ratpoisonStringCommand "^\s*\zssource\ze\s*" syn match ratpoisonStringCommand "^\s*\zssselect\ze\s*" syn match ratpoisonStringCommand "^\s*\zsstartup_message\ze\s*" nextgroup=ratpoisonBooleanArg syn match ratpoisonStringCommand "^\s*\zstitle\ze\s*" syn match ratpoisonStringCommand "^\s*\zstmpwm\ze\s*" syn match ratpoisonStringCommand "^\s*\zsunalias\ze\s*" syn match ratpoisonStringCommand "^\s*\zsunbind\ze\s*" nextgroup=ratpoisonKeySeqArg syn match ratpoisonStringCommand "^\s*\zsundefinekey\ze\s*" syn match ratpoisonStringCommand "^\s*\zsunmanage\ze\s*" syn match ratpoisonStringCommand "^\s*\zsunsetenv\ze\s*" syn match ratpoisonStringCommand "^\s*\zsverbexec\ze\s*" syn match ratpoisonStringCommand "^\s*\zswarp\ze\s*" nextgroup=ratpoisonBooleanArg syn match ratpoisonVoidCommand "^\s*\zsabort\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsbanish\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsclrunmanaged\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zscnext\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zscompat\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zscother\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zscprev\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zscurframe\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsdelete\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocusdown\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocuslast\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocusleft\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocusprev\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocusright\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocusup\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfocus\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsfselect\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgetsel\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgmerge\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgmove\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgnewbg\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgnew\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgnext\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgprev\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsgroups\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zshelp\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zshsplit\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsinext\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsinfo\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsiother\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsiprev\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zskill\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zslastmsg\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zslicense\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsmeta\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsnextscreen\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsnext\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsonly\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsother\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsprevscreen\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsprev\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsputsel\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsquit\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsredisplay\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsredo\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsremove\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsrestart\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zssdump\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zssfdump\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsshrink\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zssplit\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zstime\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsundo\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsversion\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zsvsplit\ze\s*$" syn match ratpoisonVoidCommand "^\s*\zswindows\ze\s*$" hi def link ratpoisonBooleanArg Boolean hi def link ratpoisonCommandArg Keyword hi def link ratpoisonComment Comment hi def link ratpoisonDefCommand Identifier hi def link ratpoisonGravityArg Constant hi def link ratpoisonKeySeqArg Special hi def link ratpoisonNumberArg Number hi def link ratpoisonSetArg Keyword hi def link ratpoisonStringCommand Identifier hi def link ratpoisonTodo Todo hi def link ratpoisonVoidCommand Identifier hi def link ratpoisonWinFmtArg Special hi def link ratpoisonWinNameArg Constant hi def link ratpoisonWinListArg Constant let b:current_syntax = "ratpoison" if exists("b:current_syntax") finish endif syn keyword rcLanguage LANGUAGE syn keyword rcMainObject TEXTINCLUDE VERSIONINFO BITMAP ICON CURSOR CURSOR syn keyword rcMainObject MENU ACCELERATORS TOOLBAR DIALOG syn keyword rcMainObject STRINGTABLE MESSAGETABLE RCDATA DLGINIT DESIGNINFO syn keyword rcSubObject POPUP MENUITEM SEPARATOR syn keyword rcSubObject CONTROL LTEXT CTEXT RTEXT EDITTEXT syn keyword rcSubObject BUTTON PUSHBUTTON DEFPUSHBUTTON GROUPBOX LISTBOX COMBOBOX syn keyword rcSubObject FILEVERSION PRODUCTVERSION FILEFLAGSMASK FILEFLAGS FILEOS syn keyword rcSubObject FILETYPE FILESUBTYPE syn keyword rcCaptionParam CAPTION syn keyword rcParam CHARACTERISTICS CLASS STYLE EXSTYLE VERSION FONT syn keyword rcStatement BEGIN END BLOCK VALUE syn keyword rcCommonAttribute PRELOAD LOADONCALL FIXED MOVEABLE DISCARDABLE PURE IMPURE syn keyword rcAttribute WS_OVERLAPPED WS_POPUP WS_CHILD WS_MINIMIZE WS_VISIBLE WS_DISABLED WS_CLIPSIBLINGS syn keyword rcAttribute WS_CLIPCHILDREN WS_MAXIMIZE WS_CAPTION WS_BORDER WS_DLGFRAME WS_VSCROLL WS_HSCROLL syn keyword rcAttribute WS_SYSMENU WS_THICKFRAME WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX WS_TILED syn keyword rcAttribute WS_ICONIC WS_SIZEBOX WS_TILEDWINDOW WS_OVERLAPPEDWINDOW WS_POPUPWINDOW WS_CHILDWINDOW syn keyword rcAttribute WS_EX_DLGMODALFRAME WS_EX_NOPARENTNOTIFY WS_EX_TOPMOST WS_EX_ACCEPTFILES syn keyword rcAttribute WS_EX_TRANSPARENT WS_EX_MDICHILD WS_EX_TOOLWINDOW WS_EX_WINDOWEDGE WS_EX_CLIENTEDGE syn keyword rcAttribute WS_EX_CONTEXTHELP WS_EX_RIGHT WS_EX_LEFT WS_EX_RTLREADING WS_EX_LTRREADING syn keyword rcAttribute WS_EX_LEFTSCROLLBAR WS_EX_RIGHTSCROLLBAR WS_EX_CONTROLPARENT WS_EX_STATICEDGE syn keyword rcAttribute WS_EX_APPWINDOW WS_EX_OVERLAPPEDWINDOW WS_EX_PALETTEWINDOW syn keyword rcAttribute ES_LEFT ES_CENTER ES_RIGHT ES_MULTILINE ES_UPPERCASE ES_LOWERCASE ES_PASSWORD syn keyword rcAttribute ES_AUTOVSCROLL ES_AUTOHSCROLL ES_NOHIDESEL ES_OEMCONVERT ES_READONLY ES_WANTRETURN syn keyword rcAttribute ES_NUMBER syn keyword rcAttribute BS_PUSHBUTTON BS_DEFPUSHBUTTON BS_CHECKBOX BS_AUTOCHECKBOX BS_RADIOBUTTON BS_3STATE syn keyword rcAttribute BS_AUTO3STATE BS_GROUPBOX BS_USERBUTTON BS_AUTORADIOBUTTON BS_OWNERDRAW BS_LEFTTEXT syn keyword rcAttribute BS_TEXT BS_ICON BS_BITMAP BS_LEFT BS_RIGHT BS_CENTER BS_TOP BS_BOTTOM BS_VCENTER syn keyword rcAttribute BS_PUSHLIKE BS_MULTILINE BS_NOTIFY BS_FLAT BS_RIGHTBUTTON syn keyword rcAttribute SS_LEFT SS_CENTER SS_RIGHT SS_ICON SS_BLACKRECT SS_GRAYRECT SS_WHITERECT syn keyword rcAttribute SS_BLACKFRAME SS_GRAYFRAME SS_WHITEFRAME SS_USERITEM SS_SIMPLE SS_LEFTNOWORDWRAP syn keyword rcAttribute SS_OWNERDRAW SS_BITMAP SS_ENHMETAFILE SS_ETCHEDHORZ SS_ETCHEDVERT SS_ETCHEDFRAME syn keyword rcAttribute SS_TYPEMASK SS_NOPREFIX SS_NOTIFY SS_CENTERIMAGE SS_RIGHTJUST SS_REALSIZEIMAGE syn keyword rcAttribute SS_SUNKEN SS_ENDELLIPSIS SS_PATHELLIPSIS SS_WORDELLIPSIS SS_ELLIPSISMASK syn keyword rcAttribute DS_ABSALIGN DS_SYSMODAL DS_LOCALEDIT DS_SETFONT DS_MODALFRAME DS_NOIDLEMSG syn keyword rcAttribute DS_SETFOREGROUND DS_3DLOOK DS_FIXEDSYS DS_NOFAILCREATE DS_CONTROL DS_CENTER syn keyword rcAttribute DS_CENTERMOUSE DS_CONTEXTHELP syn keyword rcAttribute LBS_NOTIFY LBS_SORT LBS_NOREDRAW LBS_MULTIPLESEL LBS_OWNERDRAWFIXED syn keyword rcAttribute LBS_OWNERDRAWVARIABLE LBS_HASSTRINGS LBS_USETABSTOPS LBS_NOINTEGRALHEIGHT syn keyword rcAttribute LBS_MULTICOLUMN LBS_WANTKEYBOARDINPUT LBS_EXTENDEDSEL LBS_DISABLENOSCROLL syn keyword rcAttribute LBS_NODATA LBS_NOSEL LBS_STANDARD syn keyword rcAttribute CBS_SIMPLE CBS_DROPDOWN CBS_DROPDOWNLIST CBS_OWNERDRAWFIXED CBS_OWNERDRAWVARIABLE syn keyword rcAttribute CBS_AUTOHSCROLL CBS_OEMCONVERT CBS_SORT CBS_HASSTRINGS CBS_NOINTEGRALHEIGHT syn keyword rcAttribute CBS_DISABLENOSCROLL CBS_UPPERCASE CBS_LOWERCASE syn keyword rcAttribute SBS_HORZ SBS_VERT SBS_TOPALIGN SBS_LEFTALIGN SBS_BOTTOMALIGN SBS_RIGHTALIGN syn keyword rcAttribute SBS_SIZEBOXTOPLEFTALIGN SBS_SIZEBOXBOTTOMRIGHTALIGN SBS_SIZEBOX SBS_SIZEGRIP syn keyword rcAttribute CCS_TOP CCS_NOMOVEY CCS_BOTTOM CCS_NORESIZE CCS_NOPARENTALIGN CCS_ADJUSTABLE syn keyword rcAttribute CCS_NODIVIDER syn keyword rcAttribute LVS_ICON LVS_REPORT LVS_SMALLICON LVS_LIST LVS_TYPEMASK LVS_SINGLESEL LVS_SHOWSELALWAYS syn keyword rcAttribute LVS_SORTASCENDING LVS_SORTDESCENDING LVS_SHAREIMAGELISTS LVS_NOLABELWRAP syn keyword rcAttribute LVS_EDITLABELS LVS_OWNERDATA LVS_NOSCROLL LVS_TYPESTYLEMASK LVS_ALIGNTOP LVS_ALIGNLEFT syn keyword rcAttribute LVS_ALIGNMASK LVS_OWNERDRAWFIXED LVS_NOCOLUMNHEADER LVS_NOSORTHEADER LVS_AUTOARRANGE syn keyword rcAttribute TVS_HASBUTTONS TVS_HASLINES TVS_LINESATROOT TVS_EDITLABELS TVS_DISABLEDRAGDROP syn keyword rcAttribute TVS_SHOWSELALWAYS syn keyword rcAttribute TCS_FORCEICONLEFT TCS_FORCELABELLEFT TCS_TABS TCS_BUTTONS TCS_SINGLELINE TCS_MULTILINE syn keyword rcAttribute TCS_RIGHTJUSTIFY TCS_FIXEDWIDTH TCS_RAGGEDRIGHT TCS_FOCUSONBUTTONDOWN syn keyword rcAttribute TCS_OWNERDRAWFIXED TCS_TOOLTIPS TCS_FOCUSNEVER syn keyword rcAttribute ACS_CENTER ACS_TRANSPARENT ACS_AUTOPLAY syn keyword rcStdId IDI_APPLICATION IDI_HAND IDI_QUESTION IDI_EXCLAMATION IDI_ASTERISK IDI_WINLOGO IDI_WINLOGO syn keyword rcStdId IDI_WARNING IDI_ERROR IDI_INFORMATION syn keyword rcStdId IDCANCEL IDABORT IDRETRY IDIGNORE IDYES IDNO IDCLOSE IDHELP IDC_STATIC syn keyword rcTodo contained TODO FIXME XXX syn match rcSpecial contained "\\[0-7][0-7][0-7]\=\|\\." syn region rcString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rcSpecial syn match rcCharacter "'[^\\]'" syn match rcSpecialCharacter "'\\.'" syn match rcSpecialCharacter "'\\[0-7][0-7]'" syn match rcSpecialCharacter "'\\[0-7][0-7][0-7]'" syn region rcParen transparent start='(' end=')' contains=ALLBUT,rcParenError,rcIncluded,rcSpecial,rcTodo syn match rcParenError ")" syn match rcInParen contained "[{}]" syn case ignore syn match rcNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" syn match rcFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" syn match rcFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match rcFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match rcNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn case match syn match rcOctalError "\<0[0-7]*[89]" if exists("rc_comment_strings") syntax match rcCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region rcCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=rcSpecial,rcCommentSkip syntax region rcComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=rcSpecial syntax region rcComment start="/\*" end="\*/" contains=rcTodo,rcCommentString,rcCharacter,rcNumber,rcFloat syntax match rcComment "//.*" contains=rcTodo,rcComment2String,rcCharacter,rcNumber else syn region rcComment start="/\*" end="\*/" contains=rcTodo syn match rcComment "//.*" contains=rcTodo endif syntax match rcCommentError "\*/" syn region rcPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=rcComment,rcString,rcCharacter,rcNumber,rcCommentError syn region rcIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match rcIncluded contained "<[^>]*>" syn match rcInclude "^\s*#\s*include\>\s*["<]" contains=rcIncluded syn region rcDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen syn region rcPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,rcPreCondit,rcIncluded,rcInclude,rcDefine,rcInParen syn sync ccomment rcComment minlines=10 hi def link rcCharacter Character hi def link rcSpecialCharacter rcSpecial hi def link rcNumber Number hi def link rcFloat Float hi def link rcOctalError rcError hi def link rcParenError rcError hi def link rcInParen rcError hi def link rcCommentError rcError hi def link rcInclude Include hi def link rcPreProc PreProc hi def link rcDefine Macro hi def link rcIncluded rcString hi def link rcError Error hi def link rcPreCondit PreCondit hi def link rcCommentString rcString hi def link rcComment2String rcString hi def link rcCommentSkip rcComment hi def link rcString String hi def link rcComment Comment hi def link rcSpecial SpecialChar hi def link rcTodo Todo hi def link rcAttribute rcCommonAttribute hi def link rcStdId rcStatement hi def link rcStatement Statement hi def rcLanguage term=reverse ctermbg=Red ctermfg=Yellow guibg=Red guifg=Yellow hi def rcMainObject term=underline ctermfg=Blue guifg=Blue hi def rcSubObject ctermfg=Green guifg=Green hi def rcCaptionParam term=underline ctermfg=DarkGreen guifg=Green hi def rcParam ctermfg=DarkGreen guifg=DarkGreen hi def rcStatement ctermfg=DarkGreen guifg=DarkGreen hi def rcCommonAttribute ctermfg=Brown guifg=Brown let b:current_syntax = "rc" if exists("b:current_syntax") finish endif syn match rcsEOFError ".\%$" containedin=ALL syn keyword rcsKeyword head branch access symbols locks strict syn keyword rcsKeyword comment expand date author state branches syn keyword rcsKeyword next desc log syn keyword rcsKeyword text nextgroup=rcsTextStr skipwhite skipempty syn match rcsNumber "\<[0-9.]\+\>" display if exists("rcs_folding") && has("folding") syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" fold contains=rcsSpecial syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" fold contained contains=rcsSpecial,rcsDiffLines else syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" contains=rcsSpecial syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" contained contains=rcsSpecial,rcsDiffLines endif syn match rcsSpecial "@@" contained syn match rcsDiffLines "[da]\d\+ \d\+$" contained syn sync clear if exists("rcs_folding") && has("folding") syn sync fromstart else syn sync match rcsSync grouphere rcsString "[0-9.]\+\(\s\|\n\)\+log\(\s\|\n\)\+@"me=e-1 syn sync match rcsSync grouphere rcsTextStr "@\(\s\|\n\)\+text\(\s\|\n\)\+@"me=e-1 endif hi def link rcsKeyword Keyword hi def link rcsNumber Identifier hi def link rcsString String hi def link rcsTextStr String hi def link rcsSpecial Special hi def link rcsDiffLines Special hi def link rcsEOFError Error let b:current_syntax = "rcs" if exists("b:current_syntax") finish endif syn match rcslogRevision "^revision.*$" syn match rcslogFile "^RCS file:.*" syn match rcslogDate "^date: .*$" hi def link rcslogFile Type hi def link rcslogRevision Constant hi def link rcslogDate Identifier let b:current_syntax = "rcslog" if exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=- syn match readlineKey contained \ '\S' \ nextgroup=readlineKeyTerminator syn match readlineBegin display '^' \ nextgroup=readlineComment, \ readlineConditional, \ readlineInclude, \ readlineKeyName, \ readlineKey, \ readlineKeySeq, \ readlineKeyword \ skipwhite syn region readlineComment contained display oneline \ start='#' \ end='$' \ contains=readlineTodo, \ @Spell syn keyword readlineTodo contained \ TODO \ FIXME \ XXX \ NOTE syn match readlineConditional contained \ '$if\>' \ nextgroup=readlineTest, \ readlineTestApp \ skipwhite syn keyword readlineTest contained \ mode \ nextgroup=readlineTestModeEq syn match readlineTestModeEq contained \ '=' \ nextgroup=readlineEditingMode syn keyword readlineTest contained \ term \ nextgroup=readlineTestTermEq syn match readlineTestTermEq contained \ '=' \ nextgroup=readlineTestTerm syn match readlineTestTerm contained \ '\S\+' syn match readlineTestApp contained \ '\S\+' syn match readlineConditional contained display \ '$\%(else\|endif\)\>' syn match readlineInclude contained display \ '$include\>' \ nextgroup=readlinePath syn match readlinePath contained display \ '.\+' syn case ignore syn match readlineKeyName contained display \ nextgroup=readlineKeySeparator, \ readlineKeyTerminator \ '\%(Control\|Del\|Esc\|Escape\|LFD\|Meta\|Newline\|Ret\|Return\|Rubout\|Space\|Spc\|Tab\)' syn case match syn match readlineKeySeparator contained \ '-' \ nextgroup=readlineKeyName, \ readlineKey syn match readlineKeyTerminator contained \ ':' \ nextgroup=readlineFunction \ skipwhite syn region readlineKeySeq contained display oneline \ start=+"+ \ skip=+\\\\\|\\"+ \ end=+"+ \ contains=readlineKeyEscape \ nextgroup=readlineKeyTerminator syn match readlineKeyEscape contained display \ +\\\([CM]-\|[e\\"'abdfnrtv]\|\o\{3}\|x\x\{2}\)+ syn keyword readlineKeyword contained \ set \ nextgroup=readlineVariable \ skipwhite syn keyword readlineVariable contained \ nextgroup=readlineBellStyle \ skipwhite \ bell-style syn keyword readlineVariable contained \ nextgroup=readlineBoolean \ skipwhite \ bind-tty-special-chars \ blink-matching-paren \ colored-completion-prefix \ colored-stats \ completion-ignore-case \ completion-map-case \ convert-meta \ disable-completion \ echo-control-characters \ enable-bracketed-paste \ enable-keypad \ enable-meta-key \ expand-tilde \ history-preserve-point \ horizontal-scroll-mode \ input-meta \ meta-flag \ mark-directories \ mark-modified-lines \ mark-symlinked-directories \ match-hidden-files \ menu-complete-display-prefix \ output-meta \ page-completions \ print-completions-horizontally \ revert-all-at-newline \ show-all-if-ambiguous \ show-all-if-unmodified \ show-mode-in-prompt \ skip-completed-text \ visible-stats syn keyword readlineVariable contained \ nextgroup=readlineString \ skipwhite \ comment-begin \ isearch-terminators \ vi-cmd-mode-string \ vi-ins-mode-string \ emacs-mode-string syn keyword readlineVariable contained \ nextgroup=readlineNumber \ skipwhite \ completion-display-width \ completion-prefix-display-length \ completion-query-items \ history-size \ keyseq-timeout syn keyword readlineVariable contained \ nextgroup=readlineEditingMode \ skipwhite \ editing-mode syn keyword readlineVariable contained \ nextgroup=readlineKeymap \ skipwhite \ keymap syn keyword readlineBellStyle contained \ audible \ visible \ none syn case ignore syn keyword readlineBoolean contained \ on \ off syn case match syn region readlineString contained display oneline \ matchgroup=readlineStringDelimiter \ start=+"+ \ skip=+\\\\\|\\"+ \ end=+"+ syn match readlineNumber contained display \ '[+-]\d\+\>' syn keyword readlineEditingMode contained \ emacs \ vi syn match readlineKeymap contained display \ 'emacs\%(-\%(standard\|meta\|ctlx\)\)\=\|vi\%(-\%(move\|command\|insert\)\)\=' syn keyword readlineFunction contained \ beginning-of-line \ end-of-line \ forward-char \ backward-char \ forward-word \ backward-word \ clear-screen \ redraw-current-line \ \ accept-line \ previous-history \ next-history \ beginning-of-history \ end-of-history \ reverse-search-history \ forward-search-history \ non-incremental-reverse-search-history \ non-incremental-forward-search-history \ history-search-forward \ history-search-backward \ yank-nth-arg \ yank-last-arg \ \ delete-char \ backward-delete-char \ forward-backward-delete-char \ quoted-insert \ tab-insert \ self-insert \ transpose-chars \ transpose-words \ upcase-word \ downcase-word \ capitalize-word \ overwrite-mode \ \ kill-line \ backward-kill-line \ unix-line-discard \ kill-whole-line \ kill-word \ backward-kill-word \ unix-word-rubout \ unix-filename-rubout \ delete-horizontal-space \ kill-region \ copy-region-as-kill \ copy-backward-word \ copy-forward-word \ yank \ yank-pop \ \ digit-argument \ universal-argument \ \ complete \ possible-completions \ insert-completions \ menu-complete \ menu-complete-backward \ delete-char-or-list \ \ start-kbd-macro \ end-kbd-macro \ call-last-kbd-macro \ print-last-kbd-macro \ \ re-read-init-file \ abort \ do-uppercase-version \ prefix-meta \ undo \ revert-line \ tilde-expand \ set-mark \ exchange-point-and-mark \ character-search \ character-search-backward \ skip-csi-sequence \ insert-comment \ dump-functions \ dump-variables \ dump-macros \ emacs-editing-mode \ vi-editing-mode \ \ vi-eof-maybe \ vi-movement-mode \ vi-undo \ vi-match \ vi-tilde-expand \ vi-complete \ vi-char-search \ vi-redo \ vi-search \ vi-arg-digit \ vi-append-eol \ vi-prev-word \ vi-change-to \ vi-delete-to \ vi-end-word \ vi-char-search \ vi-fetch-history \ vi-insert-beg \ vi-search-again \ vi-put \ vi-replace \ vi-subst \ vi-char-search \ vi-next-word \ vi-yank-to \ vi-first-print \ vi-yank-arg \ vi-goto-mark \ vi-append-mode \ vi-prev-word \ vi-change-to \ vi-delete-to \ vi-end-word \ vi-char-search \ vi-insert-mode \ vi-set-mark \ vi-search-again \ vi-put \ vi-change-char \ vi-subst \ vi-char-search \ vi-undo \ vi-next-word \ vi-delete \ vi-yank-to \ vi-column \ vi-change-case if exists("readline_has_bash") syn keyword readlineFunction contained \ shell-forward-word \ shell-backward-word \ shell-expand-line \ history-expand-line \ magic-space \ alias-expand-line \ history-and-alias-expand-line \ insert-last-argument \ operate-and-get-next \ forward-backward-delete-char \ shell-kill-word \ shell-backward-kill-word \ delete-char-or-list \ complete-filename \ possible-filename-completions \ complete-username \ possible-username-completions \ complete-variable \ possible-variable-completions \ complete-hostname \ possible-hostname-completions \ complete-command \ possible-command-completions \ dynamic-complete-history \ dabbrev-expand \ complete-into-braces \ glob-expand-word \ glob-list-expansions \ display-shell-version \ glob-complete-word \ edit-and-execute-command endif hi def link readlineKey readlineKeySeq hi def link readlineComment Comment hi def link readlineTodo Todo hi def link readlineConditional Conditional hi def link readlineTest Type hi def link readlineDelimiter Delimiter hi def link readlineTestModeEq readlineEq hi def link readlineTestTermEq readlineEq hi def link readlineTestTerm readlineString hi def link readlineTestAppEq readlineEq hi def link readlineTestApp readlineString hi def link readlineInclude Include hi def link readlinePath String hi def link readlineKeyName SpecialChar hi def link readlineKeySeparator readlineKeySeq hi def link readlineKeyTerminator readlineDelimiter hi def link readlineKeySeq String hi def link readlineKeyEscape SpecialChar hi def link readlineKeyword Keyword hi def link readlineVariable Identifier hi def link readlineBellStyle Constant hi def link readlineBoolean Boolean hi def link readlineString String hi def link readlineStringDelimiter readlineString hi def link readlineNumber Number hi def link readlineEditingMode Constant hi def link readlineKeymap Constant hi def link readlineFunction Function let b:current_syntax = 'readline' let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore setlocal isk=@,48-57,?,!,.,',+,-,*,&,\|,=,_,~ syn keyword rebolTodo contained TODO syn match rebolComment ";.*$" contains=rebolTodo syn match rebolWord "\a\k*" syn match rebolWordPath "[^[:space:]]/[^[:space]]"ms=s+1,me=e-1 syn keyword rebolBoolean true false on off yes no syn match rebolInteger "\<[+-]\=\d\+\('\d*\)*\>" syn match rebolDecimal "[+-]\=\(\d\+\('\d*\)*\)\=[,.]\d*\(e[+-]\=\d\+\)\=" syn match rebolDecimal "[+-]\=\d\+\('\d*\)*\(e[+-]\=\d\+\)\=" syn match rebolTime "[+-]\=\(\d\+\('\d*\)*\:\)\{1,2}\d\+\('\d*\)*\([.,]\d\+\)\=\([AP]M\)\=\>" syn match rebolTime "[+-]\=:\d\+\([.,]\d*\)\=\([AP]M\)\=\>" syn match rebolDate "\d\{1,2}\([/-]\)\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\1\(\d\{2}\)\{1,2}\>" syn match rebolDate "\d\{1,2}\([/-]\)\(January\|February\|March\|April\|May\|June\|July\|August\|September\|October\|November\|December\)\1\(\d\{2}\)\{1,2}\>" syn match rebolDate "\d\{1,2}\([/-]\)\d\{1,2}\1\(\d\{2}\)\{1,2}\>" syn match rebolDate "\d\{4}-\d\{1,2}-\d\{1,2}\>" syn match rebolDate "\d\{1,2}\.\d\{1,2}\.\d\{4}\>" syn match rebolMoney "\a*\$\d\+\('\d*\)*\([,.]\d\+\)\=" syn region rebolString oneline start=+"+ skip=+^"+ end=+"+ contains=rebolSpecialCharacter syn region rebolString start=+[^#]{+ end=+}+ skip=+{[^}]*}+ contains=rebolSpecialCharacter syn region rebolBinary start=+\d*#{+ end=+}+ contains=rebolComment syn match rebolEmail "\<\k\+@\(\k\+\.\)*\k\+\>" syn match rebolFile "%\(\k\+/\)*\k\+[/]\=" contains=rebolSpecialCharacter syn region rebolFile oneline start=+%"+ end=+"+ contains=rebolSpecialCharacter syn match rebolURL "http://\k\+\(\.\k\+\)*\(:\d\+\)\=\(/\(\k\+/\)*\(\k\+\)\=\)*" syn match rebolURL "file://\k\+\(\.\k\+\)*/\(\k\+/\)*\k\+" syn match rebolURL "ftp://\(\k\+:\k\+@\)\=\k\+\(\.\k\+\)*\(:\d\+\)\=/\(\k\+/\)*\k\+" syn match rebolURL "mailto:\k\+\(\.\k\+\)*@\k\+\(\.\k\+\)*" syn match rebolIssue "#\(\d\+-\)*\d\+" syn match rebolTuple "\(\d\+\.\)\{2,}" syn match rebolSpecialCharacter contained "\^[^[:space:][]" syn match rebolSpecialCharacter contained "%\d\+" syn match rebolMathOperator "\(\*\{1,2}\|+\|-\|/\{1,2}\)" syn keyword rebolMathFunction abs absolute add arccosine arcsine arctangent cosine syn keyword rebolMathFunction divide exp log-10 log-2 log-e max maximum min syn keyword rebolMathFunction minimum multiply negate power random remainder sine syn keyword rebolMathFunction square-root subtract tangent syn keyword rebolBinaryOperator complement and or xor ~ syn match rebolLogicOperator "[<>=]=\=" syn match rebolLogicOperator "<>" syn keyword rebolLogicOperator not syn keyword rebolLogicFunction all any syn keyword rebolLogicFunction head? tail? syn keyword rebolLogicFunction negative? positive? zero? even? odd? syn keyword rebolLogicFunction binary? block? char? date? decimal? email? empty? syn keyword rebolLogicFunction file? found? function? integer? issue? logic? money? syn keyword rebolLogicFunction native? none? object? paren? path? port? series? syn keyword rebolLogicFunction string? time? tuple? url? word? syn keyword rebolLogicFunction exists? input? same? value? syn keyword rebolType binary! block! char! date! decimal! email! file! syn keyword rebolType function! integer! issue! logic! money! native! syn keyword rebolType none! object! paren! path! port! string! time! syn keyword rebolType tuple! url! word! syn keyword rebolTypeFunction type? syn keyword rebolStatement break catch exit halt reduce return shield syn keyword rebolConditional if else syn keyword rebolRepeat for forall foreach forskip loop repeat while until do syn keyword rebolStatement change clear copy fifth find first format fourth free syn keyword rebolStatement func function head insert last match next parse past syn keyword rebolStatement pick remove second select skip sort tail third trim length? syn keyword rebolStatement alias bind use syn keyword rebolStatement import make make-object rebol info? syn keyword rebolStatement delete echo form format import input load mold prin syn keyword rebolStatement print probe read save secure send write syn keyword rebolOperator size? modified? syn keyword rebolStatement help probe trace syn keyword rebolStatement func function free syn keyword rebolConstant none hi def link rebolTodo Todo hi def link rebolStatement Statement hi def link rebolLabel Label hi def link rebolConditional Conditional hi def link rebolRepeat Repeat hi def link rebolOperator Operator hi def link rebolLogicOperator rebolOperator hi def link rebolLogicFunction rebolLogicOperator hi def link rebolMathOperator rebolOperator hi def link rebolMathFunction rebolMathOperator hi def link rebolBinaryOperator rebolOperator hi def link rebolBinaryFunction rebolBinaryOperator hi def link rebolType Type hi def link rebolTypeFunction rebolOperator hi def link rebolWord Identifier hi def link rebolWordPath rebolWord hi def link rebolFunction Function hi def link rebolCharacter Character hi def link rebolSpecialCharacter SpecialChar hi def link rebolString String hi def link rebolNumber Number hi def link rebolInteger rebolNumber hi def link rebolDecimal rebolNumber hi def link rebolTime rebolNumber hi def link rebolDate rebolNumber hi def link rebolMoney rebolNumber hi def link rebolBinary rebolNumber hi def link rebolEmail rebolString hi def link rebolFile rebolString hi def link rebolURL rebolString hi def link rebolIssue rebolNumber hi def link rebolTuple rebolNumber hi def link rebolFloat Float hi def link rebolBoolean Boolean hi def link rebolConstant Constant hi def link rebolComment Comment hi def link rebolError Error if exists("my_rebol_file") if file_readable(expand(my_rebol_file)) execute "source " . my_rebol_file endif endif let b:current_syntax = "rebol" if exists("b:current_syntax") finish endif syntax case ignore syntax match redifWrongLine /^.\+/ display highlight def link redifWrongLine redifError syntax match redifComment /^#.*/ containedin=ALL display syntax region redifRegionTemplatePaper start=/^Template-Type:\_s*ReDIF-Paper \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPaper,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold syntax region redifRegionTemplateArticle start=/^Template-Type:\_s*ReDIF-Article \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArticle,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold syntax region redifRegionTemplateChapter start=/^Template-Type:\_s*ReDIF-Chapter \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsChapter,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold syntax region redifRegionTemplateBook start=/^Template-Type:\_s*ReDIF-Book \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsBook,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold syntax region redifRegionTemplateSoftware start=/^Template-Type:\_s*ReDIF-Software \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSoftware,redifWrongLine,redifRegionClusterAuthor,redifRegionClusterFile fold syntax region redifRegionTemplateArchive start=/^Template-Type:\_s*ReDIF-Archive \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsArchive,redifWrongLine fold syntax region redifRegionTemplateSeries start=/^Template-Type:\_s*ReDIF-Series \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsSeries,redifWrongLine,redifRegionClusterProvider,redifRegionClusterPublisher,redifRegionClusterEditor fold syntax region redifRegionTemplateInstitution start=/^Template-Type:\_s*ReDIF-Institution \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsInstitution,redifWrongLine,redifRegionClusterPrimary,redifRegionClusterSecondary,redifRegionClusterTertiary,redifRegionClusterQuaternary fold syntax region redifRegionTemplatePerson start=/^Template-Type:\_s*ReDIF-Person \d\+\.\d\+/ end=/^Template-Type:/me=s-1 contains=redifContainerFieldsPerson,redifWrongLine,redifRegionClusterWorkplace fold syntax region redifContainerFieldsPaper start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldRevisionDate,redifFieldPublicationStatus,redifFieldNote,redifFieldLength,redifFieldSeries,redifFieldAvailability,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsArticle start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldLanguage,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationStatus,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldRestriction,redifFieldPrice,redifFieldNotification,redifFieldPublicationType,redifFieldJournal,redifFieldVolume,redifFieldYear,redifFieldIssue,redifFieldMonth,redifFieldPages,redifFieldNumber,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsChapter start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldContactEmail,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldBookTitle,redifFieldYear,redifFieldMonth,redifFieldPages,redifFieldChapter,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldInBook,redifFieldOrderURL,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsBook start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTitle,redifFieldHandleOfWork,redifFieldContactEmail,redifFieldYear,redifFieldMonth,redifFieldVolume,redifFieldEdition,redifFieldSeries,redifFieldISBN,redifFieldPublicationStatus,redifFieldNote,redifFieldAbstract,redifFieldClassificationJEL,redifFieldKeywords,redifFieldHasChapter,redifFieldPrice,redifFieldOrderURL,redifFieldNumber,redifFieldCreationDate,redifFieldPublicationDate,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsSoftware start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfWork,redifFieldTitle,redifFieldProgrammingLanguage,redifFieldAbstract,redifFieldNumber,redifFieldVersion,redifFieldClassificationJEL,redifFieldKeywords,redifFieldSize,redifFieldSeries,redifFieldCreationDate,redifFieldRevisionDate,redifFieldNote,redifFieldRequires,redifFieldArticleHandle,redifFieldBookHandle,redifFieldChapterHandle,redifFieldPaperHandle,redifFieldSoftwareHandle,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsArchive start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfArchive,redifFieldURL,redifFieldMaintainerEmail,redifFieldName,redifFieldMaintainerName,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldClassificationJEL,redifFieldHomepage,redifFieldDescription,redifFieldNotification,redifFieldRestriction,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsSeries start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldName,redifFieldHandleOfSeries,redifFieldMaintainerEmail,redifFieldType,redifFieldOrderEmail,redifFieldOrderHomepage,redifFieldOrderPostal,redifFieldPrice,redifFieldRestriction,redifFieldMaintainerPhone,redifFieldMaintainerFax,redifFieldMaintainerName,redifFieldDescription,redifFieldClassificationJEL,redifFieldKeywords,redifFieldNotification,redifFieldISSN,redifFieldFollowup,redifFieldPredecessor,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsInstitution start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfInstitution,redifFieldPrimaryDefunct,redifFieldSecondaryDefunct,redifFieldTertiaryDefunct,redifFieldTemplateType,redifWrongLine contained transparent fold syntax region redifContainerFieldsPerson start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldHandleOfPerson,redifFieldNameFull,redifFieldNameFirst,redifFieldNameLast,redifFieldNamePrefix,redifFieldNameMiddle,redifFieldNameSuffix,redifFieldNameASCII,redifFieldEmail,redifFieldHomepage,redifFieldFax,redifFieldPostal,redifFieldPhone,redifFieldWorkplaceOrganization,redifFieldAuthorPaper,redifFieldAuthorArticle,redifFieldAuthorSoftware,redifFieldAuthorBook,redifFieldAuthorChapter,redifFieldEditorBook,redifFieldEditorSeries,redifFieldClassificationJEL,redifFieldShortId,redifFieldLastLoginDate,redifFieldRegisteredDate,redifWrongLine contained transparent fold syntax region redifRegionClusterWorkplace start=/^Workplace-Name:/ skip=/^Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsWorkplace fold syntax region redifRegionClusterPrimary start=/^Primary-Name:/ skip=/^Primary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPrimary fold syntax region redifRegionClusterSecondary start=/^Secondary-Name:/ skip=/^Secondary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsSecondary fold syntax region redifRegionClusterTertiary start=/^Tertiary-Name:/ skip=/^Tertiary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsTertiary fold syntax region redifRegionClusterQuaternary start=/^Quaternary-Name:/ skip=/^Quaternary-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsQuaternary fold syntax region redifRegionClusterProvider start=/^Provider-Name:/ skip=/^Provider-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsProvider fold syntax region redifRegionClusterPublisher start=/^Publisher-Name:/ skip=/^Publisher-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsPublisher fold syntax region redifRegionClusterAuthor start=/^Author-Name:/ skip=/^Author-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterAuthorWorkplace,redifContainerFieldsAuthor fold syntax region redifRegionClusterEditor start=/^Editor-Name:/ skip=/^Editor-\%(Name\%(-First\|-Last\)\|Homepage\|Email\|Fax\|Postal\|Phone\|Person\|Workplace-Name\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifRegionClusterEditorWorkplace,redifContainerFieldsEditor fold syntax region redifRegionClusterFile start=/^File-URL:/ skip=/^File-\%(Format\|Function\|Size\|Restriction\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsFile fold syntax region redifContainerFieldsWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldWorkplaceName,redifFieldWorkplaceHomepage,redifFieldWorkplaceNameEnglish,redifFieldWorkplacePostal,redifFieldWorkplaceLocation,redifFieldWorkplaceEmail,redifFieldWorkplacePhone,redifFieldWorkplaceFax,redifFieldWorkplaceInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsPrimary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPrimaryName,redifFieldPrimaryHomepage,redifFieldPrimaryNameEnglish,redifFieldPrimaryPostal,redifFieldPrimaryLocation,redifFieldPrimaryEmail,redifFieldPrimaryPhone,redifFieldPrimaryFax,redifFieldPrimaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsSecondary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldSecondaryName,redifFieldSecondaryHomepage,redifFieldSecondaryNameEnglish,redifFieldSecondaryPostal,redifFieldSecondaryLocation,redifFieldSecondaryEmail,redifFieldSecondaryPhone,redifFieldSecondaryFax,redifFieldSecondaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsTertiary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldTertiaryName,redifFieldTertiaryHomepage,redifFieldTertiaryNameEnglish,redifFieldTertiaryPostal,redifFieldTertiaryLocation,redifFieldTertiaryEmail,redifFieldTertiaryPhone,redifFieldTertiaryFax,redifFieldTertiaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsQuaternary start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldQuaternaryName,redifFieldQuaternaryHomepage,redifFieldQuaternaryNameEnglish,redifFieldQuaternaryPostal,redifFieldQuaternaryLocation,redifFieldQuaternaryEmail,redifFieldQuaternaryPhone,redifFieldQuaternaryFax,redifFieldQuaternaryInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsProvider start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldProviderName,redifFieldProviderHomepage,redifFieldProviderNameEnglish,redifFieldProviderPostal,redifFieldProviderLocation,redifFieldProviderEmail,redifFieldProviderPhone,redifFieldProviderFax,redifFieldProviderInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsPublisher start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldPublisherName,redifFieldPublisherHomepage,redifFieldPublisherNameEnglish,redifFieldPublisherPostal,redifFieldPublisherLocation,redifFieldPublisherEmail,redifFieldPublisherPhone,redifFieldPublisherFax,redifFieldPublisherInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsAuthor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorName,redifFieldAuthorNameFirst,redifFieldAuthorNameLast,redifFieldAuthorHomepage,redifFieldAuthorEmail,redifFieldAuthorFax,redifFieldAuthorPostal,redifFieldAuthorPhone,redifFieldAuthorPerson,redifWrongLine contained transparent fold syntax region redifContainerFieldsEditor start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorName,redifFieldEditorNameFirst,redifFieldEditorNameLast,redifFieldEditorHomepage,redifFieldEditorEmail,redifFieldEditorFax,redifFieldEditorPostal,redifFieldEditorPhone,redifFieldEditorPerson,redifWrongLine contained transparent fold syntax region redifContainerFieldsFile start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldFileURL,redifFieldFileFormat,redifFieldFileFunction,redifFieldFileSize,redifFieldFileRestriction,redifWrongLine contained transparent fold syntax region redifRegionClusterAuthorWorkplace start=/^Author-Workplace-Name:/ skip=/^Author-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsAuthorWorkplace fold syntax region redifRegionClusterEditorWorkplace start=/^Editor-Workplace-Name:/ skip=/^Editor-Workplace-\%(Name-English\|Homepage\|Postal\|Location\|Email\|Phone\|Fax\|Institution\):/ end=/^\S\{-}:/me=s-1 contained contains=redifWrongLine,redifContainerFieldsEditorWorkplace fold syntax region redifContainerFieldsAuthorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldAuthorWorkplaceName,redifFieldAuthorWorkplaceHomepage,redifFieldAuthorWorkplaceNameEnglish,redifFieldAuthorWorkplacePostal,redifFieldAuthorWorkplaceLocation,redifFieldAuthorWorkplaceEmail,redifFieldAuthorWorkplacePhone,redifFieldAuthorWorkplaceFax,redifFieldAuthorWorkplaceInstitution,redifWrongLine contained transparent fold syntax region redifContainerFieldsEditorWorkplace start=/^\S\{-}:/ end=/^\S\{-}:/me=s-1 contains=redifFieldEditorWorkplaceName,redifFieldEditorWorkplaceHomepage,redifFieldEditorWorkplaceNameEnglish,redifFieldEditorWorkplacePostal,redifFieldEditorWorkplaceLocation,redifFieldEditorWorkplaceEmail,redifFieldEditorWorkplacePhone,redifFieldEditorWorkplaceFax,redifFieldEditorWorkplaceInstitution,redifWrongLine contained transparent fold syntax match redifFieldAbstract /^Abstract:/ skipwhite skipempty nextgroup=redifArgumentAbstract contained syntax match redifFieldArticleHandle /^Article-Handle:/ skipwhite skipempty nextgroup=redifArgumentArticleHandle contained syntax match redifFieldAuthorArticle /^Author-Article:/ skipwhite skipempty nextgroup=redifArgumentAuthorArticle contained syntax match redifFieldAuthorBook /^Author-Book:/ skipwhite skipempty nextgroup=redifArgumentAuthorBook contained syntax match redifFieldAuthorChapter /^Author-Chapter:/ skipwhite skipempty nextgroup=redifArgumentAuthorChapter contained syntax match redifFieldAuthorEmail /^Author-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorEmail contained syntax match redifFieldAuthorFax /^Author-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorFax contained syntax match redifFieldAuthorHomepage /^Author-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorHomepage contained syntax match redifFieldAuthorName /^Author-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorName contained syntax match redifFieldAuthorNameFirst /^Author-Name-First:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameFirst contained syntax match redifFieldAuthorNameLast /^Author-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentAuthorNameLast contained syntax match redifFieldAuthorPaper /^Author-Paper:/ skipwhite skipempty nextgroup=redifArgumentAuthorPaper contained syntax match redifFieldAuthorPerson /^Author-Person:/ skipwhite skipempty nextgroup=redifArgumentAuthorPerson contained syntax match redifFieldAuthorPhone /^Author-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorPhone contained syntax match redifFieldAuthorPostal /^Author-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorPostal contained syntax match redifFieldAuthorSoftware /^Author-Software:/ skipwhite skipempty nextgroup=redifArgumentAuthorSoftware contained syntax match redifFieldAuthorWorkplaceEmail /^Author-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceEmail contained syntax match redifFieldAuthorWorkplaceFax /^Author-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceFax contained syntax match redifFieldAuthorWorkplaceHomepage /^Author-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceHomepage contained syntax match redifFieldAuthorWorkplaceInstitution /^Author-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceInstitution contained syntax match redifFieldAuthorWorkplaceLocation /^Author-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceLocation contained syntax match redifFieldAuthorWorkplaceName /^Author-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceName contained syntax match redifFieldAuthorWorkplaceNameEnglish /^Author-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplaceNameEnglish contained syntax match redifFieldAuthorWorkplacePhone /^Author-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePhone contained syntax match redifFieldAuthorWorkplacePostal /^Author-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentAuthorWorkplacePostal contained syntax match redifFieldAvailability /^Availability:/ skipwhite skipempty nextgroup=redifArgumentAvailability contained syntax match redifFieldBookHandle /^Book-Handle:/ skipwhite skipempty nextgroup=redifArgumentBookHandle contained syntax match redifFieldBookTitle /^Book-Title:/ skipwhite skipempty nextgroup=redifArgumentBookTitle contained syntax match redifFieldChapterHandle /^Chapter-Handle:/ skipwhite skipempty nextgroup=redifArgumentChapterHandle contained syntax match redifFieldChapter /^Chapter:/ skipwhite skipempty nextgroup=redifArgumentChapter contained syntax match redifFieldClassificationJEL /^Classification-JEL:/ skipwhite skipempty nextgroup=redifArgumentClassificationJEL contained syntax match redifFieldContactEmail /^Contact-Email:/ skipwhite skipempty nextgroup=redifArgumentContactEmail contained syntax match redifFieldCreationDate /^Creation-Date:/ skipwhite skipempty nextgroup=redifArgumentCreationDate contained syntax match redifFieldDescription /^Description:/ skipwhite skipempty nextgroup=redifArgumentDescription contained syntax match redifFieldEdition /^Edition:/ skipwhite skipempty nextgroup=redifArgumentEdition contained syntax match redifFieldEditorBook /^Editor-Book:/ skipwhite skipempty nextgroup=redifArgumentEditorBook contained syntax match redifFieldEditorEmail /^Editor-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorEmail contained syntax match redifFieldEditorFax /^Editor-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorFax contained syntax match redifFieldEditorHomepage /^Editor-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorHomepage contained syntax match redifFieldEditorName /^Editor-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorName contained syntax match redifFieldEditorNameFirst /^Editor-Name-First:/ skipwhite skipempty nextgroup=redifArgumentEditorNameFirst contained syntax match redifFieldEditorNameLast /^Editor-Name-Last:/ skipwhite skipempty nextgroup=redifArgumentEditorNameLast contained syntax match redifFieldEditorPerson /^Editor-Person:/ skipwhite skipempty nextgroup=redifArgumentEditorPerson contained syntax match redifFieldEditorPhone /^Editor-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorPhone contained syntax match redifFieldEditorPostal /^Editor-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorPostal contained syntax match redifFieldEditorSeries /^Editor-Series:/ skipwhite skipempty nextgroup=redifArgumentEditorSeries contained syntax match redifFieldEditorWorkplaceEmail /^Editor-Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceEmail contained syntax match redifFieldEditorWorkplaceFax /^Editor-Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceFax contained syntax match redifFieldEditorWorkplaceHomepage /^Editor-Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceHomepage contained syntax match redifFieldEditorWorkplaceInstitution /^Editor-Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceInstitution contained syntax match redifFieldEditorWorkplaceLocation /^Editor-Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceLocation contained syntax match redifFieldEditorWorkplaceName /^Editor-Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceName contained syntax match redifFieldEditorWorkplaceNameEnglish /^Editor-Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplaceNameEnglish contained syntax match redifFieldEditorWorkplacePhone /^Editor-Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePhone contained syntax match redifFieldEditorWorkplacePostal /^Editor-Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentEditorWorkplacePostal contained syntax match redifFieldEmail /^Email:/ skipwhite skipempty nextgroup=redifArgumentEmail contained syntax match redifFieldFax /^Fax:/ skipwhite skipempty nextgroup=redifArgumentFax contained syntax match redifFieldFileFormat /^File-Format:/ skipwhite skipempty nextgroup=redifArgumentFileFormat contained syntax match redifFieldFileFunction /^File-Function:/ skipwhite skipempty nextgroup=redifArgumentFileFunction contained syntax match redifFieldFileRestriction /^File-Restriction:/ skipwhite skipempty nextgroup=redifArgumentFileRestriction contained syntax match redifFieldFileSize /^File-Size:/ skipwhite skipempty nextgroup=redifArgumentFileSize contained syntax match redifFieldFileURL /^File-URL:/ skipwhite skipempty nextgroup=redifArgumentFileURL contained syntax match redifFieldFollowup /^Followup:/ skipwhite skipempty nextgroup=redifArgumentFollowup contained syntax match redifFieldHandleOfArchive /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfArchive contained syntax match redifFieldHandleOfInstitution /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfInstitution contained syntax match redifFieldHandleOfPerson /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfPerson contained syntax match redifFieldHandleOfSeries /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfSeries contained syntax match redifFieldHandleOfWork /^Handle:/ skipwhite skipempty nextgroup=redifArgumentHandleOfWork contained syntax match redifFieldHasChapter /^HasChapter:/ skipwhite skipempty nextgroup=redifArgumentHasChapter contained syntax match redifFieldHomepage /^Homepage:/ skipwhite skipempty nextgroup=redifArgumentHomepage contained syntax match redifFieldInBook /^In-Book:/ skipwhite skipempty nextgroup=redifArgumentInBook contained syntax match redifFieldISBN /^ISBN:/ skipwhite skipempty nextgroup=redifArgumentISBN contained syntax match redifFieldISSN /^ISSN:/ skipwhite skipempty nextgroup=redifArgumentISSN contained syntax match redifFieldIssue /^Issue:/ skipwhite skipempty nextgroup=redifArgumentIssue contained syntax match redifFieldJournal /^Journal:/ skipwhite skipempty nextgroup=redifArgumentJournal contained syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained syntax match redifFieldKeywords /^Keywords:/ skipwhite skipempty nextgroup=redifArgumentKeywords contained syntax match redifFieldLanguage /^Language:/ skipwhite skipempty nextgroup=redifArgumentLanguage contained syntax match redifFieldLastLoginDate /^Last-Login-Date:/ skipwhite skipempty nextgroup=redifArgumentLastLoginDate contained syntax match redifFieldLength /^Length:/ skipwhite skipempty nextgroup=redifArgumentLength contained syntax match redifFieldMaintainerEmail /^Maintainer-Email:/ skipwhite skipempty nextgroup=redifArgumentMaintainerEmail contained syntax match redifFieldMaintainerFax /^Maintainer-Fax:/ skipwhite skipempty nextgroup=redifArgumentMaintainerFax contained syntax match redifFieldMaintainerName /^Maintainer-Name:/ skipwhite skipempty nextgroup=redifArgumentMaintainerName contained syntax match redifFieldMaintainerPhone /^Maintainer-Phone:/ skipwhite skipempty nextgroup=redifArgumentMaintainerPhone contained syntax match redifFieldMonth /^Month:/ skipwhite skipempty nextgroup=redifArgumentMonth contained syntax match redifFieldNameASCII /^Name-ASCII:/ skipwhite skipempty nextgroup=redifArgumentNameASCII contained syntax match redifFieldNameFirst /^Name-First:/ skipwhite skipempty nextgroup=redifArgumentNameFirst contained syntax match redifFieldNameFull /^Name-Full:/ skipwhite skipempty nextgroup=redifArgumentNameFull contained syntax match redifFieldNameLast /^Name-Last:/ skipwhite skipempty nextgroup=redifArgumentNameLast contained syntax match redifFieldNameMiddle /^Name-Middle:/ skipwhite skipempty nextgroup=redifArgumentNameMiddle contained syntax match redifFieldNamePrefix /^Name-Prefix:/ skipwhite skipempty nextgroup=redifArgumentNamePrefix contained syntax match redifFieldNameSuffix /^Name-Suffix:/ skipwhite skipempty nextgroup=redifArgumentNameSuffix contained syntax match redifFieldName /^Name:/ skipwhite skipempty nextgroup=redifArgumentName contained syntax match redifFieldNote /^Note:/ skipwhite skipempty nextgroup=redifArgumentNote contained syntax match redifFieldNotification /^Notification:/ skipwhite skipempty nextgroup=redifArgumentNotification contained syntax match redifFieldNumber /^Number:/ skipwhite skipempty nextgroup=redifArgumentNumber contained syntax match redifFieldOrderEmail /^Order-Email:/ skipwhite skipempty nextgroup=redifArgumentOrderEmail contained syntax match redifFieldOrderHomepage /^Order-Homepage:/ skipwhite skipempty nextgroup=redifArgumentOrderHomepage contained syntax match redifFieldOrderPostal /^Order-Postal:/ skipwhite skipempty nextgroup=redifArgumentOrderPostal contained syntax match redifFieldOrderURL /^Order-URL:/ skipwhite skipempty nextgroup=redifArgumentOrderURL contained syntax match redifFieldPages /^Pages:/ skipwhite skipempty nextgroup=redifArgumentPages contained syntax match redifFieldPaperHandle /^Paper-Handle:/ skipwhite skipempty nextgroup=redifArgumentPaperHandle contained syntax match redifFieldPhone /^Phone:/ skipwhite skipempty nextgroup=redifArgumentPhone contained syntax match redifFieldPostal /^Postal:/ skipwhite skipempty nextgroup=redifArgumentPostal contained syntax match redifFieldPredecessor /^Predecessor:/ skipwhite skipempty nextgroup=redifArgumentPredecessor contained syntax match redifFieldPrice /^Price:/ skipwhite skipempty nextgroup=redifArgumentPrice contained syntax match redifFieldPrimaryDefunct /^Primary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentPrimaryDefunct contained syntax match redifFieldPrimaryEmail /^Primary-Email:/ skipwhite skipempty nextgroup=redifArgumentPrimaryEmail contained syntax match redifFieldPrimaryFax /^Primary-Fax:/ skipwhite skipempty nextgroup=redifArgumentPrimaryFax contained syntax match redifFieldPrimaryHomepage /^Primary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentPrimaryHomepage contained syntax match redifFieldPrimaryInstitution /^Primary-Institution:/ skipwhite skipempty nextgroup=redifArgumentPrimaryInstitution contained syntax match redifFieldPrimaryLocation /^Primary-Location:/ skipwhite skipempty nextgroup=redifArgumentPrimaryLocation contained syntax match redifFieldPrimaryName /^Primary-Name:/ skipwhite skipempty nextgroup=redifArgumentPrimaryName contained syntax match redifFieldPrimaryNameEnglish /^Primary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentPrimaryNameEnglish contained syntax match redifFieldPrimaryPhone /^Primary-Phone:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPhone contained syntax match redifFieldPrimaryPostal /^Primary-Postal:/ skipwhite skipempty nextgroup=redifArgumentPrimaryPostal contained syntax match redifFieldProgrammingLanguage /^Programming-Language:/ skipwhite skipempty nextgroup=redifArgumentProgrammingLanguage contained syntax match redifFieldProviderEmail /^Provider-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained syntax match redifFieldProviderFax /^Provider-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained syntax match redifFieldProviderHomepage /^Provider-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained syntax match redifFieldProviderInstitution /^Provider-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained syntax match redifFieldProviderLocation /^Provider-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained syntax match redifFieldProviderName /^Provider-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained syntax match redifFieldProviderNameEnglish /^Provider-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained syntax match redifFieldProviderPhone /^Provider-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained syntax match redifFieldProviderPostal /^Provider-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained syntax match redifFieldPublicationDate /^Publication-Date:/ skipwhite skipempty nextgroup=redifArgumentPublicationDate contained syntax match redifFieldPublicationStatus /^Publication-Status:/ skipwhite skipempty nextgroup=redifArgumentPublicationStatus contained syntax match redifFieldPublicationType /^Publication-Type:/ skipwhite skipempty nextgroup=redifArgumentPublicationType contained syntax match redifFieldQuaternaryEmail /^Quaternary-Email:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryEmail contained syntax match redifFieldQuaternaryFax /^Quaternary-Fax:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryFax contained syntax match redifFieldQuaternaryHomepage /^Quaternary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryHomepage contained syntax match redifFieldQuaternaryInstitution /^Quaternary-Institution:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryInstitution contained syntax match redifFieldQuaternaryLocation /^Quaternary-Location:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryLocation contained syntax match redifFieldQuaternaryName /^Quaternary-Name:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryName contained syntax match redifFieldQuaternaryNameEnglish /^Quaternary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryNameEnglish contained syntax match redifFieldQuaternaryPhone /^Quaternary-Phone:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPhone contained syntax match redifFieldQuaternaryPostal /^Quaternary-Postal:/ skipwhite skipempty nextgroup=redifArgumentQuaternaryPostal contained syntax match redifFieldRegisteredDate /^Registered-Date:/ skipwhite skipempty nextgroup=redifArgumentRegisteredDate contained syntax match redifFieldRequires /^Requires:/ skipwhite skipempty nextgroup=redifArgumentRequires contained syntax match redifFieldRestriction /^Restriction:/ skipwhite skipempty nextgroup=redifArgumentRestriction contained syntax match redifFieldRevisionDate /^Revision-Date:/ skipwhite skipempty nextgroup=redifArgumentRevisionDate contained syntax match redifFieldSecondaryDefunct /^Secondary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentSecondaryDefunct contained syntax match redifFieldSecondaryEmail /^Secondary-Email:/ skipwhite skipempty nextgroup=redifArgumentSecondaryEmail contained syntax match redifFieldSecondaryFax /^Secondary-Fax:/ skipwhite skipempty nextgroup=redifArgumentSecondaryFax contained syntax match redifFieldSecondaryHomepage /^Secondary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentSecondaryHomepage contained syntax match redifFieldSecondaryInstitution /^Secondary-Institution:/ skipwhite skipempty nextgroup=redifArgumentSecondaryInstitution contained syntax match redifFieldSecondaryLocation /^Secondary-Location:/ skipwhite skipempty nextgroup=redifArgumentSecondaryLocation contained syntax match redifFieldSecondaryName /^Secondary-Name:/ skipwhite skipempty nextgroup=redifArgumentSecondaryName contained syntax match redifFieldSecondaryNameEnglish /^Secondary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentSecondaryNameEnglish contained syntax match redifFieldSecondaryPhone /^Secondary-Phone:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPhone contained syntax match redifFieldSecondaryPostal /^Secondary-Postal:/ skipwhite skipempty nextgroup=redifArgumentSecondaryPostal contained syntax match redifFieldSeries /^Series:/ skipwhite skipempty nextgroup=redifArgumentSeries contained syntax match redifFieldShortId /^Short-Id:/ skipwhite skipempty nextgroup=redifArgumentShortId contained syntax match redifFieldSize /^Size:/ skipwhite skipempty nextgroup=redifArgumentSize contained syntax match redifFieldSoftwareHandle /^Software-Handle:/ skipwhite skipempty nextgroup=redifArgumentSoftwareHandle contained syntax match redifFieldTemplateType /^Template-Type:/ skipwhite skipempty nextgroup=redifArgumentTemplateType contained syntax match redifFieldTertiaryDefunct /^Tertiary-Defunct:/ skipwhite skipempty nextgroup=redifArgumentTertiaryDefunct contained syntax match redifFieldTertiaryEmail /^Tertiary-Email:/ skipwhite skipempty nextgroup=redifArgumentTertiaryEmail contained syntax match redifFieldTertiaryFax /^Tertiary-Fax:/ skipwhite skipempty nextgroup=redifArgumentTertiaryFax contained syntax match redifFieldTertiaryHomepage /^Tertiary-Homepage:/ skipwhite skipempty nextgroup=redifArgumentTertiaryHomepage contained syntax match redifFieldTertiaryInstitution /^Tertiary-Institution:/ skipwhite skipempty nextgroup=redifArgumentTertiaryInstitution contained syntax match redifFieldTertiaryLocation /^Tertiary-Location:/ skipwhite skipempty nextgroup=redifArgumentTertiaryLocation contained syntax match redifFieldTertiaryName /^Tertiary-Name:/ skipwhite skipempty nextgroup=redifArgumentTertiaryName contained syntax match redifFieldTertiaryNameEnglish /^Tertiary-Name-English:/ skipwhite skipempty nextgroup=redifArgumentTertiaryNameEnglish contained syntax match redifFieldTertiaryPhone /^Tertiary-Phone:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPhone contained syntax match redifFieldTertiaryPostal /^Tertiary-Postal:/ skipwhite skipempty nextgroup=redifArgumentTertiaryPostal contained syntax match redifFieldTitle /^Title:/ skipwhite skipempty nextgroup=redifArgumentTitle contained syntax match redifFieldType /^Type:/ skipwhite skipempty nextgroup=redifArgumentType contained syntax match redifFieldURL /^URL:/ skipwhite skipempty nextgroup=redifArgumentURL contained syntax match redifFieldVersion /^Version:/ skipwhite skipempty nextgroup=redifArgumentVersion contained syntax match redifFieldVolume /^Volume:/ skipwhite skipempty nextgroup=redifArgumentVolume contained syntax match redifFieldWorkplaceEmail /^Workplace-Email:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceEmail contained syntax match redifFieldWorkplaceFax /^Workplace-Fax:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceFax contained syntax match redifFieldWorkplaceHomepage /^Workplace-Homepage:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceHomepage contained syntax match redifFieldWorkplaceInstitution /^Workplace-Institution:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceInstitution contained syntax match redifFieldWorkplaceLocation /^Workplace-Location:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceLocation contained syntax match redifFieldWorkplaceName /^Workplace-Name:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceName contained syntax match redifFieldWorkplaceNameEnglish /^Workplace-Name-English:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceNameEnglish contained syntax match redifFieldWorkplaceOrganization /^Workplace-Organization:/ skipwhite skipempty nextgroup=redifArgumentWorkplaceOrganization contained syntax match redifFieldWorkplacePhone /^Workplace-Phone:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePhone contained syntax match redifFieldWorkplacePostal /^Workplace-Postal:/ skipwhite skipempty nextgroup=redifArgumentWorkplacePostal contained syntax match redifFieldYear /^Year:/ skipwhite skipempty nextgroup=redifArgumentYear contained highlight def link redifFieldAbstract redifField highlight def link redifFieldArticleHandle redifField highlight def link redifFieldAuthorArticle redifField highlight def link redifFieldAuthorBook redifField highlight def link redifFieldAuthorChapter redifField highlight def link redifFieldAuthorEmail redifField highlight def link redifFieldAuthorFax redifField highlight def link redifFieldAuthorHomepage redifField highlight def link redifFieldAuthorName redifField highlight def link redifFieldAuthorNameFirst redifField highlight def link redifFieldAuthorNameLast redifField highlight def link redifFieldAuthorPaper redifField highlight def link redifFieldAuthorPerson redifField highlight def link redifFieldAuthorPhone redifField highlight def link redifFieldAuthorPostal redifField highlight def link redifFieldAuthorSoftware redifField highlight def link redifFieldAuthorWorkplaceEmail redifField highlight def link redifFieldAuthorWorkplaceFax redifField highlight def link redifFieldAuthorWorkplaceHomepage redifField highlight def link redifFieldAuthorWorkplaceInstitution redifField highlight def link redifFieldAuthorWorkplaceLocation redifField highlight def link redifFieldAuthorWorkplaceName redifField highlight def link redifFieldAuthorWorkplaceNameEnglish redifField highlight def link redifFieldAuthorWorkplacePhone redifField highlight def link redifFieldAuthorWorkplacePostal redifField highlight def link redifFieldAvailability redifField highlight def link redifFieldBookHandle redifField highlight def link redifFieldBookTitle redifField highlight def link redifFieldChapterHandle redifField highlight def link redifFieldChapter redifField highlight def link redifFieldClassificationJEL redifField highlight def link redifFieldContactEmail redifField highlight def link redifFieldCreationDate redifField highlight def link redifFieldDescription redifField highlight def link redifFieldEdition redifField highlight def link redifFieldEditorBook redifField highlight def link redifFieldEditorEmail redifField highlight def link redifFieldEditorFax redifField highlight def link redifFieldEditorHomepage redifField highlight def link redifFieldEditorName redifField highlight def link redifFieldEditorNameFirst redifField highlight def link redifFieldEditorNameLast redifField highlight def link redifFieldEditorPerson redifField highlight def link redifFieldEditorPhone redifField highlight def link redifFieldEditorPostal redifField highlight def link redifFieldEditorSeries redifField highlight def link redifFieldEditorWorkplaceEmail redifField highlight def link redifFieldEditorWorkplaceFax redifField highlight def link redifFieldEditorWorkplaceHomepage redifField highlight def link redifFieldEditorWorkplaceInstitution redifField highlight def link redifFieldEditorWorkplaceLocation redifField highlight def link redifFieldEditorWorkplaceName redifField highlight def link redifFieldEditorWorkplaceNameEnglish redifField highlight def link redifFieldEditorWorkplacePhone redifField highlight def link redifFieldEditorWorkplacePostal redifField highlight def link redifFieldEmail redifField highlight def link redifFieldFax redifField highlight def link redifFieldFileFormat redifField highlight def link redifFieldFileFunction redifField highlight def link redifFieldFileRestriction redifField highlight def link redifFieldFileSize redifField highlight def link redifFieldFileURL redifField highlight def link redifFieldFollowup redifField highlight def link redifFieldHandleOfArchive redifField highlight def link redifFieldHandleOfInstitution redifField highlight def link redifFieldHandleOfPerson redifField highlight def link redifFieldHandleOfSeries redifField highlight def link redifFieldHandleOfWork redifField highlight def link redifFieldHasChapter redifField highlight def link redifFieldHomepage redifField highlight def link redifFieldInBook redifField highlight def link redifFieldISBN redifField highlight def link redifFieldISSN redifField highlight def link redifFieldIssue redifField highlight def link redifFieldJournal redifField highlight def link redifFieldKeywords redifField highlight def link redifFieldKeywords redifField highlight def link redifFieldLanguage redifField highlight def link redifFieldLastLoginDate redifField highlight def link redifFieldLength redifField highlight def link redifFieldMaintainerEmail redifField highlight def link redifFieldMaintainerFax redifField highlight def link redifFieldMaintainerName redifField highlight def link redifFieldMaintainerPhone redifField highlight def link redifFieldMonth redifField highlight def link redifFieldNameASCII redifField highlight def link redifFieldNameFirst redifField highlight def link redifFieldNameFull redifField highlight def link redifFieldNameLast redifField highlight def link redifFieldNameMiddle redifField highlight def link redifFieldNamePrefix redifField highlight def link redifFieldNameSuffix redifField highlight def link redifFieldName redifField highlight def link redifFieldNote redifField highlight def link redifFieldNotification redifField highlight def link redifFieldNumber redifField highlight def link redifFieldOrderEmail redifField highlight def link redifFieldOrderHomepage redifField highlight def link redifFieldOrderPostal redifField highlight def link redifFieldOrderURL redifField highlight def link redifFieldPages redifField highlight def link redifFieldPaperHandle redifField highlight def link redifFieldPhone redifField highlight def link redifFieldPostal redifField highlight def link redifFieldPredecessor redifField highlight def link redifFieldPrice redifField highlight def link redifFieldPrimaryDefunct redifField highlight def link redifFieldPrimaryEmail redifField highlight def link redifFieldPrimaryFax redifField highlight def link redifFieldPrimaryHomepage redifField highlight def link redifFieldPrimaryInstitution redifField highlight def link redifFieldPrimaryLocation redifField highlight def link redifFieldPrimaryName redifField highlight def link redifFieldPrimaryNameEnglish redifField highlight def link redifFieldPrimaryPhone redifField highlight def link redifFieldPrimaryPostal redifField highlight def link redifFieldProgrammingLanguage redifField highlight def link redifFieldProviderEmail redifField highlight def link redifFieldProviderFax redifField highlight def link redifFieldProviderHomepage redifField highlight def link redifFieldProviderInstitution redifField highlight def link redifFieldProviderLocation redifField highlight def link redifFieldProviderName redifField highlight def link redifFieldProviderNameEnglish redifField highlight def link redifFieldProviderPhone redifField highlight def link redifFieldProviderPostal redifField highlight def link redifFieldPublicationDate redifField highlight def link redifFieldPublicationStatus redifField highlight def link redifFieldPublicationType redifField highlight def link redifFieldQuaternaryEmail redifField highlight def link redifFieldQuaternaryFax redifField highlight def link redifFieldQuaternaryHomepage redifField highlight def link redifFieldQuaternaryInstitution redifField highlight def link redifFieldQuaternaryLocation redifField highlight def link redifFieldQuaternaryName redifField highlight def link redifFieldQuaternaryNameEnglish redifField highlight def link redifFieldQuaternaryPhone redifField highlight def link redifFieldQuaternaryPostal redifField highlight def link redifFieldRegisteredDate redifField highlight def link redifFieldRequires redifField highlight def link redifFieldRestriction redifField highlight def link redifFieldRevisionDate redifField highlight def link redifFieldSecondaryDefunct redifField highlight def link redifFieldSecondaryEmail redifField highlight def link redifFieldSecondaryFax redifField highlight def link redifFieldSecondaryHomepage redifField highlight def link redifFieldSecondaryInstitution redifField highlight def link redifFieldSecondaryLocation redifField highlight def link redifFieldSecondaryName redifField highlight def link redifFieldSecondaryNameEnglish redifField highlight def link redifFieldSecondaryPhone redifField highlight def link redifFieldSecondaryPostal redifField highlight def link redifFieldSeries redifField highlight def link redifFieldShortId redifField highlight def link redifFieldSize redifField highlight def link redifFieldSoftwareHandle redifField highlight def link redifFieldTemplateType redifField highlight def link redifFieldTertiaryDefunct redifField highlight def link redifFieldTertiaryEmail redifField highlight def link redifFieldTertiaryFax redifField highlight def link redifFieldTertiaryHomepage redifField highlight def link redifFieldTertiaryInstitution redifField highlight def link redifFieldTertiaryLocation redifField highlight def link redifFieldTertiaryName redifField highlight def link redifFieldTertiaryNameEnglish redifField highlight def link redifFieldTertiaryPhone redifField highlight def link redifFieldTertiaryPostal redifField highlight def link redifFieldTitle redifField highlight def link redifFieldTitle redifField highlight def link redifFieldType redifField highlight def link redifFieldURL redifField highlight def link redifFieldVersion redifField highlight def link redifFieldVolume redifField highlight def link redifFieldWorkplaceEmail redifField highlight def link redifFieldWorkplaceFax redifField highlight def link redifFieldWorkplaceHomepage redifField highlight def link redifFieldWorkplaceInstitution redifField highlight def link redifFieldWorkplaceLocation redifField highlight def link redifFieldWorkplaceName redifField highlight def link redifFieldWorkplaceNameEnglish redifField highlight def link redifFieldWorkplaceOrganization redifField highlight def link redifFieldWorkplacePhone redifField highlight def link redifFieldWorkplacePostal redifField highlight def link redifFieldYear redifField syntax match redifFieldPublisherEmail /^Publisher-Email:/ skipwhite skipempty nextgroup=redifArgumentProviderEmail contained syntax match redifFieldPublisherFax /^Publisher-Fax:/ skipwhite skipempty nextgroup=redifArgumentProviderFax contained syntax match redifFieldPublisherHomepage /^Publisher-Homepage:/ skipwhite skipempty nextgroup=redifArgumentProviderHomepage contained syntax match redifFieldPublisherInstitution /^Publisher-Institution:/ skipwhite skipempty nextgroup=redifArgumentProviderInstitution contained syntax match redifFieldPublisherLocation /^Publisher-Location:/ skipwhite skipempty nextgroup=redifArgumentProviderLocation contained syntax match redifFieldPublisherName /^Publisher-Name:/ skipwhite skipempty nextgroup=redifArgumentProviderName contained syntax match redifFieldPublisherNameEnglish /^Publisher-Name-English:/ skipwhite skipempty nextgroup=redifArgumentProviderNameEnglish contained syntax match redifFieldPublisherPhone /^Publisher-Phone:/ skipwhite skipempty nextgroup=redifArgumentProviderPhone contained syntax match redifFieldPublisherPostal /^Publisher-Postal:/ skipwhite skipempty nextgroup=redifArgumentProviderPostal contained highlight def link redifFieldPublisherEmail redifFieldDeprecated highlight def link redifFieldPublisherFax redifFieldDeprecated highlight def link redifFieldPublisherHomepage redifFieldDeprecated highlight def link redifFieldPublisherInstitution redifFieldDeprecated highlight def link redifFieldPublisherLocation redifFieldDeprecated highlight def link redifFieldPublisherName redifFieldDeprecated highlight def link redifFieldPublisherNameEnglish redifFieldDeprecated highlight def link redifFieldPublisherPhone redifFieldDeprecated highlight def link redifFieldPublisherPostal redifFieldDeprecated syntax region redifArgumentAuthorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentFileFunction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentIssue start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentJournal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentOrderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrice start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentRequires start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentVersion start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplacePostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorPostal start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentAuthorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorPerson start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceLocation start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentEditorWorkplacePhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentFileURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentMaintainerFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentMaintainerName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentMaintainerPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameFirst start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameFull start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameLast start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameMiddle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNamePrefix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNameSuffix start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentNumber start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentOrderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentOrderURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentPrimaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentProviderPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentQuaternaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSecondaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentSeries start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentShortId start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentTertiaryPhone start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentURL start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceFax start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceHomepage start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceName start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceNameEnglish start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax region redifArgumentWorkplaceOrganization start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contained syntax match redifArgumentTemplateType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectTemplateType contained display syntax match redifCorrectTemplateType /ReDIF-\%(Paper\|Article\|Chapter\|Book\|Software\|Archive\|Series\|Institution\|Person\)/ nextgroup=redifTemplateVersionNumberContainer contained display syntax match redifTemplateVersionNumberContainer /.\+/ contains=redifTemplateVersionNumber contained display syntax match redifTemplateVersionNumber / \d\+\.\d\+/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentTemplateType redifError highlight def link redifCorrectTemplateType Constant highlight def link redifTemplateVersionNumber Number highlight def link redifTemplateVersionNumberContainer redifError syntax match redifArgumentHandleOfWork /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorArticle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorPaper /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentAuthorSoftware /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentEditorBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentEditorSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentInBook /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentHasChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentArticleHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentBookHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentChapterHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentPaperHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifArgumentSoftwareHandle /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfWork contained display syntax match redifCorrectHandleOfWork /RePEc:\a\a\a:\%(_\@!\w\)\{6}:\S\+/ contains=redifForbiddenCharactersInHandle,redifBestPracticeInHandle nextgroup=redifWrongLineEnding contained display syntax match redifForbiddenCharactersInHandle /[\/*?"<>|]/ contained display syntax match redifBestPracticeInHandle /\<\%([vi]:[1-9]\d*\|y:[1-9]\d\{3}\|p:[1-9]\d*-[1-9]\d*\|i:\%(jan\|feb\|mar\|apr\|may\|jun\|jul\|aug\|sep\|oct\|nov\|dec\|spr\|sum\|aut\|win\|spe\|Q[1-4]\|\d\d-\d\d\)\|Q:[1-4]\)\>/ contained display highlight def link redifArgumentHandleOfWork redifError highlight def link redifArgumentAuthorArticle redifError highlight def link redifArgumentAuthorBook redifError highlight def link redifArgumentAuthorChapter redifError highlight def link redifArgumentAuthorPaper redifError highlight def link redifArgumentAuthorSoftware redifError highlight def link redifArgumentEditorBook redifError highlight def link redifArgumentEditorSeries redifError highlight def link redifArgumentInBook redifError highlight def link redifArgumentHasChapter redifError highlight def link redifArgumentArticleHandle redifError highlight def link redifArgumentBookHandle redifError highlight def link redifArgumentChapterHandle redifError highlight def link redifArgumentPaperHandle redifError highlight def link redifArgumentSoftwareHandle redifError highlight def link redifForbiddenCharactersInHandle redifError highlight def link redifBestPracticeInHandle redifSpecial syntax match redifArgumentHandleOfSeries /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display syntax match redifArgumentFollowup /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display syntax match redifArgumentPredecessor /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfSeries contained display syntax match redifCorrectHandleOfSeries /RePEc:\a\a\a:\%(_\@!\w\)\{6}/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfSeries redifError highlight def link redifArgumentFollowup redifError highlight def link redifArgumentPredecessor redifError syntax match redifArgumentHandleOfArchive /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfArchive contained display syntax match redifCorrectHandleOfArchive /RePEc:\a\a\a/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfArchive redifError syntax match redifArgumentHandleOfPerson /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfPerson contained display syntax match redifCorrectHandleOfPerson /\%(\%(:\@!\S\)\{-}:\)\{2}[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\):\S\+/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfPerson redifError syntax match redifArgumentAuthorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentEditorWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentPrimaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentProviderInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentPublisherInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentQuaternaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentSecondaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentTertiaryInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentWorkplaceInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentHandleOfInstitution /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentPrimaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentSecondaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifArgumentTertiaryDefunct /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectHandleOfInstitution contained display syntax match redifCorrectHandleOfInstitution /RePEc:\a\a\a:\a\{5}\(ea\|af\|ax\|al\|dz\|as\|ad\|ao\|ai\|aq\|ag\|ar\|am\|aw\|au\|at\|az\|bs\|bh\|bd\|bb\|by\|be\|bz\|bj\|bm\|bt\|bo\|bq\|ba\|bw\|bv\|br\|io\|bn\|bg\|bf\|bi\|kh\|cm\|ca\|cv\|ky\|cf\|td\|cl\|cn\|cx\|cc\|co\|km\|cg\|cd\|ck\|cr\|ci\|hr\|cu\|cw\|cy\|cz\|dk\|dj\|dm\|do\|ec\|eg\|sv\|gq\|er\|ee\|et\|fk\|fo\|fj\|fi\|fr\|gf\|pf\|tf\|ga\|gm\|ge\|de\|gh\|gi\|gr\|gl\|gd\|gp\|gu\|gt\|gg\|gn\|gw\|gy\|ht\|hm\|va\|hn\|hk\|hu\|is\|in\|id\|ir\|iq\|ie\|im\|il\|it\|jm\|jp\|je\|jo\|kz\|ke\|ki\|kp\|kr\|kw\|kg\|la\|lv\|lb\|ls\|lr\|ly\|li\|lt\|lu\|mo\|mk\|mg\|mw\|my\|mv\|ml\|mt\|mh\|mq\|mr\|mu\|yt\|mx\|fm\|md\|mc\|mn\|me\|ms\|ma\|mz\|mm\|na\|nr\|np\|nl\|nc\|nz\|ni\|ne\|ng\|nu\|nf\|mp\|no\|om\|pk\|pw\|ps\|pa\|pg\|py\|pe\|ph\|pn\|pl\|pt\|pr\|qa\|re\|ro\|ru\|rw\|bl\|sh\|kn\|lc\|mf\|pm\|vc\|ws\|sm\|st\|sa\|sn\|rs\|sc\|sl\|sg\|sx\|sk\|si\|sb\|so\|za\|gs\|ss\|es\|lk\|sd\|sr\|sj\|sz\|se\|ch\|sy\|tw\|tj\|tz\|th\|tl\|tg\|tk\|to\|tt\|tn\|tr\|tm\|tc\|tv\|ug\|ua\|ae\|gb\|us\|um\|uy\|uz\|vu\|ve\|vn\|vg\|vi\|wf\|eh\|ye\|zm\|zw\)/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentHandleOfInstitution redifError highlight def link redifArgumentPrimaryDefunct redifError highlight def link redifArgumentSecondaryDefunct redifError highlight def link redifArgumentTertiaryDefunct redifError syntax match redifArgumentAuthorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentAuthorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentContactEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentEditorEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentEditorWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentMaintainerEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentOrderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentPrimaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentProviderEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentPublisherEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentQuaternaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentSecondaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentTertiaryEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifArgumentWorkplaceEmail /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectEmail contained display syntax match redifCorrectEmail /\%(@\@!\S\)\+@\%(@\@!\S\)\+/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentAuthorEmail redifError highlight def link redifArgumentAuthorWorkplaceEmail redifError highlight def link redifArgumentContactEmail redifError highlight def link redifArgumentEditorEmail redifError highlight def link redifArgumentEditorWorkplaceEmail redifError highlight def link redifArgumentEmail redifError highlight def link redifArgumentMaintainerEmail redifError highlight def link redifArgumentOrderEmail redifError highlight def link redifArgumentPrimaryEmail redifError highlight def link redifArgumentProviderEmail redifError highlight def link redifArgumentPublisherEmail redifError highlight def link redifArgumentQuaternaryEmail redifError highlight def link redifArgumentSecondaryEmail redifError highlight def link redifArgumentTertiaryEmail redifError highlight def link redifArgumentWorkplaceEmail redifError syntax match redifArgumentLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectLanguage contained display syntax match redifCorrectLanguage /\<\(aa\|ab\|af\|ak\|als\|am\|an\|ang\|ar\|arc\|as\|ast\|av\|ay\|az\|ba\|bar\|bat-smg\|bcl\|be\|be-x-old\|bg\|bh\|bi\|bm\|bn\|bo\|bpy\|br\|bs\|bug\|bxr\|ca\|ce\|ceb\|ch\|cho\|chr\|chy\|co\|cr\|cs\|csb\|cu\|cv\|cy\|da\|de\|diq\|dsb\|dv\|dz\|ee\|el\|en\|eo\|es\|et\|eu\|ext\|fa\|ff\|fi\|fiu-vro\|fj\|fo\|fr\|frp\|fur\|fy\|ga\|gd\|gil\|gl\|gn\|got\|gu\|gv\|ha\|haw\|he\|hi\|ho\|hr\|ht\|hu\|hy\|hz\|ia\|id\|ie\|ig\|ii\|ik\|ilo\|io\|is\|it\|iu\|ja\|jbo\|jv\|ka\|kg\|ki\|kj\|kk\|kl\|km\|kn\|khw\|ko\|kr\|ks\|ksh\|ku\|kv\|kw\|ky\|la\|lad\|lan\|lb\|lg\|li\|lij\|lmo\|ln\|lo\|lt\|lv\|map-bms\|mg\|mh\|mi\|mk\|ml\|mn\|mo\|mr\|ms\|mt\|mus\|my\|na\|nah\|nap\|nd\|nds\|nds-nl\|ne\|new\|ng\|nl\|nn\|no\|nr\|nso\|nrm\|nv\|ny\|oc\|oj\|om\|or\|os\|pa\|pag\|pam\|pap\|pdc\|pi\|pih\|pl\|pms\|ps\|pt\|qu\|rm\|rmy\|rn\|ro\|roa-rup\|ru\|rw\|sa\|sc\|scn\|sco\|sd\|se\|sg\|sh\|si\|simple\|sk\|sl\|sm\|sn\|so\|sq\|sr\|ss\|st\|su\|sv\|sw\|ta\|te\|tet\|tg\|th\|ti\|tk\|tl\|tlh\|tn\|to\|tpi\|tr\|ts\|tt\|tum\|tw\|ty\|udm\|ug\|uk\|ur\|uz\|ve\|vi\|vec\|vls\|vo\|wa\|war\|wo\|xal\|xh\|yi\|yo\|za\|zh\|zh-min-nan\|zh-yue\|zu\)\>/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentLanguage redifError highlight def link redifCorrectLanguage redifSpecial syntax region redifArgumentLength start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodLength contained syntax match redifGoodLength /1 page\|[1-9]\d*\%( pages\)\=/ contained display highlight def link redifGoodLength redifSpecial syntax match redifArgumentPublicationType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPublicationType contained display syntax match redifCorrectPublicationType /\<\(journal article\|book\|book chapter\|working paper\|conference paper\|report\|other\)\>/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentPublicationType redifError highlight def link redifCorrectPublicationType redifSpecial syntax region redifArgumentPublicationStatus start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifSpecialPublicationStatus contained syntax match redifSpecialPublicationStatus /published\|forthcoming/ nextgroup=redifCorrectPublicationStatus contained display syntax region redifCorrectPublicationStatus start=/./ end=/^\S\{-}:/me=s-1 contained highlight def link redifArgumentPublicationStatus redifError highlight def link redifSpecialPublicationStatus redifSpecial syntax match redifArgumentMonth /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodMonth contained display syntax match redifGoodMonth /\<\(Jan\%(uary\)\=\|Feb\%(ruary\)\=\|Mar\%(ch\)\=\|Apr\%(il\)\=\|May\|June\=\|July\=\|Aug\%(ust\)\=\|Sep\%(tember\)\=\|Oct\%(ober\)\=\|Nov\%(ember\)\=\|Dec\%(ember\)\=\)\>/ contained display highlight def link redifGoodMonth redifSpecial syntax match redifArgumentVolume /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display syntax match redifArgumentChapter /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectInteger contained display syntax match redifCorrectInteger /[1-9]\d*/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentVolume redifError highlight def link redifArgumentChapter redifError syntax match redifArgumentYear /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectYear contained display syntax match redifCorrectYear /[1-9]\d\{3}/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentYear redifError syntax match redifArgumentEdition /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodEdition contained display syntax match redifGoodEdition /1st\|2nd\|3rd\|[4-9]th\|[1-9]\d*\%(1st\|2nd\|3rd\|[4-9]th\)\|[1-9]\d*/ contained display highlight def link redifGoodEdition redifSpecial syntax match redifArgumentISBN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISBN contained display syntax match redifGoodISBN /\d[0-9-]\{8,15}\d/ contained display highlight def link redifGoodISBN redifSpecial syntax match redifArgumentISSN /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodISSN contained display syntax match redifGoodISSN /\d\{4}-\d\{3}[0-9X]/ contained display highlight def link redifGoodISSN redifSpecial syntax region redifArgumentFileSize start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=redifGoodSize contained syntax match redifGoodSize /kb\|bytes/ contained display highlight def link redifGoodSize redifSpecial syntax match redifArgumentType /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectType contained display syntax match redifCorrectType /ReDIF-Paper\|ReDIF-Software\|ReDIF-Article\|ReDIF-Chapter\|ReDIF-Book/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentType redifError highlight def link redifCorrectType redifSpecial syntax match redifArgumentCreationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentLastLoginDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentPublicationDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentRegisteredDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifArgumentRevisionDate /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectDate contained display syntax match redifCorrectDate /[1-9]\d\{3}\%(-02\%(-[12]\d\|-0[1-9]\)\=\|-\%(0[469]\|11\)\%(-30\|-[12]\d\|-0[1-9]\)\=\|-\%(0[13578]\|1[02]\)\%(-3[01]\|-[12]\d\|-0[1-9]\)\=\)\=/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentCreationDate redifError highlight def link redifArgumentLastLoginDate redifError highlight def link redifArgumentPublicationDate redifError highlight def link redifArgumentRegisteredDate redifError highlight def link redifArgumentRevisionDate redifError syntax match redifArgumentClassificationJEL /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectJEL contained display syntax match redifCorrectJEL /\<\%(\u\d\{,2}[,; \t]\s*\)*\u\d\{,2}/ contains=redifSpecialJEL nextgroup=redifWrongLineEnding contained display syntax match redifSpecialJEL /\<\u\d\{,2}/ contained display highlight def link redifArgumentClassificationJEL redifError highlight def link redifSpecialJEL redifSpecial syntax match redifArgumentPages /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectPages contained display syntax match redifCorrectPages /[1-9]\d*-[1-9]\d*/ nextgroup=redifWrongLineEnding contained display highlight def link redifArgumentPages redifError syntax match redifArgumentNameASCII /\%(^\S\{-}:\)\@!\S.*/ contains=redifCorrectNameASCII contained display syntax match redifCorrectNameASCII /[ -~]/ contained display highlight def link redifArgumentNameASCII redifError syntax match redifArgumentProgrammingLanguage /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodProgrammingLanguage contained display syntax match redifGoodProgrammingLanguage /\/ nextgroup=redifWrongLineEnding contained display highlight def link redifGoodProgrammingLanguage redifSpecial syntax match redifArgumentFileFormat /\%(^\S\{-}:\)\@!\S.*/ contains=redifGoodFormat contained display syntax match redifGoodFormat "\a\+/[[:alpha:]+-]\+" nextgroup=redifWrongLineEnding contains=redifSpecialFormat contained display syntax match redifSpecialFormat "application/atom+xml\|application/ecmascript\|application/EDI-X12\|application/EDIFACT\|application/json\|application/javascript\|application/octet-stream\|application/ogg\|application/pdf\|application/postscript\|application/rdf+xml\|application/rss+xml\|application/soap+xml\|application/font-woff\|application/xhtml+xml\|application/xml\|application/xml-dtd\|application/xop+xml\|application/zip\|application/gzip\|audio/basic\|audio/L24\|audio/mp4\|audio/mpeg\|audio/ogg\|audio/vorbis\|audio/vnd.rn-realaudio\|audio/vnd.wave\|audio/webm\|image/gif\|image/jpeg\|image/pjpeg\|image/png\|image/svg+xml\|image/tiff\|image/vnd.microsoft.icon\|message/http\|message/imdn+xml\|message/partial\|message/rfc822\|model/example\|model/iges\|model/mesh\|model/vrml\|model/x3d+binary\|model/x3d+vrml\|model/x3d+xml\|multipart/mixed\|multipart/alternative\|multipart/related\|multipart/form-data\|multipart/signed\|multipart/encrypted\|text/cmd\|text/css\|text/csv\|text/html\|text/javascript\|text/plain\|text/vcard\|text/xml\|video/mpeg\|video/mp4\|video/ogg\|video/quicktime\|video/webm\|video/x-matroska\|video/x-ms-wmv\|video/x-flv" contained display highlight def link redifSpecialFormat redifSpecial highlight def link redifArgumentFileFormat redifError syntax match redifArgumentKeywords /\%(^\S\{-}:\)\@!\S.*/ contains=@Spell,redifKeywordsSemicolon contained syntax match redifKeywordsSemicolon /;/ contained highlight def link redifKeywordsSemicolon redifSpecial syntax region redifArgumentAbstract start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentAvailability start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentBookTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentDescription start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentFileRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentNote start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentNotification start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentRestriction start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax region redifArgumentTitle start=/\%(^\S\{-}:\)\@!\S/ end=/^\S\{-}:/me=s-1 contains=@Spell contained syntax match redifWrongLineEnding /.\+/ contained display highlight def link redifWrongLineEnding redifError highlight def link redifComment Comment highlight def link redifError Error highlight def link redifField Identifier highlight def link redifFieldDeprecated Identifier highlight def link redifSpecial Special highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guisp=DarkGrey syntax sync fromstart syntax sync linebreaks=2 set foldmethod=syntax let b:current_syntax="redif" if exists("b:current_syntax") finish endif syn case ignore syn match registryHead "^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$" syn match registryComment "^;.*$" syn keyword registryHKEY HKEY_LOCAL_MACHINE HKEY_CLASSES_ROOT HKEY_CURRENT_USER syn keyword registryHKEY HKEY_USERS HKEY_CURRENT_CONFIG HKEY_DYN_DATA syn keyword registryHKEY HKLM HKCR HKCU HKU HKCC HKDD syn match registryGUID "{[0-9A-Fa-f]\{8}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{4}\-[0-9A-Fa-f]\{12}}" contains=registrySpecial syn match registrySpecial "\\" syn match registrySpecial "\\\\" syn match registrySpecial "\\\"" syn match registrySpecial "\." syn match registrySpecial "," syn match registrySpecial "\/" syn match registrySpecial ":" syn match registrySpecial "-" syn match registryString "\".*\"" contains=registryGUID,registrySpecial syn region registryPath start="\[" end="\]" contains=registryHKEY,registryGUID,registrySpecial syn region registryRemove start="\[\-" end="\]" contains=registryHKEY,registryGUID,registrySpecial syn match registrySubKey "^\".*\"=" syn match registrySubKey "^@=" syn match registryHex "hex\(([0-9]\{0,2})\)\=:\([0-9a-fA-F]\{2},\)*\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial syn match registryHex "^\s*\([0-9a-fA-F]\{2},\)\{0,999}\([0-9a-fA-F]\{2}\|\\\)$" contains=registrySpecial syn match registryDword "dword:[0-9a-fA-F]\{8}$" contains=registrySpecial hi def link registryComment Comment hi def link registryHead Constant hi def link registryHKEY Constant hi def link registryPath Special hi def link registryRemove PreProc hi def link registryGUID Identifier hi def link registrySpecial Special hi def link registrySubKey Type hi def link registryString String hi def link registryHex Number hi def link registryDword Number let b:current_syntax = "registry" if exists("b:current_syntax") finish endif syn case ignore syn keyword remindCommands REM OMIT SET FSET UNSET syn keyword remindExpiry UNTIL FROM SCANFROM SCAN WARN SCHED THROUGH syn keyword remindTag PRIORITY TAG syn keyword remindTimed AT DURATION syn keyword remindMove ONCE SKIP BEFORE AFTER syn keyword remindSpecial INCLUDE INC BANNER PUSH-OMIT-CONTEXT PUSH CLEAR-OMIT-CONTEXT CLEAR POP-OMIT-CONTEXT POP COLOR syn keyword remindRun MSG MSF RUN CAL SATISFY SPECIAL PS PSFILE SHADE MOON syn keyword remindConditional IF ELSE ENDIF IFTRIG syn keyword remindDebug DEBUG DUMPVARS DUMP ERRMSG FLUSH PRESERVE syn match remindComment "#.*$" syn region remindString start=+'+ end=+'+ skip=+\\\\\|\\'+ oneline syn region remindString start=+"+ end=+"+ skip=+\\\\\|\\"+ oneline syn match remindVar "\$[_a-zA-Z][_a-zA-Z0-9]*" syn match remindSubst "%[^ ]" syn match remindAdvanceNumber "\(\*\|+\|-\|++\|--\)[0-9]\+" syn match remindDateSeparators "[/:@\.-]" contained syn match remindTimes "[0-9]\{1,2}[:\.][0-9]\{1,2}" contains=remindDateSeparators syn match remindDates "'[0-9]\{4}[/-][0-9]\{1,2}[/-][0-9]\{1,2}\(@[0-9]\{1,2}[:\.][0-9]\{1,2}\)\?'" contains=remindDateSeparators syn match remindWarning display excludenl "\S\s\+$"ms=s+1 hi def link remindCommands Function hi def link remindExpiry Repeat hi def link remindTag Label hi def link remindTimed Statement hi def link remindMove Statement hi def link remindSpecial Include hi def link remindRun Function hi def link remindConditional Conditional hi def link remindComment Comment hi def link remindTimes String hi def link remindString String hi def link remindDebug Debug hi def link remindVar Identifier hi def link remindSubst Constant hi def link remindAdvanceNumber Number hi def link remindDateSeparators Comment hi def link remindDates String hi def link remindWarning Error let b:current_syntax = "remind" if exists("b:current_syntax") finish endif syn match resolvError /./ syn match resolvComment /\s*[#;].*$/ syn match resolvOperator /[\/:]/ contained syn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial syn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained syn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained syn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster syn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster syn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/ syn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster syn match resolvHostnameSearch contained /\%(\%([-0-9A-Za-z_]\+\.\)*[-0-9A-Za-z_]\+\.\?\%(\s\|$\)\)\+/ syn match resolvIPNetmaskSortList contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?\%(\s\|$\)\)\+/ contains=resolvOperator,@resolvIPCluster syn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite syn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite syn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite syn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite syn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite syn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite syn match resolvOption /\<\%(debug\|no_tld_query\|rotate\|no-check-names\|inet6\)\>/ contained nextgroup=resolvOption skipwhite syn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite syn match resolvError /^search .\{257,}/ hi def link resolvIP Number hi def link resolvIPNetmask Number hi def link resolvHostname String hi def link resolvOption String hi def link resolvIPNameserver Number hi def link resolvHostnameSearch String hi def link resolvIPNetmaskSortList Number hi def link resolvNameServer Identifier hi def link resolvLwserver Identifier hi def link resolvDomain Identifier hi def link resolvSearch Identifier hi def link resolvSortList Identifier hi def link resolvOptions Identifier hi def link resolvComment Comment hi def link resolvOperator Operator hi def link resolvError Error hi def link resolvIPError Error hi def link resolvIPSpecial Special let b:current_syntax = "resolv" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn clear syn sync ccomment syn sync maxlines=100 syn case ignore syn match revaTodo contained '\(todo\|fixme\|bugbug\|note\)[:]*' syn match revaTodo contained 'copyright\(\s(c)\)\=\(\s[0-9]\{2,4}\)\=' syn match revaHelpDesc '\S.*' contained syn match revaHelpStuff '\<\(def\|stack\|ctx\|ver\|os\|related\):\s.*' syn region revaHelpStuff start='\' end='^\S' contains=revaHelpDesc syn region revaEOF start='\<|||\>' end='{$}' contains=revaHelpStuff syn case match syn keyword revaoperators + - * / mod /mod negate abs min max umin umax syn keyword revaoperators and or xor not invert 1+ 1- syn keyword revaoperators m+ */ */mod m* um* m*/ um/mod fm/mod sm/rem syn keyword revaoperators d+ d- dnegate dabs dmin dmax > < = >> << u< <> syn keyword revastack drop nip dup over tuck swap rot -rot ?dup pick roll syn keyword revastack 2drop 2nip 2dup 2over 2swap 2rot 3drop syn keyword revastack >r r> r@ rdrop syn keyword revamemory @ ! +! c@ c! 2@ 2! align aligned allot allocate here free resize syn keyword revaadrarith chars char+ cells cell+ cell cell- 2cell+ 2cell- 3cell+ 4cell+ syn keyword revamemblks move fill syn keyword revacond if else then =if >if if if0 ;; catch throw syn keyword revaloop while repeat until again syn keyword revaloop do loop i j leave unloop skip more syn match revaColonDef '\ immediate syn keyword revadefine compile literal ' ['] com! -nargs=+ Builtin syn keyword revaBuiltin Builtin execute ahead interp bye >body here pad words make Builtin accept close cr creat delete ekey emit fsize ioerr key? Builtin mtime open/r open/rw read rename seek space spaces stat Builtin tell type type_ write (seek) (argv) (save) 0; 0drop; Builtin >class >lz >name >xt alias alias: appname argc asciiz, asciizl, Builtin body> clamp depth disassemble findprev fnvhash getenv here, Builtin iterate last! last@ later link lz> lzmax os parse/ peek Builtin peek-n pop prior push put rp@ rpick save setenv slurp Builtin stack-empty? stack-iterate stack-size stack: THROW_BADFUNC Builtin THROW_BADLIB THROW_GENERIC used xt>size z, Builtin +lplace +place -chop /char /string bounds c+lplace c+place Builtin chop cmp cmpi count lc lcount lplace place quote rsplit search split Builtin zcount zt \\char Builtin chdir g32 k32 u32 getcwd getpid hinst osname stdin stdout Builtin (-lib) (bye) (call) (else) (find) (func) (here) (if (lib) (s0) (s^) Builtin (to~) (while) >in >rel ?literal appstart cold compiling? context? d0 default_class Builtin defer? dict dolstr dostr find-word h0 if) interp isa onexit Builtin onstartup pdoes pop>ebx prompt rel> rp0 s0 src srcstr state str0 then,> then> tib Builtin tp vector vector! word? xt? .ver revaver revaver# && '' 'constant 'context Builtin 'create 'defer 'does 'forth 'inline 'macro 'macront 'notail 'value 'variable Builtin (.r) (context) (create) (header) (hide) (inline) (p.r) (words~) (xfind) Builtin ++ -- , -2drop -2nip -link -swap . .2x .classes .contexts .funcs .libs .needs .r Builtin .rs .x 00; 0do 0if 1, 2, 3, 2* 2/ 2constant 2variable 3dup 4dup ;then >base >defer Builtin >rr ? ?do @execute @rem appdir argv as back base base! between chain cleanup-libs Builtin cmove> context?? ctrl-c ctx>name data: defer: defer@def dictgone do_cr eleave Builtin endcase endof eval exception exec false find func: header heapgone help help/ Builtin hex# hide inline{ last lastxt lib libdir literal, makeexename mnotail ms ms@ Builtin newclass noop nosavedict notail nul of off on p: padchar parse parseln Builtin parsews rangeof rdepth remains reset reva revaused rol8 rr> scratch setclass sp Builtin strof super> temp time&date true turnkey? undo vfunc: w! w@ Builtin xchg xchg2 xfind xt>name xwords { {{ }} } _+ _1+ _1- pathsep case \|| syn keyword revadebug .s dump see syn keyword revaconversion s>d >digit digit> >single >double >number >float syn keyword revavocs forth macro inline syn keyword revavocs context: syn match revavocs /\<\~[^~ ]*/ syn match revavocs /[^~ ]*\~\>/ syn keyword revamath decimal hex base binary octal syn match revainteger '\<-\=[0-9.]*[0-9.]\+\>' syn match revainteger '\<\$\x*\x\+\>' " *1* --- dont't mess syn match revainteger '\<\x*\d\x*\>' " *2* --- this order! syn match revainteger '\<%[0-1]*[0-1]\+\>' syn match revainteger "\<'.\>" syn region revaString start=/"/ skip=/\\"/ end=/"/ syn region revaComment start='\\S\s' end='.*' contains=revaTodo syn match revaComment '\.(\s[^)]\{-})' contains=revaTodo syn region revaComment start='(\s' skip='\\)' end=')' contains=revaTodo syn match revaComment '(\s[^\-]*\-\-[^\-]\{-})' contains=revaTodo syn match revaComment '\<|\s.*$' contains=revaTodo syn match revaColonDef '\<:m\?\s*[^ \t]\+\>' contains=revaComment syn match revaInclude '\<\(include\|needs\)\s\+\S\+' if !exists("did_reva_syntax_inits") let did_reva_syntax_inits=1 hi def link revaEOF cIf0 hi def link revaHelpStuff special hi def link revaHelpDesc Comment hi def link revaTodo Todo hi def link revaOperators Operator hi def link revaMath Number hi def link revaInteger Number hi def link revaStack Special hi def link revaFStack Special hi def link revaSP Special hi def link revaMemory Operator hi def link revaAdrArith Function hi def link revaMemBlks Function hi def link revaCond Conditional hi def link revaLoop Repeat hi def link revaColonDef Define hi def link revaEndOfColonDef Define hi def link revaDefine Define hi def link revaDebug Debug hi def link revaCharOps Character hi def link revaConversion String hi def link revaForth Statement hi def link revaVocs Statement hi def link revaString String hi def link revaComment Comment hi def link revaClassDef Define hi def link revaEndOfClassDef Define hi def link revaObjectDef Define hi def link revaEndOfObjectDef Define hi def link revaInclude Include hi def link revaBuiltin Keyword endif let b:current_syntax = "reva" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore setlocal iskeyword+=. setlocal iskeyword+=! setlocal iskeyword+=? syn match rexxOperator "[=|\/\\\+\*\[\],;:<>&\~%\-]" syn match rexxIdentifier "\<\K\k*\>" syn match rexxEnvironmentSymbol "\<\.\k\+\>" syn match rexxClause "\(^\|;\|:\|then \|else \|when \|otherwise \)\s*\S*" contains=ALLBUT,rexxParse2,rexxRaise2,rexxForward2 syn match rexxParse "\\|version\)\>" containedin=rexxClause contains=rexxParse2 syn match rexxParse2 "\" containedin=rexxParse syn match rexxKeyword contained "\" syn match rexxKeyword contained "\<\(address\|trace\)\( value\)\?\>" syn match rexxKeyword contained "\" syn match rexxKeyword contained "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\(\s\+forever\)\?\>" syn match rexxKeyword contained "\\s*\(strict\s*\)\?\" syn match rexxRegularCallSignal contained "\<\(call\|signal\)\s\(\s*on\>\|\s*off\>\)\@!\(\k\+\ze\|\ze(\)\(\s*\|;\|$\|(\)" syn region rexxLabel contained start="\<\(call\|signal\)\>\s*\zs\(\k*\|(\)" end="\ze\(\s*\|;\|$\|(\)" containedin=rexxRegularCallSignal syn match rexxExceptionHandling contained "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>.*\(;\|$\)" contains=rexxComment syn match rexxLabel "name\s\+\zs\k\+\ze" containedin=rexxExceptionHandling syn match rexxLabel "\<\(call\|signal\)\>\s\+\<\(on\|off\)\>\s*\zs\k\+\ze\s*\(;\|$\)" containedin=rexxExceptionHandling syn region rexxLabel contained start="user\s\+\zs\k" end="\ze\(\s\|;\|$\)" containedin=rexxExceptionHandling syn match rexxKeywordStatements "\<\(arg\|catch\|do\|drop\|end\|exit\|expose\|finally\|forward\|if\|interpret\|iterate\|leave\|loop\|nop\)\>" syn match rexxKeywordStatements "\<\(options\|pull\|push\|queue\|raise\|reply\|return\|say\|select\|trace\)\>" syn match rexxConditional "\<\(then\|else\|when\|otherwise\)\(\s*\|;\|\_$\|\)\>" contains=rexxKeywordStatements syn match rexxLoopKeywords "\<\(to\|by\|for\|until\|while\|over\)\>" containedin=doLoopSelectLabelRegion syn match doLoopSelectLabelRegion "\<\(do\|loop\|select\)\>\s\+\(label\s\+\)\?\(\s\+\k\+\s\+\zs\\)\?\k*\(\s\+forever\)\?\(\s\|;\|$\)" contains=doLoopSelectLabelRegion,rexxStartValueAssignment,rexxLoopKeywords syn match rexxLabel2 "\<\(do\|loop\|select\)\>\s\+label\s\+\zs\k*\ze" containedin=doLoopSelectLabelRegion syn match rexxStartValueAssignment "\<\(do\|loop\)\>\(\s\+label\s\+\k*\)\?\s\+\zs.*\ze\(=.*\)\?\s\+\" containedin=doLoopSelectLabelRegion syn match endIterateLeaveLabelRegion "\<\(end\|leave\|iterate\)\>\(\s\+\K\k*\)" contains=rexxLabel2 syn match rexxLabel2 "\<\(end\|leave\|iterate\)\>\s\+\zs\k*\ze" containedin=endIterateLeaveLabelRegion syn match rexxGuard "\(^\|;\|:\)\s*\\s\+\<\(on\|off\)\>" syn match rexxTrace "\(^\|;\|:\)\s*\\s\+\<\K\k*\>" syn match rexxRaise "\(^\|;\|:\)\s*\\s*\<\(propagate\|error\|failure\|syntax\|user\)\>\?" contains=rexxRaise2 syn match rexxRaise2 "\<\(additional\|array\|description\|exit\|propagate\|return\)\>" containedin=rexxRaise syn match rexxForward "\(^\|;\|:\)\\s*" contains=rexxForward2 syn match rexxForward2 "\<\(arguments\|array\|continue\|message\|class\|to\)\>" contained syn match rexxFunction "\<\<[a-zA-Z\!\?_]\k*\>("me=e-1 syn match rexxFunction "[()]" syn region rexxString start=+"+ skip=+""+ end=+"\(x\|b\)\?+ oneline syn region rexxString start=+'+ skip=+''+ end=+'\(x\|b\)\?+ oneline syn region rexxParen transparent start='(' end=')' contains=ALLBUT,rexxParenError,rexxTodo,rexxLabel,rexxKeyword syn match rexxParenError ")" syn match rexxInParen "[\\[\\]{}]" syn region rexxComment start="/\*" end="\*/" contains=rexxTodo,rexxComment syn match rexxCommentError "\*/" syn region rexxLineComment start="--" end="\_$" oneline syn match rexxLabel "\(\_^\|;\)\s*\(\/\*.*\*\/\)*\s*\k\+\s*\(\/\*.*\*\/\)*\s*:"me=e-1 contains=rexxTodo,rexxComment syn keyword rexxTodo contained TODO FIXME XXX syn region rexxMessageOperator start="\(\~\|\~\~\)" end="\(\S\|\s\)"me=e-1 syn match rexxMessage "\(\~\|\~\~\)\s*\<\.*[a-zA-Z]\([a-zA-Z0-9._?!]\)*\>" contains=rexxMessageOperator syn match rexxLineContinue ",\ze\s*\(--.*\|\/\*.*\)*$" syn match rexxLineContinue "-\ze-\@!\s*\(--.*\|\s*\/\*.*\)\?$" syn keyword rexxSpecialVariable sigl rc result self super syn keyword rexxSpecialVariable .environment .error .input .local .methods .output .rs .stderr .stdin .stdout .stdque syn keyword rexxConst .true .false .nil .endOfLine .line .context syn match rexxNumber '\d\+' contained syn match rexxNumber '[-+]\s*\d\+' contained syn match rexxNumber '\d\+\.\d*' contained syn match rexxNumber '[-+]\s*\d\+\.\d*' contained syn match rexxNumber '[-+]\s*\d*[eE][\-+]\d\+' contained syn match rexxNumber '\d*[eE][\-+]\d\+' contained syn match rexxNumber '[-+]\s*\d*\.\d*[eE][\-+]\d\+' contained syn match rexxNumber '\d*\.\d*[eE][\-+]\d\+' contained syn keyword rexxBuiltinClass .Alarm .ArgUtil .Array .Bag .CaselessColumnComparator syn keyword rexxBuiltinClass .CaselessComparator .CaselessDescendingComparator .CircularQueue syn keyword rexxBuiltinClass .Class .Collection .ColumnComparator .Comparable .Comparator syn keyword rexxBuiltinClass .DateTime .DescendingComparator .Directory .File .InputOutputStream syn keyword rexxBuiltinClass .InputStream .InvertingComparator .List .MapCollection syn keyword rexxBuiltinClass .Message .Method .Monitor .MutableBuffer .Object syn keyword rexxBuiltinClass .OrderedCollection .OutputStream .Package .Properties .Queue syn keyword rexxBuiltinClass .RegularExpression .Relation .RexxContext .RexxQueue .Routine syn keyword rexxBuiltinClass .Set .SetCollection .Stem .Stream syn keyword rexxBuiltinClass .StreamSupplier .String .Supplier .Table .TimeSpan syn keyword rexxBuiltinClass .AdvancedControls .AnimatedButton .BaseDialog .ButtonControl syn keyword rexxBuiltinClass .CategoryDialog .CheckBox .CheckList .ComboBox .DialogControl syn keyword rexxBuiltinClass .DialogExtensions .DlgArea .DlgAreaU .DynamicDialog syn keyword rexxBuiltinClass .EditControl .InputBox .IntegerBox .ListBox .ListChoice syn keyword rexxBuiltinClass .ListControl .MenuObject .MessageExtensions .MultiInputBox syn keyword rexxBuiltinClass .MultiListChoice .OLEObject .OLEVariant syn keyword rexxBuiltinClass .PasswordBox .PlainBaseDialog .PlainUserDialog syn keyword rexxBuiltinClass .ProgressBar .ProgressIndicator .PropertySheet .RadioButton syn keyword rexxBuiltinClass .RcDialog .ResDialog .ScrollBar .SingleSelection .SliderControl syn keyword rexxBuiltinClass .StateIndicator .StaticControl .TabControl .TimedMessage syn keyword rexxBuiltinClass .TreeControl .UserDialog .VirtualKeyCodes .WindowBase syn keyword rexxBuiltinClass .WindowExtensions .WindowObject .WindowsClassesBase .WindowsClipboard syn keyword rexxBuiltinClass .WindowsEventLog .WindowsManager .WindowsProgramManager .WindowsRegistry syn keyword rexxBuiltinClass .BSF .bsf.dialog .bsf_proxy syn keyword rexxBuiltinClass .UNO .UNO_ENUM .UNO_CONSTANTS .UNO_PROPERTIES syn region rexxClassDirective start="::\s*class\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxMethodDirective start="::\s*method\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxRequiresDirective start="::\s*requires\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxRoutineDirective start="::\s*routine\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxAttributeDirective start="::\s*attribute\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxOptionsDirective start="::\s*options\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxConstantDirective start="::\s*constant\s*"ms=e+1 end="\ze\(\s\|;\|$\)" syn region rexxDirective start="\(^\|;\)\s*::\s*\w\+" end="\($\|;\)" contains=rexxString,rexxNumber,rexxComment,rexxLineComment,rexxClassDirective,rexxMethodDirective,rexxRoutineDirective,rexxRequiresDirective,rexxAttributeDirective,rexxOptionsDirective,rexxConstantDirective keepend syn match rexxOptionsDirective2 "\<\(digits\|form\|fuzz\|trace\)\>" containedin = rexxOptionsDirective3 syn region rexxOptionsDirective3 start="\(^\|;\)\s*::\s*options\s"ms=e+1 end="\($\|;\)" contains=rexxString,rexxNumber,rexxVariable,rexxComment,rexxLineComment containedin = rexxDirective syn region rexxVariable start="\zs\<\(\.\)\@!\K\k\+\>\ze\s*\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)" end="\(\_$\|.\)"me=e-1 syn match rexxVariable "\(=\|,\|)\|%\|\]\|\\\||\|&\|+=\|-=\|<\|>\)\s*\zs\K\k*\ze" hi par1 ctermfg=red guifg=red "guibg=grey hi par2 ctermfg=blue guifg=blue "guibg=grey hi par3 ctermfg=darkgreen guifg=darkgreen "guibg=grey hi par4 ctermfg=darkyellow guifg=darkyellow "guibg=grey hi par5 ctermfg=darkgrey guifg=darkgrey "guibg=grey syn sync linecont "\(,\|-\ze-\@!\)\ze\s*\(--.*\|\/\*.*\)*$" exec "syn sync fromstart" hi rexxStringConstant term=bold,underline ctermfg=5 cterm=bold guifg=darkMagenta gui=bold hi def link rexxLabel2 Function hi def link doLoopSelectLabelRegion rexxKeyword hi def link endIterateLeaveLabelRegion rexxKeyword hi def link rexxLoopKeywords rexxKeyword " Todo hi def link rexxNumber Normal "DiffChange hi def link rexxRegularCallSignal Statement hi def link rexxExceptionHandling Statement hi def link rexxLabel Function hi def link rexxCharacter Character hi def link rexxParenError rexxError hi def link rexxInParen rexxError hi def link rexxCommentError rexxError hi def link rexxError Error hi def link rexxKeyword Statement hi def link rexxKeywordStatements Statement hi def link rexxFunction Function hi def link rexxString String hi def link rexxComment Comment hi def link rexxTodo Todo hi def link rexxSpecialVariable Special hi def link rexxConditional rexxKeyword hi def link rexxOperator Operator hi def link rexxMessageOperator rexxOperator hi def link rexxLineComment Comment hi def link rexxLineContinue WildMenu hi def link rexxDirective rexxKeyword hi def link rexxClassDirective Type hi def link rexxMethodDirective rexxFunction hi def link rexxAttributeDirective rexxFunction hi def link rexxRequiresDirective Include hi def link rexxRoutineDirective rexxFunction hi def link rexxOptionsDirective rexxFunction hi def link rexxOptionsDirective2 rexxOptionsDirective hi def link rexxOptionsDirective3 Normal " rexxOptionsDirective hi def link rexxConstantDirective rexxFunction hi def link rexxConst Constant hi def link rexxTypeSpecifier Type hi def link rexxBuiltinClass rexxTypeSpecifier hi def link rexxEnvironmentSymbol rexxConst hi def link rexxMessage rexxFunction hi def link rexxParse rexxKeyword hi def link rexxParse2 rexxParse hi def link rexxGuard rexxKeyword hi def link rexxTrace rexxKeyword hi def link rexxRaise rexxKeyword hi def link rexxRaise2 rexxRaise hi def link rexxForward rexxKeyword hi def link rexxForward2 rexxForward let b:current_syntax = "rexx" if exists("b:current_syntax") finish endif scriptencoding utf-8 syn case match syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}" syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}" syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}" contains=rhelpLink syn region rhelpIdentifier matchgroup=rhelpSection start="\\CRANpkg{" end="}" contains=rhelpLink syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}" syn include @R syntax/r.vim syn region rhelpString start=/"/ skip=/\\"/ end=/"/ contains=rhelpSpecialChar,rhelpCodeSpecial,rhelpLink contained syn match rhelpCodeSpecial display contained "\\\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\" syn match rhelpSpecialChar "\\[$&%#{}_]" syn match rhelpDots "\\dots" containedin=@R syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink,rhelpIdentifier,rhelpString,rhelpSpecialChar,rhelpSection syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R if v:version > 703 syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@1" syn match rhelpKeyword "\\ldots\>" syn match rhelpKeyword "\\sspace\>" syn match rhelpKeyword "--" syn match rhelpKeyword "---" syn match rhelpKeyword "\\if\>" syn match rhelpKeyword "\\ifelse\>" syn match rhelpKeyword "\\out\>" syn match rhelpMathOp "<" contained syn match rhelpMathOp ">" contained syn match rhelpMathOp "+" contained syn match rhelpMathOp "-" contained syn match rhelpMathOp "=" contained if exists("g:tex_conceal") let s:tex_conceal = g:tex_conceal else let s:tex_conceal = 'gm' endif function s:HideSymbol(pat, cchar, hide) if a:hide exe "syn match rhelpMathSymb '" . a:pat . "' contained conceal cchar=" . a:cchar else exe "syn match rhelpMathSymb '" . a:pat . "' contained" endif endfunction if s:tex_conceal =~ 'm' let s:hd = 1 else let s:hd = 0 endif call s:HideSymbol('\\infty\>', '∞', s:hd) call s:HideSymbol('\\ge\>', '≥', s:hd) call s:HideSymbol('\\le\>', '≤', s:hd) call s:HideSymbol('\\prod\>', 'âˆ', s:hd) call s:HideSymbol('\\sum\>', '∑', s:hd) syn match rhelpMathSymb "\\sqrt\>" contained if s:tex_conceal =~ 'g' let s:hd = 1 else let s:hd = 0 endif call s:HideSymbol('\\alpha\>', 'α', s:hd) call s:HideSymbol('\\beta\>', 'β', s:hd) call s:HideSymbol('\\gamma\>', 'γ', s:hd) call s:HideSymbol('\\delta\>', 'δ', s:hd) call s:HideSymbol('\\epsilon\>', 'ϵ', s:hd) call s:HideSymbol('\\zeta\>', 'ζ', s:hd) call s:HideSymbol('\\eta\>', 'η', s:hd) call s:HideSymbol('\\theta\>', 'θ', s:hd) call s:HideSymbol('\\iota\>', 'ι', s:hd) call s:HideSymbol('\\kappa\>', 'κ', s:hd) call s:HideSymbol('\\lambda\>', 'λ', s:hd) call s:HideSymbol('\\mu\>', 'μ', s:hd) call s:HideSymbol('\\nu\>', 'ν', s:hd) call s:HideSymbol('\\xi\>', 'ξ', s:hd) call s:HideSymbol('\\pi\>', 'Ï€', s:hd) call s:HideSymbol('\\rho\>', 'Ï', s:hd) call s:HideSymbol('\\sigma\>', 'σ', s:hd) call s:HideSymbol('\\tau\>', 'Ï„', s:hd) call s:HideSymbol('\\upsilon\>', 'Ï…', s:hd) call s:HideSymbol('\\phi\>', 'Ï•', s:hd) call s:HideSymbol('\\chi\>', 'χ', s:hd) call s:HideSymbol('\\psi\>', 'ψ', s:hd) call s:HideSymbol('\\omega\>', 'ω', s:hd) call s:HideSymbol('\\Gamma\>', 'Γ', s:hd) call s:HideSymbol('\\Delta\>', 'Δ', s:hd) call s:HideSymbol('\\Theta\>', 'Θ', s:hd) call s:HideSymbol('\\Lambda\>', 'Λ', s:hd) call s:HideSymbol('\\Xi\>', 'Ξ', s:hd) call s:HideSymbol('\\Pi\>', 'Π', s:hd) call s:HideSymbol('\\Sigma\>', 'Σ', s:hd) call s:HideSymbol('\\Upsilon\>', 'Î¥', s:hd) call s:HideSymbol('\\Phi\>', 'Φ', s:hd) call s:HideSymbol('\\Psi\>', 'Ψ', s:hd) call s:HideSymbol('\\Omega\>', 'Ω', s:hd) delfunction s:HideSymbol syn region rhelpLink matchgroup=rhelpType start="\\link{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\link\[.\{-}\]{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\linkS4class{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\url{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\href{" end="}" contained keepend extend syn region rhelpLink matchgroup=rhelpType start="\\figure{" end="}" contained keepend extend syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@1" syn match rhelpType "\\strong\>" syn match rhelpType "\\bold\>" syn match rhelpType "\\sQuote\>" syn match rhelpType "\\dQuote\>" syn match rhelpType "\\preformatted\>" syn match rhelpType "\\kbd\>" syn match rhelpType "\\file\>" syn match rhelpType "\\email\>" syn match rhelpType "\\enc\>" syn match rhelpType "\\var\>" syn match rhelpType "\\env\>" syn match rhelpType "\\option\>" syn match rhelpType "\\command\>" syn match rhelpType "\\newcommand\>" syn match rhelpType "\\renewcommand\>" syn match rhelpType "\\dfn\>" syn match rhelpType "\\cite\>" syn match rhelpType "\\acronym\>" syn match rhelpType "\\doi\>" syn match rhelpSection "\\encoding\>" syn match rhelpSection "\\title\>" syn match rhelpSection "\\item\>" syn match rhelpSection "\\description\>" syn match rhelpSection "\\concept\>" syn match rhelpSection "\\arguments\>" syn match rhelpSection "\\details\>" syn match rhelpSection "\\value\>" syn match rhelpSection "\\references\>" syn match rhelpSection "\\note\>" syn match rhelpSection "\\author\>" syn match rhelpSection "\\seealso\>" syn match rhelpSection "\\keyword\>" syn match rhelpSection "\\docType\>" syn match rhelpSection "\\format\>" syn match rhelpSection "\\source\>" syn match rhelpSection "\\itemize\>" syn match rhelpSection "\\describe\>" syn match rhelpSection "\\enumerate\>" syn match rhelpSection "\\item " syn match rhelpSection "\\item$" syn match rhelpSection "\\tabular{[lcr]*}" syn match rhelpSection "\\dontrun\>" syn match rhelpSection "\\dontshow\>" syn match rhelpSection "\\testonly\>" syn match rhelpSection "\\donttest\>" syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}" syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}" syn match rhelpDelimiter "{\|\[\|(\|)\|\]\|}" syn match rhelpComment /%.*$/ syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation syn match rhelpError /[)\]}]/ syn match rhelpBraceError /[)}]/ contained syn match rhelpCurlyError /[)\]]/ contained syn match rhelpParenError /[\]}]/ contained syntax sync match rhelpSyncRcode grouphere rhelpRcode "\\examples{" hi def link rhelpVerbatim String hi def link rhelpDelimiter Delimiter hi def link rhelpIdentifier Identifier hi def link rhelpString String hi def link rhelpCodeSpecial Special hi def link rhelpKeyword Keyword hi def link rhelpDots Keyword hi def link rhelpLink Underlined hi def link rhelpType Type hi def link rhelpSection PreCondit hi def link rhelpError Error hi def link rhelpBraceError Error hi def link rhelpCurlyError Error hi def link rhelpParenError Error hi def link rhelpPreProc PreProc hi def link rhelpDelimiter Delimiter hi def link rhelpComment Comment hi def link rhelpRComment Comment hi def link rhelpSpecialChar SpecialChar hi def link rhelpMathSymb Special hi def link rhelpMathOp Operator let b:current_syntax = "rhelp" if exists("b:current_syntax") finish endif syn case match syn match ribLineComment "#.*$" syn match ribStructureComment "##.*$" syn case ignore syn match ribCommand /[A-Z][a-zA-Z]*/ syn case match syn region ribString start=/"/ skip=/\\"/ end=/"/ syn match ribStructure "[A-Z][a-zA-Z]*Begin\>\|[A-Z][a-zA-Z]*End" syn region ribSectionFold start="FrameBegin" end="FrameEnd" fold transparent keepend extend syn region ribSectionFold start="WorldBegin" end="WorldEnd" fold transparent keepend extend syn region ribSectionFold start="TransformBegin" end="TransformEnd" fold transparent keepend extend syn region ribSectionFold start="AttributeBegin" end="AttributeEnd" fold transparent keepend extend syn region ribSectionFold start="MotionBegin" end="MotionEnd" fold transparent keepend extend syn region ribSectionFold start="SolidBegin" end="SolidEnd" fold transparent keepend extend syn region ribSectionFold start="ObjectBegin" end="ObjectEnd" fold transparent keepend extend syn sync fromstart syn case ignore syn match ribNumbers display transparent "[-]\=\<\d\|\.\d" contains=ribNumber,ribFloat syn match ribNumber display contained "[-]\=\d\+\>" syn match ribFloat display contained "[-]\=\d\+\.\d*\(e[-+]\=\d\+\)\=" syn match ribFloat display contained "[-]\=\.\d\+\(e[-+]\=\d\+\)\=\>" syn match ribFloat display contained "[-]\=\d\+e[-+]\d\+\>" syn case match hi def link ribStructure Structure hi def link ribCommand Statement hi def link ribStructureComment SpecialComment hi def link ribLineComment Comment hi def link ribString String hi def link ribNumber Number hi def link ribFloat Float let b:current_syntax = "rib" if exists("b:current_syntax") finish endif let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1) let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1) let g:rmd_syn_hl_chunk = get(g:, 'g:rmd_syn_hl_chunk', 0) let g:pandoc#syntax#codeblocks#embeds#langs = get(g:, 'pandoc#syntax#codeblocks#embeds#langs', ['r']) runtime syntax/pandoc.vim if exists("b:current_syntax") syn region pandocDelimitedCodeBlock_r start=/^```{r\>.*}$/ end=/^```$/ contained containedin=pandocDelimitedCodeBlock contains=@R syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend hi def link rmdInlineDelim Delimiter let b:current_syntax = "rmd" finish endif let s:cpo_save = &cpo set cpo&vim if exists('g:markdown_fenced_languages') if !exists('g:rmd_fenced_languages') let g:rmd_fenced_languages = deepcopy(g:markdown_fenced_languages) let g:markdown_fenced_languages = [] endif else let g:rmd_fenced_languages = ['r'] endif runtime syntax/markdown.vim for s:type in g:rmd_fenced_languages if s:type =~ '=' let s:ft = substitute(s:type, '.*=', '', '') let s:nm = substitute(s:type, '=.*', '', '') else let s:ft = s:type let s:nm = s:type endif unlet! b:current_syntax exe 'syn include @Rmd'.s:nm.' syntax/'.s:ft.'.vim' if g:rmd_syn_hl_chunk exe 'syn region rmd'.s:nm.'ChunkDelim matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>" matchgroup=rmdCodeDelim end="}$" keepend containedin=rmd'.s:nm.'Chunk contains=@Rmd'.s:nm exe 'syn region rmd'.s:nm.'Chunk start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=rmd'.s:nm.'ChunkDelim,@Rmd'.s:nm else exe 'syn region rmd'.s:nm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*'.s:nm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@Rmd'.s:nm endif exe 'syn region rmd'.s:nm.'Inline matchgroup=rmdInlineDelim start="`'.s:nm.' " end="`" contains=@Rmd'.s:nm.' keepend' endfor unlet! s:type hi def link rmdInlineDelim Delimiter hi def link rmdCodeDelim Delimiter if g:rmd_syn_hl_yaml syn match rmdYamlFieldTtl /^\s*\zs\w*\ze:/ contained syn match rmdYamlFieldTtl /^\s*-\s*\zs\w*\ze:/ contained syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"' contains=yamlEscape,rmdrInline contained syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'" contains=yamlSingleEscape,rmdrInline contained syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)' syn match yamlSingleEscape contained "''" syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^\([-.]\)\1\{2}$/ keepend contains=rmdYamlFieldTtl,yamlFlowString hi def link rmdYamlBlockDelim Delimiter hi def link rmdYamlFieldTtl Identifier hi def link yamlFlowString String endif if g:rmd_syn_hl_citations syn match pandocPCite /\^\@~\/]*.\{-}\]/ contains=pandocEmphasis,pandocStrong,pandocLatex,pandocCiteKey,@Spell,pandocAmpersandEscape display syn match pandocICite /@[[:alnum:]_][[:alnum:]à-öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*\s\[.\{-1,}\]/ contains=pandocCiteKey,@Spell display syn match pandocCiteKey /\(-\=@[[:alnum:]_][[:alnum:]à-öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*\)/ containedin=pandocPCite,pandocICite contains=@NoSpell display syn match pandocCiteAnchor /[-@]/ contained containedin=pandocCiteKey display syn match pandocCiteLocator /[\[\]]/ contained containedin=pandocPCite,pandocICite hi def link pandocPCite Operator hi def link pandocICite Operator hi def link pandocCiteKey Label hi def link pandocCiteAnchor Operator hi def link pandocCiteLocator Operator endif let b:current_syntax = "rmd" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim setlocal iskeyword+=-,. syn keyword rncTodo contained TODO FIXME XXX NOTE syn region rncComment display oneline start='^\s*#' end='$' \ contains=rncTodo,@Spell syn match rncOperator display '[-|,&+?*~]' syn match rncOperator display '\%(|&\)\==' syn match rncOperator display '>>' syn match rncNamespace display '\<\k\+:' syn match rncQuoted display '\\\k\+\>' syn match rncSpecial display '\\x{\x\+}' syn region rncAnnotation transparent start='\[' end='\]' \ contains=ALLBUT,rncComment,rncTodo syn region rncLiteral display oneline start=+"+ end=+"+ \ contains=rncSpecial syn region rncLiteral display oneline start=+'+ end=+'+ syn region rncLiteral display oneline start=+"""+ end=+"""+ \ contains=rncSpecial syn region rncLiteral display oneline start=+'''+ end=+'''+ syn match rncDelimiter display '[{},()]' syn keyword rncKeyword datatypes default div empty external grammar syn keyword rncKeyword include inherit list mixed name namespace syn keyword rncKeyword notAllowed parent start string text token syn match rncIdentifier display '\k\+\_s*\%(=\|&=\||=\)\@=' \ nextgroup=rncOperator syn keyword rncKeyword element attribute \ nextgroup=rncIdName skipwhite skipempty syn match rncIdName contained '\k\+' hi def link rncTodo Todo hi def link rncComment Comment hi def link rncOperator Operator hi def link rncNamespace Identifier hi def link rncQuoted Special hi def link rncSpecial SpecialChar hi def link rncAnnotation Special hi def link rncLiteral String hi def link rncDelimiter Delimiter hi def link rncKeyword Keyword hi def link rncIdentifier Identifier hi def link rncIdName Identifier let b:current_syntax = "rnc" let &cpo = s:cpo_save unlet s:cpo_save if exists('b:current_syntax') finish endif do Syntax xml syn spell toplevel syn cluster xmlTagHook add=rngTagName syn case match syn keyword rngTagName anyName attribute choice data define div contained syn keyword rngTagName element empty except externalRef grammar contained syn keyword rngTagName group include interleave list mixed name contained syn keyword rngTagName notAllowed nsName oneOrMore optional param contained syn keyword rngTagName parentRef ref start text value zeroOrMore contained hi def link rngTagName Statement let b:current_syntax = 'rng' if exists("b:current_syntax") finish endif syn case match runtime syntax/tex.vim unlet! b:current_syntax syn cluster texMatchGroup add=@rnoweb syn cluster texMathMatchGroup add=rnowebSexpr syn cluster texMathZoneGroup add=rnowebSexpr syn cluster texEnvGroup add=@rnoweb syn cluster texFoldGroup add=@rnoweb syn cluster texDocGroup add=@rnoweb syn cluster texPartGroup add=@rnoweb syn cluster texChapterGroup add=@rnoweb syn cluster texSectionGroup add=@rnoweb syn cluster texSubSectionGroup add=@rnoweb syn cluster texSubSubSectionGroup add=@rnoweb syn cluster texParaGroup add=@rnoweb syn include @rnowebR syntax/r.vim syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend syn match rnowebChunkReference "^<<.*>>$" contained syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR contained syn region rnowebSweaveopts matchgroup=Delimiter start="\\SweaveOpts{" matchgroup=Delimiter end="}" syn cluster rnoweb contains=rnowebChunk,rnowebChunkReference,rnowebDelimiter,rnowebSexpr,rnowebSweaveopts hi def link rnowebDelimiter Delimiter hi def link rnowebSweaveOpts Statement hi def link rnowebChunkReference Delimiter let b:current_syntax = "rnoweb" if exists("b:current_syntax") finish endif syn case ignore syn match robotsComment "#.*$" contains=robotsUrl,robotsMail,robotsString syn match robotsStar "\*" syn match robotsDelimiter ":" syn match robotsAgent "^[Uu][Ss][Ee][Rr]\-[Aa][Gg][Ee][Nn][Tt]" syn match robotsDisallow "^[Dd][Ii][Ss][Aa][Ll][Ll][Oo][Ww]" synt match robotsLine "\(^[Uu][Ss][Ee][Rr]\-[Aa][Gg][Ee][Nn][Tt]\|^[Dd][Ii][Ss][Aa][Ll][Ll][Oo][Ww]\):[^#]*" contains=robotsAgent,robotsDisallow,robotsStar,robotsDelimiter syn match robotsUrl "http[s]\=://\S*" syn match robotsMail "\S*@\S*" syn region robotsString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ hi def link robotsComment Comment hi def link robotsAgent Type hi def link robotsDisallow Statement hi def link robotsLine Special hi def link robotsStar Operator hi def link robotsDelimiter Delimiter hi def link robotsUrl String hi def link robotsMail String hi def link robotsString String let b:current_syntax = "robots" if exists("b:current_syntax") finish endif runtime! syntax/c.vim syn keyword rpcProgram program skipnl skipwhite nextgroup=rpcProgName syn match rpcProgName contained "\<\i\I*\>" skipnl skipwhite nextgroup=rpcProgZone syn region rpcProgZone contained matchgroup=Delimiter start="{" matchgroup=Delimiter end="}\s*=\s*\(\d\+\|0x[23]\x\{7}\)\s*;"me=e-1 contains=rpcVersion,cComment,rpcProgNmbrErr syn keyword rpcVersion contained version skipnl skipwhite nextgroup=rpcVersName syn match rpcVersName contained "\<\i\I*\>" skipnl skipwhite nextgroup=rpcVersZone syn region rpcVersZone contained matchgroup=Delimiter start="{" matchgroup=Delimiter end="}\s*=\s*\d\+\s*;"me=e-1 contains=cType,cStructure,cStorageClass,rpcDecl,rpcProcNmbr,cComment syn keyword rpcDecl contained string syn match rpcProcNmbr contained "=\s*\d\+;"me=e-1 syn match rpcProgNmbrErr contained "=\s*0x[^23]\x*"ms=s+1 syn match rpcPassThru "^\s*%.*$" if !exists("skip_rpcgen_syntax_inits") hi def link rpcProgName rpcName hi def link rpcProgram rpcStatement hi def link rpcVersName rpcName hi def link rpcVersion rpcStatement hi def link rpcDecl cType hi def link rpcPassThru cComment hi def link rpcName Special hi def link rpcProcNmbr Delimiter hi def link rpcProgNmbrErr Error hi def link rpcStatement Statement endif let b:current_syntax = "rpcgen" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syntax case match syntax match rplConstant "\(^\|\s\+\)\(e\|i\)\ze\($\|\s\+\)" syntax match rplBinaryError "\(^\|\s\+\)#\s*\S\+b\ze" syntax match rplBinary "\(^\|\s\+\)#\s*[01]\+b\ze\($\|\s\+\)" syntax match rplOctalError "\(^\|\s\+\)#\s*\S\+o\ze" syntax match rplOctal "\(^\|\s\+\)#\s*\o\+o\ze\($\|\s\+\)" syntax match rplDecimalError "\(^\|\s\+\)#\s*\S\+d\ze" syntax match rplDecimal "\(^\|\s\+\)#\s*\d\+d\ze\($\|\s\+\)" syntax match rplHexadecimalError "\(^\|\s\+\)#\s*\S\+h\ze" syntax match rplHexadecimal "\(^\|\s\+\)#\s*\x\+h\ze\($\|\s\+\)" syntax case ignore syntax match rplControl "\(^\|\s\+\)abort\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)kill\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)cont\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)halt\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)cmlf\ze\($\|\s\+\)" syntax match rplControl "\(^\|\s\+\)sst\ze\($\|\s\+\)" syntax match rplConstant "\(^\|\s\+\)pi\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)return\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)last\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)syzeval\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)wait\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)type\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)kind\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)eval\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)use\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)remove\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)external\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)dup\([2n]\|\)\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)drop\([2n]\|\)\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)depth\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)roll\(d\|\)\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)pick\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)rot\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)swap\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)over\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)clear\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)warranty\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)copyright\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)convert\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)date\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)time\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)mem\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)clmf\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)->num\ze\($\|\s\+\)" syntax match rplStatement "\(^\|\s\+\)help\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)get\(i\|r\|c\|\)\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)put\(i\|r\|c\|\)\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)rcl\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)purge\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sinv\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sneg\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sconj\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)steq\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)rceq\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)vars\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)clusr\ze\($\|\s\+\)" syntax match rplStorage "\(^\|\s\+\)sto\([+-/\*]\|\)\ze\($\|\s\+\)" syntax match rplAlgConditional "\(^\|\s\+\)ift\(e\|\)\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)and\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)\(x\|\)or\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)not\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)same\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)==\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)<=\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)=<\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)=>\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)>=\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)<>\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)>\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)<\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)[+-]\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)[/\*]\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)\^\ze\($\|\s\+\)" syntax match rplOperator "\(^\|\s\+\)\*\*\ze\($\|\s\+\)" syntax match rplBoolean "\(^\|\s\+\)true\ze\($\|\s\+\)" syntax match rplBoolean "\(^\|\s\+\)false\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)store\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)recall\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(\|wf\|un\)lock\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)open\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)close\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)delete\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)create\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)format\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)rewind\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)backspace\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)write\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)read\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)inquire\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)sync\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)append\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)suppress\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)seek\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)pr\(1\|int\|st\|stc\|lcd\|var\|usr\|md\)\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)paper\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)cr\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)erase\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)disp\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)input\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)prompt\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)key\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)cllcd\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(\|re\)draw\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)drax\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)indep\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)depnd\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)res\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)axes\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)label\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)pmin\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)pmax\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)centr\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)persist\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)title\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(slice\|auto\|log\|\)scale\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)eyept\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\(p\|s\)par\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)function\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)polar\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)scatter\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)plotter\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)wireframe\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)parametric\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)slice\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*w\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*h\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*d\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)\*s\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)->lcd\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)lcd->\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)edit\ze\($\|\s\+\)" syntax match rplReadWrite "\(^\|\s\+\)visit\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)abs\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)arg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)conj\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)re\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)im\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mant\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)xpon\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ceil\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)fact\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)fp\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)floor\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)inv\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ip\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)max\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)min\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mod\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)neg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)relax\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sign\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sq\(\|rt\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)xroot\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sin\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)tan\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)tg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)cos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)a\(\|rc\)sin\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)atan\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)arctg\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)cosh\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)sinh\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)tanh\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|arg\)th\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)arg[cst]h\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|a\)log\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ln\(\|1\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)exp\(\|m\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)trn\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)con\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)idn\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rdm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rsd\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cnrm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cross\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)d[eo]t\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)[cr]swp\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rci\(j\|\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(in\|de\)cr\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)bessel\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)egvl\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|g\)\(\|l\|r\)egv\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rnrm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(std\|fix\|sci\|eng\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(rad\|deg\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|n\)rand\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rdz\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|i\)fft\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(dec\|bin\|oct\|hex\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)rclf\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)stof\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)[cs]f\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)chr\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)num\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)pos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)sub\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)size\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(st\|rc\)ws\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(r\|s\)\(r\|l\)\(\|b\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)as\(r\|l\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(int\|der\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)stos\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|r\)cls\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)drws\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)scls\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)ns\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)tot\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mean\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)sdev\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)var\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)maxs\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)mins\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)cov\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)cols\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)s\(x\(\|y\|2\)\|y\(\|2\)\)\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(x\|y\)col\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)corr\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)utp[cfnt]\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)comb\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)perm\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)\(\|p\)lu\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)[lu]chol\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)schur\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)%\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)%ch\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)%t\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)hms->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->hms\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)hms+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)hms-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)d->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->d\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)b->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->b\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)c->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->c\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)r->p\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)p->r\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)str->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->str\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)array->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->array\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)list->\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->list\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)s+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)s-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)col-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)col+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)row-\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)row+\ze\($\|\s\+\)" syntax match rplIntrinsic "\(^\|\s\+\)->q\ze\($\|\s\+\)" syntax match rplObsolete "\(^\|\s\+\)arry->\ze\($\|\s\+\)"hs=e-5 syntax match rplObsolete "\(^\|\s\+\)->arry\ze\($\|\s\+\)"hs=e-5 syntax match rplConditionalError "\(^\|\s\+\)case\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)then\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)else\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)elseif\ze\($\|\s\+\)"hs=e-5 syntax match rplConditionalError "\(^\|\s\+\)end\ze\($\|\s\+\)"hs=e-2 syntax match rplConditionalError "\(^\|\s\+\)\(step\|next\)\ze\($\|\s\+\)"hs=e-3 syntax match rplConditionalError "\(^\|\s\+\)until\ze\($\|\s\+\)"hs=e-4 syntax match rplConditionalError "\(^\|\s\+\)repeat\ze\($\|\s\+\)"hs=e-5 syntax match rplConditionalError "\(^\|\s\+\)default\ze\($\|\s\+\)"hs=e-6 syntax match rplCycle "\(^\|\s\+\)\(cycle\|exit\)\ze\($\|\s\+\)" syntax region rplForNext matchgroup=rplRepeat start="\(^\|\s\+\)\(for\|start\)\ze\($\|\s\+\)" end="\(^\|\s\+\)\(next\|step\)\ze\($\|\s\+\)" contains=ALL keepend extend syntax region rplElseifEnd matchgroup=rplConditional start="\(^\|\s\+\)elseif\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd keepend syntax region rplElseEnd matchgroup=rplConditional start="\(^\|\s\+\)else\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained contains=ALLBUT,rplElseEnd,rplThenEnd,rplElseifEnd keepend syntax region rplThenEnd matchgroup=rplConditional start="\(^\|\s\+\)then\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contained containedin=rplIfEnd contains=ALLBUT,rplThenEnd keepend syntax region rplIfEnd matchgroup=rplConditional start="\(^\|\s\+\)if\(err\|\)\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplElseEnd,rplElseifEnd keepend extend syntax region rplCaseThen matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)then\ze\($\|\s\+\)" contains=ALLBUT,rplCaseThen,rplCaseEnd,rplThenEnd keepend extend contained containedin=rplCaseEnd syntax region rplCaseEnd matchgroup=rplConditional start="\(^\|\s\+\)case\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplCaseEnd,rplThenEnd,rplElseEnd keepend extend contained containedin=rplSelectEnd syntax region rplDefaultEnd matchgroup=rplConditional start="\(^\|\s\+\)default\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplDefaultEnd keepend contained containedin=rplSelectEnd syntax region rplSelectEnd matchgroup=rplConditional start="\(^\|\s\+\)select\ze\($\|\s\+\)" end="\(^\|\s\+\)end\ze\($\|\s\+\)" contains=ALLBUT,rplThenEnd keepend extend syntax region rplUntilEnd matchgroup=rplConditional start="\(^\|\s\+\)until\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplUntilEnd contained containedin=rplDoUntil extend keepend syntax region rplDoUntil matchgroup=rplConditional start="\(^\|\s\+\)do\ze\($\|\s\+\)" end="\(^\|\s\+\)until\ze\($\|\s\+\)" contains=ALL keepend extend syntax region rplRepeatEnd matchgroup=rplConditional start="\(^\|\s\+\)repeat\ze\($\|\s\+\)" end="\(^\|\s\+\)\zsend\ze\($\|\s\+\)" contains=ALLBUT,rplRepeatEnd contained containedin=rplWhileRepeat extend keepend syntax region rplWhileRepeat matchgroup=rplConditional start="\(^\|\s\+\)while\ze\($\|\s\+\)" end="\(^\|\s\+\)repeat\ze\($\|\s\+\)" contains=ALL keepend extend syntax match rplCommentError "\*/" syntax region rplCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1 syntax region rplCommentLine start="\(^\|\s\+\)//\ze" skip="\\$" end="$" contains=NONE keepend extend syntax region rplComment start="\(^\|\s\+\)/\*\ze" end="\*/" contains=rplCommentString keepend extend syntax region rplParen transparent start="(" end=")" contains=ALLBUT,rplParenError,rplComplex,rplIncluded keepend extend syntax match rplParenError ")" syntax match rplSubError "\(^\|\s\+\)>>\ze\($\|\s\+\)"hs=e-1 syntax region rplSub matchgroup=rplSubDelimitor start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageSub keepend extend syntax region rplExpr start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError syntax match rplStorageError "\(^\|\s\+\)->\ze\($\|\s\+\)"hs=e-1 syntax region rplStorageSub matchgroup=rplStorage start="\(^\|\s\+\)<<\ze\($\|\s\+\)" end="\(^\|\s\+\)>>\ze\($\|\s\+\)" contains=ALLBUT,rplSubError,rplIncluded,rplDefaultEnd,rplStorageExpr contained containedin=rplLocalStorage keepend extend syntax region rplStorageExpr matchgroup=rplStorage start="\(^\|\s\+\)'" end="'\ze\($\|\s\+\)" contains=rplParen,rplParenError extend contained containedin=rplLocalStorage syntax region rplLocalStorage matchgroup=rplStorage start="\(^\|\s\+\)->\ze\($\|\s\+\)" end="\(^\|\s\+\)\(<<\ze\($\|\s\+\)\|'\)" contains=rplStorageSub,rplStorageExpr,rplComment,rplCommentLine keepend extend syntax match rplArrayError "\]" syntax match rplArray "\]" contained containedin=rplArray syntax region rplArray matchgroup=rplArray start="\[" end="\]" contains=ALLBUT,rplArrayError keepend extend syntax match rplListError "}" syntax match rplList "}" contained containedin=rplList syntax region rplList matchgroup=rplList start="{" end="}" contains=ALLBUT,rplListError,rplIncluded keepend extend syntax match rplPreProc "\_^#\s*\(define\|undef\)\>" syntax match rplPreProc "\_^#\s*\(warning\|error\)\>" syntax match rplPreCondit "\_^#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" syntax match rplIncluded contained "\<<\s*\S*\s*>\>" syntax match rplInclude "\_^#\s*include\>\s*["<]" contains=rplIncluded,rplString syntax match rplExecPath "\%^\_^#!\p*\_$" syntax match rplInteger "\(^\|\s\+\)[-+]\=\d\+\ze\($\|\s\+\)" syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\(\d*\)\=\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign syntax match rplFloat "\(^\|\s\+\)[-+]\=\d\+\([\.,]\d*\)\=[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign syntax match rplFloat "\(^\|\s\+\)[-+]\=\(\d*\)\=[\.,]\d\+[eE]\([-+]\)\=\d\+\ze\($\|\s\+\)" contains=ALLBUT,rplPoint,rplSign syntax match rplPoint "\<[\.,]\>" syntax match rplSign "\<[+-]\>" syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=\s*,\s*[-+]\=\(\d*\)\=\.\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" syntax match rplComplex "\(^\|\s\+\)([-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=\s*\.\s*[-+]\=\(\d*\)\=,\=\d*\([eE][-+]\=\d\+\)\=)\ze\($\|\s\+\)" syntax match rplStringGuilles "\\\"" syntax match rplStringAntislash "\\\\" syntax region rplString start=+\(^\|\s\+\)"+ end=+"\ze\($\|\s\+\)+ contains=rplStringGuilles,rplStringAntislash syntax match rplTab "\t" transparent hi def link rplControl Statement hi def link rplStatement Statement hi def link rplAlgConditional Conditional hi def link rplConditional Repeat hi def link rplConditionalError Error hi def link rplRepeat Repeat hi def link rplCycle Repeat hi def link rplUntil Repeat hi def link rplIntrinsic Special hi def link rplStorage StorageClass hi def link rplStorageExpr StorageClass hi def link rplStorageError Error hi def link rplReadWrite rplIntrinsic hi def link rplOperator Operator hi def link rplList Special hi def link rplArray Special hi def link rplConstant Identifier hi def link rplExpr Type hi def link rplString String hi def link rplStringGuilles String hi def link rplStringAntislash String hi def link rplBinary Boolean hi def link rplOctal Boolean hi def link rplDecimal Boolean hi def link rplHexadecimal Boolean hi def link rplInteger Number hi def link rplFloat Float hi def link rplComplex Float hi def link rplBoolean Identifier hi def link rplObsolete Todo hi def link rplPreCondit PreCondit hi def link rplInclude Include hi def link rplIncluded rplString hi def link rplInclude Include hi def link rplExecPath Include hi def link rplPreProc PreProc hi def link rplComment Comment hi def link rplCommentLine Comment hi def link rplCommentString Comment hi def link rplSubDelimitor rplStorage hi def link rplCommentError Error hi def link rplParenError Error hi def link rplSubError Error hi def link rplArrayError Error hi def link rplListError Error hi def link rplTab Error hi def link rplBinaryError Error hi def link rplOctalError Error hi def link rplDecimalError Error hi def link rplHexadecimalError Error let b:current_syntax = "rpl" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime syntax/rst.vim unlet! b:current_syntax syntax include @R syntax/r.vim if exists("g:rrst_syn_hl_chunk") syntax match rrstChunkDelim "^\.\. {r" contained syntax match rrstChunkDelim "}$" contained else syntax match rrstChunkDelim "^\.\. {r .*}$" contained endif syntax match rrstChunkDelim "^\.\. \.\.$" contained syntax region rrstChunk start="^\.\. {r.*}$" end="^\.\. \.\.$" contains=@R,rrstChunkDelim keepend transparent fold syntax match rrstInlineDelim "`" contained syntax match rrstInlineDelim ":r:" contained syntax region rrstInline start=":r: *`" skip=/\\\\\|\\`/ end="`" contains=@R,rrstInlineDelim keepend hi def link rrstChunkDelim Special hi def link rrstInlineDelim Special let b:current_syntax = "rrst" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference syn region rstLiteralBlock matchgroup=rstDelimiter \ start='::\_s*\n\ze\z(\s\+\)' skip='^$' end='^\z1\@!' \ contains=@NoSpell syn region rstQuotedLiteralBlock matchgroup=rstDelimiter \ start="::\_s*\n\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)" \ end='^\z1\@!' contains=@NoSpell syn region rstDoctestBlock oneline display matchgroup=rstDelimiter \ start='^>>>\s' end='^$' syn region rstTable transparent start='^\n\s*+[-=+]\+' end='^$' \ contains=rstTableLines,@rstCruft syn match rstTableLines contained display '|\|+\%(=\+\|-\+\)\=' syn region rstSimpleTable transparent \ start='^\n\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' \ end='^$' \ contains=rstSimpleTableLines,@rstCruft syn match rstSimpleTableLines contained display \ '^\%(\s*\)\@>\%(\%(=\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(=\+\)\@>\%(\s*\)\@>\)\+\)\@>$' syn match rstSimpleTableLines contained display \ '^\%(\s*\)\@>\%(\%(-\+\)\@>\%(\s\+\)\@>\)\%(\%(\%(-\+\)\@>\%(\s*\)\@>\)\+\)\@>$' syn cluster rstDirectives contains=rstFootnote,rstCitation, \ rstHyperlinkTarget,rstExDirective syn match rstExplicitMarkup '^\s*\.\.\_s' \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition let s:ReferenceName = '[[:alnum:]]\%([-_.:+]\?[[:alnum:]]\+\)*' syn keyword rstTodo contained FIXME TODO XXX NOTE execute 'syn region rstComment contained' . \ ' start=/.*/' \ ' skip=+^$+' . \ ' end=/^\s\@!/ contains=rstTodo' execute 'syn region rstFootnote contained matchgroup=rstDirective' . \ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' . \ ' skip=+^$+' . \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' execute 'syn region rstCitation contained matchgroup=rstDirective' . \ ' start=+\[' . s:ReferenceName . '\]\_s+' . \ ' skip=+^$+' . \ ' end=+^\s\@!+ contains=@rstCruft,@NoSpell' syn region rstHyperlinkTarget contained matchgroup=rstDirective \ start='_\%(_\|[^:\\]*\%(\\.[^:\\]*\)*\):\_s' skip=+^$+ end=+^\s\@!+ syn region rstHyperlinkTarget contained matchgroup=rstDirective \ start='_`[^`\\]*\%(\\.[^`\\]*\)*`:\_s' skip=+^$+ end=+^\s\@!+ syn region rstHyperlinkTarget matchgroup=rstDirective \ start=+^__\_s+ skip=+^$+ end=+^\s\@!+ execute 'syn region rstExDirective contained matchgroup=rstDirective' . \ ' start=+' . s:ReferenceName . '::\_s+' . \ ' skip=+^$+' . \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock' execute 'syn match rstSubstitutionDefinition contained' . \ ' /|.*|\_s\+/ nextgroup=@rstDirectives' function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) execute 'syn region rst' . a:name . \ ' start=+' . a:char_left . '\zs' . a:start . \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' . \ a:middle . \ ' end=+\S' . a:end . '\ze\%($\|\s\|[''"’)\]}>/:.,;!?\\-]\)+' endfunction function! s:DefineInlineMarkup(name, start, middle, end) let middle = a:middle != "" ? \ (' skip=+\\\\\|\\' . a:middle . '+') : \ "" call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, "'", "'") call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '"', '"') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '(', ')') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\[', '\]') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '{', '}') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '<', '>') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '’', '’') call s:DefineOneInlineMarkup(a:name, a:start, middle, a:end, '\%(^\|\s\|\%ua0\|[/:]\)', '') execute 'syn match rst' . a:name . \ ' +\%(^\|\s\|\%ua0\|[''"([{/:.,;!?\\-]\)+' execute 'hi def link rst' . a:name . 'Delimiter' . ' rst' . a:name endfunction call s:DefineInlineMarkup('Emphasis', '\*', '\*', '\*') call s:DefineInlineMarkup('StrongEmphasis', '\*\*', '\*', '\*\*') call s:DefineInlineMarkup('InterpretedTextOrHyperlinkReference', '`', '`', '`_\{0,2}') call s:DefineInlineMarkup('InlineLiteral', '``', "", '``') call s:DefineInlineMarkup('SubstitutionReference', '|', '|', '|_\{0,2}') call s:DefineInlineMarkup('InlineInternalTargets', '_`', '`', '`') syn match rstSections "\v^%(([=`:.'"~^_*+#-])\1+\n)?.{1,2}\n([=`:.'"~^_*+#-])\2+$" \ contains=@Spell syn match rstSections "\v^%(([=`:.'"~^_*+#-])\1{2,}\n)?.{3,}\n([=`:.'"~^_*+#-])\2{2,}$" \ contains=@Spell execute 'syn match rstFootnoteReference contains=@NoSpell' . \ ' +\%(\s\|^\)\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+' execute 'syn match rstCitationReference contains=@NoSpell' . \ ' +\%(\s\|^\)\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+' execute 'syn match rstHyperlinkReference' . \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/' syn match rstStandaloneHyperlink contains=@NoSpell \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" syn region rstCodeBlock contained matchgroup=rstDirective \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s\+.*\_s*\n\ze\z(\s\+\)+ \ skip=+^$+ \ end=+^\z1\@!+ \ contains=@NoSpell syn cluster rstDirectives add=rstCodeBlock if !exists('g:rst_syntax_code_list') let g:rst_syntax_code_list = { \ 'vim': ['vim'], \ 'java': ['java'], \ 'cpp': ['cpp', 'c++'], \ 'lisp': ['lisp'], \ 'php': ['php'], \ 'python': ['python'], \ 'perl': ['perl'], \ 'sh': ['sh'], \ } elseif type(g:rst_syntax_code_list) == type([]) let s:old_spec = g:rst_syntax_code_list let g:rst_syntax_code_list = {} for s:elem in s:old_spec let g:rst_syntax_code_list[s:elem] = [s:elem] endfor endif for s:filetype in keys(g:rst_syntax_code_list) unlet! b:current_syntax let prior_isk = &l:iskeyword let s:alias_pattern = '' \.'\%(' \.join(g:rst_syntax_code_list[s:filetype], '\|') \.'\)' exe 'syn include @rst'.s:filetype.' syntax/'.s:filetype.'.vim' exe 'syn region rstDirective'.s:filetype \.' matchgroup=rstDirective fold' \.' start="\c\%(sourcecode\|code\%(-block\)\=\)::\s\+'.s:alias_pattern.'\_s*\n\ze\z(\s\+\)"' \.' skip=#^$#' \.' end=#^\z1\@!#' \.' contains=@NoSpell,@rst'.s:filetype exe 'syn cluster rstDirectives add=rstDirective'.s:filetype if &l:iskeyword !=# prior_isk let &l:iskeyword = prior_isk endif unlet! prior_isk endfor syntax spell toplevel syn sync minlines=50 linebreaks=2 hi def link rstTodo Todo hi def link rstComment Comment hi def link rstSections Title hi def link rstTransition rstSections hi def link rstLiteralBlock String hi def link rstQuotedLiteralBlock String hi def link rstDoctestBlock PreProc hi def link rstTableLines rstDelimiter hi def link rstSimpleTableLines rstTableLines hi def link rstExplicitMarkup rstDirective hi def link rstDirective Keyword hi def link rstFootnote String hi def link rstCitation String hi def link rstHyperlinkTarget String hi def link rstExDirective String hi def link rstSubstitutionDefinition rstDirective hi def link rstDelimiter Delimiter hi def link rstInterpretedTextOrHyperlinkReference Identifier hi def link rstInlineLiteral String hi def link rstSubstitutionReference PreProc hi def link rstInlineInternalTargets Identifier hi def link rstFootnoteReference Identifier hi def link rstCitationReference Identifier hi def link rstHyperLinkReference Identifier hi def link rstStandaloneHyperlink Identifier hi def link rstCodeBlock String if exists('g:rst_use_emphasis_colors') hi def rstEmphasis ctermfg=13 term=italic cterm=italic gui=italic hi def rstStrongEmphasis ctermfg=1 term=bold cterm=bold gui=bold else hi def rstEmphasis term=italic cterm=italic gui=italic hi def rstStrongEmphasis term=bold cterm=bold gui=bold endif let b:current_syntax = "rst" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match syn match rtfControlWord "\\[a-z]\+[\-]\=[0-9]*" syn match rtfNewControlWord "\\\*\\[a-z]\+[\-]\=[0-9]*" syn match rtfControlSymbol "\\[^a-zA-Z\*\{\}\\']" syn match rtfCharacter "\\\\" syn match rtfCharacter "\\{" syn match rtfCharacter "\\}" syn match rtfCharacter "\\'[A-Za-z0-9][A-Za-z0-9]" syn match rtfUnicodeCharacter "\\u[0-9][0-9]*" syn match rtfRed "\\red[0-9][0-9]*" syn match rtfGreen "\\green[0-9][0-9]*" syn match rtfBlue "\\blue[0-9][0-9]*" syn match rtfFootNote "[#$K+]{\\footnote.*}" contains=rtfControlWord,rtfNewControlWord hi def link rtfControlWord Statement hi def link rtfNewControlWord Special hi def link rtfControlSymbol Constant hi def link rtfCharacter Character hi def link rtfUnicodeCharacter SpecialChar hi def link rtfFootNote Comment hi rtfRed term=underline cterm=underline ctermfg=DarkRed gui=underline guifg=DarkRed hi rtfGreen term=underline cterm=underline ctermfg=DarkGreen gui=underline guifg=DarkGreen hi rtfBlue term=underline cterm=underline ctermfg=DarkBlue gui=underline guifg=DarkBlue hi def link rtfRed rtfRed hi def link rtfGreen rtfGreen hi def link rtfBlue rtfBlue let b:current_syntax = "rtf" if exists("b:current_syntax") finish endif let s:cpo_sav = &cpo set cpo&vim if has("folding") && exists("ruby_fold") setlocal foldmethod=syntax endif let s:foldable_groups = split( \ get( \ b:, \ 'ruby_foldable_groups', \ get(g:, 'ruby_foldable_groups', 'ALL') \ ) \ ) function! s:foldable(...) abort if index(s:foldable_groups, 'ALL') > -1 return 1 endif for l:i in a:000 if index(s:foldable_groups, l:i) > -1 return 1 endif endfor return 0 endfunction " }}} syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo,rubyModuleName,rubyClassName,rubySymbolDelimiter if exists("ruby_space_errors") if !exists("ruby_no_trail_space_error") syn match rubySpaceError display excludenl "\s\+$" endif if !exists("ruby_no_tab_space_error") syn match rubySpaceError display " \+\t"me=e-1 endif endif if exists("ruby_operators") syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@\|<=\|\%(<\|\>\|>=\|=\@1\|\*\*\|\.\.\.\|\.\.\|::" syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!=" syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop endif syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display syn match rubyQuoteEscape "\\[\\']" contained display syn region rubyInterpolation matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop syn match rubyInterpolation "#\%(\$\|@@\=\)\w\+" display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable syn match rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained syn match rubyInterpolation "#\$\%(-\w\|\W\)" display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable syn match rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)" display contained syn region rubyNoInterpolation start="\\#{" end="}" contained syn match rubyNoInterpolation "\\#{" display contained syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained syn match rubyNoInterpolation "\\#\$\W" display contained syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline syn match rubyRegexpCharClass "\\[DdHhSsWw]" contained display syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained syn match rubyRegexpEscape "\\[].*?+^$|\\/(){}[]" contained syn match rubyRegexpQuantifier "[*?+][?+]\=" contained display syn match rubyRegexpQuantifier "{\d\+\%(,\d*\)\=}?\=" contained display syn match rubyRegexpAnchor "[$^]\|\\[ABbGZz]" contained display syn match rubyRegexpDot "\." contained display syn match rubyRegexpSpecial "|" contained display syn match rubyRegexpSpecial "\\[1-9]\d\=\d\@!" contained display syn match rubyRegexpSpecial "\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display syn match rubyRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display syn match rubyRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display syn match rubyRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1" display syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@" display syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent syn match rubyClassName "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" contained syn match rubyModuleName "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" contained syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)" syn match rubySymbolDelimiter ":" contained syn match rubySymbol "[]})\"':]\@1\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)" contains=rubySymbolDelimiter syn match rubySymbol "[]})\"':]\@1_,;:!?/.'"@$*\&+0]\)" contains=rubySymbolDelimiter syn match rubySymbol "[]})\"':]\@1\@!\)\=" contains=rubySymbolDelimiter if s:foldable(':') syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"':]\@1\%(\s*(\)*\s*(\@=" syn match rubyBlockParameter "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained syn region rubyBlockParameterList start="\%(\%(\\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter syn match rubyInvalidVariable "$[^ A-Za-z_-]" syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]# syn match rubyPredefinedVariable "$\d\+" display syn match rubyPredefinedVariable "$_\>" display syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>" display syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>" display syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@!" if s:foldable('/') syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold else syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/\%([ \t=]\|$\)\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial endif if s:foldable('%') syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold else syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial endif let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : '' exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' . \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' . \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster if s:foldable('%') syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold else syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial endif if s:foldable('%') syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold else syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" endif if s:foldable('%') syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold else syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial endif if s:foldable('%') syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold else syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape endif syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyMethodName,rubyBlockParameter syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!" syn match rubyOperator "\[?!]\@!" syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") syn match rubyDefine "\" nextgroup=rubyAliasDeclaration skipwhite skipnl syn match rubyDefine "\" nextgroup=rubyMethodDeclaration skipwhite skipnl syn match rubyDefine "\" nextgroup=rubyMethodName skipwhite skipnl syn match rubyClass "\" nextgroup=rubyClassDeclaration skipwhite skipnl syn match rubyModule "\" nextgroup=rubyModuleDeclaration skipwhite skipnl if s:foldable('def') syn region rubyMethodBlock start="\" matchgroup=rubyDefine end="\%(\" contains=ALLBUT,@rubyNotTop fold else syn region rubyMethodBlock start="\" matchgroup=rubyDefine end="\%(\" contains=ALLBUT,@rubyNotTop endif if s:foldable('class') syn region rubyBlock start="\" matchgroup=rubyClass end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyBlock start="\" matchgroup=rubyClass end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('module') syn region rubyBlock start="\" matchgroup=rubyModule end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyBlock start="\" matchgroup=rubyModule end="\" contains=ALLBUT,@rubyNotTop endif syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl syn match rubyConditionalModifier "\<\%(if\|unless\)\>" syn match rubyRepeatModifier "\<\%(while\|until\)\>" if s:foldable('do') syn region rubyDoBlock matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyDoBlock matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('{') syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold else syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop endif if s:foldable('[') syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@" end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyBlockExpression matchgroup=rubyControl start="\" end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('case') syn region rubyCaseExpression matchgroup=rubyConditional start="\" end="\" contains=ALLBUT,@rubyNotTop fold else syn region rubyCaseExpression matchgroup=rubyConditional start="\" end="\" contains=ALLBUT,@rubyNotTop endif if s:foldable('if') syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" end="\%(\%(\%(\.\@1" contains=ALLBUT,@rubyNotTop fold else syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" end="\%(\%(\%(\.\@1" contains=ALLBUT,@rubyNotTop endif syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression syn match rubyExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyOptionalDo end="\%(\\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop if s:foldable('for') syn region rubyRepeatExpression start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyRepeat end="\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold else syn region rubyRepeatExpression start="\[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@" matchgroup=rubyRepeat end="\" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine endif if !exists("ruby_minlines") let ruby_minlines = 500 endif exec "syn sync minlines=" . ruby_minlines else syn match rubyControl "\[?!]\@!" nextgroup=rubyMethodDeclaration skipwhite skipnl syn match rubyControl "\[?!]\@!" nextgroup=rubyClassDeclaration skipwhite skipnl syn match rubyControl "\[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!" syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!" endif if !exists("ruby_no_special_methods") syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function syn match rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" syn keyword rubyAttribute attr_accessor attr_reader attr_writer syn match rubyControl "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)" syn keyword rubyEval eval class_eval instance_eval module_eval syn keyword rubyException raise fail catch throw syn keyword rubyInclude autoload gem load require require_relative syn keyword rubyKeyword callcc caller lambda proc syn match rubyMacro "\[?!]\@!" syn keyword rubyMacro extend prepend refine using syn keyword rubyMacro alias_method define_method define_singleton_method remove_method undef_method endif syn match rubySharpBang "\%^#!.*" display syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell if !exists("ruby_no_comment_fold") && s:foldable('#') syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold else syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell endif syn match rubyKeywordAsMethod "\%(\%(\.\@1\)" transparent contains=NONE syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1 syn match rubySymbol "[]})\"':]\@1/ syn keyword rustInvalidBareKeyword crate syn keyword rustPubScopeCrate crate contained syn match rustPubScopeDelim /[()]/ contained syn match rustPubScope /([^()]*)/ contained contains=rustPubScopeDelim,rustPubScopeCrate,rustSuper,rustModPath,rustModPathSep,rustSelf transparent syn keyword rustExternCrate crate contained nextgroup=rustIdentifier,rustExternCrateString skipwhite skipempty syn match rustExternCrateString /".*"\_s*as/ contained nextgroup=rustIdentifier skipwhite transparent skipempty contains=rustString,rustOperator syn keyword rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn region rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount syn match rustMacroRepeatCount ".\?[*+]" contained syn match rustMacroVariable "$\w\+" syn keyword rustReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro syn keyword rustType isize usize char bool u8 u16 u32 u64 u128 f32 syn keyword rustType f64 i8 i16 i32 i64 i128 str Self syn keyword rustTrait Copy Send Sized Sync syn keyword rustTrait Drop Fn FnMut FnOnce syn keyword rustTrait Box syn keyword rustTrait ToOwned syn keyword rustTrait Clone syn keyword rustTrait PartialEq PartialOrd Eq Ord syn keyword rustTrait AsRef AsMut Into From syn keyword rustTrait Default syn keyword rustTrait Iterator Extend IntoIterator syn keyword rustTrait DoubleEndedIterator ExactSizeIterator syn keyword rustEnum Option syn keyword rustEnumVariant Some None syn keyword rustEnum Result syn keyword rustEnumVariant Ok Err syn keyword rustTrait SliceConcatExt syn keyword rustTrait String ToString syn keyword rustTrait Vec syn keyword rustSelf self syn keyword rustBoolean true false syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3 syn match rustModPathSep "::" syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1 syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::(); syn match rustOperator display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?" syn match rustSigil display /&\s\+[&~@*][^)= \t\r\n]/he=e-1,me=e-1 syn match rustSigil display /[&~@*][^)= \t\r\n]/he=e-1,me=e-1 syn match rustOperator display "&&\|||" syn match rustArrowCharacter display "->" syn match rustQuestionMark display "?\([a-zA-Z]\+\)\@!" syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustPanic syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustPanic syn match rustEscapeError display contained /\\./ syn match rustEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ syn match rustEscapeUnicode display contained /\\u{\x\{1,6}}/ syn match rustStringContinuation display contained /\\\n\s*/ syn region rustString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell syn region rustString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDerive,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError syn region rustDerive start="derive(" end=")" contained contains=rustDeriveTrait syn keyword rustDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!" syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)" syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u{\x\{1,6}}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" syn match rustLabel display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*:" syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/ syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ syn match rustCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode syn match rustCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid syn match rustShebang /\%^#![^[].*/ syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell syn region rustCommentLineDocError start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell contained syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell syn region rustCommentBlockDocError matchgroup=rustCommentBlockDocError start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent syn region rustCommentBlockDocNestError matchgroup=rustCommentBlockDocError start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained transparent syn keyword rustTodo contained TODO FIXME XXX NB NOTE syn region rustFoldBraces start="{" end="}" transparent fold hi def link rustDecNumber rustNumber hi def link rustHexNumber rustNumber hi def link rustOctNumber rustNumber hi def link rustBinNumber rustNumber hi def link rustIdentifierPrime rustIdentifier hi def link rustTrait rustType hi def link rustDeriveTrait rustTrait hi def link rustMacroRepeatCount rustMacroRepeatDelimiters hi def link rustMacroRepeatDelimiters Macro hi def link rustMacroVariable Define hi def link rustSigil StorageClass hi def link rustEscape Special hi def link rustEscapeUnicode rustEscape hi def link rustEscapeError Error hi def link rustStringContinuation Special hi def link rustString String hi def link rustCharacterInvalid Error hi def link rustCharacterInvalidUnicode rustCharacterInvalid hi def link rustCharacter Character hi def link rustNumber Number hi def link rustBoolean Boolean hi def link rustEnum rustType hi def link rustEnumVariant rustConstant hi def link rustConstant Constant hi def link rustSelf Constant hi def link rustFloat Float hi def link rustArrowCharacter rustOperator hi def link rustOperator Operator hi def link rustKeyword Keyword hi def link rustTypedef Keyword " More precise is Typedef, but it doesn't feel right for Rust hi def link rustStructure Keyword " More precise is Structure hi def link rustUnion rustStructure hi def link rustPubScopeDelim Delimiter hi def link rustPubScopeCrate rustKeyword hi def link rustSuper rustKeyword hi def link rustReservedKeyword Error hi def link rustRepeat Conditional hi def link rustConditional Conditional hi def link rustIdentifier Identifier hi def link rustCapsIdent rustIdentifier hi def link rustModPath Include hi def link rustModPathSep Delimiter hi def link rustFunction Function hi def link rustFuncName Function hi def link rustFuncCall Function hi def link rustShebang Comment hi def link rustCommentLine Comment hi def link rustCommentLineDoc SpecialComment hi def link rustCommentLineDocError Error hi def link rustCommentBlock rustCommentLine hi def link rustCommentBlockDoc rustCommentLineDoc hi def link rustCommentBlockDocError Error hi def link rustAssert PreCondit hi def link rustPanic PreCondit hi def link rustMacro Macro hi def link rustType Type hi def link rustTodo Todo hi def link rustAttribute PreProc hi def link rustDerive PreProc hi def link rustDefault StorageClass hi def link rustStorage StorageClass hi def link rustObsoleteStorage Error hi def link rustLifetime Special hi def link rustLabel Label hi def link rustInvalidBareKeyword Error hi def link rustExternCrate rustKeyword hi def link rustObsoleteExternMod Error hi def link rustBoxPlacementParens Delimiter hi def link rustQuestionMark Special syn sync minlines=200 syn sync maxlines=500 let b:current_syntax = "rust" if exists("b:current_syntax") finish endif syn case ignore syn match sambaParameter /^[a-zA-Z \t]\+=/ contains=sambaKeyword syn match sambaSection /^\s*\[[a-zA-Z0-9_\-.$ ]\+\]/ syn match sambaMacro /%[SPugUGHvhmLMNpRdaITD]/ syn match sambaMacro /%$([a-zA-Z0-9_]\+)/ syn match sambaComment /^\s*[;#].*/ syn match sambaContinue /\\$/ syn keyword sambaBoolean true false yes no syn keyword sambaKeyword contained account acl action add address admin aliases syn keyword sambaKeyword contained allow alternate always announce anonymous syn keyword sambaKeyword contained archive as auto available bind blocking syn keyword sambaKeyword contained bmpx break browsable browse browseable ca syn keyword sambaKeyword contained cache case casesignames cert certDir syn keyword sambaKeyword contained certFile change char character chars chat syn keyword sambaKeyword contained ciphers client clientcert code coding syn keyword sambaKeyword contained command comment compatibility config syn keyword sambaKeyword contained connections contention controller copy syn keyword sambaKeyword contained create deadtime debug debuglevel default syn keyword sambaKeyword contained delete deny descend dfree dir directory syn keyword sambaKeyword contained disk dns domain domains dont dos dot drive syn keyword sambaKeyword contained driver encrypt encrypted equiv exec fake syn keyword sambaKeyword contained file files filetime filetimes filter follow syn keyword sambaKeyword contained force fstype getwd group groups guest syn keyword sambaKeyword contained hidden hide home homedir hosts include syn keyword sambaKeyword contained interfaces interval invalid keepalive syn keyword sambaKeyword contained kernel key ldap length level level2 limit syn keyword sambaKeyword contained links list lm load local location lock syn keyword sambaKeyword contained locking locks log logon logons logs lppause syn keyword sambaKeyword contained lpq lpresume lprm machine magic mangle syn keyword sambaKeyword contained mangled mangling map mask master max mem syn keyword sambaKeyword contained message min mode modes mux name names syn keyword sambaKeyword contained netbios nis notify nt null offset ok ole syn keyword sambaKeyword contained only open oplock oplocks options order os syn keyword sambaKeyword contained output packet page panic passwd password syn keyword sambaKeyword contained passwords path permissions pipe port ports syn keyword sambaKeyword contained postexec postscript prediction preexec syn keyword sambaKeyword contained prefered preferred preload preserve print syn keyword sambaKeyword contained printable printcap printer printers syn keyword sambaKeyword contained printing program protocol proxy public syn keyword sambaKeyword contained queuepause queueresume raw read readonly syn keyword sambaKeyword contained realname remote require resign resolution syn keyword sambaKeyword contained resolve restrict revalidate rhosts root syn keyword sambaKeyword contained script security sensitive server servercert syn keyword sambaKeyword contained service services set share shared short syn keyword sambaKeyword contained size smb smbrun socket space ssl stack stat syn keyword sambaKeyword contained status strict string strip suffix support syn keyword sambaKeyword contained symlinks sync syslog system time timeout syn keyword sambaKeyword contained times timestamp to trusted ttl unix update syn keyword sambaKeyword contained use user username users valid version veto syn keyword sambaKeyword contained volume wait wide wins workgroup writable syn keyword sambaKeyword contained write writeable xmit syn keyword sambaKeyword contained hook hires pid uid close rootpreexec syn keyword sambaKeyword contained utmp wtmp hostname consolidate syn keyword sambaKeyword contained inherit source environment syn keyword sambaKeyword contained addprinter auth browsing deleteprinter syn keyword sambaKeyword contained enhanced enumports filemode gid host jobs syn keyword sambaKeyword contained lanman msdfs object os2 posix processes syn keyword sambaKeyword contained scope separator shell show smbd template syn keyword sambaKeyword contained total vfs winbind wizard syn keyword sambaKeyword contained large obey pam readwrite restrictions syn keyword sambaKeyword contained unreadable syn keyword sambaKeyword contained acls allocate bytes count csc devmode syn keyword sambaKeyword contained disable dn egd entropy enum extensions mmap syn keyword sambaKeyword contained policy spin spoolss syn keyword sambaKeyword contained abort afs algorithmic backend syn keyword sambaKeyword contained charset cups defer display syn keyword sambaKeyword contained enable idmap kerberos lookups syn keyword sambaKeyword contained methods modules nested NIS ntlm NTLMv2 syn keyword sambaKeyword contained objects paranoid partners passdb syn keyword sambaKeyword contained plaintext prefix primary private syn keyword sambaKeyword contained profile quota realm replication syn keyword sambaKeyword contained reported rid schannel sendfile sharing syn keyword sambaKeyword contained shutdown signing special spnego syn keyword sambaKeyword contained store unknown unwriteable hi def link sambaParameter Normal hi def link sambaKeyword Type hi def link sambaSection Statement hi def link sambaMacro PreProc hi def link sambaComment Comment hi def link sambaContinue Operator hi def link sambaBoolean Constant let b:current_syntax = "samba" if version < 600 syntax clear elseif exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn keyword sasOperator and eq ge gt in le lt ne not of or syn keyword sasReserved _all_ _automatic_ _char_ _character_ _data_ _infile_ _last_ _n_ _name_ _null_ _num_ _numeric_ _temporary_ _user_ _webout_ syn region sasString start=+'+ skip=+''+ end=+'+ contains=@Spell syn region sasString start=+"+ skip=+""+ end=+"+ contains=sasMacroVariable,@Spell syn match sasNumber /\v<\d+%(\.\d+)=%(>|e[\-+]=\d+>)/ display syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=:\d{2}:\d{2}%(:\d{2})=%(am|pm)\1dt>/ display syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=\1d>/ display syn match sasDateTime /\v(['"])\d{2}:\d{2}%(:\d{2})=%(am|pm)\1t>/ display syn keyword sasTodo todo tbd fixme contained syn region sasComment start='/\*' end='\*/' contains=sasTodo syn region sasComment start='\v%(^|;)\s*\zs\%=\*' end=';'me=s-1 contains=sasTodo syn region sasSectLbl matchgroup=sasSectLblEnds start='/\*\*\s*' end='\s*\*\*/' concealends syn match sasMacroVariable '\v\&+\w+%(\.\w+)=' display syn match sasMacroReserved '\v\%%(abort|by|copy|display|do|else|end|global|goto|if|include|input|let|list|local|macro|mend|put|return|run|symdel|syscall|sysexec|syslput|sysrput|then|to|until|window|while)>' display syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%\w+\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%q=sysfunc\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction,sasDataStepFunction syn cluster sasBasicSyntax contains=sasOperator,sasReserved,sasNumber,sasDateTime,sasString,sasComment,sasMacroReserved,sasMacroFunction,sasMacroVariable,sasSectLbl syn match sasFormat '\v\$\w+\.' display contained syn match sasFormat '\v<\w+\.%(\d+>)=' display contained syn region sasFormatContext start='.' end=';'me=s-1 contained contains=@sasBasicSyntax,sasFormat syn keyword sasGlobalStatementKeyword catname dm endsas filename footnote footnote1 footnote2 footnote3 footnote4 footnote5 footnote6 footnote7 footnote8 footnote9 footnote10 missing libname lock ods options page quit resetline run sasfile skip sysecho title title1 title2 title3 title4 title5 title6 title7 title8 title9 title10 contained syn keyword sasGlobalStatementODSKeyword chtml csvall docbook document escapechar epub epub2 epub3 exclude excel graphics html html3 html5 htmlcss imode listing markup output package path pcl pdf preferences phtml powerpoint printer proclabel proctitle ps results rtf select show tagsets trace usegopt verify wml contained syn match sasGlobalStatement '\v%(^|;)\s*\zs\h\w*>' display transparent contains=sasGlobalStatementKeyword syn match sasGlobalStatement '\v%(^|;)\s*\zsods>' display transparent contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn keyword sasDataStepFunctionName abs addr addrlong airy allcomb allperm anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 attrc attrn band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat catq cats catt catx cdf ceil ceilz cexist char choosec choosen cinv close cmiss cnonct coalesce coalescec collate comb compare compbl compfuzz compged complev compound compress constant convx convxp cos cosh cot count countc countw csc css cumipmt cumprinc curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datdif date datejul datepart datetime day dclose dcreate depdb depdbsl depsl depsyd deptab dequote deviance dhms dif digamma dim dinfo divide dnum dopen doptname doptnum dosubl dread dropnote dsname dsncatlgd dur durp effrate envlen erf erfc euclid exist exp fact fappend fclose fcol fcopy fdelete fetch fetchobs fexist fget fileexist filename fileref finance find findc findw finfo finv fipname fipnamel fipstate first floor floorz fmtinfo fnonct fnote fopen foptname foptnum fpoint fpos fput fread frewind frlen fsep fuzz fwrite gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz getoption getvarc getvarn graycode harmean harmeanz hbound hms holiday holidayck holidaycount holidayname holidaynx holidayny holidaytest hour htmldecode htmlencode ibessel ifc ifn index indexc indexw input inputc inputn int intcindex intck intcycle intfit intfmt intget intindex intnx intrr intseas intshift inttest intz iorcmsg ipmt iqr irr jbessel juldate juldate7 kurtosis lag largest lbound lcm lcomb left length lengthc lengthm lengthn lexcomb lexcombi lexperk lexperm lfact lgamma libname libref log log1px log10 log2 logbeta logcdf logistic logpdf logsdf lowcase lperm lpnorm mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modexist module modulec modulen modz month mopen mort msplint mvalid contained syn keyword sasDataStepFunctionName n netpv nliteral nmiss nomrate normal notalnum notalpha notcntrl notdigit note notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv nvalid nwkdom open ordinal pathname pctl pdf peek peekc peekclong peeklong perm pmt point poisson ppmt probbeta probbnml probbnrm probchi probf probgam probhypr probit probmc probnegb probnorm probt propcase prxchange prxmatch prxparen prxparse prxposn ptrlongadd put putc putn pvp qtr quantile quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni rename repeat resolve reverse rewind right rms round rounde roundz saving savings scan sdf sec second sha256 sha256hex sha256hmachex sign sin sinh skewness sleep smallest soapweb soapwebmeta soapwipservice soapwipsrs soapws soapwsmeta soundex spedis sqrt squantile std stderr stfips stname stnamel strip subpad substr substrn sum sumabs symexist symget symglobl symlocal sysexist sysget sysmsg sysparm sysprocessid sysprocessname sysprod sysrc system tan tanh time timepart timevalue tinv tnonct today translate transtrn tranwrd trigamma trim trimn trunc tso typeof tzoneid tzonename tzoneoff tzones2u tzoneu2s uniform upcase urldecode urlencode uss uuidgen var varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vtype vtypex vvalue vvaluex week weekday whichc whichn wto year yieldp yrdif yyq zipcity zipcitydistance zipfips zipname zipnamel zipstate contained syn keyword sasDataStepCallRoutineName allcomb allcombi allperm cats catt catx compcost execute graycode is8601_convert label lexcomb lexcombi lexperk lexperm logistic missing module poke pokelong prxchange prxdebug prxfree prxnext prxposn prxsubstr ranbin rancau rancomb ranexp rangam rannor ranperk ranperm ranpoi rantbl rantri ranuni scan set sleep softmax sortc sortn stdize streaminit symput symputx system tanh tso vname vnext wto contained syn region sasDataStepFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction syn region sasDataStepFunctionFormatContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction,sasFormat syn match sasDataStepFunction '\v<\w+\ze\(' contained contains=sasDataStepFunctionName,sasDataStepCallRoutineName nextgroup=sasDataStepFunctionContext syn match sasDataStepFunction '\v%(input|put)\ze\(' contained contains=sasDataStepFunctionName nextgroup=sasDataStepFunctionFormatContext syn keyword sasDataStepHashMethodName add check clear definedata definedone definekey delete do_over equals find find_next find_prev first has_next has_prev last next output prev ref remove removedup replace replacedup reset_dup setcur sum sumdup contained syn region sasDataStepHashMethodContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction syn match sasDataStepHashMethod '\v\.\w+\ze\(' contained contains=sasDataStepHashMethodName nextgroup=sasDataStepHashMethodContext syn keyword sasDataStepHashAttributeName item_size num_items contained syn match sasDataStepHashAttribute '\v\.\w+>\ze\_[^(]' display contained contains=sasDataStepHashAttributeName syn keyword sasDataStepControl continue do end go goto if leave link otherwise over return select to until when while contained syn keyword sasDataStepControl else then contained nextgroup=sasDataStepStatementKeyword skipwhite skipnl skipempty syn keyword sasDataStepHashOperator _new_ contained syn keyword sasDataStepStatementKeyword abort array attrib by call cards cards4 datalines datalines4 dcl declare delete describe display drop error execute file format infile informat input keep label length lines lines4 list lostcard merge modify output put putlog redirect remove rename replace retain set stop update where window contained syn keyword sasDataStepStatementHashKeyword hash hiter javaobj contained syn match sasDataStepStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDataStepStatementKeyword,sasGlobalStatementKeyword syn match sasDataStepStatement '\v%(^|;)\s*\zs%(dcl|declare)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataStepStatementHashKeyword skipwhite skipnl skipempty syn match sasDataStepStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasDataStepStatement '\v%(^|;)\s*\zs%(format|informat|input|put)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn match sasDataStepStatement '\v%(^|;)\s*\zs%(cards|datalines|lines)4=\s*;' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataLine skipwhite skipnl skipempty syn region sasDataLine start='^' end='^\s*;'me=s-1 contained syn region sasDataStep matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsdata>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,@sasDataStepSyntax syn cluster sasDataStepSyntax contains=sasDataStepFunction,sasDataStepHashOperator,sasDataStepHashAttribute,sasDataStepHashMethod,sasDataStepControl,sasDataStepStatement syn keyword sasProcStatementKeyword abort age append array attrib audit block break by calid cdfplot change checkbox class classlev column compute contents copy create datarow dbencoding define delete deletefunc deletesubr delimiter device dialog dur endcomp exact exchange exclude explore fin fmtlib fontfile fontpath format formats freq function getnames guessingrows hbar hdfs histogram holidur holifin holistart holivar id idlabel informat inset invalue item key keylabel keyword label line link listfunc listsubr mapmiss mapreduce mean menu messages meta modify opentype outargs outdur outfin output outstart pageby partial picture pie pig plot ppplot printer probplot profile prompter qqplot radiobox ranks rbreak rbutton rebuild record remove rename repair report roptions save select selection separator source star start statistics struct submenu subroutine sum sumby table tables test text trantab truetype type1 types value var vbar ways weight where with write contained syn match sasProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcStatementKeyword,sasGlobalStatementKeyword syn match sasProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasProcStatement '\v%(^|;)\s*\zs%(format|informat)>' display contained contains=sasProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc%(\s+\h\w*)=>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(catalog|chart|datasets|document|plot)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement syn keyword sasGraphProcStatementKeyword add area axis bar block bubble2 byline cc ccopy cdef cdelete chart cmap choro copy delete device dial donut exclude flow format fs goptions gout grid group hbar hbar3d hbullet hslider htrafficlight id igout label legend list modify move nobyline note pattern pie pie3d plot plot2 preview prism quit rename replay select scatter speedometer star surface symbol tc tcopy tdef tdelete template tile toggle treplay vbar vbar3d vtrafficlight vbullet vslider where contained syn match sasGraphProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasGraphProcStatementKeyword,sasGlobalStatementKeyword syn match sasGraphProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasGraphProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(g3d|g3grid|ganno|gcontour|gdevice|geocode|gfont|ginside|goptions|gproject|greduce|gremove|mapimport)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(gareabar|gbarline|gchart|gkpi|gmap|gplot|gradar|greplay|gslide|gtile)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement syn keyword sasAnalyticalProcStatementKeyword absorb add array assess baseline bayes beginnodata bivar bootstrap bounds by cdfplot cells class cluster code compute condition contrast control coordinates copy cosan cov covtest coxreg der design determ deviance direct directions domain effect effectplot effpart em endnodata equality estimate exact exactoptions factor factors fcs filter fitindex format freq fwdlink gender grid group grow hazardratio height hyperprior id impjoint inset insetgroup invar invlink ippplot lincon lineqs lismod lmtests location logistic loglin lpredplot lsmeans lsmestimate manova matings matrix mcmc mean means missmodel mnar model modelaverage modeleffects monotone mstruct mtest multreg name nlincon nloptions oddsratio onecorr onesamplefreq onesamplemeans onewayanova outfiles output paired pairedfreq pairedmeans parameters parent parms partial partition path pathdiagram pcov performance plot population poststrata power preddist predict predpplot priors process probmodel profile prune pvar ram random ratio reference refit refmodel renameparm repeated replicate repweights response restore restrict retain reweight ridge rmsstd roc roccontrast rules samplesize samplingunit seed size scale score selection show simtests simulate slice std stderr store strata structeq supplementary table tables test testclass testfreq testfunc testid time transform treatments trend twosamplefreq twosamplemeans towsamplesurvival twosamplewilcoxon uds units univar var variance varnames weight where with zeromodel contained syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasAnalyticalProcStatementKeyword,sasGlobalStatementKeyword syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasAnalyticalProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(aceclus|adaptivereg|bchoice|boxplot|calis|cancorr|candisc|cluster|corresp|discrim|distance|factor|fastclus|fmm|freq|gam|gampl|gee|genmod|glimmix|glmmod|glmpower|glmselect|hpcandisc|hpfmm|hpgenselect|hplmixed|hplogistic|hpmixed|hpnlmod|hppls|hpprincomp|hpquantselect|hpreg|hpsplit|iclifetest|icphreg|inbreed|irt|kde|krige2d|lattice|lifereg|lifetest|loess|logistic|mcmc|mds|mi|mianalyze|mixed|modeclus|multtest|nested|nlin|nlmixed|npar1way|orthoreg|phreg|plm|pls|power|princomp|prinqual|probit|quantlife|quantreg|quantselect|robustreg|rsreg|score|seqdesign|seqtest|sim2d|simnormal|spp|stdize|stdrate|stepdisc|surveyfreq|surveyimpute|surveylogistic|surveymeans|surveyphreg|surveyreg|surveyselect|tpspline|transreg|tree|ttest|varclus|varcomp|variogram)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(anova|arima|catmod|factex|glm|model|optex|plan|reg)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement syn keyword sasODSGraphicsProcStatementKeyword band block bubble by colaxis compare dattrvar density dot dropline dynamic ellipse ellipseparm format fringe gradlegend hbar hbarbasic hbarparm hbox heatmap heatmapparm highlow histogram hline inset keylegend label lineparm loess matrix needle parent panelby pbspline plot polygon refline reg rowaxis scatter series spline step style styleattrs symbolchar symbolimage text vbar vbarbasic vbarparm vbox vector vline waterfall where xaxis x2axis yaxis y2axis yaxistable contained syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasODSGraphicsProcStatementKeyword,sasGlobalStatementKeyword syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasODSGraphicsProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty syn region sasODSGraphicsProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(sgdesign|sgpanel|sgplot|sgrender|sgscatter)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasODSGraphicsProcStatement syn keyword sasProcTemplateClause as into syn keyword sasProcTemplateStatementKeyword block break cellstyle class close column compute continue define delete delstream do done dynamic edit else end eval flush footer header import iterate link list mvar ndent next nmvar notes open path put putl putlog putq putstream putvars replace set source stop style test text text2 text3 translate trigger unblock unset xdent contained syn keyword sasProcTemplateStatementComplexKeyword cellvalue column crosstabs event footer header statgraph style table tagset contained syn keyword sasProcTemplateGTLStatementKeyword axislegend axistable bandplot barchart barchartparm begingraph beginpolygon beginpolyline bihistogram3dparm blockplot boxplot boxplotparm bubbleplot continuouslegend contourplotparm dendrogram discretelegend drawarrow drawimage drawline drawoval drawrectangle drawtext dropline ellipse ellipseparm endgraph endinnermargin endlayout endpolygon endpolyline endsidebar entry entryfootnote entrytitle fringeplot heatmap heatmapparm highlowplot histogram histogramparm innermargin layout legenditem legendtextitems linechart lineparm loessplot mergedlegend modelband needleplot pbsplineplot polygonplot referenceline regressionplot scatterplot seriesplot sidebar stepplot surfaceplotparm symbolchar symbolimage textplot vectorplot waterfallchart contained syn keyword sasProcTemplateGTLComplexKeyword datalattice datapanel globallegend gridded lattice overlay overlayequated overlay3d region contained syn match sasProcTemplateStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcTemplateStatementKeyword,sasProcTemplateGTLStatementKeyword,sasGlobalStatementKeyword syn match sasProcTemplateStatement '\v%(^|;)\s*\zsdefine>' display contained contains=sasProcTemplateStatementKeyword nextgroup=sasProcTemplateStatementComplexKeyword skipwhite skipnl skipempty syn match sasProcTemplateStatement '\v%(^|;)\s*\zslayout>' display contained contains=sasProcTemplateGTLStatementKeyword nextgroup=sasProcTemplateGTLComplexKeyword skipwhite skipnl skipempty syn match sasProcTemplateStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasProcTemplate matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+template>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcTemplateClause,sasProcTemplateStatement syn keyword sasProcSQLFunctionName avg count css cv freq max mean median min n nmiss prt range std stderr sum sumwgt t uss var contained syn region sasProcSQLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasProcSQLFunction syn match sasProcSQLFunction '\v<\w+\ze\(' contained contains=sasProcSQLFunctionName,sasDataStepFunctionName nextgroup=sasProcSQLFunctionContext syn keyword sasProcSQLClause add asc between by calculated cascade case check connection constraint cross desc distinct drop else end escape except exists foreign from full group having in inner intersect into is join key left libname like modify natural newline notrim null on order outer primary references restrict right separated set then to trimmed union unique user using values when where contained syn keyword sasProcSQLClause as contained nextgroup=sasProcSQLStatementKeyword skipwhite skipnl skipempty syn keyword sasProcSQLStatementKeyword connect delete disconnect execute insert reset select update validate contained syn keyword sasProcSQLStatementComplexKeyword alter create describe drop contained nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty syn keyword sasProcSQLStatementNextKeyword index table view contained syn match sasProcSQLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcSQLStatementKeyword,sasGlobalStatementKeyword syn match sasProcSQLStatement '\v%(^|;)\s*\zs%(alter|create|describe|drop)>' display contained contains=sasProcSQLStatementComplexKeyword nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty syn match sasProcSQLStatement '\v%(^|;)\s*\zsvalidate>' display contained contains=sasProcSQLStatementKeyword nextgroup=sasProcSQLStatementKeyword,sasProcSQLStatementComplexKeyword skipwhite skipnl skipempty syn match sasProcSQLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasProcSQL matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+sql>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcSQLFunction,sasProcSQLClause,sasProcSQLStatement syn keyword sasDS2FunctionName abs anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat cats catt catx ceil ceilz choosec choosen cmp cmpt coalesce coalescec comb compare compbl compfuzz compound compress constant convx convxp cos cosh count countc countw css cumipmt cumprinc cv datdif date datejul datepart datetime day dequote deviance dhms dif digamma dim divide dur durp effrate erf erfc exp fact find findc findw floor floorz fmtinfo fuzz gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz harmean harmeanz hbound hms holiday hour index indexc indexw inputc inputn int intcindex intck intcycle intdt intfit intget intindex intnest intnx intrr intseas intshift inttest intts intz ipmt iqr irr juldate juldate7 kcount kstrcat kstrip kupdate kupdates kurtosis lag largest lbound lcm left length lengthc lengthm lengthn lgamma log logbeta log10 log1px log2 lowcase mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modz month mort n ndims netpv nmiss nomrate notalnum notalpha notcntrl notdigit notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv null nwkdom ordinal pctl perm pmt poisson power ppmt probbeta probbnml probbnrm probchi probdf probf probgam probhypr probit probmc probmed probnegb probnorm probt prxchange prxmatch prxparse prxposn put pvp qtr quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni repeat reverse right rms round rounde roundz savings scan sec second sha256hex sha256hmachex sign sin sinh skewness sleep smallest sqlexec sqrt std stderr streaminit strip substr substrn sum sumabs tan tanh time timepart timevalue tinv to_date to_double to_time to_timestamp today translate transtrn tranwrd trigamma trim trimn trunc uniform upcase uss uuidgen var verify vformat vinarray vinformat vlabel vlength vname vtype week weekday whichc whichn year yieldp yrdif yyq contained syn region sasDS2FunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDS2Function syn match sasDS2Function '\v<\w+\ze\(' contained contains=sasDS2FunctionName nextgroup=sasDS2FunctionContext syn keyword sasDS2Control continue data dcl declare do drop else end enddata endpackage endthread from go goto if leave method otherwise package point return select then thread to until when while contained syn keyword sasDS2StatementKeyword array by forward keep merge output put rename retain set stop vararray varlist contained syn keyword sasDS2StatementComplexKeyword package thread contained syn match sasDS2Statement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDS2StatementKeyword,sasGlobalStatementKeyword syn match sasDS2Statement '\v%(^|;)\s*\zs%(dcl|declare|drop)>' display contained contains=sasDS2StatementKeyword nextgroup=sasDS2StatementComplexKeyword skipwhite skipnl skipempty syn match sasDS2Statement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasDS2 matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+ds2>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDS2Function,sasDS2Control,sasDS2Statement syn keyword sasIMLFunctionName abs all allcomb allperm any apply armasim bin blankstr block branks bspline btran byte char choose col colvec concat contents convexit corr corr2cov countmiss countn countunique cov cov2corr covlag cshape cusum cuprod cv cvexhull datasets design designf det diag dif dimension distance do duration echelon eigval eigvec element exp expmatrix expandgrid fft forward froot full gasetup geomean ginv hadamard half hankel harmean hdir hermite homogen i ifft insert int inv invupdt isempty isskipped j jroot kurtosis lag length loc log logabsdet mad magic mahalanobis max mean median min mod moduleic modulein name ncol ndx2sub nleng norm normal nrow num opscal orpol parentname palette polyroot prod product pv quartile rancomb randdirichlet randfun randmultinomial randmvt randnormal randwishart ranperk ranperm range rank ranktie rates ratio remove repeat root row rowcat rowcatc rowvec rsubstr sample setdif shape shapecol skewness solve sparse splinev spot sqrsym sqrt sqrvech ssq standard std storage sub2ndx substr sum sweep symsqr t toeplitz trace trisolv type uniform union unique uniqueby value var vecdiag vech xmult xsect yield contained syn keyword sasIMLCallRoutineName appcort armacov armalik bar box change comport delete eigen execute exportdatasettor exportmatrixtor farmacov farmafit farmalik farmasim fdif gaend gagetmem gagetval gainit gareeval garegen gasetcro gasetmut gasetobj gasetsel gblkvp gblkvpd gclose gdelete gdraw gdrawl geneig ggrid ginclude gopen gpie gpiexy gpoint gpoly gport gportpop gportstk gscale gscript gset gshow gsorth gstart gstop gstrlen gtext gvtext gwindow gxaxis gyaxis heatmapcont heatmapdisc histogram importdatasetfromr importmatrixfromr ipf itsolver kalcvf kalcvs kaldff kaldfs lav lcp lms lp lpsolve lts lupdt marg maxqform mcd milpsolve modulei mve nlpcg nlpdd nlpfdd nlpfea nlphqn nlplm nlpnms nlpnra nlpnrr nlpqn nlpqua nlptr ode odsgraph ortvec pgraf push qntl qr quad queue randgen randseed rdodt rupdt rename rupdt rzlind scatter seq seqscale seqshift seqscale seqshift series solvelin sort sortndx sound spline splinec svd tabulate tpspline tpsplnev tsbaysea tsdecomp tsmlocar tsmlomar tsmulmar tspears tspred tsroot tstvcar tsunimar valset varmacov varmalik varmasim vnormal vtsroot wavft wavget wavift wavprint wavthrsh contained syn region sasIMLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasIMLFunction syn match sasIMLFunction '\v<\w+\ze\(' contained contains=sasIMLFunctionName,sasDataStepFunction nextgroup=sasIMLFunctionContext syn keyword sasIMLControl abort by do else end finish goto if link pause quit resume return run start stop then to until while contained syn keyword sasIMLStatementKeyword append call close closefile create delete display edit file find force free index infile input list load mattrib print purge read remove replace reset save setin setout show sort store summary use window contained syn match sasIMLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasIMLStatementKeyword,sasGlobalStatementKeyword syn match sasIMLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty syn region sasIML matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+iml>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasIMLFunction,sasIMLControl,sasIMLStatement syn region sasMacro start='\v\%macro>' end='\v\%mend>' fold keepend contains=@sasBasicSyntax,@sasDataStepSyntax,sasDataStep,sasProc,sasODSGraphicsProc,sasGraphProc,sasAnalyticalProc,sasProcTemplate,sasProcSQL,sasDS2,sasIML hi def link sasComment Comment hi def link sasTodo Delimiter hi def link sasSectLbl Title hi def link sasSectLblEnds Comment hi def link sasNumber Number hi def link sasDateTime Constant hi def link sasString String hi def link sasDataStepControl Keyword hi def link sasProcTemplateClause Keyword hi def link sasProcSQLClause Keyword hi def link sasDS2Control Keyword hi def link sasIMLControl Keyword hi def link sasOperator Operator hi def link sasGlobalStatementKeyword Statement hi def link sasGlobalStatementODSKeyword Statement hi def link sasSectionKeyword Statement hi def link sasDataStepFunctionName Function hi def link sasDataStepCallRoutineName Function hi def link sasDataStepStatementKeyword Statement hi def link sasDataStepStatementHashKeyword Statement hi def link sasDataStepHashOperator Operator hi def link sasDataStepHashMethodName Function hi def link sasDataStepHashAttributeName Identifier hi def link sasProcStatementKeyword Statement hi def link sasODSGraphicsProcStatementKeyword Statement hi def link sasGraphProcStatementKeyword Statement hi def link sasAnalyticalProcStatementKeyword Statement hi def link sasProcTemplateStatementKeyword Statement hi def link sasProcTemplateStatementComplexKeyword Statement hi def link sasProcTemplateGTLStatementKeyword Statement hi def link sasProcTemplateGTLComplexKeyword Statement hi def link sasProcSQLFunctionName Function hi def link sasProcSQLStatementKeyword Statement hi def link sasProcSQLStatementComplexKeyword Statement hi def link sasProcSQLStatementNextKeyword Statement hi def link sasDS2FunctionName Function hi def link sasDS2StatementKeyword Statement hi def link sasIMLFunctionName Function hi def link sasIMLCallRoutineName Function hi def link sasIMLStatementKeyword Statement hi def link sasMacroReserved PreProc hi def link sasMacroVariable Define hi def link sasMacroFunctionName Define hi def link sasDataLine SpecialChar hi def link sasFormat SpecialChar hi def link sasReserved Special syn sync fromstart let b:current_syntax = "sas" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/css.vim syn case ignore syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp syn cluster sassCssAttributes contains=css.*Attr,sassEndOfLineComment,scssComment,cssValue.*,cssColor,cssURL,sassDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp syn region sassDefinition matchgroup=cssBraces start="{" end="}" contains=TOP syn match sassProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=sassCssAttribute contained containedin=sassDefinition syn match sassProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute syn match sassCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@sassCssAttributes,sassVariable,sassFunction,sassInterpolation syn match sassDefault "!default\>" contained syn match sassVariable "!\%(important\>\|default\>\)\@![[:alnum:]_-]\+" syn match sassVariable "$[[:alnum:]_-]\+" syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=\%(||\)\==" nextgroup=sassCssAttribute skipwhite syn match sassVariableAssignment "\%([!$][[:alnum:]_-]\+\s*\)\@<=:" nextgroup=sassCssAttribute skipwhite syn match sassFunction "\<\%(rgb\|rgba\|red\|green\|blue\|mix\)\>(\@=" contained syn match sassFunction "\<\%(hsl\|hsla\|hue\|saturation\|lightness\|adjust-hue\|lighten\|darken\|saturate\|desaturate\|grayscale\|complement\)\>(\@=" contained syn match sassFunction "\<\%(alpha\|opacity\|rgba\|opacify\|fade-in\|transparentize\|fade-out\)\>(\@=" contained syn match sassFunction "\<\%(unquote\|quote\)\>(\@=" contained syn match sassFunction "\<\%(percentage\|round\|ceil\|floor\|abs\)\>(\@=" contained syn match sassFunction "\<\%(type-of\|unit\|unitless\|comparable\)\>(\@=" contained syn region sassInterpolation matchgroup=sassInterpolationDelimiter start="#{" end="}" contains=@sassCssAttributes,sassVariable,sassFunction containedin=cssStringQ,cssStringQQ,cssPseudoClass,sassProperty syn match sassMixinName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute syn match sassMixin "^=" nextgroup=sassMixinName skipwhite syn match sassMixin "\%([{};]\s*\|^\s*\)\@<=@mixin" nextgroup=sassMixinName skipwhite syn match sassMixing "^\s\+\zs+" nextgroup=sassMixinName syn match sassMixing "\%([{};]\s*\|^\s*\)\@<=@include" nextgroup=sassMixinName skipwhite syn match sassExtend "\%([{};]\s*\|^\s*\)\@<=@extend" syn match sassPlaceholder "\%([{};]\s*\|^\s*\)\@<=%" nextgroup=sassMixinName skipwhite syn match sassFunctionName "[[:alnum:]_-]\+" contained nextgroup=sassCssAttribute syn match sassFunctionDecl "\%([{};]\s*\|^\s*\)\@<=@function" nextgroup=sassFunctionName skipwhite syn match sassReturn "\%([{};]\s*\|^\s*\)\@<=@return" syn match sassEscape "^\s*\zs\\" syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId syn match sassId "[[:alnum:]_-]\+" contained syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass syn match sassClass "[[:alnum:]_-]\+" contained syn match sassAmpersand "&" syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators syn keyword sassMediaOperators and not only contained syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\|each\)\>" end="[{};]\@=\|$" contains=sassFor,@sassCssAttributes,sassVariable,sassFunction syn keyword sassFor from to through in contained syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo,@Spell syn match sassEndOfLineComment "//.*" contains=sassComment,sassTodo,@Spell hi def link sassEndOfLineComment sassComment hi def link sassCssComment sassComment hi def link sassComment Comment hi def link sassDefault cssImportant hi def link sassVariable Identifier hi def link sassFunction Function hi def link sassMixing PreProc hi def link sassMixin PreProc hi def link sassPlaceholder PreProc hi def link sassExtend PreProc hi def link sassFunctionDecl PreProc hi def link sassReturn PreProc hi def link sassTodo Todo hi def link sassCharset PreProc hi def link sassMedia PreProc hi def link sassMediaOperators PreProc hi def link sassInclude Include hi def link sassDebug sassControl hi def link sassWarn sassControl hi def link sassControl PreProc hi def link sassFor PreProc hi def link sassEscape Special hi def link sassIdChar Special hi def link sassClassChar Special hi def link sassInterpolationDelimiter Delimiter hi def link sassAmpersand Character hi def link sassId Identifier hi def link sassClass Type let b:current_syntax = "sass" if exists("b:current_syntax") finish endif syn keyword satherExternal extern syn keyword satherBranch break continue syn keyword satherLabel when then syn keyword satherConditional if else elsif end case typecase assert with syn match satherConditional "near$" syn match satherConditional "far$" syn match satherConditional "near *[^(]"he=e-1 syn match satherConditional "far *[^(]"he=e-1 syn keyword satherSynchronize lock guard sync syn keyword satherRepeat loop parloop do syn match satherRepeat "while!" syn match satherRepeat "break!" syn match satherRepeat "until!" syn keyword satherBoolValue true false syn keyword satherValue self here cluster syn keyword satherOperator new "== != & ^ | && || syn keyword satherOperator and or not syn match satherOperator "[#!]" syn match satherOperator ":-" syn keyword satherType void attr where syn match satherType "near *("he=e-1 syn match satherType "far *("he=e-1 syn keyword satherStatement return syn keyword satherStorageClass static const syn keyword satherExceptions try raise catch syn keyword satherMethodDecl is pre post syn keyword satherClassDecl abstract value class include syn keyword satherScopeDecl public private readonly syn match satherSpecial contained "\\\d\d\d\|\\." syn region satherString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=satherSpecial syn match satherCharacter "'[^\\]'" syn match satherSpecialCharacter "'\\.'" syn match satherNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn match satherCommentSkip contained "^\s*\*\($\|\s\+\)" syn region satherComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+$\|"+ contains=satherSpecial syn match satherComment "--.*" contains=satherComment2String,satherCharacter,satherNumber syn sync ccomment satherComment hi def link satherBranch satherStatement hi def link satherLabel satherStatement hi def link satherConditional satherStatement hi def link satherSynchronize satherStatement hi def link satherRepeat satherStatement hi def link satherExceptions satherStatement hi def link satherStorageClass satherDeclarative hi def link satherMethodDecl satherDeclarative hi def link satherClassDecl satherDeclarative hi def link satherScopeDecl satherDeclarative hi def link satherBoolValue satherValue hi def link satherSpecial satherValue hi def link satherString satherValue hi def link satherCharacter satherValue hi def link satherSpecialCharacter satherValue hi def link satherNumber satherValue hi def link satherStatement Statement hi def link satherOperator Statement hi def link satherComment Comment hi def link satherType Type hi def link satherValue String hi def link satherString String hi def link satherSpecial String hi def link satherCharacter String hi def link satherDeclarative Type hi def link satherExternal PreCondit let b:current_syntax = "sather" if exists("b:current_syntax") finish endif runtime! syntax/scala.vim syn region sbtString start="\"[^"]" skip="\\\"" end="\"" contains=sbtStringEscape syn match sbtStringEscape "\\u[0-9a-fA-F]\{4}" contained syn match sbtStringEscape "\\[nrfvb\\\"]" contained syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)" syn match sbtBeginningSeq "^[Ss]eq\>" syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)" syn match sbtLineComment "//.*" syn region sbtComment start="/\*" end="\*/" syn region sbtDocComment start="/\*\*" end="\*/" keepend hi link sbtString String hi link sbtIdentitifer Keyword hi link sbtBeginningSeq Keyword hi link sbtSpecial Special hi link sbtComment Comment hi link sbtLineComment Comment hi link sbtDocComment Comment if !exists('main_syntax') if exists("b:current_syntax") finish endif let main_syntax = 'scala' endif scriptencoding utf-8 let b:current_syntax = "scala" function! s:ContainedGroup() try silent syn list @scala return '@scala,@NoSpell' catch /E392/ return 'TOP,@Spell' endtry endfunction unlet! b:current_syntax syn case match syn sync minlines=200 maxlines=1000 syn keyword scalaKeyword catch do else final finally for forSome if syn keyword scalaKeyword match return throw try while yield macro syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite hi link scalaKeyword Keyword exe 'syn region scalaBlock start=/{/ end=/}/ contains=' . s:ContainedGroup() . ' fold' syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome hi link scalaAkkaSpecialWord PreProc syn keyword scalatestSpecialWord shouldBe syn match scalatestShouldDSLA /^\s\+\zsit should/ syn match scalatestShouldDSLB /\/ hi link scalatestSpecialWord PreProc hi link scalatestShouldDSLA PreProc hi link scalatestShouldDSLB PreProc syn match scalaSymbol /'[_A-Za-z0-9$]\+/ hi link scalaSymbol Number syn match scalaChar /'.'/ syn match scalaChar /'\\[\\"'ntbrf]'/ contains=scalaEscapedChar syn match scalaChar /'\\u[A-Fa-f0-9]\{4}'/ contains=scalaUnicodeChar syn match scalaEscapedChar /\\[\\"'ntbrf]/ syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/ hi link scalaChar Character hi link scalaEscapedChar Function hi link scalaUnicodeChar Special syn match scalaOperator "||" syn match scalaOperator "&&" syn match scalaOperator "|" syn match scalaOperator "&" hi link scalaOperator Special syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition syn match scalaVariableDeclarationList /\s*,\s*/ contained nextgroup=scalaNameDefinition syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration hi link scalaNameDefinition Function syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash syn match scalaInstanceDeclaration /`[^`]\+`/ contained syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration hi link scalaInstanceDeclaration Special hi link scalaInstanceHash Type syn match scalaUnimplemented /???/ hi link scalaUnimplemented ERROR syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/ hi link scalaCapitalWord Special syn region scalaTypeStatement matchgroup=Keyword start=/\\)\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite syn match scalaTypeTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeTypeDeclaration skipwhite syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite hi link scalaTypeTypeDeclaration Type hi link scalaTypeTypeExtension Keyword hi link scalaTypeTypePostDeclaration Special hi link scalaTypeTypePostExtension Keyword syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeDeclaration skipwhite hi link scalaTypeDeclaration Type hi link scalaTypeExtension Keyword hi link scalaTypePostExtension Keyword syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration hi link scalaTypeAnnotation Normal syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained syn match scalaCaseFollowing /`[^`]\+`/ contained hi link scalaCaseFollowing Special syn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super hi link scalaKeywordModifier Function syn keyword scalaSpecial this true false ne eq syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite syn match scalaSpecial "\%(=>\|⇒\|<-\|â†\|->\|→\)" syn match scalaSpecial /`[^`]\+`/ " Backtick literals hi link scalaSpecial PreProc syn keyword scalaExternal package import hi link scalaExternal Include syn match scalaStringEmbeddedQuote /\\"/ contained syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar hi link scalaString String hi link scalaStringEmbeddedQuote String syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\ze\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar hi link scalaIString String hi link scalaTripleIString String syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained exe 'syn region scalaInterpolationB matchgroup=scalaInterpolationBoundary start=/\${/ end=/}/ contained contains=' . s:ContainedGroup() hi link scalaInterpolation Function hi link scalaInterpolationB Normal syn region scalaFString matchgroup=scalaInterpolationBrackets start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained exe 'syn region scalaFInterpolationB matchgroup=scalaInterpolationBoundary start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=' . s:ContainedGroup() hi link scalaFString String hi link scalaFInterpolation Function hi link scalaFInterpolationB Normal syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar syn region scalaTripleFString matchgroup=scalaInterpolationBrackets start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar hi link scalaTripleString String hi link scalaTripleFString String hi link scalaInterpolationBrackets Special hi link scalaInterpolationBoundary Function syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0 syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1 syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2 syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3 hi link scalaNumber Number syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets syn region scalaSquareBrackets matchgroup=scalaSquareBracketsBrackets start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter syn match scalaTypeOperator /[-+=:<>]\+/ contained syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained hi link scalaSquareBracketsBrackets Type hi link scalaTypeOperator Keyword hi link scalaTypeAnnotationParameter Function syn match scalaShebang "\%^#!.*" display syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained syn match scalaParameterAnnotation "\%(@tparam\|@param\|@see\)" nextgroup=scalaParamAnnotationValue skipwhite contained syn match scalaParamAnnotationValue /[.`_A-Za-z0-9$]\+/ contained syn region scalaDocLinks start="\[\[" end="\]\]" contained syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained syn match scalaTodo "\vTODO|FIXME|XXX" contained hi link scalaShebang Comment hi link scalaMultilineComment Comment hi link scalaDocLinks Function hi link scalaParameterAnnotation Function hi link scalaParamAnnotationValue Keyword hi link scalaCommentAnnotation Function hi link scalaCommentCodeBlockBrackets String hi link scalaCommentCodeBlock String hi link scalaTodo Todo syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/ hi link scalaAnnotation PreProc syn match scalaTrailingComment "//.*$" contains=scalaTodo,@Spell hi link scalaTrailingComment Comment syn match scalaAkkaFSM /goto([^)]*)\_s\+\/ contains=scalaAkkaFSMGotoUsing syn match scalaAkkaFSM /stay\_s\+using/ syn match scalaAkkaFSM /^\s*stay\s*$/ syn match scalaAkkaFSM /when\ze([^)]*)/ syn match scalaAkkaFSM /startWith\ze([^)]*)/ syn match scalaAkkaFSM /initialize\ze()/ syn match scalaAkkaFSM /onTransition/ syn match scalaAkkaFSM /onTermination/ syn match scalaAkkaFSM /whenUnhandled/ syn match scalaAkkaFSMGotoUsing /\/ syn match scalaAkkaFSMGotoUsing /\/ hi link scalaAkkaFSM PreProc hi link scalaAkkaFSMGotoUsing PreProc let b:current_syntax = 'scala' if main_syntax ==# 'scala' unlet main_syntax endif if exists('b:current_syntax') finish endif let s:cpo = &cpo set cpo&vim syn match schemeParentheses "[^ '`\t\n()\[\]";]\+" syn match schemeParentheses "[)\]]" syn match schemeIdentifier /[^ '`\t\n()\[\]"|;][^ '`\t\n()\[\]"|;]*/ syn region schemeQuote matchgroup=schemeData start=/'[`']*/ end=/[ \t\n()\[\]";]/me=e-1 syn region schemeQuote matchgroup=schemeData start=/'['`]*"/ skip=/\\[\\"]/ end=/"/ syn region schemeQuote matchgroup=schemeData start=/'['`]*|/ skip=/\\[\\|]/ end=/|/ syn region schemeQuote matchgroup=schemeData start=/'['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*/ end=/[ \t\n()\[\]";]/me=e-1 syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuote,schemeQuoteForm,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,@/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeUnquote matchgroup=schemeParentheses start=/,@(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeString start=/\(\\\)\@/ syn match schemeNumber /#x[+\-]*[0-9a-fA-F]\+\>/ syn match schemeBoolean /#t\(rue\)\?/ syn match schemeBoolean /#f\(alse\)\?/ syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/ syn match schemeCharacter /#\\x[0-9a-fA-F]\+/ syn match schemeComment /;.*$/ syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster syn region schemeVector matchgroup=schemeData start="#(" end=")" contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeVector matchgroup=schemeData start="#[fsu]\d\+(" end=")" contains=schemeNumber,schemeComment,schemeDatumComment if exists('g:is_chicken') || exists('b:is_chicken') syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\|import-syntax\|use\|require-extension\)\(-for-syntax\)\?\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment else syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment endif syn match schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\|srfi\)\>" syn region schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*/ end=/[ \t\n()\[\]";]/me=e-1 syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*"/ skip=/\\[\\"]/ end=/"/ syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*|/ skip=/\\[\\|]/ end=/|/ syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*\(#\([usf]\d\+\)\?\)\?(/ end=/)/ contains=schemeDatumCommentForm syn region schemeDatumCommentForm start="(" end=")" contained contains=schemeDatumCommentForm syn cluster schemeSyntaxCluster contains=schemeFunction,schemeKeyword,schemeSyntax,schemeExtraSyntax,schemeLibrarySyntax,schemeSyntaxSyntax syn keyword schemeLibrarySyntax define-library syn keyword schemeLibrarySyntax export syn keyword schemeLibrarySyntax include syn keyword schemeLibrarySyntax include-ci syn keyword schemeLibrarySyntax include-library-declarations syn keyword schemeLibrarySyntax library syn keyword schemeLibrarySyntax cond-expand syn keyword schemeSyntaxSyntax define-syntax syn keyword schemeSyntaxSyntax let-syntax syn keyword schemeSyntaxSyntax letrec-syntax syn keyword schemeSyntaxSyntax syntax-rules syn keyword schemeSyntax => syn keyword schemeSyntax and syn keyword schemeSyntax begin syn keyword schemeSyntax case syn keyword schemeSyntax case-lambda syn keyword schemeSyntax cond syn keyword schemeSyntax define syn keyword schemeSyntax define-record-type syn keyword schemeSyntax define-values syn keyword schemeSyntax delay syn keyword schemeSyntax delay-force syn keyword schemeSyntax do syn keyword schemeSyntax else syn keyword schemeSyntax guard syn keyword schemeSyntax if syn keyword schemeSyntax lambda syn keyword schemeSyntax let syn keyword schemeSyntax let* syn keyword schemeSyntax let*-values syn keyword schemeSyntax let-values syn keyword schemeSyntax letrec syn keyword schemeSyntax letrec* syn keyword schemeSyntax or syn keyword schemeSyntax parameterize syn keyword schemeSyntax quasiquote syn keyword schemeSyntax quote syn keyword schemeSyntax set! syn keyword schemeSyntax unless syn keyword schemeSyntax unquote syn keyword schemeSyntax unquote-splicing syn keyword schemeSyntax when syn keyword schemeFunction * syn keyword schemeFunction + syn keyword schemeFunction - syn keyword schemeFunction / syn keyword schemeFunction < syn keyword schemeFunction <= syn keyword schemeFunction = syn keyword schemeFunction > syn keyword schemeFunction >= syn keyword schemeFunction abs syn keyword schemeFunction acos syn keyword schemeFunction acos syn keyword schemeFunction angle syn keyword schemeFunction append syn keyword schemeFunction apply syn keyword schemeFunction asin syn keyword schemeFunction assoc syn keyword schemeFunction assq syn keyword schemeFunction assv syn keyword schemeFunction atan syn keyword schemeFunction binary-port? syn keyword schemeFunction boolean=? syn keyword schemeFunction boolean? syn keyword schemeFunction bytevector syn keyword schemeFunction bytevector-append syn keyword schemeFunction bytevector-append syn keyword schemeFunction bytevector-copy syn keyword schemeFunction bytevector-copy! syn keyword schemeFunction bytevector-length syn keyword schemeFunction bytevector-u8-ref syn keyword schemeFunction bytevector-u8-set! syn keyword schemeFunction bytevector? syn keyword schemeFunction caaaar syn keyword schemeFunction caaadr syn keyword schemeFunction caaar syn keyword schemeFunction caadar syn keyword schemeFunction caaddr syn keyword schemeFunction caadr syn keyword schemeFunction caar syn keyword schemeFunction cadaar syn keyword schemeFunction cadadr syn keyword schemeFunction cadar syn keyword schemeFunction caddar syn keyword schemeFunction cadddr syn keyword schemeFunction caddr syn keyword schemeFunction cadr syn keyword schemeFunction call-with-current-continuation syn keyword schemeFunction call-with-input-file syn keyword schemeFunction call-with-output-file syn keyword schemeFunction call-with-port syn keyword schemeFunction call-with-values syn keyword schemeFunction call/cc syn keyword schemeFunction car syn keyword schemeFunction cdaaar syn keyword schemeFunction cdaadr syn keyword schemeFunction cdaar syn keyword schemeFunction cdadar syn keyword schemeFunction cdaddr syn keyword schemeFunction cdadr syn keyword schemeFunction cdar syn keyword schemeFunction cddaar syn keyword schemeFunction cddadr syn keyword schemeFunction cddar syn keyword schemeFunction cdddar syn keyword schemeFunction cddddr syn keyword schemeFunction cdddr syn keyword schemeFunction cddr syn keyword schemeFunction cdr syn keyword schemeFunction ceiling syn keyword schemeFunction char->integer syn keyword schemeFunction char-alphabetic? syn keyword schemeFunction char-ci<=? syn keyword schemeFunction char-ci=? syn keyword schemeFunction char-ci>? syn keyword schemeFunction char-downcase syn keyword schemeFunction char-foldcase syn keyword schemeFunction char-lower-case? syn keyword schemeFunction char-numeric? syn keyword schemeFunction char-ready? syn keyword schemeFunction char-upcase syn keyword schemeFunction char-upper-case? syn keyword schemeFunction char-whitespace? syn keyword schemeFunction char<=? syn keyword schemeFunction char=? syn keyword schemeFunction char>? syn keyword schemeFunction char? syn keyword schemeFunction close-input-port syn keyword schemeFunction close-output-port syn keyword schemeFunction close-port syn keyword schemeFunction command-line syn keyword schemeFunction complex? syn keyword schemeFunction cons syn keyword schemeFunction cos syn keyword schemeFunction current-error-port syn keyword schemeFunction current-input-port syn keyword schemeFunction current-jiffy syn keyword schemeFunction current-output-port syn keyword schemeFunction current-second syn keyword schemeFunction delete-file syn keyword schemeFunction denominator syn keyword schemeFunction digit-value syn keyword schemeFunction display syn keyword schemeFunction dynamic-wind syn keyword schemeFunction emergency-exit syn keyword schemeFunction environment syn keyword schemeFunction eof-object syn keyword schemeFunction eof-object? syn keyword schemeFunction eq? syn keyword schemeFunction equal? syn keyword schemeFunction eqv? syn keyword schemeFunction error syn keyword schemeFunction error-object-irritants syn keyword schemeFunction error-object-message syn keyword schemeFunction error-object? syn keyword schemeFunction eval syn keyword schemeFunction even? syn keyword schemeFunction exact syn keyword schemeFunction exact->inexact syn keyword schemeFunction exact-integer-sqrt syn keyword schemeFunction exact-integer? syn keyword schemeFunction exact? syn keyword schemeFunction exit syn keyword schemeFunction exp syn keyword schemeFunction expt syn keyword schemeFunction features syn keyword schemeFunction file-error? syn keyword schemeFunction file-exists? syn keyword schemeFunction finite? syn keyword schemeFunction floor syn keyword schemeFunction floor-quotient syn keyword schemeFunction floor-remainder syn keyword schemeFunction floor/ syn keyword schemeFunction flush-output-port syn keyword schemeFunction for-each syn keyword schemeFunction force syn keyword schemeFunction gcd syn keyword schemeFunction get-environment-variable syn keyword schemeFunction get-environment-variables syn keyword schemeFunction get-output-bytevector syn keyword schemeFunction get-output-string syn keyword schemeFunction imag-part syn keyword schemeFunction inexact syn keyword schemeFunction inexact->exact syn keyword schemeFunction inexact? syn keyword schemeFunction infinite? syn keyword schemeFunction input-port-open? syn keyword schemeFunction input-port? syn keyword schemeFunction integer->char syn keyword schemeFunction integer? syn keyword schemeFunction interaction-environment syn keyword schemeFunction jiffies-per-second syn keyword schemeFunction lcm syn keyword schemeFunction length syn keyword schemeFunction list syn keyword schemeFunction list->string syn keyword schemeFunction list->vector syn keyword schemeFunction list-copy syn keyword schemeFunction list-ref syn keyword schemeFunction list-set! syn keyword schemeFunction list-tail syn keyword schemeFunction list? syn keyword schemeFunction load syn keyword schemeFunction log syn keyword schemeFunction magnitude syn keyword schemeFunction make-bytevector syn keyword schemeFunction make-list syn keyword schemeFunction make-parameter syn keyword schemeFunction make-polar syn keyword schemeFunction make-promise syn keyword schemeFunction make-rectangular syn keyword schemeFunction make-string syn keyword schemeFunction make-vector syn keyword schemeFunction map syn keyword schemeFunction max syn keyword schemeFunction member syn keyword schemeFunction memq syn keyword schemeFunction memv syn keyword schemeFunction min syn keyword schemeFunction modulo syn keyword schemeFunction nan? syn keyword schemeFunction negative? syn keyword schemeFunction newline syn keyword schemeFunction not syn keyword schemeFunction null-environment syn keyword schemeFunction null? syn keyword schemeFunction number->string syn keyword schemeFunction number? syn keyword schemeFunction numerator syn keyword schemeFunction odd? syn keyword schemeFunction open-binary-input-file syn keyword schemeFunction open-binary-output-file syn keyword schemeFunction open-input-bytevector syn keyword schemeFunction open-input-file syn keyword schemeFunction open-input-string syn keyword schemeFunction open-output-bytevector syn keyword schemeFunction open-output-file syn keyword schemeFunction open-output-string syn keyword schemeFunction output-port-open? syn keyword schemeFunction output-port? syn keyword schemeFunction pair? syn keyword schemeFunction peek-char syn keyword schemeFunction peek-u8 syn keyword schemeFunction port? syn keyword schemeFunction positive? syn keyword schemeFunction procedure? syn keyword schemeFunction promise? syn keyword schemeFunction quotient syn keyword schemeFunction raise syn keyword schemeFunction raise-continuable syn keyword schemeFunction rational? syn keyword schemeFunction rationalize syn keyword schemeFunction read syn keyword schemeFunction read-bytevector syn keyword schemeFunction read-bytevector! syn keyword schemeFunction read-char syn keyword schemeFunction read-error? syn keyword schemeFunction read-line syn keyword schemeFunction read-string syn keyword schemeFunction read-u8 syn keyword schemeFunction real-part syn keyword schemeFunction real? syn keyword schemeFunction remainder syn keyword schemeFunction reverse syn keyword schemeFunction round syn keyword schemeFunction scheme-report-environment syn keyword schemeFunction set-car! syn keyword schemeFunction set-cdr! syn keyword schemeFunction sin syn keyword schemeFunction sqrt syn keyword schemeFunction square syn keyword schemeFunction string syn keyword schemeFunction string->list syn keyword schemeFunction string->number syn keyword schemeFunction string->symbol syn keyword schemeFunction string->utf8 syn keyword schemeFunction string->vector syn keyword schemeFunction string-append syn keyword schemeFunction string-ci<=? syn keyword schemeFunction string-ci=? syn keyword schemeFunction string-ci>? syn keyword schemeFunction string-copy syn keyword schemeFunction string-copy! syn keyword schemeFunction string-downcase syn keyword schemeFunction string-fill! syn keyword schemeFunction string-foldcase syn keyword schemeFunction string-for-each syn keyword schemeFunction string-length syn keyword schemeFunction string-map syn keyword schemeFunction string-ref syn keyword schemeFunction string-set! syn keyword schemeFunction string-upcase syn keyword schemeFunction string<=? syn keyword schemeFunction string=? syn keyword schemeFunction string>? syn keyword schemeFunction string? syn keyword schemeFunction substring syn keyword schemeFunction symbol->string syn keyword schemeFunction symbol=? syn keyword schemeFunction symbol? syn keyword schemeFunction syntax-error syn keyword schemeFunction tan syn keyword schemeFunction textual-port? syn keyword schemeFunction transcript-off syn keyword schemeFunction transcript-on syn keyword schemeFunction truncate syn keyword schemeFunction truncate-quotient syn keyword schemeFunction truncate-remainder syn keyword schemeFunction truncate/ syn keyword schemeFunction u8-ready? syn keyword schemeFunction utf8->string syn keyword schemeFunction values syn keyword schemeFunction vector syn keyword schemeFunction vector->list syn keyword schemeFunction vector->string syn keyword schemeFunction vector-append syn keyword schemeFunction vector-copy syn keyword schemeFunction vector-copy! syn keyword schemeFunction vector-fill! syn keyword schemeFunction vector-for-each syn keyword schemeFunction vector-length syn keyword schemeFunction vector-map syn keyword schemeFunction vector-ref syn keyword schemeFunction vector-set! syn keyword schemeFunction vector? syn keyword schemeFunction with-exception-handler syn keyword schemeFunction with-input-from-file syn keyword schemeFunction with-output-to-file syn keyword schemeFunction write syn keyword schemeFunction write-bytevector syn keyword schemeFunction write-char syn keyword schemeFunction write-shared syn keyword schemeFunction write-simple syn keyword schemeFunction write-string syn keyword schemeFunction write-u8 syn keyword schemeFunction zero? hi def link schemeBoolean Boolean hi def link schemeCharacter Character hi def link schemeComment Comment hi def link schemeConstant Constant hi def link schemeData Delimiter hi def link schemeDatumComment Comment hi def link schemeDatumCommentForm Comment hi def link schemeDelimiter Delimiter hi def link schemeError Error hi def link schemeExtraSyntax Underlined hi def link schemeFunction Function hi def link schemeIdentifier Normal hi def link schemeImport PreProc hi def link schemeImportKeyword PreProc hi def link schemeKeyword Type hi def link schemeLibrarySyntax PreProc hi def link schemeMultilineComment Comment hi def link schemeNumber Number hi def link schemeParentheses Normal hi def link schemeQuasiquote Delimiter hi def link schemeQuote Delimiter hi def link schemeSpecialSyntax Special hi def link schemeString String hi def link schemeSymbol Normal hi def link schemeSyntax Statement hi def link schemeSyntaxSyntax PreProc hi def link schemeTypeSyntax Type let b:did_scheme_syntax = 1 if exists('b:is_chicken') || exists('g:is_chicken') exe 'ru! syntax/chicken.vim' endif unlet b:did_scheme_syntax let b:current_syntax = 'scheme' let &cpo = s:cpo unlet s:cpo if exists("b:current_syntax") finish endif syn keyword scilabStatement abort clear clearglobal end exit global mode predef quit resume syn keyword scilabStatement return syn keyword scilabFunction function endfunction funptr syn keyword scilabPredicate null iserror isglobal syn keyword scilabKeyword typename syn keyword scilabDebug debug pause what where whereami whereis who whos syn keyword scilabRepeat for while break syn keyword scilabConditional if then else elseif syn keyword scilabMultiplex select case syn match scilabConstant "\(%\)[0-9A-Za-z?!#$]\+" syn match scilabBoolean "\(%\)[FTft]\>" syn match scilabDelimiter "[][;,()]" syn match scilabComparison "[=~]=" syn match scilabComparison "[<>]=\=" syn match scilabComparison "<>" syn match scilabLogical "[&|~]" syn match scilabAssignment "=" syn match scilabArithmetic "[+-]" syn match scilabArithmetic "\.\=[*/\\]\.\=" syn match scilabArithmetic "\.\=^" syn match scilabRange ":" syn match scilabMlistAccess "\." syn match scilabLineContinuation "\.\{2,}" syn match scilabTransposition "[])a-zA-Z0-9?!_#$.]'"lc=1 syn keyword scilabTodo TODO todo FIXME fixme TBD tbd contained syn match scilabComment "//.*$" contains=scilabTodo syn match scilabNumber "[0-9]\+\(\.[0-9]*\)\=\([DEde][+-]\=[0-9]\+\)\=" syn match scilabNumber "\.[0-9]\+\([DEde][+-]\=[0-9]\+\)\=" syn region scilabString start=+'+ skip=+''+ end=+'+ oneline syn region scilabString start=+"+ end=+"+ oneline syn match scilabIdentifier "\<[A-Za-z?!_#$][A-Za-z0-9?!_#$]*\>" syn match scilabOverload "%[A-Za-z0-9?!_#$]\+_[A-Za-z0-9?!_#$]\+" hi def link scilabStatement Statement hi def link scilabFunction Keyword hi def link scilabPredicate Keyword hi def link scilabKeyword Keyword hi def link scilabDebug Debug hi def link scilabRepeat Repeat hi def link scilabConditional Conditional hi def link scilabMultiplex Conditional hi def link scilabConstant Constant hi def link scilabBoolean Boolean hi def link scilabDelimiter Delimiter hi def link scilabMlistAccess Delimiter hi def link scilabComparison Operator hi def link scilabLogical Operator hi def link scilabAssignment Operator hi def link scilabArithmetic Operator hi def link scilabRange Operator hi def link scilabLineContinuation Underlined hi def link scilabTransposition Operator hi def link scilabTodo Todo hi def link scilabComment Comment hi def link scilabNumber Number hi def link scilabString String hi def link scilabIdentifier Identifier hi def link scilabOverload Special let b:current_syntax = "scilab" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match screenEscape '\\.' syn keyword screenTodo contained TODO FIXME XXX NOTE syn region screenComment display oneline start='#' end='$' \ contains=screenTodo,@Spell syn region screenString display oneline start=+"+ skip=+\\"+ end=+"+ \ contains=screenVariable,screenSpecial syn region screenLiteral display oneline start=+'+ skip=+\\'+ end=+'+ syn match screenVariable contained display '$\%(\h\w*\|{\h\w*}\)' syn keyword screenBoolean on off syn match screenNumbers display '\<\d\+\>' syn match screenSpecials contained \ '%\%([%aAdDhlmMstuwWyY?:{]\|[0-9]*n\|0?cC\)' syn keyword screenCommands \ acladd \ aclchg \ acldel \ aclgrp \ aclumask \ activity \ addacl \ allpartial \ altscreen \ at \ attrcolor \ autodetach \ autonuke \ backtick \ bce \ bd_bc_down \ bd_bc_left \ bd_bc_right \ bd_bc_up \ bd_bell \ bd_braille_table \ bd_eightdot \ bd_info \ bd_link \ bd_lower_left \ bd_lower_right \ bd_ncrc \ bd_port \ bd_scroll \ bd_skip \ bd_start_braille \ bd_type \ bd_upper_left \ bd_upper_right \ bd_width \ bell \ bell_msg \ bind \ bindkey \ blanker \ blankerprg \ break \ breaktype \ bufferfile \ bumpleft \ bumpright \ c1 \ caption \ chacl \ charset \ chdir \ cjkwidth \ clear \ collapse \ colon \ command \ compacthist \ console \ copy \ crlf \ debug \ defautonuke \ defbce \ defbreaktype \ defc1 \ defcharset \ defencoding \ defescape \ defflow \ defgr \ defhstatus \ defkanji \ deflog \ deflogin \ defmode \ defmonitor \ defmousetrack \ defnonblock \ defobuflimit \ defscrollback \ defshell \ defsilence \ defslowpaste \ defutf8 \ defwrap \ defwritelock \ defzombie \ detach \ digraph \ dinfo \ displays \ dumptermcap \ echo \ encoding \ escape \ eval \ exec \ fit \ flow \ focus \ focusminsize \ gr \ group \ hardcopy \ hardcopy_append \ hardcopydir \ hardstatus \ height \ help \ history \ hstatus \ idle \ ignorecase \ info \ kanji \ kill \ lastmsg \ layout \ license \ lockscreen \ log \ logfile \ login \ logtstamp \ mapdefault \ mapnotnext \ maptimeout \ markkeys \ maxwin \ meta \ monitor \ mousetrack \ msgminwait \ msgwait \ multiuser \ nethack \ next \ nonblock \ number \ obuflimit \ only \ other \ partial \ password \ paste \ pastefont \ pow_break \ pow_detach \ pow_detach_msg \ prev \ printcmd \ process \ quit \ readbuf \ readreg \ redisplay \ register \ remove \ removebuf \ rendition \ reset \ resize \ screen \ scrollback \ select \ sessionname \ setenv \ setsid \ shell \ shelltitle \ silence \ silencewait \ sleep \ slowpaste \ sorendition \ sort \ source \ split \ startup_message \ stuff \ su \ suspend \ term \ termcap \ termcapinfo \ terminfo \ time \ title \ umask \ unbindall \ unsetenv \ utf8 \ vbell \ vbell_msg \ vbellwait \ verbose \ version \ wall \ width \ windowlist \ windows \ wrap \ writebuf \ writelock \ xoff \ xon \ zmodem \ zombie \ zombie_timeout hi def link screenEscape Special hi def link screenComment Comment hi def link screenTodo Todo hi def link screenString String hi def link screenLiteral String hi def link screenVariable Identifier hi def link screenBoolean Boolean hi def link screenNumbers Number hi def link screenSpecials Special hi def link screenCommands Keyword let b:current_syntax = "screen" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/sass.vim syn match scssComment "//.*" contains=sassTodo,@Spell syn region scssComment start="/\*" end="\*/" contains=sassTodo,@Spell hi def link scssComment sassComment let b:current_syntax = "scss" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match sdComment /\s*[#;].*$/ syn cluster sdIPCluster contains=sdIPError,sdIPSpecial syn match sdIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained syn match sdIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained syn match sdIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@sdIPCluster syn keyword sdStatement AGGREGATE AUDIO_CHANNELS syn keyword sdStatement BYTE_PER_PCKT BIT_PER_SAMPLE BITRATE syn keyword sdStatement CLOCK_RATE CODING_TYPE CREATOR syn match sdStatement /^\s*CODING_TYPE\>/ nextgroup=sdCoding skipwhite syn match sdStatement /^\s*ENCODING_NAME\>/ nextgroup=sdEncoding skipwhite syn keyword sdStatement FILE_NAME FRAME_LEN FRAME_RATE FORCE_FRAME_RATE syn keyword sdStatement LICENSE syn match sdStatement /^\s*MEDIA_SOURCE\>/ nextgroup=sdSource skipwhite syn match sdStatement /^\s*MULTICAST\>/ nextgroup=sdIP skipwhite syn keyword sdStatement PAYLOAD_TYPE PKT_LEN PRIORITY syn keyword sdStatement SAMPLE_RATE syn keyword sdStatement TITLE TWIN syn keyword sdStatement VERIFY syn keyword sdEncoding H26L MPV MP2T MP4V-ES syn keyword sdCoding FRAME SAMPLE syn keyword sdSource STORED LIVE syn keyword sdSpecial TRUE FALSE NULL syn keyword sdDelimiter STREAM STREAM_END syn match sdError /^search .\{257,}/ hi def link sdIP Number hi def link sdHostname Type hi def link sdEncoding Identifier hi def link sdCoding Identifier hi def link sdSource Identifier hi def link sdComment Comment hi def link sdIPError Error hi def link sdError Error hi def link sdStatement Statement hi def link sdIPSpecial Special hi def link sdSpecial Special hi def link sdDelimiter Delimiter let b:current_syntax = "sd" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/tcl.vim syn keyword sdcCollections foreach_in_collection syn keyword sdcObjectsQuery get_clocks get_ports syn keyword sdcObjectsInfo get_point_info get_node_info get_path_info syn keyword sdcObjectsInfo get_timing_paths set_attribute syn keyword sdcConstraints set_false_path syn keyword sdcNonIdealities set_min_delay set_max_delay syn keyword sdcNonIdealities set_input_delay set_output_delay syn keyword sdcNonIdealities set_load set_min_capacitance set_max_capacitance syn keyword sdcCreateOperations create_clock create_timing_netlist update_timing_netlist syn match sdcFlags "[[:space:]]-[[:alpha:]]*\>" hi def link sdcCollections Repeat hi def link sdcObjectsInfo Operator hi def link sdcCreateOperations Operator hi def link sdcObjectsQuery Operator hi def link sdcConstraints Operator hi def link sdcNonIdealities Operator hi def link sdcFlags Special let b:current_syntax = "sdc" if exists("b:current_syntax") finish endif if !exists("sdl_2000") syntax case ignore endif syn keyword sdlStatement task else nextstate syn keyword sdlStatement in out with from interface syn keyword sdlStatement to via env and use syn keyword sdlStatement process procedure block system service type syn keyword sdlStatement endprocess endprocedure endblock endsystem syn keyword sdlStatement package endpackage connection endconnection syn keyword sdlStatement channel endchannel connect syn keyword sdlStatement synonym dcl signal gate timer signallist signalset syn keyword sdlStatement create output set reset call syn keyword sdlStatement operators literals syn keyword sdlStatement active alternative any as atleast constants syn keyword sdlStatement default endalternative endmacro endoperator syn keyword sdlStatement endselect endsubstructure external syn keyword sdlStatement if then fi for import macro macrodefinition syn keyword sdlStatement macroid mod nameclass nodelay not operator or syn keyword sdlStatement parent provided referenced rem syn keyword sdlStatement select spelling substructure xor syn keyword sdlNewState state endstate syn keyword sdlInput input start stop return none save priority syn keyword sdlConditional decision enddecision join syn keyword sdlVirtual virtual redefined finalized adding inherits syn keyword sdlExported remote exported export if !exists("sdl_no_96") syn keyword sdlStatement all axioms constant endgenerator endrefinement endservice syn keyword sdlStatement error fpar generator literal map noequality ordering syn keyword sdlStatement refinement returns revealed reverse service signalroute syn keyword sdlStatement view viewed syn keyword sdlExported imported endif if exists("sdl_2000") syn keyword sdlStatement abstract aggregation association break choice composition syn keyword sdlStatement continue endmethod handle method syn keyword sdlStatement ordered private protected public syn keyword sdlException exceptionhandler endexceptionhandler onexception syn keyword sdlException catch new raise syn keyword sdlStatement TASK ELSE NEXTSTATE syn keyword sdlStatement IN OUT WITH FROM INTERFACE syn keyword sdlStatement TO VIA ENV AND USE syn keyword sdlStatement PROCESS PROCEDURE BLOCK SYSTEM SERVICE TYPE syn keyword sdlStatement ENDPROCESS ENDPROCEDURE ENDBLOCK ENDSYSTEM syn keyword sdlStatement PACKAGE ENDPACKAGE CONNECTION ENDCONNECTION syn keyword sdlStatement CHANNEL ENDCHANNEL CONNECT syn keyword sdlStatement SYNONYM DCL SIGNAL GATE TIMER SIGNALLIST SIGNALSET syn keyword sdlStatement CREATE OUTPUT SET RESET CALL syn keyword sdlStatement OPERATORS LITERALS syn keyword sdlStatement ACTIVE ALTERNATIVE ANY AS ATLEAST CONSTANTS syn keyword sdlStatement DEFAULT ENDALTERNATIVE ENDMACRO ENDOPERATOR syn keyword sdlStatement ENDSELECT ENDSUBSTRUCTURE EXTERNAL syn keyword sdlStatement IF THEN FI FOR IMPORT MACRO MACRODEFINITION syn keyword sdlStatement MACROID MOD NAMECLASS NODELAY NOT OPERATOR OR syn keyword sdlStatement PARENT PROVIDED REFERENCED REM syn keyword sdlStatement SELECT SPELLING SUBSTRUCTURE XOR syn keyword sdlNewState STATE ENDSTATE syn keyword sdlInput INPUT START STOP RETURN NONE SAVE PRIORITY syn keyword sdlConditional DECISION ENDDECISION JOIN syn keyword sdlVirtual VIRTUAL REDEFINED FINALIZED ADDING INHERITS syn keyword sdlExported REMOTE EXPORTED EXPORT syn keyword sdlStatement ABSTRACT AGGREGATION ASSOCIATION BREAK CHOICE COMPOSITION syn keyword sdlStatement CONTINUE ENDMETHOD ENDOBJECT ENDVALUE HANDLE METHOD OBJECT syn keyword sdlStatement ORDERED PRIVATE PROTECTED PUBLIC syn keyword sdlException EXCEPTIONHANDLER ENDEXCEPTIONHANDLER ONEXCEPTION syn keyword sdlException CATCH NEW RAISE endif syn match sdlSpecial contained "\\\d\d\d\|\\." syn region sdlString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial syn region sdlString start=+'+ skip=+''+ end=+'+ syn region sdlComment start="/\*" end="\*/" syn region sdlComment start="comment" end=";" syn region sdlComment start="--" end="--\|$" syn match sdlCommentError "\*/" syn keyword sdlOperator present syn keyword sdlType integer real natural duration pid boolean time syn keyword sdlType character charstring ia5string syn keyword sdlType self now sender offspring syn keyword sdlStructure asntype endasntype syntype endsyntype struct if !exists("sdl_no_96") syn keyword sdlStructure newtype endnewtype endif if exists("sdl_2000") syn keyword sdlStructure object endobject value endvalue syn keyword sdlStructure OBJECT ENDOBJECT VALUE ENDVALUE syn keyword sdlOperator PRESENT syn keyword sdlType INTEGER NATURAL DURATION PID BOOLEAN TIME syn keyword sdlType CHARSTRING IA5STRING syn keyword sdlType SELF NOW SENDER OFFSPRING syn keyword sdlStructure ASNTYPE ENDASNTYPE SYNTYPE ENDSYNTYPE STRUCT endif syn case match syn keyword sdlType SET OF BOOLEAN INTEGER REAL BIT OCTET syn keyword sdlType SEQUENCE CHOICE syn keyword sdlType STRING OBJECT IDENTIFIER NULL syn sync ccomment sdlComment command -nargs=+ Hi hi def hi def link sdlException Label hi def link sdlConditional sdlStatement hi def link sdlVirtual sdlStatement hi def link sdlExported sdlFlag hi def link sdlCommentError sdlError hi def link sdlOperator Operator hi def link sdlStructure sdlType Hi sdlStatement term=bold ctermfg=4 guifg=Blue Hi sdlFlag term=bold ctermfg=4 guifg=Blue gui=italic Hi sdlNewState term=italic ctermfg=2 guifg=Magenta gui=underline Hi sdlInput term=bold guifg=Red hi def link sdlType Type hi def link sdlString String hi def link sdlComment Comment hi def link sdlSpecial Special hi def link sdlError Error delcommand Hi let b:current_syntax = "sdl" if exists("b:current_syntax") finish endif syn match sedError "\S" syn match sedWhitespace "\s\+" contained syn match sedSemicolon ";" syn match sedAddress "[[:digit:]$]" syn match sedAddress "\d\+\~\d\+" syn region sedAddress matchgroup=Special start="[{,;]\s*/\(\\/\)\="lc=1 skip="[^\\]\(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta syn region sedAddress matchgroup=Special start="^\s*/\(\\/\)\=" skip="[^\\]\(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta syn match sedComment "^\s*#.*$" syn match sedFunction "[dDgGhHlnNpPqQx=]\s*\($\|;\)" contains=sedSemicolon,sedWhitespace syn match sedLabel ":[^;]*" syn match sedLineCont "^\(\\\\\)*\\$" contained syn match sedLineCont "[^\\]\(\\\\\)*\\$"ms=e contained syn match sedSpecial "[{},!]" if exists("highlight_sedtabs") syn match sedTab "\t" contained endif syn region sedACI matchgroup=sedFunction start="[aci]\\$" matchgroup=NONE end="^.*$" contains=sedLineCont,sedTab syn region sedBranch matchgroup=sedFunction start="[bt]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace syn region sedRW matchgroup=sedFunction start="[rw]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace syn region sedFlagwrite matchgroup=sedFlag start="w" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace contained syn match sedFlag "[[:digit:]gpI]*w\=" contains=sedFlagwrite contained syn match sedRegexpMeta "[.*^$]" contained syn match sedRegexpMeta "\\." contains=sedTab contained syn match sedRegexpMeta "\[.\{-}\]" contains=sedTab contained syn match sedRegexpMeta "\\{\d\*,\d*\\}" contained syn match sedRegexpMeta "\\(.\{-}\\)" contains=sedTab contained syn match sedReplaceMeta "&\|\\\($\|.\)" contains=sedTab contained let __at = char2nr("@") let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64 if has("ebcdic") let __sed_last = 255 else let __sed_last = 126 endif let __sed_metacharacters = '$*.\^[~' while __sed_i <= __sed_last let __sed_delimiter = escape(nr2char(__sed_i), __sed_metacharacters) if __sed_i != __at exe 'syn region sedAddress matchgroup=Special start=@\\'.__sed_delimiter.'\(\\'.__sed_delimiter.'\)\=@ skip=@[^\\]\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'I\=@ contains=sedTab' exe 'syn region sedRegexp'.__sed_i 'matchgroup=Special start=@'.__sed_delimiter.'\(\\\\\|\\'.__sed_delimiter.'\)*@ skip=@[^\\'.__sed_delimiter.']\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'@me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement'.__sed_i exe 'syn region sedReplacement'.__sed_i 'matchgroup=Special start=@'.__sed_delimiter.'\(\\\\\|\\'.__sed_delimiter.'\)*@ skip=@[^\\'.__sed_delimiter.']\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'@ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag' endif let __sed_i = __sed_i + 1 endwhile syn region sedAddress matchgroup=Special start=+\\@\(\\@\)\=+ skip=+[^\\]\(\\\\\)*\\@+ end=+@I\=+ contains=sedTab,sedRegexpMeta syn region sedRegexp64 matchgroup=Special start=+@\(\\\\\|\\@\)*+ skip=+[^\\@]\(\\\\\)*\\@+ end=+@+me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement64 syn region sedReplacement64 matchgroup=Special start=+@\(\\\\\|\\@\)*+ skip=+[^\\@]\(\\\\\)*\\@+ end=+@+ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag syn match sedST "[sy]" nextgroup=sedRegexp\d\+ hi def link sedAddress Macro hi def link sedACI NONE hi def link sedBranch Label hi def link sedComment Comment hi def link sedDelete Function hi def link sedError Error hi def link sedFlag Type hi def link sedFlagwrite Constant hi def link sedFunction Function hi def link sedLabel Label hi def link sedLineCont Special hi def link sedPutHoldspc Function hi def link sedReplaceMeta Special hi def link sedRegexpMeta Special hi def link sedRW Constant hi def link sedSemicolon Special hi def link sedST Function hi def link sedSpecial Special hi def link sedWhitespace NONE if exists("highlight_sedtabs") hi def link sedTab Todo endif let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64 while __sed_i <= __sed_last exe "hi def link sedRegexp".__sed_i "Macro" exe "hi def link sedReplacement".__sed_i "NONE" let __sed_i = __sed_i + 1 endwhile unlet __sed_i __sed_last __sed_delimiter __sed_metacharacters let b:current_syntax = "sed" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match sendprComment /^SEND-PR:/ syn match sendprType /<[a-zA-Z0-9\-\_\.]*@[a-zA-Z0-9\-\_\.]*>/ syn match sendprString /^>[a-zA-Z\-]*:/ syn region sendprLabel start="\[" end="\]" syn match sendprString /^To:/ syn match sendprString /^From:/ syn match sendprString /^Reply-To:/ syn match sendprString /^Cc:/ syn match sendprString /^X-send-pr-version:/ syn match sendprString /^X-GNATS-Notify:/ hi def link sendprComment Comment hi def link sendprType Type hi def link sendprString String hi def link sendprLabel Label let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword sensorsTodo contained TODO FIXME XXX NOTE syn region sensorsComment display oneline start='#' end='$' \ contains=sensorsTodo,@Spell syn keyword sensorsKeyword bus chip label compute ignore set syn region sensorsName display oneline \ start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=sensorsNameSpecial syn match sensorsName display '\w\+' syn match sensorsNameSpecial display '\\["\\rnt]' syn match sensorsLineContinue '\\$' syn match sensorsNumber display '\d*.\d\+\>' syn match sensorsRealWorld display '@' syn match sensorsOperator display '[+*/-]' syn match sensorsDelimiter display '[()]' hi def link sensorsTodo Todo hi def link sensorsComment Comment hi def link sensorsKeyword Keyword hi def link sensorsName String hi def link sensorsNameSpecial SpecialChar hi def link sensorsLineContinue Special hi def link sensorsNumber Number hi def link sensorsRealWorld Identifier hi def link sensorsOperator Normal hi def link sensorsDelimiter Normal let b:current_syntax = "sensors" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match servicesBegin display '^' \ nextgroup=servicesName,servicesComment syn match servicesName contained display '[[:graph:]]\+' \ nextgroup=servicesPort skipwhite syn match servicesPort contained display '\d\+' \ nextgroup=servicesPPDiv,servicesPPDivDepr \ skipwhite syn match servicesPPDiv contained display '/' \ nextgroup=servicesProtocol skipwhite syn match servicesPPDivDepr contained display ',' \ nextgroup=servicesProtocol skipwhite syn match servicesProtocol contained display '\S\+' \ nextgroup=servicesAliases,servicesComment \ skipwhite syn match servicesAliases contained display '\S\+' \ nextgroup=servicesAliases,servicesComment \ skipwhite syn keyword servicesTodo contained TODO FIXME XXX NOTE syn region servicesComment display oneline start='#' end='$' \ contains=servicesTodo,@Spell hi def link servicesTodo Todo hi def link servicesComment Comment hi def link servicesName Identifier hi def link servicesPort Number hi def link servicesPPDiv Delimiter hi def link servicesPPDivDepr Error hi def link servicesProtocol Type hi def link servicesAliases Macro let b:current_syntax = "services" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match setserialBegin display '^' \ nextgroup=setserialDevice,setserialComment \ skipwhite syn match setserialDevice contained display '\%(/[^ \t/]*\)\+' \ nextgroup=setserialParameter skipwhite syn keyword setserialParameter contained port irq baud_base divisor \ close_delay closing_wait rx_trigger \ tx_trigger flow_off flow_on rx_timeout \ nextgroup=setserialNumber skipwhite syn keyword setserialParameter contained uart \ nextgroup=setserialUARTType skipwhite syn keyword setserialParameter contained autoconfig auto_irq skip_test \ spd_hi spd_vhi spd_shi spd_warp spd_cust \ spd_normal sak fourport session_lockout \ pgrp_lockout hup_notify split_termios \ callout_nohup low_latency \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(auto_irq\|skip_test\|sak\|fourport\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(session_lockout\|pgrp_lockout\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(hup_notify\|split_termios\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn match setserialParameter contained display \ '\^\%(callout_nohup\|low_latency\)' \ contains=setserialNegation \ nextgroup=setserialParameter skipwhite syn keyword setserialParameter contained set_multiport \ nextgroup=setserialMultiport skipwhite syn match setserialNumber contained display '\<\d\+\>' \ nextgroup=setserialParameter skipwhite syn match setserialNumber contained display '0x\x\+' \ nextgroup=setserialParameter skipwhite syn keyword setserialUARTType contained none syn match setserialUARTType contained display \ '8250\|16[4789]50\|16550A\=\|16650\%(V2\)\=' \ nextgroup=setserialParameter skipwhite syn match setserialUARTType contained display '166[59]4' \ nextgroup=setserialParameter skipwhite syn match setserialNegation contained display '\^' syn match setserialMultiport contained '\' \ nextgroup=setserialPort skipwhite syn match setserialPort contained display '\<\d\+\>' \ nextgroup=setserialMask skipwhite syn match setserialPort contained display '0x\x\+' \ nextgroup=setserialMask skipwhite syn match setserialMask contained '\' \ nextgroup=setserialBitMask skipwhite syn match setserialBitMask contained display '\<\d\+\>' \ nextgroup=setserialMatch skipwhite syn match setserialBitMask contained display '0x\x\+' \ nextgroup=setserialMatch skipwhite syn match setserialMatch contained '\' \ nextgroup=setserialMatchBits skipwhite syn match setserialMatchBits contained display '\<\d\+\>' \ nextgroup=setserialMultiport skipwhite syn match setserialMatchBits contained display '0x\x\+' \ nextgroup=setserialMultiport skipwhite syn keyword setserialTodo contained TODO FIXME XXX NOTE syn region setserialComment display oneline start='^\s*#' end='$' \ contains=setserialTodo,@Spell hi def link setserialTodo Todo hi def link setserialComment Comment hi def link setserialDevice Normal hi def link setserialParameter Identifier hi def link setserialNumber Number hi def link setserialUARTType Type hi def link setserialNegation Operator hi def link setserialMultiport Type hi def link setserialPort setserialNumber hi def link setserialMask Type hi def link setserialBitMask setserialNumber hi def link setserialMatch Type hi def link setserialMatchBits setserialNumber let b:current_syntax = "setserial" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:sgml_cpo_save = &cpo set cpo&vim syn case match syn match sgmlError "[<&]" syn match sgmlUnicodeNumberAttr +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierAttr syn match sgmlUnicodeSpecifierAttr +\\u+ contained syn match sgmlUnicodeNumberData +\\u\x\{4}+ contained contains=sgmlUnicodeSpecifierData syn match sgmlUnicodeSpecifierData +\\u+ contained syn region sgmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=sgmlEntity,sgmlUnicodeNumberAttr display syn region sgmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=sgmlEntity,sgmlUnicodeNumberAttr display syn match sgmlAttribPunct +[:.]+ contained display syn match sgmlEqual +=+ syn match sgmlAttrib \ +[^-'"<]\@<=\<[a-zA-Z0-9.:]\+\>\([^'">]\@=\|$\)+ \ contained \ contains=sgmlAttribPunct,@sgmlAttribHook \ display syn match sgmlValue \ +[^"' =/!?<>][^ =/!?<>]*+ \ contained \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook \ display syn region sgmlValue contained start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook syn region sgmlValue contained start=+'+ skip=+\\\\\|\\'+ end=+'+ \ contains=sgmlEntity,sgmlUnicodeNumberAttr,@sgmlValueHook syn match sgmlEqualValue \ +=\s*[^ =/!?<>]\++ \ contained \ contains=sgmlEqual,sgmlString,sgmlValue \ display syn region sgmlTag \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+ \ matchgroup=sgmlTag end=+>+ \ contained \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook syn region sgmlEmptyTag \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+ \ matchgroup=sgmlEndTag end=+/>+ \ contained \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook syn match sgmlEndTag \ +"']\+>+ \ contained \ contains=@sgmlTagHook syn region sgmlAbbrTag \ matchgroup=sgmlTag start=+<[^ /!?"']\@=+ \ matchgroup=sgmlTag end=+/+ \ contained \ contains=sgmlError,sgmlAttrib,sgmlEqualValue,@sgmlTagHook syn match sgmlAbbrEndTag +/+ syn match sgmlAbbrRegion \ +<[^/!?>"']\+/\_[^/]\+/+ \ contains=sgmlAbbrTag,sgmlAbbrEndTag,sgmlCdata,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook syn region sgmlRegion \ start=+<\z([^ /!?>"']\+\)\(\(\_[^/>]*[^/!?]>\)\|>\)+ \ end=++ \ contains=sgmlTag,sgmlEndTag,sgmlCdata,@sgmlRegionCluster,sgmlComment,sgmlEntity,sgmlUnicodeNumberData,@sgmlRegionHook \ keepend \ extend syn match sgmlEmptyRegion \ +<[^ /!?>"']\(\_[^"'<>]\|"\_[^"]*"\|'\_[^']*'\)*/>+ \ contains=sgmlEmptyTag syn cluster sgmlRegionCluster contains=sgmlRegion,sgmlEmptyRegion,sgmlAbbrRegion syn match sgmlEntity "&[^; \t]*;" contains=sgmlEntityPunct syn match sgmlEntityPunct contained "[&.;]" syn region sgmlComment start=++ contains=sgmlCommentPart,sgmlString,sgmlCommentError,sgmlTodo syn keyword sgmlTodo contained TODO FIXME XXX display syn match sgmlCommentError contained "[^>+ \ contains=sgmlCdataStart,sgmlCdataEnd,@sgmlCdataHook \ keepend \ extend syn match sgmlCdataStart ++ contained syn region sgmlProcessing matchgroup=sgmlProcessingDelim start="" contains=sgmlAttrib,sgmlEqualValue syn region sgmlDocType matchgroup=sgmlDocTypeDecl start="\c" contains=sgmlDocTypeKeyword,sgmlInlineDTD,sgmlString syn keyword sgmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM syn region sgmlInlineDTD contained start="\[" end="]" contains=@sgmlDTD syn include @sgmlDTD :p:h/dtd.vim syn sync match sgmlSyncDT grouphere sgmlDocType +\_.\("']\+\)\@=+ syn sync match sgmlSync groupthere sgmlRegion +"']\+>+ syn sync minlines=100 hi def link sgmlTodo Todo hi def link sgmlTag Function hi def link sgmlEndTag Identifier hi def link sgmlAbbrEndTag Identifier hi def link sgmlEmptyTag Function hi def link sgmlEntity Statement hi def link sgmlEntityPunct Type hi def link sgmlAttribPunct Comment hi def link sgmlAttrib Type hi def link sgmlValue String hi def link sgmlString String hi def link sgmlComment Comment hi def link sgmlCommentPart Comment hi def link sgmlCommentError Error hi def link sgmlError Error hi def link sgmlProcessingDelim Comment hi def link sgmlProcessing Type hi def link sgmlCdata String hi def link sgmlCdataCdata Statement hi def link sgmlCdataStart Type hi def link sgmlCdataEnd Type hi def link sgmlDocTypeDecl Function hi def link sgmlDocTypeKeyword Statement hi def link sgmlInlineDTD Function hi def link sgmlUnicodeNumberAttr Number hi def link sgmlUnicodeSpecifierAttr SpecialChar hi def link sgmlUnicodeNumberData Number hi def link sgmlUnicodeSpecifierData SpecialChar let b:current_syntax = "sgml" let &cpo = s:sgml_cpo_save unlet s:sgml_cpo_save if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn case ignore syn region sgmldeclDeclBlock transparent start=++ syn region sgmldeclTagBlock transparent start=+<+ end=+>+ \ contains=ALLBUT, \ @sgmlTagError,@sgmlErrInTag syn region sgmldeclComment contained start=+--+ end=+--+ syn keyword sgmldeclDeclKeys SGML CHARSET CAPACITY SCOPE SYNTAX \ FEATURES syn keyword sgmldeclTypes BASESET DESCSET DOCUMENT NAMING DELIM \ NAMES QUANTITY SHUNCHAR DOCTYPE \ ELEMENT ENTITY ATTLIST NOTATION \ TYPE syn keyword sgmldeclStatem CONTROLS FUNCTION NAMECASE MINIMIZE \ LINK OTHER APPINFO REF ENTITIES syn keyword sgmldeclVariables TOTALCAP GRPCAP ENTCAP DATATAG OMITTAG RANK \ SIMPLE IMPLICIT EXPLICIT CONCUR SUBDOC FORMAL ATTCAP \ ATTCHCAP AVGRPCAP ELEMCAP ENTCHCAP IDCAP IDREFCAP \ SHORTTAG syn match sgmldeclNConst contained +[0-9]\++ syn region sgmldeclString contained start=+"+ end=+"+ syn keyword sgmldeclBool YES NO syn keyword sgmldeclSpecial SHORTREF SGMLREF UNUSED NONE GENERAL \ SEEALSO ANY syn sync lines=250 hi def link sgmldeclDeclKeys Keyword hi def link sgmldeclTypes Type hi def link sgmldeclConst Constant hi def link sgmldeclNConst Constant hi def link sgmldeclString String hi def link sgmldeclDeclBlock Normal hi def link sgmldeclBool Boolean hi def link sgmldeclSpecial Special hi def link sgmldeclComment Comment hi def link sgmldeclStatem Statement hi def link sgmldeclVariables Type let b:current_syntax = "sgmldecl" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif syn case ignore syn region sgmllnxEndTag start=++ contains=sgmllnxTagN,sgmllnxTagError syn region sgmllnxTag start=+<[^/]+ end=+>+ contains=sgmllnxTagN,sgmllnxTagError syn match sgmllnxTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=sgmllnxTagName syn match sgmllnxTagN contained ++ syn region sgmllnxDocType start=++ hi def link sgmllnxTag2 Function hi def link sgmllnxTagN2 Function hi def link sgmllnxTag Special hi def link sgmllnxEndTag Special hi def link sgmllnxParen Special hi def link sgmllnxEntity Type hi def link sgmllnxDocEnt Type hi def link sgmllnxTagName Statement hi def link sgmllnxComment Comment hi def link sgmllnxSpecial Special hi def link sgmllnxDocType PreProc hi def link sgmllnxTagError Error let b:current_syntax = "sgmllnx" if exists("b:current_syntax") finish endif if getline(1) =~ '\ 704 if exists("b:is_bash") exe "syn iskeyword ".&iskeyword.",-,:" else exe "syn iskeyword ".&iskeyword.",-" endif endif if s:sh_fold_functions com! -nargs=* ShFoldFunctions fold else com! -nargs=* ShFoldFunctions endif if s:sh_fold_heredoc com! -nargs=* ShFoldHereDoc fold else com! -nargs=* ShFoldHereDoc endif if s:sh_fold_ifdofor com! -nargs=* ShFoldIfDoFor fold else com! -nargs=* ShFoldIfDoFor endif syn case match syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsacError,shCurlyError,shParenError,shTestError,shOK if exists("b:is_kornshell") || exists("b:is_bash") syn cluster ErrorList add=shDTestError endif syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shForPP,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS syn cluster shDerefVarList contains=shDerefOff,shDerefOp,shDerefVarArray,shDerefOpError syn cluster shEchoList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote syn cluster shExprList1 contains=shCharClass,shNumber,shOperator,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shDblBrace,shDeref,shDerefSimple,shCtrlSeq syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shFunctionList add=shRepeat syn cluster shFunctionList add=shDblBrace,shDblParen endif syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload syn cluster shIdList contains=shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr,shTouch syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm syn cluster shSubShList contains=@shCommandSubList,shCommandSubBQ,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shArithmetic,shCharClass,shCommandSub,shCommandSubBQ,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shSpecialDQ,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr syn cluster shNoZSList contains=shSpecialNoZS syn cluster shForList contains=shTestOpr,shNumber,shDerefSimple,shDeref,shCommandSub,shCommandSubBQ,shArithmetic syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment syn region shEcho matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=@shEchoList skipwhite nextgroup=shQuickComment syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' syn region shEmbeddedEcho contained matchgroup=shStatement start="\" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="\s#"me=e-2 contains=shNumber,shExSingleQuote,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shOperator,shExDoubleQuote,shDoubleQuote,shCharClass,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") syn match shStatement "\" syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`" syn region shAlias matchgroup=shStatement start="\\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="=" syn match shTouch '\[^;#]*' skipwhite nextgroup=shComment contains=shTouchCmd,shDoubleQuote,shSingleQuote,shDeref,shDerefSimple syn match shTouchCmd '\' contained endif if !exists("g:sh_no_error") syn match shDoError "\" syn match shIfError "\" syn match shInError "\" syn match shCaseError ";;" syn match shEsacError "\" syn match shCurlyError "}" syn match shParenError ")" syn match shOK '\.\(done\|fi\|in\|esac\)' if exists("b:is_kornshell") || exists("b:is_bash") syn match shDTestError "]]" endif syn match shTestError "]" endif syn match shOption "\s\zs[-+][-_a-zA-Z#@]\+" syn match shOption "\s\zs--[^ \t$`'"|);]\+" syn match shRedir "\d\=>\(&[-0-9]\)\=" syn match shRedir "\d\=>>-\=" syn match shRedir "\d\=<\(&[-0-9]\)\=" syn match shRedir "\d<<-\=" syn match shOperator "<<\|>>" contained syn match shOperator "[!&;|]" contained syn match shOperator "\[[[^:]\|\]]" contained syn match shOperator "[-=/*+%]\==" skipwhite nextgroup=shPattern syn match shPattern "\<\S\+\())\)\@=" contained contains=shExSingleQuote,shSingleQuote,shExDoubleQuote,shDoubleQuote,shDeref syn region shExpr transparent matchgroup=shExprRegion start="{" end="}" contains=@shExprList2 nextgroup=shSpecialNxt syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" contains=@shSubShList nextgroup=shSpecialNxt syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial syn region shTest transparent matchgroup=shStatement start="\+ end="\<;\_s*then\>" end="\" contains=@shIfList ShFoldIfDoFor syn region shFor matchgroup=shLoop start="\#\=" syn match shNumber "\<-\=\.\=\d\+\>#\=" syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained if exists("b:is_bash") syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt syn region shExDoubleQuote matchgroup=shQuote start=+\$"+ skip=+\\\\\|\\.\|\\"+ end=+"+ contains=@shDblQuoteList,shStringSpecial,shSpecial nextgroup=shSpecialNxt elseif !exists("g:sh_no_error") syn region shExSingleQuote matchGroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial syn region shExDoubleQuote matchGroup=Error start=+\$"+ skip=+\\\\\|\\.+ end=+"+ contains=shStringSpecial endif syn region shSingleQuote matchgroup=shQuote start=+'+ end=+'+ contains=@Spell nextgroup=shSpecialStart,shSpecialSQ syn region shDoubleQuote matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@" else syn keyword shTodo contained COMBAK FIXME TODO XXX endif syn match shComment "^\s*\zs#.*$" contains=@shCommentGroup syn match shComment "\s\zs#.*$" contains=@shCommentGroup syn match shComment contained "#.*$" contains=@shCommentGroup syn match shQuickComment contained "#.*$" syn match shBQComment contained "#.\{-}\ze`" contains=@shCommentGroup ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc01 start="<<\s*\\\=\z([^ \t|>]\+\)" matchgroup=shHereDoc01 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc02 start="<<\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^"]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t'"|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^\t|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc09 start="<<\s*\\\_$\_s*\"\z([^\t|>]\+\)\"" matchgroup=shHereDoc09 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc10 start="<<-\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc10 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc11 start="<<-\s*\\\_$\_s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc11 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc12 start="<<-\s*\\\_$\_s*'\z([^']\+\)'" matchgroup=shHereDoc12 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc13 start="<<-\s*\\\_$\_s*\"\z([^"]\+\)\"" matchgroup=shHereDoc13 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc14 start="<<\\\z([^ \t|>]\+\)" matchgroup=shHereDoc14 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc15 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc16 start="<<-\s*\\\z([^ \t|>]\+\)" matchgroup=shHereDoc15 end="^\s*\z1\s*$" contains=@shDblQuoteList if exists("b:is_bash") || (exists("b:is_kornshell") && !exists("b:is_posix")) syn match shHereString "<<<" skipwhite nextgroup=shCmdParenRegion endif syn match shSetOption "\s\zs[-+][a-zA-Z0-9]\+\>" contained syn match shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze=" nextgroup=shVarAssign syn match shVarAssign "=" contained nextgroup=shCmdParenRegion,shPattern,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shSingleQuote,shExSingleQuote,shVar syn match shVar contained "\h\w*" syn region shAtExpr contained start="@(" end=")" contains=@shIdList if exists("b:is_bash") syn match shSet "^\s*set\ze\s\+$" syn region shSetList oneline matchgroup=shSet start="\<\%(declare\|local\|export\)\>\ze[/a-zA-Z_]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\)\>[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList nextgroup=shComment elseif exists("b:is_kornshell") || exists("b:is_posix") syn match shSet "^\s*set\ze\s\+$" syn region shSetList oneline matchgroup=shSet start="\<\(export\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\>\)\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList nextgroup=shComment else syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif if !exists("b:is_posix") syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo endif if exists("b:is_bash") ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*[A-Za-z_0-9:][-a-zA-Z_0-9:]*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<[A-Za-z_0-9:][-a-zA-Z_0-9:]*\>\s*\%(()\)\=\_s*)" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment else ShFoldFunctions syn region shFunctionOne matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{" end="}" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionTwo matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*{" end="}" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionThree matchgroup=shFunction start="^\s*\h\w*\s*()\_s*(" end=")" contains=@shFunctionList skipwhite skipnl nextgroup=shFunctionStart,shQuickComment ShFoldFunctions syn region shFunctionFour matchgroup=shFunction start="\%(do\)\@!\&\<\h\w*\>\s*\%(()\)\=\_s*(" end=")" contains=shFunctionKey,@shFunctionList contained skipwhite skipnl nextgroup=shFunctionStart,shQuickComment endif if !exists("g:sh_no_error") syn match shDerefWordError "[^}$[~]" contained endif syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList syn match shDerefSimple "\$\$" nextgroup=@shNoZSList syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS endif if exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${!" end="}" contains=@shDerefVarArray endif if exists("b:is_bash") syn region shDeref matchgroup=PreProc start="\${!" end="\*\=}" contains=@shDerefList,shDerefOff syn match shDerefVar contained "{\@<=!\h\w*" nextgroup=@shDerefVarList endif if exists("b:is_kornshell") syn match shDerefVar contained "{\@<=!\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList endif syn match shDerefSpecial contained "{\@<=[-*@?0]" nextgroup=shDerefOp,shDerefOpError syn match shDerefSpecial contained "\({[#!]\)\@<=[[:alnum:]*@_]\+" nextgroup=@shDerefVarList,shDerefOp syn match shDerefVar contained "{\@<=\h\w*" nextgroup=@shDerefVarList syn match shDerefVar contained '\d' nextgroup=@shDerefVarList if exists("b:is_kornshell") || exists("b:is_posix") syn match shDerefVar contained "{\@<=\h\w*[[:alnum:]_.]*" nextgroup=@shDerefVarList endif syn region shDerefVarArray contained matchgroup=shDeref start="\[" end="]" contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError syn cluster shDerefPatternList contains=shDerefPattern,shDerefString if !exists("g:sh_no_error") syn match shDerefOpError contained ":[[:punct:]]" endif syn match shDerefOp contained ":\=[-=?]" nextgroup=@shDerefPatternList syn match shDerefOp contained ":\=+" nextgroup=@shDerefPatternList if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn match shDerefOp contained "#\{1,2}" nextgroup=@shDerefPatternList syn match shDerefOp contained "%\{1,2}" nextgroup=@shDerefPatternList syn match shDerefPattern contained "[^{}]\+" contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern syn region shDerefPattern contained start="{" end="}" contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern syn match shDerefEscape contained '\%(\\\\\)*\\.' endif if exists("b:is_bash") syn match shDerefOp contained "[,^]\{1,2}" nextgroup=@shDerefPatternList endif syn region shDerefString contained matchgroup=shDerefDelim start=+\%(\\\)\@" syn sync match shCaseEsacSync groupthere shCaseEsac "\" syn sync match shDoSync grouphere shDo "\" syn sync match shDoSync groupthere shDo "\" syn sync match shForSync grouphere shFor "\" syn sync match shForSync groupthere shFor "\" syn sync match shIfSync grouphere shIf "\" syn sync match shIfSync groupthere shIf "\" syn sync match shUntilSync grouphere shRepeat "\" syn sync match shWhileSync grouphere shRepeat "\" if !exists("skip_sh_syntax_inits") hi def link shArithRegion shShellVariables hi def link shAstQuote shDoubleQuote hi def link shAtExpr shSetList hi def link shBkslshSnglQuote shSingleQuote hi def link shBkslshDblQuote shDOubleQuote hi def link shBeginHere shRedir hi def link shCaseBar shConditional hi def link shCaseCommandSub shCommandSub hi def link shCaseDoubleQuote shDoubleQuote hi def link shCaseIn shConditional hi def link shQuote shOperator hi def link shCaseSingleQuote shSingleQuote hi def link shCaseStart shConditional hi def link shCmdSubRegion shShellVariables hi def link shColon shComment hi def link shDerefOp shOperator hi def link shDerefPOL shDerefOp hi def link shDerefPPS shDerefOp hi def link shDerefPSR shDerefOp hi def link shDeref shShellVariables hi def link shDerefDelim shOperator hi def link shDerefSimple shDeref hi def link shDerefSpecial shDeref hi def link shDerefString shDoubleQuote hi def link shDerefVar shDeref hi def link shDoubleQuote shString hi def link shEcho shString hi def link shEchoDelim shOperator hi def link shEchoQuote shString hi def link shForPP shLoop hi def link shFunction Function hi def link shEmbeddedEcho shString hi def link shEscape shCommandSub hi def link shExDoubleQuote shDoubleQuote hi def link shExSingleQuote shSingleQuote hi def link shHereDoc shString hi def link shHereString shRedir hi def link shHerePayload shHereDoc hi def link shLoop shStatement hi def link shSpecialNxt shSpecial hi def link shNoQuote shDoubleQuote hi def link shOption shCommandSub hi def link shPattern shString hi def link shParen shArithmetic hi def link shPosnParm shShellVariables hi def link shQuickComment shComment hi def link shBQComment shComment hi def link shRange shOperator hi def link shRedir shOperator hi def link shSetListDelim shOperator hi def link shSetOption shOption hi def link shSingleQuote shString hi def link shSource shOperator hi def link shStringSpecial shSpecial hi def link shSpecialStart shSpecial hi def link shSubShRegion shOperator hi def link shTestOpr shConditional hi def link shTestPattern shString hi def link shTestDoubleQuote shString hi def link shTestSingleQuote shString hi def link shTouchCmd shStatement hi def link shVariable shSetList hi def link shWrapLineOperator shOperator if exists("b:is_bash") hi def link bashAdminStatement shStatement hi def link bashSpecialVariables shShellVariables hi def link bashStatement shStatement hi def link shCharClass shSpecial hi def link shDerefOff shDerefOp hi def link shDerefLen shDerefOff endif if exists("b:is_kornshell") || exists("b:is_posix") hi def link kshSpecialVariables shShellVariables hi def link kshStatement shStatement endif if !exists("g:sh_no_error") hi def link shCaseError Error hi def link shCondError Error hi def link shCurlyError Error hi def link shDerefOpError Error hi def link shDerefWordError Error hi def link shDoError Error hi def link shEsacError Error hi def link shIfError Error hi def link shInError Error hi def link shParenError Error hi def link shTestError Error if exists("b:is_kornshell") || exists("b:is_posix") hi def link shDTestError Error endif endif hi def link shArithmetic Special hi def link shCharClass Identifier hi def link shSnglCase Statement hi def link shCommandSub Special hi def link shCommandSubBQ shCommandSub hi def link shComment Comment hi def link shConditional Conditional hi def link shCtrlSeq Special hi def link shExprRegion Delimiter hi def link shFunctionKey Function hi def link shFunctionName Function hi def link shNumber Number hi def link shOperator Operator hi def link shRepeat Repeat hi def link shSet Statement hi def link shSetList Identifier hi def link shShellVariables PreProc hi def link shSpecial Special hi def link shSpecialDQ Special hi def link shSpecialSQ Special hi def link shSpecialNoZS shSpecial hi def link shStatement Statement hi def link shString String hi def link shTodo Todo hi def link shAlias Identifier hi def link shHereDoc01 shRedir hi def link shHereDoc02 shRedir hi def link shHereDoc03 shRedir hi def link shHereDoc04 shRedir hi def link shHereDoc05 shRedir hi def link shHereDoc06 shRedir hi def link shHereDoc07 shRedir hi def link shHereDoc08 shRedir hi def link shHereDoc09 shRedir hi def link shHereDoc10 shRedir hi def link shHereDoc11 shRedir hi def link shHereDoc12 shRedir hi def link shHereDoc13 shRedir hi def link shHereDoc14 shRedir hi def link shHereDoc15 shRedir endif delc ShFoldFunctions delc ShFoldHereDoc delc ShFoldIfDoFor if exists("b:is_bash") let b:current_syntax = "bash" elseif exists("b:is_kornshell") let b:current_syntax = "ksh" elseif exists("b:is_posix") let b:current_syntax = "posix" else let b:current_syntax = "sh" endif if exists("b:current_syntax") finish endif syn include @SQL syntax/sql.vim unlet b:current_syntax setlocal expandtab syn case ignore syn keyword sicadStatement define syn keyword sicadStatement dialog syn keyword sicadStatement do syn keyword sicadStatement dop contained syn keyword sicadStatement end syn keyword sicadStatement enddo syn keyword sicadStatement endp syn keyword sicadStatement erroff syn keyword sicadStatement erron syn keyword sicadStatement exitp syn keyword sicadGoto goto contained syn keyword sicadStatement hh syn keyword sicadStatement if syn keyword sicadStatement in syn keyword sicadStatement msgsup syn keyword sicadStatement out syn keyword sicadStatement padd syn keyword sicadStatement parbeg syn keyword sicadStatement parend syn keyword sicadStatement pdoc syn keyword sicadStatement pprot syn keyword sicadStatement procd syn keyword sicadStatement procn syn keyword sicadStatement psav syn keyword sicadStatement psel syn keyword sicadStatement psymb syn keyword sicadStatement ptrace syn keyword sicadStatement ptstat syn keyword sicadStatement set syn keyword sicadStatement sql contained syn keyword sicadStatement step syn keyword sicadStatement sys syn keyword sicadStatement ww syn match sicadStatement "\"me=s+1 syn match sicadStatement "\"me=s+1 syn match sicadOperator "\.and\." syn match sicadOperator "\.ne\." syn match sicadOperator "\.not\." syn match sicadOperator "\.eq\." syn match sicadOperator "\.ge\." syn match sicadOperator "\.gt\." syn match sicadOperator "\.le\." syn match sicadOperator "\.lt\." syn match sicadOperator "\.or\." syn match sicadOperator "\.eqv\." syn match sicadOperator "\.neqv\." syn match sicadIdentifier "%g\=[irpt][0-9]\{1,2}\>" syn match sicadIdentifier "%g\=l[0-9]\>" syn match sicadIdentifier "%g\=[irptl]("me=e-1 syn match sicadIdentifier "%error\>" syn match sicadIdentifier "%nsel\>" syn match sicadIdentifier "%nvar\>" syn match sicadIdentifier "%scl\>" syn match sicadIdentifier "%wd\>" syn match sicadIdentifier "\$[irt][0-9]\{1,2}\>" contained syn match sicadLabel1 "^ *\.[a-z][a-z0-9]\{0,7} \+[^ ]"me=e-1 syn match sicadLabel1 "^ *\.[a-z][a-z0-9]\{0,7}\*"me=e-1 syn match sicadLabel2 "\" contains=sicadGoto syn match sicadLabel2 "\" contains=sicadGoto syn match sicadBoolean "\.[ft]\." syn match sicadNumber "\<[0-9]\+\>" syn match sicadFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\>" syn match sicadFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>" syn match sicadFloat "\<[0-9]\+e[-+]\=[0-9]\+\>" syn region sicadString_ transparent start=+'+ end=+'+ oneline contained syn region sicadString start=+'+ end=+'+ oneline syn region sicadComment start="^ *\*" skip='\\ *$' end=";"me=e-1 end="$" contains=sicadString_ syn region sicadComment start="^ *\.[a-z][a-z0-9]\{0,7} *\*" skip='\\ *$' end=";"me=e-1 end="$" contains=sicadLabel1,sicadString_ syn region sicadComment start="; *\*"ms=s+1 skip='\\ *$' end=";"me=e-1 end="$" contains=sicadString_ syn region sicadComment matchgroup=sicadStatement start="\" end="\" syn match sicadLineCont "\\ *$" syn region sicadDopBlock transparent matchgroup=sicadStatement start='\' skip='\\ *$' end=';'me=e-1 end='$' contains=ALL syn region sicadSqlBlock transparent matchgroup=sicadStatement start='\' skip='\\ *$' end=';'me=e-1 end='$' contains=@SQL,sicadIdentifier,sicadLineCont syn sync clear " clear sync used in sql.vim syn sync match sicadSyncComment groupthere NONE "\" syn sync match sicadSyncComment grouphere sicadComment "\" syn sync linecont "\\ *$" syn match sicadError "\t" syn region sicadParen transparent start='(' skip='\\ *$' end=')' end='$' contains=ALLBUT,sicadParenError syn match sicadParenError ')' syn keyword sicadStatement abst add addsim adrin aib syn keyword sicadStatement aibzsn aidump aifgeo aisbrk alknam syn keyword sicadStatement alknr alksav alksel alktrc alopen syn keyword sicadStatement ansbo aractiv ararea arareao ararsfs syn keyword sicadStatement arbuffer archeck arcomv arcont arconv syn keyword sicadStatement arcopy arcopyo arcorr arcreate arerror syn keyword sicadStatement areval arflfm arflop arfrast argbkey syn keyword sicadStatement argenf argraph argrapho arinters arkompfl syn keyword sicadStatement arlasso arlcopy arlgraph arline arlining syn keyword sicadStatement arlisly armakea armemo arnext aroverl syn keyword sicadStatement arovers arparkmd arpars arrefp arselect syn keyword sicadStatement arset arstruct arunify arupdate arvector syn keyword sicadStatement arveinfl arvflfl arvoroni ausku basis syn keyword sicadStatement basisaus basisdar basisnr bebos befl syn keyword sicadStatement befla befli befls beo beorta syn keyword sicadStatement beortn bep bepan bepap bepola syn keyword sicadStatement bepoln bepsn bepsp ber berili syn keyword sicadStatement berk bewz bkl bli bma syn keyword sicadStatement bmakt bmakts bmbm bmerk bmerw syn keyword sicadStatement bmerws bminit bmk bmorth bmos syn keyword sicadStatement bmoss bmpar bmsl bmsum bmsums syn keyword sicadStatement bmver bmvero bmw bo bta syn keyword sicadStatement buffer bvl bw bza bzap syn keyword sicadStatement bzd bzgera bzorth cat catel syn keyword sicadStatement cdbdiff ce cgmparam close closesim syn keyword sicadStatement comgener comp comp conclose conclose coninfo syn keyword sicadStatement conopen conread contour conwrite cop syn keyword sicadStatement copar coparp coparp2 copel cr syn keyword sicadStatement cs cstat cursor d da syn keyword sicadStatement dal dasp dasps dataout dcol syn keyword sicadStatement dd defsr del delel deskrdef syn keyword sicadStatement df dfn dfns dfpos dfr syn keyword sicadStatement dgd dgm dgp dgr dh syn keyword sicadStatement diag diaus dir disbsd dkl syn keyword sicadStatement dktx dkur dlgfix dlgfre dma syn keyword sicadStatement dprio dr druse dsel dskinfo syn keyword sicadStatement dsr dv dve eba ebd syn keyword sicadStatement ebdmod ebs edbsdbin edbssnin edbsvtin syn keyword sicadStatement edt egaus egdef egdefs eglist syn keyword sicadStatement egloe egloenp egloes egxx eib syn keyword sicadStatement ekur ekuradd elel elpos epg syn keyword sicadStatement esau esauadd esek eta etap syn keyword sicadStatement etav feparam ficonv filse fl syn keyword sicadStatement fli flin flini flinit flins syn keyword sicadStatement flkor fln flnli flop flout syn keyword sicadStatement flowert flparam flraster flsy flsyd syn keyword sicadStatement flsym flsyms flsymt fmtatt fmtdia syn keyword sicadStatement fmtlib fpg gbadddb gbaim gbanrs syn keyword sicadStatement gbatw gbau gbaudit gbclosp gbcredic syn keyword sicadStatement gbcreem gbcreld gbcresdb gbcretd gbde syn keyword sicadStatement gbdeldb gbdeldic gbdelem gbdelld gbdelref syn keyword sicadStatement gbdeltd gbdisdb gbdisem gbdisld gbdistd syn keyword sicadStatement gbebn gbemau gbepsv gbgetdet gbgetes syn keyword sicadStatement gbgetmas gbgqel gbgqelr gbgqsa gbgrant syn keyword sicadStatement gbimpdic gbler gblerb gblerf gbles syn keyword sicadStatement gblocdic gbmgmg gbmntdb gbmoddb gbnam syn keyword sicadStatement gbneu gbopenp gbpoly gbpos gbpruef syn keyword sicadStatement gbpruefg gbps gbqgel gbqgsa gbrefdic syn keyword sicadStatement gbreftab gbreldic gbresem gbrevoke gbsav syn keyword sicadStatement gbsbef gbsddk gbsicu gbsrt gbss syn keyword sicadStatement gbstat gbsysp gbszau gbubp gbueb syn keyword sicadStatement gbunmdb gbuseem gbw gbweg gbwieh syn keyword sicadStatement gbzt gelp gera getvar hgw syn keyword sicadStatement hpg hr0 hra hrar icclchan syn keyword sicadStatement iccrecon icdescon icfree icgetcon icgtresp syn keyword sicadStatement icopchan icputcon icreacon icreqd icreqnw syn keyword sicadStatement icreqw icrespd icresrve icwricon imsget syn keyword sicadStatement imsgqel imsmget imsplot imsprint inchk syn keyword sicadStatement inf infd inst kbml kbmls syn keyword sicadStatement kbmm kbmms kbmt kbmtdps kbmts syn keyword sicadStatement khboe khbol khdob khe khetap syn keyword sicadStatement khfrw khktk khlang khld khmfrp syn keyword sicadStatement khmks khms khpd khpfeil khpl syn keyword sicadStatement khprofil khrand khsa khsabs khsaph syn keyword sicadStatement khsd khsdl khse khskbz khsna syn keyword sicadStatement khsnum khsob khspos khsvph khtrn syn keyword sicadStatement khver khzpe khzpl kib kldat syn keyword sicadStatement klleg klsch klsym klvert kmpg syn keyword sicadStatement kmtlage kmtp kmtps kodef kodefp syn keyword sicadStatement kodefs kok kokp kolae kom syn keyword sicadStatement kontly kopar koparp kopg kosy syn keyword sicadStatement kp kr krsek krtclose krtopen syn keyword sicadStatement ktk lad lae laesel language syn keyword sicadStatement lasso lbdes lcs ldesk ldesks syn keyword sicadStatement le leak leattdes leba lebas syn keyword sicadStatement lebaznp lebd lebm lebv lebvaus syn keyword sicadStatement lebvlist lede ledel ledepo ledepol syn keyword sicadStatement ledepos leder ledist ledm lee syn keyword sicadStatement leeins lees lege lekr lekrend syn keyword sicadStatement lekwa lekwas lel lelh lell syn keyword sicadStatement lelp lem lena lend lenm syn keyword sicadStatement lep lepe lepee lepko lepl syn keyword sicadStatement lepmko lepmkop lepos leposm leqs syn keyword sicadStatement leqsl leqssp leqsv leqsvov les syn keyword sicadStatement lesch lesr less lestd let syn keyword sicadStatement letaum letl lev levm levtm syn keyword sicadStatement levtp levtr lew lewm lexx syn keyword sicadStatement lfs li lining lldes lmode syn keyword sicadStatement loedk loepkt lop lose loses syn keyword sicadStatement lp lppg lppruef lr ls syn keyword sicadStatement lsop lsta lstat ly lyaus syn keyword sicadStatement lz lza lzae lzbz lze syn keyword sicadStatement lznr lzo lzpos ma ma0 syn keyword sicadStatement ma1 mad map mapoly mcarp syn keyword sicadStatement mccfr mccgr mcclr mccrf mcdf syn keyword sicadStatement mcdma mcdr mcdrp mcdve mcebd syn keyword sicadStatement mcgse mcinfo mcldrp md me syn keyword sicadStatement mefd mefds minmax mipg ml syn keyword sicadStatement mmcmdme mmdbf mmdellb mmdir mmdome syn keyword sicadStatement mmfsb mminfolb mmlapp mmlbf mmlistlb syn keyword sicadStatement mmloadcm mmmsg mmreadlb mmsetlb mmshowcm syn keyword sicadStatement mmstatme mnp mpo mr mra syn keyword sicadStatement ms msav msgout msgsnd msp syn keyword sicadStatement mspf mtd nasel ncomp new syn keyword sicadStatement nlist nlistlt nlistly nlistnp nlistpo syn keyword sicadStatement np npa npdes npe npem syn keyword sicadStatement npinfa npruef npsat npss npssa syn keyword sicadStatement ntz oa oan odel odf syn keyword sicadStatement odfx oj oja ojaddsk ojaed syn keyword sicadStatement ojaeds ojaef ojaefs ojaen ojak syn keyword sicadStatement ojaks ojakt ojakz ojalm ojatkis syn keyword sicadStatement ojatt ojatw ojbsel ojcasel ojckon syn keyword sicadStatement ojde ojdtl ojeb ojebd ojel syn keyword sicadStatement ojelpas ojesb ojesbd ojex ojezge syn keyword sicadStatement ojko ojlb ojloe ojlsb ojmerk syn keyword sicadStatement ojmos ojnam ojpda ojpoly ojprae syn keyword sicadStatement ojs ojsak ojsort ojstrukt ojsub syn keyword sicadStatement ojtdef ojvek ojx old oldd syn keyword sicadStatement op opa opa1 open opensim syn keyword sicadStatement opnbsd orth osanz ot otp syn keyword sicadStatement otrefp param paranf pas passw syn keyword sicadStatement pcatchf pda pdadd pg pg0 syn keyword sicadStatement pgauf pgaufsel pgb pgko pgm syn keyword sicadStatement pgr pgvs pily pkpg plot syn keyword sicadStatement plotf plotfr pmap pmdata pmdi syn keyword sicadStatement pmdp pmeb pmep pminfo pmlb syn keyword sicadStatement pmli pmlp pmmod pnrver poa syn keyword sicadStatement pos posa posaus post printfr syn keyword sicadStatement protect prs prssy prsym ps syn keyword sicadStatement psadd psclose psopen psparam psprw syn keyword sicadStatement psres psstat psw pswr qualif syn keyword sicadStatement rahmen raster rasterd rbbackup rbchang2 syn keyword sicadStatement rbchange rbcmd rbcoldst rbcolor rbcopy syn keyword sicadStatement rbcut rbcut2 rbdbcl rbdbload rbdbop syn keyword sicadStatement rbdbwin rbdefs rbedit rbfdel rbfill syn keyword sicadStatement rbfill2 rbfload rbfload2 rbfnew rbfnew2 syn keyword sicadStatement rbfpar rbfree rbg rbgetcol rbgetdst syn keyword sicadStatement rbinfo rbpaste rbpixel rbrstore rbsnap syn keyword sicadStatement rbsta rbtile rbtrpix rbvtor rcol syn keyword sicadStatement rd rdchange re reb rebmod syn keyword sicadStatement refunc ren renel rk rkpos syn keyword sicadStatement rohr rohrpos rpr rr rr0 syn keyword sicadStatement rra rrar rs samtosdb sav syn keyword sicadStatement savd savesim savx scol scopy syn keyword sicadStatement scopye sdbtosam sddk sdwr se syn keyword sicadStatement selaus selpos seman semi sesch syn keyword sicadStatement setscl setvar sfclntpf sfconn sffetchf syn keyword sicadStatement sffpropi sfftypi sfqugeoc sfquwhcl sfself syn keyword sicadStatement sfstat sftest sge sid sie syn keyword sicadStatement sig sigp skk skks sn syn keyword sicadStatement sn21 snpa snpar snparp snparps syn keyword sicadStatement snpars snpas snpd snpi snpkor syn keyword sicadStatement snpl snpm sob sob0 sobloe syn keyword sicadStatement sobs sof sop split spr syn keyword sicadStatement sqdadd sqdlad sqdold sqdsav syn keyword sicadStatement sr sres srt sset stat syn keyword sicadStatement stdtxt string strukt strupru suinfl syn keyword sicadStatement suinflk suinfls supo supo1 sva syn keyword sicadStatement svr sy sya syly sysout syn keyword sicadStatement syu syux taa tabeg tabl syn keyword sicadStatement tabm tam tanr tapg tapos syn keyword sicadStatement tarkd tas tase tb tbadd syn keyword sicadStatement tbd tbext tbget tbint tbout syn keyword sicadStatement tbput tbsat tbsel tbstr tcaux syn keyword sicadStatement tccable tcchkrep tccomm tccond tcdbg syn keyword sicadStatement tcgbnr tcgrpos tcinit tclconv tcmodel syn keyword sicadStatement tcnwe tcpairs tcpath tcrect tcrmdli syn keyword sicadStatement tcscheme tcschmap tcse tcselc tcstar syn keyword sicadStatement tcstrman tcsubnet tcsymbol tctable tcthrcab syn keyword sicadStatement tctrans tctst tdb tdbdel tdbget syn keyword sicadStatement tdblist tdbput tgmod titel tmoff syn keyword sicadStatement tmon tp tpa tps tpta syn keyword sicadStatement tra trans transkdo transopt transpro syn keyword sicadStatement triangle trm trpg trrkd trs syn keyword sicadStatement ts tsa tx txa txchk syn keyword sicadStatement txcng txju txl txp txpv syn keyword sicadStatement txtcmp txv txz uckon uiinfo syn keyword sicadStatement uistatus umdk umdk1 umdka umge syn keyword sicadStatement umges umr verbo verflli verif syn keyword sicadStatement verly versinfo vfg vpactive vpcenter syn keyword sicadStatement vpcreate vpdelete vpinfo vpmodify vpscroll syn keyword sicadStatement vpsta wabsym wzmerk zdrhf zdrhfn syn keyword sicadStatement zdrhfw zdrhfwn zefp zfl zflaus syn keyword sicadStatement zka zlel zlels zortf zortfn syn keyword sicadStatement zortfw zortfwn zortp zortpn zparb syn keyword sicadStatement zparbn zparf zparfn zparfw zparfwn syn keyword sicadStatement zparp zparpn zwinkp zwinkpn hi def link sicadLabel PreProc hi def link sicadLabel1 sicadLabel hi def link sicadLabel2 sicadLabel hi def link sicadConditional Conditional hi def link sicadBoolean Boolean hi def link sicadNumber Number hi def link sicadFloat Float hi def link sicadOperator Operator hi def link sicadStatement Statement hi def link sicadParameter sicadStatement hi def link sicadGoto sicadStatement hi def link sicadLineCont sicadStatement hi def link sicadString String hi def link sicadComment Comment hi def link sicadSpecial Special hi def link sicadIdentifier Type hi def link sicadError Error hi def link sicadParenError sicadError hi def link sicadApostropheError sicadError hi def link sicadStringError sicadError hi def link sicadCommentError sicadError let b:current_syntax = "sicad" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword sieveTodo contained TODO FIXME XXX NOTE syn region sieveComment start='/\*' end='\*/' contains=sieveTodo,@Spell syn region sieveComment display oneline start='#' end='$' \ contains=sieveTodo,@Spell syn case ignore syn match sieveTag display ':\h\w*' syn match sieveNumber display '\<\d\+[KMG]\=\>' syn match sieveSpecial display '\\["\\]' syn region sieveString start=+"+ skip=+\\\\\|\\"+ end=+"+ \ contains=sieveSpecial syn region sieveString start='text:' end='\n.\n' syn keyword sieveConditional if elsif else syn keyword sieveTest address allof anyof envelope exists false header \ not size true syn keyword sievePreProc require stop syn keyword sieveAction reject fileinto redirect keep discard syn keyword sieveKeyword vacation syn case match hi def link sieveTodo Todo hi def link sieveComment Comment hi def link sieveTag Type hi def link sieveNumber Number hi def link sieveSpecial Special hi def link sieveString String hi def link sieveConditional Conditional hi def link sieveTest Keyword hi def link sievePreProc PreProc hi def link sieveAction Function hi def link sieveKeyword Keyword let b:current_syntax = "sieve" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn match simulaComment "^%.*$" contains=simulaTodo syn region simulaComment start="!\|\" end=";" contains=simulaTodo syn region simulaComment start="\"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>" syn match simulaCharError "'.\{-2,}'" syn match simulaCharacter "'.'" syn match simulaCharacter "'!\d\{-}!'" contains=simulaSpecialChar syn match simulaString '".\{-}"' contains=simulaSpecialChar,simulaTodo syn keyword simulaBoolean true false syn keyword simulaCompound begin end syn keyword simulaConditional else if otherwise then until when syn keyword simulaConstant none notext syn keyword simulaFunction procedure syn keyword simulaOperator eq eqv ge gt imp in is le lt ne new not qua syn keyword simulaRepeat while for syn keyword simulaReserved activate after at before delay go goto label prior reactivate switch to syn keyword simulaStatement do inner inspect step this syn keyword simulaStorageClass external hidden name protected value syn keyword simulaStructure class syn keyword simulaType array boolean character integer long real short text virtual syn match simulaAssigned "\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2 syn match simulaOperator "[&:=<>+\-*/]" syn match simulaOperator "\" syn match simulaOperator "\" syn match simulaReferenceType "\" syn match simulaReal "-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>" syn match simulaReal "-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>" hi def link simulaAssigned Identifier hi def link simulaBoolean Boolean hi def link simulaCharacter Character hi def link simulaCharError Error hi def link simulaComment Comment hi def link simulaCompound Statement hi def link simulaConditional Conditional hi def link simulaConstant Constant hi def link simulaFunction Function hi def link simulaNumber Number hi def link simulaOperator Operator hi def link simulaReal Float hi def link simulaReferenceType Type hi def link simulaRepeat Repeat hi def link simulaReserved Error hi def link simulaSemicolon Statement hi def link simulaSpecial Special hi def link simulaSpecialChar SpecialChar hi def link simulaSpecialCharErr Error hi def link simulaStatement Statement hi def link simulaStorageClass StorageClass hi def link simulaString String hi def link simulaStructure Structure hi def link simulaTodo Todo hi def link simulaType Type let b:current_syntax = "simula" if exists("b:current_syntax") finish endif syn case ignore let fortran_free_source=1 runtime! syntax/fortran.vim unlet b:current_syntax syn keyword sindaMacro BUILD BUILDF DEBON DEBOFF DEFMOD FSTART FSTOP syn keyword sindaOptions TITLE PPSAVE RSI RSO OUTPUT SAVE QMAP USER1 USER2 syn keyword sindaOptions MODEL PPOUT NOLIST MLINE NODEBUG DIRECTORIES syn keyword sindaOptions DOUBLEPR syn keyword sindaRoutine FORWRD FWDBCK STDSTL FASTIC syn keyword sindaControl ABSZRO ACCELX ACCELY ACCELZ ARLXCA ATMPCA syn keyword sindaControl BACKUP CSGFAC DRLXCA DTIMEH DTIMEI DTIMEL syn keyword sindaControl DTIMES DTMPCA EBALNA EBALSA EXTLIM ITEROT syn keyword sindaControl ITERXT ITHOLD NLOOPS NLOOPT OUTPUT OPEITR syn keyword sindaControl PATMOS SIGMA TIMEO TIMEND UID syn keyword sindaSubRoutine ASKERS ADARIN ADDARY ADDMOD ARINDV syn keyword sindaSubRoutine RYINV ARYMPY ARYSUB ARYTRN BAROC syn keyword sindaSubRoutine BELACC BNDDRV BNDGET CHENNB CHGFLD syn keyword sindaSubRoutine CHGLMP CHGSUC CHGVOL CHKCHL CHKCHP syn keyword sindaSubRoutine CNSTAB COMBAL COMPLQ COMPRS CONTRN syn keyword sindaSubRoutine CPRINT CRASH CRVINT CRYTRN CSIFLX syn keyword sindaSubRoutine CVTEMP D11CYL C11DAI D11DIM D11MCY syn keyword sindaSubRoutine D11MDA D11MDI D11MDT D12CYL D12MCY syn keyword sindaSubRoutine D12MDA D1D1DA D1D1IM D1D1WM D1D2DA syn keyword sindaSubRoutine D1D2WM D1DEG1 D1DEG2 D1DG1I D1IMD1 syn keyword sindaSubRoutine D1IMIM D1IMWM D1M1DA D1M2MD D1M2WM syn keyword sindaSubRoutine D1MDG1 D1MDG2 D2D1WM D1DEG1 D2DEG2 syn keyword sindaSubRoutine D2D2 syn keyword sindaIdentifier BIV CAL DIM DIV DPM DPV DTV GEN PER PIV PIM syn keyword sindaIdentifier SIM SIV SPM SPV TVS TVD syn match sindaFortran "^F[0-9 ]"me=e-1 syn match sindaMotran "^M[0-9 ]"me=e-1 syn match sindaComment "^C.*$" syn match sindaComment "^R.*$" syn match sindaComment "\$.*$" syn match sindaHeader "^header[^,]*" syn match sindaIncludeFile "include \+[^ ]\+"hs=s+8 contains=fortranInclude syn match sindaMacro "^PSTART" syn match sindaMacro "^PSTOP" syn match sindaMacro "^FAC" syn match sindaInteger "-\=\<[0-9]*\>" syn match sindaFloat "-\=\<[0-9]*\.[0-9]*" syn match sindaScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" syn match sindaEndData "^END OF DATA" if exists("thermal_todo") execute 'syn match sindaTodo ' . '"^'.thermal_todo.'.*$"' else syn match sindaTodo "^?.*$" endif hi def link sindaMacro Macro hi def link sindaOptions Special hi def link sindaRoutine Type hi def link sindaControl Special hi def link sindaSubRoutine Function hi def link sindaIdentifier Identifier hi def link sindaFortran PreProc hi def link sindaMotran PreProc hi def link sindaComment Comment hi def link sindaHeader Typedef hi def link sindaIncludeFile Type hi def link sindaInteger Number hi def link sindaFloat Float hi def link sindaScientific Float hi def link sindaEndData Macro hi def link sindaTodo Todo let b:current_syntax = "sinda" if exists("b:current_syntax") finish endif syn case ignore syn keyword sindacmpUnit celsius fahrenheit syn match sindacmpTitle "Steady State Temperature Comparison" syn match sindacmpLabel "File [1-6] is" syn match sindacmpHeader "^ *Node\( *File \d\)* *Node Description" syn match sindacmpInteger "^ *-\=\<[0-9]*\>" syn match sindacmpFloat "-\=\<[0-9]*\.[0-9]*" hi def link sindacmpTitle Type hi def link sindacmpUnit PreProc hi def link sindacmpLabel Statement hi def link sindacmpHeader sindaHeader hi def link sindacmpInteger Number hi def link sindacmpFloat Special let b:current_syntax = "sindacmp" if exists("b:current_syntax") finish endif syn case match runtime! syntax/sinda.vim unlet b:current_syntax syn case match syn keyword sindaoutPos ON SI syn keyword sindaoutNeg OFF ENG syn match sindaoutFile ": \w*\.TAK"hs=s+2 syn match sindaoutInteger "T\=[0-9]*\>"ms=s+1 syn match sindaoutSectionDelim "[-<>]\{4,}" contains=sindaoutSectionTitle syn match sindaoutSectionDelim ":\=\.\{4,}:\=" contains=sindaoutSectionTitle syn match sindaoutSectionTitle "[-<:] \w[0-9A-Za-z_() ]\+ [->:]"hs=s+1,me=e-1 syn match sindaoutHeaderDelim "=\{5,}" syn match sindaoutHeaderDelim "|\{5,}" syn match sindaoutHeaderDelim "+\{5,}" syn match sindaoutLabel "Input File:" contains=sindaoutFile syn match sindaoutLabel "Begin Solution: Routine" syn match sindaoutError "<<< Error >>>" hi sindaHeaderDelim ctermfg=Black ctermbg=Green guifg=Black guibg=Green hi def link sindaoutPos Statement hi def link sindaoutNeg PreProc hi def link sindaoutTitle Type hi def link sindaoutFile sindaIncludeFile hi def link sindaoutInteger sindaInteger hi def link sindaoutSectionDelim Delimiter hi def link sindaoutSectionTitle Exception hi def link sindaoutHeaderDelim SpecialComment hi def link sindaoutLabel Identifier hi def link sindaoutError Error let b:current_syntax = "sindaout" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match sisu_error contains=sisu_link,sisu_error_wspace "" if !exists("sisu_no_identifiers") syn match sisu_mark_endnote "\~^" syn match sisu_break contains=@NoSpell " \\\\\( \|$\)\|
\|
" syn match sisu_control contains=@NoSpell "^\(-\\\\-\|=\\\\=\|-\.\.-\|<:p[bn]>\)\s*$" syn match sisu_control contains=@NoSpell "^<:\(bo\|---\)>\s*$" syn match sisu_marktail contains=@NoSpell "^--[+~-]#\s*$" syn match sisu_marktail "[~-]#" syn match sisu_control "\"" syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" syn match sisu_link contains=@NoSpell "\(_\?https\?://\|\.\.\/\)\S\+" syn match sisu_link " \*\~\S\+" syn match sisu_require contains=@NoSpell "^<<\s*[a-zA-Z0-9^./_-]\+\.ss[it]$" syn match sisu_structure "^:A\~$" syn match sisu_sub_header_title "^\s\+:\(subtitle\|short\|edition\|language\|lang_char\|note\):\s" "group=sisu_header_content syn match sisu_sub_header_creator "^\s\+:\(author\|editor\|contributor\|illustrator\|photographer\|translator\|digitized_by\|prepared_by\|audio\|video\):\s" " &hon &institution syn match sisu_sub_header_rights "^\s\+:\(copyright\|text\|translation\|illustrations\|photographs\|preparation\|digitization\|audio\|video\|license\|all\):\s" " access_rights license syn match sisu_sub_header_classify "^\s\+:\(topic_register\|keywords\|subject\|dewey\|loc\):\s" syn match sisu_sub_header_identifier "^\s\+:\(oclc\|isbn\):\s" syn match sisu_sub_header_date "^\s\+:\(added_to_site\|available\|created\|issued\|modified\|published\|valid\|translated\|original_publication\):\s" syn match sisu_sub_header_original "^\s\+:\(publisher\|date\|language\|lang_char\|institution\|nationality\|source\):\s" syn match sisu_sub_header_make "^\s\+:\(headings\|num_top\|breaks\|language\|italics\|bold\|emphasis\|substitute\|omit\|plaintext_wrap\|texpdf_font_mono\|texpdf_font\|stamp\|promo\|ad\|manpage\|home_button_text\|home_button_image\|cover_image\|footer\):\s" syn match sisu_sub_header_notes "^\s\+:\(description\|abstract\|comment\|coverage\|relation\|source\|history\|type\|format\|prefix\|prefix_[ab]\|suffix\):\s" syn match sisu_within_index_ignore "\S\+[:;]\(\s\+\|$\)" syn match sisu_within_index "[:|;]\|+\d\+" syn match sisu_sem_marker ";{\|};[a-z._]*[a-z]" syn match sisu_sem_marker_block "\([a-z][a-z._]*\|\):{\|}:[a-z._]*[a-z]" syn match sisu_sem_ex_marker ";\[\|\];[a-z._]*[a-z]" syn match sisu_sem_ex_marker_block "\([a-z][a-z._]*\|\):\[\|\]:[a-z._]*[a-z]" syn match sisu_sem_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):{[^}].\{-}}:\1" syn match sisu_sem_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";{[^}].\{-}};[a-z]\+" syn match sisu_sem_ex_block contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_mark_endnote,sisu_content_endnote "\([a-z]*\):\[[^}].\{-}\]:\1" syn match sisu_sem_ex_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker ";\[[^}].\{-}\];[a-z]\+" endif syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>" syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)" syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" syn match sisu_error contains=sisu_error "]" syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_title matchgroup=sisu_header start="^[@]title:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_creator matchgroup=sisu_header start="^[@]creator:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_date matchgroup=sisu_header start="^[@]date:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_publisher matchgroup=sisu_header start="^[@]publisher:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_rights matchgroup=sisu_header start="^[@]rights:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_classify matchgroup=sisu_header start="^[@]classify:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_identifier matchgroup=sisu_header start="^[@]identifier:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_original matchgroup=sisu_header start="^[@]original:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_notes matchgroup=sisu_header start="^[@]notes:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_linked,sisu_sub_header_links matchgroup=sisu_header start="^[@]links:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_header_content contains=sisu_error,sisu_comment,sisu_break,sisu_link,sisu_sub_header_make matchgroup=sisu_header start="^[@]make:[+-]\?\(\s\|\n\)"rs=e-1 end="\n$" syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-4]\|:\?[A-D]\)\~\(\S\+\|[^-]\)" end="$" syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^table{.\+" end="}table" syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+table" end="^```\(\s\|$\)" syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^{\(t\|table\)\(\~h\)\?\(\sc[0-9]\+;\)\?[0-9; ]*}" end="\n$" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\z(block\|group\|poem\|alt\){" end="^}\z1" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\(block\|group\|poem\|alt\)" end="^```\(\s\|$\)" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^box\(\.[a-z]\+\)\?{" end="^}box" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^```\s\+\box\(\.[a-z]\+\)\?" end="^```\(\s\|$\)" syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^code\(\.[a-z][0-9a-z_]\+\)\?{" end="^}code" syn region sisu_content_alt contains=sisu_error,@NoSpell matchgroup=sisu_contain start="^```\s\+code\(\.[a-z][0-9a-z_]\+\)\?" end="^```\(\s\|$\)" syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_contain start="^```\s\+quote" end="^```\(\s\|$\)" syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker matchgroup=sisu_mark_endnote start="\~{[*+]*" end="}\~" skip="\n" syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break,sisu_sem_block,sisu_sem_content,sisu_sem_marker matchgroup=sisu_mark_endnote start="\~\[[*+]*" end="\]\~" skip="\n" syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n$" syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="}\(https\?:/\/\|:\|\.\.\/\|#\)\S\+" oneline syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_sem_block,sisu_error matchgroup=sisu_link start="{\(\~^\s\)\?" end="\[[1-5][sS]*\]}\S\+\.ss[tm]" oneline syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}image" oneline syn region sisu_bold contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^!_ " end=" \\\\\|$" syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\) " end="$" syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([1-9*]\|[1-9]\*\)!_\? " end=" \\\\\|$" syn region sisu_normal contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9] " end="$" syn region sisu_bold contains=sisu_fontface,sisu_bold,sisu_control,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_sem_block,sisu_sem_content,sisu_sem_marker_block,sisu_sem_marker,sisu_sem_ex_marker_block,sisu_sem_ex_marker,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_[0-9]\?_[0-9]!_\? " end=" \\\\\|$" syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" syn region sisu_index contains=sisu_within_index_ignore,sisu_within_index matchgroup=sisu_index_block start="^={" end="}" syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*" syn region sisu_bold contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!" syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_" syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/" syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+" syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^" syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="}," syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_bold,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="#{" end="}#" syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" syn region sisu_bold contains=sisu_error matchgroup=sisu_bold start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline if !exists("sisu_no_expensive") else " not Expensive syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline endif " Expensive? syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+[^:]" syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" syn match sisu_error_wspace contains=sisu_error_wspace "\s\+$" syn match sisu_error contains=sisu_error_wspace "\t\+" syn match sisu_error contains=sisu_error,sisu_error_wspace "\([^ (][_\\]\||[^ (}]\)https\?:\S\+" syn match sisu_error contains=sisu_error "_\?https\?:\S\+[}><]" syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n$" syn match sisu_error contains=sisu_error "^[\~]{[^{]\{-}\n$" syn match sisu_error contains=sisu_error "\s\+.{{" syn match sisu_error contains=sisu_error "^\~\s*$" syn match sisu_error contains=sisu_error "^0\~.*" syn match sisu_error contains=sisu_error "^[1-9]\~\s*$" syn match sisu_error contains=sisu_error "^[1-9]\~\S\+\s*$" syn match sisu_error contains=sisu_error "[^{]\~\^[^ \)]" syn match sisu_error contains=sisu_error "\~\^\s\+\.\s*" syn match sisu_error contains=sisu_error "{\~^\S\+" syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]" syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']" syn match sisu_error contains=sisu_error "" syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>" syn match sisu_error "/\?<\([biu]\)>[^()]\{-}\n$" syn match sisu_control "\n$" "contains=ALL syn match sisu_error "%{" syn match sisu_error "
_\?https\?:\S\+\|_\?https\?:\S\+
" syn match sisu_error "[><]_\?https\?:\S\+\|_\?https\?:\S\+[><]" syn match sisu_comment "^%\{1,2\}.\+" hi def link sisu_normal Normal hi def link sisu_bold Statement hi def link sisu_header PreProc hi def link sisu_header_content Normal hi def link sisu_sub_header_title Statement hi def link sisu_sub_header_creator Statement hi def link sisu_sub_header_date Statement hi def link sisu_sub_header_publisher Statement hi def link sisu_sub_header_rights Statement hi def link sisu_sub_header_classify Statement hi def link sisu_sub_header_identifier Statement hi def link sisu_sub_header_original Statement hi def link sisu_sub_header_links Statement hi def link sisu_sub_header_notes Statement hi def link sisu_sub_header_make Statement hi def link sisu_heading Title hi def link sisu_structure Operator hi def link sisu_contain Include hi def link sisu_mark_endnote Delimiter hi def link sisu_require NonText hi def link sisu_link NonText hi def link sisu_linked String hi def link sisu_fontface Delimiter hi def link sisu_strikeout DiffDelete hi def link sisu_content_alt Special hi def link sisu_sem_content SpecialKey hi def link sisu_sem_block Special hi def link sisu_sem_marker Visual hi def link sisu_sem_marker_block MatchParen hi def link sisu_sem_ex_marker FoldColumn hi def link sisu_sem_ex_marker_block Folded hi def link sisu_sem_ex_content Comment hi def link sisu_sem_ex_block Comment hi def link sisu_index SpecialKey hi def link sisu_index_block Visual hi def link sisu_content_endnote Special hi def link sisu_control Delimiter hi def link sisu_within_index Delimiter hi def link sisu_within_index_ignore SpecialKey hi def link sisu_ocn Include hi def link sisu_number Number hi def link sisu_identifier Function hi def link sisu_underline Underlined hi def link sisu_markpara Include hi def link sisu_marktail Include hi def link sisu_mark Identifier hi def link sisu_break Structure hi def link sisu_html Type hi def link sisu_action Identifier hi def link sisu_comment Comment hi def link sisu_error_sem_marker Error hi def link sisu_error_wspace Error hi def link sisu_error Error let b:current_syntax = "sisu" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword skillConstants t nil unbound syn match skillFunction "(abs\>"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillRepeat "\"hs=s+1 syn match skillFunction "\<[fs]\=printf("he=e-1 syn match skillFunction "(f\=scanf\>"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillRepeat "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\<[mn]\=procedure("he=e-1 syn match skillFunction "(ncon[cs]\>"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillKeywords "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillConditional "\"hs=s+1 syn match skillRepeat "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillFunction "\"hs=s+1 syn match skillcdfFunctions "\"hs=s+1 syn match skillgeFunctions "\"hs=s+1 syn match skillhiFunctions "\"hs=s+1 syn match skillleFunctions "\"hs=s+1 syn match skilldbefFunctions "\"hs=s+1 syn match skillddFunctions "\"hs=s+1 syn match skillpcFunctions "\"hs=s+1 syn match skilltechFunctions "\<\(tech\|tc\)\u\a\+("he=e-1 syn region skillString start=+"+ skip=+\\"+ end=+"+ syn keyword skillTodo contained TODO FIXME XXX syn keyword skillNote contained NOTE IMPORTANT syn region skillComment start="/\*" end="\*/" contains=skillTodo,skillNote syn match skillComment ";.*" contains=skillTodo,skillNote syn match skillCommentError "\*/" syn sync ccomment skillComment minlines=10 hi def link skillcdfFunctions Function hi def link skillgeFunctions Function hi def link skillhiFunctions Function hi def link skillleFunctions Function hi def link skilldbefFunctions Function hi def link skillddFunctions Function hi def link skillpcFunctions Function hi def link skilltechFunctions Function hi def link skillConstants Constant hi def link skillFunction Function hi def link skillKeywords Statement hi def link skillConditional Conditional hi def link skillRepeat Repeat hi def link skillString String hi def link skillTodo Todo hi def link skillNote Todo hi def link skillComment Comment hi def link skillCommentError Error let b:current_syntax = "skill" if exists("b:current_syntax") finish endif syn keyword slStatement break return continue syn keyword slConditional if else syn keyword slRepeat while for syn keyword slRepeat illuminance illuminate solar syn keyword slTodo contained TODO FIXME XXX syn match slSpecial contained "\\[0-9][0-9][0-9]\|\\." syn region slString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial syn match slCharacter "'[^\\]'" syn match slSpecialCharacter "'\\.'" syn match slSpecialCharacter "'\\[0-9][0-9]'" syn match slSpecialCharacter "'\\[0-9][0-9][0-9]'" syn region slParen transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel syn match slParenError ")" syn match slInParen contained "[{}]" syn case ignore syn match slNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" syn match slFloat "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>" syn match slFloat "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>" syn match slFloat "\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>" syn match slNumber "\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn case match if exists("sl_comment_strings") syntax match slCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region slCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip syntax region slComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial syntax region slComment start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber else syn region slComment start="/\*" end="\*/" contains=slTodo endif syntax match slCommentError "\*/" syn keyword slOperator sizeof syn keyword slType float point color string vector normal matrix void syn keyword slStorageClass varying uniform extern syn keyword slStorageClass light surface volume displacement transformation imager syn keyword slVariable Cs Os P dPdu dPdv N Ng u v du dv s t syn keyword slVariable L Cl Ol E I ncomps time Ci Oi syn keyword slVariable Ps alpha syn keyword slVariable dtime dPdtime syn sync ccomment slComment minlines=10 hi def link slLabel Label hi def link slUserLabel Label hi def link slConditional Conditional hi def link slRepeat Repeat hi def link slCharacter Character hi def link slSpecialCharacter slSpecial hi def link slNumber Number hi def link slFloat Float hi def link slParenError slError hi def link slInParen slError hi def link slCommentError slError hi def link slOperator Operator hi def link slStorageClass StorageClass hi def link slError Error hi def link slStatement Statement hi def link slType Type hi def link slCommentError slError hi def link slCommentString slString hi def link slComment2String slString hi def link slCommentSkip slComment hi def link slString String hi def link slComment Comment hi def link slSpecial SpecialChar hi def link slTodo Todo hi def link slVariable Identifier let b:current_syntax = "sl" if exists("b:current_syntax") finish endif syn keyword slangStatement break return continue EXECUTE_ERROR_BLOCK syn match slangStatement "\" syn keyword slangLabel case syn keyword slangConditional !if if else switch syn keyword slangRepeat while for _for loop do forever syn keyword slangDefinition define typedef variable struct syn keyword slangOperator or and andelse orelse shr shl xor not syn keyword slangBlock EXIT_BLOCK ERROR_BLOCK syn match slangBlock "\" syn keyword slangConstant NULL syn keyword slangType Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type syn match slangOctal "\<0\d\+\>" contains=slangOctalError syn match slangOctalError "[89]\+" contained syn match slangHex "\<0[xX][0-9A-Fa-f]*\>" syn match slangDecimal "\<[1-9]\d*\>" syn match slangFloat "\<\d\+\." syn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>" syn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>" syn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>" syn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>" syn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>" syn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>" syn region slangString oneline start='"' end='"' skip='\\"' syn match slangCharacter "'[^\\]'" syn match slangCharacter "'\\.'" syn match slangCharacter "'\\[0-7]\{1,3}'" syn match slangCharacter "'\\d\d\{1,3}'" syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'" syn match slangDelim "[][{};:,]" syn match slangOperator "[-%+/&*=<>|!~^@]" syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError syn match slangParenError ")" syn match slangComment "%.*$" syn keyword slangOperator sizeof syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber hi def link slangDefinition Type hi def link slangBlock slangDefinition hi def link slangLabel Label hi def link slangConditional Conditional hi def link slangRepeat Repeat hi def link slangCharacter Character hi def link slangFloat Float hi def link slangImaginary Float hi def link slangDecimal slangNumber hi def link slangOctal slangNumber hi def link slangHex slangNumber hi def link slangNumber Number hi def link slangParenError Error hi def link slangOctalError Error hi def link slangOperator Operator hi def link slangStructure Structure hi def link slangInclude Include hi def link slangPreCondit PreCondit hi def link slangError Error hi def link slangStatement Statement hi def link slangType Type hi def link slangString String hi def link slangConstant Constant hi def link slangRangeArray slangConstant hi def link slangComment Comment hi def link slangSpecial SpecialChar hi def link slangTodo Todo hi def link slangDelim Delimiter let b:current_syntax = "slang" if exists("b:current_syntax") finish endif syn keyword sliceType bool byte double float int long short string void syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws syn keyword sliceConstruct class enum exception dictionary interface module LocalObject Object sequence struct syn keyword sliceQualifier const extends idempotent implements local nonmutating out throws syn keyword sliceBoolean false true syn region sliceIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match sliceIncluded display contained "<[^>]*>" syn match sliceInclude display "^\s*#\s*include\>\s*["<]" contains=sliceIncluded syn region sliceGuard start="^#\(define\|ifndef\|endif\)" end="$" syn region sliceString start=+"+ end=+"+ syn case ignore syn match sliceNumbers display transparent "\<\d\|\.\d" contains=sliceNumber,sliceFloat,sliceOctal syn match sliceNumber display contained "\d\+" syn match sliceNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" syn match sliceOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=sliceOctalZero syn match sliceOctalZero display contained "\<0" syn match sliceFloat display contained "\d\+f" syn match sliceFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match sliceFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match sliceFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" syn case match syn region sliceComment start="/\*" end="\*/" syn match sliceComment "//.*" syn sync ccomment sliceComment hi def link sliceComment Comment hi def link sliceConstruct Keyword hi def link sliceType Type hi def link sliceString String hi def link sliceIncluded String hi def link sliceQualifier Keyword hi def link sliceInclude Include hi def link sliceGuard PreProc hi def link sliceBoolean Boolean hi def link sliceFloat Number hi def link sliceNumber Number hi def link sliceOctal Number hi def link sliceOctalZero Special hi def link sliceNumberError Special let b:current_syntax = "slice" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword slpconfTodo contained TODO FIXME XXX NOTE syn region slpconfComment display oneline start='^[#;]' end='$' \ contains=slpconfTodo,@Spell syn match slpconfBegin display '^' \ nextgroup=slpconfTag, \ slpconfComment skipwhite syn keyword slpconfTag contained net \ nextgroup=slpconfNetTagDot syn match slpconfNetTagDot contained display '.' \ nextgroup=slpconfNetTag syn keyword slpconfNetTag contained slp \ nextgroup=slpconfNetSlpTagdot syn match slpconfNetSlpTagDot contained display '.' \ nextgroup=slpconfNetSlpTag syn keyword slpconfNetSlpTag contained isDA traceDATraffic traceMsg \ traceDrop traceReg isBroadcastOnly \ passiveDADetection securityEnabled \ nextgroup=slpconfBooleanEq,slpconfBooleanHome \ skipwhite syn match slpconfBooleanHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfBooleanEq skipwhite syn match slpconfBooleanEq contained display '=' \ nextgroup=slpconfBoolean skipwhite syn keyword slpconfBoolean contained true false TRUE FALSE syn keyword slpconfNetSlpTag contained DAHeartBeat multicastTTL \ DAActiveDiscoveryInterval \ multicastMaximumWait multicastTimeouts \ randomWaitBound MTU maxResults \ nextgroup=slpconfIntegerEq,slpconfIntegerHome \ skipwhite syn match slpconfIntegerHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfIntegerEq skipwhite syn match slpconfIntegerEq contained display '=' \ nextgroup=slpconfInteger skipwhite syn match slpconfInteger contained display '\<\d\+\>' syn keyword slpconfNetSlpTag contained DAAttributes SAAttributes \ nextgroup=slpconfAttrEq,slpconfAttrHome \ skipwhite syn match slpconfAttrHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfAttrEq skipwhite syn match slpconfAttrEq contained display '=' \ nextgroup=slpconfAttrBegin skipwhite syn match slpconfAttrBegin contained display '(' \ nextgroup=slpconfAttrTag skipwhite syn match slpconfAttrTag contained display \ '[^* \t_(),\\!<=>~[:cntrl:]]\+' \ nextgroup=slpconfAttrTagEq skipwhite syn match slpconfAttrTagEq contained display '=' \ nextgroup=@slpconfAttrValue skipwhite syn cluster slpconfAttrValueCon contains=slpconfAttrValueSep,slpconfAttrEnd syn cluster slpconfAttrValue contains=slpconfAttrIValue,slpconfAttrSValue, \ slpconfAttrBValue,slpconfAttrSSValue syn match slpconfAttrSValue contained display '[^ (),\\!<=>~[:cntrl:]]\+' \ nextgroup=@slpconfAttrValueCon skipwhite syn match slpconfAttrSSValue contained display '\\FF\%(\\\x\x\)\+' \ nextgroup=@slpconfAttrValueCon skipwhite syn match slpconfAttrIValue contained display '[-]\=\d\+\>' \ nextgroup=@slpconfAttrValueCon skipwhite syn keyword slpconfAttrBValue contained true false \ nextgroup=@slpconfAttrValueCon skipwhite syn match slpconfAttrValueSep contained display ',' \ nextgroup=@slpconfAttrValue skipwhite syn match slpconfAttrEnd contained display ')' \ nextgroup=slpconfAttrSep skipwhite syn match slpconfAttrSep contained display ',' \ nextgroup=slpconfAttrBegin skipwhite syn keyword slpconfNetSlpTag contained useScopes typeHint \ nextgroup=slpconfStringsEq,slpconfStringsHome \ skipwhite syn match slpconfStringsHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfStringsEq skipwhite syn match slpconfStringsEq contained display '=' \ nextgroup=slpconfStrings skipwhite syn match slpconfStrings contained display \ '\%([[:digit:][:alpha:]]\|[!-+./:-@[-`{-~-]\|\\\x\x\)\+' \ nextgroup=slpconfStringsSep skipwhite syn match slpconfStringsSep contained display ',' \ nextgroup=slpconfStrings skipwhite syn keyword slpconfNetSlpTag contained DAAddresses \ nextgroup=slpconfAddressesEq,slpconfAddrsHome \ skipwhite syn match slpconfAddrsHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfAddressesEq skipwhite syn match slpconfAddressesEq contained display '=' \ nextgroup=@slpconfAddresses skipwhite syn cluster slpconfAddresses contains=slpconfFQDNs,slpconfHostnumbers syn match slpconfFQDNs contained display \ '\a[[:alnum:]-]*[[:alnum:]]\|\a' \ nextgroup=slpconfAddressesSep skipwhite syn match slpconfHostnumbers contained display \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfAddressesSep skipwhite syn match slpconfAddressesSep contained display ',' \ nextgroup=@slpconfAddresses skipwhite syn keyword slpconfNetSlpTag contained serializedRegURL \ nextgroup=slpconfStringEq,slpconfStringHome \ skipwhite syn match slpconfStringHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfStringEq skipwhite syn match slpconfStringEq contained display '=' \ nextgroup=slpconfString skipwhite syn match slpconfString contained display \ '\%([!-+./:-@[-`{-~-]\|\\\x\x\)\+\|[[:digit:][:alpha:]]' syn keyword slpconfNetSlpTag contained multicastTimeouts DADiscoveryTimeouts \ datagramTimeouts \ nextgroup=slpconfIntegersEq, \ slpconfIntegersHome skipwhite syn match slpconfIntegersHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfIntegersEq skipwhite syn match slpconfIntegersEq contained display '=' \ nextgroup=slpconfIntegers skipwhite syn match slpconfIntegers contained display '\<\d\+\>' \ nextgroup=slpconfIntegersSep skipwhite syn match slpconfIntegersSep contained display ',' \ nextgroup=slpconfIntegers skipwhite syn keyword slpconfNetSlpTag contained interfaces \ nextgroup=slpconfHostnumsEq, \ slpconfHostnumsHome skipwhite syn match slpconfHostnumsHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfHostnumsEq skipwhite syn match slpconfHostnumsEq contained display '=' \ nextgroup=slpconfOHostnumbers skipwhite syn match slpconfOHostnumbers contained display \ '\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfHostnumsSep skipwhite syn match slpconfHostnumsSep contained display ',' \ nextgroup=slpconfOHostnumbers skipwhite syn keyword slpconfNetSlpTag contained locale \ nextgroup=slpconfLocaleEq,slpconfLocaleHome \ skipwhite syn match slpconfLocaleHome contained display \ '\.\d\{1,3}\%(\.\d\{1,3}\)\{3}' \ nextgroup=slpconfLocaleEq skipwhite syn match slpconfLocaleEq contained display '=' \ nextgroup=slpconfLocale skipwhite syn match slpconfLocale contained display '\a\{1,8}\%(-\a\{1,8}\)\=' hi def link slpconfTodo Todo hi def link slpconfComment Comment hi def link slpconfTag Identifier hi def link slpconfDelimiter Delimiter hi def link slpconfNetTagDot slpconfDelimiter hi def link slpconfNetTag slpconfTag hi def link slpconfNetSlpTagDot slpconfNetTagDot hi def link slpconfNetSlpTag slpconfTag hi def link slpconfHome Special hi def link slpconfBooleanHome slpconfHome hi def link slpconfEq Operator hi def link slpconfBooleanEq slpconfEq hi def link slpconfBoolean Boolean hi def link slpconfIntegerHome slpconfHome hi def link slpconfIntegerEq slpconfEq hi def link slpconfInteger Number hi def link slpconfAttrHome slpconfHome hi def link slpconfAttrEq slpconfEq hi def link slpconfAttrBegin slpconfDelimiter hi def link slpconfAttrTag slpconfTag hi def link slpconfAttrTagEq slpconfEq hi def link slpconfAttrIValue slpconfInteger hi def link slpconfAttrSValue slpconfString hi def link slpconfAttrBValue slpconfBoolean hi def link slpconfAttrSSValue slpconfString hi def link slpconfSeparator slpconfDelimiter hi def link slpconfAttrValueSep slpconfSeparator hi def link slpconfAttrEnd slpconfAttrBegin hi def link slpconfAttrSep slpconfSeparator hi def link slpconfStringsHome slpconfHome hi def link slpconfStringsEq slpconfEq hi def link slpconfStrings slpconfString hi def link slpconfStringsSep slpconfSeparator hi def link slpconfAddrsHome slpconfHome hi def link slpconfAddressesEq slpconfEq hi def link slpconfFQDNs String hi def link slpconfHostnumbers Number hi def link slpconfAddressesSep slpconfSeparator hi def link slpconfStringHome slpconfHome hi def link slpconfStringEq slpconfEq hi def link slpconfString String hi def link slpconfIntegersHome slpconfHome hi def link slpconfIntegersEq slpconfEq hi def link slpconfIntegers slpconfInteger hi def link slpconfIntegersSep slpconfSeparator hi def link slpconfHostnumsHome slpconfHome hi def link slpconfHostnumsEq slpconfEq hi def link slpconfOHostnumbers slpconfHostnumbers hi def link slpconfHostnumsSep slpconfSeparator hi def link slpconfLocaleHome slpconfHome hi def link slpconfLocaleEq slpconfEq hi def link slpconfLocale slpconfString let b:current_syntax = "slpconf" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword slpregTodo contained TODO FIXME XXX NOTE syn region slpregComment display oneline start='^[#;]' end='$' \ contains=slpregTodo,@Spell syn match slpregBegin display '^' \ nextgroup=slpregServiceURL, \ slpregComment syn match slpregServiceURL contained display 'service:' \ nextgroup=slpregServiceType syn match slpregServiceType contained display '\a[[:alpha:][:digit:]+-]*\%(\.\a[[:alpha:][:digit:]+-]*\)\=\%(:\a[[:alpha:][:digit:]+-]*\)\=' \ nextgroup=slpregServiceSAPCol syn match slpregServiceSAPCol contained display ':' \ nextgroup=slpregSAP syn match slpregSAP contained '[^,]\+' \ nextgroup=slpregLangSep syn match slpregLangSep contained display ',' \ nextgroup=slpregLang syn match slpregLang contained display '\a\{1,8}\%(-\a\{1,8\}\)\=' \ nextgroup=slpregLTimeSep syn match slpregLTimeSep contained display ',' \ nextgroup=slpregLTime syn match slpregLTime contained display '\d\{1,5}' \ nextgroup=slpregType,slpregUNewline syn match slpregType contained display '\a[[:alpha:][:digit:]+-]*' \ nextgroup=slpregUNewLine syn match slpregUNewLine contained '\s*\n' \ nextgroup=slpregScopes,slpregAttrList skipnl syn keyword slpregScopes contained scopes \ nextgroup=slpregScopesEq syn match slpregScopesEq contained '=' nextgroup=slpregScopeName syn match slpregScopeName contained '[^(),\\!<=>[:cntrl:];*+ ]\+' \ nextgroup=slpregScopeNameSep, \ slpregScopeNewline syn match slpregScopeNameSep contained ',' \ nextgroup=slpregScopeName syn match slpregScopeNewline contained '\s*\n' \ nextgroup=slpregAttribute skipnl syn match slpregAttribute contained '[^(),\\!<=>[:cntrl:]* \t_]\+' \ nextgroup=slpregAttributeEq, \ slpregScopeNewline syn match slpregAttributeEq contained '=' \ nextgroup=@slpregAttrValue syn cluster slpregAttrValueCon contains=slpregAttribute,slpregAttrValueSep syn cluster slpregAttrValue contains=slpregAttrIValue,slpregAttrSValue, \ slpregAttrBValue,slpregAttrSSValue syn match slpregAttrSValue contained display '[^(),\\!<=>~[:cntrl:]]\+' \ nextgroup=@slpregAttrValueCon skipwhite skipnl syn match slpregAttrSSValue contained display '\\FF\%(\\\x\x\)\+' \ nextgroup=@slpregAttrValueCon skipwhite skipnl syn match slpregAttrIValue contained display '[-]\=\d\+\>' \ nextgroup=@slpregAttrValueCon skipwhite skipnl syn keyword slpregAttrBValue contained true false \ nextgroup=@slpregAttrValueCon skipwhite skipnl syn match slpregAttrValueSep contained display ',' \ nextgroup=@slpregAttrValue skipwhite skipnl hi def link slpregTodo Todo hi def link slpregComment Comment hi def link slpregServiceURL Type hi def link slpregServiceType slpregServiceURL hi def link slpregServiceSAPCol slpregServiceURL hi def link slpregSAP slpregServiceURL hi def link slpregDelimiter Delimiter hi def link slpregLangSep slpregDelimiter hi def link slpregLang String hi def link slpregLTimeSep slpregDelimiter hi def link slpregLTime Number hi def link slpregType Type hi def link slpregScopes Identifier hi def link slpregScopesEq Operator hi def link slpregScopeName String hi def link slpregScopeNameSep slpregDelimiter hi def link slpregAttribute Identifier hi def link slpregAttributeEq Operator hi def link slpregAttrSValue String hi def link slpregAttrSSValue slpregAttrSValue hi def link slpregAttrIValue Number hi def link slpregAttrBValue Boolean hi def link slpregAttrValueSep slpregDelimiter let b:current_syntax = "slpreg" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword slpspiTodo contained TODO FIXME XXX NOTE syn region slpspiComment display oneline start='^[#;]' end='$' \ contains=slpspiTodo,@Spell syn match slpspiBegin display '^' \ nextgroup=slpspiKeyType, \ slpspiComment skipwhite syn keyword slpspiKeyType contained PRIVATE PUBLIC \ nextgroup=slpspiString skipwhite syn match slpspiString contained '\S\+' \ nextgroup=slpspiKeyFile skipwhite syn match slpspiKeyFile contained '\S\+' hi def link slpspiTodo Todo hi def link slpspiComment Comment hi def link slpspiKeyType Type hi def link slpspiString Identifier hi def link slpspiKeyFile String let b:current_syntax = "slpspi" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword slrnrcTodo contained Todo syn match slrnrcSpaceError contained "\s" syn match slrnrcNumber contained "-\=\<\d\+\>" syn match slrnrcNumber contained +'[^']\+'+ syn match slrnrcSpecKey contained +\(\\[er"']\|\^[^'"]\|\\\o\o\o\)+ syn match slrnrcKey contained "\S\+" contains=slrnrcSpecKey syn region slrnrcKey contained start=+"+ skip=+\\"+ end=+"+ oneline contains=slrnrcSpecKey syn region slrnrcKey contained start=+'+ skip=+\\'+ end=+'+ oneline contains=slrnrcSpecKey syn match slrnrcSpecChar contained +'+ syn match slrnrcSpecChar contained +\\[n"]+ syn match slrnrcSpecChar contained "%[dfmnrs%]" syn match slrnrcString contained /[^ \t%"']\+/ contains=slrnrcSpecChar syn region slrnrcString contained start=+"+ skip=+\\"+ end=+"+ oneline contains=slrnrcSpecChar syn match slrnSlangPreCondit "^#\s*ifn\=\(def\>\|false\>\|true\>\|\$\)" syn match slrnSlangPreCondit "^#\s*e\(lif\|lse\|ndif\)\>" syn match slrnrcComment "%.*$" contains=slrnrcTodo syn keyword slrnrcVarInt contained abort_unmodified_edits article_window_page_overlap auto_mark_article_as_read beep broken_xref broken_xref cc_followup check_new_groups syn keyword slrnrcVarInt contained color_by_score confirm_actions custom_sort_by_threads display_cursor_bar drop_bogus_groups editor_uses_mime_charset emphasized_text_mask syn keyword slrnrcVarInt contained emphasized_text_mode fold_headers fold_headers followup_strip_signature force_authentication force_authentication generate_date_header syn keyword slrnrcVarInt contained generate_email_from generate_email_from generate_message_id grouplens_port hide_pgpsignature hide_quotes hide_signature syn keyword slrnrcVarInt contained hide_verbatim_marks hide_verbatim_text highlight_unread_subjects highlight_urls ignore_signature kill_score lines_per_update syn keyword slrnrcVarInt contained mail_editor_is_mua max_low_score max_queued_groups min_high_score mouse netiquette_warnings new_subject_breaks_threads no_autosave syn keyword slrnrcVarInt contained no_backups prefer_head process_verbatim_marks query_next_article query_next_group query_read_group_cutoff read_active reject_long_lines syn keyword slrnrcVarInt contained scroll_by_page show_article show_thread_subject simulate_graphic_chars smart_quote sorting_method spoiler_char spoiler_char syn keyword slrnrcVarInt contained spoiler_display_mode spoiler_display_mode spool_check_up_on_nov spool_check_up_on_nov uncollapse_threads unsubscribe_new_groups use_blink syn keyword slrnrcVarInt contained use_color use_flow_control use_grouplens use_grouplens use_header_numbers use_inews use_inews use_localtime use_metamail use_mime use_mime syn keyword slrnrcVarInt contained use_recommended_msg_id use_slrnpull use_slrnpull use_tilde use_tmpdir use_uudeview use_uudeview warn_followup_to wrap_flags wrap_method syn keyword slrnrcVarInt contained write_newsrc_flags syn keyword slrnrcVarInt contained author_display display_author_realname display_score group_dsc_start_column process_verbatum_marks prompt_next_group query_reconnect syn keyword slrnrcVarInt contained show_descriptions use_xgtitle syn region slrnrcVarIntStr contained matchgroup=slrnrcVarInt start=+"+ end=+"+ oneline contains=slrnrcVarInt,slrnrcSpaceError syn keyword slrnrcVarStr contained Xbrowser art_help_line art_status_line cansecret_file cc_post_string charset custom_headers custom_sort_order decode_directory syn keyword slrnrcVarStr contained editor_command failed_posts_file followup_custom_headers followup_date_format followup_string followupto_string group_help_line syn keyword slrnrcVarStr contained group_status_line grouplens_host grouplens_pseudoname header_help_line header_status_line hostname inews_program macro_directory syn keyword slrnrcVarStr contained mail_editor_command metamail_command mime_charset non_Xbrowser organization overview_date_format post_editor_command post_object syn keyword slrnrcVarStr contained postpone_directory printer_name quote_string realname reply_custom_headers reply_string replyto save_directory save_posts save_replies syn keyword slrnrcVarStr contained score_editor_command scorefile sendmail_command server_object signature signoff_string spool_active_file spool_activetimes_file syn keyword slrnrcVarStr contained spool_inn_root spool_newsgroups_file spool_nov_file spool_nov_root spool_overviewfmt_file spool_root supersedes_custom_headers syn keyword slrnrcVarStr contained top_status_line username syn keyword slrnrcVarStr contained followup cc_followup_string syn region slrnrcVarStrStr contained matchgroup=slrnrcVarStr start=+"+ end=+"+ oneline contains=slrnrcVarStr,slrnrcSpaceError syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(autobaud\|color\|compatible_charsets\|group_display_format\|grouplens_add\|header_display_format\|ignore_quotes\|include\|interpret\|mono\|nnrpaccess\|posting_host\|server\|set\|setkey\|strip_re_regexp\|strip_sig_regexp\|strip_was_regexp\|unsetkey\|visible_headers\)\>" end="$" oneline contains=slrnrc\(String\|Comment\) syn region slrnrcCmdLine matchgroup=slrnrcCmd start="\<\(cc_followup_string\|decode_directory\|editor_command\|followup\|hostname\|organization\|quote_string\|realname\|replyto\|scorefile\|signature\|username\)\>" end="$" oneline contains=slrnrc\(String\|Comment\) syn keyword slrnrcSet contained set syn match slrnrcSetStr "^\s*set\s\+\S\+" skipwhite nextgroup=slrnrcString contains=slrnrcSet,slrnrcVarStr\(Str\)\= syn match slrnrcSetInt contained "^\s*set\s\+\S\+" contains=slrnrcSet,slrnrcVarInt\(Str\)\= syn match slrnrcSetIntLine "^\s*set\s\+\S\+\s\+\(-\=\d\+\>\|'[^']\+'\)" contains=slrnrcSetInt,slrnrcNumber,slrnrcVarInt syn match slrnrcColorObj contained "\" syn keyword slrnrcColorObj contained article author boldtext box cursor date description error frame from_myself group grouplens_display header_name header_number headers syn keyword slrnrcColorObj contained high_score italicstext menu menu_press message neg_score normal pgpsignature pos_score quotes response_char selection signature status syn keyword slrnrcColorObj contained subject thread_number tilde tree underlinetext unread_subject url verbatim syn keyword slrnrcColorObj contained verbatum syn region slrnrcColorObjStr contained matchgroup=slrnrcColorObj start=+"+ end=+"+ oneline contains=slrnrcColorObj,slrnrcSpaceError syn keyword slrnrcColorVal contained default syn keyword slrnrcColorVal contained black blue brightblue brightcyan brightgreen brightmagenta brightred brown cyan gray green lightgray magenta red white yellow syn region slrnrcColorValStr contained matchgroup=slrnrcColorVal start=+"+ end=+"+ oneline contains=slrnrcColorVal,slrnrcSpaceError syn keyword slrnrcColor contained color syn match slrnrcColorInit contained "^\s*color\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Obj\|ObjStr\)\= syn match slrnrcColorLine "^\s*color\s\+\S\+\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Init\|Val\|ValStr\) syn keyword slrnrcMonoVal contained blink bold none reverse underline syn region slrnrcMonoValStr contained matchgroup=slrnrcMonoVal start=+"+ end=+"+ oneline contains=slrnrcMonoVal,slrnrcSpaceError syn keyword slrnrcMono contained mono syn match slrnrcMonoInit contained "^\s*mono\s\+\S\+" contains=slrnrcMono,slrnrcColorObj\(Str\)\= syn match slrnrcMonoLine "^\s*mono\s\+\S\+\s\+\S.*" contains=slrnrcMono\(Init\|Val\|ValStr\),slrnrcComment syn keyword slrnrcFunArt contained article_bob article_eob article_left article_line_down article_line_up article_page_down article_page_up article_right article_search syn keyword slrnrcFunArt contained author_search_backward author_search_forward browse_url cancel catchup catchup_all create_score decode delete delete_thread digit_arg syn keyword slrnrcFunArt contained enlarge_article_window evaluate_cmd exchange_mark expunge fast_quit followup forward forward_digest get_children_headers get_parent_header syn keyword slrnrcFunArt contained goto_article goto_last_read grouplens_rate_article header_bob header_eob header_line_down header_line_up header_page_down header_page_up syn keyword slrnrcFunArt contained help hide_article locate_article mark_spot next next_high_score next_same_subject pipe post post_postponed previous print quit redraw syn keyword slrnrcFunArt contained repeat_last_key reply request save show_spoilers shrink_article_window skip_quotes skip_to_next_group skip_to_previous_group syn keyword slrnrcFunArt contained subject_search_backward subject_search_forward supersede suspend tag_header toggle_collapse_threads toggle_header_formats syn keyword slrnrcFunArt contained toggle_header_tag toggle_headers toggle_pgpsignature toggle_quotes toggle_rot13 toggle_signature toggle_sort toggle_verbatim_marks syn keyword slrnrcFunArt contained toggle_verbatim_text uncatchup uncatchup_all undelete untag_headers view_scores wrap_article zoom_article_window syn keyword slrnrcFunArt contained art_bob art_eob art_xpunge article_linedn article_lineup article_pagedn article_pageup down enlarge_window goto_beginning goto_end left syn keyword slrnrcFunArt contained locate_header_by_msgid pagedn pageup pipe_article prev print_article right scroll_dn scroll_up shrink_window skip_to_prev_group syn keyword slrnrcFunArt contained toggle_show_author up syn keyword slrnrcFunGroup contained add_group bob catchup digit_arg eob evaluate_cmd group_search group_search_backward group_search_forward help line_down line_up move_group syn keyword slrnrcFunGroup contained page_down page_up post post_postponed quit redraw refresh_groups repeat_last_key save_newsrc select_group subscribe suspend syn keyword slrnrcFunGroup contained toggle_group_formats toggle_hidden toggle_list_all toggle_scoring transpose_groups uncatchup unsubscribe syn keyword slrnrcFunGroup contained down group_bob group_eob pagedown pageup toggle_group_display uncatch_up up syn keyword slrnrcFunRead contained bdel bol complete cycle del delbol delbow deleol down enter eol left quoted_insert right self_insert trim up syn keyword slrnrcSetkeyObj contained article group readline syn region slrnrcSetkeyObjStr contained matchgroup=slrnrcSetkeyObj start=+"+ end=+"+ oneline contains=slrnrcSetkeyObj syn match slrnrcSetkeyArt contained '\("\=\)\\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunArt syn match slrnrcSetkeyGroup contained '\("\=\)\\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunGroup syn match slrnrcSetkeyRead contained '\("\=\)\\1\s\+\S\+' skipwhite nextgroup=slrnrcKey contains=slrnrcSetKeyObj\(Str\)\=,slrnrcFunRead syn match slrnrcSetkey "^\s*setkey\>" skipwhite nextgroup=slrnrcSetkeyArt,slrnrcSetkeyGroup,slrnrcSetkeyRead syn match slrnrcUnsetkey '^\s*unsetkey\s\+\("\)\=\(article\|group\|readline\)\>\1' skipwhite nextgroup=slrnrcKey contains=slrnrcSetkeyObj\(Str\)\= hi def link slrnrcTodo Todo hi def link slrnrcSpaceError Error hi def link slrnrcNumber Number hi def link slrnrcSpecKey SpecialChar hi def link slrnrcKey String hi def link slrnrcSpecChar SpecialChar hi def link slrnrcString String hi def link slrnSlangPreCondit Special hi def link slrnrcComment Comment hi def link slrnrcVarInt Identifier hi def link slrnrcVarStr Identifier hi def link slrnrcCmd slrnrcSet hi def link slrnrcSet Operator hi def link slrnrcColor Keyword hi def link slrnrcColorObj Identifier hi def link slrnrcColorVal String hi def link slrnrcMono Keyword hi def link slrnrcMonoObj Identifier hi def link slrnrcMonoVal String hi def link slrnrcFunArt Macro hi def link slrnrcFunGroup Macro hi def link slrnrcFunRead Macro hi def link slrnrcSetkeyObj Identifier hi def link slrnrcSetkey Keyword hi def link slrnrcUnsetkey slrnrcSetkey let b:current_syntax = "slrnrc" if exists("b:current_syntax") finish endif setlocal isk=@,48-57,.,-,_,+ syn match slrnscComment "%.*$" syn match slrnscSectionCom ".].*"lc=2 syn match slrnscGroup contained "\(\k\|\*\)\+" syn match slrnscNumber contained "\d\+" syn match slrnscDate contained "\(\d\{1,2}[-/]\)\{2}\d\{4}" syn match slrnscDelim contained ":" syn match slrnscComma contained "," syn match slrnscOper contained "\~" syn match slrnscEsc contained "\\[ecC<>.]" syn match slrnscEsc contained "[?^]" syn match slrnscEsc contained "[^\\]$\s*$"lc=1 syn keyword slrnscInclude contained include syn match slrnscIncludeLine "^\s*Include\s\+\S.*$" syn region slrnscSection matchgroup=slrnscSectionStd start="^\s*\[" end='\]' contains=slrnscGroup,slrnscComma,slrnscSectionCom syn region slrnscSection matchgroup=slrnscSectionNot start="^\s*\[\~" end='\]' contains=slrnscGroup,slrnscCommas,slrnscSectionCom syn keyword slrnscItem contained Age Bytes Date Expires From Has-Body Lines Message-Id Newsgroup References Subject Xref syn match slrnscScoreItem contained "%.*$" skipempty nextgroup=slrnscScoreItem contains=slrnscComment syn match slrnscScoreItem contained "^\s*Expires:\s*\(\d\{1,2}[-/]\)\{2}\d\{4}\s*$" skipempty nextgroup=slrnscScoreItem contains=slrnscItem,slrnscDelim,slrnscDate syn match slrnscScoreItem contained "^\s*\~\=\(Age\|Bytes\|Has-Body\|Lines\):\s*\d\+\s*$" skipempty nextgroup=slrnscScoreItem contains=slrnscOper,slrnscItem,slrnscDelim,slrnscNumber syn match slrnscScoreItemFill contained ".*$" skipempty nextgroup=slrnscScoreItem contains=slrnscEsc syn match slrnscScoreItem contained "^\s*\~\=\(Date\|From\|Message-Id\|Newsgroup\|References\|Subject\|Xref\):" nextgroup=slrnscScoreItemFill contains=slrnscOper,slrnscItem,slrnscDelim syn region slrnscScoreItem contained matchgroup=Special start="^\s*\~\={::\=" end="^\s*}" skipempty nextgroup=slrnscScoreItem contains=slrnscScoreItem syn keyword slrnscScore contained Score syn match slrnscScoreIdent contained "%.*" syn match slrnScoreLine "^\s*Score::\=\s\+=\=[-+]\=\d\+\s*\(%.*\)\=$" skipempty nextgroup=slrnscScoreItem contains=slrnscScore,slrnscDelim,slrnscOper,slrnscNumber,slrnscScoreIdent hi def link slrnscComment Comment hi def link slrnscSectionCom slrnscComment hi def link slrnscGroup String hi def link slrnscNumber Number hi def link slrnscDate Special hi def link slrnscDelim Delimiter hi def link slrnscComma SpecialChar hi def link slrnscOper SpecialChar hi def link slrnscEsc String hi def link slrnscSectionStd Type hi def link slrnscSectionNot Delimiter hi def link slrnscItem Statement hi def link slrnscScore Keyword hi def link slrnscScoreIdent Identifier hi def link slrnscInclude Keyword let b:current_syntax = "slrnsc" if exists("b:current_syntax") finish endif syn match smComment "^#.*$" contains=@Spell syn match smDefine "^[CDF]." syn match smDefine "^O[AaBcdDeFfgHiLmNoQqrSsTtuvxXyYzZ]" syn match smDefine "^O\s"he=e-1 syn match smDefine "^M[a-zA-Z0-9]\+,"he=e-1 syn match smDefine "^T" nextgroup=smTrusted syn match smDefine "^P" nextgroup=smMesg syn match smTrusted "\S\+$" contained syn match smMesg "\S*="he=e-1 contained nextgroup=smPrecedence syn match smPrecedence "-\=[0-9]\+" contained syn match smHeaderSep contained "[?:]" syn match smHeader "^H\(?[a-zA-Z]\+?\)\=[-a-zA-Z_]\+:" contains=smHeaderSep syn match smVar "\$[a-z\.\|]" syn match smRuleset "^S\d*" syn match smRewrite "^R" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsUser syn match smRewriteLhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteLhsToken,smRewriteLhsSep syn match smRewriteLhsToken contained "\(\$[-*+]\|\$[-=][A-Za-z]\|\$Y\)\+" skipwhite nextgroup=smRewriteLhsUser,smRewriteLhsSep syn match smRewriteLhsSep contained "\t\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsUser syn match smRewriteRhsUser contained "[^\t$]\+" skipwhite nextgroup=smRewriteRhsToken,smRewriteRhsSep syn match smRewriteRhsToken contained "\(\$\d\|\$>\d\|\$#\|\$@\|\$:[-_a-zA-Z]\+\|\$[[\]]\|\$@\|\$:\|\$[A-Za-z]\)\+" skipwhite nextgroup=smRewriteRhsUser,smRewriteRhsSep syn match smRewriteRhsSep contained "\t\+" skipwhite nextgroup=smRewriteComment,smRewriteRhsSep syn match smRewriteRhsSep contained "$" syn match smRewriteComment contained "[^\t$]*$" syn match smClauseError "\$\." syn match smElse contained "\$|" syn match smClauseCont contained "^\t" syn region smClause matchgroup=Delimiter start="\$?." matchgroup=Delimiter end="\$\." contains=smElse,smClause,smVar,smClauseCont hi def link smClause Special hi def link smClauseError Error hi def link smComment Comment hi def link smDefine Statement hi def link smElse Delimiter hi def link smHeader Statement hi def link smHeaderSep String hi def link smMesg Special hi def link smPrecedence Number hi def link smRewrite Statement hi def link smRewriteComment Comment hi def link smRewriteLhsToken String hi def link smRewriteLhsUser Statement hi def link smRewriteRhsToken String hi def link smRuleset Preproc hi def link smTrusted Special hi def link smVar String let b:current_syntax = "sm" if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'smarty' endif syn case ignore runtime! syntax/html.vim syn match smartyBlock contained "[\[\]]" syn keyword smartyTagName capture config_load include include_php syn keyword smartyTagName insert if elseif else ldelim rdelim literal syn keyword smartyTagName php section sectionelse foreach foreachelse syn keyword smartyTagName strip assign counter cycle debug eval fetch syn keyword smartyTagName html_options html_select_date html_select_time syn keyword smartyTagName math popup_init popup html_checkboxes html_image syn keyword smartyTagName html_radios html_table mailto textformat syn keyword smartyModifier cat capitalize count_characters count_paragraphs syn keyword smartyModifier count_sentences count_words date_format default syn keyword smartyModifier escape indent lower nl2br regex_replace replace syn keyword smartyModifier spacify string_format strip strip_tags truncate syn keyword smartyModifier upper wordwrap syn keyword smartyInFunc neq eq syn keyword smartyProperty contained "file=" syn keyword smartyProperty contained "loop=" syn keyword smartyProperty contained "name=" syn keyword smartyProperty contained "include=" syn keyword smartyProperty contained "skip=" syn keyword smartyProperty contained "section=" syn keyword smartyConstant "\$smarty" syn keyword smartyDot . syn region smartyZone matchgroup=Delimiter start="{" end="}" contains=smartyProperty, smartyString, smartyBlock, smartyTagName, smartyConstant, smartyInFunc, smartyModifier syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,smartyZone syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc,smartyZone syn region htmlLink start="\_[^>]*\" end="
"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc,smartyZone hi def link smartyTagName Identifier hi def link smartyProperty Constant hi def link smartyInFunc Function hi def link smartyBlock Constant hi def link smartyDot SpecialChar hi def link smartyModifier Function let b:current_syntax = "smarty" if main_syntax == 'smarty' unlet main_syntax endif if exists("b:current_syntax") finish endif syntax case match syn keyword smclCCLword current_date contained syn keyword smclCCLword current_time contained syn keyword smclCCLword rmsg_time contained syn keyword smclCCLword stata_version contained syn keyword smclCCLword version contained syn keyword smclCCLword born_date contained syn keyword smclCCLword flavor contained syn keyword smclCCLword SE contained syn keyword smclCCLword mode contained syn keyword smclCCLword console contained syn keyword smclCCLword os contained syn keyword smclCCLword osdtl contained syn keyword smclCCLword machine_type contained syn keyword smclCCLword byteorder contained syn keyword smclCCLword sysdir_stata contained syn keyword smclCCLword sysdir_updates contained syn keyword smclCCLword sysdir_base contained syn keyword smclCCLword sysdir_site contained syn keyword smclCCLword sysdir_plus contained syn keyword smclCCLword sysdir_personal contained syn keyword smclCCLword sysdir_oldplace contained syn keyword smclCCLword adopath contained syn keyword smclCCLword pwd contained syn keyword smclCCLword dirsep contained syn keyword smclCCLword max_N_theory contained syn keyword smclCCLword max_N_current contained syn keyword smclCCLword max_k_theory contained syn keyword smclCCLword max_k_current contained syn keyword smclCCLword max_width_theory contained syn keyword smclCCLword max_width_current contained syn keyword smclCCLword max_matsize contained syn keyword smclCCLword min_matsize contained syn keyword smclCCLword max_macrolen contained syn keyword smclCCLword macrolen contained syn keyword smclCCLword max_cmdlen contained syn keyword smclCCLword cmdlen contained syn keyword smclCCLword namelen contained syn keyword smclCCLword mindouble contained syn keyword smclCCLword maxdouble contained syn keyword smclCCLword epsdouble contained syn keyword smclCCLword minfloat contained syn keyword smclCCLword maxfloat contained syn keyword smclCCLword epsfloat contained syn keyword smclCCLword minlong contained syn keyword smclCCLword maxlong contained syn keyword smclCCLword minint contained syn keyword smclCCLword maxint contained syn keyword smclCCLword minbyte contained syn keyword smclCCLword maxbyte contained syn keyword smclCCLword maxstrvarlen contained syn keyword smclCCLword memory contained syn keyword smclCCLword maxvar contained syn keyword smclCCLword matsize contained syn keyword smclCCLword N contained syn keyword smclCCLword k contained syn keyword smclCCLword width contained syn keyword smclCCLword changed contained syn keyword smclCCLword filename contained syn keyword smclCCLword filedate contained syn keyword smclCCLword more contained syn keyword smclCCLword rmsg contained syn keyword smclCCLword dp contained syn keyword smclCCLword linesize contained syn keyword smclCCLword pagesize contained syn keyword smclCCLword logtype contained syn keyword smclCCLword linegap contained syn keyword smclCCLword scrollbufsize contained syn keyword smclCCLword varlabelpos contained syn keyword smclCCLword reventries contained syn keyword smclCCLword graphics contained syn keyword smclCCLword scheme contained syn keyword smclCCLword printcolor contained syn keyword smclCCLword adosize contained syn keyword smclCCLword maxdb contained syn keyword smclCCLword virtual contained syn keyword smclCCLword checksum contained syn keyword smclCCLword timeout1 contained syn keyword smclCCLword timeout2 contained syn keyword smclCCLword httpproxy contained syn keyword smclCCLword h_current contained syn keyword smclCCLword max_matsize contained syn keyword smclCCLword min_matsize contained syn keyword smclCCLword max_macrolen contained syn keyword smclCCLword macrolen contained syn keyword smclCCLword max_cmdlen contained syn keyword smclCCLword cmdlen contained syn keyword smclCCLword namelen contained syn keyword smclCCLword mindouble contained syn keyword smclCCLword maxdouble contained syn keyword smclCCLword epsdouble contained syn keyword smclCCLword minfloat contained syn keyword smclCCLword maxfloat contained syn keyword smclCCLword epsfloat contained syn keyword smclCCLword minlong contained syn keyword smclCCLword maxlong contained syn keyword smclCCLword minint contained syn keyword smclCCLword maxint contained syn keyword smclCCLword minbyte contained syn keyword smclCCLword maxbyte contained syn keyword smclCCLword maxstrvarlen contained syn keyword smclCCLword memory contained syn keyword smclCCLword maxvar contained syn keyword smclCCLword matsize contained syn keyword smclCCLword N contained syn keyword smclCCLword k contained syn keyword smclCCLword width contained syn keyword smclCCLword changed contained syn keyword smclCCLword filename contained syn keyword smclCCLword filedate contained syn keyword smclCCLword more contained syn keyword smclCCLword rmsg contained syn keyword smclCCLword dp contained syn keyword smclCCLword linesize contained syn keyword smclCCLword pagesize contained syn keyword smclCCLword logtype contained syn keyword smclCCLword linegap contained syn keyword smclCCLword scrollbufsize contained syn keyword smclCCLword varlabelpos contained syn keyword smclCCLword reventries contained syn keyword smclCCLword graphics contained syn keyword smclCCLword scheme contained syn keyword smclCCLword printcolor contained syn keyword smclCCLword adosize contained syn keyword smclCCLword maxdb contained syn keyword smclCCLword virtual contained syn keyword smclCCLword checksum contained syn keyword smclCCLword timeout1 contained syn keyword smclCCLword timeout2 contained syn keyword smclCCLword httpproxy contained syn keyword smclCCLword httpproxyhost contained syn keyword smclCCLword httpproxyport contained syn keyword smclCCLword httpproxyauth contained syn keyword smclCCLword httpproxyuser contained syn keyword smclCCLword httpproxypw contained syn keyword smclCCLword trace contained syn keyword smclCCLword tracedepth contained syn keyword smclCCLword tracesep contained syn keyword smclCCLword traceindent contained syn keyword smclCCLword traceexapnd contained syn keyword smclCCLword tracenumber contained syn keyword smclCCLword type contained syn keyword smclCCLword level contained syn keyword smclCCLword seed contained syn keyword smclCCLword searchdefault contained syn keyword smclCCLword pi contained syn keyword smclCCLword rc contained syn region smclCCL start=/{ccl / end=/}/ oneline contains=smclCCLword syn match smclFormat /{smcl}/ syn match smclFormat /{sf\(\|:[^}]\+\)}/ syn match smclFormat /{it\(\|:[^}]\+\)}/ syn match smclFormat /{bf\(\|:[^}]\+\)}/ syn match smclFormat /{inp\(\|:[^}]\+\)}/ syn match smclFormat /{input\(\|:[^}]\+\)}/ syn match smclFormat /{err\(\|:[^}]\+\)}/ syn match smclFormat /{error\(\|:[^}]\+\)}/ syn match smclFormat /{res\(\|:[^}]\+\)}/ syn match smclFormat /{result\(\|:[^}]\+\)}/ syn match smclFormat /{txt\(\|:[^}]\+\)}/ syn match smclFormat /{text\(\|:[^}]\+\)}/ syn match smclFormat /{com\(\|:[^}]\+\)}/ syn match smclFormat /{cmd\(\|:[^}]\+\)}/ syn match smclFormat /{cmdab:[^:}]\+:[^:}()]*\(\|:\|:(\|:()\)}/ syn match smclFormat /{hi\(\|:[^}]\+\)}/ syn match smclFormat /{hilite\(\|:[^}]\+\)}/ syn match smclFormat /{ul \(on\|off\)}/ syn match smclFormat /{ul:[^}]\+}/ syn match smclFormat /{hline\(\| \d\+\| -\d\+\|:[^}]\+\)}/ syn match smclFormat /{dup \d\+:[^}]\+}/ syn match smclFormat /{c [^}]\+}/ syn match smclFormat /{char [^}]\+}/ syn match smclFormat /{reset}/ syn match smclFormat /{title:[^}]\+}/ syn match smclFormat /{center:[^}]\+}/ syn match smclFormat /{centre:[^}]\+}/ syn match smclFormat /{center \d\+:[^}]\+}/ syn match smclFormat /{centre \d\+:[^}]\+}/ syn match smclFormat /{right:[^}]\+}/ syn match smclFormat /{lalign \d\+:[^}]\+}/ syn match smclFormat /{ralign \d\+:[^}]\+}/ syn match smclFormat /{\.\.\.}/ syn match smclFormat /{col \d\+}/ syn match smclFormat /{space \d\+}/ syn match smclFormat /{tab}/ syn match smclFormat /{bind:[^}]\+}/ syn match smclFormat /{break}/ syn match smclFormat /{p}/ syn match smclFormat /{p \d\+}/ syn match smclFormat /{p \d\+ \d\+}/ syn match smclFormat /{p \d\+ \d\+ \d\+}/ syn match smclFormat /{pstd}/ syn match smclFormat /{psee}/ syn match smclFormat /{phang\(\|2\|3\)}/ syn match smclFormat /{pmore\(\|2\|3\)}/ syn match smclFormat /{pin\(\|2\|3\)}/ syn match smclFormat /{p_end}/ syn match smclFormat /{opt \w\+\(\|:\w\+\)\(\|([^)}]*)\)}/ syn match smclFormat /{opth \w*\(\|:\w\+\)(\w*)}/ syn match smclFormat /{opth "\w\+\((\w\+:[^)}]\+)\)"}/ syn match smclFormat /{opth \w\+:\w\+(\w\+:[^)}]\+)}/ syn match smclFormat /{dlgtab\s*\(\|\d\+\|\d\+\s\+\d\+\):[^}]\+}/ syn match smclFormat /{p2colset\s\+\d\+\s\+\d\+\s\+\d\+\s\+\d\+}/ syn match smclFormat /{p2col\s\+:[^{}]*}.*{p_end}/ syn match smclFormat /{p2col\s\+:{[^{}]*}}.*{p_end}/ syn match smclFormat /{p2coldent\s*:[^{}]*}.*{p_end}/ syn match smclFormat /{p2coldent\s*:{[^{}]*}}.*{p_end}/ syn match smclFormat /{p2line\s*\(\|\d\+\s\+\d\+\)}/ syn match smclFormat /{p2colreset}/ syn match smclFormat /{synoptset\s\+\d\+\s\+\w\+}/ syn match smclFormat /{synopt\s*:[^{}]*}.*{p_end}/ syn match smclFormat /{synopt\s*:{[^{}]*}}.*{p_end}/ syn match smclFormat /{syntab\s*:[^{}]*}/ syn match smclFormat /{synopthdr}/ syn match smclFormat /{synoptline}/ syn match smclLink /{help [^}]\+}/ syn match smclLink /{helpb [^}]\+}/ syn match smclLink /{help_d:[^}]\+}/ syn match smclLink /{search [^}]\+}/ syn match smclLink /{search_d:[^}]\+}/ syn match smclLink /{browse [^}]\+}/ syn match smclLink /{view [^}]\+}/ syn match smclLink /{view_d:[^}]\+}/ syn match smclLink /{news:[^}]\+}/ syn match smclLink /{net [^}]\+}/ syn match smclLink /{net_d:[^}]\+}/ syn match smclLink /{netfrom_d:[^}]\+}/ syn match smclLink /{ado [^}]\+}/ syn match smclLink /{ado_d:[^}]\+}/ syn match smclLink /{update [^}]\+}/ syn match smclLink /{update_d:[^}]\+}/ syn match smclLink /{dialog [^}]\+}/ syn match smclLink /{back:[^}]\+}/ syn match smclLink /{clearmore:[^}]\+}/ syn match smclLink /{stata [^}]\+}/ syn match smclLink /{newvar\(\|:[^}]\+\)}/ syn match smclLink /{var\(\|:[^}]\+\)}/ syn match smclLink /{varname\(\|:[^}]\+\)}/ syn match smclLink /{vars\(\|:[^}]\+\)}/ syn match smclLink /{varlist\(\|:[^}]\+\)}/ syn match smclLink /{depvar\(\|:[^}]\+\)}/ syn match smclLink /{depvars\(\|:[^}]\+\)}/ syn match smclLink /{depvarlist\(\|:[^}]\+\)}/ syn match smclLink /{indepvars\(\|:[^}]\+\)}/ syn match smclLink /{dtype}/ syn match smclLink /{ifin}/ syn match smclLink /{weight}/ syn region smclComment start=/{\*/ end=/}/ oneline syn region smclString matchgroup=Nothing start=/"/ end=/"/ oneline syn region smclEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=smclEString hi def link smclEString smclString hi def link smclCCLword Statement hi def link smclCCL Type hi def link smclFormat Statement hi def link smclLink Underlined hi def link smclComment Comment hi def link smclString String let b:current_syntax = "smcl" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match syn match smilError "[<>&]" syn match smilError "[()&]" if !exists("main_syntax") let main_syntax = 'smil' endif syn match smilSpecial contained "\\\d\d\d\|\\." syn match smilSpecial contained "(" syn match smilSpecial contained "id(" syn match smilSpecial contained ")" syn keyword smilSpecial contained remove freeze true false on off overdub caption new pause replace syn keyword smilSpecial contained first last syn keyword smilSpecial contained fill meet slice scroll hidden syn region smilString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=smilSpecial syn region smilString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=smilSpecial syn match smilValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 syn region smilEndTag start=++ contains=smilTagN,smilTagError syn region smilTag start=+<[^/]+ end=+>+ contains=smilTagN,smilString,smilArg,smilValue,smilTagError,smilEvent,smilCssDefinition syn match smilTagN contained +<\s*[-a-zA-Z0-9]\++ms=s+1 contains=smilTagName,smilSpecialTagName syn match smilTagN contained +]<"ms=s+1 syn keyword smilTagName contained smil head body anchor a switch region layout meta syn match smilTagName contained "root-layout" syn keyword smilTagName contained par seq syn keyword smilTagName contained animation video img audio ref text textstream syn match smilTagName contained "\<\(head\|body\)\>" syn keyword smilArg contained dur begin end href target id coords show title abstract author copyright alt syn keyword smilArg contained left top width height fit src name content fill longdesc repeat type syn match smilArg contained "z-index" syn match smilArg contained " end-sync" syn match smilArg contained " region" syn match smilArg contained "background-color" syn match smilArg contained "system-bitrate" syn match smilArg contained "system-captions" syn match smilArg contained "system-overdub-or-caption" syn match smilArg contained "system-language" syn match smilArg contained "system-required" syn match smilArg contained "system-screen-depth" syn match smilArg contained "system-screen-size" syn match smilArg contained "clip-begin" syn match smilArg contained "clip-end" syn match smilArg contained "skip-content" syn keyword smilTagName contained animate set move syn keyword smilArg contained calcMode from to by additive values origin path syn keyword smilArg contained accumulate hold attribute syn match smilArg contained "xml:link" syn keyword smilSpecial contained discrete linear spline parent layout syn keyword smilSpecial contained top left simple syn keyword smilTagName contained area syn keyword smilArg contained actuate behavior inline sourceVolume syn keyword smilArg contained destinationVolume destinationPlaystate tabindex syn keyword smilArg contained class style lang dir onclick ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onkeypress onkeydown onkeyup shape nohref accesskey onfocus onblur syn keyword smilSpecial contained play pause stop rect circ poly child par seq syn keyword smilTagName contained rtpmap syn keyword smilArg contained port transport encoding payload clipBegin clipEnd syn match smilArg contained "fmt-list" syn keyword smilTagName contained excl syn keyword smilArg contained beginEvent endEvent eventRestart endSync repeatCount repeatDur syn keyword smilArg contained syncBehavior syncTolerance syn keyword smilSpecial contained canSlip locked syn match smilSpecialChar "&[^;]*;" if exists("smil_wrong_comments") syn region smilComment start=++ else syn region smilComment start=++ contains=smilCommentPart,smilCommentError syn match smilCommentError contained "[^>+ hi def link smilTag Function hi def link smilEndTag Identifier hi def link smilArg Type hi def link smilTagName smilStatement hi def link smilSpecialTagName Exception hi def link smilValue Value hi def link smilSpecialChar Special hi def link smilSpecial Special hi def link smilSpecialChar Special hi def link smilString String hi def link smilStatement Statement hi def link smilComment Comment hi def link smilCommentPart Comment hi def link smilPreProc PreProc hi def link smilValue String hi def link smilCommentError smilError hi def link smilTagError smilError hi def link smilError Error let b:current_syntax = "smil" if main_syntax == 'smil' unlet main_syntax endif let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn match smithComment ";.*$" syn match smithNumber "\<[+-]*[0-9]\d*\>" syn match smithRegister "R[\[]*[0-9]*[\]]*" syn match smithKeyword "COR\|MOV\|MUL\|NOT\|STOP\|SUB\|NOP\|BLA\|REP" syn region smithString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn case match hi def link smithRegister Identifier hi def link smithKeyword Keyword hi def link smithComment Comment hi def link smithString String hi def link smithNumber Number let b:current_syntax = "smith" if exists("b:current_syntax") finish endif syn case match syn match smlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ syn match smlKeyChar "|" syn match smlBraceErr "}" syn match smlBrackErr "\]" syn match smlParenErr ")" syn match smlCommentErr "\*)" syn match smlThenErr "\" if exists("sml_noend_error") syn match smlKeyword "\" else syn match smlEndErr "\" endif syn cluster smlAllErrs contains=smlBraceErr,smlBrackErr,smlParenErr,smlCommentErr,smlEndErr,smlThenErr syn cluster smlAENoParen contains=smlBraceErr,smlBrackErr,smlCommentErr,smlEndErr,smlThenErr syn cluster smlContained contains=smlTodo,smlPreDef,smlModParam,smlModParam1,smlPreMPRestr,smlMPRestr,smlMPRestr1,smlMPRestr2,smlMPRestr3,smlModRHS,smlFuncWith,smlFuncStruct,smlModTypeRestr,smlModTRWith,smlWith,smlWithRest,smlModType,smlFullMod syn region smlEncl transparent matchgroup=smlKeyword start="(" matchgroup=smlKeyword end=")" contains=ALLBUT,@smlContained,smlParenErr syn region smlEncl transparent matchgroup=smlKeyword start="{" matchgroup=smlKeyword end="}" contains=ALLBUT,@smlContained,smlBraceErr syn region smlEncl transparent matchgroup=smlKeyword start="\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo syn keyword smlTodo contained TODO FIXME XXX syn region smlEnd matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr syn region smlEnd matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr syn region smlNone matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr syn region smlEnd matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlEndErr syn region smlNone matchgroup=smlKeyword start="\" matchgroup=smlKeyword end="\" contains=ALLBUT,@smlContained,smlThenErr syn region smlStruct matchgroup=smlModule start="\" matchgroup=smlModule end="\" contains=ALLBUT,@smlContained,smlEndErr syn region smlSig matchgroup=smlModule start="\" matchgroup=smlModule end="\" contains=ALLBUT,@smlContained,smlEndErr,smlModule syn region smlModSpec matchgroup=smlKeyword start="\" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr syn region smlNone matchgroup=smlKeyword start="\" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef syn region smlPreDef start="."me=e-1 matchgroup=smlKeyword end="\l\|="me=e-1 contained contains=@smlAllErrs,smlComment,smlModParam,smlModTypeRestr,smlModTRWith nextgroup=smlModPreRHS syn region smlModParam start="([^*]" end=")" contained contains=@smlAENoParen,smlModParam1 syn match smlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlPreMPRestr syn region smlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@smlAllErrs,smlComment,smlMPRestr,smlModTypeRestr syn region smlMPRestr start=":" end="."me=e-1 contained contains=@smlComment skipwhite skipempty nextgroup=smlMPRestr1,smlMPRestr2,smlMPRestr3 syn region smlMPRestr1 matchgroup=smlModule start="\ssig\s\=" matchgroup=smlModule end="\" contained contains=ALLBUT,@smlContained,smlEndErr,smlModule syn region smlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=smlKeyword end="->" contained contains=@smlAllErrs,smlComment,smlModParam skipwhite skipempty nextgroup=smlFuncWith syn match smlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained syn match smlModPreRHS "=" contained skipwhite skipempty nextgroup=smlModParam,smlFullMod syn region smlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=smlComment skipwhite skipempty nextgroup=smlModParam,smlFullMod syn match smlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=smlFuncWith syn region smlFuncWith start="([^*]"me=e-1 end=")" contained contains=smlComment,smlWith,smlFuncStruct syn region smlFuncStruct matchgroup=smlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=smlModule end="\" contains=ALLBUT,@smlContained,smlEndErr syn match smlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained syn region smlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@smlAENoParen,smlWith syn match smlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlWithRest syn region smlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@smlContained syn region smlKeyword start="\" matchgroup=smlModule end="\<\w\(\w\|'\)*\>" contains=smlComment skipwhite skipempty nextgroup=smlMTDef syn match smlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s syn keyword smlKeyword and andalso case syn keyword smlKeyword datatype else eqtype syn keyword smlKeyword exception fn fun handle syn keyword smlKeyword in infix infixl infixr syn keyword smlKeyword match nonfix of orelse syn keyword smlKeyword raise handle type syn keyword smlKeyword val where while with withtype syn keyword smlType bool char exn int list option syn keyword smlType real string unit syn keyword smlOperator div mod not or quot rem syn keyword smlBoolean true false syn match smlConstructor "(\s*)" syn match smlConstructor "\[\s*\]" syn match smlConstructor "#\[\s*\]" syn match smlConstructor "\u\(\w\|'\)*\>" syn match smlModPath "\u\(\w\|'\)*\."he=e-1 syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+ syn match smlCharErr +#"\\\d\d"\|#"\\\d"+ syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match smlFunDef "=>" syn match smlRefAssign ":=" syn match smlTopStop ";;" syn match smlOperator "\^" syn match smlOperator "::" syn match smlAnyVar "\<_\>" syn match smlKeyChar "!" syn match smlKeyChar ";" syn match smlKeyChar "\*" syn match smlKeyChar "=" syn match smlNumber "\<-\=\d\+\>" syn match smlNumber "\<-\=0[x|X]\x\+\>" syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>" syn sync minlines=20 syn sync maxlines=500 syn sync match smlEndSync grouphere smlEnd "\" syn sync match smlEndSync groupthere smlEnd "\" syn sync match smlStructSync grouphere smlStruct "\" syn sync match smlStructSync groupthere smlStruct "\" syn sync match smlSigSync grouphere smlSig "\" syn sync match smlSigSync groupthere smlSig "\" hi def link smlBraceErr Error hi def link smlBrackErr Error hi def link smlParenErr Error hi def link smlCommentErr Error hi def link smlEndErr Error hi def link smlThenErr Error hi def link smlCharErr Error hi def link smlComment Comment hi def link smlModPath Include hi def link smlModule Include hi def link smlModParam1 Include hi def link smlModType Include hi def link smlMPRestr3 Include hi def link smlFullMod Include hi def link smlModTypeRestr Include hi def link smlWith Include hi def link smlMTDef Include hi def link smlConstructor Constant hi def link smlModPreRHS Keyword hi def link smlMPRestr2 Keyword hi def link smlKeyword Keyword hi def link smlFunDef Keyword hi def link smlRefAssign Keyword hi def link smlKeyChar Keyword hi def link smlAnyVar Keyword hi def link smlTopStop Keyword hi def link smlOperator Keyword hi def link smlBoolean Boolean hi def link smlCharacter Character hi def link smlNumber Number hi def link smlReal Float hi def link smlString String hi def link smlType Type hi def link smlTodo Todo hi def link smlEncl Keyword let b:current_syntax = "sml" if exists("b:current_syntax") finish endif syn match snnsnetTitle "no\." syn match snnsnetTitle "type name" syn match snnsnetTitle "unit name" syn match snnsnetTitle "act\( func\)\=" syn match snnsnetTitle "out func" syn match snnsnetTitle "site\( name\)\=" syn match snnsnetTitle "site function" syn match snnsnetTitle "source:weight" syn match snnsnetTitle "unitNo\." syn match snnsnetTitle "delta x" syn match snnsnetTitle "delta y" syn keyword snnsnetTitle typeName unitName bias st position subnet layer sites name target z LLN LUN Toff Soff Ctype syn match snnsnetType "SNNS network definition file [Vv]\d.\d.*" contains=snnsnetNumbers syn match snnsnetType "generated at.*" contains=snnsnetNumbers syn match snnsnetType "network name\s*:" syn match snnsnetType "source files\s*:" syn match snnsnetType "no\. of units\s*:.*" contains=snnsnetNumbers syn match snnsnetType "no\. of connections\s*:.*" contains=snnsnetNumbers syn match snnsnetType "no\. of unit types\s*:.*" contains=snnsnetNumbers syn match snnsnetType "no\. of site types\s*:.*" contains=snnsnetNumbers syn match snnsnetType "learning function\s*:" syn match snnsnetType "pruning function\s*:" syn match snnsnetType "subordinate learning function\s*:" syn match snnsnetType "update function\s*:" syn match snnsnetSection "unit definition section" syn match snnsnetSection "unit default section" syn match snnsnetSection "site definition section" syn match snnsnetSection "type definition section" syn match snnsnetSection "connection definition section" syn match snnsnetSection "layer definition section" syn match snnsnetSection "subnet definition section" syn match snnsnetSection "3D translation section" syn match snnsnetSection "time delay section" syn match snnsnetNumbers "\d" contained syn match snnsnetComment "#.*$" contains=snnsnetTodo syn keyword snnsnetTodo TODO XXX FIXME contained hi def link snnsnetType Type hi def link snnsnetComment Comment hi def link snnsnetNumbers Number hi def link snnsnetSection Statement hi def link snnsnetTitle Label hi def link snnsnetTodo Todo let b:current_syntax = "snnsnet" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match snnspatError ".*" syn match snnspatAccepted "\([-+]\=\(\d\+\.\|\.\)\=\d\+\([Ee][-+]\=\d\+\)\=\)" syn match snnspatAccepted "\s" syn match snnspatBrac "\[\s*\d\+\(\s\|\d\)*\]" contains=snnspatNumbers syn match snnspatNoHeader "No\. of patterns\s*:\s*" contained syn match snnspatNoHeader "No\. of input units\s*:\s*" contained syn match snnspatNoHeader "No\. of output units\s*:\s*" contained syn match snnspatNoHeader "No\. of variable input dimensions\s*:\s*" contained syn match snnspatNoHeader "No\. of variable output dimensions\s*:\s*" contained syn match snnspatNoHeader "Maximum input dimensions\s*:\s*" contained syn match snnspatNoHeader "Maximum output dimensions\s*:\s*" contained syn match snnspatGen "generated at.*" contained contains=snnspatNumbers syn match snnspatGen "SNNS pattern definition file [Vv]\d\.\d" contained contains=snnspatNumbers syn region snnspatHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnspatNoHeader,snnspatNumbers,snnspatGen,snnspatBrac syn match snnspatNumbers "\d" contained syn match snnspatComment "#.*$" contains=snnspatTodo syn keyword snnspatTodo TODO XXX FIXME contained hi def link snnspatGen Statement hi def link snnspatHeader Error hi def link snnspatNoHeader Define hi def link snnspatNumbers Number hi def link snnspatComment Comment hi def link snnspatError Error hi def link snnspatTodo Todo hi def link snnspatAccepted NONE hi def link snnspatBrac NONE let b:current_syntax = "snnspat" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn match snnsresNoHeader "No\. of patterns\s*:\s*" contained syn match snnsresNoHeader "No\. of input units\s*:\s*" contained syn match snnsresNoHeader "No\. of output units\s*:\s*" contained syn match snnsresNoHeader "No\. of variable input dimensions\s*:\s*" contained syn match snnsresNoHeader "No\. of variable output dimensions\s*:\s*" contained syn match snnsresNoHeader "Maximum input dimensions\s*:\s*" contained syn match snnsresNoHeader "Maximum output dimensions\s*:\s*" contained syn match snnsresNoHeader "startpattern\s*:\s*" contained syn match snnsresNoHeader "endpattern\s*:\s*" contained syn match snnsresNoHeader "input patterns included" contained syn match snnsresNoHeader "teaching output included" contained syn match snnsresGen "generated at.*" contained contains=snnsresNumbers syn match snnsresGen "SNNS result file [Vv]\d\.\d" contained contains=snnsresNumbers syn region snnsresHeader start="^SNNS" end="^\s*[-+\.]\=[0-9#]"me=e-2 contains=snnsresNoHeader,snnsresNumbers,snnsresGen syn match snnsresNumbers "\d" contained syn match snnsresComment "#.*$" contains=snnsresTodo syn keyword snnsresTodo TODO XXX FIXME contained hi def link snnsresGen Statement hi def link snnsresHeader Statement hi def link snnsresNoHeader Define hi def link snnsresNumbers Number hi def link snnsresComment Comment hi def link snnsresTodo Todo let b:current_syntax = "snnsres" if exists("b:current_syntax") finish endif syntax case ignore syn keyword snobol4Keyword any apply arb arbno arg array syn keyword snobol4Keyword break syn keyword snobol4Keyword char clear code collect convert copy syn keyword snobol4Keyword data datatype date define detach differ dump dupl syn keyword snobol4Keyword endfile eq eval syn keyword snobol4Keyword field syn keyword snobol4Keyword ge gt ident syn keyword snobol4Keyword input integer item syn keyword snobol4Keyword le len lgt local lpad lt syn keyword snobol4Keyword ne notany syn keyword snobol4Keyword opsyn output syn keyword snobol4Keyword pos prototype syn keyword snobol4Keyword remdr replace rpad rpos rtab rewind syn keyword snobol4Keyword size span stoptr syn keyword snobol4Keyword tab table time trace trim terminal syn keyword snobol4Keyword unload syn keyword snobol4Keyword value syn keyword snobol4ExtKeyword breakx syn keyword snobol4ExtKeyword char chop syn keyword snobol4ExtKeyword date delete syn keyword snobol4ExtKeyword exp syn keyword snobol4ExtKeyword freeze function syn keyword snobol4ExtKeyword host syn keyword snobol4ExtKeyword io_findunit syn keyword snobol4ExtKeyword label lpad leq lge lle llt lne log syn keyword snobol4ExtKeyword ord syn keyword snobol4ExtKeyword reverse rpad rsort rename syn keyword snobol4ExtKeyword serv_listen sset set sort sqrt substr syn keyword snobol4ExtKeyword thaw syn keyword snobol4ExtKeyword vdiffer syn region snobol4String matchgroup=Quote start=+"+ end=+"+ syn region snobol4String matchgroup=Quote start=+'+ end=+'+ syn match snobol4BogusStatement "^-[^ ][^ ]*" syn match snobol4Statement "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)" syn match snobol4Constant /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1 syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError syn match snobol4Number "\<\d*\(\.\d\d*\)*\>" syn match snobol4BogusSysVar "&\w\{1,}" syn match snobol4SysVar "&\<\(abort\|alphabet\|anchor\|arb\|bal\|case\|code\|digits\|dump\|errlimit\|errtext\|errtype\|fail\|fence\|fnclevel\|ftrace\|fullscan\|input\|lastno\|lcase\|maxlngth\|output\|parm\|rem\|rtntype\|stcount\|stfcount\|stlimit\|stno\|succeed\|trace\|trim\|ucase\)\>" syn match snobol4ExtSysVar "&\(gtrace\|line\|file\|lastline\|lastfile\)" syn match snobol4Label "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*" syn match snobol4Comment "\(^\|;\)\([\*\|!;#].*$\)" syn cluster snobol4ParenGroup contains=snobol4ParenError syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket syn match snobol4ParenError display "[\])]" syn match snobol4ErrInParen display contained "[\]{}]\|<%\|%>" syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>" hi def link snobol4Constant Constant hi def link snobol4Label Label hi def link snobol4Goto Repeat hi def link snobol4Conditional Conditional hi def link snobol4Repeat Repeat hi def link snobol4Number Number hi def link snobol4Error Error hi def link snobol4Statement PreProc hi def link snobol4BogusStatement snobol4Error hi def link snobol4String String hi def link snobol4Comment Comment hi def link snobol4Special Special hi def link snobol4Todo Todo hi def link snobol4Keyword Keyword hi def link snobol4Function Function hi def link snobol4MathsOperator Operator hi def link snobol4ParenError snobol4Error hi def link snobol4ErrInParen snobol4Error hi def link snobol4ErrInBracket snobol4Error hi def link snobol4SysVar Keyword hi def link snobol4BogusSysVar snobol4Error if exists("snobol4_strict_mode") hi def link snobol4ExtSysVar WarningMsg hi def link snobol4ExtKeyword WarningMsg else hi def link snobol4ExtSysVar snobol4SysVar hi def link snobol4ExtKeyword snobol4Keyword endif let b:current_syntax = "snobol4" if exists("b:current_syntax") finish endif syn sync minlines=1000 syn match specSpecialChar contained '[][!$()\\|>^;:{}]' syn match specColon contained ':' syn match specPercent contained '%' syn match specVariables contained '\$\h\w*' contains=specSpecialVariablesNames,specSpecialChar syn match specVariables contained '\${\w*}' contains=specSpecialVariablesNames,specSpecialChar syn match specMacroIdentifier contained '%\h\w*' contains=specMacroNameLocal,specMacroNameOther,specPercent syn match specMacroIdentifier contained '%{\w*}' contains=specMacroNameLocal,specMacroNameOther,specPercent,specSpecialChar syn match specSpecialVariables contained '\$[0-9]\|\${[0-9]}' syn match specCommandOpts contained '\s\(-\w\+\|--\w[a-zA-Z_-]\+\)'ms=s+1 syn match specComment '^\s*#.*$' syn case match syn match specNoNumberHilite 'X11\|X11R6\|[a-zA-Z]*\.\d\|[a-zA-Z][-/]\d' syn match specManpageFile '[a-zA-Z]\.1' syn keyword specLicense contained GPL LGPL BSD MIT GNU syn keyword specWeekday contained Mon Tue Wed Thu Fri Sat Sun syn keyword specMonth contained Jan Feb Mar Apr Jun Jul Aug Sep Oct Nov Dec syn keyword specMonth contained January February March April May June July August September October November December syn match specNumber '\(^-\=\|[ \t]-\=\|-\)[0-9.-]*[0-9]' syn match specEmail contained "<\=\<[A-Za-z0-9_.-]\+@\([A-Za-z0-9_-]\+\.\)\+[A-Za-z]\+\>>\=" syn match specURL contained '\<\(\(https\{0,1}\|ftp\)://\|\(www[23]\{0,1}\.\|ftp\.\)\)[A-Za-z0-9._/~:,#-]\+\>' syn match specURLMacro contained '\<\(\(https\{0,1}\|ftp\)://\|\(www[23]\{0,1}\.\|ftp\.\)\)[A-Za-z0-9._/~:,#%{}-]\+\>' contains=specMacroIdentifier syn match specListedFilesPrefix contained '/\(usr\|local\|opt\|X11R6\|X11\)/'me=e-1 syn match specListedFilesBin contained '/s\=bin/'me=e-1 syn match specListedFilesLib contained '/\(lib\|include\)/'me=e-1 syn match specListedFilesDoc contained '/\(man\d*\|doc\|info\)\>' syn match specListedFilesEtc contained '/etc/'me=e-1 syn match specListedFilesShare contained '/share/'me=e-1 syn cluster specListedFiles contains=specListedFilesBin,specListedFilesLib,specListedFilesDoc,specListedFilesEtc,specListedFilesShare,specListedFilesPrefix,specVariables,specSpecialChar syn match specConfigure contained '\./configure' syn match specTarCommand contained '\' syn keyword specMacroNameLocal contained _arch _binary_payload _bindir _build _build_alias _build_cpu _builddir _build_os _buildshell _buildsubdir _build_vendor _bzip2bin _datadir _dbpath _dbpath_rebuild _defaultdocdir _docdir _excludedocs _exec_prefix _fixgroup _fixowner _fixperms _ftpport _ftpproxy _gpg_path _gzipbin _host _host_alias _host_cpu _host_os _host_vendor _httpport _httpproxy _includedir _infodir _install_langs _install_script_path _instchangelog _langpatt _lib _libdir _libexecdir _localstatedir _mandir _netsharedpath _oldincludedir _os _pgpbin _pgp_path _prefix _preScriptEnvironment _provides _rpmdir _rpmfilename _sbindir _sharedstatedir _signature _sourcedir _source_payload _specdir _srcrpmdir _sysconfdir _target _target_alias _target_cpu _target_os _target_platform _target_vendor _timecheck _tmppath _topdir _usr _usrsrc _var _vendor syn region specSectionMacroArea oneline matchgroup=specSectionMacro start='^%\(define\|global\|patch\d*\|setup\|autosetup\|autopatch\|configure\|GNUconfigure\|find_lang\|make_build\|makeinstall\|make_install\|include\)\>' end='$' contains=specCommandOpts,specMacroIdentifier syn region specSectionMacroBracketArea oneline matchgroup=specSectionMacro start='^%{\(configure\|GNUconfigure\|find_lang\|make_build\|makeinstall\|make_install\)}' end='$' contains=specCommandOpts,specMacroIdentifier syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier syn match specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>' syn match specDescriptionOpts contained '\s-[ln]\s*\a'ms=s+1,me=e-1 syn match specPackageOpts contained '\s-n\s*\w'ms=s+1,me=e-1 syn match specFilesOpts contained '\s-f\s*\w'ms=s+1,me=e-1 syn case ignore syn region specPreAmbleDeprecated oneline matchgroup=specError start='^\(Copyright\|Serial\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier syn region specPreAmble oneline matchgroup=specCommand start='^\(Prereq\|Summary\|Name\|Version\|Packager\|Requires\|Recommends\|Suggests\|Supplements\|Enhances\|Icon\|URL\|Source\d*\|Patch\d*\|Prefix\|Packager\|Group\|License\|Release\|BuildRoot\|Distribution\|Vendor\|Provides\|ExclusiveArch\|ExcludeArch\|ExclusiveOS\|Obsoletes\|BuildArch\|BuildArchitectures\|BuildRequires\|BuildConflicts\|BuildPreReq\|Conflicts\|AutoRequires\|AutoReq\|AutoReqProv\|AutoProv\|Epoch\)' end='$' contains=specEmail,specURL,specURLMacro,specLicense,specColon,specVariables,specSpecialChar,specMacroIdentifier syn region specDescriptionArea matchgroup=specSection start='^%description' end='^%'me=e-1 contains=specDescriptionOpts,specEmail,specURL,specNumber,specMacroIdentifier,specComment syn region specPackageArea matchgroup=specSection start='^%package' end='^%'me=e-1 contains=specPackageOpts,specPreAmble,specComment syn region specScriptArea matchgroup=specSection start='^%\(prep\|build\|install\|clean\|pre\|postun\|preun\|post\|posttrans\)\>' skip='^%{\|^%\(define\|patch\d*\|configure\|GNUconfigure\|setup\|autosetup\|autopatch\|find_lang\|make_build\|makeinstall\|make_install\)\>' end='^%'me=e-1 contains=specSpecialVariables,specVariables,@specCommands,specVariables,shDo,shFor,shCaseEsac,specNoNumberHilite,specCommandOpts,shComment,shIf,specSpecialChar,specMacroIdentifier,specSectionMacroArea,specSectionMacroBracketArea,shOperator,shQuote1,shQuote2 syn region specChangelogArea matchgroup=specSection start='^%changelog' end='^%'me=e-1 contains=specEmail,specURL,specWeekday,specMonth,specNumber,specComment,specLicense syn case match syn match shComment contained '#.*$' syn region shQuote1 contained matchgroup=shQuoteDelim start=+'+ skip=+\\'+ end=+'+ contains=specMacroIdentifier syn region shQuote2 contained matchgroup=shQuoteDelim start=+"+ skip=+\\"+ end=+"+ contains=specVariables,specMacroIdentifier syn match shOperator contained '[><|!&;]\|[!=]=' syn region shDo transparent matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shDoError,shCase,specPreAmble,@specListedFiles syn region specIf matchgroup=specBlock start="%ifosf\|%ifos\|%ifnos\|%ifarch\|%ifnarch\|%else" end='%endif' contains=ALLBUT, specIfError, shCase syn region shIf transparent matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shIfError,shCase,@specListedFiles syn region shFor matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shInError,shCase,@specListedFiles syn region shCaseEsac transparent matchgroup=specBlock start="\" matchgroup=NONE end="\"me=s-1 contains=ALLBUT,shFunction,shCaseError,@specListedFiles nextgroup=shCaseEsac syn region shCaseEsac matchgroup=specBlock start="\" end="\" contains=ALLBUT,shFunction,shCaseError,@specListedFilesBin syn region shCase matchgroup=specBlock contained start=")" end=";;" contains=ALLBUT,shFunction,shCaseError,shCase,@specListedFiles syn sync match shDoSync grouphere shDo "\" syn sync match shDoSync groupthere shDo "\" syn sync match shIfSync grouphere shIf "\" syn sync match shIfSync groupthere shIf "\" syn sync match specIfSync grouphere specIf "%ifarch\|%ifos\|%ifnos" syn sync match specIfSync groupthere specIf "%endIf" syn sync match shForSync grouphere shFor "\" syn sync match shForSync groupthere shFor "\" syn sync match shCaseEsacSync grouphere shCaseEsac "\" syn sync match shCaseEsacSync groupthere shCaseEsac "\" hi def link specSection Structure hi def link specSectionMacro Macro hi def link specWWWlink PreProc hi def link specOpts Operator if &background == "dark" hi def specGlobalMacro ctermfg=white else hi def link specGlobalMacro Identifier endif hi def link shComment Comment hi def link shIf Statement hi def link shOperator Special hi def link shQuote1 String hi def link shQuote2 String hi def link shQuoteDelim Statement hi def link specBlock Function hi def link specColon Special hi def link specCommand Statement hi def link specCommandOpts specOpts hi def link specCommandSpecial Special hi def link specComment Comment hi def link specConfigure specCommand hi def link specDate String hi def link specDescriptionOpts specOpts hi def link specEmail specWWWlink hi def link specError Error hi def link specFilesDirective specSectionMacro hi def link specFilesOpts specOpts hi def link specLicense String hi def link specMacroNameLocal specGlobalMacro hi def link specMacroNameOther specGlobalMacro hi def link specManpageFile NONE hi def link specMonth specDate hi def link specNoNumberHilite NONE hi def link specNumber Number hi def link specPackageOpts specOpts hi def link specPercent Special hi def link specSpecialChar Special hi def link specSpecialVariables specGlobalMacro hi def link specSpecialVariablesNames specGlobalMacro hi def link specTarCommand specCommand hi def link specURL specWWWlink hi def link specURLMacro specWWWlink hi def link specVariables Identifier hi def link specWeekday specDate hi def link specListedFilesBin Statement hi def link specListedFilesDoc Statement hi def link specListedFilesEtc Statement hi def link specListedFilesLib Statement hi def link specListedFilesPrefix Statement hi def link specListedFilesShare Statement let b:current_syntax = "spec" if exists("b:current_syntax") finish endif syn keyword specmanTodo contained TODO todo ToDo FIXME XXX syn keyword specmanStatement var instance on compute start event expect check that routine syn keyword specmanStatement specman is also first only with like syn keyword specmanStatement list of all radix hex dec bin ignore illegal syn keyword specmanStatement traceable untraceable syn keyword specmanStatement cover using count_only trace_only at_least transition item ranges syn keyword specmanStatement cross text call task within syn keyword specmanMethod initialize non_terminal testgroup delayed exit finish syn keyword specmanMethod out append print outf appendf syn keyword specmanMethod post_generate pre_generate setup_test finalize_test extract_test syn keyword specmanMethod init run copy as_a set_config dut_error add clear lock quit syn keyword specmanMethod lock unlock release swap quit to_string value stop_run syn keyword specmanMethod crc_8 crc_32 crc_32_flip get_config add0 all_indices and_all syn keyword specmanMethod apply average count delete exists first_index get_indices syn keyword specmanMethod has insert is_a_permutation is_empty key key_exists key_index syn keyword specmanMethod last last_index max max_index max_value min min_index syn keyword specmanMethod min_value or_all pop pop0 push push0 product resize reverse syn keyword specmanMethod sort split sum top top0 unique clear is_all_iterations syn keyword specmanMethod get_enclosing_unit hdl_path exec deep_compare deep_compare_physical syn keyword specmanMethod pack unpack warning error fatal syn match specmanMethod "size()" syn keyword specmanPacking packing low high syn keyword specmanType locker address syn keyword specmanType body code vec chars syn keyword specmanType integer real bool int long uint byte bits bit time string syn keyword specmanType byte_array external_pointer syn keyword specmanBoolean TRUE FALSE syn keyword specmanPreCondit #ifdef #ifndef #else syn keyword specmanConditional choose matches syn keyword specmanConditional if then else when try syn keyword specmanLabel case casex casez default syn keyword specmanLogical and or not xor syn keyword specmanRepeat until repeat while for from to step each do break continue syn keyword specmanRepeat before next sequence always -kind network syn keyword specmanRepeat index it me in new return result select syn keyword specmanTemporal cycle sample events forever syn keyword specmanTemporal wait change negedge rise fall delay sync sim true detach eventually emit syn keyword specmanConstant MAX_INT MIN_INT NULL UNDEF syn keyword specmanDefine define as computed type extend syn keyword specmanDefine verilog vhdl variable global sys syn keyword specmanStructure struct unit syn keyword specmanInclude import syn keyword specmanConstraint gen keep keeping soft before syn keyword specmanSpecial untyped symtab ECHO DOECHO syn keyword specmanFile files load module ntv source_ref script read write syn keyword specmanFSM initial idle others posedge clock cycles syn match specmanOperator "[&|~>"hs=s+2 end="^<'"he=e-2 syn match specmanHDL "'[`.a-zA-Z0-9_@\[\]]\+\>'" syn match specmanCompare "==" syn match specmanCompare "!===" syn match specmanCompare "===" syn match specmanCompare "!=" syn match specmanCompare ">=" syn match specmanCompare "<=" syn match specmanNumber "[0-9]:[0-9]" syn match specmanNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>" syn match specmanNumber "0[bB]\s*[0-1_xXzZ?]\+\>" syn match specmanNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>" syn match specmanNumber "0[oO]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match specmanNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>" syn match specmanNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match specmanNumber "0[xX]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match specmanNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" syn region specmanString start=+"+ end=+"+ syn sync lines=50 hi def link specmanConditional Conditional hi def link specmanConstraint Conditional hi def link specmanRepeat Repeat hi def link specmanString String hi def link specmanComment Comment hi def link specmanConstant Macro hi def link specmanNumber Number hi def link specmanCompare Operator hi def link specmanOperator Operator hi def link specmanLogical Operator hi def link specmanStatement Statement hi def link specmanHDL SpecialChar hi def link specmanMethod Function hi def link specmanInclude Include hi def link specmanStructure Structure hi def link specmanBoolean Boolean hi def link specmanFSM Label hi def link specmanSpecial Special hi def link specmanType Type hi def link specmanTemporal Type hi def link specmanFile Include hi def link specmanPreCondit Include hi def link specmanDefine Typedef hi def link specmanLabel Label hi def link specmanPacking keyword hi def link specmanTodo Todo hi def link specmanParenError Error hi def link specmanErrInParen Error hi def link specmanErrInBracket Error let b:current_syntax = "specman" if exists("b:current_syntax") finish endif syn case ignore syn keyword spiceTodo contained TODO syn match spiceComment "^ \=\*.*$" contains=@Spell syn match spiceComment "\$.*$" contains=@Spell syn match spiceNumber "\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" syn match spiceNumber "\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" syn match spiceNumber "\<[0-9]\+\(e[-+]\=[0-9]\+\)\=\(meg\=\|[afpnumkg]\)\=" syn match spiceWrapLineOperator "\\$" syn match spiceWrapLineOperator "^+" syn match spiceStatement "^ \=\.\I\+" syn region spiceParen transparent matchgroup=spiceOperator start="(" end=")" contains=ALLBUT,spiceParenError syn region spiceSinglequote matchgroup=spiceOperator start=+'+ end=+'+ syn match spiceParenError ")" syn sync minlines=50 hi def link spiceTodo Todo hi def link spiceWrapLineOperator spiceOperator hi def link spiceSinglequote spiceExpr hi def link spiceExpr Function hi def link spiceParenError Error hi def link spiceStatement Statement hi def link spiceNumber Number hi def link spiceComment Comment hi def link spiceOperator Operator let b:current_syntax = "spice" if exists("b:current_syntax") finish endif runtime! syntax/c.vim syn case match syn match splintStateAnnot contained "\(pre\|post\):\(only\|shared\|owned\|dependent\|observer\|exposed\|isnull\|notnull\)" syn keyword splintSpecialAnnot contained special syn keyword splintSpecTag contained uses sets defines allocated releases syn keyword splintModifies contained modifies syn keyword splintRequires contained requires ensures syn keyword splintGlobals contained globals syn keyword splintGlobitem contained internalState fileSystem syn keyword splintGlobannot contained undef killed syn keyword splintWarning contained warn syn keyword splintModitem contained internalState fileSystem nothing syn keyword splintReqitem contained MaxSet MaxRead result syn keyword splintIter contained iter yield syn keyword splintConst contained constant syn keyword splintAlt contained alt syn keyword splintType contained abstract concrete mutable immutable refcounted numabstract syn keyword splintGlobalType contained unchecked checkmod checked checkedstrict syn keyword splintMemMgm contained dependent keep killref only owned shared temp syn keyword splintAlias contained unique returned syn keyword splintExposure contained observer exposed syn keyword splintDefState contained out in partial reldef syn keyword splintGlobState contained undef killed syn keyword splintNullState contained null notnull relnull syn keyword splintNullPred contained truenull falsenull nullwhentrue falsewhennull syn keyword splintExit contained exits mayexit trueexit falseexit neverexit syn keyword splintExec contained noreturn maynotreturn noreturnwhentrue noreturnwhenfalse alwaysreturns syn keyword splintSef contained sef syn keyword splintDecl contained unused external syn keyword splintCase contained fallthrough syn keyword splintBreak contained innerbreak loopbreak switchbreak innercontinue syn keyword splintUnreach contained notreached syn keyword splintSpecFunc contained printflike scanflike messagelike syn keyword splintErrSupp contained i ignore end t syn match splintErrSupp contained "[it]\d\+\>" syn keyword splintTypeAcc contained access noaccess syn keyword splintMacro contained notfunction syn match splintSpecType contained "\(\|unsigned\|signed\)integraltype" syn keyword splintFlag contained abstract abstractcompare accessall accessczech accessczechoslovak syn keyword splintFlag contained accessfile accessmodule accessslovak aliasunique allblock syn keyword splintFlag contained allempty allglobs allimponly allmacros alwaysexits syn keyword splintFlag contained annotationerror ansi89limits assignexpose badflag bitwisesigned syn keyword splintFlag contained boolcompare boolfalse boolint boolops booltrue syn keyword splintFlag contained booltype bounds boundscompacterrormessages boundsread boundswrite syn keyword splintFlag contained branchstate bufferoverflow bufferoverflowhigh bugslimit casebreak syn keyword splintFlag contained caseinsensitivefilenames castexpose castfcnptr charindex charint syn keyword splintFlag contained charintliteral charunsignedchar checkedglobalias checkmodglobalias checkpost syn keyword splintFlag contained checkstrictglobalias checkstrictglobs codeimponly commentchar commenterror syn keyword splintFlag contained compdef compdestroy compmempass constmacros constprefix syn keyword splintFlag contained constprefixexclude constuse continuecomment controlnestdepth cppnames syn keyword splintFlag contained csvoverwrite czech czechconsts czechfcns czechmacros syn keyword splintFlag contained czechoslovak czechoslovakconsts czechoslovakfcns czechoslovakmacros czechoslovaktypes syn keyword splintFlag contained czechoslovakvars czechtypes czechvars debugfcnconstraint declundef syn keyword splintFlag contained deepbreak deparrays dependenttrans distinctexternalnames distinctinternalnames syn keyword splintFlag contained duplicatecases duplicatequals elseifcomplete emptyret enumindex syn keyword splintFlag contained enumint enummembers enummemuse enumprefix enumprefixexclude syn keyword splintFlag contained evalorder evalorderuncon exitarg exportany exportconst syn keyword splintFlag contained exportfcn exportheader exportheadervar exportiter exportlocal syn keyword splintFlag contained exportmacro exporttype exportvar exposetrans externalnamecaseinsensitive syn keyword splintFlag contained externalnamelen externalprefix externalprefixexclude fcnderef fcnmacros syn keyword splintFlag contained fcnpost fcnuse fielduse fileextensions filestaticprefix syn keyword splintFlag contained filestaticprefixexclude firstcase fixedformalarray floatdouble forblock syn keyword splintFlag contained forcehints forempty forloopexec formalarray formatcode syn keyword splintFlag contained formatconst formattype forwarddecl freshtrans fullinitblock syn keyword splintFlag contained globalias globalprefix globalprefixexclude globimponly globnoglobs syn keyword splintFlag contained globs globsimpmodsnothing globstate globuse gnuextensions syn keyword splintFlag contained grammar hasyield hints htmlfileformat ifblock syn keyword splintFlag contained ifempty ignorequals ignoresigns immediatetrans impabstract syn keyword splintFlag contained impcheckedglobs impcheckedspecglobs impcheckedstatics impcheckedstrictglobs impcheckedstrictspecglobs syn keyword splintFlag contained impcheckedstrictstatics impcheckmodglobs impcheckmodinternals impcheckmodspecglobs impcheckmodstatics syn keyword splintFlag contained impconj implementationoptional implictconstraint impouts imptype syn keyword splintFlag contained includenest incompletetype incondefs incondefslib indentspaces syn keyword splintFlag contained infloops infloopsuncon initallelements initsize internalglobs syn keyword splintFlag contained internalglobsnoglobs internalnamecaseinsensitive internalnamelen internalnamelookalike iso99limits syn keyword splintFlag contained isoreserved isoreservedinternal iterbalance iterloopexec iterprefix syn keyword splintFlag contained iterprefixexclude iteryield its4low its4moderate its4mostrisky syn keyword splintFlag contained its4risky its4veryrisky keep keeptrans kepttrans syn keyword splintFlag contained legacy libmacros likelyboundsread likelyboundswrite likelybool syn keyword splintFlag contained likelybounds limit linelen lintcomments localprefix syn keyword splintFlag contained localprefixexclude locindentspaces longint longintegral longsignedintegral syn keyword splintFlag contained longunsignedintegral longunsignedunsignedintegral loopexec looploopbreak looploopcontinue syn keyword splintFlag contained loopswitchbreak macroassign macroconstdecl macrodecl macroempty syn keyword splintFlag contained macrofcndecl macromatchname macroparams macroparens macroredef syn keyword splintFlag contained macroreturn macrostmt macrounrecog macrovarprefix macrovarprefixexclude syn keyword splintFlag contained maintype matchanyintegral matchfields mayaliasunique memchecks syn keyword splintFlag contained memimp memtrans misplacedsharequal misscase modfilesys syn keyword splintFlag contained modglobs modglobsnomods modglobsunchecked modinternalstrict modnomods syn keyword splintFlag contained modobserver modobserveruncon mods modsimpnoglobs modstrictglobsnomods syn keyword splintFlag contained moduncon modunconnomods modunspec multithreaded mustdefine syn keyword splintFlag contained mustfree mustfreefresh mustfreeonly mustmod mustnotalias syn keyword splintFlag contained mutrep namechecks needspec nestcomment nestedextern syn keyword splintFlag contained newdecl newreftrans nextlinemacros noaccess nocomments syn keyword splintFlag contained noeffect noeffectuncon noparams nopp noret syn keyword splintFlag contained null nullassign nullderef nullinit nullpass syn keyword splintFlag contained nullptrarith nullret nullstate nullterminated syn keyword splintFlag contained numabstract numabstractcast numabstractindex numabstractlit numabstractprint syn keyword splintFlag contained numenummembers numliteral numstructfields observertrans obviousloopexec syn keyword splintFlag contained oldstyle onlytrans onlyunqglobaltrans orconstraint overload syn keyword splintFlag contained ownedtrans paramimptemp paramuse parenfileformat partial syn keyword splintFlag contained passunknown portability predassign predbool predboolint syn keyword splintFlag contained predboolothers predboolptr preproc protoparammatch protoparamname syn keyword splintFlag contained protoparamprefix protoparamprefixexclude ptrarith ptrcompare ptrnegate syn keyword splintFlag contained quiet readonlystrings readonlytrans realcompare redecl syn keyword splintFlag contained redef redundantconstraints redundantsharequal refcounttrans relaxquals syn keyword splintFlag contained relaxtypes repeatunrecog repexpose retalias retexpose syn keyword splintFlag contained retimponly retval retvalbool retvalint retvalother syn keyword splintFlag contained sefparams sefuncon shadow sharedtrans shiftimplementation syn keyword splintFlag contained shiftnegative shortint showallconjs showcolumn showconstraintlocation syn keyword splintFlag contained showconstraintparens showdeephistory showfunc showloadloc showscan syn keyword splintFlag contained showsourceloc showsummary sizeofformalarray sizeoftype skipisoheaders syn keyword splintFlag contained skipposixheaders slashslashcomment slovak slovakconsts slovakfcns syn keyword splintFlag contained slovakmacros slovaktypes slovakvars specglobimponly specimponly syn keyword splintFlag contained specmacros specretimponly specstructimponly specundecl specundef syn keyword splintFlag contained stackref statemerge statetransfer staticinittrans statictrans syn keyword splintFlag contained strictbranchstate strictdestroy strictops strictusereleased stringliterallen syn keyword splintFlag contained stringliteralnoroom stringliteralnoroomfinalnull stringliteralsmaller stringliteraltoolong structimponly syn keyword splintFlag contained superuser switchloopbreak switchswitchbreak syntax sysdirerrors syn keyword splintFlag contained sysdirexpandmacros sysunrecog tagprefix tagprefixexclude temptrans syn keyword splintFlag contained tmpcomments toctou topuse trytorecover type syn keyword splintFlag contained typeprefix typeprefixexclude typeuse uncheckedglobalias uncheckedmacroprefix syn keyword splintFlag contained uncheckedmacroprefixexclude uniondef unixstandard unqualifiedinittrans unqualifiedtrans syn keyword splintFlag contained unreachable unrecog unrecogcomments unrecogdirective unrecogflagcomments syn keyword splintFlag contained unsignedcompare unusedspecial usedef usereleased usevarargs syn keyword splintFlag contained varuse voidabstract warnflags warnlintcomments warnmissingglobs syn keyword splintFlag contained warnmissingglobsnoglobs warnposixheaders warnrc warnsysfiles warnunixlib syn keyword splintFlag contained warnuse whileblock whileempty whileloopexec zerobool syn keyword splintFlag contained zeroptr syn keyword splintGlobalFlag contained csv dump errorstream errorstreamstderr errorstreamstdout syn keyword splintGlobalFlag contained expect f help i isolib syn keyword splintGlobalFlag contained larchpath lclexpect lclimportdir lcs lh syn keyword splintGlobalFlag contained load messagestream messagestreamstderr messagestreamstdout mts syn keyword splintGlobalFlag contained neverinclude nof nolib posixlib posixstrictlib syn keyword splintGlobalFlag contained showalluses singleinclude skipsysheaders stats streamoverwrite syn keyword splintGlobalFlag contained strictlib supcounts sysdirs timedist tmpdir syn keyword splintGlobalFlag contained unixlib unixstrictlib warningstream warningstreamstderr warningstreamstdout syn keyword splintGlobalFlag contained whichlib syn match splintFlagExpr contained "[\+\-\=]" nextgroup=splintFlag,splintGlobalFlag syn match splintAnnError "@\*/" syn cluster cCommentGroup add=splintAnnError syn match splintAnnError2 "[^@]\*/"hs=s+1 contained syn region splintAnnotation start="/\*@" end="@\*/" contains=@splintAnnotElem,cType keepend syn match splintShortAnn "/\*@\*/" syn cluster splintAnnotElem contains=splintStateAnnot,splintSpecialAnnot,splintSpecTag,splintModifies,splintRequires,splintGlobals,splintGlobitem,splintGlobannot,splintWarning,splintModitem,splintIter,splintConst,splintAlt,splintType,splintGlobalType,splintMemMgm,splintAlias,splintExposure,splintDefState,splintGlobState,splintNullState,splintNullPred,splintExit,splintExec,splintSef,splintDecl,splintCase,splintBreak,splintUnreach,splintSpecFunc,splintErrSupp,splintTypeAcc,splintMacro,splintSpecType,splintAnnError2,splintFlagExpr syn cluster splintAllStuff contains=@splintAnnotElem,splintFlag,splintGlobalFlag syn cluster cParenGroup add=@splintAllStuff syn cluster cPreProcGroup add=@splintAllStuff syn cluster cMultiGroup add=@splintAllStuff hi def link splintShortAnn splintAnnotation hi def link splintAnnotation Comment hi def link splintAnnError splintError hi def link splintAnnError2 splintError hi def link splintFlag SpecialComment hi def link splintGlobalFlag splintError hi def link splintSpecialAnnot splintAnnKey hi def link splintStateAnnot splintAnnKey hi def link splintSpecTag splintAnnKey hi def link splintModifies splintAnnKey hi def link splintRequires splintAnnKey hi def link splintGlobals splintAnnKey hi def link splintGlobitem Constant hi def link splintGlobannot splintAnnKey hi def link splintWarning splintAnnKey hi def link splintModitem Constant hi def link splintIter splintAnnKey hi def link splintConst splintAnnKey hi def link splintAlt splintAnnKey hi def link splintType splintAnnKey hi def link splintGlobalType splintAnnKey hi def link splintMemMgm splintAnnKey hi def link splintAlias splintAnnKey hi def link splintExposure splintAnnKey hi def link splintDefState splintAnnKey hi def link splintGlobState splintAnnKey hi def link splintNullState splintAnnKey hi def link splintNullPred splintAnnKey hi def link splintExit splintAnnKey hi def link splintExec splintAnnKey hi def link splintSef splintAnnKey hi def link splintDecl splintAnnKey hi def link splintCase splintAnnKey hi def link splintBreak splintAnnKey hi def link splintUnreach splintAnnKey hi def link splintSpecFunc splintAnnKey hi def link splintErrSupp splintAnnKey hi def link splintTypeAcc splintAnnKey hi def link splintMacro splintAnnKey hi def link splintSpecType splintAnnKey hi def link splintAnnKey Type hi def link splintError Error let b:current_syntax = "splint" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim if !exists("hightlight_types") let highlight_types = 1 endif if !exists("oneline_comments") let oneline_comments = 2 endif syn case ignore syn region spupCdi matchgroup=spupSection start="^CDI" end="^\*\*\*\*" contains=spupCdiSubs,@spupOrdinary syn region spupConditions matchgroup=spupSection start="^CONDITIONS" end="^\*\*\*\*" contains=spupConditionsSubs,@spupOrdinary,spupConditional,spupOperator,spupCode syn region spupDeclare matchgroup=spupSection start="^DECLARE" end="^\*\*\*\*" contains=spupDeclareSubs,@spupOrdinary,spupTypes,spupCode syn region spupEstimation matchgroup=spupSection start="^ESTIMATION" end="^\*\*\*\*" contains=spupEstimationSubs,@spupOrdinary syn region spupExternal matchgroup=spupSection start="^EXTERNAL" end="^\*\*\*\*" contains=spupExternalSubs,@spupOrdinary syn region spupFlowsheet matchgroup=spupSection start="^FLOWSHEET" end="^\*\*\*\*" contains=spupFlowsheetSubs,@spupOrdinary,spupStreams,@spupTextproc syn region spupFunction matchgroup=spupSection start="^FUNCTION" end="^\*\*\*\*" contains=spupFunctionSubs,@spupOrdinary,spupHelp,spupCode,spupTypes syn region spupGlobal matchgroup=spupSection start="^GLOBAL" end="^\*\*\*\*" contains=spupGlobalSubs,@spupOrdinary syn region spupHomotopy matchgroup=spupSection start="^HOMOTOPY" end="^\*\*\*\*" contains=spupHomotopySubs,@spupOrdinary syn region spupMacro matchgroup=spupSection start="^MACRO" end="^\*\*\*\*" contains=spupMacroSubs,@spupOrdinary,@spupTextproc,spupTypes,spupStreams,spupOperator syn region spupModel matchgroup=spupSection start="^MODEL" end="^\*\*\*\*" contains=spupModelSubs,@spupOrdinary,spupConditional,spupOperator,spupTypes,spupStreams,@spupTextproc,spupHelp syn region spupOperation matchgroup=spupSection start="^OPERATION" end="^\*\*\*\*" contains=spupOperationSubs,@spupOrdinary,@spupTextproc syn region spupOptions matchgroup=spupSection start="^OPTIONS" end="^\*\*\*\*" contains=spupOptionsSubs,@spupOrdinary syn region spupProcedure matchgroup=spupSection start="^PROCEDURE" end="^\*\*\*\*" contains=spupProcedureSubs,@spupOrdinary,spupHelp,spupCode,spupTypes syn region spupProfiles matchgroup=spupSection start="^PROFILES" end="^\*\*\*\*" contains=@spupOrdinary,@spupTextproc syn region spupReport matchgroup=spupSection start="^REPORT" end="^\*\*\*\*" contains=spupReportSubs,@spupOrdinary,spupHelp,@spupTextproc syn region spupTitle matchgroup=spupSection start="^TITLE" end="^\*\*\*\*" contains=spupTitleSubs,spupComment,spupConstant,spupError syn region spupUnit matchgroup=spupSection start="^UNIT" end="^\*\*\*\*" contains=spupUnitSubs,@spupOrdinary syn keyword spupCdiSubs INPUT FREE OUTPUT LINEARTIME MINNONZERO CALCULATE FILES SCALING contained syn keyword spupDeclareSubs TYPE STREAM contained syn keyword spupEstimationSubs ESTIMATE SSEXP DYNEXP RESULT contained syn keyword spupExternalSubs TRANSMIT RECEIVE contained syn keyword spupFlowsheetSubs STREAM contained syn keyword spupFunctionSubs INPUT OUTPUT contained syn keyword spupGlobalSubs VARIABLES MAXIMIZE MINIMIZE CONSTRAINT contained syn keyword spupHomotopySubs VARY OPTIONS contained syn keyword spupMacroSubs MODEL FLOWSHEET contained syn keyword spupModelSubs CATEGORY SET TYPE STREAM EQUATION PROCEDURE contained syn keyword spupOperationSubs SET PRESET INITIAL SSTATE FREE contained syn keyword spupOptionsSubs ROUTINES TRANSLATE EXECUTION contained syn keyword spupProcedureSubs INPUT OUTPUT SPACE PRECALL POSTCALL DERIVATIVE STREAM contained syn keyword spupReportSubs SET INITIAL FIELDS FIELDMARK DISPLAY WITHIN contained syn keyword spupUnitSubs ROUTINES SET contained if !exists( "strict_subsections" ) syn keyword spupConditionsSubs STOP PRINT contained syn keyword spupDeclareSubs UNIT SET COMPONENTS THERMO OPTIONS contained syn keyword spupEstimationSubs VARY MEASURE INITIAL contained syn keyword spupFlowsheetSubs TYPE FEED PRODUCT INPUT OUTPUT CONNECTION OF IS contained syn keyword spupMacroSubs CONNECTION STREAM SET INPUT OUTPUT OF IS FEED PRODUCT TYPE contained syn keyword spupModelSubs AS ARRAY OF INPUT OUTPUT CONNECTION contained syn keyword spupOperationSubs WITHIN contained syn keyword spupReportSubs LEFT RIGHT CENTER CENTRE UOM TIME DATE VERSION RELDATE contained syn keyword spupUnitSubs IS A contained endif if exists( "highlight_types" ) syn keyword spupTypes act_coeff_liq area coefficient concentration contained syn keyword spupTypes control_signal cond_liq cond_vap cp_mass_liq contained syn keyword spupTypes cp_mol_liq cp_mol_vap cv_mol_liq cv_mol_vap contained syn keyword spupTypes diffus_liq diffus_vap delta_p dens_mass contained syn keyword spupTypes dens_mass_sol dens_mass_liq dens_mass_vap dens_mol contained syn keyword spupTypes dens_mol_sol dens_mol_liq dens_mol_vap enthflow contained syn keyword spupTypes enth_mass enth_mass_liq enth_mass_vap enth_mol contained syn keyword spupTypes enth_mol_sol enth_mol_liq enth_mol_vap entr_mol contained syn keyword spupTypes entr_mol_sol entr_mol_liq entr_mol_vap fraction contained syn keyword spupTypes flow_mass flow_mass_liq flow_mass_vap flow_mol contained syn keyword spupTypes flow_mol_vap flow_mol_liq flow_vol flow_vol_vap contained syn keyword spupTypes flow_vol_liq fuga_vap fuga_liq fuga_sol contained syn keyword spupTypes gibb_mol_sol heat_react heat_trans_coeff contained syn keyword spupTypes holdup_heat holdup_heat_liq holdup_heat_vap contained syn keyword spupTypes holdup_mass holdup_mass_liq holdup_mass_vap contained syn keyword spupTypes holdup_mol holdup_mol_liq holdup_mol_vap k_value contained syn keyword spupTypes length length_delta length_short liqfraction contained syn keyword spupTypes liqmassfraction mass massfraction molefraction contained syn keyword spupTypes molweight moment_inertia negative notype percent contained syn keyword spupTypes positive pressure press_diff press_drop press_rise contained syn keyword spupTypes ratio reaction reaction_mass rotation surf_tens contained syn keyword spupTypes temperature temperature_abs temp_diff temp_drop contained syn keyword spupTypes temp_rise time vapfraction vapmassfraction contained syn keyword spupTypes velocity visc_liq visc_vap volume zmom_rate contained syn keyword spupTypes seg_rate smom_rate tmom_rate zmom_mass seg_mass contained syn keyword spupTypes smom_mass tmom_mass zmom_holdup seg_holdup contained syn keyword spupTypes smom_holdup tmom_holdup contained endif syn keyword spupStreams mainstream vapour liquid contained syn keyword spupConditional IF THEN ELSE ENDIF contained syn keyword spupOperator AND OR NOT contained syn match spupSymbol "[,\-+=:;*/\"<>@%()]" contained syn match spupSpecial "[&\$?]" contained syn match spupError "[(=+\-*/]\s*+\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained syn match spupError "[(=+\-*/]\s*+\d\+\.\([ed][+-]\=\d\+\)\=\>"lc=1 contained syn match spupError "[(=+\-*/]\s*+\d*\.\d\+\([ed][+-]\=\d\+\)\=\>"lc=1 contained syn region spupString start=+"+ end=+"+ oneline contained syn region spupString start=+'+ end=+'+ oneline contained syn match spupIdentifier "\<[a-z][a-z0-9_]*\>" contained syn match spupTextprocGeneric "?[a-z][a-z0-9_]*\>" contained syn region spupTextprocError matchgroup=spupTextprocGeneric start="?ERROR" end="?END"he=s-1 contained syn match spupNumber "-\=\d\+\([ed][+-]\=\d\+\)\=" contained syn match spupNumber "-\=\d\+\.\([ed][+-]\=\d\+\)\=" contained syn match spupNumber "-\=\d*\.\d\+\([ed][+-]\=\d\+\)\=" contained syn region spupHelp start="^HELP"hs=e+1 end="^\$ENDHELP"he=s-1 contained syn region spupCode start="^CODE"hs=e+1 end="^\$ENDCODE"he=s-1 contained if oneline_comments > 3 oneline_comments = 2 " default endif if oneline_comments == 1 syn match spupComment "#[^#]*#\=" elseif oneline_comments == 2 syn match spupError "#.*$" syn match spupComment "#[^#]*" nextgroup=spupError elseif oneline_comments == 3 syn match spupComment "#[^#]*" syn match spupError "#[^#]*#.*" endif syn match spupOpenBrace "{" contained syn match spupError "}" syn region spupComment matchgroup=spupComment2 start="{" end="}" keepend contains=spupOpenBrace syn cluster spupOrdinary contains=spupNumber,spupIdentifier,spupSymbol syn cluster spupOrdinary add=spupError,spupString,spupComment syn cluster spupTextproc contains=spupTextprocGeneric,spupTextprocError syn sync clear syn sync minlines=100 syn sync maxlines=500 syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" syn sync match spupSyncCdi grouphere spupCdi "^CDI" syn sync match spupSyncConditions grouphere spupConditions "^CONDITIONS" syn sync match spupSyncDeclare grouphere spupDeclare "^DECLARE" syn sync match spupSyncEstimation grouphere spupEstimation "^ESTIMATION" syn sync match spupSyncExternal grouphere spupExternal "^EXTERNAL" syn sync match spupSyncFlowsheet grouphere spupFlowsheet "^FLOWSHEET" syn sync match spupSyncFunction grouphere spupFunction "^FUNCTION" syn sync match spupSyncGlobal grouphere spupGlobal "^GLOBAL" syn sync match spupSyncHomotopy grouphere spupHomotopy "^HOMOTOPY" syn sync match spupSyncMacro grouphere spupMacro "^MACRO" syn sync match spupSyncModel grouphere spupModel "^MODEL" syn sync match spupSyncOperation grouphere spupOperation "^OPERATION" syn sync match spupSyncOptions grouphere spupOptions "^OPTIONS" syn sync match spupSyncProcedure grouphere spupProcedure "^PROCEDURE" syn sync match spupSyncProfiles grouphere spupProfiles "^PROFILES" syn sync match spupSyncReport grouphere spupReport "^REPORT" syn sync match spupSyncTitle grouphere spupTitle "^TITLE" syn sync match spupSyncUnit grouphere spupUnit "^UNIT" hi def link spupCdi spupSection hi def link spupConditions spupSection hi def link spupDeclare spupSection hi def link spupEstimation spupSection hi def link spupExternal spupSection hi def link spupFlowsheet spupSection hi def link spupFunction spupSection hi def link spupGlobal spupSection hi def link spupHomotopy spupSection hi def link spupMacro spupSection hi def link spupModel spupSection hi def link spupOperation spupSection hi def link spupOptions spupSection hi def link spupProcedure spupSection hi def link spupProfiles spupSection hi def link spupReport spupSection hi def link spupTitle spupConstant " this is correct, truly ;) hi def link spupUnit spupSection hi def link spupCdiSubs spupSubs hi def link spupConditionsSubs spupSubs hi def link spupDeclareSubs spupSubs hi def link spupEstimationSubs spupSubs hi def link spupExternalSubs spupSubs hi def link spupFlowsheetSubs spupSubs hi def link spupFunctionSubs spupSubs hi def link spupHomotopySubs spupSubs hi def link spupMacroSubs spupSubs hi def link spupModelSubs spupSubs hi def link spupOperationSubs spupSubs hi def link spupOptionsSubs spupSubs hi def link spupProcedureSubs spupSubs hi def link spupReportSubs spupSubs hi def link spupUnitSubs spupSubs hi def link spupCode Normal hi def link spupComment Comment hi def link spupComment2 spupComment hi def link spupConditional Statement hi def link spupConstant Constant hi def link spupError Error hi def link spupHelp Normal hi def link spupIdentifier Identifier hi def link spupNumber Constant hi def link spupOperator Special hi def link spupOpenBrace spupError hi def link spupSection Statement hi def link spupSpecial spupTextprocGeneric hi def link spupStreams Type hi def link spupString Constant hi def link spupSubs Statement hi def link spupSymbol Special hi def link spupTextprocError Normal hi def link spupTextprocGeneric PreProc hi def link spupTypes Type let b:current_syntax = "spup" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax='spyce' endif let b:did_indent = 1 " don't perform HTML indentation! let html_no_rendering = 1 " do not render ,, etc... runtime! syntax/html.vim unlet b:current_syntax syntax spell default " added by Bram syn include @Python :p:h/python.vim syn include @Html :p:h/html.vim syn keyword spyceDirectiveKeyword include compact module import contained syn keyword spyceDirectiveArg name names file contained syn region spyceDirectiveString start=+"+ end=+"+ contained syn match spyceDirectiveValue "=[\t ]*[^'", \t>][^, \t>]*"hs=s+1 contained syn match spyceBeginErrorS ,\[\[, syn match spyceBeginErrorA ,<%, syn cluster spyceBeginError contains=spyceBeginErrorS,spyceBeginErrorA syn match spyceEndErrorS ,\]\], syn match spyceEndErrorA ,%>, syn cluster spyceEndError contains=spyceEndErrorS,spyceEndErrorA syn match spyceEscBeginS ,\\\[\[, syn match spyceEscBeginA ,\\<%, syn cluster spyceEscBegin contains=spyceEscBeginS,spyceEscBeginA syn match spyceEscEndS ,\\\]\], syn match spyceEscEndA ,\\%>, syn cluster spyceEscEnd contains=spyceEscEndS,spyceEscEndA syn match spyceEscEndCommentS ,--\\\]\], syn match spyceEscEndCommentA ,--\\%>, syn cluster spyceEscEndComment contains=spyceEscEndCommentS,spyceEscEndCommentA syn region spyceStmtS matchgroup=spyceStmtDelim start=,\[\[, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceStmtA matchgroup=spyceStmtDelim start=,<%, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceChunkS matchgroup=spyceChunkDelim start=,\[\[\\, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceChunkA matchgroup=spyceChunkDelim start=,<%\\, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceEvalS matchgroup=spyceEvalDelim start=,\[\[=, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceEvalA matchgroup=spyceEvalDelim start=,<%=, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend syn region spyceDirectiveS matchgroup=spyceDelim start=,\[\[\., end=,\]\], contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend syn region spyceDirectiveA matchgroup=spyceDelim start=,<%@, end=,%>, contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend syn region spyceCommentS matchgroup=spyceCommentDelim start=,\[\[--, end=,--\]\], syn region spyceCommentA matchgroup=spyceCommentDelim start=,<%--, end=,--%>, syn region spyceLambdaS matchgroup=spyceLambdaDelim start=,\[\[spy!\?, end=,\]\], contains=@Html,@spyce extend syn region spyceLambdaA matchgroup=spyceLambdaDelim start=,<%spy!\?, end=,%>, contains=@Html,@spyce extend syn cluster spyce contains=spyceStmtS,spyceStmtA,spyceChunkS,spyceChunkA,spyceEvalS,spyceEvalA,spyceCommentS,spyceCommentA,spyceDirectiveS,spyceDirectiveA syn cluster htmlPreproc contains=@spyce hi link spyceDirectiveKeyword Special hi link spyceDirectiveArg Type hi link spyceDirectiveString String hi link spyceDirectiveValue String hi link spyceDelim Special hi link spyceStmtDelim spyceDelim hi link spyceChunkDelim spyceDelim hi link spyceEvalDelim spyceDelim hi link spyceLambdaDelim spyceDelim hi link spyceCommentDelim Comment hi link spyceBeginErrorS Error hi link spyceBeginErrorA Error hi link spyceEndErrorS Error hi link spyceEndErrorA Error hi link spyceStmtS spyce hi link spyceStmtA spyce hi link spyceChunkS spyce hi link spyceChunkA spyce hi link spyceEvalS spyce hi link spyceEvalA spyce hi link spyceDirectiveS spyce hi link spyceDirectiveA spyce hi link spyceCommentS Comment hi link spyceCommentA Comment hi link spyceLambdaS Normal hi link spyceLambdaA Normal hi link spyce Statement let b:current_syntax = "spyce" if main_syntax == 'spyce' unlet main_syntax endif if exists("b:current_syntax") finish endif let filename = 'sqloracle' if exists("b:sql_type_override") if globpath(&runtimepath, 'syntax/'.b:sql_type_override.'.vim') != '' let filename = b:sql_type_override endif elseif exists("g:sql_type_default") if globpath(&runtimepath, 'syntax/'.g:sql_type_default.'.vim') != '' let filename = g:sql_type_default endif endif exec 'runtime syntax/'.filename.'.vim' if exists("b:current_syntax") finish endif syn case ignore syn keyword sqlSpecial false null true syn keyword sqlFunction abs argn avg bintohex bintostr syn keyword sqlFunction byte_length byte_substr char_length syn keyword sqlFunction compare count count_big datalength date syn keyword sqlFunction date_format dateadd datediff datename syn keyword sqlFunction datepart day dayname days debug_eng syn keyword sqlFunction dense_rank density dialect difference syn keyword sqlFunction dow estimate estimate_source evaluate syn keyword sqlFunction experience_estimate explanation syn keyword sqlFunction get_identity graphical_plan syn keyword sqlFunction graphical_ulplan greater grouping syn keyword sqlFunction hextobin hextoint hour hours identity syn keyword sqlFunction ifnull index_estimate inttohex isdate syn keyword sqlFunction isencrypted isnull isnumeric syn keyword sqlFunction lang_message length lesser like_end syn keyword sqlFunction like_start list long_ulplan lookup max syn keyword sqlFunction min minute minutes month monthname syn keyword sqlFunction months newid now nullif number syn keyword sqlFunction percent_rank plan quarter rand rank syn keyword sqlFunction regexp_compile regexp_compile_patindex syn keyword sqlFunction remainder rewrite rowid second seconds syn keyword sqlFunction short_ulplan similar sortkey soundex syn keyword sqlFunction stddev stack_trace str string strtobin strtouuid stuff syn keyword sqlFunction subpartition substr substring sum switchoffset sysdatetimeoffset syn keyword sqlFunction textptr todate todatetimeoffset today totimestamp traceback transactsql syn keyword sqlFunction ts_index_statistics ts_table_statistics syn keyword sqlFunction tsequal ulplan user_id user_name utc_now syn keyword sqlFunction uuidtostr varexists variance watcomsql syn keyword sqlFunction weeks wsql_state year years ymd syn keyword sqlFunction acos asin atan atn2 cast ceiling convert cos cot syn keyword sqlFunction char_length coalesce dateformat datetime degrees exp syn keyword sqlFunction floor getdate insertstr syn keyword sqlFunction log log10 lower mod pi power syn keyword sqlFunction property radians replicate round sign sin syn keyword sqlFunction sqldialect tan truncate truncnum syn keyword sqlFunction base64_encode base64_decode syn keyword sqlFunction hash compress decompress encrypt decrypt syn keyword sqlFunction connection_extended_property text_handle_vector_match syn keyword sqlFunction read_client_file write_client_file syn keyword sqlFunction http_response_header syn keyword sqlFunction ascii char left ltrim repeat syn keyword sqlFunction space right rtrim trim lcase ucase syn keyword sqlFunction locate charindex patindex replace syn keyword sqlFunction errormsg csconvert syn keyword sqlFunction db_id db_name property_name syn keyword sqlFunction property_description property_number syn keyword sqlFunction next_connection next_database property syn keyword sqlFunction connection_property db_property db_extended_property syn keyword sqlFunction event_parmeter event_condition event_condition_name syn keyword sqlFunction sa_add_index_consultant_analysis syn keyword sqlFunction sa_add_workload_query syn keyword sqlFunction sa_app_deregister syn keyword sqlFunction sa_app_get_infoStr syn keyword sqlFunction sa_app_get_status syn keyword sqlFunction sa_app_register syn keyword sqlFunction sa_app_registration_unlock syn keyword sqlFunction sa_app_set_infoStr syn keyword sqlFunction sa_audit_string syn keyword sqlFunction sa_check_commit syn keyword sqlFunction sa_checkpoint_execute syn keyword sqlFunction sa_conn_activity syn keyword sqlFunction sa_conn_compression_info syn keyword sqlFunction sa_conn_deregister syn keyword sqlFunction sa_conn_info syn keyword sqlFunction sa_conn_properties syn keyword sqlFunction sa_conn_properties_by_conn syn keyword sqlFunction sa_conn_properties_by_name syn keyword sqlFunction sa_conn_register syn keyword sqlFunction sa_conn_set_status syn keyword sqlFunction sa_create_analysis_from_query syn keyword sqlFunction sa_db_info syn keyword sqlFunction sa_db_properties syn keyword sqlFunction sa_disable_auditing_type syn keyword sqlFunction sa_disable_index syn keyword sqlFunction sa_disk_free_space syn keyword sqlFunction sa_enable_auditing_type syn keyword sqlFunction sa_enable_index syn keyword sqlFunction sa_end_forward_to syn keyword sqlFunction sa_eng_properties syn keyword sqlFunction sa_event_schedules syn keyword sqlFunction sa_exec_script syn keyword sqlFunction sa_flush_cache syn keyword sqlFunction sa_flush_statistics syn keyword sqlFunction sa_forward_to syn keyword sqlFunction sa_get_dtt syn keyword sqlFunction sa_get_histogram syn keyword sqlFunction sa_get_request_profile syn keyword sqlFunction sa_get_request_profile_sub syn keyword sqlFunction sa_get_request_times syn keyword sqlFunction sa_get_server_messages syn keyword sqlFunction sa_get_simulated_scale_factors syn keyword sqlFunction sa_get_workload_capture_status syn keyword sqlFunction sa_index_density syn keyword sqlFunction sa_index_levels syn keyword sqlFunction sa_index_statistics syn keyword sqlFunction sa_internal_alter_index_ability syn keyword sqlFunction sa_internal_create_analysis_from_query syn keyword sqlFunction sa_internal_disk_free_space syn keyword sqlFunction sa_internal_get_dtt syn keyword sqlFunction sa_internal_get_histogram syn keyword sqlFunction sa_internal_get_request_times syn keyword sqlFunction sa_internal_get_simulated_scale_factors syn keyword sqlFunction sa_internal_get_workload_capture_status syn keyword sqlFunction sa_internal_index_density syn keyword sqlFunction sa_internal_index_levels syn keyword sqlFunction sa_internal_index_statistics syn keyword sqlFunction sa_internal_java_loaded_classes syn keyword sqlFunction sa_internal_locks syn keyword sqlFunction sa_internal_pause_workload_capture syn keyword sqlFunction sa_internal_procedure_profile syn keyword sqlFunction sa_internal_procedure_profile_summary syn keyword sqlFunction sa_internal_read_backup_history syn keyword sqlFunction sa_internal_recommend_indexes syn keyword sqlFunction sa_internal_reset_identity syn keyword sqlFunction sa_internal_resume_workload_capture syn keyword sqlFunction sa_internal_start_workload_capture syn keyword sqlFunction sa_internal_stop_index_consultant syn keyword sqlFunction sa_internal_stop_workload_capture syn keyword sqlFunction sa_internal_table_fragmentation syn keyword sqlFunction sa_internal_table_page_usage syn keyword sqlFunction sa_internal_table_stats syn keyword sqlFunction sa_internal_virtual_sysindex syn keyword sqlFunction sa_internal_virtual_sysixcol syn keyword sqlFunction sa_java_loaded_classes syn keyword sqlFunction sa_jdk_version syn keyword sqlFunction sa_locks syn keyword sqlFunction sa_make_object syn keyword sqlFunction sa_pause_workload_capture syn keyword sqlFunction sa_proc_debug_attach_to_connection syn keyword sqlFunction sa_proc_debug_connect syn keyword sqlFunction sa_proc_debug_detach_from_connection syn keyword sqlFunction sa_proc_debug_disconnect syn keyword sqlFunction sa_proc_debug_get_connection_name syn keyword sqlFunction sa_proc_debug_release_connection syn keyword sqlFunction sa_proc_debug_request syn keyword sqlFunction sa_proc_debug_version syn keyword sqlFunction sa_proc_debug_wait_for_connection syn keyword sqlFunction sa_procedure_profile syn keyword sqlFunction sa_procedure_profile_summary syn keyword sqlFunction sa_read_backup_history syn keyword sqlFunction sa_recommend_indexes syn keyword sqlFunction sa_recompile_views syn keyword sqlFunction sa_remove_index_consultant_analysis syn keyword sqlFunction sa_remove_index_consultant_workload syn keyword sqlFunction sa_reset_identity syn keyword sqlFunction sa_resume_workload_capture syn keyword sqlFunction sa_server_option syn keyword sqlFunction sa_set_simulated_scale_factor syn keyword sqlFunction sa_setremoteuser syn keyword sqlFunction sa_setsubscription syn keyword sqlFunction sa_start_recording_commits syn keyword sqlFunction sa_start_workload_capture syn keyword sqlFunction sa_statement_text syn keyword sqlFunction sa_stop_index_consultant syn keyword sqlFunction sa_stop_recording_commits syn keyword sqlFunction sa_stop_workload_capture syn keyword sqlFunction sa_sync syn keyword sqlFunction sa_sync_sub syn keyword sqlFunction sa_table_fragmentation syn keyword sqlFunction sa_table_page_usage syn keyword sqlFunction sa_table_stats syn keyword sqlFunction sa_update_index_consultant_workload syn keyword sqlFunction sa_validate syn keyword sqlFunction sa_virtual_sysindex syn keyword sqlFunction sa_virtual_sysixcol syn keyword sqlFunction sp_addalias syn keyword sqlFunction sp_addauditrecord syn keyword sqlFunction sp_adddumpdevice syn keyword sqlFunction sp_addgroup syn keyword sqlFunction sp_addlanguage syn keyword sqlFunction sp_addlogin syn keyword sqlFunction sp_addmessage syn keyword sqlFunction sp_addremotelogin syn keyword sqlFunction sp_addsegment syn keyword sqlFunction sp_addserver syn keyword sqlFunction sp_addthreshold syn keyword sqlFunction sp_addtype syn keyword sqlFunction sp_adduser syn keyword sqlFunction sp_auditdatabase syn keyword sqlFunction sp_auditlogin syn keyword sqlFunction sp_auditobject syn keyword sqlFunction sp_auditoption syn keyword sqlFunction sp_auditsproc syn keyword sqlFunction sp_bindefault syn keyword sqlFunction sp_bindmsg syn keyword sqlFunction sp_bindrule syn keyword sqlFunction sp_changedbowner syn keyword sqlFunction sp_changegroup syn keyword sqlFunction sp_checknames syn keyword sqlFunction sp_checkperms syn keyword sqlFunction sp_checkreswords syn keyword sqlFunction sp_clearstats syn keyword sqlFunction sp_column_privileges syn keyword sqlFunction sp_columns syn keyword sqlFunction sp_commonkey syn keyword sqlFunction sp_configure syn keyword sqlFunction sp_cursorinfo syn keyword sqlFunction sp_databases syn keyword sqlFunction sp_datatype_info syn keyword sqlFunction sp_dboption syn keyword sqlFunction sp_dbremap syn keyword sqlFunction sp_depends syn keyword sqlFunction sp_diskdefault syn keyword sqlFunction sp_displaylogin syn keyword sqlFunction sp_dropalias syn keyword sqlFunction sp_dropdevice syn keyword sqlFunction sp_dropgroup syn keyword sqlFunction sp_dropkey syn keyword sqlFunction sp_droplanguage syn keyword sqlFunction sp_droplogin syn keyword sqlFunction sp_dropmessage syn keyword sqlFunction sp_dropremotelogin syn keyword sqlFunction sp_dropsegment syn keyword sqlFunction sp_dropserver syn keyword sqlFunction sp_dropthreshold syn keyword sqlFunction sp_droptype syn keyword sqlFunction sp_dropuser syn keyword sqlFunction sp_estspace syn keyword sqlFunction sp_extendsegment syn keyword sqlFunction sp_fkeys syn keyword sqlFunction sp_foreignkey syn keyword sqlFunction sp_getmessage syn keyword sqlFunction sp_help syn keyword sqlFunction sp_helpconstraint syn keyword sqlFunction sp_helpdb syn keyword sqlFunction sp_helpdevice syn keyword sqlFunction sp_helpgroup syn keyword sqlFunction sp_helpindex syn keyword sqlFunction sp_helpjoins syn keyword sqlFunction sp_helpkey syn keyword sqlFunction sp_helplanguage syn keyword sqlFunction sp_helplog syn keyword sqlFunction sp_helpprotect syn keyword sqlFunction sp_helpremotelogin syn keyword sqlFunction sp_helpsegment syn keyword sqlFunction sp_helpserver syn keyword sqlFunction sp_helpsort syn keyword sqlFunction sp_helptext syn keyword sqlFunction sp_helpthreshold syn keyword sqlFunction sp_helpuser syn keyword sqlFunction sp_indsuspect syn keyword sqlFunction sp_lock syn keyword sqlFunction sp_locklogin syn keyword sqlFunction sp_logdevice syn keyword sqlFunction sp_login_environment syn keyword sqlFunction sp_modifylogin syn keyword sqlFunction sp_modifythreshold syn keyword sqlFunction sp_monitor syn keyword sqlFunction sp_password syn keyword sqlFunction sp_pkeys syn keyword sqlFunction sp_placeobject syn keyword sqlFunction sp_primarykey syn keyword sqlFunction sp_procxmode syn keyword sqlFunction sp_recompile syn keyword sqlFunction sp_remap syn keyword sqlFunction sp_remote_columns syn keyword sqlFunction sp_remote_exported_keys syn keyword sqlFunction sp_remote_imported_keys syn keyword sqlFunction sp_remote_pcols syn keyword sqlFunction sp_remote_primary_keys syn keyword sqlFunction sp_remote_procedures syn keyword sqlFunction sp_remote_tables syn keyword sqlFunction sp_remoteoption syn keyword sqlFunction sp_rename syn keyword sqlFunction sp_renamedb syn keyword sqlFunction sp_reportstats syn keyword sqlFunction sp_reset_tsql_environment syn keyword sqlFunction sp_role syn keyword sqlFunction sp_server_info syn keyword sqlFunction sp_servercaps syn keyword sqlFunction sp_serverinfo syn keyword sqlFunction sp_serveroption syn keyword sqlFunction sp_setlangalias syn keyword sqlFunction sp_setreplicate syn keyword sqlFunction sp_setrepproc syn keyword sqlFunction sp_setreptable syn keyword sqlFunction sp_spaceused syn keyword sqlFunction sp_special_columns syn keyword sqlFunction sp_sproc_columns syn keyword sqlFunction sp_statistics syn keyword sqlFunction sp_stored_procedures syn keyword sqlFunction sp_syntax syn keyword sqlFunction sp_table_privileges syn keyword sqlFunction sp_tables syn keyword sqlFunction sp_tsql_environment syn keyword sqlFunction sp_tsql_feature_not_supported syn keyword sqlFunction sp_unbindefault syn keyword sqlFunction sp_unbindmsg syn keyword sqlFunction sp_unbindrule syn keyword sqlFunction sp_volchanged syn keyword sqlFunction sp_who syn keyword sqlFunction xp_scanf syn keyword sqlFunction xp_sprintf syn keyword sqlFunction col_length syn keyword sqlFunction col_name syn keyword sqlFunction index_col syn keyword sqlFunction object_id syn keyword sqlFunction object_name syn keyword sqlFunction proc_role syn keyword sqlFunction show_role syn keyword sqlFunction xp_cmdshell syn keyword sqlFunction xp_msver syn keyword sqlFunction xp_read_file syn keyword sqlFunction xp_real_cmdshell syn keyword sqlFunction xp_real_read_file syn keyword sqlFunction xp_real_sendmail syn keyword sqlFunction xp_real_startmail syn keyword sqlFunction xp_real_startsmtp syn keyword sqlFunction xp_real_stopmail syn keyword sqlFunction xp_real_stopsmtp syn keyword sqlFunction xp_real_write_file syn keyword sqlFunction xp_scanf syn keyword sqlFunction xp_sendmail syn keyword sqlFunction xp_sprintf syn keyword sqlFunction xp_startmail syn keyword sqlFunction xp_startsmtp syn keyword sqlFunction xp_stopmail syn keyword sqlFunction xp_stopsmtp syn keyword sqlFunction xp_write_file syn keyword sqlFunction http_header http_variable syn keyword sqlFunction next_http_header next_http_response_header next_http_variable syn keyword sqlFunction sa_set_http_header sa_set_http_option syn keyword sqlFunction sa_http_variable_info sa_http_header_info syn keyword sqlFunction http_encode http_decode syn keyword sqlFunction html_encode html_decode syn keyword sqlFunction openxml xmlelement xmlforest xmlgen xmlconcat xmlagg syn keyword sqlFunction xmlattributes syn keyword sqlFunction ST_BdMPolyFromText syn keyword sqlFunction ST_BdMPolyFromWKB syn keyword sqlFunction ST_BdPolyFromText syn keyword sqlFunction ST_BdPolyFromWKB syn keyword sqlFunction ST_CPolyFromText syn keyword sqlFunction ST_CPolyFromWKB syn keyword sqlFunction ST_CircularFromTxt syn keyword sqlFunction ST_CircularFromWKB syn keyword sqlFunction ST_CompoundFromTxt syn keyword sqlFunction ST_CompoundFromWKB syn keyword sqlFunction ST_GeomCollFromTxt syn keyword sqlFunction ST_GeomCollFromWKB syn keyword sqlFunction ST_GeomFromText syn keyword sqlFunction ST_GeomFromWKB syn keyword sqlFunction ST_LineFromText syn keyword sqlFunction ST_LineFromWKB syn keyword sqlFunction ST_MCurveFromText syn keyword sqlFunction ST_MCurveFromWKB syn keyword sqlFunction ST_MLineFromText syn keyword sqlFunction ST_MLineFromWKB syn keyword sqlFunction ST_MPointFromText syn keyword sqlFunction ST_MPointFromWKB syn keyword sqlFunction ST_MPolyFromText syn keyword sqlFunction ST_MPolyFromWKB syn keyword sqlFunction ST_MSurfaceFromTxt syn keyword sqlFunction ST_MSurfaceFromWKB syn keyword sqlFunction ST_OrderingEquals syn keyword sqlFunction ST_PointFromText syn keyword sqlFunction ST_PointFromWKB syn keyword sqlFunction ST_PolyFromText syn keyword sqlFunction ST_PolyFromWKB syn keyword sqlFunction ST_CoordDim syn keyword sqlFunction ST_CurveN syn keyword sqlFunction ST_Dimension syn keyword sqlFunction ST_EndPoint syn keyword sqlFunction ST_ExteriorRing syn keyword sqlFunction ST_GeometryN syn keyword sqlFunction ST_GeometryType syn keyword sqlFunction ST_InteriorRingN syn keyword sqlFunction ST_Is3D syn keyword sqlFunction ST_IsClosed syn keyword sqlFunction ST_IsEmpty syn keyword sqlFunction ST_IsMeasured syn keyword sqlFunction ST_IsRing syn keyword sqlFunction ST_IsSimple syn keyword sqlFunction ST_IsValid syn keyword sqlFunction ST_NumCurves syn keyword sqlFunction ST_NumGeometries syn keyword sqlFunction ST_NumInteriorRing syn keyword sqlFunction ST_NumPoints syn keyword sqlFunction ST_PointN syn keyword sqlFunction ST_StartPoint syn keyword sqlFunction ST_Length syn keyword sqlFunction ST_Area syn keyword sqlFunction ST_Centroid syn keyword sqlFunction ST_Area syn keyword sqlFunction ST_Centroid syn keyword sqlFunction ST_IsWorld syn keyword sqlFunction ST_Perimeter syn keyword sqlFunction ST_PointOnSurface syn keyword sqlFunction ST_Distance syn keyword sqlFunction ST_AsBinary syn keyword sqlFunction ST_AsGML syn keyword sqlFunction ST_AsGeoJSON syn keyword sqlFunction ST_AsSVG syn keyword sqlFunction ST_AsSVGAggr syn keyword sqlFunction ST_AsText syn keyword sqlFunction ST_AsWKB syn keyword sqlFunction ST_AsWKT syn keyword sqlFunction ST_AsXML syn keyword sqlFunction ST_GeomFromBinary syn keyword sqlFunction ST_GeomFromShape syn keyword sqlFunction ST_GeomFromText syn keyword sqlFunction ST_GeomFromWKB syn keyword sqlFunction ST_GeomFromWKT syn keyword sqlFunction ST_GeomFromXML syn keyword sqlFunction ST_CurvePolyToPoly syn keyword sqlFunction ST_CurveToLine syn keyword sqlFunction ST_ToCircular syn keyword sqlFunction ST_ToCompound syn keyword sqlFunction ST_ToCurve syn keyword sqlFunction ST_ToCurvePoly syn keyword sqlFunction ST_ToGeomColl syn keyword sqlFunction ST_ToLineString syn keyword sqlFunction ST_ToMultiCurve syn keyword sqlFunction ST_ToMultiLine syn keyword sqlFunction ST_ToMultiPoint syn keyword sqlFunction ST_ToMultiPolygon syn keyword sqlFunction ST_ToMultiSurface syn keyword sqlFunction ST_ToPoint syn keyword sqlFunction ST_ToPolygon syn keyword sqlFunction ST_ToSurface syn keyword sqlFunction array array_agg array_max_cardinality trim_array syn keyword sqlFunction error_line error_message error_procedure syn keyword sqlFunction error_sqlcode error_sqlstate error_stack_trace syn keyword sqlKeyword absolute accent access account action active activate add address admin syn keyword sqlKeyword aes_decrypt after aggregate algorithm allow_dup_row allow allowed alter syn keyword sqlKeyword always and angular ansi_substring any as append apply syn keyword sqlKeyword arbiter array asc ascii ase syn keyword sqlKeyword assign at atan2 atomic attended syn keyword sqlKeyword audit auditing authentication authorization axis syn keyword sqlKeyword autoincrement autostop batch bcp before syn keyword sqlKeyword between bit_and bit_length bit_or bit_substr bit_xor syn keyword sqlKeyword blank blanks block syn keyword sqlKeyword both bottom unbounded breaker bufferpool syn keyword sqlKeyword build bulk by byte bytes cache calibrate calibration syn keyword sqlKeyword cancel capability cardinality cascade cast syn keyword sqlKeyword catalog catch ceil change changes char char_convert syn keyword sqlKeyword check checkpointlog checksum class classes client cmp syn keyword sqlKeyword cluster clustered collation syn keyword sqlKeyword column columns syn keyword sqlKeyword command comments committed commitid comparisons syn keyword sqlKeyword compatible component compressed compute computes syn keyword sqlKeyword concat configuration confirm conflict connection syn keyword sqlKeyword console consolidate consolidated syn keyword sqlKeyword constraint constraints content syn keyword sqlKeyword convert coordinate coordinator copy count count_set_bits syn keyword sqlKeyword crc createtime critical cross cube cume_dist syn keyword sqlKeyword current cursor data data database syn keyword sqlKeyword current_timestamp current_user cycle syn keyword sqlKeyword databases datatype dba dbfile syn keyword sqlKeyword dbspace dbspaces dbspacename debug decoupled syn keyword sqlKeyword decrypted default defaults default_dbspace deferred syn keyword sqlKeyword definer definition syn keyword sqlKeyword delay deleting delimited dependencies desc syn keyword sqlKeyword description deterministic directory syn keyword sqlKeyword disable disabled disallow distinct disksandbox disk_sandbox syn keyword sqlKeyword dn do domain download duplicate syn keyword sqlKeyword dsetpass dttm dynamic each earth editproc effective ejb syn keyword sqlKeyword elimination ellipsoid else elseif syn keyword sqlKeyword email empty enable encapsulated encrypted encryption end syn keyword sqlKeyword encoding endif engine environment erase error errors escape escapes event syn keyword sqlKeyword event_parameter every exception exclude excluded exclusive exec syn keyword sqlKeyword existing exists expanded expiry express exprtype extended_property syn keyword sqlKeyword external externlogin factor failover false syn keyword sqlKeyword fastfirstrow feature fieldproc file files filler syn keyword sqlKeyword fillfactor final finish first first_keyword first_value syn keyword sqlKeyword flattening syn keyword sqlKeyword following force foreign format forjson forxml forxml_sep fp frame syn keyword sqlKeyword free freepage french fresh full function syn keyword sqlKeyword gb generic get_bit go global grid syn keyword sqlKeyword group handler hash having header hexadecimal syn keyword sqlKeyword hidden high history hg hng hold holdlock host syn keyword sqlKeyword hours http_body http_session_timeout id identified identity ignore syn keyword sqlKeyword ignore_dup_key ignore_dup_row immediate syn keyword sqlKeyword in inactiv inactive inactivity included increment incremental syn keyword sqlKeyword index index_enabled index_lparen indexonly info information syn keyword sqlKeyword inheritance inline inner inout insensitive inserting syn keyword sqlKeyword instead syn keyword sqlKeyword internal intersection into introduced inverse invoker syn keyword sqlKeyword iq is isolation syn keyword sqlKeyword jar java java_location java_main_userid java_vm_options syn keyword sqlKeyword jconnect jdk join json kb key keys keep language last syn keyword sqlKeyword last_keyword last_value lateral latitude syn keyword sqlKeyword ld ldap left len linear lf ln level like syn keyword sqlKeyword limit local location log syn keyword sqlKeyword logging logical login logscan long longitude low lru ls syn keyword sqlKeyword main major manage manual mark master syn keyword sqlKeyword match matched materialized max maxvalue maximum mb measure median membership syn keyword sqlKeyword merge metadata methods migrate minimum minor minutes minvalue mirror syn keyword sqlKeyword mode modify monitor move mru multiplex syn keyword sqlKeyword name named namespaces national native natural new next nextval syn keyword sqlKeyword ngram no noholdlock nolock nonclustered none normal not syn keyword sqlKeyword notify null nullable_constant nulls syn keyword sqlKeyword object objects oem_string of off offline offset olap syn keyword sqlKeyword old on online only openstring operator syn keyword sqlKeyword optimization optimizer option syn keyword sqlKeyword or order ordinality organization others out outer over owner syn keyword sqlKeyword package packetsize padding page pages syn keyword sqlKeyword paglock parallel parameter parent part partial syn keyword sqlKeyword partition partitions partner password path pctfree syn keyword sqlKeyword permissions perms plan planar policy polygon populate port postfilter preceding syn keyword sqlKeyword precisionprefetch prefilter prefix preserve preview previous syn keyword sqlKeyword primary prior priority priqty private privilege privileges procedure profile profiling syn keyword sqlKeyword property_is_cumulative property_is_numeric public publication publish publisher syn keyword sqlKeyword quiesce quote quotes range readclientfile readcommitted reader readfile readonly syn keyword sqlKeyword readpast readuncommitted readwrite rebuild syn keyword sqlKeyword received recompile recover recursive references syn keyword sqlKeyword referencing regex regexp regexp_substr relative relocate syn keyword sqlKeyword rename repeatable repeatableread replicate replication syn keyword sqlKeyword requests request_timeout required rereceive resend reserve reset syn keyword sqlKeyword resizing resolve resource respect restart syn keyword sqlKeyword restrict result retain retries syn keyword sqlKeyword returns reverse right role roles syn keyword sqlKeyword rollup root row row_number rowlock rows rowtype syn keyword sqlKeyword sa_index_hash sa_internal_fk_verify sa_internal_termbreak syn keyword sqlKeyword sa_order_preserving_hash sa_order_preserving_hash_big sa_order_preserving_hash_prefix syn keyword sqlKeyword sa_file_free_pages sa_internal_type_from_catalog sa_internal_valid_hash syn keyword sqlKeyword sa_internal_validate_value sa_json_element syn keyword sqlKeyword scale schedule schema scope script scripted scroll search seconds secqty security syn keyword sqlKeyword semi send sensitive sent sequence serializable syn keyword sqlKeyword server severity session set_bit set_bits sets syn keyword sqlKeyword shapefile share side simple since site size skip syn keyword sqlKeyword snap snapshot soapheader soap_header syn keyword sqlKeyword spatial split some sorted_data syn keyword sqlKeyword sql sqlcode sqlid sqlflagger sqlstate sqrt square syn keyword sqlKeyword stacker stale state statement statistics status stddev_pop stddev_samp syn keyword sqlKeyword stemmer stogroup stoplist storage store syn keyword sqlKeyword strip stripesizekb striping subpages subscribe subscription syn keyword sqlKeyword subtransaction suser_id suser_name suspend synchronization syn keyword sqlKeyword syntax_error table tables tablock syn keyword sqlKeyword tablockx target tb temp template temporary term then ties syn keyword sqlKeyword timezone timeout tls to to_char to_nchar tolerance top syn keyword sqlKeyword trace traced_plan tracing syn keyword sqlKeyword transfer transform transaction transactional treat tries syn keyword sqlKeyword true try tsequal type tune uncommitted unconditionally syn keyword sqlKeyword unenforced unicode unique unistr unit unknown unlimited unload syn keyword sqlKeyword unpartition unquiesce updatetime updating updlock upgrade upload syn keyword sqlKeyword upper usage use user syn keyword sqlKeyword using utc utilities validproc syn keyword sqlKeyword value values varchar variable syn keyword sqlKeyword varying var_pop var_samp vcat verbosity syn keyword sqlKeyword verify versions view virtual wait syn keyword sqlKeyword warning wd web when where with with_auto syn keyword sqlKeyword with_auto with_cube with_rollup without syn keyword sqlKeyword with_lparen within word work workload write writefile syn keyword sqlKeyword writeclientfile writer writers writeserver xlock syn keyword sqlKeyword war xml zeros zone syn keyword sqlKeyword raw auto elements explicit syn keyword sqlKeyword authorization secure url service next_soap_header syn keyword sqlKeyword namespace certificate certificates clientport proxy trusted_certificates_file syn keyword sqlKeyword covar_pop covar_samp corr regr_slope regr_intercept syn keyword sqlKeyword regr_count regr_r2 regr_avgx regr_avgy syn keyword sqlKeyword regr_sxx regr_syy regr_sxy syn keyword sqlKeyword character dec options proc reference syn keyword sqlKeyword subtrans tran syn keyword syn keyword sqlKeywordLogin standard integrated kerberos LDAPUA syn keyword sqlKeywordLogin cloudadmin mixed syn keyword sqlKeyword ST_Contains syn keyword sqlKeyword ST_ContainsFilter syn keyword sqlKeyword ST_CoveredBy syn keyword sqlKeyword ST_CoveredByFilter syn keyword sqlKeyword ST_Covers syn keyword sqlKeyword ST_CoversFilter syn keyword sqlKeyword ST_Crosses syn keyword sqlKeyword ST_Disjoint syn keyword sqlKeyword ST_Equals syn keyword sqlKeyword ST_EqualsFilter syn keyword sqlKeyword ST_Intersects syn keyword sqlKeyword ST_IntersectsFilter syn keyword sqlKeyword ST_IntersectsRect syn keyword sqlKeyword ST_OrderingEquals syn keyword sqlKeyword ST_Overlaps syn keyword sqlKeyword ST_Relate syn keyword sqlKeyword ST_Touches syn keyword sqlKeyword ST_Within syn keyword sqlKeyword ST_WithinFilter syn keyword sqlKeyword ST_Affine syn keyword sqlKeyword ST_Boundary syn keyword sqlKeyword ST_Buffer syn keyword sqlKeyword ST_ConvexHull syn keyword sqlKeyword ST_ConvexHullAggr syn keyword sqlKeyword ST_Difference syn keyword sqlKeyword ST_Intersection syn keyword sqlKeyword ST_IntersectionAggr syn keyword sqlKeyword ST_SymDifference syn keyword sqlKeyword ST_Union syn keyword sqlKeyword ST_UnionAggr syn keyword sqlKeyword ST_Envelope syn keyword sqlKeyword ST_EnvelopeAggr syn keyword sqlKeyword ST_Lat syn keyword sqlKeyword ST_LatMax syn keyword sqlKeyword ST_LatMin syn keyword sqlKeyword ST_Long syn keyword sqlKeyword ST_LongMax syn keyword sqlKeyword ST_LongMin syn keyword sqlKeyword ST_M syn keyword sqlKeyword ST_MMax syn keyword sqlKeyword ST_MMin syn keyword sqlKeyword ST_Point syn keyword sqlKeyword ST_X syn keyword sqlKeyword ST_XMax syn keyword sqlKeyword ST_XMin syn keyword sqlKeyword ST_Y syn keyword sqlKeyword ST_YMax syn keyword sqlKeyword ST_YMin syn keyword sqlKeyword ST_Z syn keyword sqlKeyword ST_ZMax syn keyword sqlKeyword ST_ZMin syn keyword sqlKeyword ST_GeomCollectionAggr syn keyword sqlKeyword ST_LineStringAggr syn keyword sqlKeyword ST_MultiCurveAggr syn keyword sqlKeyword ST_MultiLineStringAggr syn keyword sqlKeyword ST_MultiPointAggr syn keyword sqlKeyword ST_MultiPolygonAggr syn keyword sqlKeyword ST_MultiSurfaceAggr syn keyword sqlKeyword ST_Perimeter syn keyword sqlKeyword ST_PointOnSurface syn keyword sqlKeyword ST_CompareWKT syn keyword sqlKeyword ST_FormatWKT syn keyword sqlKeyword ST_ParseWKT syn keyword sqlKeyword ST_TransformGeom syn keyword sqlKeyword ST_GeometryTypeFromBaseType syn keyword sqlKeyword ST_SnapToGrid syn keyword sqlKeyword ST_Transform syn keyword sqlKeyword ST_SRID syn keyword sqlKeyword ST_SRIDFromBaseType syn keyword sqlKeyword ST_LoadConfigurationData syn keyword sqlKeyword ST_LinearHash syn keyword sqlKeyword ST_LinearUnHash syn keyword sqlOperator in any some all between exists syn keyword sqlOperator like escape not is and or syn keyword sqlOperator minus syn keyword sqlOperator prior distinct unnest syn keyword sqlStatement allocate alter attach backup begin break call case catch syn keyword sqlStatement checkpoint clear close comment commit configure connect syn keyword sqlStatement continue create deallocate declare delete describe syn keyword sqlStatement detach disconnect drop except execute exit explain fetch syn keyword sqlStatement for forward from get goto grant help if include syn keyword sqlStatement input insert install intersect leave load lock loop syn keyword sqlStatement message open output parameters passthrough syn keyword sqlStatement prepare print put raiserror read readtext refresh release syn keyword sqlStatement remote remove reorganize resignal restore resume syn keyword sqlStatement return revoke rollback save savepoint select syn keyword sqlStatement set setuser signal start stop synchronize syn keyword sqlStatement system trigger truncate try union unload update syn keyword sqlStatement validate waitfor whenever while window writetext syn keyword sqlType char nchar long varchar nvarchar text ntext uniqueidentifierstr xml syn keyword sqlType bigint bit decimal double varbit syn keyword sqlType float int integer numeric syn keyword sqlType smallint tinyint real syn keyword sqlType money smallmoney syn keyword sqlType date datetime datetimeoffset smalldatetime time timestamp syn keyword sqlType binary image varray varbinary uniqueidentifier syn keyword sqlType unsigned syn keyword sqlType st_geometry st_point st_curve st_surface st_geomcollection syn keyword sqlType st_linestring st_circularstring st_compoundcurve syn keyword sqlType st_curvepolygon st_polygon syn keyword sqlType st_multipoint st_multicurve st_multisurface syn keyword sqlType st_multilinestring st_multipolygon syn keyword sqlOption Allow_nulls_by_default syn keyword sqlOption Allow_read_client_file syn keyword sqlOption Allow_snapshot_isolation syn keyword sqlOption Allow_write_client_file syn keyword sqlOption Ansi_blanks syn keyword sqlOption Ansi_close_cursors_on_rollback syn keyword sqlOption Ansi_permissions syn keyword sqlOption Ansi_substring syn keyword sqlOption Ansi_update_constraints syn keyword sqlOption Ansinull syn keyword sqlOption Auditing syn keyword sqlOption Auditing_options syn keyword sqlOption Auto_commit_on_create_local_temp_index syn keyword sqlOption Background_priority syn keyword sqlOption Blocking syn keyword sqlOption Blocking_others_timeout syn keyword sqlOption Blocking_timeout syn keyword sqlOption Chained syn keyword sqlOption Checkpoint_time syn keyword sqlOption Cis_option syn keyword sqlOption Cis_rowset_size syn keyword sqlOption Close_on_endtrans syn keyword sqlOption Collect_statistics_on_dml_updates syn keyword sqlOption Conn_auditing syn keyword sqlOption Connection_authentication syn keyword sqlOption Continue_after_raiserror syn keyword sqlOption Conversion_error syn keyword sqlOption Cooperative_commit_timeout syn keyword sqlOption Cooperative_commits syn keyword sqlOption Database_authentication syn keyword sqlOption Date_format syn keyword sqlOption Date_order syn keyword sqlOption db_publisher syn keyword sqlOption Debug_messages syn keyword sqlOption Dedicated_task syn keyword sqlOption Default_dbspace syn keyword sqlOption Default_timestamp_increment syn keyword sqlOption Delayed_commit_timeout syn keyword sqlOption Delayed_commits syn keyword sqlOption Divide_by_zero_error syn keyword sqlOption Escape_character syn keyword sqlOption Exclude_operators syn keyword sqlOption Extended_join_syntax syn keyword sqlOption Extern_login_credentials syn keyword sqlOption Fire_triggers syn keyword sqlOption First_day_of_week syn keyword sqlOption For_xml_null_treatment syn keyword sqlOption Force_view_creation syn keyword sqlOption Global_database_id syn keyword sqlOption Http_session_timeout syn keyword sqlOption Http_connection_pool_basesize syn keyword sqlOption Http_connection_pool_timeout syn keyword sqlOption Integrated_server_name syn keyword sqlOption Isolation_level syn keyword sqlOption Java_class_path syn keyword sqlOption Java_location syn keyword sqlOption Java_main_userid syn keyword sqlOption Java_vm_options syn keyword sqlOption Lock_rejected_rows syn keyword sqlOption Log_deadlocks syn keyword sqlOption Login_mode syn keyword sqlOption Login_procedure syn keyword sqlOption Materialized_view_optimization syn keyword sqlOption Max_client_statements_cached syn keyword sqlOption Max_cursor_count syn keyword sqlOption Max_hash_size syn keyword sqlOption Max_plans_cached syn keyword sqlOption Max_priority syn keyword sqlOption Max_query_tasks syn keyword sqlOption Max_recursive_iterations syn keyword sqlOption Max_statement_count syn keyword sqlOption Max_temp_space syn keyword sqlOption Min_password_length syn keyword sqlOption Min_role_admins syn keyword sqlOption Nearest_century syn keyword sqlOption Non_keywords syn keyword sqlOption Odbc_describe_binary_as_varbinary syn keyword sqlOption Odbc_distinguish_char_and_varchar syn keyword sqlOption Oem_string syn keyword sqlOption On_charset_conversion_failure syn keyword sqlOption On_tsql_error syn keyword sqlOption Optimization_goal syn keyword sqlOption Optimization_level syn keyword sqlOption Optimization_workload syn keyword sqlOption Pinned_cursor_percent_of_cache syn keyword sqlOption Post_login_procedure syn keyword sqlOption Precision syn keyword sqlOption Prefetch syn keyword sqlOption Preserve_source_format syn keyword sqlOption Prevent_article_pkey_update syn keyword sqlOption Priority syn keyword sqlOption Progress_messages syn keyword sqlOption Query_mem_timeout syn keyword sqlOption Quoted_identifier syn keyword sqlOption Read_past_deleted syn keyword sqlOption Recovery_time syn keyword sqlOption Remote_idle_timeout syn keyword sqlOption Replicate_all syn keyword sqlOption Request_timeout syn keyword sqlOption Reserved_keywords syn keyword sqlOption Return_date_time_as_string syn keyword sqlOption Rollback_on_deadlock syn keyword sqlOption Row_counts syn keyword sqlOption Scale syn keyword sqlOption Secure_feature_key syn keyword sqlOption Sort_collation syn keyword sqlOption Sql_flagger_error_level syn keyword sqlOption Sql_flagger_warning_level syn keyword sqlOption String_rtruncation syn keyword sqlOption st_geometry_asbinary_format syn keyword sqlOption st_geometry_astext_format syn keyword sqlOption st_geometry_asxml_format syn keyword sqlOption st_geometry_describe_type syn keyword sqlOption st_geometry_interpolation syn keyword sqlOption st_geometry_on_invalid syn keyword sqlOption Subsume_row_locks syn keyword sqlOption Suppress_tds_debugging syn keyword sqlOption Synchronize_mirror_on_commit syn keyword sqlOption Tds_empty_string_is_null syn keyword sqlOption Temp_space_limit_check syn keyword sqlOption Time_format syn keyword sqlOption Time_zone_adjustment syn keyword sqlOption Timestamp_format syn keyword sqlOption Timestamp_with_time_zone_format syn keyword sqlOption Truncate_timestamp_values syn keyword sqlOption Tsql_outer_joins syn keyword sqlOption Tsql_variables syn keyword sqlOption Updatable_statement_isolation syn keyword sqlOption Update_statistics syn keyword sqlOption Upgrade_database_capability syn keyword sqlOption User_estimates syn keyword sqlOption Uuid_has_hyphens syn keyword sqlOption Verify_password_function syn keyword sqlOption Wait_for_commit syn keyword sqlOption Webservice_namespace_host syn keyword sqlOption Webservice_sessionid_name syn region sqlString start=+"+ end=+"+ contains=@Spell syn region sqlString start=+'+ end=+'+ contains=@Spell syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" syn region sqlDashComment start=/--/ end=/$/ contains=@Spell syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell syn sync ccomment sqlComment syn sync ccomment sqlDashComment syn sync ccomment sqlSlashComment hi def link sqlDashComment Comment hi def link sqlSlashComment Comment hi def link sqlMultiComment Comment hi def link sqlNumber Number hi def link sqlOperator Operator hi def link sqlSpecial Special hi def link sqlKeyword Keyword hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlFunction Function hi def link sqlOption PreProc let b:current_syntax = "sqlanywhere" if exists("b:current_syntax") finish endif syntax case ignore setlocal iskeyword=a-z,A-Z,48-57,_,.,-,> syntax match sqlTriggers /on-.*$/ syntax match sqlTriggers /key-.*$/ syntax match sqlTriggers /post-.*$/ syntax match sqlTriggers /pre-.*$/ syntax match sqlTriggers /user-.*$/ syntax keyword sqlSpecial null false true syntax keyword sqlProcedure abort_query anchor_view bell block_menu break call syntax keyword sqlProcedure call_input call_query clear_block clear_eol syntax keyword sqlProcedure clear_field clear_form clear_record commit_form syntax keyword sqlProcedure copy count_query create_record default_value syntax keyword sqlProcedure delete_record display_error display_field down syntax keyword sqlProcedure duplicate_field duplicate_record edit_field syntax keyword sqlProcedure enter enter_query erase execute_query syntax keyword sqlProcedure execute_trigger exit_form first_Record go_block syntax keyword sqlProcedure go_field go_record help hide_menu hide_page host syntax keyword sqlProcedure last_record list_values lock_record message syntax keyword sqlProcedure move_view new_form next_block next_field next_key syntax keyword sqlProcedure next_record next_set pause post previous_block syntax keyword sqlProcedure previous_field previous_record print redisplay syntax keyword sqlProcedure replace_menu resize_view scroll_down scroll_up syntax keyword sqlProcedure set_field show_keys show_menu show_page syntax keyword sqlProcedure synchronize up user_exit syntax keyword sqlFunction block_characteristic error_code error_text syntax keyword sqlFunction error_type field_characteristic form_failure syntax keyword sqlFunction form_fatal form_success name_in syntax keyword sqlParameters hide no_hide replace no_replace ask_commit syntax keyword sqlParameters do_commit no_commit no_validate all_records syntax keyword sqlParameters for_update no_restrict restrict no_screen syntax keyword sqlParameters bar full_screen pull_down auto_help auto_skip syntax keyword sqlParameters fixed_length enterable required echo queryable syntax keyword sqlParameters updateable update_null upper_case attr_on syntax keyword sqlParameters attr_off base_table first_field last_field syntax keyword sqlParameters datatype displayed display_length field_length syntax keyword sqlParameters list page primary_key query_length x_pos y_pos syntax match sqlSystem /system\.block_status/ syntax match sqlSystem /system\.current_block/ syntax match sqlSystem /system\.current_field/ syntax match sqlSystem /system\.current_form/ syntax match sqlSystem /system\.current_value/ syntax match sqlSystem /system\.cursor_block/ syntax match sqlSystem /system\.cursor_field/ syntax match sqlSystem /system\.cursor_record/ syntax match sqlSystem /system\.cursor_value/ syntax match sqlSystem /system\.form_status/ syntax match sqlSystem /system\.last_query/ syntax match sqlSystem /system\.last_record/ syntax match sqlSystem /system\.message_level/ syntax match sqlSystem /system\.record_status/ syntax match sqlSystem /system\.trigger_block/ syntax match sqlSystem /system\.trigger_field/ syntax match sqlSystem /system\.trigger_record/ syntax match sqlSystem /\$\$date\$\$/ syntax match sqlSystem /\$\$time\$\$/ syntax keyword sqlKeyword accept access add as asc by check cluster column syntax keyword sqlKeyword compress connect current decimal default syntax keyword sqlKeyword desc exclusive file for from group syntax keyword sqlKeyword having identified immediate increment index syntax keyword sqlKeyword initial into is level maxextents mode modify syntax keyword sqlKeyword nocompress nowait of offline on online start syntax keyword sqlKeyword successful synonym table to trigger uid syntax keyword sqlKeyword unique user validate values view whenever syntax keyword sqlKeyword where with option order pctfree privileges syntax keyword sqlKeyword public resource row rowlabel rownum rows syntax keyword sqlKeyword session share size smallint sql\*forms_version syntax keyword sqlKeyword terse define form name title procedure begin syntax keyword sqlKeyword default_menu_application trigger block field syntax keyword sqlKeyword enddefine declare exception raise when cursor syntax keyword sqlKeyword definition base_table pragma syntax keyword sqlKeyword column_name global trigger_type text description syntax match sqlKeyword "<<<" syntax match sqlKeyword ">>>" syntax keyword sqlOperator not and or out to_number to_date message erase syntax keyword sqlOperator in any some all between exists substr nvl syntax keyword sqlOperator exception_init syntax keyword sqlOperator like escape trunc lpad rpad sum syntax keyword sqlOperator union intersect minus to_char greatest syntax keyword sqlOperator prior distinct decode least avg syntax keyword sqlOperator sysdate true false field_characteristic syntax keyword sqlOperator display_field call host syntax keyword sqlStatement alter analyze audit comment commit create syntax keyword sqlStatement delete drop explain grant insert lock noaudit syntax keyword sqlStatement rename revoke rollback savepoint select set syntax keyword sqlStatement truncate update if elsif loop then syntax keyword sqlStatement open fetch close else end syntax keyword sqlType char character date long raw mlslabel number rowid syntax keyword sqlType varchar varchar2 float integer boolean global syntax keyword sqlCodes sqlcode no_data_found too_many_rows others syntax keyword sqlCodes form_trigger_failure notfound found syntax keyword sqlCodes validate no_commit syntax region sqlComment start="/\*" end="\*/" syntax match sqlComment "--.*" syntax region sqlString start=+"+ skip=+\\\\\|\\"+ end=+"+ syntax region sqlString start=+'+ skip=+\\\\\|\\"+ end=+'+ syntax match sqlNumber "-\=\<[0-9]*\.\=[0-9_]\>" syntax sync ccomment sqlComment hi def link sqlComment Comment hi def link sqlKeyword Statement hi def link sqlNumber Number hi def link sqlOperator Statement hi def link sqlProcedure Statement hi def link sqlFunction Statement hi def link sqlSystem Identifier hi def link sqlSpecial Special hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlCodes Identifier hi def link sqlTriggers PreProc let b:current_syntax = "sqlforms" if exists("b:current_syntax") finish endif syn case ignore syn keyword sqlSpecial false null true syn keyword sqlFunction ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE syn keyword sqlFunction CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE syn keyword sqlFunction CURRENT_UTCTIME CURRENT_UTCTIMESTAMP syn keyword sqlFunction DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT syn keyword sqlFunction GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC syn keyword sqlFunction MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND syn keyword sqlFunction SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR syn keyword sqlFunction TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL syn keyword sqlFunction COUNT MIN MAX SUM AVG STDDEV VAR syn keyword sqlFunction CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB syn keyword sqlFunction TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR syn keyword sqlFunction TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL syn keyword sqlFunction TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY syn keyword sqlFunction ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT syn keyword sqlFunction EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND syn keyword sqlFunction SIGN SIN SINH SQRT TAN TANH UMINUS syn keyword sqlFunction ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM syn keyword sqlFunction NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE syn keyword sqlFunction SUBSTRING TRIM UCASE UNICODE UPPER syn keyword sqlFunction COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER syn keyword sqlFunction GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL syn keyword sqlFunction GET_NUM_SERVERS syn keyword sqlkeyword ALL AS AT BEFORE syn keyword sqlkeyword BEGIN BOTH BY syn keyword sqlkeyword CONDITION syn keyword sqlkeyword CURRVAL CURSOR DECLARE syn keyword sqlkeyword DISTINCT DO ELSE ELSEIF ELSIF syn keyword sqlkeyword END EXCEPTION EXEC syn keyword sqlkeyword FOR FROM GROUP syn keyword sqlkeyword HAVING IN syn keyword sqlkeyword INOUT INTO IS syn keyword sqlkeyword LEADING syn keyword sqlkeyword LOOP MINUS NATURAL NEXTVAL syn keyword sqlkeyword OF ON ORDER OUT syn keyword sqlkeyword PRIOR RETURN RETURNS REVERSE syn keyword sqlkeyword ROWID SELECT syn keyword sqlkeyword SQL START STOP SYSDATE syn keyword sqlkeyword SYSTIME SYSTIMESTAMP SYSUUID syn keyword sqlkeyword TRAILING USING UTCDATE syn keyword sqlkeyword UTCTIME UTCTIMESTAMP VALUES syn keyword sqlkeyword WHILE syn keyword sqlkeyword ANY SOME EXISTS ESCAPE syn keyword sqlkeyword IF syn keyword sqlKeyword WHEN THEN syn keyword sqlKeyword LANGUAGE DETECTION LINGUISTIC syn keyword sqlkeyword MIME TYPE syn keyword sqlkeyword EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH syn keyword sqlkeyword PHRASE INDEX RATIO REBUILD syn keyword sqlkeyword CONFIGURATION syn keyword sqlkeyword SEARCH ONLY syn keyword sqlkeyword FAST PREPROCESS syn keyword sqlkeyword SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE syn keyword sqlkeyword EVERY AFTER MINUTES DOCUMENTS SUSPEND syn keyword sqlkeyword AUDIT POLICY syn keyword sqlkeyword FULLTEXT syn keyword sqlkeyword SEQUENCE RESTART syn keyword sqlkeyword TABLE syn keyword sqlkeyword PROCEDURE STATISTICS syn keyword sqlkeyword SCHEMA syn keyword sqlkeyword SYNONYM syn keyword sqlkeyword VIEW syn keyword sqlkeyword COLUMN syn keyword sqlkeyword SYSTEM LICENSE syn keyword sqlkeyword SESSION syn keyword sqlkeyword CANCEL WORK syn keyword sqlkeyword PLAN CACHE syn keyword sqlkeyword LOGGING NOLOGGING RETENTION syn keyword sqlkeyword RECONFIGURE SERVICE syn keyword sqlkeyword RESET MONITORING syn keyword sqlkeyword SAVE DURATION PERFTRACE FUNCTION_PROFILER syn keyword sqlkeyword SAVEPOINT syn keyword sqlkeyword USER syn keyword sqlkeyword ROLE syn keyword sqlkeyword ASC DESC syn keyword sqlkeyword OWNED syn keyword sqlkeyword DEPENDENCIES SCRAMBLE syn keyword sqlkeyword INCREMENT MAXVALUE MINVALUE CYCLE syn keyword sqlkeyword HISTORY GLOBAL LOCAL TEMPORARY syn keyword sqlkeyword TRIGGER REFERENCING EACH DEFAULT syn keyword sqlkeyword SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW syn keyword sqlkeyword EXIT HANDLER SQL_ERROR_CODE syn keyword sqlkeyword TARGET CONDITION SIGNAL syn keyword sqlkeyword ADD DROP MODIFY GENERATED ALWAYS syn keyword sqlkeyword UNIQUE BTREE CPBTREE PRIMARY KEY syn keyword sqlkeyword CONSTRAINT PRELOAD NONE syn keyword sqlkeyword ROW THREADS BATCH syn keyword sqlkeyword MOVE PARTITION TO LOCATION PHYSICAL OTHERS syn keyword sqlkeyword ROUNDROBIN PARTITIONS HASH RANGE VALUE syn keyword sqlkeyword PERSISTENT DELTA AUTO AUTOMERGE syn keyword sqlkeyword AUDITING SUCCESSFUL UNSUCCESSFUL syn keyword sqlkeyword PRIVILEGE STRUCTURED CHANGE LEVEL syn keyword sqlkeyword EMERGENCY ALERT CRITICAL WARNING INFO syn keyword sqlkeyword DEBUG EXECUTE syn keyword sqlkeyword CASCADE RESTRICT PARAMETERS SCAN syn keyword sqlkeyword CLIENT CRASHDUMP EMERGENCYDUMP syn keyword sqlkeyword INDEXSERVER NAMESERVER DAEMON syn keyword sqlkeyword CLEAR REMOVE TRACES syn keyword sqlkeyword RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY syn keyword sqlkeyword INNER OUTER LEFT RIGHT FULL CROSS JOIN syn keyword sqlkeyword GROUPING SETS ROLLUP CUBE syn keyword sqlkeyword BEST LIMIT OFFSET syn keyword sqlkeyword WITH SUBTOTAL BALANCE TOTAL syn keyword sqlkeyword TEXT_FILTER FILL UP SORT MATCHES TOP syn keyword sqlkeyword RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS syn keyword sqlkeyword EXCLUSIVE MODE NOWAIT syn keyword sqlkeyword TRANSACTION ISOLATION READ COMMITTED syn keyword sqlkeyword REPEATABLE SERIALIZABLE WRITE syn keyword sqlkeyword SAML ASSERTION PROVIDER SUBJECT ISSUER syn keyword sqlkeyword PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS syn keyword sqlkeyword ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE syn keyword sqlkeyword ACTIVATE IDENTITY KERBEROS syn keyword sqlkeyword ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR syn keyword sqlkeyword OPTIMIZER OPTION syn keyword sqlkeyword RESOURCE STRUCTUREDPRIVILEGE TRACE syn keyword sqlkeyword CSV FILE CONTROL NO CHECK SKIP FIRST LIST syn keyword sqlkeyword RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT syn keyword sqlkeyword PUBLIC CONTENT_ADMIN MODELING MONITORING syn keyword sqlkeyword APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER syn keyword sqlkeyword DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS syn keyword sqlkeyword PART syn keyword sqlkeyword CONSTANT SQLEXCEPTION SQLWARNING syn keyword sqlOperator WHERE BETWEEN LIKE NULL CONTAINS syn keyword sqlOperator AND OR NOT CASE syn keyword sqlOperator UNION INTERSECT EXCEPT syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN syn keyword sqlStatement MERGE REPLACE UPSERT SELECT syn keyword sqlStatement SET UNSET LOAD UNLOAD syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK syn keyword sqlStatement GRANT REVOKE syn keyword sqlStatement EXPORT IMPORT syn keyword sqlType DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT syn keyword sqlType INT INTEGER BIGINT SMALLDECIMAL DECIMAL syn keyword sqlType REAL DOUBLE FLOAT syn keyword sqlType VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY syn keyword sqlType BLOB CLOB NCLOB TEXT DAYDATE syn keyword sqlOption Webservice_namespace_host syn region sqlString start=+"+ end=+"+ contains=@Spell syn region sqlString start=+'+ end=+'+ contains=@Spell syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" syn region sqlDashComment start=/--/ end=/$/ contains=@Spell syn region sqlSlashComment start=/\/\// end=/$/ contains=@Spell syn region sqlMultiComment start="/\*" end="\*/" contains=sqlMultiComment,@Spell syn cluster sqlComment contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell syn sync ccomment sqlComment syn sync ccomment sqlDashComment syn sync ccomment sqlSlashComment hi def link sqlDashComment Comment hi def link sqlSlashComment Comment hi def link sqlMultiComment Comment hi def link sqlNumber Number hi def link sqlOperator Operator hi def link sqlSpecial Special hi def link sqlKeyword Keyword hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlFunction Function hi def link sqlOption PreProc let b:current_syntax = "sqlhana" if exists("b:current_syntax") finish endif syn case ignore syn region sqlComment start="{" end="}" contains=sqlTodo syn match sqlComment "--.*$" contains=sqlTodo syn sync ccomment sqlComment syn keyword sqlBoolean true false syn keyword sqlBoolean null syn keyword sqlBoolean public user syn keyword sqlBoolean current today syn keyword sqlBoolean year month day hour minute second fraction syn region sqlString start=+"+ end=+"+ syn region sqlString start=+'+ end=+'+ syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" syn keyword sqlStatement allocate alter syn keyword sqlStatement begin syn keyword sqlStatement close commit connect create syn keyword sqlStatement database deallocate declare delete describe disconnect drop syn keyword sqlStatement execute fetch flush free get grant info insert syn keyword sqlStatement load lock open output syn keyword sqlStatement prepare put syn keyword sqlStatement rename revoke rollback select set start stop syn keyword sqlStatement truncate unload unlock update syn keyword sqlStatement whenever syn keyword sqlStatement call continue define syn keyword sqlStatement exit syn keyword sqlStatement let syn keyword sqlStatement return system trace syn keyword sqlConditional elif else if then syn keyword sqlConditional case syn match sqlConditional "end \+if" syn match sqlRepeat "for\( \+each \+row\)\=" syn keyword sqlRepeat foreach while syn match sqlRepeat "end \+for" syn match sqlRepeat "end \+foreach" syn match sqlRepeat "end \+while" syn match sqlException "on \+exception" syn match sqlException "end \+exception" syn match sqlException "end \+exception \+with \+resume" syn match sqlException "raise \+exception" syn keyword sqlKeyword aggregate add as authorization autofree by syn keyword sqlKeyword cache cascade check cluster collation syn keyword sqlKeyword column connection constraint cross syn keyword sqlKeyword dataskip debug default deferred_prepare syn keyword sqlKeyword descriptor diagnostics syn keyword sqlKeyword each escape explain external syn keyword sqlKeyword file foreign fragment from function syn keyword sqlKeyword group having syn keyword sqlKeyword immediate index inner into isolation syn keyword sqlKeyword join key syn keyword sqlKeyword left level log syn keyword sqlKeyword mode modify mounting new no syn keyword sqlKeyword object of old optical option syn keyword sqlKeyword optimization order outer syn keyword sqlKeyword pdqpriority pload primary procedure syn keyword sqlKeyword references referencing release reserve syn keyword sqlKeyword residency right role routine row syn keyword sqlKeyword schedule schema scratch session set syn keyword sqlKeyword statement statistics synonym syn keyword sqlKeyword table temp temporary timeout to transaction trigger syn keyword sqlKeyword using values view violations syn keyword sqlKeyword where with work syn match sqlKeyword "on \+\(exception\)\@!" syn match sqlKeyword "end \+\(if\|for\|foreach\|while\|exception\)\@!" syn keyword sqlKeyword resume returning syn keyword sqlOperator not and or syn keyword sqlOperator in is any some all between exists syn keyword sqlOperator like matches syn keyword sqlOperator union intersect syn keyword sqlOperator distinct unique syn keyword sqlFunction abs acos asin atan atan2 avg syn keyword sqlFunction cardinality cast char_length character_length cos count syn keyword sqlFunction exp filetoblob filetoclob hex syn keyword sqlFunction initcap length logn log10 lower lpad syn keyword sqlFunction min max mod octet_length pow range replace root round rpad syn keyword sqlFunction sin sqrt stdev substr substring sum syn keyword sqlFunction to_char tan to_date trim trunc upper variance syn keyword sqlType blob boolean byte char character clob syn keyword sqlType date datetime dec decimal double syn keyword sqlType float int int8 integer interval list lvarchar syn keyword sqlType money multiset nchar numeric nvarchar syn keyword sqlType real serial serial8 smallfloat smallint syn keyword sqlType text varchar varying syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE hi def link sqlComment Comment hi def link sqlNumber Number hi def link sqlBoolean Boolean hi def link sqlString String hi def link sqlStatement Statement hi def link sqlConditional Conditional hi def link sqlRepeat Repeat hi def link sqlKeyword Keyword hi def link sqlOperator Operator hi def link sqlException Exception hi def link sqlFunction Function hi def link sqlType Type hi def link sqlTodo Todo let b:current_syntax = "sqlinformix" if exists("b:current_syntax") finish endif source :p:h/java.vim syn case ignore syn keyword sqljSpecial null syn keyword sqljKeyword access add as asc by check cluster column syn keyword sqljKeyword compress connect current decimal default syn keyword sqljKeyword desc else exclusive file for from group syn keyword sqljKeyword having identified immediate increment index syn keyword sqljKeyword initial into is level maxextents mode modify syn keyword sqljKeyword nocompress nowait of offline on online start syn keyword sqljKeyword successful synonym table then to trigger uid syn keyword sqljKeyword unique user validate values view whenever syn keyword sqljKeyword where with option order pctfree privileges syn keyword sqljKeyword public resource row rowlabel rownum rows syn keyword sqljKeyword session share size smallint syn keyword sqljKeyword fetch database context iterator field join syn keyword sqljKeyword foreign outer inner isolation left right syn keyword sqljKeyword match primary key syn keyword sqljOperator not and or syn keyword sqljOperator in any some all between exists syn keyword sqljOperator like escape syn keyword sqljOperator union intersect minus syn keyword sqljOperator prior distinct syn keyword sqljOperator sysdate syn keyword sqljOperator max min avg sum count hex syn keyword sqljStatement alter analyze audit comment commit create syn keyword sqljStatement delete drop explain grant insert lock noaudit syn keyword sqljStatement rename revoke rollback savepoint select set syn keyword sqljStatement truncate update begin work syn keyword sqljType char character date long raw mlslabel number syn keyword sqljType rowid varchar varchar2 float integer syn keyword sqljType byte text serial syn region sqljString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region sqljString start=+'+ skip=+\\\\\|\\"+ end=+'+ syn match sqljNumber "-\=\<\d*\.\=[0-9_]\>" syn match sqljPre "#sql" syn region sqljComment start="/\*" end="\*/" syn match sqlComment "--.*" syn sync ccomment sqljComment hi def link sqljComment Comment hi def link sqljKeyword sqljSpecial hi def link sqljNumber Number hi def link sqljOperator sqljStatement hi def link sqljSpecial Special hi def link sqljStatement Statement hi def link sqljString String hi def link sqljType Type hi def link sqljPre PreProc let b:current_syntax = "sqlj" if exists("b:current_syntax") finish endif syn case ignore syn keyword sqlSpecial false null true syn keyword sqlKeyword access add as asc begin by case check cluster column syn keyword sqlKeyword cache compress connect current cursor decimal default desc syn keyword sqlKeyword else elsif end exception exclusive file for from syn keyword sqlKeyword function group having identified if immediate increment syn keyword sqlKeyword index initial initrans into is level link logging loop syn keyword sqlKeyword maxextents maxtrans mode modify monitoring syn keyword sqlKeyword nocache nocompress nologging noparallel nowait of offline on online start syn keyword sqlKeyword parallel successful synonym table tablespace then to trigger uid syn keyword sqlKeyword unique user validate values view when whenever syn keyword sqlKeyword where with option order pctfree pctused privileges procedure syn keyword sqlKeyword public resource return row rowlabel rownum rows syn keyword sqlKeyword session share size smallint type using syn keyword sqlKeyword join cross inner outer left right syn keyword sqlOperator not and or syn keyword sqlOperator in any some all between exists syn keyword sqlOperator like escape syn keyword sqlOperator union intersect minus syn keyword sqlOperator prior distinct syn keyword sqlOperator sysdate out syn keyword sqlStatement analyze audit comment commit syn keyword sqlStatement delete drop execute explain grant lock noaudit syn keyword sqlStatement rename revoke rollback savepoint set syn keyword sqlStatement truncate syn keyword sqlStatement create update alter select insert contained syn keyword sqlType bfile blob boolean char character clob date datetime syn keyword sqlType dec decimal float int integer long mlslabel nchar syn keyword sqlType nclob number numeric nvarchar2 precision raw rowid syn keyword sqlType smallint real timestamp urowid varchar varchar2 varray syn region sqlString matchgroup=Quote start=+n\?"+ end=+"+ syn region sqlString matchgroup=Quote start=+n\?'+ end=+'+ syn region sqlString matchgroup=Quote start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ syn region sqlString matchgroup=Quote start=+n\?q'<+ end=+>'+ syn region sqlString matchgroup=Quote start=+n\?q'{+ end=+}'+ syn region sqlString matchgroup=Quote start=+n\?q'(+ end=+)'+ syn region sqlString matchgroup=Quote start=+n\?q'\[+ end=+]'+ syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>" syn region sqlComment start="/\*" end="\*/" contains=sqlTodo,@Spell fold syn match sqlComment "--.*$" contains=sqlTodo,@Spell syn match sqlComment "^rem.*$" contains=sqlTodo,@Spell syn region sqlFold start='^\s*\zs\c\(Create\|Update\|Alter\|Select\|Insert\)' end=';$\|^$' transparent fold contains=ALL syn sync ccomment sqlComment syn keyword sqlFunction avg collect corr corr_s corr_k count covar_pop covar_samp cume_dist dense_rank first syn keyword sqlFunction group_id grouping grouping_id last max median min percentile_cont percentile_disc percent_rank rank syn keyword sqlFunction regr_slope regr_intercept regr_count regr_r2 regr_avgx regr_avgy regr_sxx regr_syy regr_sxy syn keyword sqlFunction stats_binomial_test stats_crosstab stats_f_test stats_ks_test stats_mode stats_mw_test syn keyword sqlFunction stats_one_way_anova stats_t_test_one stats_t_test_paired stats_t_test_indep stats_t_test_indepu syn keyword sqlFunction stats_wsr_test stddev stddev_pop stddev_samp sum syn keyword sqlFunction sys_xmlagg var_pop var_samp variance xmlagg syn keyword sqlFunction ascii chr concat initcap instr length lower lpad ltrim syn keyword sqlFunction nls_initcap nls_lower nlssort nls_upper regexp_instr regexp_replace syn keyword sqlFunction regexp_substr replace rpad rtrim soundex substr translate treat trim upper syn keyword sqlFunction greatest least syn keyword sqlFunction asciistr bin_to_num cast chartorowid compose convert syn keyword sqlFunction decompose hextoraw numtodsinterval numtoyminterval rawtohex rawtonhex rowidtochar syn keyword sqlFunction rowidtonchar scn_to_timestamp timestamp_to_scn to_binary_double to_binary_float syn keyword sqlFunction to_char to_char to_char to_clob to_date to_dsinterval to_lob to_multi_byte syn keyword sqlFunction to_nchar to_nchar to_nchar to_nclob to_number to_dsinterval to_single_byte syn keyword sqlFunction to_timestamp to_timestamp_tz to_yminterval to_yminterval translate unistr syn keyword sqlFunction cluster_id cluster_probability cluster_set feature_id feature_set syn keyword sqlFunction feature_value prediction prediction_bounds prediction_cost syn keyword sqlFunction prediction_details prediction_probability prediction_set syn keyword sqlFunction add_months current_date current_timestamp dbtimezone extract syn keyword sqlFunction from_tz last_day localtimestamp months_between new_time syn keyword sqlFunction next_day numtodsinterval numtoyminterval round sessiontimezone syn keyword sqlFunction sys_extract_utc sysdate systimestamp to_char to_timestamp syn keyword sqlFunction to_timestamp_tz to_dsinterval to_yminterval trunc tz_offset syn keyword sqlFunction abs acos asin atan atan2 bitand ceil cos cosh exp syn keyword sqlFunction floor ln log mod nanvl power remainder round sign syn keyword sqlFunction sin sinh sqrt tan tanh trunc width_bucket syn keyword sqlFunction ls_charset_decl_len nls_charset_id nls_charset_name syn keyword sqlFunction bfilename cardin coalesce collect decode dump empty_blob empty_clob syn keyword sqlFunction lnnvl nullif nvl nvl2 ora_hash powermultiset powermultiset_by_cardinality syn keyword sqlFunction sys_connect_by_path sys_context sys_guid sys_typeid uid user userenv vsizeality syn keyword sqlFunction appendchildxml deletexml depth extract existsnode extractvalue insertchildxml syn keyword sqlFunction insertxmlbefore path sys_dburigen sys_xmlagg sys_xmlgen updatexml xmlagg xmlcast syn keyword sqlFunction xmlcdata xmlcolattval xmlcomment xmlconcat xmldiff xmlelement xmlexists xmlforest syn keyword sqlFunction xmlparse xmlpatch xmlpi xmlquery xmlroot xmlsequence xmlserialize xmltable xmltransform syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE contained hi def link Quote Special hi def link sqlComment Comment hi def link sqlFunction Function hi def link sqlKeyword sqlSpecial hi def link sqlNumber Number hi def link sqlOperator sqlStatement hi def link sqlSpecial Special hi def link sqlStatement Statement hi def link sqlString String hi def link sqlType Type hi def link sqlTodo Todo let b:current_syntax = "sql" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,-,#,$,{,} syn case ignore syn keyword sqrSection begin-footing begin-heading begin-procedure syn keyword sqrSection begin-program begin-report begin-setup syn keyword sqrSection end-footing end-heading end-procedure syn keyword sqrSection end-program end-report end-setup syn keyword sqrParagraph alter-color-map alter-connection syn keyword sqrParagraph alter-locale alter-printer alter-report syn keyword sqrParagraph begin-document begin-execute begin-select syn keyword sqrParagraph begin-sql declare-chart declare-image syn keyword sqrParagraph declare-color-map declare-connection syn keyword sqrParagraph declare-layout declare-printer syn keyword sqrParagraph declare-report declare-procedure syn keyword sqrParagraph declare-toc declare-variable end-declare syn keyword sqrParagraph end-document end-select exit-select end-sql syn keyword sqrParagraph load-lookup syn keyword sqrReserved #current-column #current-date #current-line syn keyword sqrReserved #end-file #page-count #return-status syn keyword sqrReserved #sql-count #sql-status #sqr-max-columns syn keyword sqrReserved #sqr-max-lines #sqr-pid #sqr-toc-level syn keyword sqrReserved #sqr-toc-page $sqr-database {sqr-database} syn keyword sqrReserved $sqr-dbcs {sqr-dbcs} $sqr-encoding syn keyword sqrReserved {sqr-encoding} $sqr-encoding-console syn keyword sqrReserved {sqr-encoding-console} syn keyword sqrReserved $sqr-encoding-database syn keyword sqrReserved {sqr-encoding-database} syn keyword sqrReserved $sqr-encoding-file-input syn keyword sqrReserved {sqr-encoding-file-input} syn keyword sqrReserved $sqr-encoding-file-output syn keyword sqrReserved {sqr-encoding-file-output} syn keyword sqrReserved $sqr-encoding-report-input syn keyword sqrReserved {sqr-encoding-report-input} syn keyword sqrReserved $sqr-encoding-report-output syn keyword sqrReserved {sqr-encoding-report-output} syn keyword sqrReserved $sqr-encoding-source {sqr-encoding-source} syn keyword sqrReserved $sql-error $sqr-hostname {sqr-hostname} syn keyword sqrReserved $sqr-locale $sqr-platform {sqr-platform} syn keyword sqrReserved $sqr-program $sqr-report $sqr-toc-text syn keyword sqrReserved $sqr-ver $username syn keyword sqrPreProc #define #else #end-if #endif #if #ifdef syn keyword sqrPreProc #ifndef #include syn keyword sqrCommand add array-add array-divide array-multiply syn keyword sqrCommand array-subtract ask break call clear-array syn keyword sqrCommand close columns commit concat connect syn keyword sqrCommand create-array create-color-palette date-time syn keyword sqrCommand display divide do dollar-symbol else encode syn keyword sqrCommand end-evaluate end-if end-while evaluate syn keyword sqrCommand execute extract find get get-color goto syn keyword sqrCommand graphic if input last-page let lookup syn keyword sqrCommand lowercase mbtosbs money-symbol move syn keyword sqrCommand multiply new-page new-report next-column syn keyword sqrCommand next-listing no-formfeed open page-number syn keyword sqrCommand page-size position print print-bar-code syn keyword sqrCommand print-chart print-direct print-image syn keyword sqrCommand printer-deinit printer-init put read syn keyword sqrCommand rollback security set-color set-delay-print syn keyword sqrCommand set-generations set-levels set-members syn keyword sqrCommand sbtombs show stop string subtract toc-entry syn keyword sqrCommand unstring uppercase use use-column syn keyword sqrCommand use-printer-type use-procedure use-report syn keyword sqrCommand while write syn keyword sqrParam 3d-effects after after-bold after-page syn keyword sqrParam after-report after-toc and as at-end before syn keyword sqrParam background batch-mode beep before-bold syn keyword sqrParam before-page before-report before-toc blink syn keyword sqrParam bold border bottom-margin box break by syn keyword sqrParam caption center char char-size char-width syn keyword sqrParam chars-inch chart-size checksum cl syn keyword sqrParam clear-line clear-screen color color-palette syn keyword sqrParam cs color_ data-array syn keyword sqrParam data-array-column-count syn keyword sqrParam data-array-column-labels syn keyword sqrParam data-array-row-count data-labels date syn keyword sqrParam date-edit-mask date-seperator syn keyword sqrParam day-of-week-case day-of-week-full syn keyword sqrParam day-of-week-short decimal decimal-seperator syn keyword sqrParam default-numeric delay distinct dot-leader syn keyword sqrParam edit-option-ad edit-option-am syn keyword sqrParam edit-option-bc edit-option-na syn keyword sqrParam edit-option-pm encoding entry erase-page syn keyword sqrParam extent field fill fixed fixed_nolf float syn keyword sqrParam font font-style font-type footing syn keyword sqrParam footing-size foreground for-append syn keyword sqrParam for-reading for-reports for-tocs syn keyword sqrParam for-writing format formfeed from goto-top syn keyword sqrParam group having heading heading-size height syn keyword sqrParam horz-line image-size in indentation syn keyword sqrParam init-string input-date-edit-mask insert syn keyword sqrParam integer into item-color item-size key syn keyword sqrParam layout left-margin legend legend-placement syn keyword sqrParam legend-presentation legend-title level syn keyword sqrParam line-height line-size line-width lines-inch syn keyword sqrParam local locale loops max-columns max-lines syn keyword sqrParam maxlen money money-edit-mask money-sign syn keyword sqrParam money-sign-location months-case months-full syn keyword sqrParam months-short name need newline newpage syn keyword sqrParam no-advance nolf noline noprompt normal not syn keyword sqrParam nowait number number-edit-mask on-break syn keyword sqrParam on-error or order orientation page-depth syn keyword sqrParam paper-size pie-segment-explode syn keyword sqrParam pie-segment-percent-display syn keyword sqrParam pie-segment-quantity-display pitch syn keyword sqrParam point-markers point-size printer syn keyword sqrParam printer-type quiet record reset-string syn keyword sqrParam return_value reverse right-margin rows save syn keyword sqrParam select size skip skiplines sort source syn keyword sqrParam sqr-database sqr-platform startup-file syn keyword sqrParam status stop sub-title symbol-set system syn keyword sqrParam table text thousand-seperator syn keyword sqrParam time-seperator times title to toc syn keyword sqrParam top-margin type underline update using syn keyword sqrParam value vary vert-line wait warn when syn keyword sqrParam when-other where with x-axis-grid syn keyword sqrParam x-axis-label x-axis-major-increment syn keyword sqrParam x-axis-major-tick-marks x-axis-max-value syn keyword sqrParam x-axis-min-value x-axis-minor-increment syn keyword sqrParam x-axis-minor-tick-marks x-axis-rotate syn keyword sqrParam x-axis-scale x-axis-tick-mark-placement xor syn keyword sqrParam y-axis-grid y-axis-label syn keyword sqrParam y-axis-major-increment syn keyword sqrParam y-axis-major-tick-marks y-axis-max-value syn keyword sqrParam y-axis-min-value y-axis-minor-increment syn keyword sqrParam y-axis-minor-tick-marks y-axis-scale syn keyword sqrParam y-axis-tick-mark-placement y2-type syn keyword sqrParam y2-data-array y2-data-array-row-count syn keyword sqrParam y2-data-array-column-count syn keyword sqrParam y2-data-array-column-labels syn keyword sqrParam y2-axis-color-palette y2-axis-label syn keyword sqrParam y2-axis-major-increment syn keyword sqrParam y2-axis-major-tick-marks y2-axis-max-value syn keyword sqrParam y2-axis-min-value y2-axis-minor-increment syn keyword sqrParam y2-axis-minor-tick-marks y2-axis-scale syn keyword sqrFunction abs acos asin atan array ascii asciic ceil syn keyword sqrFunction cos cosh chr cond deg delete dateadd syn keyword sqrFunction datediff datenow datetostr e10 exp edit syn keyword sqrFunction exists floor getenv instr instrb isblank syn keyword sqrFunction isnull log log10 length lengthb lengthp syn keyword sqrFunction lengtht lower lpad ltrim mod nvl power rad syn keyword sqrFunction round range replace roman rpad rtrim rename syn keyword sqrFunction sign sin sinh sqrt substr substrb substrp syn keyword sqrFunction substrt strtodate tan tanh trunc to_char syn keyword sqrFunction to_multi_byte to_number to_single_byte syn keyword sqrFunction transform translate unicode upper wrapdepth syn match sqrVariable /\(\$\|#\|&\)\(\k\|\.\)*/ syn match sqrPreProc /\s*#debug\a\=\(\s\|$\)/ syn match sqrSubstVar /{\k*}/ syn match sqrString /'\(!!\|[^!']\)*'/ contains=sqrSubstVar syn match sqrStrOpen /'\(!!\|''\|[^!']\)*$/ syn match sqrError /'\(!!\|[^'!]\)*![^!]/me=e-1 syn match sqrError /'\(!!\|[^'!]\)*!$/ syn match sqrNumber /-\=\<\d*\.\=[0-9_]\>/ syn keyword sqrTodo TODO FIXME XXX DEBUG NOTE ### syn match sqrTodo /???/ syn match sqrComment /!\@" syn match squidIP "\<\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\>" syn match squidStr "\(^\s*acl\s\+\S\+\s\+\(\S*_regex\|re[pq]_mime_type\|browser\|_domain\|user\)\+\s\+\)\@<=.*" contains=squidRegexOpt syn match squidRegexOpt contained "\(^\s*acl\s\+\S\+\s\+\S\+\(_regex\|_mime_type\)\s\+\)\@<=[-+]i\s\+" syn sync minlines=3 hi def link squidTodo Todo hi def link squidComment Comment hi def link squidTag Special hi def link squidConf Keyword hi def link squidOpt Constant hi def link squidAction String hi def link squidNumber Number hi def link squidIP Number hi def link squidAcl Keyword hi def link squidStr String hi def link squidRegexOpt Special let b:current_syntax = "squid" if exists("b:current_syntax") finish endif syn match srecRecStart "^S" syn match srecRecTypeUnknown "^S." contains=srecRecStart syn match srecRecType "^S[0-35-9]" contains=srecRecStart syn match srecByteCount "^S.[0-9a-fA-F]\{2}" contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum syn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType syn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=srecAddressFieldUnknown,srecChecksum syn match srecNoAddress "^S0[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum syn match srecDataAddress "^S1[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum syn match srecDataAddress "^S2[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum syn match srecDataAddress "^S3[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum syn match srecRecCount "^S5[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum syn match srecRecCount "^S6[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum syn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum syn match srecStartAddress "^S8[0-9a-fA-F]\{8}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum syn match srecStartAddress "^S9[0-9a-fA-F]\{6}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum syn match srecDataOdd "[0-9a-fA-F]\{2}" contained nextgroup=srecDataEven,srecChecksum syn match srecDataEven "[0-9a-fA-F]\{2}" contained nextgroup=srecDataOdd,srecChecksum syn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=srecDataUnexpected,srecChecksum syn match srecChecksum "[0-9a-fA-F]\{2}$" contained hi def link srecRecStart srecRecType hi def link srecRecTypeUnknown srecRecType hi def link srecRecType WarningMsg hi def link srecByteCount Constant hi def srecAddressFieldUnknown term=italic cterm=italic gui=italic hi def link srecNoAddress DiffAdd hi def link srecDataAddress Comment hi def link srecRecCount srecNoAddress hi def link srecStartAddress srecDataAddress hi def srecDataOdd term=bold cterm=bold gui=bold hi def srecDataEven term=NONE cterm=NONE gui=NONE hi def link srecDataUnexpected Error hi def link srecChecksum DiffChange let b:current_syntax = "srec" if exists("b:current_syntax") finish endif setlocal iskeyword=_,-,a-z,A-Z,48-57 syn case match syn match sshconfigComment "^#.*$" contains=sshconfigTodo syn match sshconfigComment "\s#.*$" contains=sshconfigTodo syn keyword sshconfigTodo TODO FIXME NOTE contained syn keyword sshconfigYesNo yes no ask confirm syn keyword sshconfigYesNo any auto syn keyword sshconfigYesNo force autoask none syn keyword sshconfigCipher 3des blowfish syn keyword sshconfigCiphers 3des-cbc syn keyword sshconfigCiphers blowfish-cbc syn keyword sshconfigCiphers cast128-cbc syn keyword sshconfigCiphers arcfour syn keyword sshconfigCiphers arcfour128 syn keyword sshconfigCiphers arcfour256 syn keyword sshconfigCiphers aes128-cbc syn keyword sshconfigCiphers aes192-cbc syn keyword sshconfigCiphers aes256-cbc syn match sshconfigCiphers "\" syn keyword sshconfigCiphers aes128-ctr syn keyword sshconfigCiphers aes192-ctr syn keyword sshconfigCiphers aes256-ctr syn match sshconfigCiphers "\" syn match sshconfigCiphers "\" syn match sshconfigCiphers "\" syn keyword sshconfigMAC hmac-sha1 syn keyword sshconfigMAC mac-sha1-96 syn keyword sshconfigMAC mac-sha2-256 syn keyword sshconfigMAC mac-sha2-512 syn keyword sshconfigMAC mac-md5 syn keyword sshconfigMAC mac-md5-96 syn keyword sshconfigMAC mac-ripemd160 syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn match sshconfigMAC "\" syn keyword sshconfigHostKeyAlgo ssh-ed25519 syn match sshconfigHostKeyAlgo "\" syn keyword sshconfigHostKeyAlgo ssh-rsa syn keyword sshconfigHostKeyAlgo ssh-dss syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp256 syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp384 syn keyword sshconfigHostKeyAlgo ecdsa-sha2-nistp521 syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn match sshconfigHostKeyAlgo "\" syn keyword sshconfigPreferredAuth hostbased publickey password gssapi-with-mic syn keyword sshconfigPreferredAuth keyboard-interactive syn keyword sshconfigLogLevel QUIET FATAL ERROR INFO VERBOSE syn keyword sshconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 syn keyword sshconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 syn keyword sshconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 syn keyword sshconfigAddressFamily inet inet6 syn match sshconfigIPQoS "af1[123]" syn match sshconfigIPQoS "af2[123]" syn match sshconfigIPQoS "af3[123]" syn match sshconfigIPQoS "af4[123]" syn match sshconfigIPQoS "cs[0-7]" syn keyword sshconfigIPQoS ef lowdelay throughput reliability syn keyword sshconfigKbdInteractive bsdauth pam skey syn keyword sshconfigKexAlgo diffie-hellman-group1-sha1 syn keyword sshconfigKexAlgo diffie-hellman-group14-sha1 syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha1 syn keyword sshconfigKexAlgo diffie-hellman-group-exchange-sha256 syn keyword sshconfigKexAlgo ecdh-sha2-nistp256 syn keyword sshconfigKexAlgo ecdh-sha2-nistp384 syn keyword sshconfigKexAlgo ecdh-sha2-nistp521 syn match sshconfigKexAlgo "\" syn keyword sshconfigTunnel point-to-point ethernet syn match sshconfigVar "%[rhplLdun]\>" syn match sshconfigSpecial "[*?]" syn match sshconfigNumber "\d\+" syn match sshconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" syn match sshconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>" syn match sshconfigHostPort "\(Host \)\@<=.\+" syn match sshconfigHostPort "\(HostName \)\@<=.\+" syn case ignore syn keyword sshconfigHostSect Host syn keyword sshconfigMatch canonical exec host originalhost user localuser all syn keyword sshconfigKeyword AddressFamily syn keyword sshconfigKeyword AddKeysToAgent syn keyword sshconfigKeyword BatchMode syn keyword sshconfigKeyword BindAddress syn keyword sshconfigKeyword CanonicalDomains syn keyword sshconfigKeyword CanonicalizeFallbackLocal syn keyword sshconfigKeyword CanonicalizeHostname syn keyword sshconfigKeyword CanonicalizeMaxDots syn keyword sshconfigKeyword CertificateFile syn keyword sshconfigKeyword ChallengeResponseAuthentication syn keyword sshconfigKeyword CheckHostIP syn keyword sshconfigKeyword Cipher syn keyword sshconfigKeyword Ciphers syn keyword sshconfigKeyword ClearAllForwardings syn keyword sshconfigKeyword Compression syn keyword sshconfigKeyword CompressionLevel syn keyword sshconfigKeyword ConnectTimeout syn keyword sshconfigKeyword ConnectionAttempts syn keyword sshconfigKeyword ControlMaster syn keyword sshconfigKeyword ControlPath syn keyword sshconfigKeyword ControlPersist syn keyword sshconfigKeyword DynamicForward syn keyword sshconfigKeyword EnableSSHKeysign syn keyword sshconfigKeyword EscapeChar syn keyword sshconfigKeyword ExitOnForwardFailure syn keyword sshconfigKeyword ForwardAgent syn keyword sshconfigKeyword ForwardX11 syn keyword sshconfigKeyword ForwardX11Timeout syn keyword sshconfigKeyword ForwardX11Trusted syn keyword sshconfigKeyword GSSAPIAuthentication syn keyword sshconfigKeyword GSSAPIClientIdentity syn keyword sshconfigKeyword GSSAPIDelegateCredentials syn keyword sshconfigKeyword GSSAPIKeyExchange syn keyword sshconfigKeyword GSSAPIRenewalForcesRekey syn keyword sshconfigKeyword GSSAPIServerIdentity syn keyword sshconfigKeyword GSSAPITrustDNS syn keyword sshconfigKeyword GSSAPITrustDns syn keyword sshconfigKeyword GatewayPorts syn keyword sshconfigKeyword GlobalKnownHostsFile syn keyword sshconfigKeyword HashKnownHosts syn keyword sshconfigKeyword HostKeyAlgorithms syn keyword sshconfigKeyword HostKeyAlias syn keyword sshconfigKeyword HostName syn keyword sshconfigKeyword HostbasedAuthentication syn keyword sshconfigKeyword HostbasedKeyTypes syn keyword sshconfigKeyword IPQoS syn keyword sshconfigKeyword IdentitiesOnly syn keyword sshconfigKeyword IdentityFile syn keyword sshconfigKeyword IgnoreUnknown syn keyword sshconfigKeyword Include syn keyword sshconfigKeyword IPQoS syn keyword sshconfigKeyword KbdInteractiveAuthentication syn keyword sshconfigKeyword KbdInteractiveDevices syn keyword sshconfigKeyword KexAlgorithms syn keyword sshconfigKeyword LocalCommand syn keyword sshconfigKeyword LocalForward syn keyword sshconfigKeyword LogLevel syn keyword sshconfigKeyword MACs syn keyword sshconfigKeyword Match syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost syn keyword sshconfigKeyword NumberOfPasswordPrompts syn keyword sshconfigKeyword PKCS11Provider syn keyword sshconfigKeyword PasswordAuthentication syn keyword sshconfigKeyword PermitLocalCommand syn keyword sshconfigKeyword Port syn keyword sshconfigKeyword PreferredAuthentications syn keyword sshconfigKeyword Protocol syn keyword sshconfigKeyword ProxyCommand syn keyword sshconfigKeyword ProxyJump syn keyword sshconfigKeyword ProxyUseFDPass syn keyword sshconfigKeyword PubkeyAcceptedKeyTypes syn keyword sshconfigKeyword PubkeyAuthentication syn keyword sshconfigKeyword RSAAuthentication syn keyword sshconfigKeyword RekeyLimit syn keyword sshconfigKeyword RemoteForward syn keyword sshconfigKeyword RequestTTY syn keyword sshconfigKeyword RhostsRSAAuthentication syn keyword sshconfigKeyword SendEnv syn keyword sshconfigKeyword ServerAliveCountMax syn keyword sshconfigKeyword ServerAliveInterval syn keyword sshconfigKeyword SmartcardDevice syn keyword sshconfigKeyword StrictHostKeyChecking syn keyword sshconfigKeyword TCPKeepAlive syn keyword sshconfigKeyword Tunnel syn keyword sshconfigKeyword TunnelDevice syn keyword sshconfigKeyword UseBlacklistedKeys syn keyword sshconfigKeyword UsePrivilegedPort syn keyword sshconfigKeyword User syn keyword sshconfigKeyword UserKnownHostsFile syn keyword sshconfigKeyword UseRoaming syn keyword sshconfigKeyword VerifyHostKeyDNS syn keyword sshconfigKeyword VisualHostKey syn keyword sshconfigKeyword XAuthLocation hi def link sshconfigComment Comment hi def link sshconfigTodo Todo hi def link sshconfigHostPort sshconfigConstant hi def link sshconfigNumber sshconfigConstant hi def link sshconfigConstant Constant hi def link sshconfigYesNo sshconfigEnum hi def link sshconfigCipher sshconfigEnum hi def link sshconfigCiphers sshconfigEnum hi def link sshconfigMAC sshconfigEnum hi def link sshconfigHostKeyAlgo sshconfigEnum hi def link sshconfigLogLevel sshconfigEnum hi def link sshconfigSysLogFacility sshconfigEnum hi def link sshconfigAddressFamily sshconfigEnum hi def link sshconfigIPQoS sshconfigEnum hi def link sshconfigKbdInteractive sshconfigEnum hi def link sshconfigKexAlgo sshconfigEnum hi def link sshconfigTunnel sshconfigEnum hi def link sshconfigPreferredAuth sshconfigEnum hi def link sshconfigVar sshconfigEnum hi def link sshconfigEnum Identifier hi def link sshconfigSpecial Special hi def link sshconfigKeyword Keyword hi def link sshconfigHostSect Type hi def link sshconfigMatch Type let b:current_syntax = "sshconfig" if exists("b:current_syntax") finish endif setlocal iskeyword=_,-,a-z,A-Z,48-57 syn case match syn match sshdconfigComment "^#.*$" contains=sshdconfigTodo syn match sshdconfigComment "\s#.*$" contains=sshdconfigTodo syn keyword sshdconfigTodo TODO FIXME NOTE contained syn keyword sshdconfigYesNo yes no none syn keyword sshdconfigAddressFamily any inet inet6 syn keyword sshdconfigPrivilegeSeparation sandbox syn keyword sshdconfigTcpForwarding local remote syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only syn keyword sshdconfigCiphers 3des-cbc syn keyword sshdconfigCiphers blowfish-cbc syn keyword sshdconfigCiphers cast128-cbc syn keyword sshdconfigCiphers arcfour syn keyword sshdconfigCiphers arcfour128 syn keyword sshdconfigCiphers arcfour256 syn keyword sshdconfigCiphers aes128-cbc syn keyword sshdconfigCiphers aes192-cbc syn keyword sshdconfigCiphers aes256-cbc syn match sshdconfigCiphers "\" syn keyword sshdconfigCiphers aes128-ctr syn keyword sshdconfigCiphers aes192-ctr syn keyword sshdconfigCiphers aes256-ctr syn match sshdconfigCiphers "\" syn match sshdconfigCiphers "\" syn match sshdconfigCiphers "\" syn keyword sshdconfigMAC hmac-sha1 syn keyword sshdconfigMAC mac-sha1-96 syn keyword sshdconfigMAC mac-sha2-256 syn keyword sshdconfigMAC mac-sha2-512 syn keyword sshdconfigMAC mac-md5 syn keyword sshdconfigMAC mac-md5-96 syn keyword sshdconfigMAC mac-ripemd160 syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn match sshdconfigMAC "\" syn keyword sshdconfigHostKeyAlgo ssh-ed25519 syn match sshdconfigHostKeyAlgo "\" syn keyword sshdconfigHostKeyAlgo ssh-rsa syn keyword sshdconfigHostKeyAlgo ssh-dss syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp256 syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp384 syn keyword sshdconfigHostKeyAlgo ecdsa-sha2-nistp521 syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn match sshdconfigHostKeyAlgo "\" syn keyword sshdconfigRootLogin prohibit-password without-password forced-commands-only syn keyword sshdconfigLogLevel QUIET FATAL ERROR INFO VERBOSE syn keyword sshdconfigLogLevel DEBUG DEBUG1 DEBUG2 DEBUG3 syn keyword sshdconfigSysLogFacility DAEMON USER AUTH AUTHPRIV LOCAL0 LOCAL1 syn keyword sshdconfigSysLogFacility LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7 syn keyword sshdconfigCompression delayed syn match sshdconfigIPQoS "af1[123]" syn match sshdconfigIPQoS "af2[123]" syn match sshdconfigIPQoS "af3[123]" syn match sshdconfigIPQoS "af4[123]" syn match sshdconfigIPQoS "cs[0-7]" syn keyword sshdconfigIPQoS ef lowdelay throughput reliability syn keyword sshdconfigKexAlgo diffie-hellman-group1-sha1 syn keyword sshdconfigKexAlgo diffie-hellman-group14-sha1 syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha1 syn keyword sshdconfigKexAlgo diffie-hellman-group-exchange-sha256 syn keyword sshdconfigKexAlgo ecdh-sha2-nistp256 syn keyword sshdconfigKexAlgo ecdh-sha2-nistp384 syn keyword sshdconfigKexAlgo ecdh-sha2-nistp521 syn match sshdconfigKexAlgo "\" syn keyword sshdconfigTunnel point-to-point ethernet syn keyword sshdconfigSubsystem internal-sftp syn match sshdconfigVar "%[hu]\>" syn match sshdconfigVar "%%" syn match sshdconfigSpecial "[*?]" syn match sshdconfigNumber "\d\+" syn match sshdconfigHostPort "\<\(\d\{1,3}\.\)\{3}\d\{1,3}\(:\d\+\)\?\>" syn match sshdconfigHostPort "\<\([-a-zA-Z0-9]\+\.\)\+[-a-zA-Z0-9]\{2,}\(:\d\+\)\?\>" syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>" syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>" syn case ignore syn keyword sshdconfigMatch Host User Group Address LocalAddress LocalPort syn keyword sshdconfigKeyword AcceptEnv syn keyword sshdconfigKeyword AddressFamily syn keyword sshdconfigKeyword AllowAgentForwarding syn keyword sshdconfigKeyword AllowGroups syn keyword sshdconfigKeyword AllowStreamLocalForwarding syn keyword sshdconfigKeyword AllowTcpForwarding syn keyword sshdconfigKeyword AllowUsers syn keyword sshdconfigKeyword AuthenticationMethods syn keyword sshdconfigKeyword AuthorizedKeysFile syn keyword sshdconfigKeyword AuthorizedKeysCommand syn keyword sshdconfigKeyword AuthorizedKeysCommandUser syn keyword sshdconfigKeyword AuthorizedPrincipalsCommand syn keyword sshdconfigKeyword AuthorizedPrincipalsCommandUser syn keyword sshdconfigKeyword AuthorizedPrincipalsFile syn keyword sshdconfigKeyword Banner syn keyword sshdconfigKeyword CASignatureAlgorithms syn keyword sshdconfigKeyword ChallengeResponseAuthentication syn keyword sshdconfigKeyword ChrootDirectory syn keyword sshdconfigKeyword Ciphers syn keyword sshdconfigKeyword ClientAliveCountMax syn keyword sshdconfigKeyword ClientAliveInterval syn keyword sshdconfigKeyword Compression syn keyword sshdconfigKeyword DebianBanner syn keyword sshdconfigKeyword DenyGroups syn keyword sshdconfigKeyword DenyUsers syn keyword sshdconfigKeyword DisableForwarding syn keyword sshdconfigKeyword ExposeAuthInfo syn keyword sshdconfigKeyword FingerprintHash syn keyword sshdconfigKeyword ForceCommand syn keyword sshdconfigKeyword GatewayPorts syn keyword sshdconfigKeyword GSSAPIAuthentication syn keyword sshdconfigKeyword GSSAPICleanupCredentials syn keyword sshdconfigKeyword GSSAPIEnablek5users syn keyword sshdconfigKeyword GSSAPIKeyExchange syn keyword sshdconfigKeyword GSSAPIKexAlgorithms syn keyword sshdconfigKeyword GSSAPIStoreCredentialsOnRekey syn keyword sshdconfigKeyword GSSAPIStrictAcceptorCheck syn keyword sshdconfigKeyword HostCertificate syn keyword sshdconfigKeyword HostKey syn keyword sshdconfigKeyword HostKeyAgent syn keyword sshdconfigKeyword HostKeyAlgorithms syn keyword sshdconfigKeyword HostbasedAcceptedKeyTypes syn keyword sshdconfigKeyword HostbasedAuthentication syn keyword sshdconfigKeyword HostbasedUsesNameFromPacketOnly syn keyword sshdconfigKeyword IPQoS syn keyword sshdconfigKeyword IgnoreRhosts syn keyword sshdconfigKeyword IgnoreUserKnownHosts syn keyword sshdconfigKeyword KbdInteractiveAuthentication syn keyword sshdconfigKeyword KerberosAuthentication syn keyword sshdconfigKeyword KerberosGetAFSToken syn keyword sshdconfigKeyword KerberosOrLocalPasswd syn keyword sshdconfigKeyword KerberosTicketCleanup syn keyword sshdconfigKeyword KerberosUniqueCCache syn keyword sshdconfigKeyword KerberosUseKuserok syn keyword sshdconfigKeyword KexAlgorithms syn keyword sshdconfigKeyword KeyRegenerationInterval syn keyword sshdconfigKeyword ListenAddress syn keyword sshdconfigKeyword LogLevel syn keyword sshdconfigKeyword LoginGraceTime syn keyword sshdconfigKeyword MACs syn keyword sshdconfigKeyword Match syn keyword sshdconfigKeyword MaxAuthTries syn keyword sshdconfigKeyword MaxSessions syn keyword sshdconfigKeyword MaxStartups syn keyword sshdconfigKeyword PasswordAuthentication syn keyword sshdconfigKeyword PermitBlacklistedKeys syn keyword sshdconfigKeyword PermitEmptyPasswords syn keyword sshdconfigKeyword PermitListen syn keyword sshdconfigKeyword PermitOpen syn keyword sshdconfigKeyword PermitRootLogin syn keyword sshdconfigKeyword PermitTTY syn keyword sshdconfigKeyword PermitTunnel syn keyword sshdconfigKeyword PermitUserEnvironment syn keyword sshdconfigKeyword PermitUserRC syn keyword sshdconfigKeyword PidFile syn keyword sshdconfigKeyword Port syn keyword sshdconfigKeyword PrintLastLog syn keyword sshdconfigKeyword PrintMotd syn keyword sshdconfigKeyword Protocol syn keyword sshdconfigKeyword PubkeyAcceptedKeyTypes syn keyword sshdconfigKeyword PubkeyAuthentication syn keyword sshdconfigKeyword RSAAuthentication syn keyword sshdconfigKeyword RekeyLimit syn keyword sshdconfigKeyword RevokedKeys syn keyword sshdconfigKeyword RDomain syn keyword sshdconfigKeyword RhostsRSAAuthentication syn keyword sshdconfigKeyword ServerKeyBits syn keyword sshdconfigKeyword SetEnv syn keyword sshdconfigKeyword ShowPatchLevel syn keyword sshdconfigKeyword StrictModes syn keyword sshdconfigKeyword StreamLocalBindMask syn keyword sshdconfigKeyword StreamLocalBindUnlink syn keyword sshdconfigKeyword Subsystem syn keyword sshdconfigKeyword SyslogFacility syn keyword sshdconfigKeyword TCPKeepAlive syn keyword sshdconfigKeyword TrustedUserCAKeys syn keyword sshdconfigKeyword UseDNS syn keyword sshdconfigKeyword UseLogin syn keyword sshdconfigKeyword UsePAM syn keyword sshdconfigKeyword VersionAddendum syn keyword sshdconfigKeyword X11DisplayOffset syn keyword sshdconfigKeyword X11Forwarding syn keyword sshdconfigKeyword X11MaxDisplays syn keyword sshdconfigKeyword X11UseLocalhost syn keyword sshdconfigKeyword XAuthLocation hi def link sshdconfigComment Comment hi def link sshdconfigTodo Todo hi def link sshdconfigHostPort sshdconfigConstant hi def link sshdconfigTime sshdconfigConstant hi def link sshdconfigNumber sshdconfigConstant hi def link sshdconfigConstant Constant hi def link sshdconfigYesNo sshdconfigEnum hi def link sshdconfigAddressFamily sshdconfigEnum hi def link sshdconfigPrivilegeSeparation sshdconfigEnum hi def link sshdconfigTcpForwarding sshdconfigEnum hi def link sshdconfigRootLogin sshdconfigEnum hi def link sshdconfigCiphers sshdconfigEnum hi def link sshdconfigMAC sshdconfigEnum hi def link sshdconfigHostKeyAlgo sshdconfigEnum hi def link sshdconfigRootLogin sshdconfigEnum hi def link sshdconfigLogLevel sshdconfigEnum hi def link sshdconfigSysLogFacility sshdconfigEnum hi def link sshdconfigVar sshdconfigEnum hi def link sshdconfigCompression sshdconfigEnum hi def link sshdconfigIPQoS sshdconfigEnum hi def link sshdconfigKexAlgo sshdconfigEnum hi def link sshdconfigTunnel sshdconfigEnum hi def link sshdconfigSubsystem sshdconfigEnum hi def link sshdconfigEnum Function hi def link sshdconfigSpecial Special hi def link sshdconfigKeyword Keyword hi def link sshdconfigMatch Type let b:current_syntax = "sshdconfig" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword stKeyword super self class true false new not syn keyword stKeyword notNil isNil inspect out nil syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn match stMethod "\:" syn region stLocalVariables start="^[ \t]*|" end="|" syn region stComment start="\"" end="\"" syn region stString start='\'' skip="''" end='\'' syn match stCharacter "$." syn case ignore syn match stSymbol "\(#\<[a-z_][a-z0-9_]*\>\)" syn match stSymbol "\(#'[^']*'\)" syn match stBlockVariable "\(:[ \t]*\<[a-z_][a-z0-9_]*\>[ \t]*\)\+|" contained syn match stNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" syn match stFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" syn match stFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" syn case match syn region stParen transparent start='(' end=')' contains=ALLBUT,stParenError syn match stParenError ")" syn region stBlock transparent start='\[' end='\]' contains=ALLBUT,stBlockError syn match stBlockError "\]" syn region stSet transparent start='{' end='}' contains=ALLBUT,stSetError syn match stSetError "}" hi link stParenError stError hi link stSetError stError hi link stBlockError stError syn sync minlines=50 hi def link stKeyword Statement hi def link stMethod Statement hi def link stComment Comment hi def link stCharacter Constant hi def link stString Constant hi def link stSymbol Special hi def link stNumber Type hi def link stFloat Type hi def link stError Error hi def link stLocalVariables Identifier hi def link stBlockVariable Identifier let b:current_syntax = "st" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syntax case match syn region stataStarComment start=/^\s*\*/ end=/$/ contains=stataComment oneline syn region stataSlashComment start="\s//" end=/$/ contains=stataComment oneline syn region stataSlashComment start="^//" end=/$/ contains=stataComment oneline syn region stataComment start="/\*" end="\*/" contains=stataComment syn match stataGlobal /\$\a\w*/ syn region stataGlobal start=/\${/ end=/}/ oneline contains=@stataMacroGroup syn region stataLocal start=/`/ end=/'/ oneline contains=@stataMacroGroup syn match stataFormat /%-\=\d\+\.\d\+[efg]c\=/ syn match stataFormat /%-\=21x/ syn match stataFormat /%\(\|-\|\~\)\d\+s/ syn keyword stataConditional else if syn keyword stataRepeat foreach syn keyword stataRepeat forv[alues] syn keyword stataRepeat while syn keyword stataCommand about syn keyword stataCommand adopath syn keyword stataCommand adoupdate syn keyword stataCommand assert syn keyword stataCommand break syn keyword stataCommand by syn keyword stataCommand cap[ture] syn keyword stataCommand cd syn keyword stataCommand chdir syn keyword stataCommand checksum syn keyword stataCommand class syn keyword stataCommand classutil syn keyword stataCommand compress syn keyword stataCommand conf[irm] syn keyword stataCommand conren syn keyword stataCommand continue syn keyword stataCommand cou[nt] syn keyword stataCommand cscript syn keyword stataCommand cscript_log syn keyword stataCommand #delimit syn keyword stataCommand d[escribe] syn keyword stataCommand dir syn keyword stataCommand discard syn keyword stataCommand di[splay] syn keyword stataCommand do syn keyword stataCommand doedit syn keyword stataCommand drop syn keyword stataCommand edit syn keyword stataCommand end syn keyword stataCommand erase syn keyword stataCommand eret[urn] syn keyword stataCommand err[or] syn keyword stataCommand e[xit] syn keyword stataCommand expand syn keyword stataCommand expandcl syn keyword stataCommand file syn keyword stataCommand findfile syn keyword stataCommand format syn keyword stataCommand g[enerate] syn keyword stataCommand gettoken syn keyword stataCommand gl[obal] syn keyword stataCommand help syn keyword stataCommand hexdump syn keyword stataCommand include syn keyword stataCommand infile syn keyword stataCommand infix syn keyword stataCommand input syn keyword stataCommand insheet syn keyword stataCommand joinby syn keyword stataCommand la[bel] syn keyword stataCommand levelsof syn keyword stataCommand list syn keyword stataCommand loc[al] syn keyword stataCommand log syn keyword stataCommand ma[cro] syn keyword stataCommand mark syn keyword stataCommand markout syn keyword stataCommand marksample syn keyword stataCommand mata syn keyword stataCommand matrix syn keyword stataCommand memory syn keyword stataCommand merge syn keyword stataCommand mkdir syn keyword stataCommand more syn keyword stataCommand net syn keyword stataCommand nobreak syn keyword stataCommand n[oisily] syn keyword stataCommand note[s] syn keyword stataCommand numlist syn keyword stataCommand outfile syn keyword stataCommand outsheet syn keyword stataCommand _parse syn keyword stataCommand pause syn keyword stataCommand plugin syn keyword stataCommand post syn keyword stataCommand postclose syn keyword stataCommand postfile syn keyword stataCommand preserve syn keyword stataCommand print syn keyword stataCommand printer syn keyword stataCommand profiler syn keyword stataCommand pr[ogram] syn keyword stataCommand q[uery] syn keyword stataCommand qui[etly] syn keyword stataCommand rcof syn keyword stataCommand reg[ress] syn keyword stataCommand rename syn keyword stataCommand repeat syn keyword stataCommand replace syn keyword stataCommand reshape syn keyword stataCommand ret[urn] syn keyword stataCommand _rmcoll syn keyword stataCommand _rmcoll syn keyword stataCommand _rmcollright syn keyword stataCommand rmdir syn keyword stataCommand _robust syn keyword stataCommand save syn keyword stataCommand sca[lar] syn keyword stataCommand search syn keyword stataCommand serset syn keyword stataCommand set syn keyword stataCommand shell syn keyword stataCommand sleep syn keyword stataCommand sort syn keyword stataCommand split syn keyword stataCommand sret[urn] syn keyword stataCommand ssc syn keyword stataCommand su[mmarize] syn keyword stataCommand syntax syn keyword stataCommand sysdescribe syn keyword stataCommand sysdir syn keyword stataCommand sysuse syn keyword stataCommand token[ize] syn keyword stataCommand translate syn keyword stataCommand type syn keyword stataCommand unab syn keyword stataCommand unabcmd syn keyword stataCommand update syn keyword stataCommand use syn keyword stataCommand vers[ion] syn keyword stataCommand view syn keyword stataCommand viewsource syn keyword stataCommand webdescribe syn keyword stataCommand webseek syn keyword stataCommand webuse syn keyword stataCommand which syn keyword stataCommand who syn keyword stataCommand window syn match stataQuote /"/ syn region stataEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=@stataMacroGroup,stataQuote,stataString,stataEString syn region stataString matchgroup=Nothing start=/"/ end=/"/ oneline contains=@stataMacroGroup syn cluster stataFuncGroup contains=@stataMacroGroup,stataFunc,stataString,stataEstring,stataParen,stataBracket syn cluster stataMacroGroup contains=stataGlobal,stataLocal syn cluster stataParenGroup contains=stataParenError,stataBracketError,stataBraceError,stataSpecial,stataFormat syn region stataFunc matchgroup=Function start=/\" syn keyword stpConditional if else elseif then syn match stpConditional "\" syn keyword stpRepeat for while loop syn match stpRepeat "\" syn keyword stpOperator asc not and or desc group having in is any some all syn keyword stpOperator between exists like escape with union intersect minus syn keyword stpOperator out prior distinct sysdate syn keyword stpStatement alter analyze as audit avg by close clustered comment syn keyword stpStatement commit continue count create cursor declare delete syn keyword stpStatement drop exec execute explain fetch from index insert syn keyword stpStatement into lock max min next noaudit nonclustered open syn keyword stpStatement order output print raiserror recompile rename revoke syn keyword stpStatement rollback savepoint select set sum transaction syn keyword stpStatement truncate unique update values where syn keyword stpFunction abs acos ascii asin atan atn2 avg ceiling charindex syn keyword stpFunction charlength convert col_name col_length cos cot count syn keyword stpFunction curunreservedpgs datapgs datalength dateadd datediff syn keyword stpFunction datename datepart db_id db_name degree difference syn keyword stpFunction exp floor getdate hextoint host_id host_name index_col syn keyword stpFunction inttohex isnull lct_admin log log10 lower ltrim max syn keyword stpFunction min now object_id object_name patindex pi pos power syn keyword stpFunction proc_role radians rand replace replicate reserved_pgs syn keyword stpFunction reverse right rtrim rowcnt round show_role sign sin syn keyword stpFunction soundex space sqrt str stuff substr substring sum syn keyword stpFunction suser_id suser_name tan tsequal upper used_pgs user syn keyword stpFunction user_id user_name valid_name valid_user message syn keyword stpType binary bit char datetime decimal double float image syn keyword stpType int integer long money nchar numeric precision real syn keyword stpType smalldatetime smallint smallmoney text time tinyint syn keyword stpType timestamp varbinary varchar syn match stpGlobals '@@char_convert' syn match stpGlobals '@@cient_csname' syn match stpGlobals '@@client_csid' syn match stpGlobals '@@connections' syn match stpGlobals '@@cpu_busy' syn match stpGlobals '@@error' syn match stpGlobals '@@identity' syn match stpGlobals '@@idle' syn match stpGlobals '@@io_busy' syn match stpGlobals '@@isolation' syn match stpGlobals '@@langid' syn match stpGlobals '@@language' syn match stpGlobals '@@max_connections' syn match stpGlobals '@@maxcharlen' syn match stpGlobals '@@ncharsize' syn match stpGlobals '@@nestlevel' syn match stpGlobals '@@pack_received' syn match stpGlobals '@@pack_sent' syn match stpGlobals '@@packet_errors' syn match stpGlobals '@@procid' syn match stpGlobals '@@rowcount' syn match stpGlobals '@@servername' syn match stpGlobals '@@spid' syn match stpGlobals '@@sqlstatus' syn match stpGlobals '@@testts' syn match stpGlobals '@@textcolid' syn match stpGlobals '@@textdbid' syn match stpGlobals '@@textobjid' syn match stpGlobals '@@textptr' syn match stpGlobals '@@textsize' syn match stpGlobals '@@thresh_hysteresis' syn match stpGlobals '@@timeticks' syn match stpGlobals '@@total_error' syn match stpGlobals '@@total_read' syn match stpGlobals '@@total_write' syn match stpGlobals '@@tranchained' syn match stpGlobals '@@trancount' syn match stpGlobals '@@transtate' syn match stpGlobals '@@version' syn keyword stpTodo TODO FIXME XXX DEBUG NOTE syn match stpStringError "'.*$" syn match stpString "'\([^']\|''\)*'" syn match stpNumber "-\=\<\d*\.\=[0-9_]\>" syn region stpComment start="/\*" end="\*/" contains=stpTodo syn match stpComment "--.*" contains=stpTodo syn sync ccomment stpComment syn region stpParen transparent start='(' end=')' contains=ALLBUT,stpParenError syn match stpParenError ")" syn sync minlines=10 maxlines=100 hi def link stpConditional Conditional hi def link stpComment Comment hi def link stpKeyword Keyword hi def link stpNumber Number hi def link stpOperator Operator hi def link stpSpecial Special hi def link stpStatement Statement hi def link stpString String hi def link stpStringError Error hi def link stpType Type hi def link stpTodo Todo hi def link stpFunction Function hi def link stpGlobals Macro hi def link stpParen Normal hi def link stpParenError Error hi def link stpSQLKeyword Function hi def link stpRepeat Repeat let b:current_syntax = "stp" if exists("b:current_syntax") finish endif syn case match syn match straceSpecialChar "\\\o\{1,3}\|\\." contained syn region straceString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=straceSpecialChar oneline syn match straceNumber "\W[+-]\=\(\d\+\)\=\.\=\d\+\([eE][+-]\=\d\+\)\="lc=1 syn match straceNumber "\W0x\x\+"lc=1 syn match straceNumberRHS "\W\(0x\x\+\|-\=\d\+\)"lc=1 contained syn match straceOtherRHS "?" contained syn match straceConstant "[A-Z_]\{2,}" syn region straceVerbosed start="(" end=")" matchgroup=Normal contained oneline syn region straceReturned start="\s=\s" end="$" contains=StraceEquals,straceNumberRHS,straceOtherRHS,straceConstant,straceVerbosed oneline transparent syn match straceEquals "\s=\s"ms=s+1,me=e-1 syn match straceParenthesis "[][(){}]" syn match straceSysCall "^\w\+" syn match straceOtherPID "^\[[^]]*\]" contains=stracePID,straceNumber nextgroup=straceSysCallEmbed skipwhite syn match straceSysCallEmbed "\w\+" contained syn keyword stracePID pid contained syn match straceOperator "[-+=*/!%&|:,]" syn region straceComment start="/\*" end="\*/" oneline hi def link straceComment Comment hi def link straceVerbosed Comment hi def link stracePID PreProc hi def link straceNumber Number hi def link straceNumberRHS Type hi def link straceOtherRHS Type hi def link straceString String hi def link straceConstant Function hi def link straceEquals Type hi def link straceSysCallEmbed straceSysCall hi def link straceSysCall Statement hi def link straceParenthesis Statement hi def link straceOperator Normal hi def link straceSpecialChar Special hi def link straceOtherPID PreProc let b:current_syntax = "strace" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite syn match sudoersSpecEquals contained '=' nextgroup=@sudoersCmndSpecList skipwhite syn cluster sudoersCmndSpecList contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec syn keyword sudoersTodo contained TODO FIXME XXX NOTE syn region sudoersComment display oneline start='#' end='$' contains=sudoersTodo syn region sudoersInclude display oneline start='#\(include\|includedir\)' end='$' syn keyword sudoersAlias User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl syn keyword sudoersAlias Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl syn keyword sudoersAlias Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl syn match sudoersUserAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersUserAliasEquals skipwhite skipnl syn match sudoersUserNameInList contained '\<\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUIDInList contained '#\d\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersGroupInList contained '%\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUserNetgroupInList contained '+\l\+\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUserAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserList skipwhite skipnl syn match sudoersUserName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUID contained '#\d\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersGroup contained '%\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUserNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUserAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersUserNameInSpec contained '\<\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUIDInSpec contained '#\d\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersGroupInSpec contained '%\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUserNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUserAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserSpec skipwhite skipnl syn match sudoersUserNameInRunas contained '\<\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersUIDInRunas contained '#\d\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersGroupInRunas contained '%\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersUserNetgroupInRunas contained '+\l\+\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersUserAliasInRunas contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersUserRunas skipwhite skipnl syn match sudoersHostAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersHostAliasEquals skipwhite skipnl syn match sudoersHostNameInList contained '\<\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersIPAddrInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersNetworkInList contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersHostNetgroupInList contained '+\l\+\>' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersHostAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostList skipwhite skipnl syn match sudoersHostName contained '\<\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersIPAddr contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersNetwork contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersHostNetgroup contained '+\l\+\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersHostAliasRef contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersParameter skipwhite skipnl syn match sudoersHostNameInSpec contained '\<\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersIPAddrInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersNetworkInSpec contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersHostNetgroupInSpec contained '+\l\+\>' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersHostAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersHostSpec skipwhite skipnl syn match sudoersCmndAlias contained '\<\u[A-Z0-9_]*\>' nextgroup=sudoersCmndAliasEquals skipwhite skipnl syn match sudoersCmndNameInList contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite syn match sudoersCmndAliasInList contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndList skipwhite skipnl syn match sudoersCmndNameInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite syn match sudoersCmndAliasInSpec contained '\<\u[A-Z0-9_]*\>' nextgroup=@sudoersCmndSpec skipwhite skipnl syn match sudoersUserAliasEquals contained '=' nextgroup=@sudoersUserInList skipwhite skipnl syn match sudoersUserListComma contained ',' nextgroup=@sudoersUserInList skipwhite skipnl syn match sudoersUserListColon contained ':' nextgroup=sudoersUserAlias skipwhite skipnl syn cluster sudoersUserList contains=sudoersUserListComma,sudoersUserListColon syn match sudoersUserSpecComma contained ',' nextgroup=@sudoersUserInSpec skipwhite skipnl syn cluster sudoersUserSpec contains=sudoersUserSpecComma,@sudoersHostInSpec syn match sudoersUserRunasBegin contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl syn match sudoersUserRunasComma contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl syn match sudoersUserRunasEnd contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl syn cluster sudoersUserRunas contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd syn match sudoersHostAliasEquals contained '=' nextgroup=@sudoersHostInList skipwhite skipnl syn match sudoersHostListComma contained ',' nextgroup=@sudoersHostInList skipwhite skipnl syn match sudoersHostListColon contained ':' nextgroup=sudoersHostAlias skipwhite skipnl syn cluster sudoersHostList contains=sudoersHostListComma,sudoersHostListColon syn match sudoersHostSpecComma contained ',' nextgroup=@sudoersHostInSpec skipwhite skipnl syn cluster sudoersHostSpec contains=sudoersHostSpecComma,sudoersSpecEquals syn match sudoersCmndAliasEquals contained '=' nextgroup=@sudoersCmndInList skipwhite skipnl syn match sudoersCmndListComma contained ',' nextgroup=@sudoersCmndInList skipwhite skipnl syn match sudoersCmndListColon contained ':' nextgroup=sudoersCmndAlias skipwhite skipnl syn cluster sudoersCmndList contains=sudoersCmndListComma,sudoersCmndListColon syn match sudoersCmndSpecComma contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl syn match sudoersCmndSpecColon contained ':' nextgroup=@sudoersUserInSpec skipwhite skipnl syn cluster sudoersCmndSpec contains=sudoersCmndSpecComma,sudoersCmndSpecColon syn cluster sudoersUserInList contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList syn cluster sudoersHostInList contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList syn cluster sudoersCmndInList contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList syn cluster sudoersUser contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef syn cluster sudoersHost contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef syn cluster sudoersUserInSpec contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec syn cluster sudoersHostInSpec contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec syn cluster sudoersUserInRunas contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas syn cluster sudoersCmndInSpec contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec syn match sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList skipwhite skipnl syn match sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList skipwhite skipnl syn match sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList skipwhite skipnl syn match sudoersUserNegation contained '!\+' nextgroup=@sudoersUser skipwhite skipnl syn match sudoersHostNegation contained '!\+' nextgroup=@sudoersHost skipwhite skipnl syn match sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec skipwhite skipnl syn match sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec skipwhite skipnl syn match sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl syn match sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec skipwhite skipnl syn match sudoersCommandArgs contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite syn match sudoersCommandEmpty contained '""' nextgroup=@sudoersCmndList skipwhite skipnl syn match sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite syn match sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl syn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl syn match sudoersDefaultTypeAt contained '@' nextgroup=@sudoersHost skipwhite skipnl syn match sudoersDefaultTypeColon contained ':' nextgroup=@sudoersUser skipwhite skipnl syn match sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl syn match sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl syn keyword sudoersBooleanParameter contained skipwhite skipnl \ always_query_group_plugin \ always_set_home \ authenticate \ closefrom_override \ compress_io \ env_editor \ env_reset \ exec_background \ fast_glob \ fqdn \ ignore_audit_errors \ ignore_dot \ ignore_iolog_errors \ ignore_local_sudoers \ ignore_logfile_errors \ ignore_unknown_defaults \ insults \ log_host \ log_input \ log_output \ log_year \ long_otp_prompt \ mail_all_cmnds \ mail_always \ mail_badpass \ mail_no_host \ mail_no_perms \ mail_no_user \ match_group_by_gid \ netgroup_tuple \ noexec \ pam_session \ pam_setcred \ passprompt_override \ path_info \ preserve_groups \ pwfeedback \ requiretty \ root_sudo \ rootpw \ runaspw \ set_home \ set_logname \ set_utmp \ setenv \ shell_noargs \ stay_setuid \ sudoedit_checkdir \ sudoedit_fellow \ syslog_pid \ targetpw \ tty_tickets \ umask_override \ use_netgroups \ use_pty \ user_command_timeouts \ utmp_runas \ visiblepw syn keyword sudoersIntegerParameter contained \ nextgroup=sudoersIntegerParameterEquals \ skipwhite skipnl \ closefrom \ command_timeout \ loglinelen \ maxseq \ passwd_timeout \ passwd_tries \ syslog_maxlen \ timestamp_timeout \ umask syn keyword sudoersStringParameter contained \ nextgroup=sudoersStringParameterEquals \ skipwhite skipnl \ askpass \ badpass_message \ editor \ env_file \ exempt_group \ fdexec \ group_plugin \ iolog_dir \ iolog_file \ iolog_flush \ iolog_group \ iolog_mode \ iolog_user \ lecture \ lecture_file \ lecture_status_dir \ listpw \ logfile \ mailerflags \ mailerpath \ mailfrom \ mailsub \ mailto \ noexec_file \ pam_login_service \ pam_service \ passprompt \ restricted_env_file \ role \ runas_default \ secure_path \ sudoers_locale \ syslog \ syslog_badpri \ syslog_goodpri \ timestamp_type \ timestampdir \ timestampowner \ type \ verifypw syn keyword sudoersListParameter contained \ nextgroup=sudoersListParameterEquals \ skipwhite skipnl \ env_check \ env_delete \ env_keep syn match sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl syn cluster sudoersParameter contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter syn match sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl syn match sudoersStringParameterEquals contained '[+-]\==' nextgroup=sudoersStringValue skipwhite skipnl syn match sudoersListParameterEquals contained '[+-]\==' nextgroup=sudoersListValue skipwhite skipnl syn match sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl syn match sudoersStringValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl syn region sudoersStringValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl syn match sudoersListValue contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl syn region sudoersListValue contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl syn match sudoersPASSWD contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite hi def link sudoersSpecEquals Operator hi def link sudoersTodo Todo hi def link sudoersComment Comment hi def link sudoersAlias Keyword hi def link sudoersUserAlias Identifier hi def link sudoersUserNameInList String hi def link sudoersUIDInList Number hi def link sudoersGroupInList PreProc hi def link sudoersUserNetgroupInList PreProc hi def link sudoersUserAliasInList PreProc hi def link sudoersUserName String hi def link sudoersUID Number hi def link sudoersGroup PreProc hi def link sudoersUserNetgroup PreProc hi def link sudoersUserAliasRef PreProc hi def link sudoersUserNameInSpec String hi def link sudoersUIDInSpec Number hi def link sudoersGroupInSpec PreProc hi def link sudoersUserNetgroupInSpec PreProc hi def link sudoersUserAliasInSpec PreProc hi def link sudoersUserNameInRunas String hi def link sudoersUIDInRunas Number hi def link sudoersGroupInRunas PreProc hi def link sudoersUserNetgroupInRunas PreProc hi def link sudoersUserAliasInRunas PreProc hi def link sudoersHostAlias Identifier hi def link sudoersHostNameInList String hi def link sudoersIPAddrInList Number hi def link sudoersNetworkInList Number hi def link sudoersHostNetgroupInList PreProc hi def link sudoersHostAliasInList PreProc hi def link sudoersHostName String hi def link sudoersIPAddr Number hi def link sudoersNetwork Number hi def link sudoersHostNetgroup PreProc hi def link sudoersHostAliasRef PreProc hi def link sudoersHostNameInSpec String hi def link sudoersIPAddrInSpec Number hi def link sudoersNetworkInSpec Number hi def link sudoersHostNetgroupInSpec PreProc hi def link sudoersHostAliasInSpec PreProc hi def link sudoersCmndAlias Identifier hi def link sudoersCmndNameInList String hi def link sudoersCmndAliasInList PreProc hi def link sudoersCmndNameInSpec String hi def link sudoersCmndAliasInSpec PreProc hi def link sudoersUserAliasEquals Operator hi def link sudoersUserListComma Delimiter hi def link sudoersUserListColon Delimiter hi def link sudoersUserSpecComma Delimiter hi def link sudoersUserRunasBegin Delimiter hi def link sudoersUserRunasComma Delimiter hi def link sudoersUserRunasEnd Delimiter hi def link sudoersHostAliasEquals Operator hi def link sudoersHostListComma Delimiter hi def link sudoersHostListColon Delimiter hi def link sudoersHostSpecComma Delimiter hi def link sudoersCmndAliasEquals Operator hi def link sudoersCmndListComma Delimiter hi def link sudoersCmndListColon Delimiter hi def link sudoersCmndSpecComma Delimiter hi def link sudoersCmndSpecColon Delimiter hi def link sudoersUserNegationInList Operator hi def link sudoersHostNegationInList Operator hi def link sudoersCmndNegationInList Operator hi def link sudoersUserNegation Operator hi def link sudoersHostNegation Operator hi def link sudoersUserNegationInSpec Operator hi def link sudoersHostNegationInSpec Operator hi def link sudoersUserNegationInRunas Operator hi def link sudoersCmndNegationInSpec Operator hi def link sudoersCommandArgs String hi def link sudoersCommandEmpty Special hi def link sudoersDefaultEntry Keyword hi def link sudoersDefaultTypeAt Special hi def link sudoersDefaultTypeColon Special hi def link sudoersDefaultTypeGreaterThan Special hi def link sudoersBooleanParameter Identifier hi def link sudoersIntegerParameter Identifier hi def link sudoersStringParameter Identifier hi def link sudoersListParameter Identifier hi def link sudoersParameterListComma Delimiter hi def link sudoersIntegerParameterEquals Operator hi def link sudoersStringParameterEquals Operator hi def link sudoersListParameterEquals Operator hi def link sudoersIntegerValue Number hi def link sudoersStringValue String hi def link sudoersListValue String hi def link sudoersPASSWD Special hi def link sudoersInclude Statement let b:current_syntax = "sudoers" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/xml.vim let b:current_syntax = "svg" if exists("b:current_syntax") finish endif syn spell toplevel syn match svnFirstLine "\%^.*" nextgroup=svnRegion,svnBlank skipnl syn match svnSummary "^.\{0,50\}" contained containedin=svnFirstLine nextgroup=svnOverflow contains=@Spell syn match svnOverflow ".*" contained contains=@Spell syn match svnBlank "^.*" contained contains=@Spell syn region svnRegion end="\%$" matchgroup=svnDelimiter start="^--.*--$" contains=svnRemoved,svnRenamed,svnAdded,svnModified,svnProperty,@NoSpell syn match svnRemoved "^D .*$" contained contains=@NoSpell syn match svnRenamed "^R[ M][ U][ +] .*$" contained contains=@NoSpell syn match svnAdded "^A[ M][ U][ +] .*$" contained contains=@NoSpell syn match svnModified "^M[ M][ U] .*$" contained contains=@NoSpell syn match svnProperty "^_M[ U] .*$" contained contains=@NoSpell syn sync clear syn sync match svnSync grouphere svnRegion "^--.*--$"me=s-1 hi def link svnSummary Keyword hi def link svnBlank Error hi def link svnRegion Comment hi def link svnDelimiter NonText hi def link svnRemoved Constant hi def link svnAdded Identifier hi def link svnModified Special hi def link svnProperty Special hi def link svnRenamed Special let b:current_syntax = "svn" if !exists("syntax_cmd") || syntax_cmd == "on" command -nargs=* SynColor hi command -nargs=* SynLink hi link else if syntax_cmd == "enable" command -nargs=* SynColor hi def command -nargs=* SynLink hi def link elseif syntax_cmd == "reset" command -nargs=* SynColor hi command -nargs=* SynLink hi! link else finish endif endif if &background == "dark" SynColor Comment term=bold cterm=NONE ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE SynColor Constant term=underline cterm=NONE ctermfg=Magenta ctermbg=NONE gui=NONE guifg=#ffa0a0 guibg=NONE SynColor Special term=bold cterm=NONE ctermfg=LightRed ctermbg=NONE gui=NONE guifg=Orange guibg=NONE SynColor Identifier term=underline cterm=bold ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#40ffff guibg=NONE SynColor Statement term=bold cterm=NONE ctermfg=Yellow ctermbg=NONE gui=bold guifg=#ffff60 guibg=NONE SynColor PreProc term=underline cterm=NONE ctermfg=LightBlue ctermbg=NONE gui=NONE guifg=#ff80ff guibg=NONE SynColor Type term=underline cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE SynColor Underlined term=underline cterm=underline ctermfg=LightBlue gui=underline guifg=#80a0ff SynColor Ignore term=NONE cterm=NONE ctermfg=black ctermbg=NONE gui=NONE guifg=bg guibg=NONE else SynColor Comment term=bold cterm=NONE ctermfg=DarkBlue ctermbg=NONE gui=NONE guifg=Blue guibg=NONE SynColor Constant term=underline cterm=NONE ctermfg=DarkRed ctermbg=NONE gui=NONE guifg=Magenta guibg=NONE SynColor Special term=bold cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=SlateBlue guibg=NONE SynColor Identifier term=underline cterm=NONE ctermfg=DarkCyan ctermbg=NONE gui=NONE guifg=DarkCyan guibg=NONE SynColor Statement term=bold cterm=NONE ctermfg=Brown ctermbg=NONE gui=bold guifg=Brown guibg=NONE SynColor PreProc term=underline cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=Purple guibg=NONE SynColor Type term=underline cterm=NONE ctermfg=DarkGreen ctermbg=NONE gui=bold guifg=SeaGreen guibg=NONE SynColor Underlined term=underline cterm=underline ctermfg=DarkMagenta gui=underline guifg=SlateBlue SynColor Ignore term=NONE cterm=NONE ctermfg=white ctermbg=NONE gui=NONE guifg=bg guibg=NONE endif SynColor Error term=reverse cterm=NONE ctermfg=White ctermbg=Red gui=NONE guifg=White guibg=Red SynColor Todo term=standout cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Blue guibg=Yellow SynLink String Constant SynLink Character Constant SynLink Number Constant SynLink Boolean Constant SynLink Float Number SynLink Function Identifier SynLink Conditional Statement SynLink Repeat Statement SynLink Label Statement SynLink Operator Statement SynLink Keyword Statement SynLink Exception Statement SynLink Include PreProc SynLink Define PreProc SynLink Macro PreProc SynLink PreCondit PreProc SynLink StorageClass Type SynLink Structure Type SynLink Typedef Type SynLink Tag Special SynLink SpecialChar Special SynLink Delimiter Special SynLink SpecialComment Special SynLink Debug Special delcommand SynColor delcommand SynLink if !has("syntax") finish endif let syntax_on = 1 if exists("colors_name") exe "colors " . colors_name else runtime! syntax/syncolor.vim endif let s:cpo_save = &cpo set cpo&vim au! Syntax au Syntax * call s:SynSet() fun! s:SynSet() syn clear if exists("b:current_syntax") unlet b:current_syntax endif let s = expand("") if s == "ON" if &filetype == "" echohl ErrorMsg echo "filetype unknown" echohl None endif let s = &filetype elseif s == "OFF" let s = "" endif if s != "" for name in split(s, '\.') exe "runtime! syntax/" . name . ".vim syntax/" . name . "/*.vim" endfor endif endfun au Syntax c,cpp,cs,idl,java,php,datascript \ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax) \ || (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax) \ | runtime! syntax/doxygen.vim \ | endif if exists("mysyntaxfile") let s:fname = expand(mysyntaxfile) if filereadable(s:fname) execute "source " . fnameescape(s:fname) endif endif let &cpo = s:cpo_save unlet s:cpo_save if !has("syntax") finish endif if exists("syntax_on") || exists("syntax_manual") so :p:h/nosyntax.vim endif runtime syntax/synload.vim if exists("did_load_filetypes") let s:did_ft = 1 else filetype on let s:did_ft = 0 endif augroup syntaxset au! FileType * exe "set syntax=" . expand("") augroup END doautoall syntaxset FileType if !s:did_ft doautoall filetypedetect BufRead endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match sysctlBegin display '^' \ nextgroup=sysctlToken,sysctlComment skipwhite syn match sysctlToken contained display '[^=]\+' \ nextgroup=sysctlTokenEq skipwhite syn match sysctlTokenEq contained display '=' nextgroup=sysctlValue skipwhite syn region sysctlValue contained display oneline \ matchgroup=sysctlValue start='\S' \ matchgroup=Normal end='\s*$' syn keyword sysctlTodo contained TODO FIXME XXX NOTE syn region sysctlComment display oneline start='^\s*[#;]' end='$' \ contains=sysctlTodo,@Spell hi def link sysctlTodo Todo hi def link sysctlComment Comment hi def link sysctlToken Identifier hi def link sysctlTokenEq Operator hi def link sysctlValue String let b:current_syntax = "sysctl" let &cpo = s:cpo_save unlet s:cpo_save if !exists('b:current_syntax') runtime! syntax/dosini.vim let b:current_syntax = 'systemd' endif if exists("b:current_syntax") finish endif runtime! syntax/verilog.vim unlet b:current_syntax syn keyword systemverilogStatement always_comb always_ff always_latch syn keyword systemverilogStatement class endclass new syn keyword systemverilogStatement virtual local const protected syn keyword systemverilogStatement package endpackage syn keyword systemverilogStatement rand randc constraint randomize syn keyword systemverilogStatement with inside dist syn keyword systemverilogStatement sequence endsequence randsequence syn keyword systemverilogStatement srandom syn keyword systemverilogStatement logic bit byte syn keyword systemverilogStatement int longint shortint syn keyword systemverilogStatement struct packed syn keyword systemverilogStatement final syn keyword systemverilogStatement import export syn keyword systemverilogStatement context pure syn keyword systemverilogStatement void shortreal chandle string syn keyword systemverilogStatement clocking endclocking iff syn keyword systemverilogStatement interface endinterface modport syn keyword systemverilogStatement cover covergroup coverpoint endgroup syn keyword systemverilogStatement property endproperty syn keyword systemverilogStatement program endprogram syn keyword systemverilogStatement bins binsof illegal_bins ignore_bins syn keyword systemverilogStatement alias matches solve static assert syn keyword systemverilogStatement assume super before expect bind syn keyword systemverilogStatement extends null tagged extern this syn keyword systemverilogStatement first_match throughout timeprecision syn keyword systemverilogStatement timeunit type union syn keyword systemverilogStatement uwire var cross ref wait_order intersect syn keyword systemverilogStatement wildcard within syn keyword systemverilogTypeDef typedef enum syn keyword systemverilogConditional randcase syn keyword systemverilogConditional unique priority syn keyword systemverilogRepeat return break continue syn keyword systemverilogRepeat do foreach syn keyword systemverilogLabel join_any join_none forkjoin syn keyword systemverilogStatement checker endchecker syn keyword systemverilogStatement accept_on reject_on syn keyword systemverilogStatement sync_accept_on sync_reject_on syn keyword systemverilogStatement eventually nexttime until until_with syn keyword systemverilogStatement s_always s_eventually s_nexttime s_until s_until_with syn keyword systemverilogStatement let untyped syn keyword systemverilogStatement strong weak syn keyword systemverilogStatement restrict global implies syn keyword systemverilogConditional unique0 syn keyword systemverilogStatement implements syn keyword systemverilogStatement interconnect soft nettype hi def link systemverilogStatement Statement hi def link systemverilogTypeDef TypeDef hi def link systemverilogConditional Conditional hi def link systemverilogRepeat Repeat hi def link systemverilogLabel Label hi def link systemverilogGlobal Define hi def link systemverilogNumber Number let b:current_syntax = "systemverilog" if exists("b:current_syntax") finish endif syn keyword tadsStatement goto break return continue pass syn keyword tadsLabel case default syn keyword tadsConditional if else switch syn keyword tadsRepeat while for do syn keyword tadsStorageClass local compoundWord formatstring specialWords syn keyword tadsBoolean nil true syn keyword tadsKeyword replace modify syn keyword tadsKeyword global self inherited syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr syn keyword tadsKeyword say length syn keyword tadsKeyword setit setscore syn keyword tadsKeyword datatype proptype syn keyword tadsKeyword car cdr syn keyword tadsKeyword defined isclass syn keyword tadsKeyword find firstobj nextobj syn keyword tadsKeyword getarg argcount syn keyword tadsKeyword input yorn askfile syn keyword tadsKeyword rand randomize syn keyword tadsKeyword restart restore quit save undo syn keyword tadsException abort exit exitobj syn keyword tadsTodo contained TODO FIXME XXX syn match tadsSpecial contained "\\." syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo syn match tadsBraceError "}" syn case ignore syn match tadsNumber "\<[0-9]\+\>" syn match tadsNumber "\<0x[0-9a-f]\+\>" syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>" syn case match syn match tadsOctalError "\<0[0-7]*[89]" syn region tadsComment start="/\*" end="\*/" contains=tadsTodo syn match tadsComment "//.*" contains=tadsTodo syntax match tadsCommentError "\*/" syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match tadsIncluded contained "<[^>]*>" syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier syn match tadsClassDef "\[^/]*" contains=tadsObjectDef,tadsClass syn match tadsClass contained "\" syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\=" syn keyword tadsFunction contained function syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction if !exists("tads_minlines") let tads_minlines = 15 endif exec "syn sync ccomment tadsComment minlines=" . tads_minlines if !exists("tads_sync_dist") let tads_sync_dist = 100 endif execute "syn sync maxlines=" . tads_sync_dist hi def link tadsFunctionDef Function hi def link tadsFunction Structure hi def link tadsClass Structure hi def link tadsClassDef Identifier hi def link tadsObjectDef Identifier hi def link tadsOperator Operator hi def link tadsStructure Structure hi def link tadsTodo Todo hi def link tadsLabel Label hi def link tadsConditional Conditional hi def link tadsRepeat Repeat hi def link tadsException Exception hi def link tadsStatement Statement hi def link tadsStorageClass StorageClass hi def link tadsKeyWord Keyword hi def link tadsSpecial SpecialChar hi def link tadsNumber Number hi def link tadsBoolean Boolean hi def link tadsDoubleString tadsString hi def link tadsSingleString tadsString hi def link tadsOctalError tadsError hi def link tadsCommentError tadsError hi def link tadsBraceError tadsError hi def link tadsInBrace tadsError hi def link tadsError Error hi def link tadsInclude Include hi def link tadsPreProc PreProc hi def link tadsDefine Macro hi def link tadsIncluded tadsString hi def link tadsPreCondit PreCondit hi def link tadsString String hi def link tadsComment Comment let b:current_syntax = "tads" if exists("b:current_syntax") finish endif syn match tagName "^[^\t]\+" skipwhite nextgroup=tagPath syn match tagPath "[^\t]\+" contained skipwhite nextgroup=tagAddr contains=tagBaseFile syn match tagBaseFile "[a-zA-Z_]\+[\.a-zA-Z_0-9]*\t"me=e-1 contained syn match tagAddr "\d*" contained skipwhite nextgroup=tagComment syn region tagAddr matchgroup=tagDelim start="/" skip="\(\\\\\)*\\/" matchgroup=tagDelim end="$\|/" oneline contained skipwhite nextgroup=tagComment syn match tagComment ";.*$" contained contains=tagField syn match tagComment "^!_TAG_.*$" syn match tagField contained "[a-z]*:" if !exists("skip_drchip_tags_inits") hi def link tagBaseFile PreProc hi def link tagComment Comment hi def link tagDelim Delimiter hi def link tagField Number hi def link tagName Identifier hi def link tagPath PreProc endif let b:current_syntax = "tags" if exists("b:current_syntax") finish endif syn case ignore let fortran_free_source=1 runtime! syntax/fortran.vim unlet b:current_syntax syn keyword takOptions AUTODAMP CPRINT CSGDUMP GPRINT HPRINT LODTMP syn keyword takOptions LOGIC LPRINT NCVPRINT PLOTQ QPRINT QDUMP syn keyword takOptions SUMMARY SOLRTN UID DICTIONARIES syn keyword takRoutine SSITER FWDWRD FWDBCK BCKWRD syn keyword takControl ABSZRO BACKUP DAMP DTIMEI DTIMEL DTIMEH IFC syn keyword takControl MAXTEMP NLOOPS NLOOPT NODELIST OUTPUT PLOT syn keyword takControl SCALE SIGMA SSCRIT TIMEND TIMEN TIMEO TRCRIT syn keyword takControl PLOT syn keyword takSolids PLATE CYL syn keyword takSolidsArg ID MATNAM NTYPE TEMP XL YL ZL ISTRN ISTRG NNX syn keyword takSolidsArg NNY NNZ INCX INCY INCZ IAK IAC DIFF ARITH BOUN syn keyword takSolidsArg RMIN RMAX AXMAX NNR NNTHETA INCR INCTHETA END syn case ignore syn keyword takMacro fac pstart pstop syn keyword takMacro takcommon fstart fstop syn keyword takIdentifier flq flx gen ncv per sim siv stf stv tvd tvs syn keyword takIdentifier tvt pro thm syn match takFortran "^F[0-9 ]"me=e-1 syn match takMotran "^M[0-9 ]"me=e-1 syn match takComment "^C.*$" syn match takComment "^R.*$" syn match takComment "\$.*$" syn match takHeader "^header[^,]*" syn match takIncludeFile "include \+[^ ]\+"hs=s+8 contains=fortranInclude syn match takInteger "-\=\<[0-9]*\>" syn match takFloat "-\=\<[0-9]*\.[0-9]*" syn match takScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" syn match takEndData "END OF DATA" if exists("thermal_todo") execute 'syn match takTodo ' . '"^'.thermal_todo.'.*$"' else syn match takTodo "^?.*$" endif hi def link takMacro Macro hi def link takOptions Special hi def link takRoutine Type hi def link takControl Special hi def link takSolids Special hi def link takSolidsArg Statement hi def link takIdentifier Identifier hi def link takFortran PreProc hi def link takMotran PreProc hi def link takComment Comment hi def link takHeader Typedef hi def link takIncludeFile Type hi def link takInteger Number hi def link takFloat Float hi def link takScientific Float hi def link takEndData Macro hi def link takTodo Todo let b:current_syntax = "tak" if exists("b:current_syntax") finish endif syn case ignore syn keyword takcmpUnit celsius fahrenheit syn match takcmpTitle "Steady State Temperature Comparison" syn match takcmpLabel "Run Date:" syn match takcmpLabel "Run Time:" syn match takcmpLabel "Temp. File \d Units:" syn match takcmpLabel "Filename:" syn match takcmpLabel "Output Units:" syn match takcmpHeader "^ *Node\( *File \d\)* *Node Description" syn match takcmpDate "\d\d\/\d\d\/\d\d" syn match takcmpTime "\d\d:\d\d:\d\d" syn match takcmpInteger "^ *-\=\<[0-9]*\>" syn match takcmpFloat "-\=\<[0-9]*\.[0-9]*" hi def link takcmpTitle Type hi def link takcmpUnit PreProc hi def link takcmpLabel Statement hi def link takcmpHeader takHeader hi def link takcmpDate Identifier hi def link takcmpTime Identifier hi def link takcmpInteger Number hi def link takcmpFloat Special let b:current_syntax = "takcmp" if exists("b:current_syntax") finish endif syn case match runtime! syntax/tak.vim unlet b:current_syntax syn case match syn keyword takoutPos ON SI syn keyword takoutNeg OFF ENG syn match takoutTitle "TAK III" syn match takoutTitle "Release \d.\d\d" syn match takoutTitle " K & K Associates *Thermal Analysis Kit III *Serial Number \d\d-\d\d\d" syn match takoutFile ": \w*\.TAK"hs=s+2 syn match takoutInteger "T\=[0-9]*\>"ms=s+1 syn match takoutSectionDelim "[-<>]\{4,}" contains=takoutSectionTitle syn match takoutSectionDelim ":\=\.\{4,}:\=" contains=takoutSectionTitle syn match takoutSectionTitle "[-<:] \w[0-9A-Za-z_() ]\+ [->:]"hs=s+1,me=e-1 syn match takoutHeaderDelim "=\{5,}" syn match takoutHeaderDelim "|\{5,}" syn match takoutHeaderDelim "+\{5,}" syn match takoutLabel "Input File:" contains=takoutFile syn match takoutLabel "Begin Solution: Routine" syn match takoutError "<<< Error >>>" hi def link takoutPos Statement hi def link takoutNeg PreProc hi def link takoutTitle Type hi def link takoutFile takIncludeFile hi def link takoutInteger takInteger hi def link takoutSectionDelim Delimiter hi def link takoutSectionTitle Exception hi def link takoutHeaderDelim SpecialComment hi def link takoutLabel Identifier hi def link takoutError Error let b:current_syntax = "takout" if exists("b:current_syntax") finish endif syn match tapTestDiag /^ *#.*/ contains=tapTestTodo syn match tapTestTime /^ *\[\d\d:\d\d:\d\d\].*/ contains=tapTestFile syn match tapTestFile /\w\+\/[^. ]*/ contained syn match tapTestFileWithDot /\w\+\/[^ ]*/ contained syn match tapTestPlan /^ *\d\+\.\.\d\+$/ syn match tapTest /^ *\(not \)\?ok \d\+.*/ contains=tapTestStatusOK,tapTestStatusNotOK,tapTestLine syn match tapTestLine /\d\+\( .*\|$\)/ contains=tapTestNumber,tapTestLoadMessage,tapTestTodo,tapTestSkip contained syn match tapTestStatusOK /ok/ contained syn match tapTestStatusNotOK /not ok/ contained syn match tapTestTodo /\(# TODO\|Failed (TODO)\) .*$/ contained contains=tapTestTodoRev syn match tapTestTodoRev /\/ contained syn match tapTestSkip /# skip .*$/ contained contains=tapTestSkipTag syn match tapTestSkipTag /\(# \)\@<=skip\>/ contained syn match tapTestNumber /\(ok \)\@<=\d\d*/ contained syn match tapTestLoadMessage /\*\*\*.*\*\*\*/ contained contains=tapTestThreeStars,tapTestFileWithDot syn match tapTestThreeStars /\*\*\*/ contained syn region tapTestRegion start=/^ *\(not \)\?ok.*$/me=e+1 end=/^\(\(not \)\?ok\|# Looks like you planned \|All tests successful\|Bailout called\)/me=s-1 fold transparent excludenl syn region tapTestResultsOKRegion start=/^\(All tests successful\|Result: PASS\)/ end=/$/ syn region tapTestResultsNotOKRegion start=/^\(# Looks like you planned \|Bailout called\|# Looks like you failed \|Result: FAIL\)/ end=/$/ syn region tapTestResultsSummaryRegion start=/^Test Summary Report/ end=/^Files=.*$/ contains=tapTestResultsSummaryHeading,tapTestResultsSummaryNotOK syn region tapTestResultsSummaryHeading start=/^Test Summary Report/ end=/^-\+$/ contained syn region tapTestResultsSummaryNotOK start=/TODO passed:/ end=/$/ contained syn region tapTestInstructionsRegion start=/\%1l/ end=/^$/ set foldtext=TAPTestLine_foldtext() function! TAPTestLine_foldtext() let line = getline(v:foldstart) let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g') return sub endfunction set foldminlines=5 set foldcolumn=2 set foldenable set foldmethod=syntax syn sync fromstart if !exists("did_tapverboseoutput_syntax_inits") let did_tapverboseoutput_syntax_inits = 1 hi tapTestStatusOK term=bold ctermfg=green guifg=Green hi tapTestStatusNotOK term=reverse ctermfg=black ctermbg=red guifg=Black guibg=Red hi tapTestTodo term=bold ctermfg=yellow ctermbg=black guifg=Yellow guibg=Black hi tapTestTodoRev term=reverse ctermfg=black ctermbg=yellow guifg=Black guibg=Yellow hi tapTestSkip term=bold ctermfg=lightblue guifg=LightBlue hi tapTestSkipTag term=reverse ctermfg=black ctermbg=lightblue guifg=Black guibg=LightBlue hi tapTestTime term=bold ctermfg=blue guifg=Blue hi tapTestFile term=reverse ctermfg=black ctermbg=yellow guibg=Black guifg=Yellow hi tapTestLoadedFile term=bold ctermfg=black ctermbg=cyan guibg=Cyan guifg=Black hi tapTestThreeStars term=reverse ctermfg=blue guifg=Blue hi tapTestPlan term=bold ctermfg=yellow guifg=Yellow hi link tapTestFileWithDot tapTestLoadedFile hi link tapTestNumber Number hi link tapTestDiag Comment hi tapTestRegion ctermbg=green hi tapTestResultsOKRegion ctermbg=green ctermfg=black hi tapTestResultsNotOKRegion ctermbg=red ctermfg=black hi tapTestResultsSummaryHeading ctermbg=blue ctermfg=white hi tapTestResultsSummaryNotOK ctermbg=red ctermfg=black hi tapTestInstructionsRegion ctermbg=lightmagenta ctermfg=black endif let b:current_syntax="tapVerboseOutput" if exists("b:current_syntax") finish endif syn match tarComment '^".*' contains=tarFilename syn match tarFilename 'tarfile \zs.*' contained syn match tarDirectory '.*/$' hi def link tarComment Comment hi def link tarFilename Constant hi def link tarDirectory Type if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn keyword taskdataKey description due end entry imask mask parent syn keyword taskdataKey priority project recur start status tags uuid syn match taskdataKey "annotation_\d\+" syn match taskdataUndo "^time.*$" syn match taskdataUndo "^\(old \|new \|---\)" syn region taskdataString matchgroup=Normal start=+"+ end=+"+ \ contains=taskdataEncoded,taskdataUUID,@Spell syn match taskdataEncoded "&\a\+;" contained syn match taskdataUUID "\x\{8}-\(\x\{4}-\)\{3}\x\{12}" contained hi def link taskdataEncoded Function hi def link taskdataKey Statement hi def link taskdataString String hi def link taskdataUUID Special hi def link taskdataUndo Type let b:current_syntax = "taskdata" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn match taskeditHeading "^\s*#\s*Name\s\+Editable details\s*$" contained syn match taskeditHeading "^\s*#\s*-\+\s\+-\+\s*$" contained syn match taskeditReadOnly "^\s*#\s*\(UU\)\?ID:.*$" contained syn match taskeditReadOnly "^\s*#\s*Status:.*$" contained syn match taskeditReadOnly "^\s*#\s*i\?Mask:.*$" contained syn match taskeditKey "^ *.\{-}:" nextgroup=taskeditString syn match taskeditComment "^\s*#.*$" \ contains=taskeditReadOnly,taskeditHeading syn match taskeditString ".*$" contained contains=@Spell hi def link taskeditComment Comment hi def link taskeditHeading Function hi def link taskeditKey Statement hi def link taskeditReadOnly Special hi def link taskeditString String let b:current_syntax = "taskedit" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:" syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>" syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1 syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8 syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR syn keyword tasmMMXinst EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB syn keyword tasmMMXinst PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW syn keyword tasmMMXinst PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD syn keyword tasmMMXinst PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ syn keyword tasmMMXinst PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD syn keyword tasmMMXinst PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW syn keyword tasmMMXinst PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD syn keyword tasmMMXinst PXOR syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]" syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>" syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>" syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>" syn match tasmRegister "\<[A-D][LH]\>" syn match tasmRegister "\" syn match tasmRegister "\<[C-GS]S\>" syn region tasmComment start=";" end="$" syn region tasmComment start="comment \+\$" end="\$" syn region tasmComment start="comment \+\~" end="\~" syn region tasmComment start="comment \+#" end="#" syn region tasmString start="'" end="'" syn region tasmString start='"' end='"' syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>" syn match tasmHex "\<[0-9][0-9A-F]*H\>" syn match tasmOct "\<[0-7]\+O\>" syn match tasmBin "\<[01]\+B\>" hi def link tasmString String hi def link tasmDec Number hi def link tasmHex Number hi def link tasmOct Number hi def link tasmBin Number hi def link tasmInstruction Keyword hi def link tasmCoprocInstr Keyword hi def link tasmMMXInst Keyword hi def link tasmDirective PreProc hi def link tasmRegister Identifier hi def link tasmProctype PreProc hi def link tasmComment Comment hi def link tasmLabel Label let b:current_syntax = "tasm" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword tclCommand after append array bgerror binary cd chan clock close concat syn keyword tclCommand dde dict encoding eof error eval exec exit expr fblocked syn keyword tclCommand fconfigure fcopy file fileevent flush format gets glob syn keyword tclCommand global history http incr info interp join lappend lassign syn keyword tclCommand lindex linsert list llength lmap load lrange lrepeat syn keyword tclCommand lreplace lreverse lsearch lset lsort memory my namespace syn keyword tclCommand next nextto open package pid puts pwd read refchan regexp syn keyword tclCommand registry regsub rename scan seek self set socket source syn keyword tclCommand split string subst tell time trace unknown unload unset syn keyword tclCommand update uplevel upvar variable vwait syn keyword tclCommand auto_execok auto_import auto_load auto_mkindex auto_reset syn keyword tclCommand auto_qualify tcl_findLibrary parray tcl_endOfWord syn keyword tclCommand tcl_startOfNextWord tcl_startOfPreviousWord syn keyword tclCommand tcl_wordBreakAfter tcl_wordBreakBefore syn keyword tclVars auto_path env errorCode errorInfo tcl_library tcl_patchLevel syn keyword tclVars tcl_pkgPath tcl_platform tcl_precision tcl_rcFileName syn keyword tclVars tcl_traceCompile tcl_traceExec tcl_wordchars syn keyword tclVars tcl_nonwordchars tcl_version argc argv argv0 tcl_interactive syn keyword tclBoolean true false on off yes no syn keyword tclProcCommand apply coroutine proc return tailcall yield yieldto syn keyword tclConditional if then else elseif switch syn keyword tclConditional catch try throw finally syn keyword tclLabel default syn keyword tclRepeat while for foreach break continue syn keyword tcltkSwitch contained insert create polygon fill outline tag syn keyword tcltkWidgetSwitch contained background highlightbackground insertontime cget syn keyword tcltkWidgetSwitch contained selectborderwidth borderwidth highlightcolor insertwidth syn keyword tcltkWidgetSwitch contained selectforeground cursor highlightthickness padx setgrid syn keyword tcltkWidgetSwitch contained exportselection insertbackground pady takefocus syn keyword tcltkWidgetSwitch contained font insertborderwidth relief xscrollcommand syn keyword tcltkWidgetSwitch contained foreground insertofftime selectbackground yscrollcommand syn keyword tcltkWidgetSwitch contained height spacing1 spacing2 spacing3 syn keyword tcltkWidgetSwitch contained state tabs width wrap syn keyword tcltkWidgetSwitch contained command default syn keyword tcltkWidgetSwitch contained closeenough confine scrollregion xscrollincrement yscrollincrement orient syn keyword tcltkWidgetSwitch contained indicatoron offvalue onvalue selectcolor selectimage state variable syn keyword tcltkWidgetSwitch contained show class colormap container visual syn keyword tcltkWidgetSwitch contained selectmode postcommand selectcolor tearoff tearoffcommand title type syn keyword tcltkWidgetSwitch contained direction aspect justify syn keyword tcltkWidgetSwitch contained bigincrement digits from length resolution showvalue sliderlength sliderrelief tickinterval to syn keyword tcltkWidgetSwitch contained activerelief elementborderwidth syn keyword tcltkWidgetSwitch contained delete names types create syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*" syn match tclVarRef "${[^}]*}" syn cluster tclVarRefC add=tclVarRef syn cluster tclSpecialC add=tclSpecial syn match tclExpand '\s{\*}' syn match tclExpand '^{\*}' syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak syn keyword tcltkWidgetSwitch contained font foreground hidemargin image indicatoron label menu offvalue onvalue syn keyword tcltkWidgetSwitch contained selectcolor selectimage state underline value variable syn keyword tcltkWidgetSwitch contained add clone configure delete entrycget entryconfigure index insert invoke syn keyword tcltkWidgetSwitch contained post postcascade type unpost yposition activate syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn match tcltkWidgetSwitch contained "-text\(var\)\?"hs=s+1 syn match tcltkWidgetSwitch contained "-menu"hs=s+1 syn match tcltkWidgetSwitch contained "-label"hs=s+1 syn region tcltkCommand matchgroup=tcltkCommandColor start="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand syn region tcltkCommand matchgroup=tcltkCommandColor start="\s\\|\[\"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\\|\[\"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\\|\[\"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tcltkSwitch,tclNumber,tclVarRef,tclString syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\\|\[\"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn keyword tcltkWidgetColor toplevel syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef keepend syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef syn keyword tcltkNamespaceSwitch contained children code current delete eval syn keyword tcltkNamespaceSwitch contained export forget import inscope origin syn keyword tcltkNamespaceSwitch contained parent qualifiers tail which command variable syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="{\|}\|]\|\"\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkNamespaceSwitch syn keyword tcltkMaths contained abs acos asin atan atan2 bool ceil cos cosh double entier syn keyword tcltkMaths contained exp floor fmod hypot int isqrt log log10 max min pow rand syn keyword tcltkMaths contained round sin sinh sqrt srand tan tanh wide syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf syn keyword tcltkPackSwitch contained forget info propogate slaves syn keyword tcltkPackConfSwitch contained after anchor before expand fill in ipadx ipady padx pady side syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkPackSwitch,tcltkPackConf,tcltkPackConfSwitch,tclNumber,tclVarRef,tclString,tcltkCommand keepend syn keyword tcltkStringSwitch contained compare first index last length match range tolower toupper trim trimleft trimright wordstart wordend syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkStringSwitch,tclNumber,tclVarRef,tclString,tcltkCommand syn keyword tcltkArraySwitch contained anymore donesearch exists get names nextelement size startsearch set syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkArraySwitch,tclNumber,tclVarRef,tclString,tcltkCommand syn keyword tcltkLsortSwitch contained ascii dictionary integer real command increasing decreasing index syn region tcltkCommand matchgroup=tcltkCommandColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkLsortSwitch,tclNumber,tclVarRef,tclString,tcltkCommand syn keyword tclTodo contained TODO syn match tclSpecial contained '\\\([0-7]\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)' syn match tclSpecial contained '\\[\[\]\{\}\"\$]' syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement syn region tclString start=+^"+ end=+"+ contains=@tclSpecialC skip=+\\\\\|\\"+ syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement skip=+\\\\\|\\"+ syn match tclLineContinue '\\$' if exists('g:tcl_warn_continuation') syn match tclNotLineContinue '\\\s\+$' endif syn case ignore syn match tclNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" syn match tclNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" syn match tclNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match tclNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match tclNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn case match syn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo syn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo hi def link tcltkSwitch Special hi def link tclExpand Special hi def link tclLabel Label hi def link tclConditional Conditional hi def link tclRepeat Repeat hi def link tclNumber Number hi def link tclError Error hi def link tclCommand Statement hi def link tclProcCommand Type hi def link tclString String hi def link tclComment Comment hi def link tclSpecial Special hi def link tclTodo Todo hi def link tcltkCommandColor Statement hi def link tcltkWidgetColor Structure hi def link tclLineContinue WarningMsg if exists('g:tcl_warn_continuation') hi def link tclNotLineContinue ErrorMsg endif hi def link tcltkStringSwitch Special hi def link tcltkArraySwitch Special hi def link tcltkLsortSwitch Special hi def link tcltkPackSwitch Special hi def link tcltkPackConfSwitch Special hi def link tcltkMaths Special hi def link tcltkNamespaceSwitch Special hi def link tcltkWidgetSwitch Special hi def link tcltkPackConfColor Identifier hi def link tclVarRef Identifier let b:current_syntax = "tcl" if exists('b:current_syntax') finish endif let s:oldcpo = &cpo set cpo&vim " Line continuation is used setlocal iskeyword+=- syn case match syn cluster tcshModifiers contains=tcshModifier,tcshModifierError syn cluster tcshQuoteList contains=tcshDQuote,tcshSQuote,tcshBQuote syn cluster tcshStatementEnds contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshRedir,tcshMeta,tcshHereDoc,tcshSpecial,tcshArguement syn cluster tcshStatements contains=tcshBuiltin,tcshCommands,tcshIf,tcshWhile syn cluster tcshVarList contains=tcshUsrVar,tcshArgv,tcshSubst syn cluster tcshConditions contains=tcshCmdSubst,tcshParenExpr,tcshOperator,tcshNumber,@tcshVarList syn match tcshError contained '\v\S.+' syn match tcshCommands '\v[a-zA-Z0-9\\./_$:-]+' contains=tcshSpecial,tcshUsrVar,tcshArgv,tcshVarError nextgroup=tcshStatementEnd syn keyword tcshBuiltin nextgroup=tcshStatementEnd alloc bg break breaksw builtins bye case cd chdir complete continue default dirs echo echotc end endif endsw eval exec exit fg filetest foreach getspath getxvers glob goto hashstat history hup inlib jobs kill limit log login logout ls ls-F migrate newgrp nice nohup notify onintr popd printenv pushd rehash repeat rootnode sched setpath setspath settc setty setxvers shift source stop suspend switch telltc time umask uncomplete unhash universe unlimit ver wait warp watchlog where which syn region tcshStatementEnd transparent contained matchgroup=tcshBuiltin start='' end='\v\\@|$' contains=@tcshConditions,tcshSpecial,@tcshStatementEnds syn region tcshIfEnd contained matchgroup=tcshBuiltin contains=@tcshConditions,tcshSpecial start='(' end='\v\)%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds syn region tcshIfEnd contained matchgroup=tcshBuiltin contains=tcshCommands,tcshSpecial start='\v\{\s+' end='\v\s+\}%(\s+then>)?' skipwhite nextgroup=@tcshStatementEnds keepend syn keyword tcshBuiltin nextgroup=tcshIf skipwhite else syn keyword tcshBuiltin nextgroup=@tcshConditions,tcshSpecial skipwhite while syn region tcshParenExpr contained contains=@tcshConditions,tcshSpecial matchgroup=tcshBuiltin start='(' end=')' syn region tcshCmdSubst contained contains=tcshCommands matchgroup=tcshBuiltin start='\v\{\s+' end='\v\s+\}' keepend syn keyword tcshBindkeyFuncs contained backward-char backward-delete-char \ backward-delete-word backward-kill-line backward-word \ beginning-of-line capitalize-word change-case \ change-till-end-of-line clear-screen complete-word \ complete-word-fwd complete-word-back complete-word-raw \ copy-prev-word copy-region-as-kill dabbrev-expand delete-char \ delete-char-or-eof delete-char-or-list \ delete-char-or-list-or-eof delete-word digit digit-argument \ down-history downcase-word end-of-file end-of-line \ exchange-point-and-mark expand-glob expand-history expand-line \ expand-variables forward-char forward-word \ gosmacs-transpose-chars history-search-backward \ history-search-forward insert-last-word i-search-fwd \ i-search-back keyboard-quit kill-line kill-region \ kill-whole-line list-choices list-choices-raw list-glob \ list-or-eof load-average magic-space newline normalize-path \ normalize-command overwrite-mode prefix-meta quoted-insert \ redisplay run-fg-editor run-help self-insert-command \ sequence-lead-in set-mark-command spell-word spell-line \ stuff-char toggle-literal-history transpose-chars \ transpose-gosling tty-dsusp tty-flush-output tty-sigintr \ tty-sigquit tty-sigtsusp tty-start-output tty-stop-output \ undefined-key universal-argument up-history upcase-word \ vi-beginning-of-next-word vi-add vi-add-at-eol vi-chg-case \ vi-chg-meta vi-chg-to-eol vi-cmd-mode vi-cmd-mode-complete \ vi-delprev vi-delmeta vi-endword vi-eword vi-char-back \ vi-char-fwd vi-charto-back vi-charto-fwd vi-insert \ vi-insert-at-bol vi-repeat-char-fwd vi-repeat-char-back \ vi-repeat-search-fwd vi-repeat-search-back vi-replace-char \ vi-replace-mode vi-search-back vi-search-fwd vi-substitute-char \ vi-substitute-line vi-word-back vi-word-fwd vi-undo vi-zero \ which-command yank yank-pop e_copy_to_clipboard \ e_paste_from_clipboard e_dosify_next e_dosify_prev e_page_up \ e_page_down syn keyword tcshBuiltin nextgroup=tcshBindkeyEnd bindkey syn region tcshBindkeyEnd contained transparent matchgroup=tcshBuiltin start='' skip='\\$' end='$' contains=@tcshQuoteList,tcshComment,@tcshVarList,tcshMeta,tcshSpecial,tcshArguement,tcshBindkeyFuncs syn match tcshExprStart '\v\@\s+' nextgroup=tcshExprVar syn match tcshExprVar contained '\v\h\w*%(\[\d+\])?' contains=tcshShellVar,tcshEnvVar nextgroup=tcshExprOp syn match tcshExprOp contained '++\|--' syn match tcshExprOp contained '\v\s*\=' nextgroup=tcshExprEnd syn match tcshExprEnd contained '\v.*$'hs=e+1 contains=@tcshConditions syn match tcshExprEnd contained '\v.{-};'hs=e contains=@tcshConditions syn match tcshComment '#\s.*' contains=tcshTodo,tcshCommentTi,@Spell syn match tcshComment '\v#($|\S.*)' contains=tcshTodo,tcshCommentTi syn match tcshSharpBang '^#! .*$' syn match tcshCommentTi contained '\v#\s*\u\w*(\s+\u\w*)*:'hs=s+1 contains=tcshTodo syn match tcshTodo contained '\v\c' if(exists('tcsh_backslash_quote') && tcsh_backslash_quote == 0) syn region tcshSQuote keepend contained start="\v\\@\>?\&?!?' syn match tcshMeta contained '\v[]{}*?[]' syn region tcshHereDoc contained matchgroup=tcshShellVar start='\v\<\<\s*\z(\h\w*)' end='^\z1$' contains=@tcshVarList,tcshSpecial syn region tcshHereDoc contained matchgroup=tcshShellVar start="\v\<\<\s*'\z(\h\w*)'" start='\v\<\<\s*"\z(\h\w*)"$' start='\v\<\<\s*\\\z(\h\w*)$' end='^\z1$' syn match tcshOperator contained '&&\|!\~\|!=\|<<\|<=\|==\|=\~\|>=\|>>\|\*\|\^\|\~\|||\|!\|%\|&\|+\|-\|/\|<\|>\||' syn match tcshNumber contained '\v<-?\d+>' syn match tcshArguement contained '\v\s@<=-(\w|-)*' syn match tcshSpecial contained '\v\\%([0-7]{3}|.)' if exists('tcsh_minlines') if tcsh_minlines == 'fromstart' syn sync fromstart else exec 'syn sync minlines=' . tcsh_minlines endif else syn sync minlines=100 " Some completions can be quite long endif hi def link tcshError Error hi def link tcshBuiltin Statement hi def link tcshShellVar Preproc hi def link tcshEnvVar tcshShellVar hi def link tcshAliases tcshShellVar hi def link tcshAliCmd Identifier hi def link tcshCommands Identifier hi def link tcshIf tcshBuiltin hi def link tcshWhile tcshBuiltin hi def link tcshBindkeyFuncs Function hi def link tcshExprStart tcshBuiltin hi def link tcshExprVar tcshUsrVar hi def link tcshExprOp tcshOperator hi def link tcshExprEnd tcshOperator hi def link tcshComment Comment hi def link tcshCommentTi Preproc hi def link tcshSharpBang tcshCommentTi hi def link tcshTodo Todo hi def link tcshSQuote Constant hi def link tcshDQuote tcshSQuote hi def link tcshBQuoteGrp Include hi def link tcshVarError Error hi def link tcshUsrVar Type hi def link tcshArgv tcshUsrVar hi def link tcshSubst tcshUsrVar hi def link tcshModifier tcshArguement hi def link tcshModifierError tcshVarError hi def link tcshMeta tcshSubst hi def link tcshRedir tcshOperator hi def link tcshHereDoc tcshSQuote hi def link tcshOperator Operator hi def link tcshNumber Number hi def link tcshArguement Special hi def link tcshSpecial SpecialChar let &cpo = s:oldcpo unlet s:oldcpo let b:current_syntax = 'tcsh' if exists("b:current_syntax") finish endif runtime! syntax/html.vim if exists("b:current_syntax") finish endif let s:save_cpo = &cpo set cpo&vim syn case ignore syn region ttlComment start=";" end="$" contains=@Spell syn region ttlComment start="/\*" end="\*/" contains=@Spell syn region ttlFirstComment start="/\*" end="\*/" contained contains=@Spell \ nextgroup=ttlStatement,ttlFirstComment syn match ttlCharacter "#\%(\d\+\|\$\x\+\)\>" syn match ttlNumber "\%(\<\d\+\|\$\x\+\)\>" syn match ttlString "'[^']*'" contains=@Spell syn match ttlString '"[^"]*"' contains=@Spell syn cluster ttlConstant contains=ttlCharacter,ttlNumber,ttlString syn match ttlLabel ":\s*\w\{1,32}\>" syn keyword ttlOperator and or xor not syn match ttlVar "\" syn match ttlVar "\" syn keyword ttlVar inputstr matchstr paramcnt params result timeout mtimeout syn match ttlLine nextgroup=ttlStatement "^" syn match ttlStatement contained "\s*" \ nextgroup=ttlIf,ttlElseIf,ttlConditional,ttlRepeat, \ ttlFirstComment,ttlComment,ttlLabel,@ttlCommand syn cluster ttlCommand contains=ttlControlCommand,ttlCommunicationCommand, \ ttlStringCommand,ttlFileCommand,ttlPasswordCommand, \ ttlMiscCommand syn keyword ttlIf contained nextgroup=ttlIfExpression if syn keyword ttlElseIf contained nextgroup=ttlElseIfExpression elseif syn match ttlIfExpression contained "\s.*" \ contains=@ttlConstant,ttlVar,ttlOperator,ttlComment,ttlThen, \ @ttlCommand syn match ttlElseIfExpression contained "\s.*" \ contains=@ttlConstant,ttlVar,ttlOperator,ttlComment,ttlThen syn keyword ttlThen contained then syn keyword ttlConditional contained else endif syn keyword ttlRepeat contained for next until enduntil while endwhile syn match ttlRepeat contained \ "\<\%(do\|loop\)\%(\s\+\%(while\|until\)\)\?\>" syn keyword ttlControlCommand contained \ break call continue end execcmnd exit goto include \ mpause pause return syn keyword ttlCommunicationCommand contained \ bplusrecv bplussend callmenu changedir clearscreen \ closett connect cygconnect disconnect dispstr \ enablekeyb flushrecv gethostname getmodemstatus \ gettitle kmtfinish kmtget kmtrecv kmtsend loadkeymap \ logautoclosemode logclose loginfo logopen logpause \ logrotate logstart logwrite quickvanrecv \ quickvansend recvln restoresetup scprecv scpsend \ send sendbreak sendbroadcast sendfile sendkcode \ sendln sendlnbroadcast sendlnmulticast sendmulticast \ setbaud setdebug setdtr setecho setflowctrl \ setmulticastname setrts setspeed setsync settitle \ showtt testlink unlink wait wait4all waitevent \ waitln waitn waitrecv waitregex xmodemrecv \ xmodemsend ymodemrecv ymodemsend zmodemrecv \ zmodemsend syn keyword ttlStringCommand contained \ code2str expandenv int2str regexoption sprintf \ sprintf2 str2code str2int strcompare strconcat \ strcopy strinsert strjoin strlen strmatch strremove \ strreplace strscan strspecial strsplit strtrim \ tolower toupper syn keyword ttlFileCommand contained \ basename dirname fileclose fileconcat filecopy \ filecreate filedelete filelock filemarkptr fileopen \ filereadln fileread filerename filesearch fileseek \ fileseekback filestat filestrseek filestrseek2 \ filetruncate fileunlock filewrite filewriteln \ findfirst findnext findclose foldercreate \ folderdelete foldersearch getdir getfileattr makepath \ setdir setfileattr syn keyword ttlPasswordCommand contained \ delpassword getpassword ispassword passwordbox \ setpassword syn keyword ttlMiscCommand contained \ beep bringupbox checksum8 checksum8file checksum16 \ checksum16file checksum32 checksum32file closesbox \ clipb2var crc16 crc16file crc32 crc32file exec \ dirnamebox filenamebox getdate getenv getipv4addr \ getipv6addr getspecialfolder gettime getttdir getver \ ifdefined inputbox intdim listbox messagebox random \ rotateleft rotateright setdate setdlgpos setenv \ setexitcode settime show statusbox strdim uptime \ var2clipb yesnobox hi def link ttlCharacter Character hi def link ttlNumber Number hi def link ttlComment Comment hi def link ttlFirstComment Comment hi def link ttlString String hi def link ttlLabel Label hi def link ttlIf Conditional hi def link ttlElseIf Conditional hi def link ttlThen Conditional hi def link ttlConditional Conditional hi def link ttlRepeat Repeat hi def link ttlControlCommand Keyword hi def link ttlVar Identifier hi def link ttlOperator Operator hi def link ttlCommunicationCommand Keyword hi def link ttlStringCommand Keyword hi def link ttlFileCommand Keyword hi def link ttlPasswordCommand Keyword hi def link ttlMiscCommand Keyword let b:current_syntax = "teraterm" let &cpo = s:save_cpo unlet s:save_cpo if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match terminfoKeywords '[,=#|]' syn keyword terminfoTodo contained TODO FIXME XXX NOTE syn region terminfoComment display oneline start='^#' end='$' \ contains=terminfoTodo,@Spell syn match terminfoNumbers '\<[0-9]\+\>' syn match terminfoSpecialChar '\\\(\o\{3}\|[Eenlrtbfs^\,:0]\)' syn match terminfoSpecialChar '\^\a' syn match terminfoDelay '$<[0-9]\+>' syn keyword terminfoBooleans bw am bce ccc xhp xhpa cpix crxw xt xenl eo gn \ hc chts km daisy hs hls in lpix da db mir \ msgr nxon xsb npc ndscr nrrmc os mc5i xcpa \ sam eslok hz ul xon syn keyword terminfoNumerics cols it lh lw lines lm xmc ma colors pairs wnum \ ncv nlab pb vt wsl bitwin bitype bufsz btns \ spinh spinv maddr mjump mcs npins orc orhi \ orl orvi cps widcs syn keyword terminfoStrings acsc cbt bel cr cpi lpi chr cvr csr rmp tbc mgc \ clear el1 el ed hpa cmdch cwin cup cud1 home \ civis cub1 mrcup cnorm cuf1 ll cuu1 cvvis \ defc dch1 dl1 dial dsl dclk hd enacs smacs \ smam blink bold smcup smdc dim swidm sdrfq \ smir sitm slm smicm snlq snrmq prot rev \ invis sshm smso ssubm ssupm smul sum smxon \ ech rmacs rmam sgr0 rmcup rmdc rwidm rmir \ ritm rlm rmicm rshm rmso rsubm rsupm rmul \ rum rmxon pause hook flash ff fsl wingo hup \ is1 is2 is3 if iprog initc initp ich1 il1 ip \ ka1 ka3 kb2 kbs kbeg kcbt kc1 kc3 kcan ktbc \ kclr kclo kcmd kcpy kcrt kctab kdch1 kdl1 \ kcud1 krmir kend kent kel ked kext kfnd khlp \ khome kich1 kil1 kcub1 kll kmrk kmsg kmov \ knxt knp kopn kopt kpp kprv kprt krdo kref \ krfr krpl krst kres kcuf1 ksav kBEG kCAN \ kCMD kCPY kCRT kDC kDL kslt kEND kEOL kEXT \ kind kFND kHLP kHOM kIC kLFT kMSG kMOV kNXT \ kOPT kPRV kPRT kri kRDO kRPL kRIT kRES kSAV \ kSPD khts kUND kspd kund kcuu1 rmkx smkx \ lf0 lf1 lf10 lf2 lf3 lf4 lf5 lf6 lf7 lf8 lf9 \ fln rmln smln rmm smm mhpa mcud1 mcub1 mcuf1 \ mvpa mcuu1 nel porder oc op pad dch dl cud \ mcud ich indn il cub mcub cuf mcuf rin cuu \ mccu pfkey pfloc pfx pln mc0 mc5p mc4 mc5 \ pulse qdial rmclk rep rfi rs1 rs2 rs3 rf rc \ vpa sc ind ri scs sgr setbsmgb smgbp sclk \ scp setb setf smgl smglp smgr smgrp hts smgt \ smgtp wind sbim scsd rbim rcsd subcs supcs \ ht docr tsl tone uc hu u0 u1 u2 u3 u4 u5 u6 \ u7 u8 u9 wait xoffc xonc zerom scesa bicr \ binel birep csnm csin colornm defbi devt \ dispc endbi smpch smsc rmpch rmsc getm kmous \ minfo pctrm pfxl reqmp scesc s0ds s1ds s2ds \ s3ds setab setaf setcolor smglr slines smgtb \ ehhlm elhlm erhlm ethlm evhlm sgr1 slengthsL syn match terminfoStrings display '\' syn match terminfoParameters '%[%dcspl+*/mAO&|^=<>!~i?te;-]' syn match terminfoParameters "%\('[A-Z]'\|{[0-9]\{1,2}}\|p[1-9]\|P[a-z]\|g[A-Z]\)" hi def link terminfoComment Comment hi def link terminfoTodo Todo hi def link terminfoNumbers Number hi def link terminfoSpecialChar SpecialChar hi def link terminfoDelay Special hi def link terminfoBooleans Type hi def link terminfoNumerics Type hi def link terminfoStrings Type hi def link terminfoParameters Keyword hi def link terminfoKeywords Keyword let b:current_syntax = "terminfo" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim scriptencoding utf-8 let s:tex_fast= "bcmMprsSvV" if exists("g:tex_fast") if type(g:tex_fast) != 1 let s:tex_fast= "" else let s:tex_fast= g:tex_fast endif endif if !exists("g:tex_conceal") let s:tex_conceal= 'abdmgsS' else let s:tex_conceal= g:tex_conceal endif if !exists("g:tex_superscripts") let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]' else let s:tex_superscripts= g:tex_superscripts endif if !exists("g:tex_subscripts") let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]' else let s:tex_subscripts= g:tex_subscripts endif let s:extfname=expand("%:e") if exists("g:tex_stylish") let b:tex_stylish= g:tex_stylish elseif !exists("b:tex_stylish") if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx" let b:tex_stylish= 1 else let b:tex_stylish= 0 endif endif if !exists("g:tex_fold_enabled") let s:tex_fold_enabled= 0 elseif g:tex_fold_enabled && !has("folding") let s:tex_fold_enabled= 0 echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" else let s:tex_fold_enabled= 1 endif if s:tex_fold_enabled && &fdm == "manual" setl fdm=syntax endif if s:tex_fold_enabled && has("folding") com! -nargs=* TexFold fold else com! -nargs=* TexFold endif if exists("g:tex_isk") if b:tex_stylish && g:tex_isk !~ '@' let b:tex_isk= '@,'.g:tex_isk else let b:tex_isk= g:tex_isk endif elseif b:tex_stylish let b:tex_isk="@,48-57,a-z,A-Z,192-255" else let b:tex_isk="48-57,a-z,A-Z,192-255" endif if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704 exe "syn iskeyword ".b:tex_isk else exe "setl isk=".b:tex_isk endif if exists("g:tex_no_error") && g:tex_no_error let s:tex_no_error= 1 else let s:tex_no_error= 0 endif if exists("g:tex_comment_nospell") && g:tex_comment_nospell let s:tex_comment_nospell= 1 else let s:tex_comment_nospell= 0 endif if exists("g:tex_nospell") && g:tex_nospell let s:tex_nospell = 1 else let s:tex_nospell = 0 endif syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,@texMathZones if !s:tex_no_error syn cluster texCmdGroup add=texMathError endif syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texEmphStyle,texNoSpell syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texEmphStyle,texItalBoldStyle,texNoSpell if !s:tex_nospell syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell else syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher endif syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter if !exists("g:tex_no_math") syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ syn cluster texMatchGroup add=@texMathZones syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle if !s:tex_no_error syn cluster texMathMatchGroup add=texMathError syn cluster texMathZoneGroup add=texMathError endif syn cluster texMathZoneGroup add=@NoSpell syn cluster texDocGroup contains=texPartZone,@texPartGroup syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone syn cluster texChapterGroup contains=texSectionZone,texParaZone syn cluster texSectionGroup contains=texSubSectionZone,texParaZone syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone syn cluster texSubSubSectionGroup contains=texParaZone syn cluster texParaGroup contains=texSubParaZone if has("conceal") && &enc == 'utf-8' syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol endif endif if s:tex_fast =~# 'm' if !s:tex_no_error syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell else syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup endif if !s:tex_nospell syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell else syn region texParen start="(" end=")" transparent contains=@texMatchGroup endif endif if !s:tex_no_error syn match texError "[}\])]" endif if s:tex_fast =~# 'M' if !exists("g:tex_no_math") if !s:tex_no_error syn match texMathError "}" contained endif syn region texMathMatcher matchgroup=Delimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup endif endif if exists("g:tex_tex") || b:tex_stylish syn match texStatement "\\[a-zA-Z@]\+" else syn match texStatement "\\\a\+" if !s:tex_no_error syn match texError "\\\a*@[a-zA-Z@]*" endif endif syn match texDelimiter "&" syn match texDelimiter "\\\\" syn match texOption "[^\\]\zs#\d\+\|^#\d\+" if b:tex_stylish syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 else syn match texAccent "\\[bcdvuH]\A"me=e-1 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1 endif syn match texAccent "\\[bcdvuH]$" syn match texAccent +\\[=^.\~"`']+ syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName if s:tex_fast =~# 'm' syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell endif syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs if s:tex_fast =~# 'm' syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell endif if s:tex_fold_enabled && has("folding") syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup endif syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt syn match texInputCurlies "[{}]" contained if s:tex_fast =~# 'm' syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment endif syn match texTypeStyle "\\rm\>" syn match texTypeStyle "\\em\>" syn match texTypeStyle "\\bf\>" syn match texTypeStyle "\\it\>" syn match texTypeStyle "\\sl\>" syn match texTypeStyle "\\sf\>" syn match texTypeStyle "\\sc\>" syn match texTypeStyle "\\tt\>" if s:tex_conceal !~# 'b' syn match texTypeStyle "\\textbf\>" syn match texTypeStyle "\\textit\>" syn match texTypeStyle "\\emph\>" endif syn match texTypeStyle "\\textmd\>" syn match texTypeStyle "\\textrm\>" syn match texTypeStyle "\\textsc\>" syn match texTypeStyle "\\textsf\>" syn match texTypeStyle "\\textsl\>" syn match texTypeStyle "\\texttt\>" syn match texTypeStyle "\\textup\>" syn match texTypeStyle "\\mathbb\>" syn match texTypeStyle "\\mathbf\>" syn match texTypeStyle "\\mathcal\>" syn match texTypeStyle "\\mathfrak\>" syn match texTypeStyle "\\mathit\>" syn match texTypeStyle "\\mathnormal\>" syn match texTypeStyle "\\mathrm\>" syn match texTypeStyle "\\mathsf\>" syn match texTypeStyle "\\mathtt\>" syn match texTypeStyle "\\rmfamily\>" syn match texTypeStyle "\\sffamily\>" syn match texTypeStyle "\\ttfamily\>" syn match texTypeStyle "\\itshape\>" syn match texTypeStyle "\\scshape\>" syn match texTypeStyle "\\slshape\>" syn match texTypeStyle "\\upshape\>" syn match texTypeStyle "\\bfseries\>" syn match texTypeStyle "\\mdseries\>" syn match texTypeSize "\\tiny\>" syn match texTypeSize "\\scriptsize\>" syn match texTypeSize "\\footnotesize\>" syn match texTypeSize "\\small\>" syn match texTypeSize "\\normalsize\>" syn match texTypeSize "\\large\>" syn match texTypeSize "\\Large\>" syn match texTypeSize "\\LARGE\>" syn match texTypeSize "\\huge\>" syn match texTypeSize "\\Huge\>" syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained if s:tex_fast =~# 'p' if !s:tex_nospell TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell else TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup endif endif if s:tex_fast =~# 'b' if s:tex_conceal =~# 'b' if !exists("g:tex_nospell") || !g:tex_nospell syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell else syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup endif endif endif if !exists("g:tex_no_math") && !s:tex_no_error syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}" syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}" syn match texBadMath "\\[\])]" endif if !exists("g:tex_no_math") fun! TexNewMathZone(sfx,mathzone,starform) let grpname = "texMathZone".a:sfx let syncname = "texSyncMathZone".a:sfx if s:tex_fold_enabled let foldcmd= " fold" else let foldcmd= "" endif exe "syn cluster texMathZones add=".grpname if s:tex_fast =~# 'M' exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' endif exe 'hi def link '.grpname.' texMath' if a:starform let grpname = "texMathZone".a:sfx.'S' let syncname = "texSyncMathZone".a:sfx.'S' exe "syn cluster texMathZones add=".grpname if s:tex_fast =~# 'M' exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' endif exe 'hi def link '.grpname.' texMath' endif endfun call TexNewMathZone("A","displaymath",1) call TexNewMathZone("B","eqnarray",1) call TexNewMathZone("C","equation",1) call TexNewMathZone("D","math",1) if s:tex_fast =~# 'M' if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd' syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup else syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup endif syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup endif syn match texMathOper "[_^=]" contained if s:tex_fast =~# 'M' if !exists("g:tex_nospell") || !g:tex_nospell syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell else syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup endif endif syn match texMathDelimBad contained "\S" if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm' syn match texMathDelim contained "\\left\[" syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={ syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=} let s:texMathDelimList=[ \ ['<' , '<'] , \ ['>' , '>'] , \ ['(' , '('] , \ [')' , ')'] , \ ['\[' , '['] , \ [']' , ']'] , \ ['\\{' , '{'] , \ ['\\}' , '}'] , \ ['|' , '|'] , \ ['\\|' , '‖'] , \ ['\\backslash' , '\'] , \ ['\\downarrow' , '↓'] , \ ['\\Downarrow' , '⇓'] , \ ['\\lbrace' , '['] , \ ['\\lceil' , '⌈'] , \ ['\\lfloor' , '⌊'] , \ ['\\lgroup' , '⌊'] , \ ['\\lmoustache' , '⎛'] , \ ['\\rbrace' , ']'] , \ ['\\rceil' , '⌉'] , \ ['\\rfloor' , '⌋'] , \ ['\\rgroup' , '⌋'] , \ ['\\rmoustache' , '⎞'] , \ ['\\uparrow' , '↑'] , \ ['\\Uparrow' , '↑'] , \ ['\\updownarrow', '↕'] , \ ['\\Updownarrow', '⇕']] if &ambw == "double" || exists("g:tex_usedblwidth") let s:texMathDelimList= s:texMathDelimList + [ \ ['\\langle' , '〈'] , \ ['\\rangle' , '〉']] else let s:texMathDelimList= s:texMathDelimList + [ \ ['\\langle' , '<'] , \ ['\\rangle' , '>']] endif syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad for texmath in s:texMathDelimList exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1] endfor else syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]" syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow syn keyword texMathDelimKey contained lbrace lvert rfloor endif syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>" syn match texMathDelim contained "\\lefteqn\>" endif syn match texSpecialChar "\\[$&%#{}_]" if b:tex_stylish syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1 else syn match texSpecialChar "\\[SP@]\A"me=e-1 endif syn match texSpecialChar "\\\\" if !exists("g:tex_no_math") syn match texOnlyMath "[_^]" endif syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S" if s:tex_conceal !~# 'S' syn match texSpecialChar '\\glq\>' contained conceal cchar=‚ syn match texSpecialChar '\\grq\>' contained conceal cchar=‘ syn match texSpecialChar '\\glqq\>' contained conceal cchar=„ syn match texSpecialChar '\\grqq\>' contained conceal cchar=“ syn match texSpecialChar '\\hyp\>' contained conceal cchar=- endif if !s:tex_comment_nospell syn cluster texCommentGroup contains=texTodo,@Spell else syn cluster texCommentGroup contains=texTodo,@NoSpell endif syn case ignore syn keyword texTodo contained combak fixme todo xxx syn case match if s:extfname == "dtx" syn match texComment "\^\^A.*$" contains=@texCommentGroup syn match texComment "^%\+" contains=@texCommentGroup else if s:tex_fold_enabled syn match texComment "%.*$" contains=@texCommentGroup if s:tex_fast =~# 'c' TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell endif else syn match texComment "%.*$" contains=@texCommentGroup if s:tex_fast =~# 'c' syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell endif endif endif if !s:tex_nospell TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell else TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup endif if s:tex_fast =~# 'v' if exists("g:tex_verbspell") && g:tex_verbspell syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell if b:tex_stylish syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell else syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell endif else syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" if b:tex_stylish syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" else syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" endif endif endif if s:tex_fast =~# 'r' syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite endif syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl if s:tex_fast =~# 'V' syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup endif syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl if s:tex_fast =~# 'V' syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup endif syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl if b:tex_stylish syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl else syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl endif syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl syn match texDefParm contained "#\d\+" syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>" syn match texString "\(``\|''\|,,\)" if !s:tex_no_error if s:tex_fast =~# 'S' syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained endif syn match texStyleStatement "\\[a-zA-Z@]\+" contained if s:tex_fast =~# 'S' syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained endif endif if has("conceal") && &enc == 'utf-8' if s:tex_conceal =~# 'm' let s:texMathList=[ \ ['|' , '‖'], \ ['aleph' , 'ℵ'], \ ['amalg' , 'âˆ'], \ ['angle' , '∠'], \ ['approx' , '≈'], \ ['ast' , '∗'], \ ['asymp' , 'â‰'], \ ['backslash' , '∖'], \ ['bigcap' , '∩'], \ ['bigcirc' , 'â—‹'], \ ['bigcup' , '∪'], \ ['bigodot' , '⊙'], \ ['bigoplus' , '⊕'], \ ['bigotimes' , '⊗'], \ ['bigsqcup' , '⊔'], \ ['bigtriangledown', '∇'], \ ['bigtriangleup' , '∆'], \ ['bigvee' , 'â‹'], \ ['bigwedge' , 'â‹€'], \ ['bot' , '⊥'], \ ['bowtie' , '⋈'], \ ['bullet' , '•'], \ ['cap' , '∩'], \ ['cdot' , '·'], \ ['cdots' , '⋯'], \ ['circ' , '∘'], \ ['clubsuit' , '♣'], \ ['cong' , '≅'], \ ['coprod' , 'âˆ'], \ ['copyright' , '©'], \ ['cup' , '∪'], \ ['dagger' , '†'], \ ['dashv' , '⊣'], \ ['ddagger' , '‡'], \ ['ddots' , '⋱'], \ ['diamond' , 'â‹„'], \ ['diamondsuit' , '♢'], \ ['div' , '÷'], \ ['doteq' , 'â‰'], \ ['dots' , '…'], \ ['downarrow' , '↓'], \ ['Downarrow' , '⇓'], \ ['ell' , 'â„“'], \ ['emptyset' , '∅'], \ ['equiv' , '≡'], \ ['exists' , '∃'], \ ['flat' , 'â™­'], \ ['forall' , '∀'], \ ['frown' , 'â”'], \ ['ge' , '≥'], \ ['geq' , '≥'], \ ['gets' , 'â†'], \ ['gg' , '⟫'], \ ['hbar' , 'â„'], \ ['heartsuit' , '♡'], \ ['hookleftarrow' , '↩'], \ ['hookrightarrow' , '↪'], \ ['iff' , '⇔'], \ ['Im' , 'â„‘'], \ ['imath' , 'É©'], \ ['in' , '∈'], \ ['infty' , '∞'], \ ['int' , '∫'], \ ['jmath' , 'ðš¥'], \ ['land' , '∧'], \ ['lceil' , '⌈'], \ ['ldots' , '…'], \ ['le' , '≤'], \ ['left(' , '('], \ ['left\[' , '['], \ ['left\\{' , '{'], \ ['leftarrow' , 'â†'], \ ['Leftarrow' , 'â‡'], \ ['leftharpoondown', '↽'], \ ['leftharpoonup' , '↼'], \ ['leftrightarrow' , '↔'], \ ['Leftrightarrow' , '⇔'], \ ['leq' , '≤'], \ ['leq' , '≤'], \ ['lfloor' , '⌊'], \ ['ll' , '≪'], \ ['lmoustache' , 'â•­'], \ ['lor' , '∨'], \ ['mapsto' , '↦'], \ ['mid' , '∣'], \ ['models' , 'â•ž'], \ ['mp' , '∓'], \ ['nabla' , '∇'], \ ['natural' , 'â™®'], \ ['ne' , '≠'], \ ['nearrow' , '↗'], \ ['neg' , '¬'], \ ['neq' , '≠'], \ ['ni' , '∋'], \ ['notin' , '∉'], \ ['nwarrow' , '↖'], \ ['odot' , '⊙'], \ ['oint' , '∮'], \ ['ominus' , '⊖'], \ ['oplus' , '⊕'], \ ['oslash' , '⊘'], \ ['otimes' , '⊗'], \ ['owns' , '∋'], \ ['P' , '¶'], \ ['parallel' , 'â•‘'], \ ['partial' , '∂'], \ ['perp' , '⊥'], \ ['pm' , '±'], \ ['prec' , '≺'], \ ['preceq' , '⪯'], \ ['prime' , '′'], \ ['prod' , 'âˆ'], \ ['propto' , 'âˆ'], \ ['rceil' , '⌉'], \ ['Re' , 'â„œ'], \ ['quad' , ' '], \ ['qquad' , 'â€'], \ ['rfloor' , '⌋'], \ ['right)' , ')'], \ ['right]' , ']'], \ ['right\\}' , '}'], \ ['rightarrow' , '→'], \ ['Rightarrow' , '⇒'], \ ['rightleftharpoons', '⇌'], \ ['rmoustache' , 'â•®'], \ ['S' , '§'], \ ['searrow' , '↘'], \ ['setminus' , '∖'], \ ['sharp' , '♯'], \ ['sim' , '∼'], \ ['simeq' , 'â‹'], \ ['smile' , '‿'], \ ['spadesuit' , 'â™ '], \ ['sqcap' , '⊓'], \ ['sqcup' , '⊔'], \ ['sqsubset' , 'âŠ'], \ ['sqsubseteq' , '⊑'], \ ['sqsupset' , 'âŠ'], \ ['sqsupseteq' , '⊒'], \ ['star' , '✫'], \ ['subset' , '⊂'], \ ['subseteq' , '⊆'], \ ['succ' , '≻'], \ ['succeq' , '⪰'], \ ['sum' , '∑'], \ ['supset' , '⊃'], \ ['supseteq' , '⊇'], \ ['surd' , '√'], \ ['swarrow' , '↙'], \ ['times' , '×'], \ ['to' , '→'], \ ['top' , '⊤'], \ ['triangle' , '∆'], \ ['triangleleft' , '⊲'], \ ['triangleright' , '⊳'], \ ['uparrow' , '↑'], \ ['Uparrow' , '⇑'], \ ['updownarrow' , '↕'], \ ['Updownarrow' , '⇕'], \ ['vdash' , '⊢'], \ ['vdots' , 'â‹®'], \ ['vee' , '∨'], \ ['wedge' , '∧'], \ ['wp' , '℘'], \ ['wr' , '≀']] if &ambw == "double" || exists("g:tex_usedblwidth") let s:texMathList= s:texMathList + [ \ ['right\\rangle' , '〉'], \ ['left\\langle' , '〈']] else let s:texMathList= s:texMathList + [ \ ['right\\rangle' , '>'], \ ['left\\langle' , '<']] endif for texmath in s:texMathList if texmath[0] =~# '\w$' exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1] else exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1] endif endfor if &ambw == "double" syn match texMathSymbol '\\gg\>' contained conceal cchar=≫ syn match texMathSymbol '\\ll\>' contained conceal cchar=≪ else syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫ syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪ endif syn match texMathSymbol '\\hat{a}' contained conceal cchar=â syn match texMathSymbol '\\hat{A}' contained conceal cchar= syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê syn match texMathSymbol '\\hat{g}' contained conceal cchar=Ä syn match texMathSymbol '\\hat{G}' contained conceal cchar=Äœ syn match texMathSymbol '\\hat{i}' contained conceal cchar=î syn match texMathSymbol '\\hat{I}' contained conceal cchar=ÃŽ syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô syn match texMathSymbol '\\hat{s}' contained conceal cchar=Å syn match texMathSymbol '\\hat{S}' contained conceal cchar=Åœ syn match texMathSymbol '\\hat{u}' contained conceal cchar=û syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ syn match texMathSymbol '\\hat{W}' contained conceal cchar=Å´ syn match texMathSymbol '\\hat{y}' contained conceal cchar=Å· syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ syn match texMathSymbol '\\dot{M}' contained conceal cchar=á¹€ syn match texMathSymbol '\\dot{m}' contained conceal cchar=á¹ syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ syn match texMathSymbol '\\dot{n}' contained conceal cchar=á¹… syn match texMathSymbol '\\dot{P}' contained conceal cchar=á¹– syn match texMathSymbol '\\dot{p}' contained conceal cchar=á¹— syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ syn match texMathSymbol '\\dot{r}' contained conceal cchar=á¹™ syn match texMathSymbol '\\dot{S}' contained conceal cchar=á¹  syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ syn match texMathSymbol '\\dot{y}' contained conceal cchar=Ạsyn match texMathSymbol '\\dot{Z}' contained conceal cchar=Å» syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż syn match texMathSymbol '\\dot{C}' contained conceal cchar=ÄŠ syn match texMathSymbol '\\dot{c}' contained conceal cchar=Ä‹ syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ä– syn match texMathSymbol '\\dot{e}' contained conceal cchar=Ä— syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ä  syn match texMathSymbol '\\dot{g}' contained conceal cchar=Ä¡ syn match texMathSymbol '\\dot{I}' contained conceal cchar=Ä° syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ syn match texMathSymbol '\\dot{O}' contained conceal cchar=È® syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ endif if s:tex_conceal =~# 'g' fun! s:Greek(group,pat,cchar) exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar endfun call s:Greek('texGreek','\\alpha\>' ,'α') call s:Greek('texGreek','\\beta\>' ,'β') call s:Greek('texGreek','\\gamma\>' ,'γ') call s:Greek('texGreek','\\delta\>' ,'δ') call s:Greek('texGreek','\\epsilon\>' ,'ϵ') call s:Greek('texGreek','\\varepsilon\>' ,'ε') call s:Greek('texGreek','\\zeta\>' ,'ζ') call s:Greek('texGreek','\\eta\>' ,'η') call s:Greek('texGreek','\\theta\>' ,'θ') call s:Greek('texGreek','\\vartheta\>' ,'Ï‘') call s:Greek('texGreek','\\iota\>' ,'ι') call s:Greek('texGreek','\\kappa\>' ,'κ') call s:Greek('texGreek','\\lambda\>' ,'λ') call s:Greek('texGreek','\\mu\>' ,'μ') call s:Greek('texGreek','\\nu\>' ,'ν') call s:Greek('texGreek','\\xi\>' ,'ξ') call s:Greek('texGreek','\\pi\>' ,'Ï€') call s:Greek('texGreek','\\varpi\>' ,'Ï–') call s:Greek('texGreek','\\rho\>' ,'Ï') call s:Greek('texGreek','\\varrho\>' ,'ϱ') call s:Greek('texGreek','\\sigma\>' ,'σ') call s:Greek('texGreek','\\varsigma\>' ,'Ï‚') call s:Greek('texGreek','\\tau\>' ,'Ï„') call s:Greek('texGreek','\\upsilon\>' ,'Ï…') call s:Greek('texGreek','\\phi\>' ,'Ï•') call s:Greek('texGreek','\\varphi\>' ,'φ') call s:Greek('texGreek','\\chi\>' ,'χ') call s:Greek('texGreek','\\psi\>' ,'ψ') call s:Greek('texGreek','\\omega\>' ,'ω') call s:Greek('texGreek','\\Gamma\>' ,'Γ') call s:Greek('texGreek','\\Delta\>' ,'Δ') call s:Greek('texGreek','\\Theta\>' ,'Θ') call s:Greek('texGreek','\\Lambda\>' ,'Λ') call s:Greek('texGreek','\\Xi\>' ,'Ξ') call s:Greek('texGreek','\\Pi\>' ,'Π') call s:Greek('texGreek','\\Sigma\>' ,'Σ') call s:Greek('texGreek','\\Upsilon\>' ,'Î¥') call s:Greek('texGreek','\\Phi\>' ,'Φ') call s:Greek('texGreek','\\Chi\>' ,'Χ') call s:Greek('texGreek','\\Psi\>' ,'Ψ') call s:Greek('texGreek','\\Omega\>' ,'Ω') delfun s:Greek endif if s:tex_conceal =~# 's' if s:tex_fast =~# 's' syn region texSuperscript matchgroup=Delimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher syn region texSubscript matchgroup=Delimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher endif fun! s:SuperSub(group,leader,pat,cchar) if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts) exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s' endif endfun call s:SuperSub('texSuperscript','\^','0','â°') call s:SuperSub('texSuperscript','\^','1','¹') call s:SuperSub('texSuperscript','\^','2','²') call s:SuperSub('texSuperscript','\^','3','³') call s:SuperSub('texSuperscript','\^','4','â´') call s:SuperSub('texSuperscript','\^','5','âµ') call s:SuperSub('texSuperscript','\^','6','â¶') call s:SuperSub('texSuperscript','\^','7','â·') call s:SuperSub('texSuperscript','\^','8','â¸') call s:SuperSub('texSuperscript','\^','9','â¹') call s:SuperSub('texSuperscript','\^','a','ᵃ') call s:SuperSub('texSuperscript','\^','b','ᵇ') call s:SuperSub('texSuperscript','\^','c','ᶜ') call s:SuperSub('texSuperscript','\^','d','ᵈ') call s:SuperSub('texSuperscript','\^','e','ᵉ') call s:SuperSub('texSuperscript','\^','f','ᶠ') call s:SuperSub('texSuperscript','\^','g','áµ') call s:SuperSub('texSuperscript','\^','h','Ê°') call s:SuperSub('texSuperscript','\^','i','â±') call s:SuperSub('texSuperscript','\^','j','ʲ') call s:SuperSub('texSuperscript','\^','k','áµ') call s:SuperSub('texSuperscript','\^','l','Ë¡') call s:SuperSub('texSuperscript','\^','m','áµ') call s:SuperSub('texSuperscript','\^','n','â¿') call s:SuperSub('texSuperscript','\^','o','áµ’') call s:SuperSub('texSuperscript','\^','p','áµ–') call s:SuperSub('texSuperscript','\^','r','ʳ') call s:SuperSub('texSuperscript','\^','s','Ë¢') call s:SuperSub('texSuperscript','\^','t','áµ—') call s:SuperSub('texSuperscript','\^','u','ᵘ') call s:SuperSub('texSuperscript','\^','v','áµ›') call s:SuperSub('texSuperscript','\^','w','Ê·') call s:SuperSub('texSuperscript','\^','x','Ë£') call s:SuperSub('texSuperscript','\^','y','ʸ') call s:SuperSub('texSuperscript','\^','z','ᶻ') call s:SuperSub('texSuperscript','\^','A','á´¬') call s:SuperSub('texSuperscript','\^','B','á´®') call s:SuperSub('texSuperscript','\^','D','á´°') call s:SuperSub('texSuperscript','\^','E','á´±') call s:SuperSub('texSuperscript','\^','G','á´³') call s:SuperSub('texSuperscript','\^','H','á´´') call s:SuperSub('texSuperscript','\^','I','á´µ') call s:SuperSub('texSuperscript','\^','J','á´¶') call s:SuperSub('texSuperscript','\^','K','á´·') call s:SuperSub('texSuperscript','\^','L','á´¸') call s:SuperSub('texSuperscript','\^','M','á´¹') call s:SuperSub('texSuperscript','\^','N','á´º') call s:SuperSub('texSuperscript','\^','O','á´¼') call s:SuperSub('texSuperscript','\^','P','á´¾') call s:SuperSub('texSuperscript','\^','R','á´¿') call s:SuperSub('texSuperscript','\^','T','áµ€') call s:SuperSub('texSuperscript','\^','U','áµ') call s:SuperSub('texSuperscript','\^','W','ᵂ') call s:SuperSub('texSuperscript','\^',',','ï¸') call s:SuperSub('texSuperscript','\^',':','︓') call s:SuperSub('texSuperscript','\^',';','︔') call s:SuperSub('texSuperscript','\^','+','âº') call s:SuperSub('texSuperscript','\^','-','â»') call s:SuperSub('texSuperscript','\^','<','Ë‚') call s:SuperSub('texSuperscript','\^','>','˃') call s:SuperSub('texSuperscript','\^','/','ËŠ') call s:SuperSub('texSuperscript','\^','(','â½') call s:SuperSub('texSuperscript','\^',')','â¾') call s:SuperSub('texSuperscript','\^','\.','Ë™') call s:SuperSub('texSuperscript','\^','=','Ë­') call s:SuperSub('texSubscript','_','0','â‚€') call s:SuperSub('texSubscript','_','1','â‚') call s:SuperSub('texSubscript','_','2','â‚‚') call s:SuperSub('texSubscript','_','3','₃') call s:SuperSub('texSubscript','_','4','â‚„') call s:SuperSub('texSubscript','_','5','â‚…') call s:SuperSub('texSubscript','_','6','₆') call s:SuperSub('texSubscript','_','7','₇') call s:SuperSub('texSubscript','_','8','₈') call s:SuperSub('texSubscript','_','9','₉') call s:SuperSub('texSubscript','_','a','â‚') call s:SuperSub('texSubscript','_','e','â‚‘') call s:SuperSub('texSubscript','_','h','â‚•') call s:SuperSub('texSubscript','_','i','áµ¢') call s:SuperSub('texSubscript','_','j','â±¼') call s:SuperSub('texSubscript','_','k','â‚–') call s:SuperSub('texSubscript','_','l','â‚—') call s:SuperSub('texSubscript','_','m','ₘ') call s:SuperSub('texSubscript','_','n','â‚™') call s:SuperSub('texSubscript','_','o','â‚’') call s:SuperSub('texSubscript','_','p','â‚š') call s:SuperSub('texSubscript','_','r','áµ£') call s:SuperSub('texSubscript','_','s','â‚›') call s:SuperSub('texSubscript','_','t','â‚œ') call s:SuperSub('texSubscript','_','u','ᵤ') call s:SuperSub('texSubscript','_','v','áµ¥') call s:SuperSub('texSubscript','_','x','â‚“') call s:SuperSub('texSubscript','_',',','ï¸') call s:SuperSub('texSubscript','_','+','â‚Š') call s:SuperSub('texSubscript','_','-','â‚‹') call s:SuperSub('texSubscript','_','/','Ë') call s:SuperSub('texSubscript','_','(','â‚') call s:SuperSub('texSubscript','_',')','â‚Ž') call s:SuperSub('texSubscript','_','\.','‸') call s:SuperSub('texSubscript','_','r','áµ£') call s:SuperSub('texSubscript','_','v','áµ¥') call s:SuperSub('texSubscript','_','x','â‚“') call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ') call s:SuperSub('texSubscript','_','\\delta\>','ᵨ') call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ') call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ') call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ') delfun s:SuperSub endif if s:tex_conceal =~# 'a' if b:tex_stylish syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 syn match texLigature '--' syn match texLigature '---' else fun! s:Accents(chr,...) let i= 1 for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"] if i > a:0 break endif if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?' let i= i + 1 continue endif if accent =~# '\a' exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i} else exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i} endif let i= i + 1 endfor endfun call s:Accents('a','à','á','â','ä','ã','ȧ','Ä',' ',' ','Ä…','Ã¥','ă','ÇŽ') call s:Accents('A','À','Ã','Â','Ä','Ã','Ȧ','Ä€',' ',' ','Ä„','Ã…','Ä‚','Ç') call s:Accents('c',' ','ć','ĉ',' ',' ','Ä‹',' ','ç',' ',' ',' ',' ','Ä') call s:Accents('C',' ','Ć','Ĉ',' ',' ','ÄŠ',' ','Ç',' ',' ',' ',' ','ÄŒ') call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ä') call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ÄŽ') call s:Accents('e','è','é','ê','ë','ẽ','Ä—','Ä“','È©',' ','Ä™',' ','Ä•','Ä›') call s:Accents('E','È','É','Ê','Ë','Ẽ','Ä–','Ä’','Ȩ',' ','Ę',' ','Ä”','Äš') call s:Accents('g',' ','ǵ','Ä',' ',' ','Ä¡',' ','Ä£',' ',' ',' ','ÄŸ','ǧ') call s:Accents('G',' ','Ç´','Äœ',' ',' ','Ä ',' ','Ä¢',' ',' ',' ','Äž','Ǧ') call s:Accents('h',' ',' ','Ä¥',' ',' ',' ',' ',' ',' ',' ',' ',' ','ÈŸ') call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Èž') call s:Accents('i','ì','í','î','ï','Ä©','į','Ä«',' ',' ','į',' ','Ä­','Ç') call s:Accents('I','ÃŒ','Ã','ÃŽ','Ã','Ĩ','Ä°','Ī',' ',' ','Ä®',' ','Ĭ','Ç') call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ç°') call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','Ä·',' ',' ',' ',' ','Ç©') call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ') call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ') call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ä»',' ',' ',' ',' ','Ľ') call s:Accents('n',' ','Å„',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň') call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Å…',' ',' ',' ',' ','Ň') call s:Accents('o','ò','ó','ô','ö','õ','ȯ','Å',' ','Å‘','Ç«',' ','Å','Ç’') call s:Accents('O','Ã’','Ó','Ô','Ö','Õ','È®','ÅŒ',' ','Å','Ǫ',' ','ÅŽ','Ç‘') call s:Accents('r',' ','Å•',' ',' ',' ',' ',' ','Å—',' ',' ',' ',' ','Å™') call s:Accents('R',' ','Å”',' ',' ',' ',' ',' ','Å–',' ',' ',' ',' ','Ř') call s:Accents('s',' ','Å›','Å',' ',' ',' ',' ','ÅŸ',' ','È¿',' ',' ','Å¡') call s:Accents('S',' ','Åš','Åœ',' ',' ',' ',' ','Åž',' ',' ',' ',' ','Å ') call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','Å£',' ',' ',' ',' ','Å¥') call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Å¢',' ',' ',' ',' ','Ť') call s:Accents('u','ù','ú','û','ü','Å©',' ','Å«',' ','ű','ų','ů','Å­','Ç”') call s:Accents('U','Ù','Ú','Û','Ãœ','Ũ',' ','Ū',' ','Å°','Ų','Å®','Ŭ','Ç“') call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ') call s:Accents('W',' ',' ','Å´',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ') call s:Accents('y','ỳ','ý','Å·','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ') call s:Accents('Y','Ỳ','Ã','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ') call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž') call s:Accents('Z',' ','Ź',' ',' ',' ','Å»',' ',' ',' ',' ',' ',' ','Ž') call s:Accents('\\i','ì','í','î','ï','Ä©','į',' ',' ',' ',' ',' ','Ä­',' ') delfun s:Accents syn match texAccent '\\aa\>' conceal cchar=Ã¥ syn match texAccent '\\AA\>' conceal cchar=Ã… syn match texAccent '\\o\>' conceal cchar=ø syn match texAccent '\\O\>' conceal cchar=Ø syn match texLigature '\\AE\>' conceal cchar=Æ syn match texLigature '\\ae\>' conceal cchar=æ syn match texLigature '\\oe\>' conceal cchar=Å“ syn match texLigature '\\OE\>' conceal cchar=Å’ syn match texLigature '\\ss\>' conceal cchar=ß syn match texLigature '--' conceal cchar=– syn match texLigature '---' conceal cchar=— endif endif endif syn sync maxlines=200 syn sync minlines=50 syn sync match texSyncStop groupthere NONE "%stopzone\>" if !exists("g:tex_no_math") syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}" syn sync match texSyncMathZoneA groupthere NONE "\\end{center}" syn sync match texSyncMathZoneA groupthere NONE "\\end{description}" syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}" syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}" syn sync match texSyncMathZoneA groupthere NONE "\\end{table}" syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}" syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>" endif if !exists("skip_tex_syntax_inits") if !exists("g:tex_no_error") if !exists("g:tex_no_math") hi def link texBadMath texError hi def link texMathDelimBad texError hi def link texMathError texError if !b:tex_stylish hi def link texOnlyMath texError endif endif hi def link texError Error endif hi texBoldStyle gui=bold cterm=bold hi texItalStyle gui=italic cterm=italic hi texBoldItalStyle gui=bold,italic cterm=bold,italic hi texItalBoldStyle gui=bold,italic cterm=bold,italic hi def link texEmphStyle texItalStyle hi def link texCite texRefZone hi def link texDefCmd texDef hi def link texDefName texDef hi def link texDocType texCmdName hi def link texDocTypeArgs texCmdArgs hi def link texInputFileOpt texCmdArgs hi def link texInputCurlies texDelimiter hi def link texLigature texSpecialChar if !exists("g:tex_no_math") hi def link texMathDelimSet1 texMathDelim hi def link texMathDelimSet2 texMathDelim hi def link texMathDelimKey texMathDelim hi def link texMathMatcher texMath hi def link texAccent texStatement hi def link texGreek texStatement hi def link texSuperscript texStatement hi def link texSubscript texStatement hi def link texSuperscripts texSuperscript hi def link texSubscripts texSubscript hi def link texMathSymbol texStatement hi def link texMathZoneV texMath hi def link texMathZoneW texMath hi def link texMathZoneX texMath hi def link texMathZoneY texMath hi def link texMathZoneV texMath hi def link texMathZoneZ texMath endif hi def link texBeginEnd texCmdName hi def link texBeginEndName texSection hi def link texSpaceCode texStatement hi def link texStyleStatement texStatement hi def link texTypeSize texType hi def link texTypeStyle texType hi def link texCmdArgs Number hi def link texCmdName Statement hi def link texComment Comment hi def link texDef Statement hi def link texDefParm Special hi def link texDelimiter Delimiter hi def link texInput Special hi def link texInputFile Special hi def link texLength Number hi def link texMath Special hi def link texMathDelim Statement hi def link texMathOper Operator hi def link texNewCmd Statement hi def link texNewEnv Statement hi def link texOption Number hi def link texRefZone Special hi def link texSection PreCondit hi def link texSpaceCodeChar Special hi def link texSpecialChar SpecialChar hi def link texStatement Statement hi def link texString String hi def link texTodo Todo hi def link texType Type hi def link texZone PreCondit endif delc TexFold unlet s:extfname let b:current_syntax = "tex" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif if !exists("main_syntax") let main_syntax = 'texinfo' endif syn sync lines=200 syn match texinfoIdent "\k\+" contained "IDENTifier syn match texinfoAssignment "\k\+\s*=\s*\k\+\s*$" contained "assigment statement ( var = val ) syn match texinfoSinglePar "\k\+\s*$" contained "single parameter (used for several @-commands) syn match texinfoIndexPar "\k\k\s*$" contained "param. used for different *index commands (+ @documentlanguage command) syn match texinfoSpecialChar "@acronym" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@acronym{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@b" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@b{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@cite" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@cite{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@code" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@code{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@command" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@command{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@dfn" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@dfn{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@email" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@email{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@emph" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@emph{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@env" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@env{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@file" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@file{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@i" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@i{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@kbd" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@kbd{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@key" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@key{" end="}" contains=texinfoSpecialChar syn match texinfoSpecialChar "@option" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@option{" end="}" contains=texinfoSpecialChar syn match texinfoSpecialChar "@r" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@r{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@samp" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@samp{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@sc" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@sc{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@strong" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@strong{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@t" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@t{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@url" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@url{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoSpecialChar "@var" contained syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@var{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoAtCmd "^@kbdinputstyle" nextgroup=texinfoSinglePar skipwhite syn match texinfoComment "@c .*" syn match texinfoComment "@c$" syn match texinfoComment "@comment .*" syn region texinfoMltlnAtCmd matchgroup=texinfoComment start="^@ignore\s*$" end="^@end ignore\s*$" contains=ALL syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="@center " skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd oneline syn region texinfoMltlnDMAtCmd matchgroup=texinfoAtCmd start="^@detailmenu\s*$" end="^@end detailmenu\s*$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@setfilename " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@settitle " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@shorttitlepage " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@title " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@titlefont{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@titlepage\s*$" end="^@end titlepage\s*$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoMltlnDMAtCmd,texinfoAtCmd,texinfoPrmAtCmd,texinfoMltlnAtCmd syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@vskip " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@exampleindent" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@headings" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^\\input" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@paragraphindent" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@setchapternewpage" nextgroup=texinfoSinglePar skipwhite syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="@author " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@bye\s*$" syn match texinfoAtCmd "^@contents\s*$" syn match texinfoAtCmd "^@printindex" nextgroup=texinfoIndexPar skipwhite syn match texinfoAtCmd "^@setcontentsaftertitlepage\s*$" syn match texinfoAtCmd "^@setshortcontentsaftertitlepage\s*$" syn match texinfoAtCmd "^@shortcontents\s*$" syn match texinfoAtCmd "^@summarycontents\s*$" syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendix" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsection" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@appendixsubsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@centerchap" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@chapheading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@chapter" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@heading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@majorheading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@section" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subheading " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subsection" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subsubheading" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subsubsection" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@subtitle" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumbered" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumberedsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumberedsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@unnumberedsubsubsec" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@lowersections\s*$" syn match texinfoAtCmd "^@raisesections\s*$" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@anchor{" end="}" syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@top" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@node" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@menu\s*$" end="^@end menu\s*$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoMltlnDMAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@inforef{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@pxref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@ref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@uref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@xref{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@cartouche\s*$" end="^@end cartouche\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@display\s*$" end="^@end display\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@example\s*$" end="^@end example\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@flushleft\s*$" end="^@end flushleft\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@flushright\s*$" end="^@end flushright\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@format\s*$" end="^@end format\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@lisp\s*$" end="^@end lisp\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@quotation\s*$" end="^@end quotation\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smalldisplay\s*$" end="^@end smalldisplay\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smallexample\s*$" end="^@end smallexample\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smallformat\s*$" end="^@end smallformat\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@smalllisp\s*$" end="^@end smalllisp\s*$" contains=ALL syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@exdent" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoAtCmd "^@noindent\s*$" syn match texinfoAtCmd "^@smallbook\s*$" syn match texinfoAtCmd "@asis" contained syn match texinfoAtCmd "@columnfractions" contained syn match texinfoAtCmd "@item" contained syn match texinfoAtCmd "@itemx" contained syn match texinfoAtCmd "@tab" contained syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@enumerate" end="^@end enumerate\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ftable" end="^@end ftable\s*$" contains=ALL syn region texinfoMltlnNAtCmd matchgroup=texinfoAtCmd start="^@itemize" end="^@end itemize\s*$" contains=ALL syn region texinfoMltlnNAtCmd matchgroup=texinfoAtCmd start="^@multitable" end="^@end multitable\s*$" contains=ALL syn region texinfoMltlnNAtCmd matchgroup=texinfoAtCmd start="^@table" end="^@end table\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@vtable" end="^@end vtable\s*$" contains=ALL syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@\(c\|f\|k\|p\|t\|v\)index" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@..index" skip="\\$" end="$" contains=texinfoSpecialChar oneline syn match texinfoSIPar "\k\k\s*\k\k\s*$" contained syn match texinfoAtCmd "^@syncodeindex" nextgroup=texinfoSIPar skipwhite syn match texinfoAtCmd "^@synindex" nextgroup=texinfoSIPar skipwhite syn match texinfoSpecialChar "@\(!\|?\|@\|\s\)" syn match texinfoSpecialChar "@{" syn match texinfoSpecialChar "@}" syn match texinfoSpecialChar "@=." syn match texinfoSpecialChar "@\('\|\"\|\^\|`\)[aeiouyAEIOUY]" syn match texinfoSpecialChar "@\~[aeinouyAEINOUY]" syn match texinfoSpecialChar "@dotaccent{.}" syn match texinfoSpecialChar "@H{.}" syn match texinfoSpecialChar "@,{[cC]}" syn match texinfoSpecialChar "@AA{}" syn match texinfoSpecialChar "@aa{}" syn match texinfoSpecialChar "@L{}" syn match texinfoSpecialChar "@l{}" syn match texinfoSpecialChar "@O{}" syn match texinfoSpecialChar "@o{}" syn match texinfoSpecialChar "@ringaccent{.}" syn match texinfoSpecialChar "@tieaccent{..}" syn match texinfoSpecialChar "@u{.}" syn match texinfoSpecialChar "@ubaraccent{.}" syn match texinfoSpecialChar "@udotaccent{.}" syn match texinfoSpecialChar "@v{.}" syn match texinfoSpecialChar "@AE{}" syn match texinfoSpecialChar "@ae{}" syn match texinfoSpecialChar "@copyright{}" syn match texinfoSpecialChar "@bullet" contained "for tables and lists syn match texinfoSpecialChar "@bullet{}" syn match texinfoSpecialChar "@dotless{i}" syn match texinfoSpecialChar "@dotless{j}" syn match texinfoSpecialChar "@dots{}" syn match texinfoSpecialChar "@enddots{}" syn match texinfoSpecialChar "@equiv" contained "for tables and lists syn match texinfoSpecialChar "@equiv{}" syn match texinfoSpecialChar "@error{}" syn match texinfoSpecialChar "@exclamdown{}" syn match texinfoSpecialChar "@expansion{}" syn match texinfoSpecialChar "@minus" contained "for tables and lists syn match texinfoSpecialChar "@minus{}" syn match texinfoSpecialChar "@OE{}" syn match texinfoSpecialChar "@oe{}" syn match texinfoSpecialChar "@point" contained "for tables and lists syn match texinfoSpecialChar "@point{}" syn match texinfoSpecialChar "@pounds{}" syn match texinfoSpecialChar "@print{}" syn match texinfoSpecialChar "@questiondown{}" syn match texinfoSpecialChar "@result" contained "for tables and lists syn match texinfoSpecialChar "@result{}" syn match texinfoSpecialChar "@ss{}" syn match texinfoSpecialChar "@TeX{}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@dmn{" end="}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@footnote{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@image{" end="}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@math{" end="}" syn match texinfoAtCmd "@footnotestyle" nextgroup=texinfoSinglePar skipwhite syn match texinfoSpecialChar "@\(\*\|-\|\.\)" syn match texinfoAtCmd "^@need" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "^@page\s*$" syn match texinfoAtCmd "^@sp" nextgroup=texinfoSinglePar skipwhite syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@group\s*$" end="^@end group\s*$" contains=ALL syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@hyphenation{" end="}" syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@w{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoMltlnAtCmdFLine "^@def\k\+" contained syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@def\k\+" end="^@end def\k\+$" contains=ALL syn match texinfoAtCmd "@defcodeindex" nextgroup=texinfoIndexPar skipwhite syn match texinfoAtCmd "@defindex" nextgroup=texinfoIndexPar skipwhite syn match texinfoAtCmd "^@clear" nextgroup=texinfoSinglePar skipwhite syn region texinfoMltln2AtCmd matchgroup=texinfoAtCmd start="^@html\s*$" end="^@end html\s*$" syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifclear" end="^@end ifclear\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifhtml" end="^@end ifhtml\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifinfo" end="^@end ifinfo\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifnothtml" end="^@end ifnothtml\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifnotinfo" end="^@end ifnotinfo\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifnottex" end="^@end ifnottex\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@ifset" end="^@end ifset\s*$" contains=ALL syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@iftex" end="^@end iftex\s*$" contains=ALL syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@set " skip="\\$" end="$" contains=texinfoSpecialChar oneline syn region texinfoTexCmd start="\$\$" end="\$\$" contained syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@tex" end="^@end tex\s*$" contains=texinfoTexCmd syn region texinfoBrcPrmAtCmd matchgroup=texinfoAtCmd start="@value{" end="}" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd syn match texinfoAtCmd "@documentencoding" nextgroup=texinfoSinglePar skipwhite syn match texinfoAtCmd "@documentlanguage" nextgroup=texinfoIndexPar skipwhite syn match texinfoAtCmd "@alias" nextgroup=texinfoAssignment skipwhite syn match texinfoDIEPar "\S*\s*,\s*\S*\s*,\s*\S*\s*$" contained syn match texinfoAtCmd "@definfoenclose" nextgroup=texinfoDIEPar skipwhite syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@macro" end="^@end macro\s*$" contains=ALL syn match texinfoAtCmd "^@afourlatex\s*$" syn match texinfoAtCmd "^@afourpaper\s*$" syn match texinfoAtCmd "^@afourwide\s*$" syn match texinfoAtCmd "^@finalout\s*$" syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@pagesizes" end="$" oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@dircategory" skip="\\$" end="$" oneline syn region texinfoMltlnAtCmd matchgroup=texinfoAtCmd start="^@direntry\s*$" end="^@end direntry\s*$" contains=texinfoSpecialChar syn match texinfoAtCmd "^@novalidate\s*$" syn match texinfoAtCmd "^@include" nextgroup=texinfoSinglePar skipwhite syn match texinfoHFSpecialChar "@|" contained syn match texinfoThisAtCmd "@thischapter" contained syn match texinfoThisAtCmd "@thischaptername" contained syn match texinfoThisAtCmd "@thisfile" contained syn match texinfoThisAtCmd "@thispage" contained syn match texinfoThisAtCmd "@thistitle" contained syn match texinfoThisAtCmd "@today{}" contained syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@evenfooting" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@evenheading" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@everyfooting" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@everyheading" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@oddfooting" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn region texinfoPrmAtCmd matchgroup=texinfoAtCmd start="^@oddheading" skip="\\$" end="$" contains=texinfoSpecialChar,texinfoBrcPrmAtCmd,texinfoThisAtCmd,texinfoHFSpecialChar oneline syn match texinfoAtCmd "@refill" syn cluster texinfoAll contains=ALLBUT,texinfoThisAtCmd,texinfoHFSpecialChar syn cluster texinfoReducedAll contains=texinfoSpecialChar,texinfoBrcPrmAtCmd hi def link texinfoSpecialChar Special hi def link texinfoHFSpecialChar Special hi def link texinfoError Error hi def link texinfoIdent Identifier hi def link texinfoAssignment Identifier hi def link texinfoSinglePar Identifier hi def link texinfoIndexPar Identifier hi def link texinfoSIPar Identifier hi def link texinfoDIEPar Identifier hi def link texinfoTexCmd PreProc hi def link texinfoAtCmd Statement "@-command hi def link texinfoPrmAtCmd String "@-command in one line with unknown nr. of parameters hi def link texinfoBrcPrmAtCmd String "@-command with parameter(s) in braces ({}) hi def link texinfoMltlnAtCmdFLine texinfoAtCmd "repeated embedded First lines in @-commands hi def link texinfoMltlnAtCmd String "@-command in multiple lines hi def link texinfoMltln2AtCmd PreProc "@-command in multiple lines (same as texinfoMltlnAtCmd, just with other colors) hi def link texinfoMltlnDMAtCmd PreProc "@-command in multiple lines (same as texinfoMltlnAtCmd, just with other colors; used for @detailmenu, which can be included in @menu) hi def link texinfoMltlnNAtCmd Normal "@-command in multiple lines (same as texinfoMltlnAtCmd, just with other colors) hi def link texinfoThisAtCmd Statement "@-command used in headers and footers (@this... series) hi def link texinfoComment Comment let b:current_syntax = "texinfo" if main_syntax == 'texinfo' unlet main_syntax endif if exists("b:current_syntax") finish endif syn case match syn match texmfComment "%..\+$" contains=texmfTodo syn match texmfComment "%\s*$" contains=texmfTodo syn keyword texmfTodo TODO FIXME XXX NOT contained syn match texmfPassedParameter "[-+]\=%\w\W" syn match texmfPassedParameter "[-+]\=%\w$" syn match texmfNumber "\<\d\+\>" syn match texmfVariable "\$\(\w\k*\|{\w\k*}\)" syn match texmfSpecial +\\"\|\\$+ syn region texmfString start=+"+ end=+"+ skip=+\\"\\\\+ contains=texmfVariable,texmfSpecial,texmfPassedParameter syn match texmfLHSStart "^\s*\w\k*" nextgroup=texmfLHSDot,texmfEquals syn match texmfLHSVariable "\w\k*" contained nextgroup=texmfLHSDot,texmfEquals syn match texmfLHSDot "\." contained nextgroup=texmfLHSVariable syn match texmfEquals "\s*=" contained syn match texmfComma "," contained syn match texmfColons ":\|;" syn match texmfDoubleExclam "!!" contained syn region texmfBrace matchgroup=texmfBraceBrace start="{" end="}" contains=ALLBUT,texmfTodo,texmfBraceError,texmfLHSVariable,texmfLHSDot transparent syn match texmfBraceError "}" hi def link texmfComment Comment hi def link texmfTodo Todo hi def link texmfPassedParameter texmfVariable hi def link texmfVariable Identifier hi def link texmfNumber Number hi def link texmfString String hi def link texmfLHSStart texmfLHS hi def link texmfLHSVariable texmfLHS hi def link texmfLHSDot texmfLHS hi def link texmfLHS Type hi def link texmfEquals Normal hi def link texmfBraceBrace texmfDelimiter hi def link texmfComma texmfDelimiter hi def link texmfColons texmfDelimiter hi def link texmfDelimiter Preproc hi def link texmfDoubleExclam Statement hi def link texmfSpecial Special hi def link texmfBraceError texmfError hi def link texmfError Error let b:current_syntax = "texmf" if exists("b:current_syntax") finish endif syn case match if !exists("main_syntax") let main_syntax = 'tf' endif syn keyword tfVar HOME LANG MAIL SHELL TERM TFHELP TFLIBDIR TFLIBRARY TZ contained syn keyword tfVar background backslash contained syn keyword tfVar bamf bg_output borg clearfull cleardone clock connect contained syn keyword tfVar emulation end_color gag gethostbyname gpri hook hilite contained syn keyword tfVar hiliteattr histsize hpri insert isize istrip kecho contained syn keyword tfVar kprefix login lp lpquote maildelay matching max_iter contained syn keyword tfVar max_recur mecho more mprefix oldslash promt_sec contained syn keyword tfVar prompt_usec proxy_host proxy_port ptime qecho qprefix contained syn keyword tfVar quite quitdone redef refreshtime scroll shpause snarf sockmload contained syn keyword tfVar start_color tabsize telopt sub time_format visual contained syn keyword tfVar watch_dog watchname wordpunct wrap wraplog wrapsize contained syn keyword tfVar wrapspace contained syn keyword tfWorld world_name world_character world_password world_host contained syn keyword tfWorld world_port world_mfile world_type contained syn match tfNumber "-\=\<\d\+\>" syn match tfFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" syn match tfOperator "[-+=?:&|!]" syn match tfOperator "/[^*~@]"he=e-1 syn match tfOperator ":=" syn match tfOperator "[^/%]\*"hs=s+1 syn match tfOperator "$\+[([{]"he=e-1,me=e-1 syn match tfOperator "\^\[\+"he=s+1 contains=tfSpecialCharEsc syn match tfRelation "&&" syn match tfRelation "||" syn match tfRelation "[<>/!=]=" syn match tfRelation "[<>]" syn match tfRelation "[!=]\~" syn match tfRelation "[=!]/" syn match tfReadonly "[#*]" contained syn match tfReadonly "\<-\=L\=\d\{-}\>" contained syn match tfReadonly "\" contained syn match tfReadonly "\" contained syn match tfIdentifier "%\+[a-zA-Z_#*-0-9]\w*" contains=tfVar,tfReadonly syn match tfIdentifier "%\+[{]"he=e-1,me=e-1 syn match tfIdentifier "\$\+{[a-zA-Z_#*-0-9]\w*}" contains=tfWorld syn keyword tfFunctions ascii char columns echo filename ftime fwrite getopts syn keyword tfFunctions getpid idle kbdel kbgoto kbhead kblen kbmatch kbpoint syn keyword tfFunctions kbtail kbwordleft kbwordright keycode lines mod syn keyword tfFunctions moresize pad rand read regmatch send strcat strchr syn keyword tfFunctions strcmp strlen strncmp strrchr strrep strstr substr syn keyword tfFunctions systype time tolower toupper syn keyword tfStatement addworld bamf beep bind break cat changes connect contained syn keyword tfStatement dc def dokey echo edit escape eval export expr fg for contained syn keyword tfStatement gag getfile grab help hilite histsize hook if input contained syn keyword tfStatement kill lcd let list listsockets listworlds load contained syn keyword tfStatement localecho log nohilite not partial paste ps purge contained syn keyword tfStatement purgeworld putfile quit quote recall recordline save contained syn keyword tfStatement saveworld send sh shift sub substitute contained syn keyword tfStatement suspend telnet test time toggle trig trigger unbind contained syn keyword tfStatement undef undefn undeft unhook untrig unworld contained syn keyword tfStatement version watchdog watchname while world contained syn keyword tfHook ACTIVITY BACKGROUND BAMF CONFAIL CONFLICT CONNECT DISCONNECT syn keyword tfHook KILL LOAD LOADFAIL LOG LOGIN MAIL MORE PENDING PENDING syn keyword tfHook PROCESS PROMPT PROXY REDEF RESIZE RESUME SEND SHADOW SHELL syn keyword tfHook SIGHUP SIGTERM SIGUSR1 SIGUSR2 WORLD syn keyword tfConditional if endif then else elseif contained syn keyword tfRepeat while do done repeat for contained syn keyword tfStatement break quit contained syn keyword tfInclude require load save loaded contained syn keyword tfDefine bind unbind def undef undefn undefn purge hook unhook trig untrig contained syn keyword tfDefine set unset setenv contained syn keyword tfTodo TODO Todo todo contained syn match tfSpecialChar "\\[abcfnrtyv\\]" contained syn match tfSpecialChar "\\\d\{3}" contained contains=tfOctalError syn match tfSpecialChar "\\x[0-9a-fA-F]\{2}" contained syn match tfSpecialCharEsc "\[\+" contained syn match tfOctalError "[89]" contained syn region tfComment start="^;" end="$" contains=tfTodo syn region tfString oneline matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tfIdentifier,tfSpecialChar,tfEscape syn region tfString matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tfIdentifier,tfSpecialChar,tfEscape syn match tfParentError "[)}\]]" syn region tfParent matchgroup=Delimiter start="(" end=")" contains=ALLBUT,tfReadonly syn region tfParent matchgroup=Delimiter start="\[" end="\]" contains=ALL syn region tfParent matchgroup=Delimiter start="{" end="}" contains=ALL syn match tfEndCommand "%%\{-};" syn match tfJoinLines "\\$" syn match tfType "/[a-zA-Z_~@][a-zA-Z0-9_]*" contains=tfConditional,tfRepeat,tfStatement,tfInclude,tfDefine,tfStatement syn match tfQuotes "/quote .\{-}'" contains=ALLBUT,tfString syn match tfEscape "(/escape .*)" if exists("tf_minlines") exec "syn sync minlines=" . tf_minlines else syn sync minlines=100 endif hi def link tfComment Comment hi def link tfString String hi def link tfNumber Number hi def link tfFloat Float hi def link tfIdentifier Identifier hi def link tfVar Identifier hi def link tfWorld Identifier hi def link tfReadonly Identifier hi def link tfHook Identifier hi def link tfFunctions Function hi def link tfRepeat Repeat hi def link tfConditional Conditional hi def link tfLabel Label hi def link tfStatement Statement hi def link tfType Type hi def link tfInclude Include hi def link tfDefine Define hi def link tfSpecialChar SpecialChar hi def link tfSpecialCharEsc SpecialChar hi def link tfParentError Error hi def link tfTodo Todo hi def link tfEndCommand Delimiter hi def link tfJoinLines Delimiter hi def link tfOperator Operator hi def link tfRelation Operator let b:current_syntax = "tf" if main_syntax == 'tf' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn iskeyword @,48-57,-,_ syn case ignore syn keyword tidyBoolean contained t[rue] f[alse] y[es] n[o] 1 0 syn keyword tidyAutoBoolean contained t[rue] f[alse] y[es] n[o] 1 0 auto syn case match syn keyword tidyDoctype contained html5 omit auto strict loose transitional user syn keyword tidyEncoding contained raw ascii latin0 latin1 utf8 iso2022 mac win1252 ibm858 utf16le utf16be utf16 big5 shiftjis syn keyword tidyNewline contained LF CRLF CR syn match tidyNumber contained "\<\d\+\>" syn keyword tidyRepeat contained keep-first keep-last syn keyword tidySorter contained alpha none syn region tidyString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline syn region tidyString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline syn match tidyTags contained "\<\w\+\(\s*,\s*\w\+\)*\>" syn keyword tidyBooleanOption add-xml-decl add-xml-pi add-xml-space \ anchor-as-name ascii-chars assume-xml-procins bare break-before-br \ clean coerce-endtags decorate-inferred-ul drop-empty-paras \ drop-empty-elements drop-font-tags drop-proprietary-attributes \ enclose-block-text enclose-text escape-cdata escape-scripts \ fix-backslash fix-bad-comments fix-uri force-output gdoc gnu-emacs \ hide-comments hide-endtags indent-attributes indent-cdata \ indent-with-tabs input-xml join-classes join-styles keep-time \ language literal-attributes logical-emphasis lower-literals markup \ merge-emphasis ncr numeric-entities omit-optional-tags output-html \ output-xhtml output-xml preserve-entities punctuation-wrap quiet \ quote-ampersand quote-marks quote-nbsp raw replace-color show-info \ show-warnings skip-nested split strict-tags-attributes tidy-mark \ uppercase-attributes uppercase-tags word-2000 wrap-asp \ wrap-attributes wrap-jste wrap-php wrap-script-literals \ wrap-sections write-back \ contained nextgroup=tidyBooleanDelimiter syn match tidyBooleanDelimiter ":" nextgroup=tidyBoolean contained skipwhite syn keyword tidyAutoBooleanOption indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter syn match tidyAutoBooleanDelimiter ":" nextgroup=tidyAutoBoolean contained skipwhite syn keyword tidyCSSSelectorOption css-prefix contained nextgroup=tidyCSSSelectorDelimiter syn match tidyCSSSelectorDelimiter ":" nextgroup=tidyCSSSelector contained skipwhite syn keyword tidyDoctypeOption doctype contained nextgroup=tidyDoctypeDelimiter syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype contained skipwhite syn keyword tidyEncodingOption char-encoding input-encoding output-encoding contained nextgroup=tidyEncodingDelimiter syn match tidyEncodingDelimiter ":" nextgroup=tidyEncoding contained skipwhite syn keyword tidyIntegerOption accessibility-check doctype-mode indent-spaces show-errors tab-size wrap contained nextgroup=tidyIntegerDelimiter syn match tidyIntegerDelimiter ":" nextgroup=tidyNumber contained skipwhite syn keyword tidyNameOption slide-style contained nextgroup=tidyNameDelimiter syn match tidyNameDelimiter ":" nextgroup=tidyName contained skipwhite syn keyword tidyNewlineOption newline contained nextgroup=tidyNewlineDelimiter syn match tidyNewlineDelimiter ":" nextgroup=tidyNewline contained skipwhite syn keyword tidyTagsOption new-blocklevel-tags new-empty-tags new-inline-tags new-pre-tags contained nextgroup=tidyTagsDelimiter syn match tidyTagsDelimiter ":" nextgroup=tidyTags contained skipwhite syn keyword tidyRepeatOption repeated-attributes contained nextgroup=tidyRepeatDelimiter syn match tidyRepeatDelimiter ":" nextgroup=tidyRepeat contained skipwhite syn keyword tidySorterOption sort-attributes contained nextgroup=tidySorterDelimiter syn match tidySorterDelimiter ":" nextgroup=tidySorter contained skipwhite syn keyword tidyStringOption alt-text error-file gnu-emacs-file output-file contained nextgroup=tidyStringDelimiter syn match tidyStringDelimiter ":" nextgroup=tidyString contained skipwhite syn cluster tidyOptions contains=tidy.*Option syn match tidyStart "^" nextgroup=@tidyOptions syn match tidyComment "^\s*//.*$" contains=tidyTodo syn match tidyComment "^\s*#.*$" contains=tidyTodo syn keyword tidyTodo TODO NOTE FIXME XXX contained hi def link tidyAutoBooleanOption Identifier hi def link tidyBooleanOption Identifier hi def link tidyCSSSelectorOption Identifier hi def link tidyDoctypeOption Identifier hi def link tidyEncodingOption Identifier hi def link tidyIntegerOption Identifier hi def link tidyNameOption Identifier hi def link tidyNewlineOption Identifier hi def link tidyTagsOption Identifier hi def link tidyRepeatOption Identifier hi def link tidySorterOption Identifier hi def link tidyStringOption Identifier hi def link tidyAutoBooleanDelimiter Special hi def link tidyBooleanDelimiter Special hi def link tidyCSSSelectorDelimiter Special hi def link tidyDoctypeDelimiter Special hi def link tidyEncodingDelimiter Special hi def link tidyIntegerDelimiter Special hi def link tidyNameDelimiter Special hi def link tidyNewlineDelimiter Special hi def link tidyTagsDelimiter Special hi def link tidyRepeatDelimiter Special hi def link tidySorterDelimiter Special hi def link tidyStringDelimiter Special hi def link tidyAutoBoolean Boolean hi def link tidyBoolean Boolean hi def link tidyDoctype Constant hi def link tidyEncoding Constant hi def link tidyNewline Constant hi def link tidyTags Constant hi def link tidyNumber Number hi def link tidyRepeat Constant hi def link tidySorter Constant hi def link tidyString String hi def link tidyComment Comment hi def link tidyTodo Todo let b:current_syntax = "tidy" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn match tildeFunction "\~[a-z_0-9]\+"ms=s+1 syn region tildeParen start="(" end=")" contains=tildeString,tildeNumber,tildeVariable,tildeField,tildeSymtab,tildeFunction,tildeParen,tildeHexNumber,tildeOperator syn region tildeString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ keepend syn region tildeString contained start=+'+ skip=+\\\\\|\\"+ end=+'+ keepend syn match tildeNumber "\d" contained syn match tildeOperator "or\|and" contained syn match tildeHexNumber "0x[a-z0-9]\+" contained syn match tildeVariable "$[a-z_0-9]\+" contained syn match tildeField "%[a-z_0-9]\+" contained syn match tildeSymtab "@[a-z_0-9]\+" contained syn match tildeComment "^#.*" syn region tildeCurly start=+{+ end=+}+ contained contains=tildeLG,tildeString,tildeNumber,tildeVariable,tildeField,tildeFunction,tildeSymtab,tildeHexNumber syn match tildeLG "=>" contained hi def link tildeComment Comment hi def link tildeFunction Operator hi def link tildeOperator Operator hi def link tildeString String hi def link tildeNumber Number hi def link tildeHexNumber Number hi def link tildeVariable Identifier hi def link tildeField Identifier hi def link tildeSymtab Identifier hi def link tildeError Error let b:current_syntax = "tilde" if exists("b:current_syntax") finish endif syn keyword tliObject LIST POPLIST WINDOW POPWINDOW OUTLINE CHECKMARK GOTO syn keyword tliObject LABEL IMAGE RECT TRES PASSWORD POPEDIT POPIMAGE CHECKLIST syn keyword tliField X Y W H BX BY BW BH SX SY FONT BFONT CYCLE DELAY TABS syn keyword tliField STYLE BTEXT RECORD DATABASE KEY TARGET DEFAULT TEXT syn keyword tliField LINKS MAXVAL syn keyword tliStyle INVERTED HORIZ_RULE VERT_RULE NO_SCROLL NO_BORDER BOLD_BORDER syn keyword tliStyle ROUND_BORDER ALIGN_RIGHT ALIGN_CENTER ALIGN_LEFT_START ALIGN_RIGHT_START syn keyword tliStyle ALIGN_CENTER_START ALIGN_LEFT_END ALIGN_RIGHT_END ALIGN_CENTER_END syn keyword tliStyle LOCKOUT BUTTON_SCROLL BUTTON_SELECT STROKE_FIND FILLED REGISTER syn match tliSpecial "@" syn region tliString start=+"+ end=+"+ syn case ignore syn match tliNumber "\d*" syn match tliIdentifier "\<\h\w*\>" syn match tliComment "#.*" syn case match hi def link tliNumber Number hi def link tliString String hi def link tliComment Comment hi def link tliSpecial SpecialChar hi def link tliIdentifier Identifier hi def link tliObject Statement hi def link tliField Type hi def link tliStyle PreProc let b:current_syntax = "tli" if exists("b:current_syntax") finish endif let s:original_cpo = &cpo set cpo&vim let b:current_syntax = "tmux" syntax iskeyword @,48-57,_,192-255,- syntax case match syn keyword tmuxAction none any current other syn keyword tmuxBoolean off on syn keyword tmuxTodo FIXME NOTE TODO XXX contained syn match tmuxColour /\/ display syn match tmuxFlags /\s-\a\+/ display syn match tmuxVariable /\w\+=/ display syn match tmuxVariableExpansion /\${\=\w\+}\=/ display syn region tmuxComment start=/#/ skip=/\\\@ 231 && s:i < 235)) ? 15 : "none" exec "syn match tmuxColour" . s:i . " /\\/ display" \ " | highlight tmuxColour" . s:i . " ctermfg=" . s:i . " ctermbg=" . s:bg endfor syn keyword tmuxOptions \ buffer-limit command-alias default-terminal escape-time exit-empty \ activity-action assume-paste-time base-index bell-action default-command \ default-shell default-size destroy-unattached detach-on-destroy \ display-panes-active-colour display-panes-colour display-panes-time \ display-time exit-unattached focus-events history-file history-limit \ key-table lock-after-time lock-command message-command-style message-limit \ message-style mouse aggressive-resize allow-rename alternate-screen \ automatic-rename automatic-rename-format clock-mode-colour \ clock-mode-style main-pane-height main-pane-width mode-keys mode-style \ monitor-activity monitor-bell monitor-silence other-pane-height \ other-pane-width pane-active-border-style pane-base-index \ pane-border-format pane-border-status pane-border-style prefix prefix2 \ remain-on-exit renumber-windows repeat-time set-clipboard set-titles \ set-titles-string silence-action status status-bg status-fg status-format \ status-interval status-justify status-keys status-left status-left-length \ status-left-style status-position status-right status-right-length \ status-right-style status-style synchronize-panes terminal-overrides \ update-environment user-keys visual-activity visual-bell visual-silence \ window-active-style window-size window-status-activity-style \ window-status-bell-style window-status-current-format \ window-status-current-style window-status-format window-status-last-style \ window-status-separator window-status-style window-style word-separators \ wrap-search xterm-keys syn keyword tmuxCommands \ attach attach-session bind bind-key break-pane breakp capture-pane \ capturep choose-buffer choose-client choose-tree clear-history clearhist \ clock-mode command-prompt confirm confirm-before copy-mode detach \ detach-client display display-menu display-message display-panes displayp \ find-window findw if if-shell join-pane joinp kill-pane kill-server \ kill-session kill-window killp has-session has killw link-window linkw \ list-buffers list-clients list-commands list-keys list-panes list-sessions \ list-windows load-buffer loadb lock lock-client lock-server lock-session \ lockc last-pane lastp locks ls last-window last lsb lsc delete-buffer \ deleteb lscm lsk lsp lsw menu move-pane move-window movep movew new \ new-session new-window neww next next-layout next-window nextl \ paste-buffer pasteb pipe-pane pipep prev previous-layout previous-window \ prevl refresh refresh-client rename rename-session rename-window renamew \ resize-pane resize-window resizep resizew respawn-pane respawn-window \ respawnp respawnw rotate-window rotatew run run-shell save-buffer saveb \ select-layout select-pane select-window selectl selectp selectw send \ send-keys send-prefix set set-buffer set-environment set-hook set-option \ set-window-option setb setenv setw show show-buffer show-environment \ show-hooks show-messages show-options show-window-options showb showenv \ showmsgs showw source source-file split-window splitw start start-server \ suspend-client suspendc swap-pane swap-window swapp swapw switch-client \ switchc unbind unbind-key unlink-window unlinkw wait wait-for let &cpo = s:original_cpo unlet! s:original_cpo s:bg s:i if exists('b:current_syntax') finish endif if !exists('main_syntax') let main_syntax = 'tpp' endif syn match tppAbstractOptionKey contained "^--\%(author\|title\|date\|footer\) *" nextgroup=tppString syn match tppPageLocalOptionKey contained "^--\%(heading\|center\|right\|huge\|sethugefont\|exec\) *" nextgroup=tppString syn match tppPageLocalSwitchKey contained "^--\%(horline\|-\|\%(begin\|end\)\%(\%(shell\)\?output\|slide\%(left\|right\|top\|bottom\)\)\|\%(bold\|rev\|ul\)\%(on\|off\)\|withborder\)" syn match tppNewPageOptionKey contained "^--newpage *" nextgroup=tppString syn match tppColorOptionKey contained "^--\%(\%(bg\|fg\)\?color\) *" syn match tppTimeOptionKey contained "^--sleep *" syn match tppString contained ".*" syn match tppColor contained "\%(white\|yellow\|red\|green\|blue\|cyan\|magenta\|black\|default\)" syn match tppTime contained "\d\+" syn region tppPageLocalSwitch start="^--" end="$" contains=tppPageLocalSwitchKey oneline syn region tppColorOption start="^--\%(\%(bg\|fg\)\?color\)" end="$" contains=tppColorOptionKey,tppColor oneline syn region tppTimeOption start="^--sleep" end="$" contains=tppTimeOptionKey,tppTime oneline syn region tppNewPageOption start="^--newpage" end="$" contains=tppNewPageOptionKey oneline syn region tppPageLocalOption start="^--\%(heading\|center\|right\|huge\|sethugefont\|exec\)" end="$" contains=tppPageLocalOptionKey oneline syn region tppAbstractOption start="^--\%(author\|title\|date\|footer\)" end="$" contains=tppAbstractOptionKey oneline if main_syntax !=# 'sh' syn include @tppShExec syntax/sh.vim unlet b:current_syntax syn region shExec matchgroup=tppPageLocalOptionKey start='^--exec *' keepend end='$' contains=@tppShExec endif syn match tppComment "^--##.*$" hi def link tppAbstractOptionKey Special hi def link tppPageLocalOptionKey Keyword hi def link tppPageLocalSwitchKey Keyword hi def link tppColorOptionKey Keyword hi def link tppTimeOptionKey Comment hi def link tppNewPageOptionKey PreProc hi def link tppString String hi def link tppColor String hi def link tppTime Number hi def link tppComment Comment hi def link tppAbstractOption Error hi def link tppPageLocalOption Error hi def link tppPageLocalSwitch Error hi def link tppColorOption Error hi def link tppNewPageOption Error hi def link tppTimeOption Error let b:current_syntax = 'tpp' if exists("b:current_syntax") finish endif let fortran_free_source=1 runtime! syntax/fortran.vim unlet b:current_syntax syn case ignore syn keyword trasysOptions model rsrec info maxfl nogo dmpdoc syn keyword trasysOptions rsi rti rso rto bcdou cmerg emerg syn keyword trasysOptions user1 nnmin erplot syn keyword trasysSurface icsn tx ty tz rotx roty rotz inc bcsn syn keyword trasysSurface nnx nny nnz nnax nnr nnth unnx syn keyword trasysSurface unny unnz unnax unnr unnth type idupsf syn keyword trasysSurface imagsf act active com shade bshade axmin syn keyword trasysSurface axmax zmin zmax rmin rmax thmin thmin syn keyword trasysSurface thmax alpha emiss trani trans spri sprs syn keyword trasysSurface refno posit com dupbcs dimensions syn keyword trasysSurface dimension position prop surfn syn keyword trasysSurfaceType rect trap disk cyl cone sphere parab syn keyword trasysSurfaceType box5 box6 shpero tor ogiv elem tape poly syn keyword trasysSurfaceArgs ff di top bottom in out both no only syn keyword trasysArgs fig smn nodea zero only ir sol syn keyword trasysArgs both wband stepn initl syn keyword trasysOperations orbgen build syn keyword trasysSubRoutine chgblk ndata ndatas odata odatas syn keyword trasysSubRoutine pldta ffdata cmdata adsurf rbdata syn keyword trasysSubRoutine rtdata pffshd orbit1 orbit2 orient syn keyword trasysSubRoutine didt1 didt1s didt2 didt2s spin syn keyword trasysSubRoutine spinav dicomp distab drdata gbdata syn keyword trasysSubRoutine gbaprx rkdata rcdata aqdata stfaq syn keyword trasysSubRoutine qodata qoinit modar modpr modtr syn keyword trasysSubRoutine modprs modshd moddat rstoff rston syn keyword trasysSubRoutine rsmerg ffread diread ffusr1 diusr1 syn keyword trasysSubRoutine surfp didt3 didt3s romain stfrc syn keyword trasysSubRoutine rornt rocstr romove flxdata title syn keyword trassyPrcsrSegm nplot oplot plot cmcal ffcal rbcal syn keyword trassyPrcsrSegm rtcal dical drcal sfcal gbcal rccal syn keyword trassyPrcsrSegm rkcal aqcal qocal syn match trasysOptions "list source" syn match trasysOptions "save source" syn match trasysOptions "no print" syn match trasysSurface "P[0-9]* *="he=e-1 syn match trasysIdentifier "^L "he=e-1 syn match trasysIdentifier "^K "he=e-1 syn match trasysIdentifier "^D "he=e-1 syn match trasysIdentifier "^I "he=e-1 syn match trasysIdentifier "^N "he=e-1 syn match trasysIdentifier "^M "he=e-1 syn match trasysIdentifier "^B[C][S]" syn match trasysIdentifier "^S "he=e-1 syn match trasysComment "^C.*$" syn match trasysComment "^R.*$" syn match trasysComment "\$.*$" syn match trasysHeader "^header[^,]*" syn match trasysMacro "^FAC" syn match trasysInteger "-\=\<[0-9]*\>" syn match trasysFloat "-\=\<[0-9]*\.[0-9]*" syn match trasysScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" syn match trasysBlank "' \+'"hs=s+1,he=e-1 syn match trasysEndData "^END OF DATA" if exists("thermal_todo") execute 'syn match trasysTodo ' . '"^'.thermal_todo.'.*$"' else syn match trasysTodo "^?.*$" endif syn region trasysComment matchgroup=trasysHeader start="^HEADER DOCUMENTATION DATA" end="^HEADER[^,]*" syn sync maxlines=500 syn sync match trasysSync grouphere trasysComment "^HEADER DOCUMENTATION DATA" hi def link trasysOptions Special hi def link trasysSurface Special hi def link trasysSurfaceType Constant hi def link trasysSurfaceArgs Constant hi def link trasysArgs Constant hi def link trasysOperations Statement hi def link trasysSubRoutine Statement hi def link trassyPrcsrSegm PreProc hi def link trasysIdentifier Identifier hi def link trasysComment Comment hi def link trasysHeader Typedef hi def link trasysMacro Macro hi def link trasysInteger Number hi def link trasysFloat Float hi def link trasysScientific Float hi def link trasysBlank SpecialChar hi def link trasysEndData Macro hi def link trasysTodo Todo let b:current_syntax = "trasys" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword treetopTodo \ contained \ TODO \ FIXME \ XXX \ NOTE syn match treetopComment \ '#.*' \ display \ contains=treetopTodo syn include @treetopRuby syntax/ruby.vim unlet b:current_syntax syn keyword treetopKeyword \ require \ end syn region treetopKeyword \ matchgroup=treetopKeyword \ start='\<\%(grammar\|include\|module\)\>\ze\s' \ end='$' \ transparent \ oneline \ keepend \ contains=@treetopRuby syn keyword treetopKeyword \ rule \ nextgroup=treetopRuleName \ skipwhite skipnl syn match treetopGrammarName \ '\u\w*' \ contained syn match treetopRubyModuleName \ '\u\w*' \ contained syn match treetopRuleName \ '\h\w*' \ contained syn region treetopString \ matchgroup=treetopStringDelimiter \ start=+"+ \ end=+"+ syn region treetopString \ matchgroup=treetopStringDelimiter \ start=+'+ \ end=+'+ syn region treetopCharacterClass \ matchgroup=treetopCharacterClassDelimiter \ start=+\[+ \ skip=+\\\]+ \ end=+\]+ syn region treetopRubyBlock \ matchgroup=treetopRubyBlockDelimiter \ start=+{+ \ end=+}+ \ contains=@treetopRuby syn region treetopSemanticPredicate \ matchgroup=treetopSemanticPredicateDelimiter \ start=+[!&]{+ \ end=+}+ \ contains=@treetopRuby syn region treetopSubclassDeclaration \ matchgroup=treetopSubclassDeclarationDelimiter \ start=+<+ \ end=+>+ \ contains=@treetopRuby syn match treetopEllipsis \ +''+ hi def link treetopTodo Todo hi def link treetopComment Comment hi def link treetopKeyword Keyword hi def link treetopGrammarName Constant hi def link treetopRubyModuleName Constant hi def link treetopRuleName Identifier hi def link treetopString String hi def link treetopStringDelimiter treetopString hi def link treetopCharacterClass treetopString hi def link treetopCharacterClassDelimiter treetopCharacterClass hi def link treetopRubyBlockDelimiter PreProc hi def link treetopSemanticPredicateDelimiter PreProc hi def link treetopSubclassDeclarationDelimiter PreProc hi def link treetopEllipsis Special let b:current_syntax = 'treetop' let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syntax case match syntax sync minlines=0 maxlines=0 syntax match tfsError /.*/ highlight link tfsError Error syntax keyword tfsSpecialComment TODO XXX FIXME contained highlight link tfsSpecialComment Todo syntax match tfsComment ~\s*#.*~ contains=tfsSpecialComment highlight link tfsComment Comment highlight link tfsSpecialChar Operator syntax match tfsSpecialChar ~[*!+]~ contained highlight link tfsDelimiter Delimiter syntax match tfsDelimiter ~:~ contained syntax region tfsRuleDevice matchgroup=tfsDeviceContainer start=~\[/~ end=~\]~ nextgroup=tfsRulePath oneline highlight link tfsRuleDevice Label highlight link tfsDeviceContainer PreProc syntax match tfsRulePath ~/[-_a-zA-Z0-9/]*~ nextgroup=tfsRuleACL contained contains=tfsDelimiter highlight link tfsRulePath String syntax match tfsRuleACL ~\(:\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\):[RWEBXODCU!]\+\)\+$~ contained contains=tfsDelimiter,tfsRuleWho,tfsRuleWhat syntax match tfsRuleWho ~\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\)~ contained contains=tfsSpecialChar highlight link tfsRuleWho Identifier syntax match tfsRuleWhat ~[RWEBXODCU!]\+~ contained contains=tfsSpecialChar highlight link tfsRuleWhat Structure if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn keyword tsaltFunction IsAscii IsAlNum IsAlpha IsCntrl IsDigit syn keyword tsaltFunction IsLower IsUpper ToLower ToUpper syn keyword tsaltFunction Carrier cInp_Cnt cGetC cGetCT cPutC cPutN syn keyword tsaltFunction cPutS cPutS_TR FlushBuf Get_Baud syn keyword tsaltFunction Get_DataB Get_Port Get_StopB Hangup syn keyword tsaltFunction KillConnectDevice MakeConnectDevice syn keyword tsaltFunction Send_Brk Set_ConnectDevice Set_Port syn keyword tsaltFunction fClearErr fClose fDelete fError fEOF fFlush syn keyword tsaltFunction fGetC fGetS FileAttr FileFind FileSize syn keyword tsaltFunction FileTime fnStrip fOpen fPutC fPutS fRead syn keyword tsaltFunction fRename fSeek fTell fWrite syn keyword tsaltFunction Capture Capture_Stat Printer Receive Send syn keyword tsaltFunction Set_DefProt UsageLog Usage_Stat UStamp syn keyword tsaltFunction Track Track_AddChr Track_Free Track_Hit syn keyword tsaltFunction WaitFor syn keyword tsaltFunction InKey InKeyW KeyGet KeyLoad KeySave KeySet syn keyword tsaltFunction ChatMode Dos Dial DosFunction ExitTelix syn keyword tsaltFunction GetEnv GetFon HelpScreen LoadFon NewDir syn keyword tsaltFunction Randon Redial RedirectDOS Run syn keyword tsaltFunction Set_Terminal Show_Directory TelixVersion syn keyword tsaltFunction Terminal TransTab Update_Term syn keyword tsaltFunction ArgCount Call CallD CompileScript GetRunPath syn keyword tsaltFunction Is_Loaded Load_Scr ScriptVersion syn keyword tsaltFunction TelixForWindows Unload_Scr syn keyword tsaltFunction Alarm PlayWave Tone syn keyword tsaltFunction CopyChrs CopyStr DelChrs GetS GetSXY syn keyword tsaltFunction InputBox InsChrs ItoS SetChr StoI StrCat syn keyword tsaltFunction StrChr StrCompI StrLen StrLower StrMaxLen syn keyword tsaltFunction StrPos StrPosI StrUpper SubChr SubChrs syn keyword tsaltFunction SubStr syn keyword tsaltFunction CurTime Date Delay Delay_Scr Get_OnlineTime syn keyword tsaltFunction tDay tHour tMin tMonth tSec tYear Time syn keyword tsaltFunction Time_Up Timer_Free Time_Restart syn keyword tsaltFunction Time_Start Time_Total syn keyword tsaltFunction Box CNewLine Cursor_OnOff Clear_Scr syn keyword tsaltFunction GetTermHeight GetTermWidth GetX GetY syn keyword tsaltFunction GotoXY MsgBox NewLine PrintC PrintC_Trm syn keyword tsaltFunction PrintN PrintN_Trm PrintS PrintS_Trm syn keyword tsaltFunction PrintSC PRintSC_Trm syn keyword tsaltFunction PStrA PStrAXY Scroll Status_Wind vGetChr syn keyword tsaltFunction vGetChrs vGetChrsA vPutChr vPutChrs syn keyword tsaltFunction vPutChrsA vRstrArea vSaveArea syn keyword tsaltFunction DDEExecute DDEInitate DDEPoke DDERequest syn keyword tsaltFunction DDETerminate DDETerminateAll syn keyword tsaltSysVar _add_lf _alarm_on _answerback_str _asc_rcrtrans syn keyword tsaltSysVar _asc_remabort _asc_rlftrans _asc_scpacing syn keyword tsaltSysVar _asc_scrtrans _asc_secho _asc_slpacing syn keyword tsaltSysVar _asc_spacechr _asc_striph _back_color syn keyword tsaltSysVar _capture_fname _connect_str _dest_bs syn keyword tsaltSysVar _dial_pause _dial_time _dial_post syn keyword tsaltSysVar _dial_pref1 _dial_pref2 _dial_pref3 syn keyword tsaltSysVar _dial_pref4 _dir_prog _down_dir syn keyword tsaltSysVar _entry_bbstype _entry_comment _entry_enum syn keyword tsaltSysVar _entry_name _entry_num _entry_logonname syn keyword tsaltSysVar _entry_pass _fore_color _image_file syn keyword tsaltSysVar _local_echo _mdm_hang_str _mdm_init_str syn keyword tsaltSysVar _no_connect1 _no_connect2 _no_connect3 syn keyword tsaltSysVar _no_connect4 _no_connect5 _redial_stop syn keyword tsaltSysVar _scr_chk_key _script_dir _sound_on syn keyword tsaltSysVar _strip_high _swap_bs _telix_dir _up_dir syn keyword tsaltSysVar _usage_fname _zmodauto _zmod_rcrash syn keyword tsaltSysVar _zmod_scrash syn keyword tsaltType str int syn keyword tsaltStatement goto break return continue syn keyword tsaltConditional if then else syn keyword tsaltRepeat while for do syn keyword tsaltTodo contained TODO syn match tsaltSpecial contained "\^\d\d\d\|\^." syn region tsaltString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tsaltSpecial syn match tsaltCharacter "'[^\\]'" syn match tsaltSpecialCharacter "'\\.'" syn region tsaltParen transparent start='(' end=')' contains=ALLBUT,tsaltParenError,tsaltIncluded,tsaltSpecial,tsaltTodo syn match tsaltParenError ")" syn match tsaltInParen contained "[{}]" hi link tsaltParenError tsaltError hi link tsaltInParen tsaltError syn match tsaltNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" syn match tsaltFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" syn match tsaltFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match tsaltFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" syn match tsaltNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" syn region tsaltComment start="/\*" end="\*/" contains=cTodo syn match tsaltComment "//.*" contains=cTodo syn match tsaltCommentError "\*/" syn region tsaltPreCondit start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tsaltComment,tsaltString,tsaltCharacter,tsaltNumber,tsaltCommentError syn region tsaltIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match tsaltIncluded contained "<[^>]*>" syn match tsaltInclude "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=tsaltIncluded syn region tsaltDefine start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen syn region tsaltPreProc start="^[ \t]*#[ \t]*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tsaltPreCondit,tsaltIncluded,tsaltInclude,tsaltDefine,tsaltInParen syn region tsaltMulti transparent start='?' end=':' contains=ALLBUT,tsaltIncluded,tsaltSpecial,tsaltTodo syn sync ccomment tsaltComment hi def link tsaltFunction Statement hi def link tsaltSysVar Type hi def link tsaltConditional Conditional hi def link tsaltRepeat Repeat hi def link tsaltCharacter SpecialChar hi def link tsaltSpecialCharacter SpecialChar hi def link tsaltNumber Number hi def link tsaltFloat Float hi def link tsaltCommentError tsaltError hi def link tsaltInclude Include hi def link tsaltPreProc PreProc hi def link tsaltDefine Macro hi def link tsaltIncluded tsaltString hi def link tsaltError Error hi def link tsaltStatement Statement hi def link tsaltPreCondit PreCondit hi def link tsaltType Type hi def link tsaltString String hi def link tsaltComment Comment hi def link tsaltSpecial Special hi def link tsaltTodo Todo let b:current_syntax = "tsalt" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn keyword tssclCommand begin radk list heatrates attr draw syn keyword tssclKeyword cells rays error nodes levels objects cpu syn keyword tssclKeyword units length positions energy time unit solar syn keyword tssclKeyword solar_constant albedo planet_power syn keyword tssclEnd exit syn keyword tssclUnits cm feet meters inches syn keyword tssclUnits Celsius Kelvin Fahrenheit Rankine syn match tssclString /"[^"]\+"/ contains=ALLBUT,tssInteger,tssclKeyword,tssclCommand,tssclEnd,tssclUnits syn match tssclComment "#.*$" syn match tssclOper "||\||\|&&\|&\|!=\|!\|>=\|<=\|>\|<\|+\|-\|^\|\*\*\|\*\|/\|%\|==\|=\|\." skipwhite syn match tssclDirective "\*ADD" syn match tssclDirective "\*ARITHMETIC \+\(ON\|OFF\)" syn match tssclDirective "\*CLOSE" syn match tssclDirective "\*CPU" syn match tssclDirective "\*DEFINE" syn match tssclDirective "\*ECHO" syn match tssclConditional "\*ELSE" syn match tssclConditional "\*END \+\(IF\|WHILE\)" syn match tssclDirective "\*EXIT" syn match tssclConditional "\*IF" syn match tssclDirective "\*LIST" syn match tssclDirective "\*OPEN" syn match tssclDirective "\*PROMPT" syn match tssclDirective "\*READ" syn match tssclDirective "\*REWIND" syn match tssclDirective "\*STOP" syn match tssclDirective "\*STRCMP" syn match tssclDirective "\*SYSTEM" syn match tssclDirective "\*UNDEFINE" syn match tssclConditional "\*WHILE" syn match tssclDirective "\*WRITE" syn match tssclContChar "-$" syn match tssclQualifier "/[^/ ]\+"hs=s+1 syn match tssclSymbol "'\S\+'" syn match tssclInteger "-\=\<[0-9]*\>" syn match tssclFloat "-\=\<[0-9]*\.[0-9]*" syn match tssclScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" hi def link tssclCommand Statement hi def link tssclKeyword Special hi def link tssclEnd Macro hi def link tssclUnits Special hi def link tssclComment Comment hi def link tssclDirective Statement hi def link tssclConditional Conditional hi def link tssclContChar Macro hi def link tssclQualifier Typedef hi def link tssclSymbol Identifier hi def link tssclSymbol2 Symbol hi def link tssclString String hi def link tssclOper Operator hi def link tssclInteger Number hi def link tssclFloat Number hi def link tssclScientific Number let b:current_syntax = "tsscl" if exists("b:current_syntax") finish endif syn case ignore syn keyword tssgmParam units mirror param active sides submodel include syn keyword tssgmParam iconductor nbeta ngamma optics material thickness color syn keyword tssgmParam initial_temp syn keyword tssgmParam initial_id node_ids node_add node_type syn keyword tssgmParam gamma_boundaries gamma_add beta_boundaries syn keyword tssgmParam p1 p2 p3 p4 p5 p6 rot1 rot2 rot3 tx ty tz syn keyword tssgmSurfType rectangle trapezoid disc ellipse triangle syn keyword tssgmSurfType polygon cylinder cone sphere ellipic-cone syn keyword tssgmSurfType ogive torus box paraboloid hyperboloid ellipsoid syn keyword tssgmSurfType quadrilateral trapeziod syn keyword tssgmArgs OUT IN DOWN BOTH DOUBLE NONE SINGLE RADK CC FECC syn keyword tssgmArgs white red blue green yellow orange violet pink syn keyword tssgmArgs turquoise grey black syn keyword tssgmArgs Arithmetic Boundary Heater syn keyword tssgmDelim assembly syn keyword tssgmEnd end syn keyword tssgmUnits cm feet meters inches syn keyword tssgmUnits Celsius Kelvin Fahrenheit Rankine syn match tssgmDefault "^DEFAULT/LENGTH = \(ft\|in\|cm\|m\)" syn match tssgmDefault "^DEFAULT/TEMP = [CKFR]" syn match tssgmComment /comment \+= \+".*"/ contains=tssParam,tssgmCommentString syn match tssgmCommentString /".*"/ contained syn match tssgmSurfIdent " \S\+\.\d\+ \=$" syn match tssgmString /"[^" ]\+"/ms=s+1,me=e-1 contains=ALLBUT,tssInteger syn match tssgmArgs / = [xyz],"/ms=s+3,me=e-2 syn match tssgmInteger "-\=\<[0-9]*\>" syn match tssgmFloat "-\=\<[0-9]*\.[0-9]*" syn match tssgmScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" hi def link tssgmParam Statement hi def link tssgmSurfType Type hi def link tssgmArgs Special hi def link tssgmDelim Typedef hi def link tssgmEnd Macro hi def link tssgmUnits Special hi def link tssgmDefault SpecialComment hi def link tssgmComment Statement hi def link tssgmCommentString Comment hi def link tssgmSurfIdent Identifier hi def link tssgmString Delimiter hi def link tssgmInteger Number hi def link tssgmFloat Float hi def link tssgmScientific Float let b:current_syntax = "tssgm" if exists("b:current_syntax") finish endif syn case ignore syn keyword tssopParam ir_eps ir_trans ir_spec ir_tspec ir_refract syn keyword tssopParam sol_eps sol_trans sol_spec sol_tspec sol_refract syn keyword tssopParam color syn keyword tssopArgs white red blue green yellow orange violet pink syn keyword tssopArgs turquoise grey black syn match tssopComment /comment \+= \+".*"/ contains=tssopParam,tssopCommentString syn match tssopCommentString /".*"/ contained syn match tssopProp "property " syn match tssopProp "edit/optic " syn match tssopPropName "^property \S\+" contains=tssopProp syn match tssopPropName "^edit/optic \S\+$" contains=tssopProp syn match tssopInteger "-\=\<[0-9]*\>" syn match tssopFloat "-\=\<[0-9]*\.[0-9]*" syn match tssopScientific "-\=\<[0-9]*\.[0-9]*E[-+]\=[0-9]\+\>" hi def link tssopParam Statement hi def link tssopProp Identifier hi def link tssopArgs Special hi def link tssopComment Statement hi def link tssopCommentString Comment hi def link tssopPropName Typedef hi def link tssopInteger Number hi def link tssopFloat Float hi def link tssopScientific Float let b:current_syntax = "tssop" if !exists("b:tt2_syn_tags") let b:tt2_syn_tags = '\[% %]' endif if !exists("b:tt2_syn_inc_perl") let b:tt2_syn_inc_perl = 1 endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case match syn cluster tt2_top_cluster contains=tt2_perlcode,tt2_tag_region if exists("b:tt2_syn_tags") let s:str = b:tt2_syn_tags . ' ' let s:str = substitute(s:str,'^ \+','','g') let s:str = substitute(s:str,' \+',' ','g') while stridx(s:str,' ') > 0 let s:st = strpart(s:str,0,stridx(s:str,' ')) let s:str = substitute(s:str,'[^ ]* ','',"") let s:ed = strpart(s:str,0,stridx(s:str,' ')) let s:str = substitute(s:str,'[^ ]* ','',"") exec 'syn region tt2_tag_region '. \ 'matchgroup=tt2_tag '. \ 'start=+\(' . s:st .'\)[-]\=+ '. \ 'end=+[-]\=\(' . s:ed . '\)+ '. \ 'contains=@tt2_statement_cluster keepend extend' exec 'syn region tt2_commentblock_region '. \ 'matchgroup=tt2_tag '. \ 'start=+\(' . s:st .'\)[-]\=\(#\)\@=+ '. \ 'end=+[-]\=\(' . s:ed . '\)+ '. \ 'keepend extend' if b:tt2_syn_inc_perl syn include @Perl $VIMRUNTIME/syntax/perl.vim exec 'syn region tt2_perlcode '. \ 'start=+\(\(RAW\)\=PERL\s*[-]\=' . s:ed . '\(\n\)\=\)\@<=+ ' . \ 'end=+' . s:st . '[-]\=\s*END+me=s-1 contains=@Perl keepend' endif unlet s:st unlet s:ed endwhile else syn region tt2_tag_region \ matchgroup=tt2_tag \ start=+\(\[%\)[-]\=+ \ end=+[-]\=%\]+ \ contains=@tt2_statement_cluster keepend extend syn region tt2_commentblock_region \ matchgroup=tt2_tag \ start=+\(\[%\)[-]\=#+ \ end=+[-]\=%\]+ \ keepend extend if b:tt2_syn_inc_perl syn include @Perl $VIMRUNTIME/syntax/perl.vim syn region tt2_perlcode \ start=+\(\(RAW\)\=PERL\s*[-]\=%]\(\n\)\=\)\@<=+ \ end=+\[%[-]\=\s*END+me=s-1 \ contains=@Perl keepend endif endif syn keyword tt2_directive contained \ GET CALL SET DEFAULT DEBUG \ LAST NEXT BREAK STOP BLOCK \ IF IN UNLESS ELSIF FOR FOREACH WHILE SWITCH CASE \ USE PLUGIN MACRO META \ TRY FINAL RETURN LAST \ CLEAR TO STEP AND OR NOT MOD DIV \ ELSE PERL RAWPERL END syn match tt2_directive +|+ contained syn keyword tt2_directive contained nextgroup=tt2_string_q,tt2_string_qq,tt2_blockname skipwhite skipempty \ INSERT INCLUDE PROCESS WRAPPER FILTER \ THROW CATCH syn keyword tt2_directive contained nextgroup=tt2_def_tag skipwhite skipempty \ TAGS syn match tt2_def_tag "\S\+\s\+\S\+\|\<\w\+\>" contained syn match tt2_variable +\I\w*+ contained syn match tt2_operator "[+*/%:?-]" contained syn match tt2_operator "\<\(mod\|div\|or\|and\|not\)\>" contained syn match tt2_operator "[!=<>]=\=\|&&\|||" contained syn match tt2_operator "\(\s\)\@<=_\(\s\)\@=" contained syn match tt2_operator "=>\|," contained syn match tt2_deref "\([[:alnum:]_)\]}]\s*\)\@<=\." contained syn match tt2_comment +#.*$+ contained extend syn match tt2_func +\<\I\w*\(\s*(\)\@=+ contained nextgroup=tt2_bracket_r skipempty skipwhite syn region tt2_bracket_r start=+(+ end=+)+ contained contains=@tt2_statement_cluster keepend extend syn region tt2_bracket_b start=+\[+ end=+]+ contained contains=@tt2_statement_cluster keepend extend syn region tt2_bracket_b start=+{+ end=+}+ contained contains=@tt2_statement_cluster keepend extend syn region tt2_string_qq start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable keepend extend syn region tt2_string_q start=+'+ end=+'+ skip=+\\'+ contained keepend extend syn match tt2_ivariable +\$\I\w*\>\(\.\I\w*\>\)*+ contained syn match tt2_ivariable +\${\I\w*\>\(\.\I\w*\>\)*}+ contained syn match tt2_number "\d\+" contained syn match tt2_number "\d\+\.\d\+" contained syn match tt2_number "0x\x\+" contained syn match tt2_number "0\o\+" contained syn match tt2_blockname "\f\+" contained nextgroup=tt2_blockname_joint skipwhite skipempty syn match tt2_blockname "$\w\+" contained contains=tt2_ivariable nextgroup=tt2_blockname_joint skipwhite skipempty syn region tt2_blockname start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable nextgroup=tt2_blockname_joint keepend skipwhite skipempty syn region tt2_blockname start=+'+ end=+'+ skip=+\\'+ contained nextgroup=tt2_blockname_joint keepend skipwhite skipempty syn match tt2_blockname_joint "+" contained nextgroup=tt2_blockname skipwhite skipempty syn cluster tt2_statement_cluster contains=tt2_directive,tt2_variable,tt2_operator,tt2_string_q,tt2_string_qq,tt2_deref,tt2_comment,tt2_func,tt2_bracket_b,tt2_bracket_r,tt2_number syn sync minlines=50 hi def link tt2_tag Type hi def link tt2_tag_region Type hi def link tt2_commentblock_region Comment hi def link tt2_directive Statement hi def link tt2_variable Identifier hi def link tt2_ivariable Identifier hi def link tt2_operator Statement hi def link tt2_string_qq String hi def link tt2_string_q String hi def link tt2_blockname String hi def link tt2_comment Comment hi def link tt2_func Function hi def link tt2_number Number if exists("b:tt2_syn_tags") unlet b:tt2_syn_tags endif let b:current_syntax = "tt2" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif runtime! syntax/html.vim unlet b:current_syntax runtime! syntax/tt2.vim unlet b:current_syntax syn cluster htmlPreProc add=@tt2_top_cluster let b:current_syntax = "tt2html" if exists("b:current_syntax") finish endif runtime! syntax/javascript.vim unlet b:current_syntax runtime! syntax/tt2.vim unlet b:current_syntax syn cluster javascriptPreProc add=@tt2_top_cluster let b:current_syntax = "tt2js" if !exists("main_syntax") if version < 600 syntax clear elseif exists("b:current_syntax") finish endif let main_syntax = "typescript" endif if version < 600 && exists("typescript_fold") unlet typescript_fold endif setlocal iskeyword+=$ syntax sync fromstart syn match shebang "^#!.*/bin/env\s\+node\>" hi link shebang Comment syn keyword typescriptCommentTodo TODO FIXME XXX TBD contained syn match typescriptLineComment "\/\/.*" contains=@Spell,typescriptCommentTodo,typescriptRef syn match typescriptRefComment /\/\/\/<\(reference\|amd-\(dependency\|module\)\)\s\+.*\/>$/ contains=typescriptRefD,typescriptRefS syn region typescriptRefD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ syn region typescriptRefS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ syn match typescriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" syn region typescriptComment start="/\*" end="\*/" contains=@Spell,typescriptCommentTodo extend if !exists("typescript_ignore_typescriptdoc") syntax case ignore syntax region typescriptDocComment start="/\*\*\s*$" end="\*/" contains=typescriptDocTags,typescriptCommentTodo,typescriptCvsTag,@typescriptHtml,@Spell fold extend syntax match typescriptDocTags contained "@\(param\|argument\|requires\|exception\|throws\|type\|class\|extends\|see\|link\|member\|module\|method\|title\|namespace\|optional\|default\|base\|file\|returns\=\)\>" nextgroup=typescriptDocParam,typescriptDocSeeTag skipwhite syntax match typescriptDocTags contained "@\(beta\|deprecated\|description\|fileoverview\|author\|license\|version\|constructor\|private\|protected\|final\|ignore\|addon\|exec\)\>" syntax match typescriptDocParam contained "\%(#\|\w\|\.\|:\|\/\)\+" syntax region typescriptDocSeeTag contained matchgroup=typescriptDocSeeTag start="{" end="}" contains=typescriptDocTags syntax case match endif "" JSDoc end syntax case match syn match typescriptSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}" contained containedin=typescriptStringD,typescriptStringS,typescriptStringB display syn region typescriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=typescriptSpecial,@htmlPreproc extend syn region typescriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=typescriptSpecial,@htmlPreproc extend syn region typescriptStringB start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=typescriptInterpolation,typescriptSpecial,@htmlPreproc extend syn region typescriptInterpolation matchgroup=typescriptInterpolationDelimiter \ start=/${/ end=/}/ contained \ contains=@typescriptExpression syn match typescriptNumber "-\=\<\d[0-9_]*L\=\>" display syn match typescriptNumber "-\=\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>" display syn match typescriptNumber "-\=\<0[bB][01][01_]*\>" display syn match typescriptNumber "-\=\<0[oO]\o[0-7_]*\>" display syn region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline syntax match typescriptFloat /\<-\=\%(\d[0-9_]*\.\d[0-9_]*\|\d[0-9_]*\.\|\.\d[0-9]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/ syn match typescriptDecorators /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/ syntax keyword typescriptPrototype contained prototype if get(g:, 'typescript_ignore_browserwords', 0) syntax keyword typescriptBrowserObjects window navigator screen history location syntax keyword typescriptDOMObjects document event HTMLElement Anchor Area Base Body Button Form Frame Frameset Image Link Meta Option Select Style Table TableCell TableRow Textarea syntax keyword typescriptDOMMethods contained createTextNode createElement insertBefore replaceChild removeChild appendChild hasChildNodes cloneNode normalize isSupported hasAttributes getAttribute setAttribute removeAttribute getAttributeNode setAttributeNode removeAttributeNode getElementsByTagName hasAttribute getElementById adoptNode close compareDocumentPosition createAttribute createCDATASection createComment createDocumentFragment createElementNS createEvent createExpression createNSResolver createProcessingInstruction createRange createTreeWalker elementFromPoint evaluate getBoxObjectFor getElementsByClassName getSelection getUserData hasFocus importNode syntax keyword typescriptDOMProperties contained nodeName nodeValue nodeType parentNode childNodes firstChild lastChild previousSibling nextSibling attributes ownerDocument namespaceURI prefix localName tagName syntax keyword typescriptAjaxObjects XMLHttpRequest syntax keyword typescriptAjaxProperties contained readyState responseText responseXML statusText syntax keyword typescriptAjaxMethods contained onreadystatechange abort getAllResponseHeaders getResponseHeader open send setRequestHeader syntax keyword typescriptPropietaryObjects ActiveXObject syntax keyword typescriptPropietaryMethods contained attachEvent detachEvent cancelBubble returnValue syntax keyword typescriptHtmlElemProperties contained className clientHeight clientLeft clientTop clientWidth dir href id innerHTML lang length offsetHeight offsetLeft offsetParent offsetTop offsetWidth scrollHeight scrollLeft scrollTop scrollWidth style tabIndex target title syntax keyword typescriptEventListenerKeywords contained blur click focus mouseover mouseout load item syntax keyword typescriptEventListenerMethods contained scrollIntoView addEventListener dispatchEvent removeEventListener preventDefault stopPropagation endif syntax keyword typescriptSource import export from as syntax keyword typescriptIdentifier arguments this void syntax keyword typescriptStorageClass let var const syntax keyword typescriptOperator delete new instanceof typeof syntax keyword typescriptBoolean true false syntax keyword typescriptNull null undefined syntax keyword typescriptMessage alert confirm prompt status syntax keyword typescriptGlobal self top parent syntax keyword typescriptDeprecated escape unescape all applets alinkColor bgColor fgColor linkColor vlinkColor xmlEncoding syntax keyword typescriptConditional if else switch syntax keyword typescriptRepeat do while for in of syntax keyword typescriptBranch break continue yield await syntax keyword typescriptLabel case default async readonly syntax keyword typescriptStatement return with syntax keyword typescriptGlobalObjects Array Boolean Date Function Infinity JSON Math Number NaN Object Packages RegExp String Symbol netscape syntax keyword typescriptExceptions try catch throw finally Error EvalError RangeError ReferenceError SyntaxError TypeError URIError syntax keyword typescriptReserved constructor declare as interface module abstract enum int short export interface static byte extends long super char final native synchronized class float package throws goto private transient debugger implements protected volatile double import public type namespace from get set keyof syn match typescriptFunction "(super\s*|constructor\s*)" contained nextgroup=typescriptVars syn region typescriptVars start="(" end=")" contained contains=typescriptParameters transparent keepend syn match typescriptParameters "([a-zA-Z0-9_?.$][\w?.$]*)\s*:\s*([a-zA-Z0-9_?.$][\w?.$]*)" contained skipwhite syntax keyword typescriptType DOMImplementation DocumentFragment Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction void any string boolean number symbol never object unknown syntax keyword typescriptExceptions DOMException syntax keyword typescriptDomErrNo INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR syntax keyword typescriptDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE syntax case ignore syntax keyword typescriptHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize onload onsubmit syntax case match if exists("typescript_enable_domhtmlcss") syntax match typescriptDomElemAttrs contained /\%(nodeName\|nodeValue\|nodeType\|parentNode\|childNodes\|firstChild\|lastChild\|previousSibling\|nextSibling\|attributes\|ownerDocument\|namespaceURI\|prefix\|localName\|tagName\)\>/ syntax match typescriptDomElemFuncs contained /\%(insertBefore\|replaceChild\|removeChild\|appendChild\|hasChildNodes\|cloneNode\|normalize\|isSupported\|hasAttributes\|getAttribute\|setAttribute\|removeAttribute\|getAttributeNode\|setAttributeNode\|removeAttributeNode\|getElementsByTagName\|getAttributeNS\|setAttributeNS\|removeAttributeNS\|getAttributeNodeNS\|setAttributeNodeNS\|getElementsByTagNameNS\|hasAttribute\|hasAttributeNS\)\>/ nextgroup=typescriptParen skipwhite syntax match typescriptHtmlElemAttrs contained /\%(className\|clientHeight\|clientLeft\|clientTop\|clientWidth\|dir\|id\|innerHTML\|lang\|length\|offsetHeight\|offsetLeft\|offsetParent\|offsetTop\|offsetWidth\|scrollHeight\|scrollLeft\|scrollTop\|scrollWidth\|style\|tabIndex\|title\)\>/ syntax match typescriptHtmlElemFuncs contained /\%(blur\|click\|focus\|scrollIntoView\|addEventListener\|dispatchEvent\|removeEventListener\|item\)\>/ nextgroup=typescriptParen skipwhite syntax keyword typescriptCssStyles contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition syntax keyword typescriptCssStyles contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition syntax keyword typescriptCssStyles contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode syntax keyword typescriptCssStyles contained bottom height left position right top width zIndex syntax keyword typescriptCssStyles contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout syntax keyword typescriptCssStyles contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop syntax keyword typescriptCssStyles contained listStyle listStyleImage listStylePosition listStyleType syntax keyword typescriptCssStyles contained background backgroundAttachment backgroundColor backgroundImage backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat syntax keyword typescriptCssStyles contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType syntax keyword typescriptCssStyles contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText syntax keyword typescriptCssStyles contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor endif "DOM/HTML/CSS syntax match typescriptDotNotation "\." nextgroup=typescriptPrototype,typescriptDomElemAttrs,typescriptDomElemFuncs,typescriptDOMMethods,typescriptDOMProperties,typescriptHtmlElemAttrs,typescriptHtmlElemFuncs,typescriptHtmlElemProperties,typescriptAjaxProperties,typescriptAjaxMethods,typescriptPropietaryMethods,typescriptEventListenerMethods skipwhite skipnl syntax match typescriptDotNotation "\.style\." nextgroup=typescriptCssStyles syntax cluster typescriptAll contains=typescriptComment,typescriptLineComment,typescriptDocComment,typescriptStringD,typescriptStringS,typescriptStringB,typescriptRegexpString,typescriptNumber,typescriptFloat,typescriptDecorators,typescriptLabel,typescriptSource,typescriptType,typescriptOperator,typescriptBoolean,typescriptNull,typescriptFuncKeyword,typescriptConditional,typescriptGlobal,typescriptRepeat,typescriptBranch,typescriptStatement,typescriptGlobalObjects,typescriptMessage,typescriptIdentifier,typescriptStorageClass,typescriptExceptions,typescriptReserved,typescriptDeprecated,typescriptDomErrNo,typescriptDomNodeConsts,typescriptHtmlEvents,typescriptDotNotation,typescriptBrowserObjects,typescriptDOMObjects,typescriptAjaxObjects,typescriptPropietaryObjects,typescriptDOMMethods,typescriptHtmlElemProperties,typescriptDOMProperties,typescriptEventListenerKeywords,typescriptEventListenerMethods,typescriptAjaxProperties,typescriptAjaxMethods,typescriptFuncArg if main_syntax == "typescript" syntax sync clear syntax sync ccomment typescriptComment minlines=200 endif syntax keyword typescriptFuncKeyword function syn match typescriptBraces "[{}\[\]]" syn match typescriptParens "[()]" syn match typescriptOpSymbols "=\{1,3}\|!==\|!=\|<\|>\|>=\|<=\|++\|+=\|--\|-=" syn match typescriptEndColons "[;,]" syn match typescriptLogicSymbols "\(&&\)\|\(||\)\|\(!\)" syn region foldBraces start=/{/ skip=/\(\/\/.*\)\|\(\/.*\/\)/ end=/}/ transparent fold keepend extend if version >= 508 || !exists("did_typescript_syn_inits") if version < 508 let did_typescript_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink typescriptParameters Operator HiLink typescriptSuperBlock Operator HiLink typescriptEndColons Exception HiLink typescriptOpSymbols Operator HiLink typescriptLogicSymbols Boolean HiLink typescriptBraces Function HiLink typescriptParens Operator HiLink typescriptComment Comment HiLink typescriptLineComment Comment HiLink typescriptRefComment Include HiLink typescriptRefS String HiLink typescriptRefD String HiLink typescriptDocComment Comment HiLink typescriptCommentTodo Todo HiLink typescriptCvsTag Function HiLink typescriptDocTags Special HiLink typescriptDocSeeTag Function HiLink typescriptDocParam Function HiLink typescriptStringS String HiLink typescriptStringD String HiLink typescriptStringB String HiLink typescriptInterpolationDelimiter Delimiter HiLink typescriptRegexpString String HiLink typescriptGlobal Constant HiLink typescriptCharacter Character HiLink typescriptPrototype Type HiLink typescriptConditional Conditional HiLink typescriptBranch Conditional HiLink typescriptIdentifier Identifier HiLink typescriptStorageClass StorageClass HiLink typescriptRepeat Repeat HiLink typescriptStatement Statement HiLink typescriptFuncKeyword Function HiLink typescriptMessage Keyword HiLink typescriptDeprecated Exception HiLink typescriptError Error HiLink typescriptParensError Error HiLink typescriptParensErrA Error HiLink typescriptParensErrB Error HiLink typescriptParensErrC Error HiLink typescriptReserved Keyword HiLink typescriptOperator Operator HiLink typescriptType Type HiLink typescriptNull Type HiLink typescriptNumber Number HiLink typescriptFloat Number HiLink typescriptDecorators Special HiLink typescriptBoolean Boolean HiLink typescriptLabel Label HiLink typescriptSpecial Special HiLink typescriptSource Special HiLink typescriptGlobalObjects Special HiLink typescriptExceptions Special HiLink typescriptDomErrNo Constant HiLink typescriptDomNodeConsts Constant HiLink typescriptDomElemAttrs Label HiLink typescriptDomElemFuncs PreProc HiLink typescriptHtmlElemAttrs Label HiLink typescriptHtmlElemFuncs PreProc HiLink typescriptCssStyles Label HiLink typescriptBrowserObjects Constant HiLink typescriptDOMObjects Constant HiLink typescriptDOMMethods Function HiLink typescriptDOMProperties Special HiLink typescriptAjaxObjects Constant HiLink typescriptAjaxMethods Function HiLink typescriptAjaxProperties Special HiLink typescriptFuncDef Title HiLink typescriptFuncArg Special HiLink typescriptFuncComma Operator HiLink typescriptHtmlEvents Special HiLink typescriptHtmlElemProperties Special HiLink typescriptEventListenerKeywords Keyword HiLink typescriptNumber Number HiLink typescriptPropietaryObjects Constant delcommand HiLink endif syntax cluster htmltypescript contains=@typescriptAll,typescriptBracket,typescriptParen,typescriptBlock,typescriptParenError syntax cluster typescriptExpression contains=@typescriptAll,typescriptBracket,typescriptParen,typescriptBlock,typescriptParenError,@htmlPreproc let b:current_syntax = "typescript" if main_syntax == 'typescript' unlet main_syntax endif if exists("b:current_syntax") finish endif syn match ucError "[\\@`]" syn match ucError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/" if !exists("main_syntax") let main_syntax='uc' endif syntax case ignore syn keyword ucBranch break continue syn keyword ucConditional if else switch syn keyword ucRepeat while for do foreach syn keyword ucBoolean true false syn keyword ucConstant null syn keyword ucOperator new instanceof syn keyword ucType boolean char byte short int long float double syn keyword ucType void Pawn sound state auto exec function ipaddr syn keyword ucType ELightType actor ammo defaultproperties bool syn keyword ucType native noexport var out vector name local string syn keyword ucType event syn keyword ucStatement return syn keyword ucStorageClass static synchronized transient volatile final syn keyword ucMethodDecl synchronized throws syn match ucClassDecl "^[Cc]lass[\s$]*\S*[\s$]*expands[\s$]*\S*;" contains=ucSpecial,ucSpecialChar,ucClassKeys syn keyword ucClassKeys class expands extends syn match ucExternal "^\#exec.*" contains=ucCommentString,ucNumber syn keyword ucScopeDecl public protected private abstract syn match ucFuncDef "^.*function\s*[\(]*" contains=ucType,ucStorageClass syn match ucEventDef "^.*event\s*[\(]*" contains=ucType,ucStorageClass syn match ucClassLabel "[a-zA-Z0-9]*\'[a-zA-Z0-9]*\'" contains=ucCharacter syn region ucLabelRegion transparent matchgroup=ucLabel start="\" matchgroup=NONE end=":" contains=ucNumber syn match ucUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=ucLabel syn keyword ucLabel default syn cluster ucTop contains=ucExternal,ucError,ucError,ucBranch,ucLabelRegion,ucLabel,ucConditional,ucRepeat,ucBoolean,ucConstant,ucTypedef,ucOperator,ucType,ucType,ucStatement,ucStorageClass,ucMethodDecl,ucClassDecl,ucClassDecl,ucClassDecl,ucScopeDecl,ucError,ucError2,ucUserLabel,ucClassLabel syn keyword ucTodo contained TODO FIXME XXX syn region ucCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=ucSpecial,ucCommentStar,ucSpecialChar syn region ucComment2String contained start=+"+ end=+$\|"+ contains=ucSpecial,ucSpecialChar syn match ucCommentCharacter contained "'\\[^']\{1,6\}'" contains=ucSpecialChar syn match ucCommentCharacter contained "'\\''" contains=ucSpecialChar syn match ucCommentCharacter contained "'[^\\]'" syn region ucComment start="/\*" end="\*/" contains=ucCommentString,ucCommentCharacter,ucNumber,ucTodo syn match ucCommentStar contained "^\s*\*[^/]"me=e-1 syn match ucCommentStar contained "^\s*\*$" syn match ucLineComment "//.*" contains=ucComment2String,ucCommentCharacter,ucNumber,ucTodo hi link ucCommentString ucString hi link ucComment2String ucString hi link ucCommentCharacter ucCharacter syn cluster ucTop add=ucComment,ucLineComment syn match ucComment "/\*\*/" syn match ucSpecialError contained "\\." syn match ucSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" syn region ucString start=+"+ end=+"+ contains=ucSpecialChar,ucSpecialError syn match ucStringError +"\([^"\\]\|\\.\)*$+ syn match ucCharacter "'[^']*'" contains=ucSpecialChar,ucSpecialCharError syn match ucCharacter "'\\''" contains=ucSpecialChar syn match ucCharacter "'[^\\]'" syn match ucNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" syn match ucNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" syn match ucNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match ucNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" syn match ucSpecial "\\u\d\{4\}" syn cluster ucTop add=ucString,ucCharacter,ucNumber,ucSpecial,ucStringError syn region ucParen transparent start="(" end=")" contains=@ucTop,ucParen syn match ucParenError ")" hi link ucParenError ucError if !exists("uc_minlines") let uc_minlines = 10 endif exec "syn sync ccomment ucComment minlines=" . uc_minlines hi def link ucFuncDef Conditional hi def link ucEventDef Conditional hi def link ucBraces Function hi def link ucBranch Conditional hi def link ucLabel Label hi def link ucUserLabel Label hi def link ucConditional Conditional hi def link ucRepeat Repeat hi def link ucStorageClass StorageClass hi def link ucMethodDecl ucStorageClass hi def link ucClassDecl ucStorageClass hi def link ucScopeDecl ucStorageClass hi def link ucBoolean Boolean hi def link ucSpecial Special hi def link ucSpecialError Error hi def link ucSpecialCharError Error hi def link ucString String hi def link ucCharacter Character hi def link ucSpecialChar SpecialChar hi def link ucNumber Number hi def link ucError Error hi def link ucStringError Error hi def link ucStatement Statement hi def link ucOperator Operator hi def link ucOverLoaded Operator hi def link ucComment Comment hi def link ucDocComment Comment hi def link ucLineComment Comment hi def link ucConstant ucBoolean hi def link ucTypedef Typedef hi def link ucTodo Todo hi def link ucCommentTitle SpecialComment hi def link ucDocTags Special hi def link ucDocParam Function hi def link ucCommentStar ucComment hi def link ucType Type hi def link ucExternal Include hi def link ucClassKeys Conditional hi def link ucClassLabel Conditional hi def link htmlComment Special hi def link htmlCommentPart Special let b:current_syntax = "uc" if main_syntax == 'uc' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword udevconfTodo contained TODO FIXME XXX NOTE syn region udevconfComment display oneline start='^\s*#' end='$' \ contains=udevconfTodo,@Spell syn match udevconfBegin display '^' \ nextgroup=udevconfVariable,udevconfComment \ skipwhite syn keyword udevconfVariable contained udev_root udev_db udev_rules udev_log \ nextgroup=udevconfVariableEq syn match udevconfVariableEq contained '[[:space:]=]' \ nextgroup=udevconfString skipwhite syn region udevconfString contained display oneline start=+"+ end=+"+ hi def link udevconfTodo Todo hi def link udevconfComment Comment hi def link udevconfVariable Identifier hi def link udevconfVariableEq Operator hi def link udevconfString String let b:current_syntax = "udevconf" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match udevpermBegin display '^' nextgroup=udevpermDevice syn match udevpermDevice contained display '[^:]\+' \ contains=udevpermPattern \ nextgroup=udevpermUserColon syn match udevpermPattern contained '[*?]' syn region udevpermPattern contained start='\[!\=' end='\]' \ contains=udevpermPatRange syn match udevpermPatRange contained '[^[-]-[^]-]' syn match udevpermUserColon contained display ':' \ nextgroup=udevpermUser syn match udevpermUser contained display '[^:]\+' \ nextgroup=udevpermGroupColon syn match udevpermGroupColon contained display ':' \ nextgroup=udevpermGroup syn match udevpermGroup contained display '[^:]\+' \ nextgroup=udevpermPermColon syn match udevpermPermColon contained display ':' \ nextgroup=udevpermPerm syn match udevpermPerm contained display '\<0\=\o\+\>' \ contains=udevpermOctalZero syn match udevpermOctalZero contained display '\<0' syn match udevpermOctalError contained display '\<0\o*[89]\d*\>' syn keyword udevpermTodo contained TODO FIXME XXX NOTE syn region udevpermComment display oneline start='^\s*#' end='$' \ contains=udevpermTodo,@Spell hi def link udevpermTodo Todo hi def link udevpermComment Comment hi def link udevpermDevice String hi def link udevpermPattern SpecialChar hi def link udevpermPatRange udevpermPattern hi def link udevpermColon Normal hi def link udevpermUserColon udevpermColon hi def link udevpermUser Identifier hi def link udevpermGroupColon udevpermColon hi def link udevpermGroup Type hi def link udevpermPermColon udevpermColon hi def link udevpermPerm Number hi def link udevpermOctalZero PreProc hi def link udevpermOctalError Error let b:current_syntax = "udevperm" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword udevrulesTodo contained TODO FIXME XXX NOTE syn region udevrulesComment display oneline start='^\s*#' end='$' \ contains=udevrulesTodo,@Spell syn keyword udevrulesRuleKey ACTION DEVPATH KERNEL SUBSYSTEM KERNELS \ SUBSYSTEMS DRIVERS RESULT \ nextgroup=udevrulesRuleTest \ skipwhite syn keyword udevrulesRuleKey ATTRS nextgroup=udevrulesAttrsPath syn region udevrulesAttrsPath display transparent \ matchgroup=udevrulesDelimiter start='{' \ matchgroup=udevrulesDelimiter end='}' \ contains=udevrulesPath \ nextgroup=udevrulesRuleTest \ skipwhite syn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar syn region udevrulesEnvVar display transparent \ matchgroup=udevrulesDelimiter start='{' \ matchgroup=udevrulesDelimiter end='}' \ contains=udevrulesVariable \ nextgroup=udevrulesRuleTest,udevrulesRuleEq \ skipwhite syn keyword udevrulesRuleKey PROGRAM RESULT \ nextgroup=udevrulesEStringTest,udevrulesEStringEq \ skipwhite syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP RUN \ nextgroup=udevrulesEStringEq \ skipwhite syn keyword udevrulesAssignKey MODE LABEL GOTO WAIT_FOR_SYSFS \ nextgroup=udevrulesRuleEq \ skipwhite syn keyword udevrulesAssignKey ATTR nextgroup=udevrulesAttrsPath syn region udevrulesAttrKey display transparent \ matchgroup=udevrulesDelimiter start='{' \ matchgroup=udevrulesDelimiter end='}' \ contains=udevrulesKey \ nextgroup=udevrulesRuleEq \ skipwhite syn keyword udevrulesAssignKey IMPORT nextgroup=udevrulesImport, \ udevrulesEStringEq \ skipwhite syn region udevrulesImport display transparent \ matchgroup=udevrulesDelimiter start='{' \ matchgroup=udevrulesDelimiter end='}' \ contains=udevrulesImportType \ nextgroup=udevrulesEStringEq \ skipwhite syn keyword udevrulesImportType program file parent syn keyword udevrulesAssignKey OPTIONS \ nextgroup=udevrulesOptionsEq syn match udevrulesPath contained display '[^}]\+' syn match udevrulesVariable contained display '[^}]\+' syn match udevrulesRuleTest contained display '[=!:]=' \ nextgroup=udevrulesString skipwhite syn match udevrulesEStringTest contained display '[=!+:]=' \ nextgroup=udevrulesEString skipwhite syn match udevrulesRuleEq contained display '+=\|=\ze[^=]' \ nextgroup=udevrulesString skipwhite syn match udevrulesEStringEq contained '+=\|=\ze[^=]' \ nextgroup=udevrulesEString skipwhite syn match udevrulesOptionsEq contained '+=\|=\ze[^=]' \ nextgroup=udevrulesOptions skipwhite syn region udevrulesEString contained display oneline start=+"+ end=+"+ \ contains=udevrulesStrEscapes,udevrulesStrVars syn match udevrulesStrEscapes contained '%[knpbMmcPrN%]' syn region udevrulesStrEscapes contained start='%c{' end='}' \ contains=udevrulesStrNumber syn region udevrulesStrEscapes contained start='%s{' end='}' \ contains=udevrulesPath syn region udevrulesStrEscapes contained start='%E{' end='}' \ contains=udevrulesVariable syn match udevrulesStrNumber contained '\d\++\=' syn match udevrulesStrVars contained display '$\%(kernel\|number\|devpath\|id\|major\|minor\|result\|parent\|root\|tempnode\)\>' syn region udevrulesStrVars contained start='$attr{' end='}' \ contains=udevrulesPath syn region udevrulesStrVars contained start='$env{' end='}' \ contains=udevrulesVariable syn match udevrulesStrVars contained display '\$\$' syn region udevrulesString contained display oneline start=+"+ end=+"+ \ contains=udevrulesPattern syn match udevrulesPattern contained '[*?]' syn region udevrulesPattern contained start='\[!\=' end='\]' \ contains=udevrulesPatRange syn match udevrulesPatRange contained '[^[-]-[^]-]' syn region udevrulesOptions contained display oneline start=+"+ end=+"+ \ contains=udevrulesOption,udevrulesOptionSep syn keyword udevrulesOption contained last_rule ignore_device ignore_remove \ all_partitions syn match udevrulesOptionSep contained ',' hi def link udevrulesTodo Todo hi def link udevrulesComment Comment hi def link udevrulesRuleKey Keyword hi def link udevrulesDelimiter Delimiter hi def link udevrulesAssignKey Identifier hi def link udevrulesPath Identifier hi def link udevrulesVariable Identifier hi def link udevrulesAttrKey Identifier hi def link udevrulesEq Normal hi def link udevrulesRuleEq udevrulesEq hi def link udevrulesEStringEq udevrulesEq hi def link udevrulesOptionsEq udevrulesEq hi def link udevrulesEString udevrulesString hi def link udevrulesStrEscapes SpecialChar hi def link udevrulesStrNumber Number hi def link udevrulesStrVars Identifier hi def link udevrulesString String hi def link udevrulesPattern SpecialChar hi def link udevrulesPatRange SpecialChar hi def link udevrulesOptions udevrulesString hi def link udevrulesOption Type hi def link udevrulesOptionSep Delimiter hi def link udevrulesImportType Type let b:current_syntax = "udevrules" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword uilType arguments callbacks color syn keyword uilType compound_string controls end syn keyword uilType exported file include syn keyword uilType module object procedure syn keyword uilType user_defined xbitmapfile syn keyword uilTodo contained TODO syn match uilSpecial contained "\\\d\d\d\|\\." syn region uilString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell,uilSpecial syn match uilCharacter "'[^\\]'" syn region uilString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@Spell,uilSpecial syn match uilSpecialCharacter "'\\.'" syn match uilSpecialStatement "Xm[^ =(){}:;]*" syn match uilSpecialFunction "MrmNcreateCallback" syn match uilRessource "XmN[^ =(){}:;]*" syn match uilNumber "-\=\<\d*\.\=\d\+\(e\=f\=\|[uU]\=[lL]\=\)\>" syn match uilNumber "0[xX]\x\+\>" syn region uilComment start="/\*" end="\*/" contains=@Spell,uilTodo syn match uilComment "!.*" contains=@Spell,uilTodo syn match uilCommentError "\*/" syn region uilPreCondit start="^#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=uilComment,uilString,uilCharacter,uilNumber,uilCommentError syn match uilIncluded contained "<[^>]*>" syn match uilInclude "^#\s*include\s\+." contains=uilString,uilIncluded syn match uilLineSkip "\\$" syn region uilDefine start="^#\s*\(define\>\|undef\>\)" end="$" contains=uilLineSkip,uilComment,uilString,uilCharacter,uilNumber,uilCommentError syn sync ccomment uilComment hi def link uilCharacter uilString hi def link uilSpecialCharacter uilSpecial hi def link uilNumber uilString hi def link uilCommentError uilError hi def link uilInclude uilPreCondit hi def link uilDefine uilPreCondit hi def link uilIncluded uilString hi def link uilSpecialFunction uilRessource hi def link uilRessource Identifier hi def link uilSpecialStatement Keyword hi def link uilError Error hi def link uilPreCondit PreCondit hi def link uilType Type hi def link uilString String hi def link uilComment Comment hi def link uilSpecial Special hi def link uilTodo Todo let b:current_syntax = "uil" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword updatedbTodo contained TODO FIXME XXX NOTE syn region updatedbComment display oneline start='^\s*#' end='$' \ contains=updatedbTodo,@Spell syn match updatedbBegin display '^' \ nextgroup=updatedbName,updatedbComment skipwhite syn keyword updatedbName contained \ PRUNEFS \ PRUNENAMES \ PRUNEPATHS \ PRUNE_BIND_MOUNTS \ nextgroup=updatedbNameEq syn match updatedbNameEq contained display '=' nextgroup=updatedbValue syn region updatedbValue contained display oneline start='"' end='"' hi def link updatedbTodo Todo hi def link updatedbComment Comment hi def link updatedbName Identifier hi def link updatedbNameEq Operator hi def link updatedbValue String let b:current_syntax = "updatedb" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let is_bash = 1 syn include @Shell syntax/sh.vim syn case match setlocal iskeyword+=- syn match upstartComment /#.*$/ contains=upstartTodo syn keyword upstartTodo TODO FIXME contained syn region upstartString start=/"/ end=/"/ skip=/\\"/ syn region upstartScript matchgroup=upstartStatement start="script" end="end script" contains=@upstartShellCluster syn cluster upstartShellCluster contains=@Shell syn keyword upstartStatement description author version instance expect syn keyword upstartStatement pid kill normal console env exit export syn keyword upstartStatement umask nice oom chroot chdir exec syn keyword upstartStatement limit syn keyword upstartStatement emits syn keyword upstartStatement on start stop syn keyword upstartStatement respawn service instance manual debug task syn keyword upstartOption pre-start post-start pre-stop post-stop syn keyword upstartOption timeout syn keyword upstartOption never syn keyword upstartOption output owner syn keyword upstartOption fork daemon syn keyword upstartOption unlimited syn keyword upstartOption and or syn keyword upstartEvent runlevel syn keyword upstartEvent started syn keyword upstartEvent starting syn keyword upstartEvent startup syn keyword upstartEvent stopped syn keyword upstartEvent stopping syn keyword upstartEvent control-alt-delete syn keyword upstartEvent keyboard-request syn keyword upstartEvent power-status-changed syn keyword upstartEvent dbus-activation syn keyword upstartEvent desktop-session-start syn keyword upstartEvent login-session-start syn keyword upstartEvent all-swaps syn keyword upstartEvent filesystem syn keyword upstartEvent mounted syn keyword upstartEvent mounting syn keyword upstartEvent local-filesystems syn keyword upstartEvent remote-filesystems syn keyword upstartEvent virtual-filesystems syn keyword upstartEvent mounted-remote-filesystems syn match upstartEvent /\<\i\{-1,}-device-\(added\|removed\|up\|down\)/ syn keyword upstartEvent socket hi def link upstartComment Comment hi def link upstartTodo Todo hi def link upstartString String hi def link upstartStatement Statement hi def link upstartOption Type hi def link upstartEvent Define let b:current_syntax = "upstart" if exists("b:current_syntax") finish endif syn keyword upstreamdat_Parameter ACCEPTPCREMOTE syn keyword upstreamdat_Parameter ACCEPTREMOTE syn keyword upstreamdat_Parameter ACTION syn keyword upstreamdat_Parameter ACTIVATEONENTRY syn keyword upstreamdat_Parameter ARCHIVEBIT syn keyword upstreamdat_Parameter ARCHIVEBIT syn keyword upstreamdat_Parameter ASCTOEBC syn keyword upstreamdat_Parameter ASRBACKUP syn keyword upstreamdat_Parameter ATTENDED syn keyword upstreamdat_Parameter AUTHORITATIVE syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE syn keyword upstreamdat_Parameter BACKUPPROFILE syn keyword upstreamdat_Parameter BACKUPPROFILE2 syn keyword upstreamdat_Parameter BACKUPREPARSEFILES syn keyword upstreamdat_Parameter BACKUPREPARSEFILES syn keyword upstreamdat_Parameter BACKUPVERIFY syn keyword upstreamdat_Parameter BLANKTRUNC syn keyword upstreamdat_Parameter CALCDASDSIZE syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS syn keyword upstreamdat_Parameter COMPRESSLEVEL syn keyword upstreamdat_Parameter CONTROLFILE syn keyword upstreamdat_Parameter DASDOVERRIDE syn keyword upstreamdat_Parameter DATELIMIT syn keyword upstreamdat_Parameter DATELIMIT syn keyword upstreamdat_Parameter DAYSOLD syn keyword upstreamdat_Parameter DAYSOLD syn keyword upstreamdat_Parameter DELETED syn keyword upstreamdat_Parameter DELETED syn keyword upstreamdat_Parameter DELETEPROMPTS syn keyword upstreamdat_Parameter DELETEPROMPTS syn keyword upstreamdat_Parameter DESTINATION syn keyword upstreamdat_Parameter DESTINATION syn keyword upstreamdat_Parameter DIRDELETE syn keyword upstreamdat_Parameter DIRECTORVMC syn keyword upstreamdat_Parameter DIRONLYRESTOREOK syn keyword upstreamdat_Parameter DIRSONLY syn keyword upstreamdat_Parameter DIRSONLY syn keyword upstreamdat_Parameter DISASTERRECOVERY syn keyword upstreamdat_Parameter DISPLAY syn keyword upstreamdat_Parameter DRIVEALIAS syn keyword upstreamdat_Parameter DRIVEALIAS syn keyword upstreamdat_Parameter DUALCOPY syn keyword upstreamdat_Parameter DUPDAYS syn keyword upstreamdat_Parameter DUPLICATE syn keyword upstreamdat_Parameter EBCTOASC syn keyword upstreamdat_Parameter ENCRYPT syn keyword upstreamdat_Parameter ENCRYPTLEVEL syn keyword upstreamdat_Parameter EXCLUDELISTNAME syn keyword upstreamdat_Parameter FAILBACKUPONERROR syn keyword upstreamdat_Parameter FAILBACKUPONERROR syn keyword upstreamdat_Parameter FAILIFNOFILES syn keyword upstreamdat_Parameter FAILIFNOFILES syn keyword upstreamdat_Parameter FAILIFSKIP syn keyword upstreamdat_Parameter FAILJOB syn keyword upstreamdat_Parameter FAILRESTOREONERROR syn keyword upstreamdat_Parameter FAILRESTOREONERROR syn keyword upstreamdat_Parameter FILEDATE syn keyword upstreamdat_Parameter FILEDATE syn keyword upstreamdat_Parameter FILEDELETE syn keyword upstreamdat_Parameter FILEDELETE syn keyword upstreamdat_Parameter FILES syn keyword upstreamdat_Parameter FILES syn keyword upstreamdat_Parameter FILESOPENFORUPDAT syn keyword upstreamdat_Parameter FILESOPENFORUPDAT syn keyword upstreamdat_Parameter FILETRANSFER syn keyword upstreamdat_Parameter GETREMOTEFILES syn keyword upstreamdat_Parameter HARDLINKDB syn keyword upstreamdat_Parameter HARDLINKS syn keyword upstreamdat_Parameter HARDLINKS syn keyword upstreamdat_Parameter HIDDENFILES syn keyword upstreamdat_Parameter HIDDENFILES syn keyword upstreamdat_Parameter HOLDTAPE syn keyword upstreamdat_Parameter HOLDUSERDIRS syn keyword upstreamdat_Parameter HOSTFILENAME syn keyword upstreamdat_Parameter HOSTRECORD syn keyword upstreamdat_Parameter HOSTSORT syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE syn keyword upstreamdat_Parameter INCRDB syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT syn keyword upstreamdat_Parameter INCRDBDELETEDFILES syn keyword upstreamdat_Parameter INCREMENTAL syn keyword upstreamdat_Parameter INCREMENTAL syn keyword upstreamdat_Parameter INQOPTIONS syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT syn keyword upstreamdat_Parameter JOBOPTIONS syn keyword upstreamdat_Parameter JOBRETURNCODEMAP syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT syn keyword upstreamdat_Parameter KEEPALIVE syn keyword upstreamdat_Parameter LANINTERFACE syn keyword upstreamdat_Parameter LANWSNAME syn keyword upstreamdat_Parameter LANWSPASSWORD syn keyword upstreamdat_Parameter LASTACCESS syn keyword upstreamdat_Parameter LASTACCESS syn keyword upstreamdat_Parameter LATESTDATE syn keyword upstreamdat_Parameter LATESTDATE syn keyword upstreamdat_Parameter LATESTTIME syn keyword upstreamdat_Parameter LATESTTIME syn keyword upstreamdat_Parameter LATESTVERSION syn keyword upstreamdat_Parameter LINEBLOCK syn keyword upstreamdat_Parameter LINETRUNC syn keyword upstreamdat_Parameter LISTENFORREMOTE syn keyword upstreamdat_Parameter LOCALBACKUP syn keyword upstreamdat_Parameter LOCALBACKUPDIR syn keyword upstreamdat_Parameter LOCALBACKUPMAX syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE syn keyword upstreamdat_Parameter LOCALPARAMETERS syn keyword upstreamdat_Parameter LOCALPASSWORD syn keyword upstreamdat_Parameter LOCALRESTORE syn keyword upstreamdat_Parameter LOCALUSER syn keyword upstreamdat_Parameter LOFS syn keyword upstreamdat_Parameter LOGNONFATAL syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL syn keyword upstreamdat_Parameter MAXBACKUPTIME syn keyword upstreamdat_Parameter MAXDUPS syn keyword upstreamdat_Parameter MAXFILENAMESIZE syn keyword upstreamdat_Parameter MAXKFILESIZE syn keyword upstreamdat_Parameter MAXLOGDAYS syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL syn keyword upstreamdat_Parameter MAXRESTORETIME syn keyword upstreamdat_Parameter MAXRETRY syn keyword upstreamdat_Parameter MAXRPTDAYS syn keyword upstreamdat_Parameter MERGE syn keyword upstreamdat_Parameter MIGRBITS syn keyword upstreamdat_Parameter MIGRBITS syn keyword upstreamdat_Parameter MINCOMPRESSSIZE syn keyword upstreamdat_Parameter MINIMIZE syn keyword upstreamdat_Parameter MODIFYFILE syn keyword upstreamdat_Parameter MOUNTPOINTS syn keyword upstreamdat_Parameter MOUNTPOINTS syn keyword upstreamdat_Parameter NDS syn keyword upstreamdat_Parameter NDS syn keyword upstreamdat_Parameter NEWFILECOMPARE syn keyword upstreamdat_Parameter NFSBELOW syn keyword upstreamdat_Parameter NODATAOK syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL syn keyword upstreamdat_Parameter NONFILEDATABITMAP syn keyword upstreamdat_Parameter NONFILEDATABITMAP syn keyword upstreamdat_Parameter NOPOINTRESTORE syn keyword upstreamdat_Parameter NOSPECINHERITANCE syn keyword upstreamdat_Parameter NOTIFYEVENTS syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT syn keyword upstreamdat_Parameter NOTIFYTARGETS syn keyword upstreamdat_Parameter NOUIDGIDNAMES syn keyword upstreamdat_Parameter NOUIDGIDNAMES syn keyword upstreamdat_Parameter NOVELLMIGRATE syn keyword upstreamdat_Parameter NOVELLMIGRATE syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT syn keyword upstreamdat_Parameter NOVELLPROFILE syn keyword upstreamdat_Parameter NOVELLRECALL syn keyword upstreamdat_Parameter NTFSADDPERMISSION syn keyword upstreamdat_Parameter NTFSADDPERMISSION syn keyword upstreamdat_Parameter NTREGRESTORE syn keyword upstreamdat_Parameter OSTYPE syn keyword upstreamdat_Parameter OUTPORT syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE syn keyword upstreamdat_Parameter PACKRECSIZE syn keyword upstreamdat_Parameter PARAMETER syn keyword upstreamdat_Parameter PASSWORD syn keyword upstreamdat_Parameter PATHNAME syn keyword upstreamdat_Parameter PATHNAME syn keyword upstreamdat_Parameter PERFORMBITMAP syn keyword upstreamdat_Parameter PERFORMNUMRECORDS syn keyword upstreamdat_Parameter PERFORMRECORDSIZE syn keyword upstreamdat_Parameter PLUGIN syn keyword upstreamdat_Parameter PLUGIN syn keyword upstreamdat_Parameter PLUGINPARAMETERS syn keyword upstreamdat_Parameter PLUGINPARAMETERS syn keyword upstreamdat_Parameter POSTJOB syn keyword upstreamdat_Parameter PREJOB syn keyword upstreamdat_Parameter PRTYCLASS syn keyword upstreamdat_Parameter PRTYLEVEL syn keyword upstreamdat_Parameter RECALLCLEANUP syn keyword upstreamdat_Parameter RECALLOFFLINEFILES syn keyword upstreamdat_Parameter RECALLOFFLINEFILES syn keyword upstreamdat_Parameter RECORDSIZE syn keyword upstreamdat_Parameter REMOTEADDR syn keyword upstreamdat_Parameter REMOTEAPPLPREF syn keyword upstreamdat_Parameter REMOTEAPPLRETRY syn keyword upstreamdat_Parameter REMOTECONNECTTYPE syn keyword upstreamdat_Parameter REMOTEFLAGS syn keyword upstreamdat_Parameter REMOTEIPADAPTER syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS syn keyword upstreamdat_Parameter REMOTELOGMODE syn keyword upstreamdat_Parameter REMOTELUNAME syn keyword upstreamdat_Parameter REMOTEMAXRETRIES syn keyword upstreamdat_Parameter REMOTEMODENAME syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE syn keyword upstreamdat_Parameter REMOTEPORT syn keyword upstreamdat_Parameter REMOTEREQUEST syn keyword upstreamdat_Parameter REMOTERESTART syn keyword upstreamdat_Parameter REMOTEROUTE syn keyword upstreamdat_Parameter REMOTETARGETNAME syn keyword upstreamdat_Parameter REMOTETCP syn keyword upstreamdat_Parameter REMOTETIMEOUT syn keyword upstreamdat_Parameter REMOTETMAXRETRY syn keyword upstreamdat_Parameter REMOTETPN syn keyword upstreamdat_Parameter REMOTEUSAPPL syn keyword upstreamdat_Parameter REMOTEVERIFY syn keyword upstreamdat_Parameter REMOTEWTOCOMP syn keyword upstreamdat_Parameter REPORTNAME syn keyword upstreamdat_Parameter REPORTOPTIONS syn keyword upstreamdat_Parameter RESTARTLASTFILE syn keyword upstreamdat_Parameter RESTART syn keyword upstreamdat_Parameter RESTARTTYPE syn keyword upstreamdat_Parameter RESTARTVERSIONDATE syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT syn keyword upstreamdat_Parameter RESTORECHECKPOINT syn keyword upstreamdat_Parameter RESTOREDATELIMIT syn keyword upstreamdat_Parameter RESTOREDATELIMIT syn keyword upstreamdat_Parameter RESTOREFILEFAIL syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS syn keyword upstreamdat_Parameter RESTORESEGMENTS syn keyword upstreamdat_Parameter RESTORESEGMENTS syn keyword upstreamdat_Parameter RESTORETODIFFFS syn keyword upstreamdat_Parameter RETAIN syn keyword upstreamdat_Parameter RETAIN syn keyword upstreamdat_Parameter ROOTENTRY syn keyword upstreamdat_Parameter ROOTENTRY syn keyword upstreamdat_Parameter SAN syn keyword upstreamdat_Parameter SCHEDULENAME syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE syn keyword upstreamdat_Parameter SEGMENTSIZE syn keyword upstreamdat_Parameter SEGMENTSIZE syn keyword upstreamdat_Parameter SENDHOSTDETAILS syn keyword upstreamdat_Parameter SINGLEFS syn keyword upstreamdat_Parameter SIZETRC syn keyword upstreamdat_Parameter SKIP syn keyword upstreamdat_Parameter SKIPBACKUPSCAN syn keyword upstreamdat_Parameter SKIPOLD syn keyword upstreamdat_Parameter SKIPOLD syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME syn keyword upstreamdat_Parameter SMSTSA syn keyword upstreamdat_Parameter SOLO syn keyword upstreamdat_Parameter SORTBACKUP syn keyword upstreamdat_Parameter SOSDISK syn keyword upstreamdat_Parameter SOSDISK syn keyword upstreamdat_Parameter SOSTIMESTAMP syn keyword upstreamdat_Parameter SOSTIMESTAMP syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH syn keyword upstreamdat_Parameter SPECNUMBER syn keyword upstreamdat_Parameter SPECNUMBER syn keyword upstreamdat_Parameter SPECTYPE syn keyword upstreamdat_Parameter SPECTYPE syn keyword upstreamdat_Parameter STARTTIME syn keyword upstreamdat_Parameter STORAGETYPE syn keyword upstreamdat_Parameter SUBDIRECTORIES syn keyword upstreamdat_Parameter SUBDIRECTORIES syn keyword upstreamdat_Parameter SWITCHTOTAPEMB syn keyword upstreamdat_Parameter TCPADDRESS syn keyword upstreamdat_Parameter TCPTIMEOUT syn keyword upstreamdat_Parameter TIMEOVERRIDE syn keyword upstreamdat_Parameter TRACE syn keyword upstreamdat_Parameter TRANSLATE syn keyword upstreamdat_Parameter ULTRACOMP syn keyword upstreamdat_Parameter ULTREG syn keyword upstreamdat_Parameter ULTUPD syn keyword upstreamdat_Parameter UNCMACHINEALIAS syn keyword upstreamdat_Parameter UNCMACHINEALIAS syn keyword upstreamdat_Parameter USEALEBRA syn keyword upstreamdat_Parameter USECONTROLFILE syn keyword upstreamdat_Parameter USEGID syn keyword upstreamdat_Parameter USERID syn keyword upstreamdat_Parameter USEUID syn keyword upstreamdat_Parameter USNOUIDGIDERRORS syn keyword upstreamdat_Parameter UTF8 syn keyword upstreamdat_Parameter VAULTNUMBER syn keyword upstreamdat_Parameter VERSIONDATE syn keyword upstreamdat_Parameter WRITESPARSE syn keyword upstreamdat_Parameter XFERECORDSIZE syn keyword upstreamdat_Parameter XFERRECSEP syn keyword upstreamdat_Parameter XFERRECUSECR syn match upstreamdat_Filespec /file spec\c \d\{1,3}.*/ syn match upstreamdat_Comment /^#.*/ hi def link upstreamdat_Parameter Type hi def link upstreamdat_Comment Comment let b:current_syntax = "upstreamdat" if exists("b:current_syntax") finish endif syn match upstreaminstalllog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ syn match upstreaminstalllog_MsgD /Msg #MSI\d\{4,5}D/ syn match upstreaminstalllog_MsgE /Msg #MSI\d\{4,5}E/ syn match upstreaminstalllog_MsgI /Msg #MSI\d\{4,5}I/ syn match upstreaminstalllog_MsgW /Msg #MSI\d\{4,5}W/ syn match upstreaminstalllog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ hi def link upstreaminstalllog_Date Underlined hi def link upstreaminstalllog_MsgD Type hi def link upstreaminstalllog_MsgE Error hi def link upstreaminstalllog_MsgW Constant hi def link upstreaminstalllog_IPaddr Identifier let b:current_syntax = "upstreaminstalllog" if exists("b:current_syntax") finish endif syn match upstreamlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ syn match upstreamlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=upstreamlog_Process skipwhite syn match upstreamlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=upstreamlog_Process skipwhite syn match upstreamlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=upstreamlog_Process skipwhite syn match upstreamlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=upstreamlog_Process skipwhite syn region upstreamlog_Process start="(" end=")" contained syn match upstreamlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match upstreamlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Now running profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /in profile set \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Profileset=\zs\S\{1,8}\ze,/ syn match upstreamlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/ syn match upstreamlog_Profile /Profile name \zs\"\S\{1,8}\"/ syn match upstreamlog_Profile / Profile: \zs\S\{1,8}/ syn match upstreamlog_Profile / Profile: \zs\S\{1,8}\ze, / syn match upstreamlog_Profile /, profile: \zs\S\{1,8}\ze,/ syn match upstreamlog_Profile /found Profile: \zs\S\{1,8}\ze,/ syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Full of \zs\S\{1,8}\ze$/ syn match upstreamlog_Profile /Incr. of \zs\S\{1,8}\ze$/ syn match upstreamlog_Profile /Profile=\zs\S\{1,8}\ze,/ syn region upstreamlog_Target start="Computer: \zs" end="\ze[\]\)]" syn region upstreamlog_Target start="Computer name \zs\"" end="\"\ze" syn region upstreamlog_Target start="request to registered name \zs" end=" " hi def link upstreamlog_Date Underlined hi def link upstreamlog_MsgD Type hi def link upstreamlog_MsgE Error hi def link upstreamlog_MsgW Constant hi def link upstreamlog_Process Statement hi def link upstreamlog_IPaddr Identifier hi def link upstreamlog_Profile Identifier hi def link upstreamlog_Target Identifier let b:current_syntax = "upstreamlog" if exists("b:current_syntax") finish endif setlocal foldmethod=syntax syn keyword upstreamdat_Parameter ACCEPTPCREMOTE syn keyword upstreamdat_Parameter ACCEPTREMOTE syn keyword upstreamdat_Parameter ACTION syn keyword upstreamdat_Parameter ACTIVATEONENTRY syn keyword upstreamdat_Parameter ARCHIVEBIT syn keyword upstreamdat_Parameter ARCHIVEBIT syn keyword upstreamdat_Parameter ASCTOEBC syn keyword upstreamdat_Parameter ASRBACKUP syn keyword upstreamdat_Parameter ATTENDED syn keyword upstreamdat_Parameter AUTHORITATIVE syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE syn keyword upstreamdat_Parameter AUTHORITATIVERESTORE syn keyword upstreamdat_Parameter BACKUPPROFILE syn keyword upstreamdat_Parameter BACKUPPROFILE2 syn keyword upstreamdat_Parameter BACKUPREPARSEFILES syn keyword upstreamdat_Parameter BACKUPREPARSEFILES syn keyword upstreamdat_Parameter BACKUPVERIFY syn keyword upstreamdat_Parameter BLANKTRUNC syn keyword upstreamdat_Parameter CALCDASDSIZE syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS syn keyword upstreamdat_Parameter CHANGEDIRATTRIBS syn keyword upstreamdat_Parameter COMPRESSLEVEL syn keyword upstreamdat_Parameter CONTROLFILE syn keyword upstreamdat_Parameter DASDOVERRIDE syn keyword upstreamdat_Parameter DATELIMIT syn keyword upstreamdat_Parameter DATELIMIT syn keyword upstreamdat_Parameter DAYSOLD syn keyword upstreamdat_Parameter DAYSOLD syn keyword upstreamdat_Parameter DELETED syn keyword upstreamdat_Parameter DELETED syn keyword upstreamdat_Parameter DELETEPROMPTS syn keyword upstreamdat_Parameter DELETEPROMPTS syn keyword upstreamdat_Parameter DESTINATION syn keyword upstreamdat_Parameter DESTINATION syn keyword upstreamdat_Parameter DIRDELETE syn keyword upstreamdat_Parameter DIRECTORVMC syn keyword upstreamdat_Parameter DIRONLYRESTOREOK syn keyword upstreamdat_Parameter DIRSONLY syn keyword upstreamdat_Parameter DIRSONLY syn keyword upstreamdat_Parameter DISASTERRECOVERY syn keyword upstreamdat_Parameter DISPLAY syn keyword upstreamdat_Parameter DRIVEALIAS syn keyword upstreamdat_Parameter DRIVEALIAS syn keyword upstreamdat_Parameter DUALCOPY syn keyword upstreamdat_Parameter DUPDAYS syn keyword upstreamdat_Parameter DUPLICATE syn keyword upstreamdat_Parameter EBCTOASC syn keyword upstreamdat_Parameter ENCRYPT syn keyword upstreamdat_Parameter ENCRYPTLEVEL syn keyword upstreamdat_Parameter EXCLUDELISTNAME syn keyword upstreamdat_Parameter FAILBACKUPONERROR syn keyword upstreamdat_Parameter FAILBACKUPONERROR syn keyword upstreamdat_Parameter FAILIFNOFILES syn keyword upstreamdat_Parameter FAILIFNOFILES syn keyword upstreamdat_Parameter FAILIFSKIP syn keyword upstreamdat_Parameter FAILJOB syn keyword upstreamdat_Parameter FAILRESTOREONERROR syn keyword upstreamdat_Parameter FAILRESTOREONERROR syn keyword upstreamdat_Parameter FILEDATE syn keyword upstreamdat_Parameter FILEDATE syn keyword upstreamdat_Parameter FILEDELETE syn keyword upstreamdat_Parameter FILEDELETE syn keyword upstreamdat_Parameter FILES syn keyword upstreamdat_Parameter FILES syn keyword upstreamdat_Parameter FILESOPENFORUPDAT syn keyword upstreamdat_Parameter FILESOPENFORUPDAT syn keyword upstreamdat_Parameter FILETRANSFER syn keyword upstreamdat_Parameter GETREMOTEFILES syn keyword upstreamdat_Parameter HARDLINKDB syn keyword upstreamdat_Parameter HARDLINKS syn keyword upstreamdat_Parameter HARDLINKS syn keyword upstreamdat_Parameter HIDDENFILES syn keyword upstreamdat_Parameter HIDDENFILES syn keyword upstreamdat_Parameter HOLDTAPE syn keyword upstreamdat_Parameter HOLDUSERDIRS syn keyword upstreamdat_Parameter HOSTFILENAME syn keyword upstreamdat_Parameter HOSTRECORD syn keyword upstreamdat_Parameter HOSTSORT syn keyword upstreamdat_Parameter IGNOREPLUGINSFORRESTORE syn keyword upstreamdat_Parameter INCRDB syn keyword upstreamdat_Parameter INCRDBARCHIVEBIT syn keyword upstreamdat_Parameter INCRDBDELETEDFILES syn keyword upstreamdat_Parameter INCREMENTAL syn keyword upstreamdat_Parameter INCREMENTAL syn keyword upstreamdat_Parameter INQOPTIONS syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT syn keyword upstreamdat_Parameter INSTALLWIN2KAGENT syn keyword upstreamdat_Parameter JOBOPTIONS syn keyword upstreamdat_Parameter JOBRETURNCODEMAP syn keyword upstreamdat_Parameter JOBWAITTIMELIMIT syn keyword upstreamdat_Parameter KEEPALIVE syn keyword upstreamdat_Parameter LANINTERFACE syn keyword upstreamdat_Parameter LANWSNAME syn keyword upstreamdat_Parameter LANWSPASSWORD syn keyword upstreamdat_Parameter LASTACCESS syn keyword upstreamdat_Parameter LASTACCESS syn keyword upstreamdat_Parameter LATESTDATE syn keyword upstreamdat_Parameter LATESTDATE syn keyword upstreamdat_Parameter LATESTTIME syn keyword upstreamdat_Parameter LATESTTIME syn keyword upstreamdat_Parameter LATESTVERSION syn keyword upstreamdat_Parameter LINEBLOCK syn keyword upstreamdat_Parameter LINETRUNC syn keyword upstreamdat_Parameter LISTENFORREMOTE syn keyword upstreamdat_Parameter LOCALBACKUP syn keyword upstreamdat_Parameter LOCALBACKUPDIR syn keyword upstreamdat_Parameter LOCALBACKUPMAX syn keyword upstreamdat_Parameter LOCALBACKUPMAXFILESIZE syn keyword upstreamdat_Parameter LOCALBACKUPMAXSIZE syn keyword upstreamdat_Parameter LOCALEXCLUDEFILE syn keyword upstreamdat_Parameter LOCALPARAMETERS syn keyword upstreamdat_Parameter LOCALPASSWORD syn keyword upstreamdat_Parameter LOCALRESTORE syn keyword upstreamdat_Parameter LOCALUSER syn keyword upstreamdat_Parameter LOFS syn keyword upstreamdat_Parameter LOGNONFATAL syn keyword upstreamdat_Parameter MAXBACKUPFILESFAIL syn keyword upstreamdat_Parameter MAXBACKUPTIME syn keyword upstreamdat_Parameter MAXDUPS syn keyword upstreamdat_Parameter MAXFILENAMESIZE syn keyword upstreamdat_Parameter MAXKFILESIZE syn keyword upstreamdat_Parameter MAXLOGDAYS syn keyword upstreamdat_Parameter MAXRESTOREFILESFAIL syn keyword upstreamdat_Parameter MAXRESTORETIME syn keyword upstreamdat_Parameter MAXRETRY syn keyword upstreamdat_Parameter MAXRPTDAYS syn keyword upstreamdat_Parameter MERGE syn keyword upstreamdat_Parameter MIGRBITS syn keyword upstreamdat_Parameter MIGRBITS syn keyword upstreamdat_Parameter MINCOMPRESSSIZE syn keyword upstreamdat_Parameter MINIMIZE syn keyword upstreamdat_Parameter MODIFYFILE syn keyword upstreamdat_Parameter MOUNTPOINTS syn keyword upstreamdat_Parameter MOUNTPOINTS syn keyword upstreamdat_Parameter NDS syn keyword upstreamdat_Parameter NDS syn keyword upstreamdat_Parameter NEWFILECOMPARE syn keyword upstreamdat_Parameter NFSBELOW syn keyword upstreamdat_Parameter NODATAOK syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL syn keyword upstreamdat_Parameter NODIRFORINCREMENTAL syn keyword upstreamdat_Parameter NONFILEDATABITMAP syn keyword upstreamdat_Parameter NONFILEDATABITMAP syn keyword upstreamdat_Parameter NOPOINTRESTORE syn keyword upstreamdat_Parameter NOSPECINHERITANCE syn keyword upstreamdat_Parameter NOTIFYEVENTS syn keyword upstreamdat_Parameter NOTIFYFAILUREATTACHMENT syn keyword upstreamdat_Parameter NOTIFYSUCCESSATTACHMENT syn keyword upstreamdat_Parameter NOTIFYTARGETS syn keyword upstreamdat_Parameter NOUIDGIDNAMES syn keyword upstreamdat_Parameter NOUIDGIDNAMES syn keyword upstreamdat_Parameter NOVELLMIGRATE syn keyword upstreamdat_Parameter NOVELLMIGRATE syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT syn keyword upstreamdat_Parameter NOVELLMIGRATEADDEXT syn keyword upstreamdat_Parameter NOVELLPROFILE syn keyword upstreamdat_Parameter NOVELLRECALL syn keyword upstreamdat_Parameter NTFSADDPERMISSION syn keyword upstreamdat_Parameter NTFSADDPERMISSION syn keyword upstreamdat_Parameter NTREGRESTORE syn keyword upstreamdat_Parameter OSTYPE syn keyword upstreamdat_Parameter OUTPORT syn keyword upstreamdat_Parameter PACKFLUSHAFTERFILE syn keyword upstreamdat_Parameter PACKRECSIZE syn keyword upstreamdat_Parameter PARAMETER syn keyword upstreamdat_Parameter PASSWORD syn keyword upstreamdat_Parameter PATHNAME syn keyword upstreamdat_Parameter PATHNAME syn keyword upstreamdat_Parameter PERFORMBITMAP syn keyword upstreamdat_Parameter PERFORMNUMRECORDS syn keyword upstreamdat_Parameter PERFORMRECORDSIZE syn keyword upstreamdat_Parameter PLUGIN syn keyword upstreamdat_Parameter PLUGIN syn keyword upstreamdat_Parameter PLUGINPARAMETERS syn keyword upstreamdat_Parameter PLUGINPARAMETERS syn keyword upstreamdat_Parameter POSTJOB syn keyword upstreamdat_Parameter PREJOB syn keyword upstreamdat_Parameter PRTYCLASS syn keyword upstreamdat_Parameter PRTYLEVEL syn keyword upstreamdat_Parameter RECALLCLEANUP syn keyword upstreamdat_Parameter RECALLOFFLINEFILES syn keyword upstreamdat_Parameter RECALLOFFLINEFILES syn keyword upstreamdat_Parameter RECORDSIZE syn keyword upstreamdat_Parameter REMOTEADDR syn keyword upstreamdat_Parameter REMOTEAPPLPREF syn keyword upstreamdat_Parameter REMOTEAPPLRETRY syn keyword upstreamdat_Parameter REMOTECONNECTTYPE syn keyword upstreamdat_Parameter REMOTEFLAGS syn keyword upstreamdat_Parameter REMOTEIPADAPTER syn keyword upstreamdat_Parameter REMOTELOCALPARAMETERS syn keyword upstreamdat_Parameter REMOTELOGMODE syn keyword upstreamdat_Parameter REMOTELUNAME syn keyword upstreamdat_Parameter REMOTEMAXRETRIES syn keyword upstreamdat_Parameter REMOTEMODENAME syn keyword upstreamdat_Parameter REMOTEPARAMETERFILE syn keyword upstreamdat_Parameter REMOTEPORT syn keyword upstreamdat_Parameter REMOTEREQUEST syn keyword upstreamdat_Parameter REMOTERESTART syn keyword upstreamdat_Parameter REMOTEROUTE syn keyword upstreamdat_Parameter REMOTETARGETNAME syn keyword upstreamdat_Parameter REMOTETCP syn keyword upstreamdat_Parameter REMOTETIMEOUT syn keyword upstreamdat_Parameter REMOTETMAXRETRY syn keyword upstreamdat_Parameter REMOTETPN syn keyword upstreamdat_Parameter REMOTEUSAPPL syn keyword upstreamdat_Parameter REMOTEVERIFY syn keyword upstreamdat_Parameter REMOTEWTOCOMP syn keyword upstreamdat_Parameter REPORTNAME syn keyword upstreamdat_Parameter REPORTOPTIONS syn keyword upstreamdat_Parameter RESTARTLASTFILE syn keyword upstreamdat_Parameter RESTART syn keyword upstreamdat_Parameter RESTARTTYPE syn keyword upstreamdat_Parameter RESTARTVERSIONDATE syn keyword upstreamdat_Parameter RESTOREARCHIVEBIT syn keyword upstreamdat_Parameter RESTORECHECKPOINT syn keyword upstreamdat_Parameter RESTOREDATELIMIT syn keyword upstreamdat_Parameter RESTOREDATELIMIT syn keyword upstreamdat_Parameter RESTOREFILEFAIL syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS syn keyword upstreamdat_Parameter RESTOREMOUNTPOINTS syn keyword upstreamdat_Parameter RESTORESEGMENTS syn keyword upstreamdat_Parameter RESTORESEGMENTS syn keyword upstreamdat_Parameter RESTORETODIFFFS syn keyword upstreamdat_Parameter RETAIN syn keyword upstreamdat_Parameter RETAIN syn keyword upstreamdat_Parameter ROOTENTRY syn keyword upstreamdat_Parameter ROOTENTRY syn keyword upstreamdat_Parameter SAN syn keyword upstreamdat_Parameter SCHEDULENAME syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE syn keyword upstreamdat_Parameter SEGMENTEDFILESIZE syn keyword upstreamdat_Parameter SEGMENTSIZE syn keyword upstreamdat_Parameter SEGMENTSIZE syn keyword upstreamdat_Parameter SENDHOSTDETAILS syn keyword upstreamdat_Parameter SINGLEFS syn keyword upstreamdat_Parameter SIZETRC syn keyword upstreamdat_Parameter SKIP syn keyword upstreamdat_Parameter SKIPBACKUPSCAN syn keyword upstreamdat_Parameter SKIPOLD syn keyword upstreamdat_Parameter SKIPOLD syn keyword upstreamdat_Parameter SMSTARGETSERVICENAME syn keyword upstreamdat_Parameter SMSTSA syn keyword upstreamdat_Parameter SOLO syn keyword upstreamdat_Parameter SORTBACKUP syn keyword upstreamdat_Parameter SOSDISK syn keyword upstreamdat_Parameter SOSDISK syn keyword upstreamdat_Parameter SOSTIMESTAMP syn keyword upstreamdat_Parameter SOSTIMESTAMP syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH syn keyword upstreamdat_Parameter SOSTIMESTAMPPATH syn keyword upstreamdat_Parameter SPECNUMBER syn keyword upstreamdat_Parameter SPECNUMBER syn keyword upstreamdat_Parameter SPECTYPE syn keyword upstreamdat_Parameter SPECTYPE syn keyword upstreamdat_Parameter STARTTIME syn keyword upstreamdat_Parameter STORAGETYPE syn keyword upstreamdat_Parameter SUBDIRECTORIES syn keyword upstreamdat_Parameter SUBDIRECTORIES syn keyword upstreamdat_Parameter SWITCHTOTAPEMB syn keyword upstreamdat_Parameter TCPADDRESS syn keyword upstreamdat_Parameter TCPTIMEOUT syn keyword upstreamdat_Parameter TIMEOVERRIDE syn keyword upstreamdat_Parameter TRACE syn keyword upstreamdat_Parameter TRANSLATE syn keyword upstreamdat_Parameter ULTRACOMP syn keyword upstreamdat_Parameter ULTREG syn keyword upstreamdat_Parameter ULTUPD syn keyword upstreamdat_Parameter UNCMACHINEALIAS syn keyword upstreamdat_Parameter UNCMACHINEALIAS syn keyword upstreamdat_Parameter USEALEBRA syn keyword upstreamdat_Parameter USECONTROLFILE syn keyword upstreamdat_Parameter USEGID syn keyword upstreamdat_Parameter USERID syn keyword upstreamdat_Parameter USEUID syn keyword upstreamdat_Parameter USNOUIDGIDERRORS syn keyword upstreamdat_Parameter UTF8 syn keyword upstreamdat_Parameter VAULTNUMBER syn keyword upstreamdat_Parameter VERSIONDATE syn keyword upstreamdat_Parameter WRITESPARSE syn keyword upstreamdat_Parameter XFERECORDSIZE syn keyword upstreamdat_Parameter XFERRECSEP syn keyword upstreamdat_Parameter XFERRECUSECR syn match upstreamdat_Filespec /file spec\c \d\{1,3}.*/ syn match upstreamdat_Comment /^#.*/ syn region upstreamdat_Parms start="Current Parameters:" end="End Of Parameters" transparent fold hi def link upstreamdat_Parameter Type hi def link upstreamdat_Comment Comment let b:current_syntax = "upstreamrpt" if exists("b:current_syntax") finish endif syn match usserverlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ syn match usserverlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usserverlog_Process skipwhite syn match usserverlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usserverlog_Process skipwhite syn match usserverlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usserverlog_Process skipwhite syn match usserverlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usserverlog_Process skipwhite syn region usserverlog_Process start="(" end=")" contained syn match usserverlog_IPaddr /\( \|(\)\zs\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match usserverlog_Profile /Using default configuration for profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Now running profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /in profile set \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Migrate disk backup from profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Using profile prefix for profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Add\/update profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Profileset=\zs\S\{1,8}\ze,/ syn match usserverlog_Profile /profileset=\zs\S\{1,8}\ze/ syn match usserverlog_Profile /Vault \(disk\|tape\) backup to vault \d\{1,4} from profile \zs\S\{1,8}\ze/ syn match usserverlog_Profile /Profile name \zs\"\S\{1,8}\"/ syn match usserverlog_Profile / Profile: \zs\S\{1,8}/ syn match usserverlog_Profile / Profile: \zs\S\{1,8}\ze, / syn match usserverlog_Profile /, profile: \zs\S\{1,8}\ze,/ syn match usserverlog_Profile /Expecting Profile: \zs\S\{1,8}\ze,/ syn match usserverlog_Profile /found Profile: \zs\S\{1,8}\ze,/ syn match usserverlog_Profile /Profile \zs\S\{1,8} \zeis a member of group: / syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/ syn match usserverlog_Profile /Full of \zs\S\{1,8}\ze$/ syn match usserverlog_Profile /Incr. of \zs\S\{1,8}\ze$/ syn match usserverlog_Profile /Profile=\zs\S\{1,8}\ze,/ syn region usserverlog_Target start="Computer: \zs" end="\ze[\]\)]" syn region usserverlog_Target start="Computer name \zs\"" end="\"\ze" syn region usserverlog_Target start="Registration add request successful \zs" end="$" syn region usserverlog_Target start="request to registered name \zs" end=" " syn region usserverlog_Target start=", sending to \zs" end="$" hi def link usserverlog_Date Underlined hi def link usserverlog_MsgD Type hi def link usserverlog_MsgE Error hi def link usserverlog_MsgW Constant hi def link usserverlog_Process Statement hi def link usserverlog_IPaddr Identifier hi def link usserverlog_Profile Identifier hi def link usserverlog_Target Identifier let b:current_syntax = "usserverlog" if exists("b:current_syntax") finish endif syn match usw2kagtlog_Date /\u\l\l \u\l\l\s\{1,2}\d\{1,2} \d\d:\d\d:\d\d \d\d\d\d/ syn match usw2kagtlog_MsgD /Msg #\(Agt\|PC\|Srv\)\d\{4,5}D/ nextgroup=usw2kagtlog_Process skipwhite syn match usw2kagtlog_MsgE /Msg #\(Agt\|PC\|Srv\)\d\{4,5}E/ nextgroup=usw2kagtlog_Process skipwhite syn match usw2kagtlog_MsgI /Msg #\(Agt\|PC\|Srv\)\d\{4,5}I/ nextgroup=usw2kagtlog_Process skipwhite syn match usw2kagtlog_MsgW /Msg #\(Agt\|PC\|Srv\)\d\{4,5}W/ nextgroup=usw2kagtlog_Process skipwhite syn region usw2kagtlog_Process start="(" end=")" contained syn region usw2kagtlog_Process start="Starting the processing for a \zs\"" end="\ze client" syn region usw2kagtlog_Process start="Ending the processing for a \zs\"" end="\ze client" syn match usw2kagtlog_IPaddr / \d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ syn match usw2kagtlog_Profile /Profile name \zs\"\S\{1,8}\"/ syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}/ syn match usw2kagtlog_Profile / Profile: \zs\S\{1,8}\ze, / syn match upstreamlog_Profile /Backup Profile: \zs\S\{1,8}\ze Version date/ syn match upstreamlog_Profile /Backup profile: \zs\S\{1,8}\ze Version date/ syn match usw2kagtlog_Profile /Full of \zs\S\{1,8}\ze$/ syn match usw2kagtlog_Profile /Incr. of \zs\S\{1,8}\ze$/ syn match usw2kagtlog_Profile /profile name "\zs\S\{1,8}\ze"/ syn region usw2kagtlog_Target start="Computer: \zs" end="\ze[\]\)]" syn region usw2kagtlog_Target start="Computer name \zs\"" end="\"\ze" syn keyword usw2kagtlog_Agentword opened closed hi def link usw2kagtlog_Date Underlined hi def link usw2kagtlog_MsgD Type hi def link usw2kagtlog_MsgE Error hi def link usw2kagtlog_MsgW Constant hi def link usw2kagtlog_Process Statement hi def link usw2kagtlog_IPaddr Identifier hi def link usw2kagtlog_Profile Identifier hi def link usw2kagtlog_Target Identifier hi def link usw2kagtlog_Agentword Special let b:current_syntax = "usw2kagentlog" if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim setlocal synmaxcol=8000 syn case match syn sync minlines=50 syn match valgrindSpecLine "^[+-]\{2}\d\+[+-]\{2}.*$" syn region valgrindRegion \ start=+^==\z(\d\+\)== \w.*$+ \ skip=+^==\z1==\( \| .*\)$+ \ end=+^+ \ fold \ keepend \ contains=valgrindPidChunk,valgrindLine syn region valgrindPidChunk \ start=+^==\zs+ \ end=+\ze==+ \ contained \ contains=valgrindPid0,valgrindPid1,valgrindPid2,valgrindPid3,valgrindPid4,valgrindPid5,valgrindPid6,valgrindPid7,valgrindPid8,valgrindPid9 \ keepend syn match valgrindPid0 "\d\+0=" contained syn match valgrindPid1 "\d\+1=" contained syn match valgrindPid2 "\d\+2=" contained syn match valgrindPid3 "\d\+3=" contained syn match valgrindPid4 "\d\+4=" contained syn match valgrindPid5 "\d\+5=" contained syn match valgrindPid6 "\d\+6=" contained syn match valgrindPid7 "\d\+7=" contained syn match valgrindPid8 "\d\+8=" contained syn match valgrindPid9 "\d\+9=" contained syn region valgrindLine \ start=+\(^==\d\+== \)\@<=+ \ end=+$+ \ keepend \ contained \ contains=valgrindOptions,valgrindMsg,valgrindLoc syn match valgrindOptions "[ ]\{3}-.*$" contained syn match valgrindMsg "\S.*$" contained \ contains=valgrindError,valgrindNote,valgrindSummary syn match valgrindError "\(Invalid\|\d\+ errors\|.* definitely lost\).*$" contained syn match valgrindNote ".*still reachable.*" contained syn match valgrindSummary ".*SUMMARY:" contained syn match valgrindLoc "\s\+\(by\|at\|Address\).*$" contained \ contains=valgrindAt,valgrindAddr,valgrindFunc,valgrindBin,valgrindSrc syn match valgrindAt "at\s\@=" contained syn match valgrindAddr "\W\zs0x\x\+" contained syn match valgrindFunc ": \zs\h[a-zA-Z0-9_:\[\]()<>&*+\-,=%!|^ ]*\ze([^)]*)$" contained syn match valgrindBin "(\(with\)\=in \zs\S\+)\@=" contained syn match valgrindSrc "(\zs[^)]*:\d\+)\@=" contained hi def link valgrindSpecLine Type hi def link valgrindPid0 Special hi def link valgrindPid1 Comment hi def link valgrindPid2 Type hi def link valgrindPid3 Constant hi def link valgrindPid4 Number hi def link valgrindPid5 Identifier hi def link valgrindPid6 Statement hi def link valgrindPid7 Error hi def link valgrindPid8 LineNr hi def link valgrindPid9 Normal hi def link valgrindOptions Type hi def link valgrindError Special hi def link valgrindNote Comment hi def link valgrindSummary Type hi def link valgrindAt Special hi def link valgrindAddr Number hi def link valgrindFunc Type hi def link valgrindBin Comment hi def link valgrindSrc Statement let b:current_syntax = "valgrind" let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif syn case ignore syn keyword vbConditional If Then ElseIf Else Select Case syn keyword vbOperator AddressOf And ByRef ByVal Eqv Imp In syn keyword vbOperator Is Like Mod Not Or To Xor syn match vbOperator "[()+.,\-/*=&]" syn match vbOperator "[<>]=\=" syn match vbOperator "<>" syn match vbOperator "\s\+_$" syn keyword vbBoolean True False syn keyword vbConst Null Nothing syn keyword vbRepeat Do For ForEach Loop Next syn keyword vbRepeat Step To Until Wend While syn keyword vbEvents AccessKeyPress Activate ActiveRowChanged syn keyword vbEvents AfterAddFile AfterChangeFileName AfterCloseFile syn keyword vbEvents AfterColEdit AfterColUpdate AfterDelete syn keyword vbEvents AfterInsert AfterLabelEdit AfterRemoveFile syn keyword vbEvents AfterUpdate AfterWriteFile AmbientChanged syn keyword vbEvents ApplyChanges Associate AsyncProgress syn keyword vbEvents AsyncReadComplete AsyncReadProgress AxisActivated syn keyword vbEvents AxisLabelActivated AxisLabelSelected syn keyword vbEvents AxisLabelUpdated AxisSelected AxisTitleActivated syn keyword vbEvents AxisTitleSelected AxisTitleUpdated AxisUpdated syn keyword vbEvents BeforeClick BeforeColEdit BeforeColUpdate syn keyword vbEvents BeforeConnect BeforeDelete BeforeInsert syn keyword vbEvents BeforeLabelEdit BeforeLoadFile BeforeUpdate syn keyword vbEvents BeginRequest BeginTrans ButtonClick syn keyword vbEvents ButtonCompleted ButtonDropDown ButtonGotFocus syn keyword vbEvents ButtonLostFocus CallbackKeyDown Change Changed syn keyword vbEvents ChartActivated ChartSelected ChartUpdated Click syn keyword vbEvents Close CloseQuery CloseUp ColEdit ColResize syn keyword vbEvents Collapse ColumnClick CommitTrans Compare syn keyword vbEvents ConfigChageCancelled ConfigChanged syn keyword vbEvents ConfigChangedCancelled Connect ConnectionRequest syn keyword vbEvents CurrentRecordChanged DECommandAdded syn keyword vbEvents DECommandPropertyChanged DECommandRemoved syn keyword vbEvents DEConnectionAdded DEConnectionPropertyChanged syn keyword vbEvents DEConnectionRemoved DataArrival DataChanged syn keyword vbEvents DataUpdated DateClicked DblClick Deactivate syn keyword vbEvents DevModeChange DeviceArrival DeviceOtherEvent syn keyword vbEvents DeviceQueryRemove DeviceQueryRemoveFailed syn keyword vbEvents DeviceRemoveComplete DeviceRemovePending syn keyword vbEvents Disconnect DisplayChanged Dissociate syn keyword vbEvents DoGetNewFileName Done DonePainting DownClick syn keyword vbEvents DragDrop DragOver DropDown EditProperty EditQuery syn keyword vbEvents EndRequest EnterCell EnterFocus ExitFocus Expand syn keyword vbEvents FontChanged FootnoteActivated FootnoteSelected syn keyword vbEvents FootnoteUpdated Format FormatSize GotFocus syn keyword vbEvents HeadClick HeightChanged Hide InfoMessage syn keyword vbEvents IniProperties InitProperties Initialize syn keyword vbEvents ItemActivated ItemAdded ItemCheck ItemClick syn keyword vbEvents ItemReloaded ItemRemoved ItemRenamed syn keyword vbEvents ItemSeletected KeyDown KeyPress KeyUp LeaveCell syn keyword vbEvents LegendActivated LegendSelected LegendUpdated syn keyword vbEvents LinkClose LinkError LinkExecute LinkNotify syn keyword vbEvents LinkOpen Load LostFocus MouseDown MouseMove syn keyword vbEvents MouseUp NodeCheck NodeClick OLECompleteDrag syn keyword vbEvents OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData syn keyword vbEvents OLEStartDrag ObjectEvent ObjectMove OnAddNew syn keyword vbEvents OnComm Paint PanelClick PanelDblClick PathChange syn keyword vbEvents PatternChange PlotActivated PlotSelected syn keyword vbEvents PlotUpdated PointActivated PointLabelActivated syn keyword vbEvents PointLabelSelected PointLabelUpdated PointSelected syn keyword vbEvents PointUpdated PowerQuerySuspend PowerResume syn keyword vbEvents PowerStatusChanged PowerSuspend ProcessTag syn keyword vbEvents ProcessingTimeout QueryChangeConfig QueryClose syn keyword vbEvents QueryComplete QueryCompleted QueryTimeout syn keyword vbEvents QueryUnload ReadProperties RepeatedControlLoaded syn keyword vbEvents RepeatedControlUnloaded Reposition syn keyword vbEvents RequestChangeFileName RequestWriteFile Resize syn keyword vbEvents ResultsChanged RetainedProject RollbackTrans syn keyword vbEvents RowColChange RowCurrencyChange RowResize syn keyword vbEvents RowStatusChanged Scroll SelChange SelectionChanged syn keyword vbEvents SendComplete SendProgress SeriesActivated syn keyword vbEvents SeriesSelected SeriesUpdated SettingChanged Show syn keyword vbEvents SplitChange Start StateChanged StatusUpdate syn keyword vbEvents SysColorsChanged Terminate TimeChanged Timer syn keyword vbEvents TitleActivated TitleSelected TitleUpdated syn keyword vbEvents UnboundAddData UnboundDeleteRow syn keyword vbEvents UnboundGetRelativeBookmark UnboundReadData syn keyword vbEvents UnboundWriteData Unformat Unload UpClick Updated syn keyword vbEvents UserEvent Validate ValidationError syn keyword vbEvents VisibleRecordChanged WillAssociate WillChangeData syn keyword vbEvents WillDissociate WillExecute WillUpdateRows syn keyword vbEvents WriteProperties syn keyword vbFunction Abs Array Asc AscB AscW Atn Avg BOF CBool CByte syn keyword vbFunction CCur CDate CDbl CInt CLng CSng CStr CVDate CVErr syn keyword vbFunction CVar CallByName Cdec Choose Chr ChrB ChrW Command syn keyword vbFunction Cos Count CreateObject CurDir DDB Date DateAdd syn keyword vbFunction DateDiff DatePart DateSerial DateValue Day Dir syn keyword vbFunction DoEvents EOF Environ Error Exp FV FileAttr syn keyword vbFunction FileDateTime FileLen FilterFix Fix Format syn keyword vbFunction FormatCurrency FormatDateTime FormatNumber syn keyword vbFunction FormatPercent FreeFile GetAllStrings GetAttr syn keyword vbFunction GetAutoServerSettings GetObject GetSetting Hex syn keyword vbFunction Hour IIf IMEStatus IPmt InStr Input InputB syn keyword vbFunction InputBox InstrB Int IsArray IsDate IsEmpty IsError syn keyword vbFunction IsMissing IsNull IsNumeric IsObject Join LBound syn keyword vbFunction LCase LOF LTrim Left LeftB Len LenB LoadPicture syn keyword vbFunction LoadResData LoadResPicture LoadResString Loc Log syn keyword vbFunction MIRR Max Mid MidB Min Minute Month MonthName syn keyword vbFunction MsgBox NPV NPer Now Oct PPmt PV Partition Pmt syn keyword vbFunction QBColor RGB RTrim Rate Replace Right RightB Rnd syn keyword vbFunction Round SLN SYD Second Seek Sgn Shell Sin Space Spc syn keyword vbFunction Split Sqr StDev StDevP Str StrComp StrConv syn keyword vbFunction StrReverse String Sum Switch Tab Tan Time syn keyword vbFunction TimeSerial TimeValue Timer Trim TypeName UBound syn keyword vbFunction UCase Val Var VarP VarType Weekday WeekdayName syn keyword vbFunction Year syn keyword vbMethods AboutBox Accept Activate Add AddCustom AddFile syn keyword vbMethods AddFromFile AddFromGuid AddFromString syn keyword vbMethods AddFromTemplate AddItem AddNew AddToAddInToolbar syn keyword vbMethods AddToolboxProgID Append AppendAppendChunk syn keyword vbMethods AppendChunk Arrange Assert AsyncRead BatchUpdate syn keyword vbMethods BeginQueryEdit BeginTrans Bind BuildPath syn keyword vbMethods CanPropertyChange Cancel CancelAsyncRead syn keyword vbMethods CancelBatch CancelUpdate CaptureImage CellText syn keyword vbMethods CellValue Circle Clear ClearFields ClearSel syn keyword vbMethods ClearSelCols ClearStructure Clone Close Cls syn keyword vbMethods ColContaining CollapseAll ColumnSize CommitTrans syn keyword vbMethods CompactDatabase Compose Connect Copy CopyFile syn keyword vbMethods CopyFolder CopyQueryDef Count CreateDatabase syn keyword vbMethods CreateDragImage CreateEmbed CreateField syn keyword vbMethods CreateFolder CreateGroup CreateIndex CreateLink syn keyword vbMethods CreatePreparedStatement CreatePropery CreateQuery syn keyword vbMethods CreateQueryDef CreateRelation CreateTableDef syn keyword vbMethods CreateTextFile CreateToolWindow CreateUser syn keyword vbMethods CreateWorkspace Customize Cut Delete syn keyword vbMethods DeleteColumnLabels DeleteColumns DeleteFile syn keyword vbMethods DeleteFolder DeleteLines DeleteRowLabels syn keyword vbMethods DeleteRows DeselectAll DesignerWindow DoVerb Drag syn keyword vbMethods Draw DriveExists Edit EditCopy EditPaste EndDoc syn keyword vbMethods EnsureVisible EstablishConnection Execute Exists syn keyword vbMethods Expand Export ExportReport ExtractIcon Fetch syn keyword vbMethods FetchVerbs FileExists Files FillCache Find syn keyword vbMethods FindFirst FindItem FindLast FindNext FindPrevious syn keyword vbMethods FolderExists Forward GetAbsolutePathName syn keyword vbMethods GetBaseName GetBookmark GetChunk GetClipString syn keyword vbMethods GetData GetDrive GetDriveName GetFile GetFileName syn keyword vbMethods GetFirstVisible GetFolder GetFormat GetHeader syn keyword vbMethods GetLineFromChar GetNumTicks GetParentFolderName syn keyword vbMethods GetRows GetSelectedPart GetSelection syn keyword vbMethods GetSpecialFolder GetTempName GetText syn keyword vbMethods GetVisibleCount GoBack GoForward Hide HitTest syn keyword vbMethods HoldFields Idle Import InitializeLabels Insert syn keyword vbMethods InsertColumnLabels InsertColumns InsertFile syn keyword vbMethods InsertLines InsertObjDlg InsertRowLabels syn keyword vbMethods InsertRows Item Keys KillDoc Layout Line Lines syn keyword vbMethods LinkExecute LinkPoke LinkRequest LinkSend Listen syn keyword vbMethods LoadFile LoadResData LoadResPicture LoadResString syn keyword vbMethods LogEvent MakeCompileFile MakeCompiledFile syn keyword vbMethods MakeReplica MoreResults Move MoveData MoveFile syn keyword vbMethods MoveFirst MoveFolder MoveLast MoveNext syn keyword vbMethods MovePrevious NavigateTo NewPage NewPassword syn keyword vbMethods NextRecordset OLEDrag OnAddinsUpdate OnConnection syn keyword vbMethods OnDisconnection OnStartupComplete Open syn keyword vbMethods OpenAsTextStream OpenConnection OpenDatabase syn keyword vbMethods OpenQueryDef OpenRecordset OpenResultset OpenURL syn keyword vbMethods Overlay PSet PaintPicture PastSpecialDlg Paste syn keyword vbMethods PeekData Play Point PopulatePartial PopupMenu syn keyword vbMethods Print PrintForm PrintReport PropertyChanged Quit syn keyword vbMethods Raise RandomDataFill RandomFillColumns syn keyword vbMethods RandomFillRows ReFill Read ReadAll ReadFromFile syn keyword vbMethods ReadLine ReadProperty Rebind Refresh RefreshLink syn keyword vbMethods RegisterDatabase ReleaseInstance Reload Remove syn keyword vbMethods RemoveAddInFromToolbar RemoveAll RemoveItem Render syn keyword vbMethods RepairDatabase ReplaceLine Reply ReplyAll Requery syn keyword vbMethods ResetCustom ResetCustomLabel ResolveName syn keyword vbMethods RestoreToolbar Resync Rollback RollbackTrans syn keyword vbMethods RowBookmark RowContaining RowTop Save SaveAs syn keyword vbMethods SaveFile SaveToFile SaveToOle1File SaveToolbar syn keyword vbMethods Scale ScaleX ScaleY Scroll SelPrint SelectAll syn keyword vbMethods SelectPart Send SendData Set SetAutoServerSettings syn keyword vbMethods SetData SetFocus SetOption SetSelection SetSize syn keyword vbMethods SetText SetViewport Show ShowColor ShowFont syn keyword vbMethods ShowHelp ShowOpen ShowPrinter ShowSave syn keyword vbMethods ShowWhatsThis SignOff SignOn Size Skip SkipLine syn keyword vbMethods Span Split SplitContaining StartLabelEdit syn keyword vbMethods StartLogging Stop Synchronize Tag TextHeight syn keyword vbMethods TextWidth ToDefaults Trace TwipsToChartPart syn keyword vbMethods TypeByChartType URLFor Update UpdateControls syn keyword vbMethods UpdateRecord UpdateRow Upto ValidateControls Value syn keyword vbMethods WhatsThisMode Write WriteBlankLines WriteLine syn keyword vbMethods WriteProperty WriteTemplate ZOrder syn keyword vbMethods rdoCreateEnvironment rdoRegisterDataSource syn keyword vbStatement Alias AppActivate As Base Beep Begin Call ChDir syn keyword vbStatement ChDrive Close Const Date Declare DefBool DefByte syn keyword vbStatement DefCur DefDate DefDbl DefDec DefInt DefLng DefObj syn keyword vbStatement DefSng DefStr DefVar Deftype DeleteSetting Dim Do syn keyword vbStatement Each ElseIf End Enum Erase Error Event Exit syn keyword vbStatement Explicit FileCopy For ForEach Function Get GoSub syn keyword vbStatement GoTo Gosub Implements Kill LSet Let Lib LineInput syn keyword vbStatement Load Lock Loop Mid MkDir Name Next On OnError Open syn keyword vbStatement Option Preserve Private Property Public Put RSet syn keyword vbStatement RaiseEvent Randomize ReDim Redim Reset Resume syn keyword vbStatement Return RmDir SavePicture SaveSetting Seek SendKeys syn keyword vbStatement Sendkeys Set SetAttr Static Step Stop Sub Time syn keyword vbStatement Type Unload Unlock Until Wend While Width With syn keyword vbStatement Write syn keyword vbKeyword As Binary ByRef ByVal Date Empty Error Friend Get syn keyword vbKeyword Input Is Len Lock Me Mid New Nothing Null On syn keyword vbKeyword Option Optional ParamArray Print Private Property syn keyword vbKeyword Public PublicNotCreateable OnNewProcessSingleUse syn keyword vbKeyword InSameProcessMultiUse GlobalMultiUse Resume Seek syn keyword vbKeyword Set Static Step String Time WithEvents syn keyword vbTodo contained TODO syn keyword vbTypes Boolean Byte Currency Date Decimal Double Empty syn keyword vbTypes Integer Long Object Single String Variant syn keyword vbDefine dbBigInt dbBinary dbBoolean dbByte dbChar syn keyword vbDefine dbCurrency dbDate dbDecimal dbDouble dbFloat syn keyword vbDefine dbGUID dbInteger dbLong dbLongBinary dbMemo syn keyword vbDefine dbNumeric dbSingle dbText dbTime dbTimeStamp syn keyword vbDefine dbVarBinary syn keyword vbDefine vb3DDKShadow vb3DFace vb3DHighlight vb3DLight syn keyword vbDefine vb3DShadow vbAbort vbAbortRetryIgnore syn keyword vbDefine vbActiveBorder vbActiveTitleBar vbAlias syn keyword vbDefine vbApplicationModal vbApplicationWorkspace syn keyword vbDefine vbAppTaskManager vbAppWindows vbArchive vbArray syn keyword vbDefine vbBack vbBinaryCompare vbBlack vbBlue vbBoolean syn keyword vbDefine vbButtonFace vbButtonShadow vbButtonText vbByte syn keyword vbDefine vbCalGreg vbCalHijri vbCancel vbCr vbCritical syn keyword vbDefine vbCrLf vbCurrency vbCyan vbDatabaseCompare syn keyword vbDefine vbDataObject vbDate vbDecimal vbDefaultButton1 syn keyword vbDefine vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 syn keyword vbDefine vbDesktop vbDirectory vbDouble vbEmpty vbError syn keyword vbDefine vbExclamation vbFirstFourDays vbFirstFullWeek syn keyword vbDefine vbFirstJan1 vbFormCode vbFormControlMenu syn keyword vbDefine vbFormFeed vbFormMDIForm vbFriday vbFromUnicode syn keyword vbDefine vbGrayText vbGreen vbHidden vbHide vbHighlight syn keyword vbDefine vbHighlightText vbHiragana vbIgnore vbIMEAlphaDbl syn keyword vbDefine vbIMEAlphaSng vbIMEDisable vbIMEHiragana syn keyword vbDefine vbIMEKatakanaDbl vbIMEKatakanaSng vbIMEModeAlpha syn keyword vbDefine vbIMEModeAlphaFull vbIMEModeDisable syn keyword vbDefine vbIMEModeHangul vbIMEModeHangulFull syn keyword vbDefine vbIMEModeHiragana vbIMEModeKatakana syn keyword vbDefine vbIMEModeKatakanaHalf vbIMEModeNoControl syn keyword vbDefine vbIMEModeOff vbIMEModeOn vbIMENoOp vbIMEOff syn keyword vbDefine vbIMEOn vbInactiveBorder vbInactiveCaptionText syn keyword vbDefine vbInactiveTitleBar vbInfoBackground vbInformation syn keyword vbDefine vbInfoText vbInteger vbKatakana vbKey0 vbKey1 syn keyword vbDefine vbKey2 vbKey3 vbKey4 vbKey5 vbKey6 vbKey7 vbKey8 syn keyword vbDefine vbKey9 vbKeyA vbKeyAdd vbKeyB vbKeyBack vbKeyC syn keyword vbDefine vbKeyCancel vbKeyCapital vbKeyClear vbKeyControl syn keyword vbDefine vbKeyD vbKeyDecimal vbKeyDelete vbKeyDivide syn keyword vbDefine vbKeyDown vbKeyE vbKeyEnd vbKeyEscape vbKeyExecute syn keyword vbDefine vbKeyF vbKeyF1 vbKeyF10 vbKeyF11 vbKeyF12 vbKeyF13 syn keyword vbDefine vbKeyF14 vbKeyF15 vbKeyF16 vbKeyF2 vbKeyF3 vbKeyF4 syn keyword vbDefine vbKeyF5 vbKeyF6 vbKeyF7 vbKeyF8 vbKeyF9 vbKeyG syn keyword vbDefine vbKeyH vbKeyHelp vbKeyHome vbKeyI vbKeyInsert syn keyword vbDefine vbKeyJ vbKeyK vbKeyL vbKeyLButton vbKeyLeft vbKeyM syn keyword vbDefine vbKeyMButton vbKeyMenu vbKeyMultiply vbKeyN syn keyword vbDefine vbKeyNumlock vbKeyNumpad0 vbKeyNumpad1 syn keyword vbDefine vbKeyNumpad2 vbKeyNumpad3 vbKeyNumpad4 syn keyword vbDefine vbKeyNumpad5 vbKeyNumpad6 vbKeyNumpad7 syn keyword vbDefine vbKeyNumpad8 vbKeyNumpad9 vbKeyO vbKeyP syn keyword vbDefine vbKeyPageDown vbKeyPageUp vbKeyPause vbKeyPrint syn keyword vbDefine vbKeyQ vbKeyR vbKeyRButton vbKeyReturn vbKeyRight syn keyword vbDefine vbKeyS vbKeySelect vbKeySeparator vbKeyShift syn keyword vbDefine vbKeySnapshot vbKeySpace vbKeySubtract vbKeyT syn keyword vbDefine vbKeyTab vbKeyU vbKeyUp vbKeyV vbKeyW vbKeyX syn keyword vbDefine vbKeyY vbKeyZ vbLf vbLong vbLowerCase vbMagenta syn keyword vbDefine vbMaximizedFocus vbMenuBar vbMenuText syn keyword vbDefine vbMinimizedFocus vbMinimizedNoFocus vbMonday syn keyword vbDefine vbMsgBox vbMsgBoxHelpButton vbMsgBoxRight syn keyword vbDefine vbMsgBoxRtlReading vbMsgBoxSetForeground syn keyword vbDefine vbMsgBoxText vbNarrow vbNewLine vbNo vbNormal syn keyword vbDefine vbNormalFocus vbNormalNoFocus vbNull vbNullChar syn keyword vbDefine vbNullString vbObject vbObjectError vbOK syn keyword vbDefine vbOKCancel vbOKOnly vbProperCase vbQuestion syn keyword vbDefine vbReadOnly vbRed vbRetry vbRetryCancel vbSaturday syn keyword vbDefine vbScrollBars vbSingle vbString vbSunday vbSystem syn keyword vbDefine vbSystemModal vbTab vbTextCompare vbThursday syn keyword vbDefine vbTitleBarText vbTuesday vbUnicode vbUpperCase syn keyword vbDefine vbUseSystem vbUseSystemDayOfWeek vbVariant syn keyword vbDefine vbVerticalTab vbVolume vbWednesday vbWhite vbWide syn keyword vbDefine vbWindowBackground vbWindowFrame vbWindowText syn keyword vbDefine vbYellow vbYes vbYesNo vbYesNoCancel syn match vbNumber "\<\d\+\>" syn match vbNumber "\<\d\+\.\d*\>" syn match vbNumber "\.\d\+\>" syn match vbFloat "[-+]\=\<\d\+[eE][\-+]\=\d\+" syn match vbFloat "[-+]\=\<\d\+\.\d*\([eE][\-+]\=\d\+\)\=" syn match vbFloat "[-+]\=\<\.\d\+\([eE][\-+]\=\d\+\)\=" syn region vbString start=+"+ end=+"\|$+ syn region vbComment start="\(^\|\s\)REM\s" end="$" contains=vbTodo syn region vbComment start="\(^\|\s\)\'" end="$" contains=vbTodo syn match vbLineNumber "^\d\+\(\s\|$\)" syn match vbTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1 syn match vbTypeSpecifier "#[a-zA-Z0-9]"me=e-1 hi def link vbBoolean Boolean hi def link vbLineNumber Comment hi def link vbComment Comment hi def link vbConditional Conditional hi def link vbConst Constant hi def link vbDefine Constant hi def link vbError Error hi def link vbFunction Identifier hi def link vbIdentifier Identifier hi def link vbNumber Number hi def link vbFloat Float hi def link vbMethods PreProc hi def link vbOperator Operator hi def link vbRepeat Repeat hi def link vbString String hi def link vbStatement Statement hi def link vbKeyword Statement hi def link vbEvents Special hi def link vbTodo Todo hi def link vbTypes Type hi def link vbTypeSpecifier Type let b:current_syntax = "vb" if exists("b:current_syntax") finish endif syn keyword veraStatement break return continue fork join terminate syn keyword veraStatement breakpoint proceed syn keyword veraLabel bad_state bad_trans bind constraint coverage_group syn keyword veraLabel class CLOCK default function interface m_bad_state syn keyword veraLabel m_bad_trans m_state m_trans program randseq state syn keyword veraLabel task trans syn keyword veraConditional if else case casex casez randcase syn keyword veraRepeat repeat while for do foreach syn keyword veraModifier after all any around assoc_size async syn keyword veraModifier before big_endian bit_normal bit_reverse export syn keyword veraModifier extends extern little_endian local hdl_node hdl_task syn keyword veraModifier negedge none packed protected posedge public rules syn keyword veraModifier shadow soft static super this typedef unpacked var syn keyword veraModifier vca virtual virtuals wildcard with syn keyword veraType reg string enum event bit syn keyword veraType rand randc integer port prod syn keyword veraDeprecated call_func call_task close_conn get_bind get_bind_id syn keyword veraDeprecated get_conn_err mailbox_receive mailbox_send make_client syn keyword veraDeprecated make_server simwave_plot up_connections syn keyword veraTask alloc assoc_index cast_assign cm_coverage syn keyword veraTask cm_get_coverage cm_get_limit delay error error_mode syn keyword veraTask exit fclose feof ferror fflush flag fopen fprintf syn keyword veraTask freadb freadh freadstr get_cycle get_env get_memsize syn keyword veraTask get_plus_arg getstate get_systime get_time get_time_unit syn keyword veraTask initstate lock_file mailbox_get mailbox_put os_command syn keyword veraTask printf prodget prodset psprintf query query_str query_x syn keyword veraTask rand48 random region_enter region_exit rewind syn keyword veraTask semaphore_get semaphore_put setstate signal_connect syn keyword veraTask sprintf srandom sscanf stop suspend_thread sync syn keyword veraTask timeout trace trigger unit_delay unlock_file urand48 syn keyword veraTask urandom urandom_range vera_bit_reverse vera_crc syn keyword veraTask vera_pack vera_pack_big_endian vera_plot syn keyword veraTask vera_report_profile vera_unpack vera_unpack_big_endian syn keyword veraTask vsv_call_func vsv_call_task vsv_get_conn_err syn keyword veraTask vsv_make_client vsv_make_server vsv_up_connections syn keyword veraTask vsv_wait_for_done vsv_wait_for_input wait_child wait_var syn cluster veraOperGroup contains=veraOperator,veraOperParen,veraNumber,veraString,veraOperOk,veraType syn match veraOperator "[&|\~>" syn match veraOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=veraOctalZero syn match veraOctalZero display contained "\<0" syn match veraFloat display contained "\d\+f" syn match veraFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match veraFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match veraFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" syn match veraFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" syn match veraFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" syn match veraOctalError display contained "0\o*[89]\d*" syn case match let vera_comment_strings = 1 if exists("vera_comment_strings") syntax match veraCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region veraCommentString contained start=+L\=\\\@" syn match veraClass "\zs\w\+\ze::" syn match veraClass "\zs\w\+\ze\s\+\w\+\s*[=;,)\[]" contains=veraConstant,veraUserConstant syn match veraClass "\zs\w\+\ze\s\+\w\+\s*$" contains=veraConstant,veraUserConstant syn match veraUserMethod "\zs\w\+\ze\s*(" contains=veraConstant,veraUserConstant syn match veraObject "\zs\w\+\ze\.\w" syn match veraObject "\zs\w\+\ze\.\$\w" syn region veraPreCondit start="^\s*\(`\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=veraComment,veraCppString,veraCharacter,veraCppParen,veraParenError,veraNumbers,veraCommentError,veraSpaceError syn match veraPreCondit display "^\s*\(`\|#\)\s*\(else\|endif\)\>" if !exists("vera_no_if0") syn region veraCppOut start="^\s*\(`\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=veraCppOut2 syn region veraCppOut2 contained start="0" end="^\s*\(`\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=veraSpaceError,veraCppSkip syn region veraCppSkip contained start="^\s*\(`\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(`\|#\)\s*endif\>" contains=veraSpaceError,veraCppSkip endif syn region veraIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match veraIncluded display contained "<[^>]*>" syn match veraInclude display "^\s*\(`\|#\)\s*include\>\s*["<]" contains=veraIncluded syn cluster veraPreProcGroup contains=veraPreCondit,veraIncluded,veraInclude,veraDefine,veraErrInParen,veraErrInBracket,veraUserLabel,veraSpecial,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraString,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraParen,veraBracket,veraMulti syn region veraDefine start="^\s*\(`\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@veraPreProcGroup,@Spell syn region veraPreProc start="^\s*\(`\|#\)\s*\(pragma\>\|line\>\|warning\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@veraPreProcGroup,@Spell syn cluster veraMultiGroup contains=veraIncluded,veraSpecial,veraCommentSkip,veraCommentString,veraComment2String,@veraCommentGroup,veraCommentStartError,veraUserCont,veraUserLabel,veraBitField,veraOctalZero,veraCppOut,veraCppOut2,veraCppSkip,veraFormat,veraNumber,veraFloat,veraOctal,veraOctalError,veraNumbersCom,veraCppParen,veraCppBracket,veraCppString syn region veraMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@veraMultiGroup,@Spell syn cluster veraLabelGroup contains=veraUserLabel syn match veraUserCont display "^\s*\I\i*\s*:$" contains=@veraLabelGroup syn match veraUserCont display ";\s*\I\i*\s*:$" contains=@veraLabelGroup syn match veraUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup syn match veraUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@veraLabelGroup syn match veraUserLabel display "\I\i*" contained syn match veraBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 syn match veraBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 if exists("vera_minlines") let b:vera_minlines = vera_minlines else if !exists("vera_no_if0") let b:vera_minlines = 50 " #if 0 constructs can be long else let b:vera_minlines = 15 " mostly for () constructs endif endif exec "syn sync ccomment veraComment minlines=" . b:vera_minlines hi def link veraClass Identifier hi def link veraObject Identifier hi def link veraUserMethod Function hi def link veraTask Keyword hi def link veraModifier Tag hi def link veraDeprecated veraError hi def link veraMethods Statement hi def link veraInterface Function hi def link veraFormat veraSpecial hi def link veraCppString veraString hi def link veraCommentL veraComment hi def link veraCommentStart veraComment hi def link veraLabel Label hi def link veraUserLabel Label hi def link veraConditional Conditional hi def link veraRepeat Repeat hi def link veraCharacter Character hi def link veraSpecialCharacter veraSpecial hi def link veraNumber Number hi def link veraOctal Number hi def link veraOctalZero PreProc " link this to Error if you want hi def link veraFloat Float hi def link veraOctalError veraError hi def link veraParenError veraError hi def link veraErrInParen veraError hi def link veraErrInBracket veraError hi def link veraCommentError veraError hi def link veraCommentStartError veraError hi def link veraSpaceError SpaceError hi def link veraSpecialError veraError hi def link veraOperator Operator hi def link veraStructure Structure hi def link veraInclude Include hi def link veraPreProc PreProc hi def link veraDefine Macro hi def link veraIncluded veraString hi def link veraError Error hi def link veraStatement Statement hi def link veraPreCondit PreCondit hi def link veraType Type hi def link veraConstant Keyword hi def link veraUserConstant Constant hi def link veraCommentString veraString hi def link veraComment2String veraString hi def link veraCommentSkip veraComment hi def link veraString String hi def link veraComment Comment hi def link veraSpecial SpecialChar hi def link veraTodo Todo hi def link veraCppSkip veraCppOut hi def link veraCppOut2 veraCppOut hi def link veraCppOut Comment let b:current_syntax = "vera" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,63,_,192-255 syn keyword verilogStatement always and assign automatic buf syn keyword verilogStatement bufif0 bufif1 cell cmos syn keyword verilogStatement config deassign defparam design syn keyword verilogStatement disable edge endconfig syn keyword verilogStatement endfunction endgenerate endmodule syn keyword verilogStatement endprimitive endspecify endtable endtask syn keyword verilogStatement event force function syn keyword verilogStatement generate genvar highz0 highz1 ifnone syn keyword verilogStatement incdir include initial inout input syn keyword verilogStatement instance integer large liblist syn keyword verilogStatement library localparam macromodule medium syn keyword verilogStatement module nand negedge nmos nor syn keyword verilogStatement noshowcancelled not notif0 notif1 or syn keyword verilogStatement output parameter pmos posedge primitive syn keyword verilogStatement pull0 pull1 pulldown pullup syn keyword verilogStatement pulsestyle_onevent pulsestyle_ondetect syn keyword verilogStatement rcmos real realtime reg release syn keyword verilogStatement rnmos rpmos rtran rtranif0 rtranif1 syn keyword verilogStatement scalared showcancelled signed small syn keyword verilogStatement specify specparam strong0 strong1 syn keyword verilogStatement supply0 supply1 table task time tran syn keyword verilogStatement tranif0 tranif1 tri tri0 tri1 triand syn keyword verilogStatement trior trireg unsigned use vectored wait syn keyword verilogStatement wand weak0 weak1 wire wor xnor xor syn keyword verilogLabel begin end fork join syn keyword verilogConditional if else case casex casez default endcase syn keyword verilogRepeat forever repeat while for syn keyword verilogTodo contained TODO FIXME syn match verilogOperator "[&|~>" syn match verilogConstant "\<[A-Z][A-Z0-9_]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[bB]\s*[0-1_xXzZ?]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[oO]\s*[0-7_xXzZ?]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[dD]\s*[0-9_xXzZ?]\+\>" syn match verilogNumber "\(\<\d\+\|\)'[sS]\?[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match verilogNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>" syn region verilogString start=+"+ skip=+\\"+ end=+"+ contains=verilogEscape,@Spell syn match verilogEscape +\\[nt"\\]+ contained syn match verilogEscape "\\\o\o\=\o\=" contained syn match verilogDirective "//\s*synopsys\>.*$" syn region verilogDirective start="/\*\s*synopsys\>" end="\*/" syn region verilogDirective start="//\s*synopsys dc_script_begin\>" end="//\s*synopsys dc_script_end\>" syn match verilogDirective "//\s*\$s\>.*$" syn region verilogDirective start="/\*\s*\$s\>" end="\*/" syn region verilogDirective start="//\s*\$s dc_script_begin\>" end="//\s*\$s dc_script_end\>" syn sync minlines=50 hi def link verilogCharacter Character hi def link verilogConditional Conditional hi def link verilogRepeat Repeat hi def link verilogString String hi def link verilogTodo Todo hi def link verilogComment Comment hi def link verilogConstant Constant hi def link verilogLabel Label hi def link verilogNumber Number hi def link verilogOperator Special hi def link verilogStatement Statement hi def link verilogGlobal Define hi def link verilogDirective SpecialComment hi def link verilogEscape Special let b:current_syntax = "verilog" if exists("b:current_syntax") finish endif setlocal iskeyword=@,48-57,_,192-255 syn keyword verilogamsStatement above abs absdelay acos acosh ac_stim syn keyword verilogamsStatement always analog analysis and asin syn keyword verilogamsStatement asinh assign atan atan2 atanh syn keyword verilogamsStatement buf bufif0 bufif1 ceil cmos connectmodule syn keyword verilogamsStatement connectrules cos cosh cross ddt ddx deassign syn keyword verilogamsStatement defparam disable discipline syn keyword verilogamsStatement driver_update edge enddiscipline syn keyword verilogamsStatement endconnectrules endmodule endfunction endgenerate syn keyword verilogamsStatement endnature endparamset endprimitive endspecify syn keyword verilogamsStatement endtable endtask event exp final_step syn keyword verilogamsStatement flicker_noise floor flow force fork syn keyword verilogamsStatement function generate highz0 syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone inf initial syn keyword verilogamsStatement initial_step inout input join syn keyword verilogamsStatement laplace_nd laplace_np laplace_zd laplace_zp syn keyword verilogamsStatement large last_crossing limexp ln localparam log syn keyword verilogamsStatement macromodule max medium min module nand nature syn keyword verilogamsStatement negedge net_resolution nmos noise_table nor not syn keyword verilogamsStatement notif0 notif1 or output paramset pmos syn keyword verilogamsType parameter real integer electrical input output syn keyword verilogamsType inout reg tri tri0 tri1 triand trior trireg syn keyword verilogamsType string from exclude aliasparam ground genvar syn keyword verilogamsType branch time realtime syn keyword verilogamsStatement posedge potential pow primitive pull0 pull1 syn keyword verilogamsStatement pullup pulldown rcmos release syn keyword verilogamsStatement rnmos rpmos rtran rtranif0 rtranif1 syn keyword verilogamsStatement scalared sin sinh slew small specify specparam syn keyword verilogamsStatement sqrt strong0 strong1 supply0 supply1 syn keyword verilogamsStatement table tan tanh task timer tran tranif0 syn keyword verilogamsStatement tranif1 transition syn keyword verilogamsStatement vectored wait wand weak0 weak1 syn keyword verilogamsStatement white_noise wire wor wreal xnor xor zi_nd syn keyword verilogamsStatement zi_np zi_zd zi_zp syn keyword verilogamsRepeat forever repeat while for syn keyword verilogamsLabel begin end syn keyword verilogamsConditional if else case casex casez default endcase syn match verilogamsConstant ":inf"lc=1 syn match verilogamsConstant "-inf"lc=1 syn keyword verilogamsStatement abstol access continuous ddt_nature discrete syn keyword verilogamsStatement domain idt_nature units syn keyword verilogamsStatement connect merged resolveto split syn match verilogamsOperator "[&|~>" syn match verilogamsConstant "\<[A-Z][A-Z0-9_]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>" syn match verilogamsNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>" syn match verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)[TGMKkmunpfa]\=\>" syn region verilogamsString start=+"+ skip=+\\"+ end=+"+ contains=verilogamsEscape syn match verilogamsEscape +\\[nt"\\]+ contained syn match verilogamsEscape "\\\o\o\=\o\=" contained syn sync lines=50 hi def link verilogamsCharacter Character hi def link verilogamsConditional Conditional hi def link verilogamsRepeat Repeat hi def link verilogamsString String hi def link verilogamsTodo Todo hi def link verilogamsComment Comment hi def link verilogamsConstant Constant hi def link verilogamsLabel Label hi def link verilogamsNumber Number hi def link verilogamsOperator Special hi def link verilogamsStatement Statement hi def link verilogamsGlobal Define hi def link verilogamsDirective SpecialComment hi def link verilogamsEscape Special hi def link verilogamsType Type hi def link verilogamsSystask Function let b:current_syntax = "verilogams" if exists("b:current_syntax") finish endif syn match vgrindefsComment "^#.*" syn match vgrindefsField ":ab=" syn match vgrindefsField ":ae=" syn match vgrindefsField ":pb=" syn match vgrindefsField ":bb=" syn match vgrindefsField ":be=" syn match vgrindefsField ":cb=" syn match vgrindefsField ":ce=" syn match vgrindefsField ":sb=" syn match vgrindefsField ":se=" syn match vgrindefsField ":lb=" syn match vgrindefsField ":le=" syn match vgrindefsField ":nc=" syn match vgrindefsField ":tl" syn match vgrindefsField ":oc" syn match vgrindefsField ":kw=" syn match vgrindefsField ":\\$" syn match vgrindefsField ":$" syn match vgrindefsField "\\$" hi def link vgrindefsField Statement hi def link vgrindefsComment Comment let b:current_syntax = "vgrindefs" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn case ignore syn keyword vhdlStatement access after alias all assert syn keyword vhdlStatement architecture array attribute syn keyword vhdlStatement assume assume_guarantee syn keyword vhdlStatement begin block body buffer bus syn keyword vhdlStatement case component configuration constant syn keyword vhdlStatement context cover syn keyword vhdlStatement default disconnect downto syn keyword vhdlStatement elsif end entity exit syn keyword vhdlStatement file for function syn keyword vhdlStatement fairness force syn keyword vhdlStatement generate generic group guarded syn keyword vhdlStatement impure in inertial inout is syn keyword vhdlStatement label library linkage literal loop syn keyword vhdlStatement map syn keyword vhdlStatement new next null syn keyword vhdlStatement of on open others out syn keyword vhdlStatement package port postponed procedure process pure syn keyword vhdlStatement parameter property protected syn keyword vhdlStatement range record register reject report return syn keyword vhdlStatement release restrict restrict_guarantee syn keyword vhdlStatement select severity signal shared syn keyword vhdlStatement subtype syn keyword vhdlStatement sequence strong syn keyword vhdlStatement then to transport type syn keyword vhdlStatement unaffected units until use syn keyword vhdlStatement variable syn keyword vhdlStatement view syn keyword vhdlStatement vmode vprop vunit syn keyword vhdlStatement wait when while with syn keyword vhdlStatement note warning error failure syn match vhdlStatement "\<\(if\|else\)\>" syn match vhdlError "\" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn keyword vhdlType line text side width syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlType "\\'\=" syn match vhdlAttribute "\'high" syn match vhdlAttribute "\'left" syn match vhdlAttribute "\'length" syn match vhdlAttribute "\'low" syn match vhdlAttribute "\'range" syn match vhdlAttribute "\'reverse_range" syn match vhdlAttribute "\'right" syn match vhdlAttribute "\'ascending" syn match vhdlAttribute "\'simple_name" syn match vhdlAttribute "\'instance_name" syn match vhdlAttribute "\'path_name" syn match vhdlAttribute "\'foreign" " VHPI syn match vhdlAttribute "\'active" syn match vhdlAttribute "\'delayed" syn match vhdlAttribute "\'event" syn match vhdlAttribute "\'last_active" syn match vhdlAttribute "\'last_event" syn match vhdlAttribute "\'last_value" syn match vhdlAttribute "\'quiet" syn match vhdlAttribute "\'stable" syn match vhdlAttribute "\'transaction" syn match vhdlAttribute "\'driving" syn match vhdlAttribute "\'driving_value" syn match vhdlAttribute "\'base" syn match vhdlAttribute "\'subtype" syn match vhdlAttribute "\'element" syn match vhdlAttribute "\'leftof" syn match vhdlAttribute "\'pos" syn match vhdlAttribute "\'pred" syn match vhdlAttribute "\'rightof" syn match vhdlAttribute "\'succ" syn match vhdlAttribute "\'val" syn match vhdlAttribute "\'image" syn match vhdlAttribute "\'value" syn match vhdlAttribute "\'converse" syn keyword vhdlBoolean true false syn case match syn match vhdlVector "\'[0L1HXWZU\-\?]\'" syn case ignore syn match vhdlVector "B\"[01_]\+\"" syn match vhdlVector "O\"[0-7_]\+\"" syn match vhdlVector "X\"[0-9a-f_]\+\"" syn match vhdlCharacter "'.'" syn region vhdlString start=+"+ end=+"+ syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>" syn match vhdlNumber "-\=\<\d\+\.\d\+\>" syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\=" syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>" syn match vhdlNumber "-\=\<\d\+\>" syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\=" syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\=" syn keyword vhdlOperator and nand or nor xor xnor syn keyword vhdlOperator rol ror sla sll sra srl syn keyword vhdlOperator mod rem abs not syn match vhdlOperator "&\|+\|-\|\*\|\/" syn match vhdlOperator "=\|\/=\|>\|<\|>=" syn match vhdlOperator "<=\|:=" syn match vhdlOperator "=>" syn match vhdlOperator "<=>" syn match vhdlOperator "??\|?=\|?\/=\|?<\|?<=\|?>\|?>=" syn match vhdlOperator "<<\|>>" syn match vhdlError "\(=\)[<=&+\-\*\/\\]\+" syn match vhdlError "[=&+\-\*\\]\+\(=\)" syn match vhdlError "\(>\)[<&+\-\/\\]\+" syn match vhdlError "[&+\-\/\\]\+\(>\)" syn match vhdlError "\(<\)[&+\-\/\\]\+" syn match vhdlError "[>=&+\-\/\\]\+\(<\)" syn match vhdlError "\(<=\)[<=&+\*\\?:]\+" syn match vhdlError "[>=&+\-\*\\:]\+\(=>\)" syn match vhdlError "\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|:=\|=>\)[<>=&+\*\\?:]\+" syn match vhdlError "[<>=&+\-\*\\:]\+\(&\|+\|\*\*\|\/=\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|>=\|<=\|:=\)" syn match vhdlError "\(?<\|?>\)[<>&+\*\/\\?:]\+" syn match vhdlError "\(<<\|>>\)[<>&+\*\/\\?:]\+" syn match vhdlError "\(\/\)[<>&+\-\*\/\\?:]\+" syn match vhdlError "[<>=&+\-\*\/\\:]\+\(\/\)" syn match vhdlSpecial "<>" syn match vhdlSpecial "[().,;]" syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>" syn case match syn keyword vhdlTodo contained TODO NOTE syn keyword vhdlFixme contained FIXME syn case ignore syn region vhdlComment start="/\*" end="\*/" contains=vhdlTodo,vhdlFixme,@Spell syn match vhdlComment "\(^\|\s\)--.*" contains=vhdlTodo,vhdlFixme,@Spell syn match vhdlPreProc "/\*\s*rtl_synthesis\s\+\(on\|off\)\s*\*/" syn match vhdlPreProc "\(^\|\s\)--\s*rtl_synthesis\s\+\(on\|off\)\s*" syn match vhdlPreProc "/\*\s*rtl_syn\s\+\(on\|off\)\s*\*/" syn match vhdlPreProc "\(^\|\s\)--\s*rtl_syn\s\+\(on\|off\)\s*" syn match vhdlPreProc "/\*\s*synthesis\s\+translate_\(on\|off\)\s*\*/" syn match vhdlPreProc "/\*\s*pragma\s\+translate_\(on\|off\)\s*\*/" syn match vhdlPreProc "/\*\s*pragma\s\+synthesis_\(on\|off\)\s*\*/" syn match vhdlPreProc "/\*\s*synopsys\s\+translate_\(on\|off\)\s*\*/" syn match vhdlPreProc "\(^\|\s\)--\s*synthesis\s\+translate_\(on\|off\)\s*" syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+translate_\(on\|off\)\s*" syn match vhdlPreProc "\(^\|\s\)--\s*pragma\s\+synthesis_\(on\|off\)\s*" syn match vhdlPreProc "\(^\|\s\)--\s*synopsys\s\+translate_\(on\|off\)\s*" syn sync minlines=600 hi def link vhdlSpecial Special hi def link vhdlStatement Statement hi def link vhdlCharacter Character hi def link vhdlString String hi def link vhdlVector Number hi def link vhdlBoolean Number hi def link vhdlTodo Todo hi def link vhdlFixme Fixme hi def link vhdlComment Comment hi def link vhdlNumber Number hi def link vhdlTime Number hi def link vhdlType Type hi def link vhdlOperator Operator hi def link vhdlError Error hi def link vhdlAttribute Special hi def link vhdlPreProc PreProc let b:current_syntax = "vhdl" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif let s:keepcpo= &cpo set cpo&vim syn keyword vimTodo contained COMBAK FIXME TODO XXX syn cluster vimCommentGroup contains=vimTodo,@Spell syn keyword vimCommand contained a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgete[xpr] lla[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo pyxdo r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags ter[minal] tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop syn keyword vimCommand contained ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgr[ep] lli[st] lo[adview] lop[en] lua m[ove] mes mkvie[w] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] pyxfile rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] tf[irst] tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme syn keyword vimCommand contained abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgrepa[dd] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] th[row] tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu syn keyword vimCommand contained abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do pythonx qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lhi[story] lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] pyx quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tl[ast] tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank] syn keyword vimCommand contained ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] lgetb[uffer] ll lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] n[ext] syn match vimCommand contained "\" syn keyword vimStdPlugin contained Arguments Break Clear Continue DiffOrig Evaluate Finish Gdb Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Winbar XMLent XMLns syn keyword vimOption contained acd ambw arshape background ballooneval bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace loadplugins ma matchtime mef ml modeline mousefocus mousetime mzschemegcdll odev osfiletype patchexpr pexpr pmbfn printencoding prompt pythondll quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding textmode timeout tm ts ttybuiltin twk ul ur ve vif vts wd wic wildmode winheight wm wrapscan syn keyword vimOption contained ai anti autochdir backspace balloonevalterm bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp lpl macatsui maxcombine menc mls modelines mousehide mp nf oft pa patchmode pfn popt printexpr pt pythonhome rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors textwidth timeoutlen to tsl ttyfast tws undodir ut verbose viminfo wa weirdinvert wig wildoptions winminheight wmh write syn keyword vimOption contained akm antialias autoindent backup balloonexpr bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lrm magic maxfuncdepth menuitems mm modifiable mousem mps nrformats ofu packpath path ph pp printfont pumheight pythonthreedll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc termwinkey tf title toolbar tsr ttym twsl undofile varsofttabstop verbosefile viminfofile wak wfh wildchar wim winminwidth wmnu writeany syn keyword vimOption contained al ar autoread backupcopy bdir bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list ls makeef maxmapdepth mfd mmd modified mousemodel msm nu omnifunc para pdev pheader preserveindent printheader pumwidth pythonthreehome readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll termwinscroll tgc titlelen toolbariconsize ttimeout ttymouse tx undolevels vartabstop vfile virtualedit warn wfw wildcharm winaltkeys winptydll wmw writebackup syn keyword vimOption contained aleph arab autowrite backupdir bdlay bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imc imsf inde is isprint kmp lbr listchars lsp makeencoding maxmem mh mmp more mouses mzq number opendevice paragraphs penc pi previewheight printmbcharset pvh pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc termwinsize tgst titleold top ttimeoutlen ttyscroll uc undoreload vb vi visualbell wb wh wildignore window winwidth wop writedelay syn keyword vimOption contained allowrevins arabic autowriteall backupext belloff binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm luadll makeprg maxmempattern mis mmt mouse mouseshape mzquantum numberwidth operatorfunc paste perldll pm previewwindow printmbfont pvw pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term terse thesaurus titlestring tpm ttm ttytype udf updatecount vbs viewdir vop wc whichwrap wildignorecase winfixheight wiv wrap ws syn keyword vimOption contained altkeymap arabicshape aw backupskip beval bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap lw mat maxmemtot mkspellmem mod mousef mouset mzschemedll nuw opfunc pastetoggle pex pmbcs printdevice printoptions pw qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi textauto tildeop tl tr tty tw udir updatetime vdir viewoptions vsts wcm wi wildmenu winfixwidth wiw wrapmargin ww syn keyword vimOption contained ambiwidth ari awa balloondelay bevalterm bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imdisable imstyle indk isi key langmenu lines lnr lz matchpairs mco syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolist noloadplugins nolrm noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp nolnr nolpl nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobeval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlinebreak invlist invloadplugins invlrm invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invballoonevalterm invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invlnr invlpl invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_RI t_RS t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_so t_sr t_SR t_te t_Te t_ti t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR syn keyword vimOption contained t_8f t_AF t_AL t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 syn match vimOption contained "t_%1" syn match vimOption contained "t_#2" syn match vimOption contained "t_#4" syn match vimOption contained "t_@7" syn match vimOption contained "t_*7" syn match vimOption contained "t_&8" syn match vimOption contained "t_%i" syn match vimOption contained "t_k;" syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beautify flash graphic hardtabs mesg novice open op optimize redraw slow slowopen sourceany w300 w1200 w9600 hardtabs ht nobioskey nobiosk noconskey noconsk noautoprint nobeautify noflash nographic nohardtabs nomesg nonovice noopen noop nooptimize noredraw noslow noslowopen nosourceany now300 now1200 now9600 w1200 w300 w9600 syn case ignore syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI DirChanged EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TermResponse TextChanged TextChangedI TextChangedP TextYankPost User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu syn match vimHLGroup contained "Conceal" syn case match syn keyword vimFuncName contained abs append arglistid assert_equal assert_false assert_notmatch atan2 browsedir bufname byte2line ceil ch_close ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor deletebufline empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getchar getcmdpos getcurpos getfsize getline getpos gettabinfo getwinpos glob has_key histdel hlID index inputrestore invert items job_start js_decode keys line log maparg matchaddpos matchlist min nextnonblank perleval prompt_addtext pumvisible range reltime remote_foreground remote_startserver resolve screenchar searchdecl server2client setcharsearch setloclist setreg sha256 sin spellbadword str2float strdisplaywidth string strtrans synconcealed synstack tabpagenr tan term_dumpload term_getattr term_getscrolled term_gettty term_setansicolors term_start test_feedinput test_null_dict test_null_string timer_pause tolower trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview wordcount syn keyword vimFuncName contained acos appendbufline argv assert_equalfile assert_inrange assert_report balloon_show bufexists bufnr byteidx changenr ch_close_in ch_getjob ch_open ch_sendraw clearmatches complete_check cosh debugbreak did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharmod getcmdtype getcwd getftime getloclist getqflist gettabvar getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode len line2byte log10 mapcheck matcharg matchstr mkdir nr2char pow prompt_setcallback py3eval readfile reltimefloat remote_peek remove reverse screencol searchpair serverlist setcmdpos setmatches settabvar shellescape sinh spellsuggest str2nr strftime strlen strwidth synID system tabpagewinnr tanh term_dumpwrite term_getcursor term_getsize term_list term_setkill term_wait test_garbagecollect_now test_null_job test_override timer_start toupper type uniq visualmode wincol win_gotoid win_id2win winrestcmd win_screenpos writefile syn keyword vimFuncName contained add argc asin assert_exception assert_match assert_true balloon_split buflisted bufwinid byteidxcomp char2nr ch_evalexpr ch_info ch_read ch_setoptions col confirm count deepcopy diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcharsearch getcmdwintype getfontname getftype getmatches getreg gettabwinvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode libcall lispindent luaeval match matchdelete matchstrpos mode or prevnonblank prompt_setinterrupt pyeval reg_executing reltimestr remote_read rename round screenrow searchpairpos setbufline setfperm setpos settabwinvar shiftwidth sort split strcharpart strgetchar strpart submatch synIDattr systemlist tagfiles tempname term_getaltscreen term_getjob term_getstatus term_scrape term_setrestore test_alloc_fail test_ignore_error test_null_list test_settime timer_stop tr undofile values wildmenumode win_findbuf winheight winline winrestview winwidth xor syn keyword vimFuncName contained and argidx assert_beeps assert_fails assert_notequal atan browse bufloaded bufwinnr call ch_canread ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection delete diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchangelist getcmdline getcompletion getfperm getjumplist getpid getregtype getwininfo getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_encode libcallnr localtime map matchadd matchend max mzeval pathshorten printf prompt_setprompt pyxeval reg_recording remote_expr remote_send repeat screenattr search searchpos setbufvar setline setqflist setwinvar simplify soundfold sqrt strchars stridx strridx substitute synIDtrans tabpagebuflist taglist term_dumpdiff term_getansicolors term_getline term_gettitle term_sendkeys term_setsize test_autochdir test_null_channel test_null_partial timer_info timer_stopall trim if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[aflmpPrt]' if g:vimsyn_folding =~# 'a' com! -nargs=* VimFolda fold else com! -nargs=* VimFolda endif if g:vimsyn_folding =~# 'f' com! -nargs=* VimFoldf fold else com! -nargs=* VimFoldf endif if g:vimsyn_folding =~# 'l' com! -nargs=* VimFoldl fold else com! -nargs=* VimFoldl endif if g:vimsyn_folding =~# 'm' com! -nargs=* VimFoldm fold else com! -nargs=* VimFoldm endif if g:vimsyn_folding =~# 'p' com! -nargs=* VimFoldp fold else com! -nargs=* VimFoldp endif if g:vimsyn_folding =~# 'P' com! -nargs=* VimFoldP fold else com! -nargs=* VimFoldP endif if g:vimsyn_folding =~# 'r' com! -nargs=* VimFoldr fold else com! -nargs=* VimFoldr endif if g:vimsyn_folding =~# 't' com! -nargs=* VimFoldt fold else com! -nargs=* VimFoldt endif else com! -nargs=* VimFolda com! -nargs=* VimFoldf com! -nargs=* VimFoldl com! -nargs=* VimFoldm com! -nargs=* VimFoldp com! -nargs=* VimFoldP com! -nargs=* VimFoldr com! -nargs=* VimFoldt endif syn keyword vimCommand contained py3 if exists("g:vim_minlines") let g:vimsyn_minlines= g:vim_minlines endif if exists("g:vim_maxlines") let g:vimsyn_maxlines= g:vim_maxlines endif if exists("g:vimsyntax_noerror") let g:vimsyn_noerror= g:vimsyntax_noerror endif if exists("g:vim_maxlines") let s:vimsyn_maxlines= g:vim_maxlines else let s:vimsyn_maxlines= 60 endif syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment syn match vimNumber "\<0[xX]\x\+" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment syn match vimNumber "\%(^\|\A\)\zs#\x\{6}" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimEcho,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd syn match vimIsCommand "\<\h\w*\>" contains=vimCommand syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" syn match vimVar "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" syn match vimVar "\s\zs&\a\+\>" syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" syn keyword vimCommand contained in syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=a\%[ppend]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=c\%[hange]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=i\%[nsert]$" matchgroup=vimCommand end="^\.$"" syn region vimInsert matchgroup=vimCommand start="^[: \t]*\(\d\+\(,\d\+\)\=\)\=starti\%[nsert]$" matchgroup=vimCommand end="^\.$"" syn match vimBehave "\" skipwhite nextgroup=vimBehaveModel,vimBehaveError syn keyword vimBehaveModel contained mswin xterm if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nobehaveerror") syn match vimBehaveError contained "[^ ]\+" endif syn match vimFiletype "\\s\+[eE][nN][dD]\>" endif syn keyword vimAugroupKey contained aug[roup] syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\(\" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "||\|&&\|[-+.!]" skipwhite nextgroup=vimString,vimSpecFile syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror") syn match vimOperError ")" endif syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand syn match vimFunction "\\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f' syn region vimFuncBody contained fold start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList else syn region vimFuncBody contained start="\ze\s*(" matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\)" contains=@vimFuncBodyList endif syn match vimFuncVar contained "a:\(\K\k*\|\d\+\)" syn match vimFuncSID contained "\c\|\" nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "<\([acs]file\|amatch\|abuf\)>" nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "\s%[ \t:]"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "\s%$"ms=s+1 nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst syn match vimSpecFileMod "\(:[phtre]\)\+" contained syn cluster vimUserCmdList contains=vimAddress,vimSyntax,vimHighlight,vimAutoCmd,vimCmplxRepeat,vimComment,vimCtrlChar,vimEscapeBrace,vimFunc,vimFuncName,vimFunction,vimFunctionError,vimIsCommand,vimMark,vimNotation,vimNumber,vimOper,vimRegion,vimRegister,vimLet,vimSet,vimSetEqual,vimSetString,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange,vimSynLine syn keyword vimUserCommand contained com[mand] syn match vimUserCmd "\.*$" contains=vimUserAttrb,vimUserAttrbError,vimUserCommand,@vimUserCmdList syn match vimUserAttrbError contained "-\a\+\ze\s" syn match vimUserAttrb contained "-nargs=[01*?+]" contains=vimUserAttrbKey,vimOper syn match vimUserAttrb contained "-complete=" contains=vimUserAttrbKey,vimOper nextgroup=vimUserAttrbCmplt,vimUserCmdError syn match vimUserAttrb contained "-range\(=%\|=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-count\(=\d\+\)\=" contains=vimNumber,vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-bang\>" contains=vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-bar\>" contains=vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-buffer\>" contains=vimOper,vimUserAttrbKey syn match vimUserAttrb contained "-register\>" contains=vimOper,vimUserAttrbKey if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_nousercmderror") syn match vimUserCmdError contained "\S\+\>" endif syn case ignore syn keyword vimUserAttrbKey contained bar ban[g] cou[nt] ra[nge] com[plete] n[args] re[gister] syn keyword vimUserAttrbCmplt contained augroup buffer behave color command compiler cscope dir environment event expression file file_in_path filetype function help highlight history locale mapping menu option packadd shellcmd sign syntax syntime tag tag_listfiles user var syn keyword vimUserAttrbCmplt contained custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError syn match vimUserAttrbCmpltFunc contained ",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%(#\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError syn case match syn match vimUserAttrbCmplt contained "custom,\u\w*" syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString syn match vimComment +\!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+ syn cluster vimSubstList contains=vimPatSep,vimPatRegion,vimPatSepErr,vimSubstTwoBS,vimSubstRange,vimNotation syn cluster vimSubstRepList contains=vimSubstSubstr,vimSubstTwoBS,vimNotation syn cluster vimSubstList add=vimCollection syn match vimSubst "\(:\+\s*\|^\s*\||\s*\)\<\%(\\|\\|\\)[:#[:alpha:]]\@!" nextgroup=vimSubstPat syn match vimSubst "\%(^\|[^\\]\)\[:#[:alpha:]]\@!" nextgroup=vimSubstPat contained syn match vimSubst "/\zs\\ze/" nextgroup=vimSubstPat syn match vimSubst "\(:\+\s*\|^\s*\)s\ze#.\{-}#.\{-}#" nextgroup=vimSubstPat syn match vimSubst1 contained "\" nextgroup=vimSubstPat syn match vimSubst2 contained "s\%[ubstitute]\>" nextgroup=vimSubstPat syn region vimSubstPat contained matchgroup=vimSubstDelim start="\z([^a-zA-Z( \t[\]&]\)"rs=s+1 skip="\\\\\|\\\z1" end="\z1"re=e-1,me=e-1 contains=@vimSubstList nextgroup=vimSubstRep4 oneline syn region vimSubstRep4 contained matchgroup=vimSubstDelim start="\z(.\)" skip="\\\\\|\\\z1" end="\z1" matchgroup=vimNotation end="<[cC][rR]>" contains=@vimSubstRepList nextgroup=vimSubstFlagErr oneline syn region vimCollection contained transparent start="\\\@]\ze[-+,!]" nextgroup=vimFilter,vimMarkNumber,vimSubst syn match vimMark ",\zs'[<>]\ze" nextgroup=vimFilter,vimMarkNumber,vimSubst syn match vimMark "[!,:]\zs'[a-zA-Z0-9]" nextgroup=vimFilter,vimMarkNumber,vimSubst syn match vimMark "\'lc=1 syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend oneline contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vimSetString,vimSetMod syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]\|$"me=e-1 contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar oneline syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar syn match vimSetSep contained "[,:]" skipwhite nextgroup=vimCommand syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar syn keyword vimAbb ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimAutoEventList contained "\(!\s\+\)\=\(\a\+,\)*\a\+" contains=vimAutoEvent nextgroup=vimAutoCmdSpace syn match vimAutoCmdSpace contained "\s\+" nextgroup=vimAutoCmdSfxList syn match vimAutoCmdSfxList contained "\S*" syn keyword vimAutoCmd au[tocmd] do[autocmd] doautoa[ll] skipwhite nextgroup=vimAutoEventList syn region vimEcho oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||" contains=vimFunc,vimFuncVar,vimString,vimVar syn region vimExecute oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar syn match vimEchoHL "echohl\=" skipwhite nextgroup=vimGroup,vimHLGroup,vimEchoHLNone syn case ignore syn keyword vimEchoHLNone none syn case match syn match vimMap "\!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn keyword vimMap mapc[lear] smapc[lear] syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapMod contained "\%#=1\c<\(buffer\|expr\|\(local\)\=leader\|nowait\|plug\|script\|sid\|unique\|silent\)\+>" contains=vimMapModKey,vimMapModErr skipwhite nextgroup=vimMapMod,vimMapLhs syn match vimMapRhs contained ".*" contains=vimNotation,vimCtrlChar skipnl nextgroup=vimMapRhsExtend syn match vimMapRhsExtend contained "^\s*\\.*$" contains=vimContinue syn case ignore syn keyword vimMapModKey contained buffer expr leader localleader nowait plug script sid silent unique syn case match syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName syn match vimMenuNameMore "\c\\\s\|\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation syn match vimMenuMod contained "\c<\(script\|silent\)\+>" skipwhite contains=vimMapModKey,vimMapModErr nextgroup=@vimMenuList syn match vimMenuMap "\s" contained skipwhite nextgroup=vimMenuRhs syn match vimMenuRhs ".*$" contained contains=vimString,vimComment,vimIsCommand syn match vimMenuBang "!" contained skipwhite nextgroup=@vimMenuList syn case ignore syn match vimNotation "\%#=1\(\\\|\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|mouse\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket syn match vimNotation '\(\\\|\)\=[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket syn match vimNotation '\%#=1\(\\\|\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|mods\|f-args\|f-mods\|lt\)>' contains=vimBracket syn match vimNotation "\%#=1\(\\\|\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket syn match vimBracket contained "[\\<>]" syn case match syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\" contains=vimNotation if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimfunctionerror") syn match vimFunctionError "\s\zs[a-z0-9]\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank syn match vimFunctionError "\s\zs\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\d\i\{-}\ze\s*(" contained contains=vimFuncKey,vimFuncBlank syn match vimElseIfErr "\" syn match vimBufnrWarn /\\|\\|\\|\" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation syn match vimNorm "\" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment syn match vimAuSyntax contained "\s+sy\%[ntax]" contains=vimCommand skipwhite nextgroup=vimSynType,vimComment syn cluster vimFuncBodyList add=vimSyntax syn keyword vimSynType contained case skipwhite nextgroup=vimSynCase,vimSynCaseError if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncaseerror") syn match vimSynCaseError contained "\i\+" endif syn keyword vimSynCase contained ignore match syn keyword vimSynType contained clear skipwhite nextgroup=vimGroupList syn keyword vimSynType contained cluster skipwhite nextgroup=vimClusterName syn region vimClusterName contained matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="$\||" contains=vimGroupAdd,vimGroupRem,vimSynContains,vimSynError syn match vimGroupAdd contained "add=" nextgroup=vimGroupList syn match vimGroupRem contained "remove=" nextgroup=vimGroupList syn cluster vimFuncBodyList add=vimSynType,vimGroupAdd,vimGroupRem syn keyword vimSynType contained iskeyword skipwhite nextgroup=vimIskList syn match vimIskList contained '\S\+' contains=vimIskSep syn match vimIskSep contained ',' syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList syn cluster vimFuncBodyList add=vimSynType syn cluster vimSynKeyGroup contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion syn region vimSynKeyRegion contained oneline keepend matchgroup=vimGroupName start="\h\w*" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup syn match vimSynKeyOpt contained "\%#=1\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" syn cluster vimFuncBodyList add=vimSynType syn cluster vimSynMtchGroup contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup syn match vimSynMtchOpt contained "\%#=1\<\(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" if has("conceal") syn match vimSynMtchOpt contained "\" syn match vimSynReg contained "\(start\|skip\|end\)="he=e-1 nextgroup=vimSynRegPat syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup syn region vimSynRegPat contained extend start="\z([-`~!@#$%^&*_=+;:'",./?]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=" syn match vimSynPatMod contained "\%#=1\(hs\|ms\|me\|hs\|he\|rs\|re\)=[se]\([-+]\d\+\)\=," nextgroup=vimSynPatMod syn match vimSynPatMod contained "lc=\d\+" syn match vimSynPatMod contained "lc=\d\+," nextgroup=vimSynPatMod syn region vimSynPatRange contained start="\[" skip="\\\\\|\\]" end="]" syn match vimSynNotPatRange contained "\\\\\|\\\[" syn match vimMtchComment contained '"[^"]\+$' syn cluster vimFuncBodyList add=vimSynType syn keyword vimSynType contained sync skipwhite nextgroup=vimSyncC,vimSyncLines,vimSyncMatch,vimSyncError,vimSyncLinebreak,vimSyncLinecont,vimSyncRegion if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsyncerror") syn match vimSyncError contained "\i\+" endif syn keyword vimSyncC contained ccomment clear fromstart syn keyword vimSyncMatch contained match skipwhite nextgroup=vimSyncGroupName syn keyword vimSyncRegion contained region skipwhite nextgroup=vimSynReg syn match vimSyncLinebreak contained "\" skipwhite nextgroup=vimSyncGroup syn match vimSyncGroup contained "\h\w*" skipwhite nextgroup=vimSynRegPat,vimSyncNone syn keyword vimSyncNone contained NONE syn match vimIsCommand "\s*\a\+" transparent contains=vimCommand,vimNotation syn cluster vimHighlightCluster contains=vimHiLink,vimHiClear,vimHiKeyList,vimComment if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimhictermerror") syn match vimHiCtermError contained "\D\i*" endif syn match vimHighlight "\" skipwhite nextgroup=vimHiBang,@vimHighlightCluster syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster syn match vimHiGroup contained "\i\+" syn case ignore syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl syn keyword vimFgBgAttrib contained none bg background fg foreground syn case match syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib syn match vimHiAttribList contained "\i\+,"he=e-1 contains=vimHiAttrib nextgroup=vimHiAttribList syn case ignore syn keyword vimHiCtermColor contained black blue brown cyan darkblue darkcyan darkgray darkgreen darkgrey darkmagenta darkred darkyellow gray green grey lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightred magenta red white yellow syn match vimHiCtermColor contained "\" syn case match syn match vimHiFontname contained "[a-zA-Z\-*]\+" syn match vimHiGuiFontname contained "'[a-zA-Z\-* ]\+'" syn match vimHiGuiRgb contained "#\x\{6}" syn cluster vimHiCluster contains=vimGroup,vimHiGroup,vimHiTerm,vimHiCTerm,vimHiStartStop,vimHiCtermFgBg,vimHiGui,vimHiGuiFont,vimHiGuiFgBg,vimHiKeyError,vimNotation syn region vimHiKeyList contained oneline start="\i\+" skip="\\\\\|\\|" end="$\||" contains=@vimHiCluster if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_vimhikeyerror") syn match vimHiKeyError contained "\i\+="he=e-1 endif syn match vimHiTerm contained "\cterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiStartStop contained "\c\(start\|stop\)="he=e-1 nextgroup=vimHiTermcap,vimOption syn match vimHiCTerm contained "\ccterm="he=e-1 nextgroup=vimHiAttribList syn match vimHiCtermFgBg contained "\ccterm[fb]g="he=e-1 nextgroup=vimHiNmbr,vimHiCtermColor,vimFgBgAttrib,vimHiCtermError syn match vimHiGui contained "\cgui="he=e-1 nextgroup=vimHiAttribList syn match vimHiGuiFont contained "\cfont="he=e-1 nextgroup=vimHiFontname syn match vimHiGuiFgBg contained "\cgui\%([fb]g\|sp\)="he=e-1 nextgroup=vimHiGroup,vimHiGuiFontname,vimHiGuiRgb,vimFgBgAttrib syn match vimHiTermcap contained "\S\+" contains=vimNotation syn match vimHiNmbr contained '\d\+' syn keyword vimHiClear contained clear nextgroup=vimHiGroup syn region vimHiLink contained oneline matchgroup=vimCommand start="\(\\|\\)" end="$" contains=@vimHiCluster syn cluster vimFuncBodyList add=vimHiLink syn match vimCtrlChar "[- -]" syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup syn match vimContinue "^\s*\\" syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained syn match vimSearch '^\s*[/?].*' contains=vimSearchDelim syn match vimSearchDelim '^\s*\zs[/?]\|[/?]$' contained syn region vimGlobal matchgroup=Statement start='\:p:h")."/lua.vim") if !filereadable(s:luapath) for s:luapath in split(globpath(&rtp,"syntax/lua.vim"),"\n") if filereadable(fnameescape(s:luapath)) let s:luapath= fnameescape(s:luapath) break endif endfor endif if (g:vimsyn_embed =~# 'l' && has("lua")) && filereadable(s:luapath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimLuaRegion exe "syn include @vimLuaScript ".s:luapath VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimLuaScript VimFoldl syn region vimLuaRegion matchgroup=vimScriptDelim start=+lua\s*<<\s*$+ end=+\.$+ contains=@vimLuaScript syn cluster vimFuncBodyList add=vimLuaRegion else syn region vimEmbedError start=+lua\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+lua\s*<<\s*$+ end=+\.$+ endif unlet s:luapath let s:perlpath= fnameescape(expand(":p:h")."/perl.vim") if !filereadable(s:perlpath) for s:perlpath in split(globpath(&rtp,"syntax/perl.vim"),"\n") if filereadable(fnameescape(s:perlpath)) let s:perlpath= fnameescape(s:perlpath) break endif endfor endif if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimPerlRegion exe "syn include @vimPerlScript ".s:perlpath VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript syn cluster vimFuncBodyList add=vimPerlRegion else syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ endif unlet s:perlpath let s:rubypath= fnameescape(expand(":p:h")."/ruby.vim") if !filereadable(s:rubypath) for s:rubypath in split(globpath(&rtp,"syntax/ruby.vim"),"\n") if filereadable(fnameescape(s:rubypath)) let s:rubypath= fnameescape(s:rubypath) break endif endfor endif if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath) syn cluster vimFuncBodyList add=vimRubyRegion unlet! b:current_syntax exe "syn include @vimRubyScript ".s:rubypath VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript syn cluster vimFuncBodyList add=vimRubyRegion else syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+rub[y]\s*<<\s*$+ end=+\.$+ endif unlet s:rubypath let s:pythonpath= fnameescape(expand(":p:h")."/python.vim") if !filereadable(s:pythonpath) for s:pythonpath in split(globpath(&rtp,"syntax/python.vim"),"\n") if filereadable(fnameescape(s:pythonpath)) let s:pythonpath= fnameescape(s:pythonpath) break endif endfor endif if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimPythonRegion exe "syn include @vimPythonScript ".s:pythonpath VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript syn cluster vimFuncBodyList add=vimPythonRegion else syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ endif unlet s:pythonpath if has("win32") || has("win95") || has("win64") || has("win16") let s:trytcl= (&shell !~ '\<\%(bash\>\|4[nN][tT]\|\\%(\.exe\)\=$') else let s:trytcl= 1 endif if s:trytcl let s:tclpath= fnameescape(expand(":p:h")."/tcl.vim") if !filereadable(s:tclpath) for s:tclpath in split(globpath(&rtp,"syntax/tcl.vim"),"\n") if filereadable(fnameescape(s:tclpath)) let s:tclpath= fnameescape(s:tclpath) break endif endfor endif if (g:vimsyn_embed =~# 't' && has("tcl")) && filereadable(s:tclpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimTclRegion exe "syn include @vimTclScript ".s:tclpath VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimTclScript VimFoldt syn region vimTclRegion matchgroup=vimScriptDelim start=+tc[l]\=\s*<<\s*$+ end=+\.$+ contains=@vimTclScript syn cluster vimFuncBodyList add=vimTclScript else syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+ endif unlet s:tclpath else syn region vimEmbedError start=+tc[l]\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+tc[l]\=\s*<<\s*$+ end=+\.$+ endif unlet s:trytcl let s:mzschemepath= fnameescape(expand(":p:h")."/scheme.vim") if !filereadable(s:mzschemepath) for s:mzschemepath in split(globpath(&rtp,"syntax/mzscheme.vim"),"\n") if filereadable(fnameescape(s:mzschemepath)) let s:mzschemepath= fnameescape(s:mzschemepath) break endif endfor endif if (g:vimsyn_embed =~# 'm' && has("mzscheme")) && filereadable(s:mzschemepath) unlet! b:current_syntax let s:iskKeep= &isk syn cluster vimFuncBodyList add=vimMzSchemeRegion exe "syn include @vimMzSchemeScript ".s:mzschemepath let &isk= s:iskKeep unlet s:iskKeep VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimMzSchemeScript VimFoldm syn region vimMzSchemeRegion matchgroup=vimScriptDelim start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ contains=@vimMzSchemeScript syn cluster vimFuncBodyList add=vimMzSchemeRegion else syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*\z(.*\)$+ end=+^\z1$+ syn region vimEmbedError start=+mz\%[scheme]\s*<<\s*$+ end=+\.$+ endif unlet s:mzschemepath if exists("g:vimsyn_minlines") exe "syn sync minlines=".g:vimsyn_minlines endif exe "syn sync maxlines=".s:vimsyn_maxlines syn sync linecont "^\s\+\\" syn sync match vimAugroupSyncA groupthere NONE "\\s\+[eE][nN][dD]" if !exists("skip_vim_syntax_inits") if !exists("g:vimsyn_noerror") hi def link vimBehaveError vimError hi def link vimCollClassErr vimError hi def link vimErrSetting vimError hi def link vimEmbedError vimError hi def link vimFTError vimError hi def link vimFunctionError vimError hi def link vimFunc vimError hi def link vimHiAttribList vimError hi def link vimHiCtermError vimError hi def link vimHiKeyError vimError hi def link vimKeyCodeError vimError hi def link vimMapModErr vimError hi def link vimSubstFlagErr vimError hi def link vimSynCaseError vimError hi def link vimBufnrWarn vimWarn endif hi def link vimAbb vimCommand hi def link vimAddress vimMark hi def link vimAugroupError vimError hi def link vimAugroupKey vimCommand hi def link vimAuHighlight vimHighlight hi def link vimAutoCmdOpt vimOption hi def link vimAutoCmd vimCommand hi def link vimAutoEvent Type hi def link vimAutoSet vimCommand hi def link vimBehaveModel vimBehave hi def link vimBehave vimCommand hi def link vimBracket Delimiter hi def link vimCmplxRepeat SpecialChar hi def link vimCommand Statement hi def link vimComment Comment hi def link vimCommentString vimString hi def link vimCommentTitle PreProc hi def link vimCondHL vimCommand hi def link vimContinue Special hi def link vimCtrlChar SpecialChar hi def link vimEchoHLNone vimGroup hi def link vimEchoHL vimCommand hi def link vimElseIfErr Error hi def link vimElseif vimCondHL hi def link vimEnvvar PreProc hi def link vimError Error hi def link vimFBVar vimVar hi def link vimFgBgAttrib vimHiAttrib hi def link vimFold Folded hi def link vimFTCmd vimCommand hi def link vimFTOption vimSynType hi def link vimFuncKey vimCommand hi def link vimFuncName Function hi def link vimFuncSID Special hi def link vimFuncVar Identifier hi def link vimGroupAdd vimSynOption hi def link vimGroupName vimGroup hi def link vimGroupRem vimSynOption hi def link vimGroupSpecial Special hi def link vimGroup Type hi def link vimHiAttrib PreProc hi def link vimHiClear vimHighlight hi def link vimHiCtermFgBg vimHiTerm hi def link vimHiCTerm vimHiTerm hi def link vimHighlight vimCommand hi def link vimHiGroup vimGroupName hi def link vimHiGuiFgBg vimHiTerm hi def link vimHiGuiFont vimHiTerm hi def link vimHiGuiRgb vimNumber hi def link vimHiGui vimHiTerm hi def link vimHiNmbr Number hi def link vimHiStartStop vimHiTerm hi def link vimHiTerm Type hi def link vimHLGroup vimGroup hi def link vimHLMod PreProc hi def link vimInsert vimString hi def link vimIskSep Delimiter hi def link vimKeyCode vimSpecFile hi def link vimKeyword Statement hi def link vimLet vimCommand hi def link vimLineComment vimComment hi def link vimMapBang vimCommand hi def link vimMapModKey vimFuncSID hi def link vimMapMod vimBracket hi def link vimMap vimCommand hi def link vimMark Number hi def link vimMarkNumber vimNumber hi def link vimMenuMod vimMapMod hi def link vimMenuNameMore vimMenuName hi def link vimMenuName PreProc hi def link vimMtchComment vimComment hi def link vimNorm vimCommand hi def link vimNotation Special hi def link vimNotFunc vimCommand hi def link vimNotPatSep vimString hi def link vimNumber Number hi def link vimOperError Error hi def link vimOper Operator hi def link vimOption PreProc hi def link vimParenSep Delimiter hi def link vimPatSepErr vimError hi def link vimPatSepR vimPatSep hi def link vimPatSep SpecialChar hi def link vimPatSepZone vimString hi def link vimPatSepZ vimPatSep hi def link vimPattern Type hi def link vimPlainMark vimMark hi def link vimPlainRegister vimRegister hi def link vimRegister SpecialChar hi def link vimScriptDelim Comment hi def link vimSearchDelim Statement hi def link vimSearch vimString hi def link vimSep Delimiter hi def link vimSetMod vimOption hi def link vimSetSep Statement hi def link vimSetString vimString hi def link vimSpecFile Identifier hi def link vimSpecFileMod vimSpecFile hi def link vimSpecial Type hi def link vimStatement Statement hi def link vimStringCont vimString hi def link vimString String hi def link vimStringEnd vimString hi def link vimSubst1 vimSubst hi def link vimSubstDelim Delimiter hi def link vimSubstFlags Special hi def link vimSubstSubstr SpecialChar hi def link vimSubstTwoBS vimString hi def link vimSubst vimCommand hi def link vimSynCaseError Error hi def link vimSynCase Type hi def link vimSyncC Type hi def link vimSyncError Error hi def link vimSyncGroupName vimGroupName hi def link vimSyncGroup vimGroupName hi def link vimSyncKey Type hi def link vimSyncNone Type hi def link vimSynContains vimSynOption hi def link vimSynError Error hi def link vimSynKeyContainedin vimSynContains hi def link vimSynKeyOpt vimSynOption hi def link vimSynMtchGrp vimSynOption hi def link vimSynMtchOpt vimSynOption hi def link vimSynNextgroup vimSynOption hi def link vimSynNotPatRange vimSynRegPat hi def link vimSynOption Special hi def link vimSynPatRange vimString hi def link vimSynRegOpt vimSynOption hi def link vimSynRegPat vimString hi def link vimSynReg Type hi def link vimSyntax vimCommand hi def link vimSynType vimSpecial hi def link vimTodo Todo hi def link vimUnmap vimMap hi def link vimUserAttrbCmpltFunc Special hi def link vimUserAttrbCmplt vimSpecial hi def link vimUserAttrbKey vimOption hi def link vimUserAttrb vimSpecial hi def link vimUserAttrbError Error hi def link vimUserCmdError Error hi def link vimUserCommand vimCommand hi def link vimUserFunc Normal hi def link vimVar Identifier hi def link vimWarn WarningMsg endif let b:current_syntax = "vim" delc VimFolda delc VimFoldf delc VimFoldl delc VimFoldm delc VimFoldp delc VimFoldP delc VimFoldr delc VimFoldt let &cpo = s:keepcpo unlet s:keepcpo if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match viminfoError "^[^\t].*" syn match viminfoStatement "^[/&$@:?=%!<]" syn match viminfoStatement "^[-'>"]." syn match viminfoStatement +^"".+ syn match viminfoStatement "^\~[/&]" syn match viminfoStatement "^\~[hH]" syn match viminfoStatement "^\~[mM][sS][lL][eE]\d\+\~\=[/&]" syn match viminfoOption "^\*.*=" contains=viminfoOptionName syn match viminfoOptionName "\*\a*"ms=s+1 contained syn match viminfoComment "^#.*" syn match viminfoNew "^|.*" hi def link viminfoComment Comment hi def link viminfoError Error hi def link viminfoStatement Statement hi def link viminfoNew String let b:current_syntax = "viminfo" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case ignore syn region virataComment start="^%" start="\s%"lc=1 keepend end="$" contains=@virataGrpInComments syn region virataSpclComment start="^%%" start="\s%%"lc=1 keepend end="$" contains=@virataGrpInComments syn keyword virataInCommentTodo contained TODO FIXME XXX[XXXXX] REVIEW TBD syn cluster virataGrpInComments contains=virataInCommentTodo syn cluster virataGrpComments contains=@virataGrpInComments,virataComment,virataSpclComment syn match virataStringError +["]+ syn region virataString start=+"+ skip=+\(\\\\\|\\"\)+ end=+"+ oneline contains=virataSpclCharError,virataSpclChar,@virataGrpDefSubsts syn match virataCharacter +'[^']\{-}'+ contains=virataSpclCharError,virataSpclChar syn match virataSpclChar contained +\\\(x\x\+\|\o\{1,3}\|['\"?\\abefnrtv]\)+ syn match virataNumberError "\<\d\{-1,}\I\{-1,}\>" syn match virataNumberError "\<0x\x*\X\x*\>" syn match virataNumberError "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>" syn match virataDecNumber "\<\d\+U\=L\=\>" syn match virataHexNumber "\<0x\x\+U\=L\=\>" syn match virataSizeNumber "\<\d\+[BKM]\>"he=e-1 syn match virataSizeNumber "\<\d\+[KM]B\>"he=e-2 syn cluster virataGrpNumbers contains=virataNumberError,virataDecNumber,virataHexNumber,virataSizeNumber syn cluster virataGrpConstants contains=@virataGrpNumbers,virataStringError,virataString,virataCharacter,virataSpclChar syn match virataIdentError contained "\<\D\S*\>" syn match virataIdentifier contained "\<\I\i\{-}\(\-\i\{-1,}\)*\>" contains=@virataGrpDefSubsts syn match virataFileIdent contained "\F\f*" contains=@virataGrpDefSubsts syn cluster virataGrpIdents contains=virataIdentifier,virataIdentError syn cluster virataGrpFileIdents contains=virataFileIdent,virataIdentError syn match virataStatement "^\s*Config\(\(/Kernel\)\=\.\(hs\=\|s\)\)\=\>" syn match virataStatement "^\s*Config\s\+\I\i\{-}\(\-\i\{-1,}\)*\.\(hs\=\|s\)\>" syn match virataStatement "^\s*Make\.\I\i\{-}\(\-\i\{-1}\)*\>" skipwhite nextgroup=@virataGrpIdents syn match virataStatement "^\s*Make\.c\(at\)\=++\s"me=e-1 skipwhite nextgroup=@virataGrpIdents syn match virataStatement "^\s*\(Architecture\|GetEnv\|Reserved\|\(Un\)\=Define\|Version\)\>" skipwhite nextgroup=@virataGrpIdents syn match virataStatement "^\s*\(Hardware\|ModuleSource\|\(Release\)\=Path\|Software\)\>" skipwhite nextgroup=@virataGrpFileIdents syn match virataStatement "^\s*\(DefaultPri\|Hydrogen\)\>" skipwhite nextgroup=virataDecNumber,virataNumberError syn match virataStatement "^\s*\(NoInit\|PCI\|SysLink\)\>" syn match virataStatement "^\s*Allow\s\+\(ModuleConfig\)\>" syn match virataStatement "^\s*NoWarn\s\+\(Export\|Parse\=able\|Relative]\)\>" syn match virataStatement "^\s*Debug\s\+O\(ff\|n\)\>" syn region virataImportDef transparent matchgroup=virataStatement start="^\s*Import\>" keepend end="$" contains=virataInImport,virataModuleDef,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInImport contained "\<\(Module\|Package\|from\)\>" skipwhite nextgroup=@virataGrpFileIdents syn region virataExportDef transparent matchgroup=virataStatement start="^\s*Export\>" keepend end="$" contains=virataInExport,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInExport contained "\<\(Header\|[SU]Library\)\>" skipwhite nextgroup=@virataGrpFileIdents syn region virataProcessDef transparent matchgroup=virataStatement start="^\s*Process\>" keepend end="$" contains=virataInProcess,virataInExec,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents syn match virataInProcess contained "\" syn region virataInstanceDef transparent matchgroup=virataStatement start="^\s*Instance\>" keepend end="$" contains=virataInInstance,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents syn match virataInInstance contained "\" syn region virataModuleDef transparent matchgroup=virataStatement start="^\s*\(Package\|Module\)\>" keepend end="$" contains=virataInModule,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInModule contained "^\s*Package\>"hs=e-7 skipwhite nextgroup=@virataGrpIdents syn match virataInModule contained "^\s*Module\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents syn match virataInModule contained "\" skipwhite nextgroup=@virataGrpFileIdents syn region virataColourDef transparent matchgroup=virataStatement start="^\s*Colour\>" keepend end="$" contains=virataInColour,virataNumberError,virataStringError,@virataGrpDefSubsts syn match virataInColour contained "^\s*Colour\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents syn match virataInColour contained "\" skipwhite nextgroup=@virataGrpFileIdents syn match virataStatement "^\s*\(Link\|Object\)" syn region virataExecDef transparent matchgroup=virataStatement start="^\s*Executable\>" keepend end="$" contains=virataInExec,virataNumberError,virataStringError syn match virataInExec contained "^\s*Executable\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents syn match virataInExec contained "\<\(epilogue\|pro\(logue\|cess\)\|qhandler\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents syn match virataInExec contained "\<\(priority\|stack\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpNumbers syn match virataStatement "^\s*Message\(Id\)\=\>" skipwhite nextgroup=@virataGrpNumbers syn region virataMakeDef transparent matchgroup=virataStatement start="^\s*MakeRule\>" keepend end="$" contains=virataInMake,@virataGrpDefSubsts syn case match syn match virataInMake contained "\" syn case ignore syn match virataStatement "^\s*\(Append\|Copy\|Edit\)Rule\>" syn region virataAlterDef transparent matchgroup=virataStatement start="^\s*AlterRules\>" keepend end="$" contains=virataInAlter,@virataGrpDefSubsts syn match virataInAlter contained "\" skipwhite nextgroup=@virataGrpIdents syn cluster virataGrpInStatmnts contains=virataInImport,virataInExport,virataInExec,virataInProcess,virataInAlter,virataInInstance,virataInModule,virataInColour syn cluster virataGrpStatements contains=@virataGrpInStatmnts,virataStatement,virataImportDef,virataExportDef,virataExecDef,virataProcessDef,virataAlterDef,virataInstanceDef,virataModuleDef,virataColourDef syn region virataCfgFileDef transparent matchgroup=virataCfgStatement start="^\s*Dir\>" start="^\s*\a\{-}File\>" start="^\s*OutputFile\d\d\=\>" start="^\s*\a\w\{-}[NP]PFile\>" keepend end="$" contains=@virataGrpFileIdents syn region virataCfgSizeDef transparent matchgroup=virataCfgStatement start="^\s*\a\{-}Size\>" start="^\s*ConfigInfo\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts,virataIdentError syn region virataCfgNumberDef transparent matchgroup=virataCfgStatement start="^\s*FlashchipNum\(b\(er\=\)\=\)\=\>" start="^\s*Granularity\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts syn region virataCfgMacAddrDef transparent matchgroup=virataCfgStatement start="^\s*MacAddress\>" keepend end="$" contains=virataNumberError,virataStringError,virataIdentError,virataInMacAddr,@virataGrpDefSubsts syn match virataInMacAddr contained "\x[:]\x\{1,2}\>"lc=2 syn match virataInMacAddr contained "\s\x\{1,2}[:]\x"lc=1,me=e-1,he=e-2 nextgroup=virataInMacAddr syn match virataCfgStatement "^\s*Target\>" skipwhite nextgroup=@virataGrpIdents syn cluster virataGrpCfgs contains=virataCfgStatement,virataCfgFileDef,virataCfgSizeDef,virataCfgNumberDef,virataCfgMacAddrDef,virataInMacAddr syn match virataDefine "^\s*\(Un\)\=Set\>" skipwhite nextgroup=@virataGrpIdents syn match virataInclude "^\s*Include\>" skipwhite nextgroup=@virataGrpFileIdents syn match virataDefSubstError "[^$]\$"lc=1 syn match virataDefSubstError "\$\(\w\|{\(.\{-}}\)\=\)" syn case match syn match virataDefSubst "\$\(\d\|[DINORS]\|{\I\i\{-}\(\-\i\{-1,}\)*}\)" syn case ignore syn cluster virataGrpCntnPreCon contains=ALLBUT,@virataGrpInComments,@virataGrpFileIdents,@virataGrpInStatmnts syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*If\>" end="^\s*Endif\>" contains=@virataGrpCntnPreCon syn match virataPreCondit contained "^\s*Else\(\s\+If\)\=\>" syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*ForEach\>" end="^\s*Done\>" contains=@virataGrpCntnPreCon syn region virataPreProc start="^\s*Error\>" start="^\s*Warning\>" oneline end="$" contains=@virataGrpConstants,@virataGrpDefSubsts syn cluster virataGrpDefSubsts contains=virataDefSubstError,virataDefSubst syn cluster virataGrpPreProcs contains=@virataGrpDefSubsts,virataDefine,virataInclude,virataPreConDef,virataPreCondit,virataPreProc syn sync clear syn sync minlines=50 "for multiple region nesting hi def link virataDefSubstError virataPreProcError hi def link virataDefSubst virataPreProc hi def link virataInAlter virataOperator hi def link virataInExec virataOperator hi def link virataInExport virataOperator hi def link virataInImport virataOperator hi def link virataInInstance virataOperator hi def link virataInMake virataOperator hi def link virataInModule virataOperator hi def link virataInProcess virataOperator hi def link virataInMacAddr virataHexNumber hi def link virataComment Comment hi def link virataSpclComment SpecialComment hi def link virataInCommentTodo Todo hi def link virataString String hi def link virataStringError Error hi def link virataCharacter Character hi def link virataSpclChar Special hi def link virataDecNumber Number hi def link virataHexNumber Number hi def link virataSizeNumber Number hi def link virataNumberError Error hi def link virataIdentError Error hi def link virataPreProc PreProc hi def link virataDefine Define hi def link virataInclude Include hi def link virataPreCondit PreCondit hi def link virataPreProcError Error hi def link virataPreProcWarn Todo hi def link virataStatement Statement hi def link virataCfgStatement Statement hi def link virataOperator Operator hi def link virataDirective Keyword let b:current_syntax = "virata" if exists("b:current_syntax") finish endif syn case ignore syn keyword vmasmReg r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 syn keyword vmasmReg ap fp sp pc iv dv syn keyword vmasmOpcode adawi adwc ashl ashq bitb bitw bitl decb decw decl syn keyword vmasmOpcode ediv emul incb incw incl mcomb mcomw mcoml syn keyword vmasmOpcode movzbw movzbl movzwl popl pushl rotl sbwc syn keyword vmasmOpcode cmpv cmpzv cmpc3 cmpc5 locc matchc movc3 movc5 syn keyword vmasmOpcode movtc movtuc scanc skpc spanc crc extv extzv syn keyword vmasmOpcode ffc ffs insv aobleq aoblss bbc bbs bbcci bbssi syn keyword vmasmOpcode blbc blbs brb brw bsbb bsbw caseb casew casel syn keyword vmasmOpcode jmp jsb rsb sobgeq sobgtr callg calls ret syn keyword vmasmOpcode bicpsw bispsw bpt halt index movpsl nop popr pushr xfc syn keyword vmasmOpcode insqhi insqti insque remqhi remqti remque syn keyword vmasmOpcode addp4 addp6 ashp cmpp3 cmpp4 cvtpl cvtlp cvtps cvtpt syn keyword vmasmOpcode cvtsp cvttp divp movp mulp subp4 subp6 editpc syn keyword vmasmOpcode prober probew rei ldpctx svpctx mfpr mtpr bugw bugl syn keyword vmasmOpcode vldl vldq vgathl vgathq vstl vstq vscatl vscatq syn keyword vmasmOpcode vvcvt iota mfvp mtvp vsync syn keyword vmasmOpcode beql[u] bgtr[u] blss[u] syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmOpcode "\" syn match vmasmdecNumber "[+-]\=[0-9]\+\>" syn match vmasmdecNumber "^d[0-9]\+\>" syn match vmasmhexNumber "^x[0-9a-f]\+\>" syn match vmasmoctNumber "^o[0-7]\+\>" syn match vmasmbinNumber "^b[01]\+\>" syn match vmasmfloatNumber "[-+]\=[0-9]\+E[-+]\=[0-9]\+" syn match vmasmfloatNumber "[-+]\=[0-9]\+\.[0-9]*\(E[-+]\=[0-9]\+\)\=" syn match vmasmLabel "^[a-z_$.][a-z0-9_$.]\{,30}::\=" syn match vmasmLabel "\<[0-9]\{1,5}\$:\=" " Local label syn match vmasmOperator "[-+*/@&!\\]" syn match vmasmOperator "=" syn match vmasmOperator "==" " Global assignment syn match vmasmOperator "%length(.*)" syn match vmasmOperator "%locate(.*)" syn match vmasmOperator "%extract(.*)" syn match vmasmOperator "^[amfc]" syn match vmasmOperator "[bwlg]^" syn match vmasmOperator "\<\(not_\)\=equal\>" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\<\(not_\)\=defined\>" syn match vmasmOperator "\<\(not_\)\=blank\>" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\<[gl]t\>" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\" syn match vmasmOperator "\<[nlg]e\>" syn match vmasmOperator "\" syn keyword vmasmTodo contained todo syn match vmasmComment ";.*" contains=vmasmTodo syn match vmasmInclude "\.library\>" syn match vmasmMacro "\.macro\>" syn match vmasmMacro "\.mexit\>" syn match vmasmMacro "\.endm\>" syn match vmasmMacro "\.mcall\>" syn match vmasmMacro "\.mdelete\>" syn match vmasmPreCond "\.iff\=\>" syn match vmasmPreCond "\.if_false\>" syn match vmasmPreCond "\.iftf\=\>" syn match vmasmPreCond "\.if_true\(_false\)\=\>" syn match vmasmPreCond "\.iif\>" syn match vmasmRepeat "\.irpc\=\>" syn match vmasmRepeat "\.repeat\>" syn match vmasmRepeat "\.rept\>" syn match vmasmRepeat "\.endr\>" syn match vmasmDirective "\.address\>" syn match vmasmDirective "\.align\>" syn match vmasmDirective "\.asci[cdiz]\>" syn match vmasmDirective "\.blk[abdfghloqw]\>" syn match vmasmDirective "\.\(signed_\)\=byte\>" syn match vmasmDirective "\.\(no\)\=cross\>" syn match vmasmDirective "\.debug\>" syn match vmasmDirective "\.default displacement\>" syn match vmasmDirective "\.[dfgh]_floating\>" syn match vmasmDirective "\.disable\>" syn match vmasmDirective "\.double\>" syn match vmasmDirective "\.dsabl\>" syn match vmasmDirective "\.enable\=\>" syn match vmasmDirective "\.endc\=\>" syn match vmasmDirective "\.entry\>" syn match vmasmDirective "\.error\>" syn match vmasmDirective "\.even\>" syn match vmasmDirective "\.external\>" syn match vmasmDirective "\.extrn\>" syn match vmasmDirective "\.float\>" syn match vmasmDirective "\.globa\=l\>" syn match vmasmDirective "\.ident\>" syn match vmasmDirective "\.link\>" syn match vmasmDirective "\.list\>" syn match vmasmDirective "\.long\>" syn match vmasmDirective "\.mask\>" syn match vmasmDirective "\.narg\>" syn match vmasmDirective "\.nchr\>" syn match vmasmDirective "\.nlist\>" syn match vmasmDirective "\.ntype\>" syn match vmasmDirective "\.octa\>" syn match vmasmDirective "\.odd\>" syn match vmasmDirective "\.opdef\>" syn match vmasmDirective "\.packed\>" syn match vmasmDirective "\.page\>" syn match vmasmDirective "\.print\>" syn match vmasmDirective "\.psect\>" syn match vmasmDirective "\.quad\>" syn match vmasmDirective "\.ref[1248]\>" syn match vmasmDirective "\.ref16\>" syn match vmasmDirective "\.restore\(_psect\)\=\>" syn match vmasmDirective "\.save\(_psect\)\=\>" syn match vmasmDirective "\.sbttl\>" syn match vmasmDirective "\.\(no\)\=show\>" syn match vmasmDirective "\.\(sub\)\=title\>" syn match vmasmDirective "\.transfer\>" syn match vmasmDirective "\.warn\>" syn match vmasmDirective "\.weak\>" syn match vmasmDirective "\.\(signed_\)\=word\>" syn case match hi def link vmasmComment Comment hi def link vmasmTodo Todo hi def link vmasmhexNumber Number " Constant hi def link vmasmoctNumber Number " Constant hi def link vmasmbinNumber Number " Constant hi def link vmasmdecNumber Number " Constant hi def link vmasmfloatNumber Number " Constant hi def link vmasmReg Identifier hi def link vmasmOperator Identifier hi def link vmasmInclude Include " PreProc hi def link vmasmMacro Macro " PreProc hi def link vmasmDirective Special hi def link vmasmPreCond Special hi def link vmasmOpcode Statement hi def link vmasmCond Conditional " Statement hi def link vmasmRepeat Repeat " Statement hi def link vmasmLabel Type let b:current_syntax = "vmasm" if exists("b:current_syntax") finish endif syn case match syn match voscmStatement "^!" syn match voscmStatement "&\(label\|begin_parameters\|end_parameters\|goto\|attach_input\|break\|continue\|control\|detach_input\|display_line\|display_line_partial\|echo\|eof\|eval\|if\|mode\|return\|while\|set\|set_string\|then\|else\|do\|done\|end\)\>" syn match voscmJump "\(&label\|&goto\) *" nextgroup=voscmLabelId syn match voscmLabelId contained "\<[A-Za-z][A-Z_a-z0-9]* *$" syn match voscmSetvar "\(&set_string\|&set\) *" nextgroup=voscmVariable syn match voscmError "\(&set_string\|&set\) *&" syn match voscmVariable contained "\<[A-Za-z][A-Z_a-z0-9]\+\>" syn keyword voscmParamKeyword contained number req string switch allow byte disable_input hidden length longword max min no_abbrev output_path req required req_for_form word syn region voscmParamList matchgroup=voscmParam start="&begin_parameters" end="&end_parameters" contains=voscmParamKeyword,voscmString,voscmParamName,voscmParamId syn match voscmParamName contained "\(^\s*[A-Za-z_0-9]\+\s\+\)\@<=\k\+" syn match voscmParamId contained "\(^\s*\)\@<=\k\+" syn region par1 matchgroup=par1 start=/(/ end=/)/ contains=voscmFunction,voscmIdentifier,voscmString transparent syn keyword voscmFunction contained abs access after ask before break byte calc ceil command_status concat syn keyword voscmFunction contained contents path_name copy count current_dir current_module date date_time syn keyword voscmFunction contained decimal directory_name end_of_file exists file_info floor given group_name syn keyword voscmFunction contained has_access hexadecimal home_dir index iso_date iso_date_time language_name syn keyword voscmFunction contained length lock_type locked ltrim master_disk max message min mod module_info syn keyword voscmFunction contained module_name object_name online path_name person_name process_dir process_info syn keyword voscmFunction contained process_type quote rank referencing_dir reverse rtrim search syn keyword voscmFunction contained software_purchased string substitute substr system_name terminal_info syn keyword voscmFunction contained terminal_name time translate trunc unique_string unquote user_name verify syn keyword voscmFunction contained where_path syn keyword voscmTodo contained TODO FIXME XXX DEBUG NOTE syn match voscmTab "\t\+" syn keyword voscmCommand add_entry_names add_library_path add_profile analyze_pc_samples attach_default_output attach_port batch bind break_process c c_preprocess call_thru cancel_batch_requests cancel_device_reservation cancel_print_requests cc change_current_dir check_posix cobol comment_on_manual compare_dirs compare_files convert_text_file copy_dir copy_file copy_tape cpp create_data_object create_deleted_record_index create_dir create_file create_index create_record_index create_tape_volumes cvt_fixed_to_stream cvt_stream_to_fixed debug delete_dir delete_file delete_index delete_library_path detach_default_output detach_port dismount_tape display display_access display_access_list display_batch_status display_current_dir display_current_module display_date_time display_default_access_list display_device_info display_dir_status display_disk_info display_disk_usage display_error display_file display_file_status display_line display_notices display_object_module_info display_print_defaults display_print_status display_program_module display_system_usage display_tape_params display_terminal_parameters dump_file dump_record dump_tape edit edit_form emacs enforce_region_locks fortran get_external_variable give_access give_default_access handle_sig_dfl harvest_pc_samples help kill line_edit link link_dirs list list_batch_requests list_devices list_gateways list_library_paths list_modules list_port_attachments list_print_requests list_process_cmd_limits list_save_tape list_systems list_tape list_terminal_types list_users locate_files locate_large_files login logout mount_tape move_device_reservation move_dir move_file mp_debug nls_edit_form pascal pl1 position_tape preprocess_file print profile propagate_access read_tape ready remove_access remove_default_access rename reserve_device restore_object save_object send_message set set_cpu_time_limit set_expiration_date set_external_variable set_file_allocation set_implicit_locking set_index_flags set_language set_library_paths set_line_wrap_width set_log_protected_file set_owner_access set_pipe_file set_priority set_ready set_safety_switch set_second_tape set_tape_drive_params set_tape_file_params set_tape_mount_params set_terminal_parameters set_text_file set_time_zone sleep sort start_logging start_process stop_logging stop_process tail_file text_data_merge translate_links truncate_file unlink update_batch_requests update_print_requests update_process_cmd_limits use_abbreviations use_message_file vcc verify_posix_access verify_save verify_system_access walk_dir where_command where_path who_locked write_tape syn match voscmIdentifier "&[A-Za-z][a-z0-9_A-Z]*&" syn match voscmString "'[^']*'" syn match voscmNumber "\<\d\+\>" syn match voscmDecimalNumber "\.\d\+\([eE][-+]\=\d\)\=\>" syn region voscmComment start="^[ ]*&[ ]" end="$" contains=voscmTodo syn match voscmComment "^&$" syn match voscmContinuation "&+$" hi def link voscmConditional Conditional hi def link voscmStatement Statement hi def link voscmSetvar Statement hi def link voscmNumber Number hi def link voscmDecimalNumber Float hi def link voscmString String hi def link voscmIdentifier Identifier hi def link voscmVariable Identifier hi def link voscmComment Comment hi def link voscmJump Statement hi def link voscmContinuation Macro hi def link voscmLabelId String hi def link voscmParamList NONE hi def link voscmParamId Identifier hi def link voscmParamName String hi def link voscmParam Statement hi def link voscmParamKeyword Statement hi def link voscmFunction Function hi def link voscmCommand Structure hi def link voscmTodo Todo hi def link voscmTab Error hi def link voscmError Error let b:current_syntax = "voscm" if exists("b:current_syntax") finish endif syn keyword VRMLFields ambientIntensity appearance attenuation syn keyword VRMLFields autoOffset avatarSize axisOfRotation backUrl syn keyword VRMLFields bboxCenter bboxSize beamWidth beginCap syn keyword VRMLFields bottom bottomRadius bottomUrl ccw center syn keyword VRMLFields children choice collide color colorIndex syn keyword VRMLFields colorPerVertex convex coord coordIndex syn keyword VRMLFields creaseAngle crossSection cutOffAngle syn keyword VRMLFields cycleInterval description diffuseColor syn keyword VRMLFields directOutput direction diskAngle syn keyword VRMLFields emissiveColor enabled endCap family syn keyword VRMLFields fieldOfView fogType fontStyle frontUrl syn keyword VRMLFields geometry groundAngle groundColor headlight syn keyword VRMLFields height horizontal info intensity jump syn keyword VRMLFields justify key keyValue language leftToRight syn keyword VRMLFields leftUrl length level location loop material syn keyword VRMLFields maxAngle maxBack maxExtent maxFront syn keyword VRMLFields maxPosition minAngle minBack minFront syn keyword VRMLFields minPosition mustEvaluate normal normalIndex syn keyword VRMLFields normalPerVertex offset on orientation syn keyword VRMLFields parameter pitch point position priority syn keyword VRMLFields proxy radius range repeatS repeatT rightUrl syn keyword VRMLFields rotation scale scaleOrientation shininess syn keyword VRMLFields side size skyAngle skyColor solid source syn keyword VRMLFields spacing spatialize specularColor speed spine syn keyword VRMLFields startTime stopTime string style texCoord syn keyword VRMLFields texCoordIndex texture textureTransform title syn keyword VRMLFields top topToBottom topUrl translation syn keyword VRMLFields transparency type url vector visibilityLimit syn keyword VRMLFields visibilityRange whichChoice xDimension syn keyword VRMLFields xSpacing zDimension zSpacing syn match VRMLFields "\<[A-Za-z_][A-Za-z0-9_]*\>" contains=VRMLComment,VRMLProtos,VRMLfTypes syn keyword VRMLEvents addChildren ambientIntensity_changed syn keyword VRMLEvents appearance_changed attenuation_changed syn keyword VRMLEvents autoOffset_changed avatarSize_changed syn keyword VRMLEvents axisOfRotation_changed backUrl_changed syn keyword VRMLEvents beamWidth_changed bindTime bottomUrl_changed syn keyword VRMLEvents center_changed children_changed syn keyword VRMLEvents choice_changed collideTime collide_changed syn keyword VRMLEvents color_changed coord_changed syn keyword VRMLEvents cutOffAngle_changed cycleInterval_changed syn keyword VRMLEvents cycleTime description_changed syn keyword VRMLEvents diffuseColor_changed direction_changed syn keyword VRMLEvents diskAngle_changed duration_changed syn keyword VRMLEvents emissiveColor_changed enabled_changed syn keyword VRMLEvents enterTime exitTime fogType_changed syn keyword VRMLEvents fontStyle_changed fraction_changed syn keyword VRMLEvents frontUrl_changed geometry_changed syn keyword VRMLEvents groundAngle_changed headlight_changed syn keyword VRMLEvents hitNormal_changed hitPoint_changed syn keyword VRMLEvents hitTexCoord_changed intensity_changed syn keyword VRMLEvents isActive isBound isOver jump_changed syn keyword VRMLEvents keyValue_changed key_changed leftUrl_changed syn keyword VRMLEvents length_changed level_changed syn keyword VRMLEvents location_changed loop_changed syn keyword VRMLEvents material_changed maxAngle_changed syn keyword VRMLEvents maxBack_changed maxExtent_changed syn keyword VRMLEvents maxFront_changed maxPosition_changed syn keyword VRMLEvents minAngle_changed minBack_changed syn keyword VRMLEvents minFront_changed minPosition_changed syn keyword VRMLEvents normal_changed offset_changed on_changed syn keyword VRMLEvents orientation_changed parameter_changed syn keyword VRMLEvents pitch_changed point_changed position_changed syn keyword VRMLEvents priority_changed radius_changed syn keyword VRMLEvents removeChildren rightUrl_changed syn keyword VRMLEvents rotation_changed scaleOrientation_changed syn keyword VRMLEvents scale_changed set_ambientIntensity syn keyword VRMLEvents set_appearance set_attenuation syn keyword VRMLEvents set_autoOffset set_avatarSize syn keyword VRMLEvents set_axisOfRotation set_backUrl set_beamWidth syn keyword VRMLEvents set_bind set_bottomUrl set_center syn keyword VRMLEvents set_children set_choice set_collide syn keyword VRMLEvents set_color set_colorIndex set_coord syn keyword VRMLEvents set_coordIndex set_crossSection syn keyword VRMLEvents set_cutOffAngle set_cycleInterval syn keyword VRMLEvents set_description set_diffuseColor syn keyword VRMLEvents set_direction set_diskAngle syn keyword VRMLEvents set_emissiveColor set_enabled set_fogType syn keyword VRMLEvents set_fontStyle set_fraction set_frontUrl syn keyword VRMLEvents set_geometry set_groundAngle set_headlight syn keyword VRMLEvents set_height set_intensity set_jump set_key syn keyword VRMLEvents set_keyValue set_leftUrl set_length syn keyword VRMLEvents set_level set_location set_loop set_material syn keyword VRMLEvents set_maxAngle set_maxBack set_maxExtent syn keyword VRMLEvents set_maxFront set_maxPosition set_minAngle syn keyword VRMLEvents set_minBack set_minFront set_minPosition syn keyword VRMLEvents set_normal set_normalIndex set_offset set_on syn keyword VRMLEvents set_orientation set_parameter set_pitch syn keyword VRMLEvents set_point set_position set_priority syn keyword VRMLEvents set_radius set_rightUrl set_rotation syn keyword VRMLEvents set_scale set_scaleOrientation set_shininess syn keyword VRMLEvents set_size set_skyAngle set_skyColor syn keyword VRMLEvents set_source set_specularColor set_speed syn keyword VRMLEvents set_spine set_startTime set_stopTime syn keyword VRMLEvents set_string set_texCoord set_texCoordIndex syn keyword VRMLEvents set_texture set_textureTransform set_topUrl syn keyword VRMLEvents set_translation set_transparency set_type syn keyword VRMLEvents set_url set_vector set_visibilityLimit syn keyword VRMLEvents set_visibilityRange set_whichChoice syn keyword VRMLEvents shininess_changed size_changed syn keyword VRMLEvents skyAngle_changed skyColor_changed syn keyword VRMLEvents source_changed specularColor_changed syn keyword VRMLEvents speed_changed startTime_changed syn keyword VRMLEvents stopTime_changed string_changed syn keyword VRMLEvents texCoord_changed textureTransform_changed syn keyword VRMLEvents texture_changed time topUrl_changed syn keyword VRMLEvents touchTime trackPoint_changed syn keyword VRMLEvents translation_changed transparency_changed syn keyword VRMLEvents type_changed url_changed value_changed syn keyword VRMLEvents vector_changed visibilityLimit_changed syn keyword VRMLEvents visibilityRange_changed whichChoice_changed syn region VRMLEvents start="\S+[^0-9]+\.[A-Za-z_]+"ms=s+1 end="\(,\|$\|\s\)"me=e-1 syn keyword VRMLNodes Anchor Appearance AudioClip Background syn keyword VRMLNodes Billboard Box Collision Color syn keyword VRMLNodes ColorInterpolator Cone Coordinate syn keyword VRMLNodes CoordinateInterpolator Cylinder syn keyword VRMLNodes CylinderSensor DirectionalLight syn keyword VRMLNodes ElevationGrid Extrusion Fog FontStyle syn keyword VRMLNodes Group ImageTexture IndexedFaceSet syn keyword VRMLNodes IndexedLineSet Inline LOD Material syn keyword VRMLNodes MovieTexture NavigationInfo Normal syn keyword VRMLNodes NormalInterpolator OrientationInterpolator syn keyword VRMLNodes PixelTexture PlaneSensor PointLight syn keyword VRMLNodes PointSet PositionInterpolator syn keyword VRMLNodes ProximitySensor ScalarInterpolator syn keyword VRMLNodes Script Shape Sound Sphere SphereSensor syn keyword VRMLNodes SpotLight Switch Text TextureCoordinate syn keyword VRMLNodes TextureTransform TimeSensor TouchSensor syn keyword VRMLNodes Transform Viewpoint VisibilitySensor syn keyword VRMLNodes WorldInfo syn match VRMLNodes "[A-Za-z_][A-Za-z0-9_]*\(,\|\s\)*{"me=e-1 syn region VRMLNodes start="\\(,\|\s\)*[A-Za-z_]"ms=e start="\\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment syn region VRMLNodes start="PROTO\>\(,\|\s\)*[A-Za-z_]"ms=e start="PROTO\>\(,\|\s\)*" end="[\s]*\["me=e-1 contains=VRMLProtos,VRMLComment syn keyword VRMLTypes SFBool SFColor MFColor SFFloat MFFloat syn keyword VRMLTypes SFImage SFInt32 MFInt32 SFNode MFNode syn keyword VRMLTypes SFRotation MFRotation SFString MFString syn keyword VRMLTypes SFTime MFTime SFVec2f MFVec2f SFVec3f MFVec3f syn keyword VRMLfTypes field exposedField eventIn eventOut syn keyword VRMLValues TRUE FALSE NULL syn keyword VRMLProtos contained EXTERNPROTO PROTO IS syn keyword VRMLRoutes contained ROUTE TO syn include @jscript $VIMRUNTIME/syntax/javascript.vim syn region VRMLjScriptString contained start=+"\(\(javascript\)\|\(vrmlscript\)\|\(ecmascript\)\):+ms=e+1 skip=+\\\\\|\\"+ end=+"+me=e-1 contains=@jscript syn match VRMLSpecial contained "\\[0-9][0-9][0-9]\|\\." syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=VRMLSpecial,VRMLjScriptString syn match VRMLCharacter "'[^\\]'" syn match VRMLSpecialCharacter "'\\.'" syn match VRMLNumber "[-+]\=\<[0-9]\+\(\.[0-9]\+\)\=\([eE]\{1}[-+]\=[0-9]\+\)\=\>\|0[xX][0-9a-fA-F]\+\>" syn match VRMLNumber "0[xX][0-9a-fA-F]\+\>" syn match VRMLComment "#.*$" syn region VRMLRouteNode start="[^O]TO\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment syn region VRMLRouteNode start="ROUTE\(,\|\s\)*" end="\."me=e-1 contains=VRMLRoutes,VRMLComment syn region VRMLInstName start="DEF\>"hs=e+1 skip="DEF\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment syn region VRMLInstName start="USE\>"hs=e+1 skip="USE\(,\|\s\)*" end="[A-Za-z0-9_]\(\s\|$\|,\)"me=e contains=VRMLInstances,VRMLComment syn keyword VRMLInstances contained DEF USE syn sync minlines=1 syn sync fromstart syn region braceFold start="{" end="}" transparent fold contains=TOP syn region bracketFold start="\[" end="]" transparent fold contains=TOP syn region VRMLString start=+"+ skip=+\\\\\|\\"+ end=+"+ fold contains=VRMLSpecial,VRMLjScriptString hi def link VRMLCharacter VRMLString hi def link VRMLSpecialCharacter VRMLSpecial hi def link VRMLNumber VRMLString hi def link VRMLValues VRMLString hi def link VRMLString String hi def link VRMLSpecial Special hi def link VRMLComment Comment hi def link VRMLNodes Statement hi def link VRMLFields Type hi def link VRMLEvents Type hi def link VRMLfTypes LineNr hi def link VRMLInstances PreCondit hi def link VRMLRoutes PreCondit hi def link VRMLProtos PreProc hi def link VRMLRouteNode Identifier hi def link VRMLInstName Identifier hi def link VRMLTypes Identifier let b:current_syntax = "vrml" if exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo-=C syn include @vroomVim syntax/vim.vim syn include @vroomShell syntax/sh.vim syntax region vroomAction \ matchgroup=vroomOutput \ start='\m^ ' end='\m$' keepend \ contains=vroomControlBlock syntax region vroomAction \ matchgroup=vroomOutput \ start='\m^ & ' end='\m$' keepend \ contains=vroomControlBlock syntax match vroomOutput '\m^ &$' syntax region vroomMessageBody \ matchgroup=vroomMessage \ start='\m^ \~ ' end='\m$' keepend \ contains=vroomControlBlock syntax region vroomColoredAction \ matchgroup=vroomInput \ start='\m^ > ' end='\m$' keepend \ contains=vimNotation,vroomControlBlock syntax region vroomAction \ matchgroup=vroomInput \ start='\m^ % ' end='\m$' keepend \ contains=vimNotation,vroomControlBlock syntax region vroomAction \ matchgroup=vroomContinuation \ start='\m^ |' end='\m$' keepend syntax region vroomAction \ start='\m^ \ze:' end='\m$' keepend \ contains=@vroomVim,vroomControlBlock syntax region vroomAction \ matchgroup=vroomDirective \ start='\m^ @\i\+' end='\m$' keepend \ contains=vroomControlBlock syntax region vroomSystemAction \ matchgroup=vroomSystem \ start='\m^ ! ' end='\m$' keepend \ contains=@vroomShell,vroomControlBlock syntax region vroomHijackAction \ matchgroup=vroomHijack \ start='\m^ \$ ' end='\m$' keepend \ contains=vroomControlBlock syntax match vroomControlBlock contains=vroomControlEscape,@vroomControls \ '\v \([^&()][^()]*\)$' syntax match vroomControlEscape '\m&' contained syntax cluster vroomControls \ contains=vroomDelay,vroomMode,vroomBuffer,vroomRange \,vroomChannel,vroomBind,vroomStrictness syntax match vroomRange '\v\.(,\+?(\d+|\$)?)?' contained syntax match vroomRange '\v\d*,\+?(\d+|\$)?' contained syntax match vroomBuffer '\v\d+,@!' contained syntax match vroomDelay '\v\d+(\.\d+)?s' contained syntax match vroomMode '\v<%(regex|glob|verbatim)' contained syntax match vroomChannel '\v<%(stderr|stdout|command|status)>' contained syntax match vroomBind '\v' contained syntax match vroomStrictness '\v\<%(STRICT|RELAXED|GUESS-ERRORS)\>' contained highlight default link vroomInput Identifier highlight default link vroomDirective vroomInput highlight default link vroomControlBlock vroomInput highlight default link vroomSystem vroomInput highlight default link vroomOutput Statement highlight default link vroomContinuation Constant highlight default link vroomHijack Special highlight default link vroomColoredAction Statement highlight default link vroomSystemAction vroomSystem highlight default link vroomHijackAction vroomHijack highlight default link vroomMessage vroomOutput highlight default link vroomMessageBody Constant highlight default link vroomControlEscape Special highlight default link vroomBuffer vroomInput highlight default link vroomRange Include highlight default link vroomMode Constant highlight default link vroomDelay Type highlight default link vroomStrictness vroomMode highlight default link vroomChannel vroomMode highlight default link vroomBind vroomMode let b:current_syntax = 'vroom' let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword vsejclKeyword DLBL EXEC JOB ASSGN EOJ syn keyword vsejclField JNM CLASS DISP USER SYSID JSEP SIZE syn keyword vsejclField VSAM syn region vsejclComment start="^/\*" end="$" syn region vsejclComment start="^[\* ]\{}$" end="$" syn region vsejclMisc start="^ " end="$" contains=Jparms syn match vsejclString /'.\{-}'/ syn match vsejclParms /(.\{-})/ contained hi def link vsejclComment Comment hi def link vsejclField Type hi def link vsejclKeyword Statement hi def link vsejclObject Constant hi def link vsejclString Constant hi def link vsejclMisc Special hi def link vsejclParms Constant let b:current_syntax = "vsejcl" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn cluster wastCluster contains=wastModule,wastInstWithType,wastInstGeneral,wastParamInst,wastControlInst,wastString,wastNamedVar,wastUnnamedVar,wastFloat,wastNumber,wastComment,wastList,wastType syn match wastInstWithType "\%((\s*\)\@<=\<\%(i32\|i64\|f32\|f64\|memory\)\.[[:alnum:]_]\+\%(/\%(i32\|i64\|f32\|f64\)\)\=\>\%(\s\+\%(align\|offset\)=\)\=" contained display syn match wastInstGeneral "\%((\s*\)\@<=\<[[:alnum:]_]\+\>" contained display syn match wastControlInst "\%((\s*\)\@<=\<\%(block\|end\|loop\|if\|else\|unreachable\|nop\|br\|br_if\|br_table\|return\|call\|call_indirect\)\>" contained display syn match wastParamInst "\%((\s*\)\@<=\<\%(drop\|select\)\>" contained display syn match wastNamedVar "$\+[[:alnum:]!#$%&'∗./:=>" display contained syn match wastNumber "\<-\=0x\x\%(_\=\x\)*\>" display contained syn region wastComment start=";;" end="$" display syn region wastComment start="(;;\@!" end=";)" syn region wastList matchgroup=wastListDelimiter start="(;\@!" matchgroup=wastListDelimiter end=";\@:p:h/pascal.vim syntax match webIgnoredStuff "@[@']" let b:current_syntax = "web" if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'webmacro' endif runtime! syntax/html.vim unlet b:current_syntax syn cluster htmlPreProc add=webmacroIf,webmacroUse,webmacroBraces,webmacroParse,webmacroInclude,webmacroSet,webmacroForeach,webmacroComment syn match webmacroVariable "\$[a-zA-Z0-9.()]*;\=" syn match webmacroNumber "[-+]\=\d\+[lL]\=" contained syn keyword webmacroBoolean true false contained syn match webmacroSpecial "\\." contained syn region webmacroString contained start=+"+ end=+"+ contains=webmacroSpecial,webmacroVariable syn region webmacroString contained start=+'+ end=+'+ contains=webmacroSpecial,webmacroVariable syn region webmacroList contained matchgroup=Structure start="\[" matchgroup=Structure end="\]" contains=webmacroString,webmacroVariable,webmacroNumber,webmacroBoolean,webmacroList syn region webmacroIf start="#if" start="#else" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces syn region webmacroForeach start="#foreach" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces syn match webmacroSet "#set .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList syn match webmacroInclude "#include .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList syn match webmacroParse "#parse .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList syn region webmacroUse matchgroup=PreProc start="#use .*" matchgroup=PreProc end="^-.*" contains=webmacroHash,@HtmlTop syn region webmacroBraces matchgroup=Structure start="{" matchgroup=Structure end="}" contained transparent syn match webmacroBracesError "[{}]" syn match webmacroComment "##.*$" syn match webmacroHash "[#{}\$]" contained hi def link webmacroComment CommentTitle hi def link webmacroVariable PreProc hi def link webmacroIf webmacroStatement hi def link webmacroForeach webmacroStatement hi def link webmacroSet webmacroStatement hi def link webmacroInclude webmacroStatement hi def link webmacroParse webmacroStatement hi def link webmacroStatement Function hi def link webmacroNumber Number hi def link webmacroBoolean Boolean hi def link webmacroSpecial Special hi def link webmacroString String hi def link webmacroBracesError Error let b:current_syntax = "webmacro" if main_syntax == 'webmacro' unlet main_syntax endif if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn match wgetComment "#.*$" contains=wgetTodo contained syn keyword wgetTodo TODO NOTE FIXME XXX contained syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline syn case ignore syn keyword wgetBoolean on off contained syn keyword wgetNumber inf contained syn case match syn match wgetNumber "\<\%(\d\+\|inf\)\>" contained syn match wgetQuota "\<\d\+[kKmM]\>" contained syn match wgetTime "\<\d\+[smhdw]\>" contained let s:commands = map([ \ "accept", \ "add_hostdir", \ "adjust_extension", \ "always_rest", \ "ask_password", \ "auth_no_challenge", \ "background", \ "backup_converted", \ "backups", \ "base", \ "bind_address", \ "ca_certificate", \ "ca_directory", \ "cache", \ "certificate", \ "certificate_type", \ "check_certificate", \ "connect_timeout", \ "content_disposition", \ "continue", \ "convert_links", \ "cookies", \ "cut_dirs", \ "debug", \ "default_page", \ "delete_after", \ "dns_cache", \ "dns_timeout", \ "dir_prefix", \ "dir_struct", \ "domains", \ "dot_bytes", \ "dots_in_line", \ "dot_spacing", \ "dot_style", \ "egd_file", \ "exclude_directories", \ "exclude_domains", \ "follow_ftp", \ "follow_tags", \ "force_html", \ "ftp_passwd", \ "ftp_password", \ "ftp_user", \ "ftp_proxy", \ "glob", \ "header", \ "html_extension", \ "htmlify", \ "http_keep_alive", \ "http_passwd", \ "http_password", \ "http_proxy", \ "https_proxy", \ "http_user", \ "ignore_case", \ "ignore_length", \ "ignore_tags", \ "include_directories", \ "inet4_only", \ "inet6_only", \ "input", \ "iri", \ "keep_session_cookies", \ "kill_longer", \ "limit_rate", \ "load_cookies", \ "locale", \ "local_encoding", \ "logfile", \ "login", \ "max_redirect", \ "mirror", \ "netrc", \ "no_clobber", \ "no_parent", \ "no_proxy", \ "numtries", \ "output_document", \ "page_requisites", \ "passive_ftp", \ "passwd", \ "password", \ "post_data", \ "post_file", \ "prefer_family", \ "preserve_permissions", \ "private_key", \ "private_key_type", \ "progress", \ "protocol_directories", \ "proxy_passwd", \ "proxy_password", \ "proxy_user", \ "quiet", \ "quota", \ "random_file", \ "random_wait", \ "read_timeout", \ "reclevel", \ "recursive", \ "referer", \ "reject", \ "relative_only", \ "remote_encoding", \ "remove_listing", \ "restrict_file_names", \ "retr_symlinks", \ "retry_connrefused", \ "robots", \ "save_cookies", \ "save_headers", \ "secure_protocol", \ "server_response", \ "show_all_dns_entries", \ "simple_host_check", \ "span_hosts", \ "spider", \ "strict_comments", \ "sslcertfile", \ "sslcertkey", \ "timeout", \ "time_stamping", \ "use_server_timestamps", \ "tries", \ "trust_server_names", \ "user", \ "use_proxy", \ "user_agent", \ "verbose", \ "wait", \ "wait_retry"], \ "substitute(v:val, '_', '[-_]\\\\=', 'g')") syn case ignore for cmd in s:commands exe 'syn match wgetCommand "' . cmd . '" nextgroup=wgetAssignmentOperator skipwhite contained' endfor syn case match syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite syn match wgetAssignmentOperator "=" nextgroup=wgetString,wgetBoolean,wgetNumber,wgetQuota,wgetTime skipwhite contained hi def link wgetAssignmentOperator Special hi def link wgetBoolean Boolean hi def link wgetCommand Identifier hi def link wgetComment Comment hi def link wgetNumber Number hi def link wgetQuota Number hi def link wgetString String hi def link wgetTodo Todo let b:current_syntax = "wget" let &cpo = s:cpo_save unlet s:cpo_save syn match Space " " syn match Tab "\t" if &background == "dark" hi def Space ctermbg=darkred guibg=#500000 hi def Tab ctermbg=darkgreen guibg=#003000 else hi def Space ctermbg=lightred guibg=#ffd0d0 hi def Tab ctermbg=lightgreen guibg=#d0ffd0 endif if exists("b:current_syntax") finish endif syn case ignore syn keyword winbatchCtl if then else endif break end return exit next syn keyword winbatchCtl while for gosub goto switch select to case syn keyword winbatchCtl endselect endwhile endselect endswitch syn region winbatchVar start=+%+ end=+%+ syn region winbatchString start=+"+ end=+"+ contains=winbatchVar syn match winbatchComment ";.*$" syn match winbatchLabel "^\ *:[0-9a-zA-Z_\-]\+\>" syn match winbatchConstant "@[0_9a-zA-Z_\-]\+" syn match winbatchNumber "\<[0-9]\+\(u\=l\=\|lu\|f\)\>" syn keyword winbatchImplicit aboveicons acc_attrib acc_chng_nt acc_control acc_create syn keyword winbatchImplicit acc_delete acc_full_95 acc_full_nt acc_list acc_pfull_nt syn keyword winbatchImplicit acc_pmang_nt acc_print_nt acc_read acc_read_95 acc_read_nt syn keyword winbatchImplicit acc_write amc arrange ascending attr_a attr_a attr_ci attr_ci syn keyword winbatchImplicit attr_dc attr_dc attr_di attr_di attr_dm attr_dm attr_h attr_h syn keyword winbatchImplicit attr_ic attr_ic attr_p attr_p attr_ri attr_ri attr_ro attr_ro syn keyword winbatchImplicit attr_sh attr_sh attr_sy attr_sy attr_t attr_t attr_x attr_x syn keyword winbatchImplicit avogadro backscan boltzmann cancel capslock check columns syn keyword winbatchImplicit commonformat cr crlf ctrl default default deg2rad descending syn keyword winbatchImplicit disable drive electric enable eulers false faraday float8 syn keyword winbatchImplicit fwdscan gftsec globalgroup gmtsec goldenratio gravitation hidden syn keyword winbatchImplicit icon lbutton lclick ldblclick lf lightmps lightmtps localgroup syn keyword winbatchImplicit magfield major mbokcancel mbutton mbyesno mclick mdblclick minor syn keyword winbatchImplicit msformat multiple ncsaformat no none none noresize normal syn keyword winbatchImplicit notify nowait numlock off on open parsec parseonly pi syn keyword winbatchImplicit planckergs planckjoules printer rad2deg rbutton rclick rdblclick syn keyword winbatchImplicit regclasses regcurrent regmachine regroot regusers rows save syn keyword winbatchImplicit scrolllock server shift single sorted stack string tab tile syn keyword winbatchImplicit true uncheck unsorted wait wholesection word1 word2 word4 yes syn keyword winbatchImplicit zoomed about abs acos addextender appexist appwaitclose asin syn keyword winbatchImplicit askfilename askfiletext askitemlist askline askpassword askyesno syn keyword winbatchImplicit atan average beep binaryalloc binarycopy binaryeodget binaryeodset syn keyword winbatchImplicit binaryfree binaryhashrec binaryincr binaryincr2 binaryincr4 syn keyword winbatchImplicit binaryincrflt binaryindex binaryindexnc binaryoletype binarypeek syn keyword winbatchImplicit binarypeek2 binarypeek4 binarypeekflt binarypeekstr binarypoke syn keyword winbatchImplicit binarypoke2 binarypoke4 binarypokeflt binarypokestr binaryread syn keyword winbatchImplicit binarysort binarystrcnt binarywrite boxbuttondraw boxbuttonkill syn keyword winbatchImplicit boxbuttonstat boxbuttonwait boxcaption boxcolor syn keyword winbatchImplicit boxdataclear boxdatatag syn keyword winbatchImplicit boxdestroy boxdrawcircle boxdrawline boxdrawrect boxdrawtext syn keyword winbatchImplicit boxesup boxmapmode boxnew boxopen boxpen boxshut boxtext boxtextcolor syn keyword winbatchImplicit boxtextfont boxtitle boxupdates break buttonnames by call syn keyword winbatchImplicit callext ceiling char2num clipappend clipget clipput syn keyword winbatchImplicit continue cos cosh datetime syn keyword winbatchImplicit ddeexecute ddeinitiate ddepoke dderequest ddeterminate syn keyword winbatchImplicit ddetimeout debug debugdata decimals delay dialog syn keyword winbatchImplicit dialogbox dirattrget dirattrset dirchange direxist syn keyword winbatchImplicit dirget dirhome diritemize dirmake dirremove dirrename syn keyword winbatchImplicit dirwindows diskexist diskfree diskinfo diskscan disksize syn keyword winbatchImplicit diskvolinfo display dllcall dllfree dllhinst dllhwnd dllload syn keyword winbatchImplicit dosboxcursorx dosboxcursory dosboxgetall dosboxgetdata syn keyword winbatchImplicit dosboxheight dosboxscrmode dosboxversion dosboxwidth dosversion syn keyword winbatchImplicit drop edosgetinfo edosgetvar edoslistvars edospathadd edospathchk syn keyword winbatchImplicit edospathdel edossetvar syn keyword winbatchImplicit endsession envgetinfo envgetvar environment syn keyword winbatchImplicit environset envitemize envlistvars envpathadd envpathchk syn keyword winbatchImplicit envpathdel envsetvar errormode exclusive execute exetypeinfo syn keyword winbatchImplicit exp fabs fileappend fileattrget fileattrset fileclose syn keyword winbatchImplicit filecompare filecopy filedelete fileexist fileextension filefullname syn keyword winbatchImplicit fileitemize filelocate filemapname filemove filenameeval1 syn keyword winbatchImplicit filenameeval2 filenamelong filenameshort fileopen filepath syn keyword winbatchImplicit fileread filerename fileroot filesize filetimecode filetimeget syn keyword winbatchImplicit filetimeset filetimetouch fileverinfo filewrite fileymdhms syn keyword winbatchImplicit findwindow floor getexacttime gettickcount syn keyword winbatchImplicit iconarrange iconreplace ignoreinput inidelete inideletepvt syn keyword winbatchImplicit iniitemize iniitemizepvt iniread inireadpvt iniwrite iniwritepvt syn keyword winbatchImplicit installfile int intcontrol isdefined isfloat isint iskeydown syn keyword winbatchImplicit islicensed isnumber itemcount itemextract iteminsert itemlocate syn keyword winbatchImplicit itemremove itemselect itemsort keytoggleget keytoggleset syn keyword winbatchImplicit lasterror log10 logdisk loge max message min mod mouseclick syn keyword winbatchImplicit mouseclickbtn mousedrag mouseinfo mousemove msgtextget n3attach syn keyword winbatchImplicit n3captureend n3captureprt n3chgpassword n3detach n3dirattrget syn keyword winbatchImplicit n3dirattrset n3drivepath n3drivepath2 n3drivestatus n3fileattrget syn keyword winbatchImplicit n3fileattrset n3getloginid n3getmapped n3getnetaddr n3getuser syn keyword winbatchImplicit n3getuserid n3logout n3map n3mapdelete n3mapdir n3maproot n3memberdel syn keyword winbatchImplicit n3memberget n3memberset n3msgsend n3msgsendall n3serverinfo syn keyword winbatchImplicit n3serverlist n3setsrchdrv n3usergroups n3version n4attach syn keyword winbatchImplicit n4captureend n4captureprt n4chgpassword n4detach n4dirattrget syn keyword winbatchImplicit n4dirattrset n4drivepath n4drivestatus n4fileattrget n4fileattrset syn keyword winbatchImplicit n4getloginid n4getmapped n4getnetaddr n4getuser n4getuserid syn keyword winbatchImplicit n4login n4logout n4map n4mapdelete n4mapdir n4maproot n4memberdel syn keyword winbatchImplicit n4memberget n4memberset n4msgsend n4msgsendall n4serverinfo syn keyword winbatchImplicit n4serverlist n4setsrchdrv n4usergroups n4version netadddrive syn keyword winbatchImplicit netaddprinter netcancelcon netdirdialog netgetcon netgetuser syn keyword winbatchImplicit netinfo netresources netversion num2char objectclose syn keyword winbatchImplicit objectopen parsedata pause playmedia playmidi playwaveform syn keyword winbatchImplicit print random regapp regclosekey regconnect regcreatekey syn keyword winbatchImplicit regdeletekey regdelvalue regentrytype regloadhive regopenkey syn keyword winbatchImplicit regquerybin regquerydword regqueryex regqueryexpsz regqueryitem syn keyword winbatchImplicit regquerykey regquerymulsz regqueryvalue regsetbin syn keyword winbatchImplicit regsetdword regsetex regsetexpsz regsetmulsz regsetvalue syn keyword winbatchImplicit regunloadhive reload reload rtstatus run runenviron syn keyword winbatchImplicit runexit runhide runhidewait runicon runiconwait runshell runwait syn keyword winbatchImplicit runzoom runzoomwait sendkey sendkeyschild sendkeysto syn keyword winbatchImplicit sendmenusto shellexecute shortcutedit shortcutextra shortcutinfo syn keyword winbatchImplicit shortcutmake sin sinh snapshot sounds sqrt syn keyword winbatchImplicit srchfree srchinit srchnext strcat strcharcount strcmp syn keyword winbatchImplicit strfill strfix strfixchars stricmp strindex strlen syn keyword winbatchImplicit strlower strreplace strscan strsub strtrim strupper syn keyword winbatchImplicit tan tanh tcpaddr2host tcpftpchdir tcpftpclose tcpftpget syn keyword winbatchImplicit tcpftplist tcpftpmode tcpftpopen tcpftpput tcphost2addr tcphttpget syn keyword winbatchImplicit tcphttppost tcpparmget tcpparmset tcpping tcpsmtp terminate syn keyword winbatchImplicit textbox textboxsort textoutbufdel textoutbuffer textoutdebug syn keyword winbatchImplicit textoutfree textoutinfo textoutreset textouttrack textouttrackb syn keyword winbatchImplicit textouttrackp textoutwait textselect timeadd timedate syn keyword winbatchImplicit timedelay timediffdays timediffsecs timejulianday timejultoymd syn keyword winbatchImplicit timesubtract timewait timeymdhms version versiondll syn keyword winbatchImplicit w3addcon w3cancelcon w3dirbrowse w3getcaps w3getcon w3netdialog syn keyword winbatchImplicit w3netgetuser w3prtbrowse w3version w95accessadd w95accessdel syn keyword winbatchImplicit w95adddrive w95addprinter w95cancelcon w95dirdialog w95getcon syn keyword winbatchImplicit w95getuser w95resources w95shareadd w95sharedel w95shareset syn keyword winbatchImplicit w95version waitforkey wallpaper webbaseconv webcloselog syn keyword winbatchImplicit webcmddata webcondata webcounter webdatdata webdumperror webhashcode syn keyword winbatchImplicit webislocal weblogline webopenlog webout weboutfile webparamdata syn keyword winbatchImplicit webparamnames websettimeout webverifycard winactivate syn keyword winbatchImplicit winactivchild winarrange winclose winclosenot winconfig winexename syn keyword winbatchImplicit winexist winparset winparget winexistchild wingetactive syn keyword winbatchImplicit winhelp winhide winiconize winidget winisdos winitemchild syn keyword winbatchImplicit winitemize winitemnameid winmetrics winname winparmget syn keyword winbatchImplicit winparmset winplace winplaceget winplaceset syn keyword winbatchImplicit winposition winresources winshow winstate winsysinfo syn keyword winbatchImplicit wintitle winversion winwaitchild winwaitclose winwaitexist syn keyword winbatchImplicit winzoom wnaddcon wncancelcon wncmptrinfo wndialog syn keyword winbatchImplicit wndlgbrowse wndlgcon wndlgcon2 wndlgcon3 syn keyword winbatchImplicit wndlgcon4 wndlgdiscon wndlgnoshare wndlgshare wngetcaps syn keyword winbatchImplicit wngetcon wngetuser wnnetnames wnrestore wnservers wnsharecnt syn keyword winbatchImplicit wnsharename wnsharepath wnshares wntaccessadd wntaccessdel syn keyword winbatchImplicit wntaccessget wntadddrive wntaddprinter wntcancelcon wntdirdialog syn keyword winbatchImplicit wntgetcon wntgetuser wntlistgroups wntmemberdel wntmemberget syn keyword winbatchImplicit wntmembergrps wntmemberlist wntmemberset wntresources wntshareadd syn keyword winbatchImplicit wntsharedel wntshareset wntversion wnversion wnwrkgroups wwenvunload syn keyword winbatchImplicit xbaseconvert xcursorset xdisklabelget xdriveready xextenderinfo syn keyword winbatchImplicit xgetchildhwnd xgetelapsed xhex xmemcompact xmessagebox syn keyword winbatchImplicit xsendmessage xverifyccard yield hi def link winbatchLabel PreProc hi def link winbatchCtl Operator hi def link winbatchStatement Statement hi def link winbatchTodo Todo hi def link winbatchString String hi def link winbatchVar Type hi def link winbatchComment Comment hi def link winbatchImplicit Special hi def link winbatchNumber Number hi def link winbatchConstant StorageClass let b:current_syntax = "winbatch" if exists("b:current_syntax") finish endif runtime! syntax/html.vim unlet b:current_syntax if !exists("main_syntax") let main_syntax = 'wml' endif syn match wmlNextLine "\\$" syn clear htmlTag syn region htmlTag start=+<[^/<]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition syn keyword htmlTagName contained gfont imgbg imgdot lowsrc syn keyword htmlTagName contained navbar:define navbar:header syn keyword htmlTagName contained navbar:footer navbar:prolog syn keyword htmlTagName contained navbar:epilog navbar:button syn keyword htmlTagName contained navbar:filter navbar:debug syn keyword htmlTagName contained navbar:render syn keyword htmlTagName contained preload rollover syn keyword htmlTagName contained space hspace vspace over syn keyword htmlTagName contained ps ds pi ein big sc spaced headline syn keyword htmlTagName contained ue subheadline zwue verbcode syn keyword htmlTagName contained isolatin pod sdf text url verbatim syn keyword htmlTagName contained xtable syn keyword htmlTagName contained csmap fsview import box syn keyword htmlTagName contained case:upper case:lower syn keyword htmlTagName contained grid cell info lang: logo page syn keyword htmlTagName contained set-var restore syn keyword htmlTagName contained array:push array:show set-var ifdef syn keyword htmlTagName contained say m4 symbol dump enter divert syn keyword htmlTagName contained toc syn keyword htmlTagName contained wml card do refresh oneevent catch spawn syn keyword htmlArg contained adjust background base bdcolor bdspace syn keyword htmlArg contained bdwidth complete copyright created crop syn keyword htmlArg contained direction description domainname eperlfilter syn keyword htmlArg contained file hint imgbase imgstar interchar interline syn keyword htmlArg contained keephr keepindex keywords layout spacing syn keyword htmlArg contained padding nonetscape noscale notag notypo syn keyword htmlArg contained onload oversrc pos select slices style syn keyword htmlArg contained subselected txtcol_select txtcol_normal syn keyword htmlArg contained txtonly via syn keyword htmlArg contained mode columns localsrc ordered syn match wmlComment "^\s*#.*" syn match wmlSharpBang "^#!.*" syn match wmlUsed contained "\s\s*[A-Za-z:_-]*" syn match wmlUse "^\s*#\s*use\s\+" contains=wmlUsed syn match wmlInclude "^\s*#\s*include.+" syn region wmlBody contained start=+<<+ end=+>>+ syn match wmlLocationId contained "[A-Za-z]\+" syn region wmlLocation start=+<<+ end=+>>+ contains=wmlLocationId syn match wmlDivert "\.\.[a-zA-Z_]\+>>" syn match wmlDivertEnd "<<\.\." syn match wmlDefineName contained "\s\+[A-Za-z-]\+" syn region htmlTagName start="\<\(define-tag\|define-region\)" end="\>" contains=wmlDefineName if main_syntax != 'perl' syn include @wmlPerlScript syntax/perl.vim unlet b:current_syntax syn region perlScript start=++ keepend end=++ contains=@wmlPerlScript,wmlPerlTag syn region perlScript start=+<:+ keepend end=+:>+ contains=@wmlPerlScript,wmlPerlTag syn match wmlPerlTag contained "" contains=wmlPerlTagN syn keyword wmlPerlTagN contained perl hi link wmlPerlTag htmlTag hi link wmlPerlTagN htmlStatement endif syn region wmlVerbatimText start=++ keepend end=++ contains=wmlVerbatimTag syn match wmlVerbatimTag contained "" contains=wmlVerbatimTagN syn keyword wmlVerbatimTagN contained verbatim hi link wmlVerbatimTag htmlTag hi link wmlVerbatimTagN htmlStatement if main_syntax == "html" syn sync match wmlHighlight groupthere NONE "" syn sync match wmlHighlightSkip "^.*['\"].*$" syn sync minlines=10 endif hi def link wmlNextLine Special hi def link wmlUse Include hi def link wmlUsed String hi def link wmlBody Special hi def link wmlDiverted Label hi def link wmlDivert Delimiter hi def link wmlDivertEnd Delimiter hi def link wmlLocationId Label hi def link wmlLocation Delimiter hi def link wmlDefineName String hi def link wmlComment Comment hi def link wmlInclude Include hi def link wmlSharpBang PreProc let b:current_syntax = "wml" if exists("b:current_syntax") finish endif let s:wsh_cpo_save = &cpo set cpo&vim runtime! syntax/xml.vim unlet b:current_syntax syn case ignore syn include @wshVBScript :p:h/vb.vim unlet b:current_syntax syn include @wshJavaScript :p:h/javascript.vim unlet b:current_syntax syn region wshVBScript \ matchgroup=xmlTag start="]*VBScript\(>\|[^>]*[^/>]>\)" \ matchgroup=xmlEndTag end="" \ fold \ contains=@wshVBScript \ keepend syn region wshJavaScript \ matchgroup=xmlTag start="]*J\(ava\)\=Script\(>\|[^>]*[^/>]>\)" \ matchgroup=xmlEndTag end="" \ fold \ contains=@wshJavaScript \ keepend syn cluster xmlRegionHook add=wshVBScript,wshJavaScript let b:current_syntax = "wsh" let &cpo = s:wsh_cpo_save unlet s:wsh_cpo_save if exists("b:current_syntax") finish endif syn keyword wsmlHeader wsmlVariant syn keyword wsmlNamespace namespace syn keyword wsmlTopLevel concept instance relationInstance ofType usesMediator usesService relation sharedVariables importsOntology syn keyword wsmlOntology hasValue memberOf ofType impliesType subConceptOf syn keyword wsmlAxiom axiom definedBy syn keyword wsmlService assumption effect postcondition precondition capability interface syn keyword wsmlTopLevel ooMediator wwMediator wgMediator ggMediator syn keyword wsmlMediation usesService source target syn match wsmlDataTypes "\( _string\| _decimal\| _integer\| _float\| _double\| _iri\| _sqname\| _boolean\| _duration\| _dateTime\| _time\| _date\| _gyearmonth\| _gyear\| _gmonthday\| _gday\| _gmonth\| _hexbinary\| _base64binary\)\((\S*)\)\?" contains=wsmlString,wsmlNumber,wsmlCharacter syn keyword wsmlTopLevel goal webService ontology syn keyword wsmlKeywordsInsideLEs true false memberOf hasValue subConceptOf ofType impliesType and or implies impliedBy equivalent neg naf forall exists syn keyword wsmlNFP nfp endnfp nonFunctionalProperties endNonFunctionalProperties syn region wsmlNFPregion start="nfp\|nonFunctionalProperties" end="endnfp\|endNonFunctionalProperties" contains=ALL syn region wsmlNamespace start="namespace" end="}" contains=wsmlIdentifier syn match wsmlOperator "!=\|:=:\|=<\|>=\|=\|+\|\*\|/\|<->\|->\|<-\|:-\|!-\|-\|<\|>" syn match wsmlBrace "(\|)\|\[\|\]\|{\|}" syn match wsmlIdentifier +_"\S*"+ syn match wsmlIdentifier "_#\d*" syn match wsmlSqName "[0-9A-Za-z]\+#[0-9A-Za-z]\+" syn match wsmlVariable "?[0-9A-Za-z]\+" syn keyword wsmlBehavioral choreography orchestration transitionRules syn keyword wsmlChoreographyPri stateSignature in out shared static controlled syn keyword wsmlChoreographySec with do withGrounding forall endForall choose if then endIf syn match wsmlChoreographyTer "\(\s\|\_^\)\(add\|delete\|update\)\s*(.*)" contains=wsmlKeywordsInsideLEs,wsmlIdentifier,wsmlSqName,wsmlString,wsmlNumber,wsmlDataTypes,wsmlVariable syn keyword wsmlTodo contained TODO syn keyword wsmlFixMe contained FIXME if exists("wsml_comment_strings") syn region wsmlCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=wsmlSpecial,wsmlCommentStar,wsmlSpecialChar,@Spell syn region wsmlComment2String contained start=+"+ end=+$\|"+ contains=wsmlSpecial,wsmlSpecialChar,@Spell syn match wsmlCommentCharacter contained "'\\[^']\{1,6\}'" contains=wsmlSpecialChar syn match wsmlCommentCharacter contained "'\\''" contains=wsmlSpecialChar syn match wsmlCommentCharacter contained "'[^\\]'" syn cluster wsmlCommentSpecial add=wsmlCommentString,wsmlCommentCharacter,wsmlNumber syn cluster wsmlCommentSpecial2 add=wsmlComment2String,wsmlCommentCharacter,wsmlNumber endif syn region wsmlComment start="/\*" end="\*/" contains=@wsmlCommentSpecial,wsmlTodo,wsmlFixMe,@Spell syn match wsmlCommentStar contained "^\s*\*[^/]"me=e-1 syn match wsmlCommentStar contained "^\s*\*$" syn match wsmlLineComment "//.*" contains=@wsmlCommentSpecial2,wsmlTodo,@Spell syn cluster wsmlTop add=wsmlComment,wsmlLineComment syn match wsmlComment "/\*\*/" syn region wsmlString start=+"+ end=+"+ contains=wsmlSpecialChar,wsmlSpecialError,@Spell syn match wsmlCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError syn match wsmlCharacter "'\\''" contains=javaSpecialChar syn match wsmlCharacter "'[^\\]'" syn match wsmlNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" syn match wsmlNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" syn match wsmlNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match wsmlNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" syn match wsmlSpecial "\\u\d\{4\}" syn cluster wsmlTop add=wsmlString,wsmlCharacter,wsmlNumber,wsmlSpecial,wsmlStringError hi def link wsmlHeader TypeDef hi def link wsmlNamespace TypeDef hi def link wsmlOntology Statement hi def link wsmlAxiom TypeDef hi def link wsmlService TypeDef hi def link wsmlNFP TypeDef hi def link wsmlTopLevel TypeDef hi def link wsmlMediation TypeDef hi def link wsmlBehavioral TypeDef hi def link wsmlChoreographyPri TypeDef hi def link wsmlChoreographySec Operator hi def link wsmlChoreographyTer Special hi def link wsmlString String hi def link wsmlIdentifier Normal hi def link wsmlSqName Normal hi def link wsmlVariable Define hi def link wsmlKeywordsInsideLEs Operator hi def link wsmlOperator Operator hi def link wsmlBrace Operator hi def link wsmlCharacter Character hi def link wsmlNumber Number hi def link wsmlDataTypes Special hi def link wsmlComment Comment hi def link wsmlDocComment Comment hi def link wsmlLineComment Comment hi def link wsmlTodo Todo hi def link wsmlFixMe Error hi def link wsmlCommentTitle SpecialComment hi def link wsmlCommentStar wsmlComment let b:current_syntax = "wsml" let b:spell_options="contained" if exists("b:current_syntax") finish endif syn match wvdialComment "^;.*$"lc=1 syn match wvdialComment "[^\\];.*$"lc=1 syn match wvdialSection "^\s*\[.*\]" syn match wvdialValue "=.*$"ms=s+1 syn match wvdialValue "\s*[^ ;"' ]\+"lc=1 syn match wvdialVar "^\s*\(Inherits\|Modem\|Baud\|Init.\|Phone\|Area\ Code\|Dial\ Prefix\|Dial\ Command\|Login\|Login\| Prompt\|Password\|Password\ Prompt\|PPPD\ Path\|Force\ Address\|Remote\ Name\|Carrier\ Check\|Stupid\ [Mm]ode\|New\ PPPD\|Default\ Reply\|Auto\ Reconnect\|SetVolume\|Username\)" syn match wvdialEqual "=" hi def link wvdialComment Comment hi def link wvdialSection PreProc hi def link wvdialVar Identifier hi def link wvdialValue String hi def link wvdialEqual Statement let b:current_syntax = "wvdial" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim runtime! syntax/xml.vim unlet b:current_syntax syn include @javascriptTop syntax/javascript.vim unlet b:current_syntax syn region xblJavascript \ matchgroup=xmlCdataStart start=++ \ contains=@javascriptTop keepend extend let b:current_syntax = "xbl" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match if !exists("xdefaults_no_colon_errors") syntax match xdefaultsErrorLine "^\s*[a-zA-Z.*]\+\s\+[^: ]\+" endif syn match xdefaultsLabel +^[^:]\{-}:+he=e-1 contains=xdefaultsPunct,xdefaultsSpecial,xdefaultsLineEnd syn region xdefaultsValue keepend start=+:+lc=1 skip=+\\+ end=+$+ contains=xdefaultsSpecial,xdefaultsLabel,xdefaultsLineEnd syn match xdefaultsSpecial contained +#override+ syn match xdefaultsSpecial contained +#augment+ syn match xdefaultsPunct contained +[.*:]+ syn match xdefaultsLineEnd contained +\\$+ syn match xdefaultsLineEnd contained +\\n\\$+ syn match xdefaultsLineEnd contained +\\n$+ syn match xdefaultsComment "^!.*$" contains=xdefaultsTodo,@Spell syn match xdefaultsCommentH "^#.*$" syn region xdefaultsComment start="/\*" end="\*/" contains=xdefaultsTodo,@Spell syntax match xdefaultsCommentError "\*/" syn keyword xdefaultsTodo contained TODO FIXME XXX display syn region xdefaultsPreProc start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" skip="\\$" end="$" contains=xdefaultsSymbol if !exists("xdefaults_no_if0") syn region xdefaultsCppOut start="^\s*#\s*if\s\+0\>" end=".\|$" contains=xdefaultsCppOut2 syn region xdefaultsCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=xdefaultsCppSkip syn region xdefaultsCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=xdefaultsCppSkip endif syn region xdefaultsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match xdefaultsIncluded contained "<[^>]*>" syn match xdefaultsInclude "^\s*#\s*include\>\s*["<]" contains=xdefaultsIncluded syn cluster xdefaultsPreProcGroup contains=xdefaultsPreProc,xdefaultsIncluded,xdefaultsInclude,xdefaultsDefine,xdefaultsCppOut,xdefaultsCppOut2,xdefaultsCppSkip syn region xdefaultsDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@xdefaultsPreProcGroup,xdefaultsCommentH,xdefaultsErrorLine,xdefaultsLabel,xdefaultsValue syn region xdefaultsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@xdefaultsPreProcGroup,xdefaultsCommentH,xdefaultsErrorLine,xdefaultsLabel,xdefaultsValue syn keyword xdefaultsSymbol contained SERVERHOST syn match xdefaultsSymbol contained "SRVR_[a-zA-Z0-9_]\+" syn keyword xdefaultsSymbol contained HOST syn keyword xdefaultsSymbol contained DISPLAY_NUM syn keyword xdefaultsSymbol contained CLIENTHOST syn match xdefaultsSymbol contained "CLNT_[a-zA-Z0-9_]\+" syn keyword xdefaultsSymbol contained RELEASE syn keyword xdefaultsSymbol contained REVISION syn keyword xdefaultsSymbol contained VERSION syn keyword xdefaultsSymbol contained VENDOR syn match xdefaultsSymbol contained "VNDR_[a-zA-Z0-9_]\+" syn match xdefaultsSymbol contained "EXT_[a-zA-Z0-9_]\+" syn keyword xdefaultsSymbol contained NUM_SCREENS syn keyword xdefaultsSymbol contained SCREEN_NUM syn keyword xdefaultsSymbol contained BITS_PER_RGB syn keyword xdefaultsSymbol contained CLASS syn keyword xdefaultsSymbol contained StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor syn match xdefaultsSymbol contained "CLASS_\(StaticGray\|GrayScale\|StaticColor\|PseudoColor\|TrueColor\|DirectColor\)" syn keyword xdefaultsSymbol contained COLOR syn match xdefaultsSymbol contained "CLASS_\(StaticGray\|GrayScale\|StaticColor\|PseudoColor\|TrueColor\|DirectColor\)_[0-9]\+" syn keyword xdefaultsSymbol contained HEIGHT syn keyword xdefaultsSymbol contained WIDTH syn keyword xdefaultsSymbol contained PLANES syn keyword xdefaultsSymbol contained X_RESOLUTION syn keyword xdefaultsSymbol contained Y_RESOLUTION hi def link xdefaultsLabel Type hi def link xdefaultsValue Constant hi def link xdefaultsComment Comment hi def link xdefaultsCommentH xdefaultsComment hi def link xdefaultsPreProc PreProc hi def link xdefaultsInclude xdefaultsPreProc hi def link xdefaultsCppSkip xdefaultsCppOut hi def link xdefaultsCppOut2 xdefaultsCppOut hi def link xdefaultsCppOut Comment hi def link xdefaultsIncluded String hi def link xdefaultsDefine Macro hi def link xdefaultsSymbol Statement hi def link xdefaultsSpecial Statement hi def link xdefaultsErrorLine Error hi def link xdefaultsCommentError Error hi def link xdefaultsPunct Normal hi def link xdefaultsLineEnd Special hi def link xdefaultsTodo Todo let b:current_syntax = "xdefaults" if exists("b:current_syntax") finish endif if !exists("b:xf86conf_xfree86_version") if exists("xf86conf_xfree86_version") let b:xf86conf_xfree86_version = xf86conf_xfree86_version else let b:xf86conf_xfree86_version = 4 endif endif syn case ignore syn match xf86confComment "#.*$" contains=xf86confTodo syn case match syn keyword xf86confTodo FIXME TODO XXX NOT contained syn case ignore syn match xf86confTodo "???" contained syn keyword xf86confSectionError Section contained syn keyword xf86confSectionError EndSection syn keyword xf86confSubSectionError SubSection syn keyword xf86confSubSectionError EndSubSection syn keyword xf86confModeSubSectionError Mode syn keyword xf86confModeSubSectionError EndMode syn cluster xf86confSectionErrors contains=xf86confSectionError,xf86confSubSectionError,xf86confModeSubSectionError if b:xf86conf_xfree86_version >= 4 syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confConstant,xf86confOptionName oneline keepend nextgroup=xf86confValue skipwhite else syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confOptionName oneline keepend endif syn match xf86confSpecialChar "\\\d\d\d\|\\." contained syn match xf86confDecimalNumber "\(\s\|-\)\zs\d*\.\=\d\+\>" syn match xf86confFrequency "\(\s\|-\)\zs\d\+\.\=\d*\(Hz\|k\|kHz\|M\|MHz\)" syn match xf86confOctalNumber "\<0\o\+\>" syn match xf86confOctalNumberError "\<0\o\+[89]\d*\>" syn match xf86confHexadecimalNumber "\<0x\x\+\>" syn match xf86confValue "\s\+.*$" contained contains=xf86confComment,xf86confString,xf86confFrequency,xf86conf\w\+Number,xf86confConstant syn keyword xf86confOption Option nextgroup=xf86confString skipwhite syn match xf86confModeLineValue "\"[^\"]\+\"\(\_s\+[0-9.]\+\)\{9}" nextgroup=xf86confSync skipwhite skipnl if b:xf86conf_xfree86_version >= 4 syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError syn region xf86confSectionModule matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Module\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOption,xf86confKeyword syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOption,xf86confKeyword syn region xf86confSectionModes matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Modes\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOption,xf86confKeyword syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors else syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSectionMX matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Module\|Xinput\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors endif if b:xf86conf_xfree86_version >= 4 command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName contained else command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName contained nextgroup=xf86confValue,xf86confComment skipwhite endif Xf86confdeclopt 18bitBus AGPFastWrite AGPMode Accel AllowClosedownGrabs AllowDeactivateGrabs Xf86confdeclopt AllowMouseOpenFail AllowNonLocalModInDev AllowNonLocalXvidtune AlwaysCore Xf86confdeclopt AngleOffset AutoRepeat BaudRate BeamTimeout Beep BlankTime BlockWrite BottomX Xf86confdeclopt BottomY ButtonNumber ButtonThreshold Buttons ByteSwap CacheLines ChordMiddle Xf86confdeclopt ClearDTR ClearDTS ClickMode CloneDisplay CloneHSync CloneMode CloneVRefresh Xf86confdeclopt ColorKey Composite CompositeSync CoreKeyboard CorePointer Crt2Memory CrtScreen Xf86confdeclopt CrtcNumber CyberShadow CyberStretch DDC DDCMode DMAForXv DPMS Dac6Bit DacSpeed Xf86confdeclopt DataBits Debug DebugLevel DefaultServerLayout DeltaX DeltaY Device DeviceName Xf86confdeclopt DisableModInDev DisableVidModeExtension Display Display1400 DontVTSwitch Xf86confdeclopt DontZap DontZoom DoubleScan DozeMode DozeScan DozeTime DragLockButtons Xf86confdeclopt DualCount DualRefresh EarlyRasPrecharge Emulate3Buttons Emulate3Timeout Xf86confdeclopt EmulateWheel EmulateWheelButton EmulateWheelInertia EnablePageFlip EnterCount Xf86confdeclopt EstimateSizesAggressively ExternDisp FPClock16 FPClock24 FPClock32 Xf86confdeclopt FPClock8 FPDither FastDram FifoAggresive FifoConservative FifoModerate Xf86confdeclopt FireGL3000 FixPanelSize FlatPanel FlipXY FlowControl ForceCRT1 ForceCRT2Type Xf86confdeclopt ForceLegacyCRT ForcePCIMode FpmVRAM FrameBufferWC FullMMIO GammaBrightness Xf86confdeclopt HWClocks HWCursor HandleSpecialKeys HistorySize Interlace Interlaced InternDisp Xf86confdeclopt InvX InvY InvertX InvertY KeepShape LCDClock LateRasPrecharge LcdCenter Xf86confdeclopt LeftAlt Linear MGASDRAM MMIO MMIOCache MTTR MaxX MaxY MaximumXPosition Xf86confdeclopt MaximumYPosition MinX MinY MinimumXPosition MinimumYPosition NoAccel Xf86confdeclopt NoAllowMouseOpenFail NoAllowNonLocalModInDev NoAllowNonLocalXvidtune Xf86confdeclopt NoBlockWrite NoCompositeSync NoCompression NoCrtScreen NoCyberShadow NoDCC Xf86confdeclopt NoDDC NoDac6Bit NoDebug NoDisableModInDev NoDisableVidModeExtension NoDontZap Xf86confdeclopt NoDontZoom NoFireGL3000 NoFixPanelSize NoFpmVRAM NoFrameBufferWC NoHWClocks Xf86confdeclopt NoHWCursor NoHal NoLcdCenter NoLinear NoMGASDRAM NoMMIO NoMMIOCache NoMTTR Xf86confdeclopt NoOverClockMem NoOverlay NoPC98 NoPM NoPciBurst NoPciRetry NoProbeClock Xf86confdeclopt NoSTN NoSWCursor NoShadowFb NoShowCache NoSlowEDODRAM NoStretch NoSuspendHack Xf86confdeclopt NoTexturedVideo NoTrapSignals NoUseFBDev NoUseModeline NoUseVclk1 NoVTSysReq Xf86confdeclopt NoXVideo NvAGP OSMImageBuffers OffTime Origin OverClockMem Overlay Xf86confdeclopt PC98 PCIBurst PM PWMActive PWMSleep PanelDelayCompensation PanelHeight Xf86confdeclopt PanelOff PanelWidth Parity PciBurst PciRetry Pixmap Port PressDur PressPitch Xf86confdeclopt PressVol ProbeClocks ProgramFPRegs Protocol RGBBits ReleaseDur ReleasePitch Xf86confdeclopt ReportingMode Resolution RightAlt RightCtl Rotate STN SWCursor SampleRate Xf86confdeclopt ScreenNumber ScrollLock SendCoreEvents SendDragEvents Serial ServerNumLock Xf86confdeclopt SetLcdClk SetMClk SetRefClk ShadowFb ShadowStatus ShowCache SleepMode Xf86confdeclopt SleepScan SleepTime SlowDram SlowEDODRAM StandbyTime StopBits Stretch Xf86confdeclopt SuspendHack SuspendTime SwapXY SyncOnGreen TV TVOutput TVOverscan TVStandard Xf86confdeclopt TVXPosOffset TVYPosOffset TexturedVideo Threshold Tilt TopX TopY TouchTime Xf86confdeclopt TrapSignals Type USB UseBIOS UseFB UseFBDev UseFlatPanel UseModeline Xf86confdeclopt UseROMData UseVclk1 VTInit VTSysReq VTime VideoKey Vmin XAxisMapping Xf86confdeclopt XLeds XVideo XaaNoCPUToScreenColorExpandFill XaaNoColor8x8PatternFillRect Xf86confdeclopt XaaNoColor8x8PatternFillTrap XaaNoDashedBresenhamLine XaaNoDashedTwoPointLine Xf86confdeclopt XaaNoImageWriteRect XaaNoMono8x8PatternFillRect XaaNoMono8x8PatternFillTrap Xf86confdeclopt XaaNoOffscreenPixmaps XaaNoPixmapCache XaaNoScanlineCPUToScreenColorExpandFill Xf86confdeclopt XaaNoScanlineImageWriteRect XaaNoScreenToScreenColorExpandFill Xf86confdeclopt XaaNoScreenToScreenCopy XaaNoSolidBresenhamLine XaaNoSolidFillRect Xf86confdeclopt XaaNoSolidFillTrap XaaNoSolidHorVertLine XaaNoSolidTwoPointLine Xinerama Xf86confdeclopt XkbCompat XkbDisable XkbGeometry XkbKeycodes XkbKeymap XkbLayout XkbModel Xf86confdeclopt XkbOptions XkbRules XkbSymbols XkbTypes XkbVariant XvBskew XvHsync XvOnCRT2 Xf86confdeclopt XvRskew XvVsync YAxisMapping ZAxisMapping ZoomOnLCD delcommand Xf86confdeclopt syn keyword xf86confKeyword Device Driver FontPath Group Identifier Load ModelName ModulePath Monitor RGBPath VendorName VideoAdaptor Visual nextgroup=xf86confComment,xf86confString skipwhite syn keyword xf86confKeyword BiosBase Black BoardName BusID ChipID ChipRev Chipset nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword ClockChip Clocks DacSpeed DefaultDepth DefaultFbBpp nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword DefaultColorDepth nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Depth DisplaySize DotClock FbBpp Flags Gamma HorizSync nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Hskew HTimings InputDevice IOBase MemBase Mode nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Modes Ramdac Screen TextClockFreq UseModes VendorName nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword VertRefresh VideoRam ViewPort Virtual VScan VTimings nextgroup=xf86confComment,xf86confValue syn keyword xf86confKeyword Weight White nextgroup=xf86confComment,xf86confValue syn keyword xf86confModeLine ModeLine nextgroup=xf86confComment,xf86confModeLineValue skipwhite skipnl if b:xf86conf_xfree86_version >= 4 syn keyword xf86confConstant true false on off yes no omit contained else syn keyword xf86confConstant Meta Compose Control endif syn keyword xf86confConstant StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained syn keyword xf86confConstant Absolute RightOf LeftOf Above Below Relative StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained syn match xf86confSync "\(\s\+[+-][CHV]_*Sync\)\+" contained if b:xf86conf_xfree86_version >= 4 syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" syn sync match xf86confSyncSectionModule grouphere xf86confSectionModule "^\s*Section\s\+\"Module\"" syn sync match xf86confSyncSectionModes groupthere xf86confSectionModes "^\s*Section\s\+\"Modes\"" else syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\"" syn sync match xf86confSyncSectionMX grouphere xf86confSectionMX "^\s*Section\s\+\"\(Module\|Xinput\)\"" endif syn sync match xf86confSyncSectionMonitor groupthere xf86confSectionMonitor "^\s*Section\s\+\"Monitor\"" syn sync match xf86confSyncSectionScreen groupthere xf86confSectionScreen "^\s*Section\s\+\"Screen\"" syn sync match xf86confSyncEndSection groupthere NONE "^\s*End_*Section\s*$" hi def link xf86confComment Comment hi def link xf86confTodo Todo hi def link xf86confSectionDelim Statement hi def link xf86confOptionName Identifier hi def link xf86confSectionError xf86confError hi def link xf86confSubSectionError xf86confError hi def link xf86confModeSubSectionError xf86confError hi def link xf86confOctalNumberError xf86confError hi def link xf86confError Error hi def link xf86confOption xf86confKeyword hi def link xf86confModeLine xf86confKeyword hi def link xf86confKeyword Type hi def link xf86confDecimalNumber xf86confNumber hi def link xf86confOctalNumber xf86confNumber hi def link xf86confHexadecimalNumber xf86confNumber hi def link xf86confFrequency xf86confNumber hi def link xf86confModeLineValue Constant hi def link xf86confNumber Constant hi def link xf86confSync xf86confConstant hi def link xf86confConstant Special hi def link xf86confSpecialChar Special hi def link xf86confString String hi def link xf86confValue Constant let b:current_syntax = "xf86conf" runtime! syntax/html.vim let b:current_syntax = "xhtml" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword xinetdTodo contained TODO FIXME XXX NOTE syn region xinetdComment display oneline start='^\s*#' end='$' \ contains=xinetdTodo,@Spell syn match xinetdService '^\s*service\>' \ nextgroup=xinetdServiceName skipwhite syn match xinetdServiceName contained '\S\+' \ nextgroup=xinetdServiceGroup skipwhite skipnl syn match xinetdDefaults '^\s*defaults' \ nextgroup=xinetdServiceGroup skipwhite skipnl syn region xinetdServiceGroup contained transparent \ matchgroup=xinetdServiceGroupD start='{' \ matchgroup=xinetdServiceGroupD end='}' \ contains=xinetdAttribute,xinetdReqAttribute, \ xinetdDisable syn keyword xinetdReqAttribute contained user server protocol \ nextgroup=xinetdStringEq skipwhite syn keyword xinetdAttribute contained id group bind \ interface \ nextgroup=xinetdStringEq skipwhite syn match xinetdStringEq contained display '=' \ nextgroup=xinetdString skipwhite syn match xinetdString contained display '\S\+' syn keyword xinetdAttribute contained type nextgroup=xinetdTypeEq skipwhite syn match xinetdTypeEq contained display '=' \ nextgroup=xinetdType skipwhite syn keyword xinetdType contained RPC INTERNAL TCPMUX TCPMUXPLUS \ UNLISTED \ nextgroup=xinetdType skipwhite syn keyword xinetdAttribute contained flags \ nextgroup=xinetdFlagsEq skipwhite syn cluster xinetdFlagsC contains=xinetdFlags,xinetdDeprFlags syn match xinetdFlagsEq contained display '=' \ nextgroup=@xinetdFlagsC skipwhite syn keyword xinetdFlags contained INTERCEPT NORETRY IDONLY NAMEINARGS \ NODELAY KEEPALIVE NOLIBWRAP SENSOR IPv4 IPv6 \ nextgroup=@xinetdFlagsC skipwhite syn keyword xinetdDeprFlags contained REUSE nextgroup=xinetdFlagsC skipwhite syn keyword xinetdDisable contained disable \ nextgroup=xinetdBooleanEq skipwhite syn match xinetdBooleanEq contained display '=' \ nextgroup=xinetdBoolean skipwhite syn keyword xinetdBoolean contained yes no syn keyword xinetdReqAttribute contained socket_type \ nextgroup=xinetdSocketTypeEq skipwhite syn match xinetdSocketTypeEq contained display '=' \ nextgroup=xinetdSocketType skipwhite syn keyword xinetdSocketType contained stream dgram raw seqpacket syn keyword xinetdReqAttribute contained wait \ nextgroup=xinetdBooleanEq skipwhite syn keyword xinetdAttribute contained groups mdns \ nextgroup=xinetdBooleanEq skipwhite syn keyword xinetdAttribute contained instances per_source rlimit_cpu \ rlimit_data rlimit_rss rlimit_stack \ nextgroup=xinetdUNumberEq skipwhite syn match xinetdUNumberEq contained display '=' \ nextgroup=xinetdUnlimited,xinetdNumber \ skipwhite syn keyword xinetdUnlimited contained UNLIMITED syn match xinetdNumber contained display '\<\d\+\>' syn keyword xinetdAttribute contained nice \ nextgroup=xinetdSignedNumEq skipwhite syn match xinetdSignedNumEq contained display '=' \ nextgroup=xinetdSignedNumber skipwhite syn match xinetdSignedNumber contained display '[+-]\=\d\+\>' syn keyword xinetdAttribute contained server_args \ enabled \ nextgroup=xinetdStringsEq skipwhite syn match xinetdStringsEq contained display '=' \ nextgroup=xinetdStrings skipwhite syn match xinetdStrings contained display '\S\+' \ nextgroup=xinetdStrings skipwhite syn keyword xinetdAttribute contained only_from no_access passenv \ nextgroup=xinetdStringsAdvEq skipwhite syn match xinetdStringsAdvEq contained display '[+-]\==' \ nextgroup=xinetdStrings skipwhite syn keyword xinetdAttribute contained access_times \ nextgroup=xinetdTimeRangesEq skipwhite syn match xinetdTimeRangesEq contained display '=' \ nextgroup=xinetdTimeRanges skipwhite syn match xinetdTimeRanges contained display \ '\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)-\%(0?\d\|1\d\|2[0-3]\):\%(0?\d\|[1-5]\d\)' \ nextgroup=xinetdTimeRanges skipwhite syn keyword xinetdAttribute contained log_type nextgroup=xinetdLogTypeEq \ skipwhite syn match xinetdLogTypeEq contained display '=' \ nextgroup=xinetdLogType skipwhite syn keyword xinetdLogType contained SYSLOG nextgroup=xinetdSyslogType \ skipwhite syn keyword xinetdLogType contained FILE nextgroup=xinetdLogFile skipwhite syn keyword xinetdSyslogType contained daemon auth authpriv user mail lpr \ news uucp ftp local0 local1 local2 local3 \ local4 local5 local6 local7 \ nextgroup=xinetdSyslogLevel skipwhite syn keyword xinetdSyslogLevel contained emerg alert crit err warning notice \ info debug syn match xinetdLogFile contained display '\S\+' \ nextgroup=xinetdLogSoftLimit skipwhite syn match xinetdLogSoftLimit contained display '\<\d\+\>' \ nextgroup=xinetdLogHardLimit skipwhite syn match xinetdLogHardLimit contained display '\<\d\+\>' syn keyword xinetdAttribute contained log_on_success \ nextgroup=xinetdLogSuccessEq skipwhite syn match xinetdLogSuccessEq contained display '[+-]\==' \ nextgroup=xinetdLogSuccess skipwhite syn keyword xinetdLogSuccess contained PID HOST USERID EXIT DURATION TRAFFIC \ nextgroup=xinetdLogSuccess skipwhite syn keyword xinetdAttribute contained log_on_failure \ nextgroup=xinetdLogFailureEq skipwhite syn match xinetdLogFailureEq contained display '[+-]\==' \ nextgroup=xinetdLogFailure skipwhite syn keyword xinetdLogFailure contained HOST USERID ATTEMPT \ nextgroup=xinetdLogFailure skipwhite syn keyword xinetdReqAttribute contained rpc_version \ nextgroup=xinetdRPCVersionEq skipwhite syn match xinetdRPCVersionEq contained display '=' \ nextgroup=xinetdRPCVersion skipwhite syn match xinetdRPCVersion contained display '\d\+\%(-\d\+\)\=\>' syn keyword xinetdReqAttribute contained rpc_number port \ nextgroup=xinetdNumberEq skipwhite syn match xinetdNumberEq contained display '=' \ nextgroup=xinetdNumber skipwhite syn keyword xinetdAttribute contained env nextgroup=xinetdEnvEq skipwhite syn match xinetdEnvEq contained display '+\==' \ nextgroup=xinetdEnvName skipwhite syn match xinetdEnvName contained display '[^=]\+' \ nextgroup=xinetdEnvNameEq syn match xinetdEnvNameEq contained display '=' nextgroup=xinetdEnvValue syn match xinetdEnvValue contained display '\S\+' \ nextgroup=xinetdEnvName skipwhite syn keyword xinetdAttribute contained banner banner_success banner_failure \ nextgroup=xinetdPathEq skipwhite syn keyword xinetdPPAttribute include includedir \ nextgroup=xinetdPath skipwhite syn match xinetdPathEq contained display '=' \ nextgroup=xinetdPath skipwhite syn match xinetdPath contained display '\S\+' syn keyword xinetdAttribute contained redirect nextgroup=xinetdRedirectEq \ skipwhite syn match xinetdRedirectEq contained display '=' \ nextgroup=xinetdRedirectIP skipwhite syn match xinetdRedirectIP contained display '\S\+' \ nextgroup=xinetdNumber skipwhite syn keyword xinetdAttribute contained cps nextgroup=xinetdCPSEq skipwhite syn match xinetdCPSEq contained display '=' \ nextgroup=xinetdCPS skipwhite syn match xinetdCPS contained display '\<\d\+\>' \ nextgroup=xinetdNumber skipwhite syn keyword xinetdAttribute contained max_load nextgroup=xinetdFloatEq \ skipwhite syn match xinetdFloatEq contained display '=' \ nextgroup=xinetdFloat skipwhite syn match xinetdFloat contained display '\d\+\.\d*\|\.\d\+' syn keyword xinetdAttribute contained umask nextgroup=xinetdOctalEq \ skipwhite syn match xinetdOctalEq contained display '=' \ nextgroup=xinetdOctal,xinetdOctalError \ skipwhite syn match xinetdOctal contained display '\<0\o\+\>' \ contains=xinetdOctalZero syn match xinetdOctalZero contained display '\<0' syn match xinetdOctalError contained display '\<0\o*[89]\d*\>' syn keyword xinetdAttribute contained rlimit_as nextgroup=xinetdASEq \ skipwhite syn match xinetdASEq contained display '=' \ nextgroup=xinetdAS,xinetdUnlimited \ skipwhite syn match xinetdAS contained display '\d\+' nextgroup=xinetdASMult syn match xinetdASMult contained display '[KM]' syn keyword xinetdAttribute contained deny_time nextgroup=xinetdDenyTimeEq \ skipwhite syn match xinetdDenyTimeEq contained display '=' \ nextgroup=xinetdDenyTime,xinetdNumber \ skipwhite syn keyword xinetdDenyTime contained FOREVER NEVER hi def link xinetdTodo Todo hi def link xinetdComment Comment hi def link xinetdService Keyword hi def link xinetdServiceName String hi def link xinetdDefaults Keyword hi def link xinetdServiceGroupD Delimiter hi def link xinetdReqAttribute Keyword hi def link xinetdAttribute Type hi def link xinetdEq Operator hi def link xinetdStringEq xinetdEq hi def link xinetdString String hi def link xinetdTypeEq xinetdEq hi def link xinetdType Identifier hi def link xinetdFlagsEq xinetdEq hi def link xinetdFlags xinetdType hi def link xinetdDeprFlags WarningMsg hi def link xinetdDisable Special hi def link xinetdBooleanEq xinetdEq hi def link xinetdBoolean Boolean hi def link xinetdSocketTypeEq xinetdEq hi def link xinetdSocketType xinetdType hi def link xinetdUNumberEq xinetdEq hi def link xinetdUnlimited Define hi def link xinetdNumber Number hi def link xinetdSignedNumEq xinetdEq hi def link xinetdSignedNumber xinetdNumber hi def link xinetdStringsEq xinetdEq hi def link xinetdStrings xinetdString hi def link xinetdStringsAdvEq xinetdEq hi def link xinetdTimeRangesEq xinetdEq hi def link xinetdTimeRanges Number hi def link xinetdLogTypeEq xinetdEq hi def link xinetdLogType Keyword hi def link xinetdSyslogType xinetdType hi def link xinetdSyslogLevel Number hi def link xinetdLogFile xinetdPath hi def link xinetdLogSoftLimit xinetdNumber hi def link xinetdLogHardLimit xinetdNumber hi def link xinetdLogSuccessEq xinetdEq hi def link xinetdLogSuccess xinetdType hi def link xinetdLogFailureEq xinetdEq hi def link xinetdLogFailure xinetdType hi def link xinetdRPCVersionEq xinetdEq hi def link xinetdRPCVersion xinetdNumber hi def link xinetdNumberEq xinetdEq hi def link xinetdEnvEq xinetdEq hi def link xinetdEnvName Identifier hi def link xinetdEnvNameEq xinetdEq hi def link xinetdEnvValue String hi def link xinetdPPAttribute PreProc hi def link xinetdPathEq xinetdEq hi def link xinetdPath String hi def link xinetdRedirectEq xinetdEq hi def link xinetdRedirectIP String hi def link xinetdCPSEq xinetdEq hi def link xinetdCPS xinetdNumber hi def link xinetdFloatEq xinetdEq hi def link xinetdFloat xinetdNumber hi def link xinetdOctalEq xinetdEq hi def link xinetdOctal xinetdNumber hi def link xinetdOctalZero PreProc hi def link xinetdOctalError Error hi def link xinetdASEq xinetdEq hi def link xinetdAS xinetdNumber hi def link xinetdASMult PreProc hi def link xinetdDenyTimeEq xinetdEq hi def link xinetdDenyTime PreProc let b:current_syntax = "xinetd" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn case match syn sync minlines=100 syn region xkbComment start="//" skip="\\$" end="$" keepend contains=xkbTodo syn region xkbComment start="/\*" matchgroup=NONE end="\*/" contains=xkbCommentStartError,xkbTodo syn match xkbCommentError "\*/" syntax match xkbCommentStartError "/\*" contained syn sync ccomment xkbComment syn keyword xkbTodo TODO FIXME contained syn match xkbSpecialChar "\\\d\d\d\|\\." contained syn region xkbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xkbSpecialChar oneline syn region xkbParen start='(' end=')' contains=ALLBUT,xkbParenError,xkbSpecial,xkbTodo transparent syn match xkbParenError ")" syn region xkbBrace start='{' end='}' contains=ALLBUT,xkbBraceError,xkbSpecial,xkbTodo transparent syn match xkbBraceError "}" syn region xkbBracket start='\[' end='\]' contains=ALLBUT,xkbBracketError,xkbSpecial,xkbTodo transparent syn match xkbBracketError "\]" syn match xkbPhysicalKey "<\w\+>" syn keyword xkbPreproc augment include replace syn keyword xkbConstant False True syn keyword xkbModif override replace syn keyword xkbIdentifier action affect alias allowExplicit approx baseColor button clearLocks color controls cornerRadius count ctrls description driveskbd font fontSize gap group groups height indicator indicatorDrivesKeyboard interpret key keys labelColor latchToLock latchMods left level_name map maximum minimum modifier_map modifiers name offColor onColor outline preserve priority repeat row section section setMods shape slant solid symbols text top type useModMapMods virtualModifier virtualMods virtual_modifiers weight whichModState width syn keyword xkbFunction AnyOf ISOLock LatchGroup LatchMods LockControls LockGroup LockMods LockPointerButton MovePtr NoAction PointerButton SetControls SetGroup SetMods SetPtrDflt Terminate syn keyword xkbTModif default hidden partial virtual syn keyword xkbSect alphanumeric_keys alternate_group function_keys keypad_keys modifier_keys xkb_compatibility xkb_geometry xkb_keycodes xkb_keymap xkb_semantics xkb_symbols xkb_types hi def link xkbModif xkbPreproc hi def link xkbTModif xkbPreproc hi def link xkbPreproc Preproc hi def link xkbIdentifier Keyword hi def link xkbFunction Function hi def link xkbSect Type hi def link xkbPhysicalKey Identifier hi def link xkbKeyword Keyword hi def link xkbComment Comment hi def link xkbTodo Todo hi def link xkbConstant Constant hi def link xkbString String hi def link xkbSpecialChar xkbSpecial hi def link xkbSpecial Special hi def link xkbParenError xkbBalancingError hi def link xkbBraceError xkbBalancingError hi def link xkbBraketError xkbBalancingError hi def link xkbBalancingError xkbError hi def link xkbCommentStartError xkbCommentError hi def link xkbCommentError xkbError hi def link xkbError Error let b:current_syntax = "xkb" if exists("b:current_syntax") finish endif syn region xmathZone matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,xmathError,xmathBraceError,xmathCurlyError syn region xmathZone matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,xmathError,xmathBraceError,xmathParenError syn region xmathZone matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,xmathError,xmathCurlyError,xmathParenError syn match xmathError "[)\]}]" syn match xmathBraceError "[)}]" contained syn match xmathCurlyError "[)\]]" contained syn match xmathParenError "[\]}]" contained syn match xmathComma "[,;:]" syn match xmathComma "\.\.\.$" syn case ignore syn keyword xmathFuncCmd function endfunction command endcommand syn keyword xmathStatement abort beep debug default define syn keyword xmathStatement execute exit pause return undefine syn keyword xmathConditional if else elseif endif syn keyword xmathRepeat while for endwhile endfor syn keyword xmathCmd anigraph deletedatastore keep renamedatastore syn keyword xmathCmd autocode deletestd linkhyper renamestd syn keyword xmathCmd build deletesuperblock linksim renamesuperblock syn keyword xmathCmd comment deletetransition listusertype save syn keyword xmathCmd copydatastore deleteusertype load sbadisplay syn keyword xmathCmd copystd detailmodel lock set syn keyword xmathCmd copysuperblock display minmax_display setsbdefault syn keyword xmathCmd createblock documentit modifyblock show syn keyword xmathCmd createbubble editcatalog modifybubble showlicense syn keyword xmathCmd createconnection erase modifystd showsbdefault syn keyword xmathCmd creatertf expandsuperbubble modifysuperblock stop syn keyword xmathCmd createstd for modifytransition stopcosim syn keyword xmathCmd createsuperblock go modifyusertype syntax syn keyword xmathCmd createsuperbubble goto new unalias syn keyword xmathCmd createtransition hardcopy next unlock syn keyword xmathCmd createusertype help polargraph usertype syn keyword xmathCmd delete hyperbuild print whatis syn keyword xmathCmd deleteblock if printmodel while syn keyword xmathCmd deletebubble ifilter quit who syn keyword xmathCmd deleteconnection ipcwc remove xgraph syn keyword xmathFunc abcd eye irea querystdoptions syn keyword xmathFunc abs eyepattern is querysuperblock syn keyword xmathFunc acos feedback ISID querysuperblockopt syn keyword xmathFunc acosh fft ISID Models querytransition syn keyword xmathFunc adconversion fftpdm kronecker querytransitionopt syn keyword xmathFunc afeedback filter length qz syn keyword xmathFunc all find limit rampinvar syn keyword xmathFunc ambiguity firparks lin random syn keyword xmathFunc amdemod firremez lin30 randpdm syn keyword xmathFunc analytic firwind linearfm randpert syn keyword xmathFunc analyze fmdemod linfnorm randsys syn keyword xmathFunc any forwdiff lintodb rank syn keyword xmathFunc append fprintf list rayleigh syn keyword xmathFunc argn frac log rcepstrum syn keyword xmathFunc argv fracred log10 rcond syn keyword xmathFunc arma freq logm rdintegrate syn keyword xmathFunc arma2ss freqcircle lognormal read syn keyword xmathFunc armax freqcont logspace real syn keyword xmathFunc ascii frequencyhop lowpass rectify syn keyword xmathFunc asin fsesti lpopt redschur syn keyword xmathFunc asinh fslqgcomp lqgcomp reflect syn keyword xmathFunc atan fsregu lqgltr regulator syn keyword xmathFunc atan2 fwls ls residue syn keyword xmathFunc atanh gabor ls2unc riccati syn keyword xmathFunc attach_ac100 garb ls2var riccati_eig syn keyword xmathFunc backdiff gaussian lsjoin riccati_schur syn keyword xmathFunc balance gcexp lu ricean syn keyword xmathFunc balmoore gcos lyapunov rifd syn keyword xmathFunc bandpass gdfileselection makecontinuous rlinfo syn keyword xmathFunc bandstop gdmessage makematrix rlocus syn keyword xmathFunc bj gdselection makepoly rms syn keyword xmathFunc blknorm genconv margin rootlocus syn keyword xmathFunc bode get markoff roots syn keyword xmathFunc bpm get_info30 matchedpz round syn keyword xmathFunc bpm2inn get_inn max rref syn keyword xmathFunc bpmjoin gfdm maxlike rve_get syn keyword xmathFunc bpmsplit gfsk mean rve_info syn keyword xmathFunc bst gfskernel mergeseg rve_reset syn keyword xmathFunc buttconstr gfunction min rve_update syn keyword xmathFunc butterworth ggauss minimal samplehold syn keyword xmathFunc cancel giv mkpert schur syn keyword xmathFunc canform giv2var mkphase sdf syn keyword xmathFunc ccepstrum givjoin mma sds syn keyword xmathFunc char gpsk mmaget sdtrsp syn keyword xmathFunc chebconstr gpulse mmaput sec syn keyword xmathFunc chebyshev gqam mod sech syn keyword xmathFunc check gqpsk modal siginterp syn keyword xmathFunc cholesky gramp modalstate sign syn keyword xmathFunc chop gsawtooth modcarrier sim syn keyword xmathFunc circonv gsigmoid mreduce sim30 syn keyword xmathFunc circorr gsin mtxplt simin syn keyword xmathFunc clock gsinc mu simin30 syn keyword xmathFunc clocus gsqpsk mulhank simout syn keyword xmathFunc clsys gsquarewave multipath simout30 syn keyword xmathFunc coherence gstep musynfit simtransform syn keyword xmathFunc colorind GuiDialogCreate mxstr2xmstr sin syn keyword xmathFunc combinepf GuiDialogDestroy mxstring2xmstring singriccati syn keyword xmathFunc commentof GuiFlush names sinh syn keyword xmathFunc compare GuiGetValue nichols sinm syn keyword xmathFunc complementaryerf GuiManage noisefilt size syn keyword xmathFunc complexenvelope GuiPlot none smargin syn keyword xmathFunc complexfreqshift GuiPlotGet norm sns2sys syn keyword xmathFunc concatseg GuiSetValue numden sort syn keyword xmathFunc condition GuiShellCreate nyquist spectrad syn keyword xmathFunc conj GuiShellDeiconify obscf spectrum syn keyword xmathFunc conmap GuiShellDestroy observable spline syn keyword xmathFunc connect GuiShellIconify oe sprintf syn keyword xmathFunc conpdm GuiShellLower ones sqrt syn keyword xmathFunc constellation GuiShellRaise ophank sqrtm syn keyword xmathFunc consys GuiShellRealize optimize sresidualize syn keyword xmathFunc controllable GuiShellUnrealize optscale ss2arma syn keyword xmathFunc convolve GuiTimer orderfilt sst syn keyword xmathFunc correlate GuiToolCreate orderstate ssv syn keyword xmathFunc cos GuiToolDestroy orth stable syn keyword xmathFunc cosh GuiToolExist oscmd stair syn keyword xmathFunc cosm GuiUnmanage oscope starp syn keyword xmathFunc cot GuiWidgetExist osscale step syn keyword xmathFunc coth h2norm padcrop stepinvar syn keyword xmathFunc covariance h2syn partialsum string syn keyword xmathFunc csc hadamard pdm stringex syn keyword xmathFunc csch hankelsv pdmslice substr syn keyword xmathFunc csum hessenberg pem subsys syn keyword xmathFunc ctrcf highpass perfplots sum syn keyword xmathFunc ctrlplot hilbert period svd syn keyword xmathFunc daug hilberttransform pfscale svplot syn keyword xmathFunc dbtolin hinfcontr phaseshift sweep syn keyword xmathFunc dct hinfnorm pinv symbolmap syn keyword xmathFunc decimate hinfsyn plot sys2sns syn keyword xmathFunc defFreqRange histogram plot30 sysic syn keyword xmathFunc defTimeRange idfreq pmdemod Sysid syn keyword xmathFunc delay idimpulse poisson system syn keyword xmathFunc delsubstr idsim poissonimpulse tan syn keyword xmathFunc det ifft poleplace tanh syn keyword xmathFunc detrend imag poles taper syn keyword xmathFunc dht impinvar polezero tfid syn keyword xmathFunc diagonal impplot poltrend toeplitz syn keyword xmathFunc differentiate impulse polyfit trace syn keyword xmathFunc directsequence index polynomial tril syn keyword xmathFunc discretize indexlist polyval trim syn keyword xmathFunc divide initial polyvalm trim30 syn keyword xmathFunc domain initmodel prbs triu syn keyword xmathFunc dst initx0 product trsp syn keyword xmathFunc eig inn2bpm psd truncate syn keyword xmathFunc ellipconstr inn2pe put_inn tustin syn keyword xmathFunc elliptic inn2unc qpopt uniform syn keyword xmathFunc erf insertseg qr val syn keyword xmathFunc error int quantize variance syn keyword xmathFunc estimator integrate queryblock videolines syn keyword xmathFunc etfe integratedump queryblockoptions wcbode syn keyword xmathFunc exist interp querybubble wcgain syn keyword xmathFunc exp interpolate querybubbleoptionswindow syn keyword xmathFunc expm inv querycatalog wtbalance syn keyword xmathFunc extractchan invhilbert queryconnection zeros syn keyword xmathFunc extractseg iqmix querystd syn case match syn match xmathLabel "^\s*<[a-zA-Z_][a-zA-Z0-9]*>" syn match xmathSpecial contained "\\\d\d\d\|\\." syn region xmathString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=xmathSpecial,@Spell syn match xmathCharacter "'[^\\]'" syn match xmathSpecialChar "'\\.'" syn match xmathNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn cluster xmathCommentGroup contains=xmathString,xmathTodo,@Spell syn keyword xmathTodo contained COMBAK DEBUG FIXME Todo TODO XXX syn match xmathComment "#.*$" contains=@xmathCommentGroup syn region xmathCommentBlock start="#{" end="}#" contains=@xmathCommentGroup syn sync match xmathSyncComment grouphere xmathCommentBlock "#{" syn sync match xmathSyncComment groupthere NONE "}#" if !exists("skip_xmath_syntax_inits") hi def link xmathBraceError xmathError hi def link xmathCmd xmathStatement hi def link xmathCommentBlock xmathComment hi def link xmathCurlyError xmathError hi def link xmathFuncCmd xmathStatement hi def link xmathParenError xmathError hi def link xmathCharacter Character hi def link xmathComma Delimiter hi def link xmathComment Comment hi def link xmathCommentBlock Comment hi def link xmathConditional Conditional hi def link xmathError Error hi def link xmathFunc Function hi def link xmathLabel PreProc hi def link xmathNumber Number hi def link xmathRepeat Repeat hi def link xmathSpecial Type hi def link xmathSpecialChar SpecialChar hi def link xmathStatement Statement hi def link xmathString String hi def link xmathTodo Todo endif let b:current_syntax = "xmath" if exists("b:current_syntax") finish endif let s:xml_cpo_save = &cpo set cpo&vim syn case match syn match xmlError "[<&]" syn region xmlString contained start=+"+ end=+"+ contains=xmlEntity,@Spell display syn region xmlString contained start=+'+ end=+'+ contains=xmlEntity,@Spell display syn match xmlAttribPunct +[:.]+ contained display syn match xmlEqual +=+ display syn match xmlAttrib \ +[-'"<]\@1\%(['">]\@!\|$\)+ \ contained \ contains=xmlAttribPunct,@xmlAttribHook \ display if exists("g:xml_namespace_transparent") syn match xmlNamespace \ +\(<\|"':]\+[:]\@=+ \ contained \ contains=@xmlNamespaceHook \ transparent \ display else syn match xmlNamespace \ +\(<\|"':]\+[:]\@=+ \ contained \ contains=@xmlNamespaceHook \ display endif syn match xmlTagName \ +<\@1<=[^ /!?<>"']\++ \ contained \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook \ display if exists('g:xml_syntax_folding') syn region xmlTag \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+ \ matchgroup=xmlTag end=+>+ \ contained \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook syn match xmlEndTag \ +"']\+>+ \ contained \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook syn region xmlRegion \ start=+<\z([^ /!?<>"']\+\)+ \ skip=++ \ end=++ \ matchgroup=xmlEndTag end=+/>+ \ fold \ contains=xmlTag,xmlEndTag,xmlCdata,xmlRegion,xmlComment,xmlEntity,xmlProcessing,@xmlRegionHook,@Spell \ keepend \ extend else syn region xmlTag \ matchgroup=xmlTag start=+<[^ /!?<>"']\@=+ \ matchgroup=xmlTag end=+>+ \ contains=xmlError,xmlTagName,xmlAttrib,xmlEqual,xmlString,@xmlStartTagHook syn match xmlEndTag \ +"']\+>+ \ contains=xmlNamespace,xmlAttribPunct,@xmlTagHook endif syn match xmlEntity "&[^; \t]*;" contains=xmlEntityPunct syn match xmlEntityPunct contained "[&.;]" if exists('g:xml_syntax_folding') syn region xmlComment \ start=++ \ contains=xmlCommentStart,xmlCommentError \ extend \ fold else syn region xmlComment \ start=++ \ contains=xmlCommentStart,xmlCommentError \ extend endif syn match xmlCommentStart contained "+ \ contains=xmlCdataStart,xmlCdataEnd,@xmlCdataHook,@Spell \ keepend \ extend syn match xmlCdataStart ++ contained syn region xmlProcessing matchgroup=xmlProcessingDelim start="" contains=xmlAttrib,xmlEqual,xmlString if exists('g:xml_syntax_folding') syn region xmlDocType matchgroup=xmlDocTypeDecl \ start="" \ fold \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString else syn region xmlDocType matchgroup=xmlDocTypeDecl \ start="" \ contains=xmlDocTypeKeyword,xmlInlineDTD,xmlString endif syn keyword xmlDocTypeKeyword contained DOCTYPE PUBLIC SYSTEM syn region xmlInlineDTD contained matchgroup=xmlDocTypeDecl start="\[" end="]" contains=@xmlDTD syn include @xmlDTD :p:h/dtd.vim unlet b:current_syntax syn sync match xmlSyncDT grouphere xmlDocType +\_.\("']\+\)\@=+ syn sync match xmlSync groupthere xmlRegion +"']\+>+ endif syn sync minlines=100 hi def link xmlTodo Todo hi def link xmlTag Function hi def link xmlTagName Function hi def link xmlEndTag Identifier if !exists("g:xml_namespace_transparent") hi def link xmlNamespace Tag endif hi def link xmlEntity Statement hi def link xmlEntityPunct Type hi def link xmlAttribPunct Comment hi def link xmlAttrib Type hi def link xmlString String hi def link xmlComment Comment hi def link xmlCommentStart xmlComment hi def link xmlCommentPart Comment hi def link xmlCommentError Error hi def link xmlError Error hi def link xmlProcessingDelim Comment hi def link xmlProcessing Type hi def link xmlCdata String hi def link xmlCdataCdata Statement hi def link xmlCdataStart Type hi def link xmlCdataEnd Type hi def link xmlDocTypeDecl Function hi def link xmlDocTypeKeyword Statement hi def link xmlInlineDTD Function let b:current_syntax = "xml" let &cpo = s:xml_cpo_save unlet s:xml_cpo_save if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn keyword xmodmapTodo contained TODO FIXME XXX NOTE syn region xmodmapComment display oneline start='^!' end='$' \ contains=xmodmapTodo,@Spell syn case ignore syn match xmodmapInt display '\<\d\+\>' syn match xmodmapHex display '\<0x\x\+\>' syn match xmodmapOctal display '\<0\o\+\>' syn match xmodmapOctalError display '\<0\o*[89]\d*' syn case match syn match xmodmapKeySym display '\<[A-Za-z]\>' syn keyword xmodmapKeySym XK_VoidSymbol XK_BackSpace XK_Tab XK_Linefeed \ XK_Clear XK_Return XK_Pause XK_Scroll_Lock \ XK_Sys_Req XK_Escape XK_Delete XK_Multi_key \ XK_Codeinput XK_SingleCandidate \ XK_MultipleCandidate XK_PreviousCandidate \ XK_Kanji XK_Muhenkan XK_Henkan_Mode \ XK_Henkan XK_Romaji XK_Hiragana XK_Katakana \ XK_Hiragana_Katakana XK_Zenkaku XK_Hankaku \ XK_Zenkaku_Hankaku XK_Touroku XK_Massyo \ XK_Kana_Lock XK_Kana_Shift XK_Eisu_Shift \ XK_Eisu_toggle XK_Kanji_Bangou XK_Zen_Koho \ XK_Mae_Koho XK_Home XK_Left XK_Up XK_Right \ XK_Down XK_Prior XK_Page_Up XK_Next \ XK_Page_Down XK_End XK_Begin XK_Select \ XK_Print XK_Execute XK_Insert XK_Undo XK_Redo \ XK_Menu XK_Find XK_Cancel XK_Help XK_Break \ XK_Mode_switch XK_script_switch XK_Num_Lock \ XK_KP_Space XK_KP_Tab XK_KP_Enter XK_KP_F1 \ XK_KP_F2 XK_KP_F3 XK_KP_F4 XK_KP_Home \ XK_KP_Left XK_KP_Up XK_KP_Right XK_KP_Down \ XK_KP_Prior XK_KP_Page_Up XK_KP_Next \ XK_KP_Page_Down XK_KP_End XK_KP_Begin \ XK_KP_Insert XK_KP_Delete XK_KP_Equal \ XK_KP_Multiply XK_KP_Add XK_KP_Separator \ XK_KP_Subtract XK_KP_Decimal XK_KP_Divide \ XK_KP_0 XK_KP_1 XK_KP_2 XK_KP_3 XK_KP_4 \ XK_KP_5 XK_KP_6 XK_KP_7 XK_KP_8 XK_KP_9 XK_F1 \ XK_F2 XK_F3 XK_F4 XK_F5 XK_F6 XK_F7 XK_F8 \ XK_F9 XK_F10 XK_F11 XK_L1 XK_F12 XK_L2 XK_F13 \ XK_L3 XK_F14 XK_L4 XK_F15 XK_L5 XK_F16 XK_L6 \ XK_F17 XK_L7 XK_F18 XK_L8 XK_F19 XK_L9 XK_F20 \ XK_L10 XK_F21 XK_R1 XK_F22 XK_R2 XK_F23 \ XK_R3 XK_F24 XK_R4 XK_F25 XK_R5 XK_F26 \ XK_R6 XK_F27 XK_R7 XK_F28 XK_R8 XK_F29 \ XK_R9 XK_F30 XK_R10 XK_F31 XK_R11 XK_F32 \ XK_R12 XK_F33 XK_R13 XK_F34 XK_R14 XK_F35 \ XK_R15 XK_Shift_L XK_Shift_R XK_Control_L \ XK_Control_R XK_Caps_Lock XK_Shift_Lock \ XK_Meta_L XK_Meta_R XK_Alt_L XK_Alt_R \ XK_Super_L XK_Super_R XK_Hyper_L XK_Hyper_R \ XK_dead_hook XK_dead_horn XK_3270_Duplicate \ XK_3270_FieldMark XK_3270_Right2 XK_3270_Left2 \ XK_3270_BackTab XK_3270_EraseEOF \ XK_3270_EraseInput XK_3270_Reset \ XK_3270_Quit XK_3270_PA1 XK_3270_PA2 \ XK_3270_PA3 XK_3270_Test XK_3270_Attn \ XK_3270_CursorBlink XK_3270_AltCursor \ XK_3270_KeyClick XK_3270_Jump \ XK_3270_Ident XK_3270_Rule XK_3270_Copy \ XK_3270_Play XK_3270_Setup XK_3270_Record \ XK_3270_ChangeScreen XK_3270_DeleteWord \ XK_3270_ExSelect XK_3270_CursorSelect \ XK_3270_PrintScreen XK_3270_Enter XK_space \ XK_exclam XK_quotedbl XK_numbersign XK_dollar \ XK_percent XK_ampersand XK_apostrophe \ XK_quoteright XK_parenleft XK_parenright \ XK_asterisk XK_plus XK_comma XK_minus \ XK_period XK_slash XK_0 XK_1 XK_2 XK_3 \ XK_4 XK_5 XK_6 XK_7 XK_8 XK_9 XK_colon \ XK_semicolon XK_less XK_equal XK_greater \ XK_question XK_at XK_A XK_B XK_C XK_D XK_E \ XK_F XK_G XK_H XK_I XK_J XK_K XK_L XK_M XK_N \ XK_O XK_P XK_Q XK_R XK_S XK_T XK_U XK_V XK_W \ XK_X XK_Y XK_Z XK_bracketleft XK_backslash \ XK_bracketright XK_asciicircum XK_underscore \ XK_grave XK_quoteleft XK_a XK_b XK_c XK_d \ XK_e XK_f XK_g XK_h XK_i XK_j XK_k XK_l \ XK_m XK_n XK_o XK_p XK_q XK_r XK_s XK_t XK_u \ XK_v XK_w XK_x XK_y XK_z XK_braceleft XK_bar \ XK_braceright XK_asciitilde XK_nobreakspace \ XK_exclamdown XK_cent XK_sterling XK_currency \ XK_yen XK_brokenbar XK_section XK_diaeresis \ XK_copyright XK_ordfeminine XK_guillemotleft \ XK_notsign XK_hyphen XK_registered XK_macron \ XK_degree XK_plusminus XK_twosuperior \ XK_threesuperior XK_acute XK_mu XK_paragraph \ XK_periodcentered XK_cedilla XK_onesuperior \ XK_masculine XK_guillemotright XK_onequarter \ XK_onehalf XK_threequarters XK_questiondown \ XK_Agrave XK_Aacute XK_Acircumflex XK_Atilde \ XK_Adiaeresis XK_Aring XK_AE XK_Ccedilla \ XK_Egrave XK_Eacute XK_Ecircumflex \ XK_Ediaeresis XK_Igrave XK_Iacute \ XK_Icircumflex XK_Idiaeresis XK_ETH XK_Eth \ XK_Ntilde XK_Ograve XK_Oacute XK_Ocircumflex \ XK_Otilde XK_Odiaeresis XK_multiply \ XK_Ooblique XK_Ugrave XK_Uacute XK_Ucircumflex \ XK_Udiaeresis XK_Yacute XK_THORN XK_Thorn \ XK_ssharp XK_agrave XK_aacute XK_acircumflex \ XK_atilde XK_adiaeresis XK_aring XK_ae \ XK_ccedilla XK_egrave XK_eacute XK_ecircumflex \ XK_ediaeresis XK_igrave XK_iacute \ XK_icircumflex XK_idiaeresis XK_eth XK_ntilde \ XK_ograve XK_oacute XK_ocircumflex XK_otilde \ XK_odiaeresis XK_division XK_oslash XK_ugrave \ XK_uacute XK_ucircumflex XK_udiaeresis \ XK_yacute XK_thorn XK_ydiaeresis XK_Aogonek \ XK_breve XK_Lstroke XK_Lcaron XK_Sacute \ XK_Scaron XK_Scedilla XK_Tcaron XK_Zacute \ XK_Zcaron XK_Zabovedot XK_aogonek XK_ogonek \ XK_lstroke XK_lcaron XK_sacute XK_caron \ XK_scaron XK_scedilla XK_tcaron XK_zacute \ XK_doubleacute XK_zcaron XK_zabovedot \ XK_Racute XK_Abreve XK_Lacute XK_Cacute \ XK_Ccaron XK_Eogonek XK_Ecaron XK_Dcaron \ XK_Dstroke XK_Nacute XK_Ncaron XK_Odoubleacute \ XK_Rcaron XK_Uring XK_Udoubleacute \ XK_Tcedilla XK_racute XK_abreve XK_lacute \ XK_cacute XK_ccaron XK_eogonek XK_ecaron \ XK_dcaron XK_dstroke XK_nacute XK_ncaron \ XK_odoubleacute XK_udoubleacute XK_rcaron \ XK_uring XK_tcedilla XK_abovedot XK_Hstroke \ XK_Hcircumflex XK_Iabovedot XK_Gbreve \ XK_Jcircumflex XK_hstroke XK_hcircumflex \ XK_idotless XK_gbreve XK_jcircumflex \ XK_Cabovedot XK_Ccircumflex XK_Gabovedot \ XK_Gcircumflex XK_Ubreve XK_Scircumflex \ XK_cabovedot XK_ccircumflex XK_gabovedot \ XK_gcircumflex XK_ubreve XK_scircumflex XK_kra \ XK_kappa XK_Rcedilla XK_Itilde XK_Lcedilla \ XK_Emacron XK_Gcedilla XK_Tslash XK_rcedilla \ XK_itilde XK_lcedilla XK_emacron XK_gcedilla \ XK_tslash XK_ENG XK_eng XK_Amacron XK_Iogonek \ XK_Eabovedot XK_Imacron XK_Ncedilla XK_Omacron \ XK_Kcedilla XK_Uogonek XK_Utilde XK_Umacron \ XK_amacron XK_iogonek XK_eabovedot XK_imacron \ XK_ncedilla XK_omacron XK_kcedilla XK_uogonek \ XK_utilde XK_umacron XK_Babovedot XK_babovedot \ XK_Dabovedot XK_Wgrave XK_Wacute XK_dabovedot \ XK_Ygrave XK_Fabovedot XK_fabovedot \ XK_Mabovedot XK_mabovedot XK_Pabovedot \ XK_wgrave XK_pabovedot XK_wacute XK_Sabovedot \ XK_ygrave XK_Wdiaeresis XK_wdiaeresis \ XK_sabovedot XK_Wcircumflex XK_Tabovedot \ XK_Ycircumflex XK_wcircumflex \ XK_tabovedot XK_ycircumflex XK_OE XK_oe \ XK_Ydiaeresis XK_overline XK_kana_fullstop \ XK_kana_openingbracket XK_kana_closingbracket \ XK_kana_comma XK_kana_conjunctive \ XK_kana_middledot XK_kana_WO XK_kana_a \ XK_kana_i XK_kana_u XK_kana_e XK_kana_o \ XK_kana_ya XK_kana_yu XK_kana_yo \ XK_kana_tsu XK_kana_tu XK_prolongedsound \ XK_kana_A XK_kana_I XK_kana_U XK_kana_E \ XK_kana_O XK_kana_KA XK_kana_KI XK_kana_KU \ XK_kana_KE XK_kana_KO XK_kana_SA XK_kana_SHI \ XK_kana_SU XK_kana_SE XK_kana_SO XK_kana_TA \ XK_kana_CHI XK_kana_TI XK_kana_TSU \ XK_kana_TU XK_kana_TE XK_kana_TO XK_kana_NA \ XK_kana_NI XK_kana_NU XK_kana_NE XK_kana_NO \ XK_kana_HA XK_kana_HI XK_kana_FU XK_kana_HU \ XK_kana_HE XK_kana_HO XK_kana_MA XK_kana_MI \ XK_kana_MU XK_kana_ME XK_kana_MO XK_kana_YA \ XK_kana_YU XK_kana_YO XK_kana_RA XK_kana_RI \ XK_kana_RU XK_kana_RE XK_kana_RO XK_kana_WA \ XK_kana_N XK_voicedsound XK_semivoicedsound \ XK_kana_switch XK_Farsi_0 XK_Farsi_1 \ XK_Farsi_2 XK_Farsi_3 XK_Farsi_4 XK_Farsi_5 \ XK_Farsi_6 XK_Farsi_7 XK_Farsi_8 XK_Farsi_9 \ XK_Arabic_percent XK_Arabic_superscript_alef \ XK_Arabic_tteh XK_Arabic_peh XK_Arabic_tcheh \ XK_Arabic_ddal XK_Arabic_rreh XK_Arabic_comma \ XK_Arabic_fullstop XK_Arabic_0 XK_Arabic_1 \ XK_Arabic_2 XK_Arabic_3 XK_Arabic_4 \ XK_Arabic_5 XK_Arabic_6 XK_Arabic_7 \ XK_Arabic_8 XK_Arabic_9 XK_Arabic_semicolon \ XK_Arabic_question_mark XK_Arabic_hamza \ XK_Arabic_maddaonalef XK_Arabic_hamzaonalef \ XK_Arabic_hamzaonwaw XK_Arabic_hamzaunderalef \ XK_Arabic_hamzaonyeh XK_Arabic_alef \ XK_Arabic_beh XK_Arabic_tehmarbuta \ XK_Arabic_teh XK_Arabic_theh XK_Arabic_jeem \ XK_Arabic_hah XK_Arabic_khah XK_Arabic_dal \ XK_Arabic_thal XK_Arabic_ra XK_Arabic_zain \ XK_Arabic_seen XK_Arabic_sheen \ XK_Arabic_sad XK_Arabic_dad XK_Arabic_tah \ XK_Arabic_zah XK_Arabic_ain XK_Arabic_ghain \ XK_Arabic_tatweel XK_Arabic_feh XK_Arabic_qaf \ XK_Arabic_kaf XK_Arabic_lam XK_Arabic_meem \ XK_Arabic_noon XK_Arabic_ha XK_Arabic_heh \ XK_Arabic_waw XK_Arabic_alefmaksura \ XK_Arabic_yeh XK_Arabic_fathatan \ XK_Arabic_dammatan XK_Arabic_kasratan \ XK_Arabic_fatha XK_Arabic_damma \ XK_Arabic_kasra XK_Arabic_shadda \ XK_Arabic_sukun XK_Arabic_madda_above \ XK_Arabic_hamza_above XK_Arabic_hamza_below \ XK_Arabic_jeh XK_Arabic_veh XK_Arabic_keheh \ XK_Arabic_gaf XK_Arabic_noon_ghunna \ XK_Arabic_heh_doachashmee XK_Farsi_yeh \ XK_Arabic_yeh_baree XK_Arabic_heh_goal \ XK_Arabic_switch XK_Cyrillic_GHE_bar \ XK_Cyrillic_ghe_bar XK_Cyrillic_ZHE_descender \ XK_Cyrillic_zhe_descender \ XK_Cyrillic_KA_descender \ XK_Cyrillic_ka_descender \ XK_Cyrillic_KA_vertstroke \ XK_Cyrillic_ka_vertstroke \ XK_Cyrillic_EN_descender \ XK_Cyrillic_en_descender \ XK_Cyrillic_U_straight XK_Cyrillic_u_straight \ XK_Cyrillic_U_straight_bar \ XK_Cyrillic_u_straight_bar \ XK_Cyrillic_HA_descender \ XK_Cyrillic_ha_descender \ XK_Cyrillic_CHE_descender \ XK_Cyrillic_che_descender \ XK_Cyrillic_CHE_vertstroke \ XK_Cyrillic_che_vertstroke XK_Cyrillic_SHHA \ XK_Cyrillic_shha XK_Cyrillic_SCHWA \ XK_Cyrillic_schwa XK_Cyrillic_I_macron \ XK_Cyrillic_i_macron XK_Cyrillic_O_bar \ XK_Cyrillic_o_bar XK_Cyrillic_U_macron \ XK_Cyrillic_u_macron XK_Serbian_dje \ XK_Macedonia_gje XK_Cyrillic_io \ XK_Ukrainian_ie XK_Ukranian_je \ XK_Macedonia_dse XK_Ukrainian_i XK_Ukranian_i \ XK_Ukrainian_yi XK_Ukranian_yi XK_Cyrillic_je \ XK_Serbian_je XK_Cyrillic_lje XK_Serbian_lje \ XK_Cyrillic_nje XK_Serbian_nje XK_Serbian_tshe \ XK_Macedonia_kje XK_Ukrainian_ghe_with_upturn \ XK_Byelorussian_shortu XK_Cyrillic_dzhe \ XK_Serbian_dze XK_numerosign \ XK_Serbian_DJE XK_Macedonia_GJE \ XK_Cyrillic_IO XK_Ukrainian_IE XK_Ukranian_JE \ XK_Macedonia_DSE XK_Ukrainian_I XK_Ukranian_I \ XK_Ukrainian_YI XK_Ukranian_YI XK_Cyrillic_JE \ XK_Serbian_JE XK_Cyrillic_LJE XK_Serbian_LJE \ XK_Cyrillic_NJE XK_Serbian_NJE XK_Serbian_TSHE \ XK_Macedonia_KJE XK_Ukrainian_GHE_WITH_UPTURN \ XK_Byelorussian_SHORTU XK_Cyrillic_DZHE \ XK_Serbian_DZE XK_Cyrillic_yu \ XK_Cyrillic_a XK_Cyrillic_be XK_Cyrillic_tse \ XK_Cyrillic_de XK_Cyrillic_ie XK_Cyrillic_ef \ XK_Cyrillic_ghe XK_Cyrillic_ha XK_Cyrillic_i \ XK_Cyrillic_shorti XK_Cyrillic_ka \ XK_Cyrillic_el XK_Cyrillic_em XK_Cyrillic_en \ XK_Cyrillic_o XK_Cyrillic_pe XK_Cyrillic_ya \ XK_Cyrillic_er XK_Cyrillic_es XK_Cyrillic_te \ XK_Cyrillic_u XK_Cyrillic_zhe XK_Cyrillic_ve \ XK_Cyrillic_softsign XK_Cyrillic_yeru \ XK_Cyrillic_ze XK_Cyrillic_sha XK_Cyrillic_e \ XK_Cyrillic_shcha XK_Cyrillic_che \ XK_Cyrillic_hardsign XK_Cyrillic_YU \ XK_Cyrillic_A XK_Cyrillic_BE XK_Cyrillic_TSE \ XK_Cyrillic_DE XK_Cyrillic_IE XK_Cyrillic_EF \ XK_Cyrillic_GHE XK_Cyrillic_HA XK_Cyrillic_I \ XK_Cyrillic_SHORTI XK_Cyrillic_KA \ XK_Cyrillic_EL XK_Cyrillic_EM XK_Cyrillic_EN \ XK_Cyrillic_O XK_Cyrillic_PE XK_Cyrillic_YA \ XK_Cyrillic_ER XK_Cyrillic_ES XK_Cyrillic_TE \ XK_Cyrillic_U XK_Cyrillic_ZHE XK_Cyrillic_VE \ XK_Cyrillic_SOFTSIGN XK_Cyrillic_YERU \ XK_Cyrillic_ZE XK_Cyrillic_SHA XK_Cyrillic_E \ XK_Cyrillic_SHCHA XK_Cyrillic_CHE \ XK_Cyrillic_HARDSIGN XK_Greek_ALPHAaccent \ XK_Greek_EPSILONaccent XK_Greek_ETAaccent \ XK_Greek_IOTAaccent XK_Greek_IOTAdieresis \ XK_Greek_OMICRONaccent XK_Greek_UPSILONaccent \ XK_Greek_UPSILONdieresis \ XK_Greek_OMEGAaccent XK_Greek_accentdieresis \ XK_Greek_horizbar XK_Greek_alphaaccent \ XK_Greek_epsilonaccent XK_Greek_etaaccent \ XK_Greek_iotaaccent XK_Greek_iotadieresis \ XK_Greek_iotaaccentdieresis \ XK_Greek_omicronaccent XK_Greek_upsilonaccent \ XK_Greek_upsilondieresis \ XK_Greek_upsilonaccentdieresis \ XK_Greek_omegaaccent XK_Greek_ALPHA \ XK_Greek_BETA XK_Greek_GAMMA XK_Greek_DELTA \ XK_Greek_EPSILON XK_Greek_ZETA XK_Greek_ETA \ XK_Greek_THETA XK_Greek_IOTA XK_Greek_KAPPA \ XK_Greek_LAMDA XK_Greek_LAMBDA XK_Greek_MU \ XK_Greek_NU XK_Greek_XI XK_Greek_OMICRON \ XK_Greek_PI XK_Greek_RHO XK_Greek_SIGMA \ XK_Greek_TAU XK_Greek_UPSILON XK_Greek_PHI \ XK_Greek_CHI XK_Greek_PSI XK_Greek_OMEGA \ XK_Greek_alpha XK_Greek_beta XK_Greek_gamma \ XK_Greek_delta XK_Greek_epsilon XK_Greek_zeta \ XK_Greek_eta XK_Greek_theta XK_Greek_iota \ XK_Greek_kappa XK_Greek_lamda XK_Greek_lambda \ XK_Greek_mu XK_Greek_nu XK_Greek_xi \ XK_Greek_omicron XK_Greek_pi XK_Greek_rho \ XK_Greek_sigma XK_Greek_finalsmallsigma \ XK_Greek_tau XK_Greek_upsilon XK_Greek_phi \ XK_Greek_chi XK_Greek_psi XK_Greek_omega \ XK_Greek_switch XK_leftradical \ XK_topleftradical XK_horizconnector \ XK_topintegral XK_botintegral \ XK_vertconnector XK_topleftsqbracket \ XK_botleftsqbracket XK_toprightsqbracket \ XK_botrightsqbracket XK_topleftparens \ XK_botleftparens XK_toprightparens \ XK_botrightparens XK_leftmiddlecurlybrace \ XK_rightmiddlecurlybrace \ XK_topleftsummation XK_botleftsummation \ XK_topvertsummationconnector \ XK_botvertsummationconnector \ XK_toprightsummation XK_botrightsummation \ XK_rightmiddlesummation XK_lessthanequal \ XK_notequal XK_greaterthanequal XK_integral \ XK_therefore XK_variation XK_infinity \ XK_nabla XK_approximate XK_similarequal \ XK_ifonlyif XK_implies XK_identical XK_radical \ XK_includedin XK_includes XK_intersection \ XK_union XK_logicaland XK_logicalor \ XK_partialderivative XK_function XK_leftarrow \ XK_uparrow XK_rightarrow XK_downarrow XK_blank \ XK_soliddiamond XK_checkerboard XK_ht XK_ff \ XK_cr XK_lf XK_nl XK_vt XK_lowrightcorner \ XK_uprightcorner XK_upleftcorner \ XK_lowleftcorner XK_crossinglines \ XK_horizlinescan1 XK_horizlinescan3 \ XK_horizlinescan5 XK_horizlinescan7 \ XK_horizlinescan9 XK_leftt XK_rightt XK_bott \ XK_topt XK_vertbar XK_emspace XK_enspace \ XK_em3space XK_em4space XK_digitspace \ XK_punctspace XK_thinspace XK_hairspace \ XK_emdash XK_endash XK_signifblank XK_ellipsis \ XK_doubbaselinedot XK_onethird XK_twothirds \ XK_onefifth XK_twofifths XK_threefifths \ XK_fourfifths XK_onesixth XK_fivesixths \ XK_careof XK_figdash XK_leftanglebracket \ XK_decimalpoint XK_rightanglebracket \ XK_marker XK_oneeighth XK_threeeighths \ XK_fiveeighths XK_seveneighths XK_trademark \ XK_signaturemark XK_trademarkincircle \ XK_leftopentriangle XK_rightopentriangle \ XK_emopencircle XK_emopenrectangle \ XK_leftsinglequotemark XK_rightsinglequotemark \ XK_leftdoublequotemark XK_rightdoublequotemark \ XK_prescription XK_minutes XK_seconds \ XK_latincross XK_hexagram XK_filledrectbullet \ XK_filledlefttribullet XK_filledrighttribullet \ XK_emfilledcircle XK_emfilledrect \ XK_enopencircbullet XK_enopensquarebullet \ XK_openrectbullet XK_opentribulletup \ XK_opentribulletdown XK_openstar \ XK_enfilledcircbullet XK_enfilledsqbullet \ XK_filledtribulletup XK_filledtribulletdown \ XK_leftpointer XK_rightpointer XK_club \ XK_diamond XK_heart XK_maltesecross \ XK_dagger XK_doubledagger XK_checkmark \ XK_ballotcross XK_musicalsharp XK_musicalflat \ XK_malesymbol XK_femalesymbol XK_telephone \ XK_telephonerecorder XK_phonographcopyright \ XK_caret XK_singlelowquotemark \ XK_doublelowquotemark XK_cursor \ XK_leftcaret XK_rightcaret XK_downcaret \ XK_upcaret XK_overbar XK_downtack XK_upshoe \ XK_downstile XK_underbar XK_jot XK_quad \ XK_uptack XK_circle XK_upstile XK_downshoe \ XK_rightshoe XK_leftshoe XK_lefttack \ XK_righttack XK_hebrew_doublelowline \ XK_hebrew_aleph XK_hebrew_bet XK_hebrew_beth \ XK_hebrew_gimel XK_hebrew_gimmel \ XK_hebrew_dalet XK_hebrew_daleth \ XK_hebrew_he XK_hebrew_waw XK_hebrew_zain \ XK_hebrew_zayin XK_hebrew_chet XK_hebrew_het \ XK_hebrew_tet XK_hebrew_teth XK_hebrew_yod \ XK_hebrew_finalkaph XK_hebrew_kaph \ XK_hebrew_lamed XK_hebrew_finalmem \ XK_hebrew_mem XK_hebrew_finalnun XK_hebrew_nun \ XK_hebrew_samech XK_hebrew_samekh \ XK_hebrew_ayin XK_hebrew_finalpe XK_hebrew_pe \ XK_hebrew_finalzade XK_hebrew_finalzadi \ XK_hebrew_zade XK_hebrew_zadi XK_hebrew_qoph \ XK_hebrew_kuf XK_hebrew_resh XK_hebrew_shin \ XK_hebrew_taw XK_hebrew_taf XK_Hebrew_switch \ XK_Thai_kokai XK_Thai_khokhai XK_Thai_khokhuat \ XK_Thai_khokhwai XK_Thai_khokhon \ XK_Thai_khorakhang XK_Thai_ngongu \ XK_Thai_chochan XK_Thai_choching \ XK_Thai_chochang XK_Thai_soso XK_Thai_chochoe \ XK_Thai_yoying XK_Thai_dochada XK_Thai_topatak \ XK_Thai_thothan XK_Thai_thonangmontho \ XK_Thai_thophuthao XK_Thai_nonen \ XK_Thai_dodek XK_Thai_totao XK_Thai_thothung \ XK_Thai_thothahan XK_Thai_thothong \ XK_Thai_nonu XK_Thai_bobaimai XK_Thai_popla \ XK_Thai_phophung XK_Thai_fofa XK_Thai_phophan \ XK_Thai_fofan XK_Thai_phosamphao XK_Thai_moma \ XK_Thai_yoyak XK_Thai_rorua XK_Thai_ru \ XK_Thai_loling XK_Thai_lu XK_Thai_wowaen \ XK_Thai_sosala XK_Thai_sorusi XK_Thai_sosua \ XK_Thai_hohip XK_Thai_lochula XK_Thai_oang \ XK_Thai_honokhuk XK_Thai_paiyannoi \ XK_Thai_saraa XK_Thai_maihanakat \ XK_Thai_saraaa XK_Thai_saraam XK_Thai_sarai \ XK_Thai_saraii XK_Thai_saraue XK_Thai_sarauee \ XK_Thai_sarau XK_Thai_sarauu XK_Thai_phinthu \ XK_Thai_maihanakat_maitho XK_Thai_baht \ XK_Thai_sarae XK_Thai_saraae XK_Thai_sarao \ XK_Thai_saraaimaimuan XK_Thai_saraaimaimalai \ XK_Thai_lakkhangyao XK_Thai_maiyamok \ XK_Thai_maitaikhu XK_Thai_maiek XK_Thai_maitho \ XK_Thai_maitri XK_Thai_maichattawa \ XK_Thai_thanthakhat XK_Thai_nikhahit \ XK_Thai_leksun XK_Thai_leknung XK_Thai_leksong \ XK_Thai_leksam XK_Thai_leksi XK_Thai_lekha \ XK_Thai_lekhok XK_Thai_lekchet XK_Thai_lekpaet \ XK_Thai_lekkao XK_Hangul XK_Hangul_Start \ XK_Hangul_End XK_Hangul_Hanja XK_Hangul_Jamo \ XK_Hangul_Romaja XK_Hangul_Codeinput \ XK_Hangul_Jeonja XK_Hangul_Banja \ XK_Hangul_PreHanja XK_Hangul_PostHanja \ XK_Hangul_SingleCandidate \ XK_Hangul_MultipleCandidate \ XK_Hangul_PreviousCandidate XK_Hangul_Special \ XK_Hangul_switch XK_Hangul_Kiyeog \ XK_Hangul_SsangKiyeog XK_Hangul_KiyeogSios \ XK_Hangul_Nieun XK_Hangul_NieunJieuj \ XK_Hangul_NieunHieuh XK_Hangul_Dikeud \ XK_Hangul_SsangDikeud XK_Hangul_Rieul \ XK_Hangul_RieulKiyeog XK_Hangul_RieulMieum \ XK_Hangul_RieulPieub XK_Hangul_RieulSios \ XK_Hangul_RieulTieut XK_Hangul_RieulPhieuf \ XK_Hangul_RieulHieuh XK_Hangul_Mieum \ XK_Hangul_Pieub XK_Hangul_SsangPieub \ XK_Hangul_PieubSios XK_Hangul_Sios \ XK_Hangul_SsangSios XK_Hangul_Ieung \ XK_Hangul_Jieuj XK_Hangul_SsangJieuj \ XK_Hangul_Cieuc XK_Hangul_Khieuq \ XK_Hangul_Tieut XK_Hangul_Phieuf \ XK_Hangul_Hieuh XK_Hangul_A XK_Hangul_AE \ XK_Hangul_YA XK_Hangul_YAE XK_Hangul_EO \ XK_Hangul_E XK_Hangul_YEO XK_Hangul_YE \ XK_Hangul_O XK_Hangul_WA XK_Hangul_WAE \ XK_Hangul_OE XK_Hangul_YO XK_Hangul_U \ XK_Hangul_WEO XK_Hangul_WE XK_Hangul_WI \ XK_Hangul_YU XK_Hangul_EU XK_Hangul_YI \ XK_Hangul_I XK_Hangul_J_Kiyeog \ XK_Hangul_J_SsangKiyeog XK_Hangul_J_KiyeogSios \ XK_Hangul_J_Nieun XK_Hangul_J_NieunJieuj \ XK_Hangul_J_NieunHieuh XK_Hangul_J_Dikeud \ XK_Hangul_J_Rieul XK_Hangul_J_RieulKiyeog \ XK_Hangul_J_RieulMieum XK_Hangul_J_RieulPieub \ XK_Hangul_J_RieulSios XK_Hangul_J_RieulTieut \ XK_Hangul_J_RieulPhieuf XK_Hangul_J_RieulHieuh \ XK_Hangul_J_Mieum XK_Hangul_J_Pieub \ XK_Hangul_J_PieubSios XK_Hangul_J_Sios \ XK_Hangul_J_SsangSios XK_Hangul_J_Ieung \ XK_Hangul_J_Jieuj XK_Hangul_J_Cieuc \ XK_Hangul_J_Khieuq XK_Hangul_J_Tieut \ XK_Hangul_J_Phieuf XK_Hangul_J_Hieuh \ XK_Hangul_RieulYeorinHieuh \ XK_Hangul_SunkyeongeumMieum \ XK_Hangul_SunkyeongeumPieub XK_Hangul_PanSios \ XK_Hangul_KkogjiDalrinIeung \ XK_Hangul_SunkyeongeumPhieuf \ XK_Hangul_YeorinHieuh XK_Hangul_AraeA \ XK_Hangul_AraeAE XK_Hangul_J_PanSios \ XK_Hangul_J_KkogjiDalrinIeung \ XK_Hangul_J_YeorinHieuh XK_Korean_Won \ XK_Armenian_eternity XK_Armenian_ligature_ew \ XK_Armenian_full_stop XK_Armenian_verjaket \ XK_Armenian_parenright XK_Armenian_parenleft \ XK_Armenian_guillemotright \ XK_Armenian_guillemotleft XK_Armenian_em_dash \ XK_Armenian_dot XK_Armenian_mijaket \ XK_Armenian_separation_mark XK_Armenian_but \ XK_Armenian_comma XK_Armenian_en_dash \ XK_Armenian_hyphen XK_Armenian_yentamna \ XK_Armenian_ellipsis XK_Armenian_exclam \ XK_Armenian_amanak XK_Armenian_accent \ XK_Armenian_shesht XK_Armenian_question \ XK_Armenian_paruyk XK_Armenian_AYB \ XK_Armenian_ayb XK_Armenian_BEN \ XK_Armenian_ben XK_Armenian_GIM \ XK_Armenian_gim XK_Armenian_DA XK_Armenian_da \ XK_Armenian_YECH XK_Armenian_yech \ XK_Armenian_ZA XK_Armenian_za XK_Armenian_E \ XK_Armenian_e XK_Armenian_AT XK_Armenian_at \ XK_Armenian_TO XK_Armenian_to \ XK_Armenian_ZHE XK_Armenian_zhe \ XK_Armenian_INI XK_Armenian_ini \ XK_Armenian_LYUN XK_Armenian_lyun \ XK_Armenian_KHE XK_Armenian_khe \ XK_Armenian_TSA XK_Armenian_tsa \ XK_Armenian_KEN XK_Armenian_ken XK_Armenian_HO \ XK_Armenian_ho XK_Armenian_DZA XK_Armenian_dza \ XK_Armenian_GHAT XK_Armenian_ghat \ XK_Armenian_TCHE XK_Armenian_tche \ XK_Armenian_MEN XK_Armenian_men XK_Armenian_HI \ XK_Armenian_hi XK_Armenian_NU XK_Armenian_nu \ XK_Armenian_SHA XK_Armenian_sha XK_Armenian_VO \ XK_Armenian_vo XK_Armenian_CHA XK_Armenian_cha \ XK_Armenian_PE XK_Armenian_pe XK_Armenian_JE \ XK_Armenian_je XK_Armenian_RA XK_Armenian_ra \ XK_Armenian_SE XK_Armenian_se XK_Armenian_VEV \ XK_Armenian_vev XK_Armenian_TYUN \ XK_Armenian_tyun XK_Armenian_RE \ XK_Armenian_re XK_Armenian_TSO \ XK_Armenian_tso XK_Armenian_VYUN \ XK_Armenian_vyun XK_Armenian_PYUR \ XK_Armenian_pyur XK_Armenian_KE XK_Armenian_ke \ XK_Armenian_O XK_Armenian_o XK_Armenian_FE \ XK_Armenian_fe XK_Armenian_apostrophe \ XK_Armenian_section_sign XK_Georgian_an \ XK_Georgian_ban XK_Georgian_gan \ XK_Georgian_don XK_Georgian_en XK_Georgian_vin \ XK_Georgian_zen XK_Georgian_tan \ XK_Georgian_in XK_Georgian_kan XK_Georgian_las \ XK_Georgian_man XK_Georgian_nar XK_Georgian_on \ XK_Georgian_par XK_Georgian_zhar \ XK_Georgian_rae XK_Georgian_san \ XK_Georgian_tar XK_Georgian_un \ XK_Georgian_phar XK_Georgian_khar \ XK_Georgian_ghan XK_Georgian_qar \ XK_Georgian_shin XK_Georgian_chin \ XK_Georgian_can XK_Georgian_jil \ XK_Georgian_cil XK_Georgian_char \ XK_Georgian_xan XK_Georgian_jhan \ XK_Georgian_hae XK_Georgian_he XK_Georgian_hie \ XK_Georgian_we XK_Georgian_har XK_Georgian_hoe \ XK_Georgian_fi XK_Ccedillaabovedot \ XK_Xabovedot XK_Qabovedot XK_IE XK_UO \ XK_Zstroke XK_ccedillaabovedot XK_xabovedot \ XK_qabovedot XK_ie XK_uo XK_zstroke XK_SCHWA \ XK_schwa XK_Lbelowdot XK_Lstrokebelowdot \ XK_lbelowdot XK_lstrokebelowdot XK_Gtilde \ XK_gtilde XK_Abelowdot XK_abelowdot \ XK_Ahook XK_ahook XK_Acircumflexacute \ XK_acircumflexacute XK_Acircumflexgrave \ XK_acircumflexgrave XK_Acircumflexhook \ XK_acircumflexhook XK_Acircumflextilde \ XK_acircumflextilde XK_Acircumflexbelowdot \ XK_acircumflexbelowdot XK_Abreveacute \ XK_abreveacute XK_Abrevegrave XK_abrevegrave \ XK_Abrevehook XK_abrevehook XK_Abrevetilde \ XK_abrevetilde XK_Abrevebelowdot \ XK_abrevebelowdot XK_Ebelowdot XK_ebelowdot \ XK_Ehook XK_ehook XK_Etilde XK_etilde \ XK_Ecircumflexacute XK_ecircumflexacute \ XK_Ecircumflexgrave XK_ecircumflexgrave \ XK_Ecircumflexhook XK_ecircumflexhook \ XK_Ecircumflextilde XK_ecircumflextilde \ XK_Ecircumflexbelowdot XK_ecircumflexbelowdot \ XK_Ihook XK_ihook XK_Ibelowdot XK_ibelowdot \ XK_Obelowdot XK_obelowdot XK_Ohook XK_ohook \ XK_Ocircumflexacute XK_ocircumflexacute \ XK_Ocircumflexgrave XK_ocircumflexgrave \ XK_Ocircumflexhook XK_ocircumflexhook \ XK_Ocircumflextilde XK_ocircumflextilde \ XK_Ocircumflexbelowdot XK_ocircumflexbelowdot \ XK_Ohornacute XK_ohornacute XK_Ohorngrave \ XK_ohorngrave XK_Ohornhook XK_ohornhook \ XK_Ohorntilde XK_ohorntilde XK_Ohornbelowdot \ XK_ohornbelowdot XK_Ubelowdot XK_ubelowdot \ XK_Uhook XK_uhook XK_Uhornacute XK_uhornacute \ XK_Uhorngrave XK_uhorngrave XK_Uhornhook \ XK_uhornhook XK_Uhorntilde XK_uhorntilde \ XK_Uhornbelowdot XK_uhornbelowdot XK_Ybelowdot \ XK_ybelowdot XK_Yhook XK_yhook XK_Ytilde \ XK_ytilde XK_Ohorn XK_ohorn XK_Uhorn XK_uhorn \ XK_combining_tilde XK_combining_grave \ XK_combining_acute XK_combining_hook \ XK_combining_belowdot XK_EcuSign XK_ColonSign \ XK_CruzeiroSign XK_FFrancSign XK_LiraSign \ XK_MillSign XK_NairaSign XK_PesetaSign \ XK_RupeeSign XK_WonSign XK_NewSheqelSign \ XK_DongSign XK_EuroSign syn keyword xmodmapKeySym SunXK_Sys_Req SunXK_Print_Screen SunXK_Compose \ SunXK_AltGraph SunXK_PageUp SunXK_PageDown \ SunXK_Undo SunXK_Again SunXK_Find SunXK_Stop \ SunXK_Props SunXK_Front SunXK_Copy SunXK_Open \ SunXK_Paste SunXK_Cut SunXK_PowerSwitch \ SunXK_AudioLowerVolume SunXK_AudioMute \ SunXK_AudioRaiseVolume SunXK_VideoDegauss \ SunXK_VideoLowerBrightness \ SunXK_VideoRaiseBrightness \ SunXK_PowerSwitchShift syn keyword xmodmapKeySym XF86XK_ModeLock XF86XK_Standby \ XF86XK_AudioLowerVolume XF86XK_AudioMute \ XF86XK_AudioRaiseVolume XF86XK_AudioPlay \ XF86XK_AudioStop XF86XK_AudioPrev \ XF86XK_AudioNext XF86XK_HomePage \ XF86XK_Mail XF86XK_Start XF86XK_Search \ XF86XK_AudioRecord XF86XK_Calculator \ XF86XK_Memo XF86XK_ToDoList XF86XK_Calendar \ XF86XK_PowerDown XF86XK_ContrastAdjust \ XF86XK_RockerUp XF86XK_RockerDown \ XF86XK_RockerEnter XF86XK_Back XF86XK_Forward \ XF86XK_Stop XF86XK_Refresh XF86XK_PowerOff \ XF86XK_WakeUp XF86XK_Eject XF86XK_ScreenSaver \ XF86XK_WWW XF86XK_Sleep XF86XK_Favorites \ XF86XK_AudioPause XF86XK_AudioMedia \ XF86XK_MyComputer XF86XK_VendorHome \ XF86XK_LightBulb XF86XK_Shop XF86XK_History \ XF86XK_OpenURL XF86XK_AddFavorite \ XF86XK_HotLinks XF86XK_BrightnessAdjust \ XF86XK_Finance XF86XK_Community \ XF86XK_AudioRewind XF86XK_XF86BackForward \ XF86XK_Launch0 XF86XK_Launch1 XF86XK_Launch2 \ XF86XK_Launch3 XF86XK_Launch4 XF86XK_Launch5 \ XF86XK_Launch6 XF86XK_Launch7 XF86XK_Launch8 \ XF86XK_Launch9 XF86XK_LaunchA XF86XK_LaunchB \ XF86XK_LaunchC XF86XK_LaunchD XF86XK_LaunchE \ XF86XK_LaunchF XF86XK_ApplicationLeft \ XF86XK_ApplicationRight XF86XK_Book \ XF86XK_CD XF86XK_Calculater XF86XK_Clear \ XF86XK_Close XF86XK_Copy XF86XK_Cut \ XF86XK_Display XF86XK_DOS XF86XK_Documents \ XF86XK_Excel XF86XK_Explorer XF86XK_Game \ XF86XK_Go XF86XK_iTouch XF86XK_LogOff \ XF86XK_Market XF86XK_Meeting XF86XK_MenuKB \ XF86XK_MenuPB XF86XK_MySites XF86XK_New \ XF86XK_News XF86XK_OfficeHome XF86XK_Open \ XF86XK_Option XF86XK_Paste XF86XK_Phone \ XF86XK_Q XF86XK_Reply XF86XK_Reload \ XF86XK_RotateWindows XF86XK_RotationPB \ XF86XK_RotationKB XF86XK_Save XF86XK_ScrollUp \ XF86XK_ScrollDown XF86XK_ScrollClick \ XF86XK_Send XF86XK_Spell XF86XK_SplitScreen \ XF86XK_Support XF86XK_TaskPane XF86XK_Terminal \ XF86XK_Tools XF86XK_Travel XF86XK_UserPB \ XF86XK_User1KB XF86XK_User2KB XF86XK_Video \ XF86XK_WheelButton XF86XK_Word XF86XK_Xfer \ XF86XK_ZoomIn XF86XK_ZoomOut XF86XK_Away \ XF86XK_Messenger XF86XK_WebCam \ XF86XK_MailForward XF86XK_Pictures \ XF86XK_Music XF86XK_Switch_VT_1 \ XF86XK_Switch_VT_2 XF86XK_Switch_VT_3 \ XF86XK_Switch_VT_4 XF86XK_Switch_VT_5 \ XF86XK_Switch_VT_6 XF86XK_Switch_VT_7 \ XF86XK_Switch_VT_8 XF86XK_Switch_VT_9 \ XF86XK_Switch_VT_10 XF86XK_Switch_VT_11 \ XF86XK_Switch_VT_12 XF86XK_Ungrab \ XF86XK_ClearGrab XF86XK_Next_VMode \ XF86XK_Prev_VMode syn keyword xmodmapKeyword keycode keysym clear add remove pointer hi def link xmodmapComment Comment hi def link xmodmapTodo Todo hi def link xmodmapInt Number hi def link xmodmapHex Number hi def link xmodmapOctal Number hi def link xmodmapOctalError Error hi def link xmodmapKeySym Constant hi def link xmodmapKeyword Keyword let b:current_syntax = "xmodmap" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif syn keyword xpmType char syn keyword xpmStorageClass static syn keyword xpmTodo TODO FIXME XXX contained syn region xpmComment start="/\*" end="\*/" contains=xpmTodo syn region xpmPixelString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@xpmColors if has("gui_running") || has("termguicolors") && &termguicolors let color = "" let chars = "" let colors = 0 let cpp = 0 let n = 0 let i = 1 while i <= line("$") " scanning all lines let s = matchstr(getline(i), '".\{-1,}"') if s != "" " does line contain a string? if n == 0 " first string is the Values string let colors = substitute(s, '"\s*\d\+\s\+\d\+\s\+\(\d\+\).*"', '\1', '') let cpp = substitute(s, '"\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*"', '\1', '') if cpp =~ '[^0-9]' break " if cpp is not made of digits there must be something wrong endif if s !~ '/' exe 'syn match xpmValues /' . s . '/' endif hi link xpmValues String let n = 1 " n = color index elseif n <= colors " string is a color specification let chars = substitute(s, '"\(.\{'.cpp.'}\s\).*"', '\1', '') let color = substitute(s, '".*\sc\s\+\(.\{-}\)\s*\(\(g4\=\|[ms]\)\s.*\)*\s*"', '\1', '') if color == s let color = substitute(s, '".*\sg\s\+\(.\{-}\)\s*\(\(g4\|[ms]\)\s.*\)*\s*"', '\1', '') if color == s let color = substitute(s, '".*\sg4\s\+\(.\{-}\)\s*\([ms]\s.*\)*\s*"', '\1', '') if color == s let color = substitute(s, '".*\sm\s\+\(.\{-}\)\s*\(s\s.*\)*\s*"', '\1', '') if color == s let color = "" endif endif endif endif if color =~ '#\x\{10,}$' let color = substitute(color, '\(\x\x\)\x\x', '\1', 'g') elseif color =~ '#\x\{7,}$' let color = substitute(color, '\(\x\x\)\x', '\1', 'g') elseif color =~ '#\x\{3}$' let color = substitute(color, '\(\x\)\(\x\)\(\x\)', '0\10\20\3', '') endif let s = escape(s, '/\*^$.~[]') let chars = escape(chars, '/\*^$.~[]') exe 'syn match xpmCol'.n.'Def /'.s.'/ contains=xpmCol'.n.'inDef' exe 'hi link xpmCol'.n.'Def String' exe 'syn match xpmCol'.n.'inDef /"'.chars.'/hs=s+'.(cpp+1).' contained' exe 'hi link xpmCol'.n.'inDef xpmColor'.n let chars = substitute(chars, '.$', '', '') exe 'syn match xpmColor'.n.' /'.chars.'/ contained' exe 'syn cluster xpmColors add=xpmColor'.n if color == "" || substitute(color, '.*', '\L&', '') == 'none' exe 'hi xpmColor'.n.' guifg=bg' exe 'hi xpmColor'.n.' guibg=NONE' elseif color !~ "'" exe 'hi xpmColor'.n." guifg='".color."'" exe 'hi xpmColor'.n." guibg='".color."'" endif let n = n + 1 else break " no more color string endif endif let i = i + 1 endwhile unlet color chars colors cpp n i s endif " has("gui_running") || has("termguicolors") && &termguicolors hi def link xpmType Type hi def link xpmStorageClass StorageClass hi def link xpmTodo Todo hi def link xpmComment Comment hi def link xpmPixelString String let b:current_syntax = "xpm" if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim syn region xpm2PixelString start="^" end="$" contains=@xpm2Colors syn keyword xpm2Todo TODO FIXME XXX contained syn match xpm2Comment "\!.*$" contains=@Spell,xpm2Todo command -nargs=+ Hi hi def if has("gui_running") || has("termguicolors") && &termguicolors let color = "" let chars = "" let colors = 0 let cpp = 0 let n = 0 let i = 1 while i <= line("$") " scanning all lines let s = getline(i) if match(s,"\!.*$") != -1 let s = matchstr(s, "^[^\!]*") endif if s != "" " does line contain a string? if n == 0 " first string is the Values string let colors = substitute(s, '\s*\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '') let cpp = substitute(s, '\s*\d\+\s\+\d\+\s\+\d\+\s\+\(\d\+\).*', '\1', '') if cpp =~ '[^0-9]' break " if cpp is not made of digits there must be something wrong endif if s !~ '/' exe 'syn match xpm2Values /' . s . '/' endif hi def link xpm2Values Statement let n = 1 " n = color index elseif n <= colors " string is a color specification let chars = substitute(s, '\(.\{'.cpp.'}\s\+\).*', '\1', '') let color = substitute(s, '.*\sc\s\+\(.\{-}\)\s*\(\(g4\=\|[ms]\)\s.*\)*\s*', '\1', '') if color == s let color = substitute(s, '.*\sg\s\+\(.\{-}\)\s*\(\(g4\|[ms]\)\s.*\)*\s*', '\1', '') if color == s let color = substitute(s, '.*\sg4\s\+\(.\{-}\)\s*\([ms]\s.*\)*\s*', '\1', '') if color == s let color = substitute(s, '.*\sm\s\+\(.\{-}\)\s*\(s\s.*\)*\s*', '\1', '') if color == s let color = "" endif endif endif endif if color =~ '#\x\{10,}$' let color = substitute(color, '\(\x\x\)\x\x', '\1', 'g') elseif color =~ '#\x\{7,}$' let color = substitute(color, '\(\x\x\)\x', '\1', 'g') elseif color =~ '#\x\{3}$' let color = substitute(color, '\(\x\)\(\x\)\(\x\)', '0\10\20\3', '') endif let s = escape(s, '/\*^$.~[]') let chars = escape(chars, '/\*^$.~[]') let s = substitute(s, "[ \t][ \t]*", "\\\\s\\\\+", "g") let chars = substitute(chars, "[ \t][ \t]*", "\\\\s\\\\+", "g") exe 'syn match xpm2Col'.n.'Def /'.s.'/ contains=xpm2Col'.n.'inDef' exe 'hi def link xpm2Col'.n.'Def Constant' exe 'syn match xpm2Col'.n.'inDef /^'.chars.'/hs=s+'.(cpp).' contained' exe 'hi def link xpm2Col'.n.'inDef xpm2Color'.n let chars = substitute(chars, '\\s\\+$', '', '') exe 'syn match xpm2Color'.n.' /'.chars.'/ contained' exe 'syn cluster xpm2Colors add=xpm2Color'.n if color == "" || substitute(color, '.*', '\L&', '') == 'none' exe 'Hi xpm2Color'.n.' guifg=bg guibg=NONE' elseif color !~ "'" exe 'Hi xpm2Color'.n." guifg='".color."' guibg='".color."'" endif let n = n + 1 else break " no more color string endif endif let i = i + 1 endwhile unlet color chars colors cpp n i s endif " has("gui_running") || has("termguicolors") && &termguicolors hi def link xpm2Type Type hi def link xpm2StorageClass StorageClass hi def link xpm2Todo Todo hi def link xpm2Comment Comment hi def link xpm2PixelString String delcommand Hi let b:current_syntax = "xpm2" let &cpo = s:cpo_save unlet s:cpo_save if exists("b:current_syntax") finish endif setlocal iskeyword+=- runtime syntax/xml.vim syn case match syn keyword xqStatement ancestor ancestor-or-self and as ascending at attribute base-uri boundary-space by case cast castable child collation construction declare default descendant descendant-or-self descending div document element else empty encoding eq every except external following following-sibling for function ge greatest gt idiv if import in inherit-namespaces instance intersect is le least let lt mod module namespace ne no of or order ordered ordering parent preceding preceding-sibling preserve return satisfies schema self some stable strip then to treat typeswitch union unordered validate variable version where xmlspace xquery yes syn keyword xqFunction abs adjust-date-to-timezone adjust-date-to-timezone adjust-dateTime-to-timezone adjust-dateTime-to-timezone adjust-time-to-timezone adjust-time-to-timezone avg base-uri base-uri boolean ceiling codepoint-equal codepoints-to-string collection collection compare concat count current-date current-dateTime current-time data dateTime day-from-date day-from-dateTime days-from-duration deep-equal deep-equal default-collation distinct-values distinct-values doc doc-available document-uri empty ends-with ends-with error error error error escape-uri exactly-one exists false floor hours-from-dateTime hours-from-duration hours-from-time id id idref idref implicit-timezone in-scope-prefixes index-of index-of insert-before lang lang last local-name local-name local-name-from-QName lower-case matches matches max max min min minutes-from-dateTime minutes-from-duration minutes-from-time month-from-date month-from-dateTime months-from-duration name name namespace-uri namespace-uri namespace-uri-for-prefix namespace-uri-from-QName nilled node-name normalize-space normalize-space normalize-unicode normalize-unicode not number number one-or-more position prefix-from-QName QName remove replace replace resolve-QName resolve-uri resolve-uri reverse root root round round-half-to-even round-half-to-even seconds-from-dateTime seconds-from-duration seconds-from-time starts-with starts-with static-base-uri string string string-join string-length string-length string-to-codepoints subsequence subsequence substring substring substring-after substring-after substring-before substring-before sum sum timezone-from-date timezone-from-dateTime timezone-from-time tokenize tokenize trace translate true unordered upper-case year-from-date year-from-dateTime years-from-duration zero-or-one syn keyword xqOperator add-dayTimeDuration-to-date add-dayTimeDuration-to-dateTime add-dayTimeDuration-to-time add-dayTimeDurations add-yearMonthDuration-to-date add-yearMonthDuration-to-dateTime add-yearMonthDurations base64Binary-equal boolean-equal boolean-greater-than boolean-less-than concatenate date-equal date-greater-than date-less-than dateTime-equal dateTime-greater-than dateTime-less-than dayTimeDuration-equal dayTimeDuration-greater-than dayTimeDuration-less-than divide-dayTimeDuration divide-dayTimeDuration-by-dayTimeDuration divide-yearMonthDuration divide-yearMonthDuration-by-yearMonthDuration except gDay-equal gMonth-equal gMonthDay-equal gYear-equal gYearMonth-equal hexBinary-equal intersect is-same-node multiply-dayTimeDuration multiply-yearMonthDuration node-after node-before NOTATION-equal numeric-add numeric-divide numeric-equal numeric-greater-than numeric-integer-divide numeric-less-than numeric-mod numeric-multiply numeric-subtract numeric-unary-minus numeric-unary-plus QName-equal subtract-dates-yielding-dayTimeDuration subtract-dateTimes-yielding-dayTimeDuration subtract-dayTimeDuration-from-date subtract-dayTimeDuration-from-dateTime subtract-dayTimeDuration-from-time subtract-dayTimeDurations subtract-times subtract-yearMonthDuration-from-date subtract-yearMonthDuration-from-dateTime subtract-yearMonthDurations time-equal time-greater-than time-less-than to union yearMonthDuration-equal yearMonthDuration-greater-than yearMonthDuration-less-than syn match xqType "xs:\(\|Datatype\|primitive\|string\|boolean\|float\|double\|decimal\|duration\|dateTime\|time\|date\|gYearMonth\|gYear\|gMonthDay\|gDay\|gMonth\|hexBinary\|base64Binary\|anyURI\|QName\|NOTATION\|\|normalizedString\|token\|language\|IDREFS\|ENTITIES\|NMTOKEN\|NMTOKENS\|Name\|NCName\|ID\|IDREF\|ENTITY\|integer\|nonPositiveInteger\|negativeInteger\|long\|int\|short\|byte\|nonNegativeInteger\|unsignedLong\|unsignedInt\|unsignedShort\|unsignedByte\|positiveInteger\)" syn keyword xqXPath some every in in satisfies if then else to div idiv mod union intersect except instance of treat castable cast eq ne lt le gt ge is child descendant attribute self descendant-or-self following-sibling following namespace parent ancestor preceding-sibling preceding ancestor-or-self void item node document-node text comment processing-instruction attribute schema-attribute schema-element syn match xqExist "&=" syn match XQdoc contained "@\(param\|return\|author\)\>" syn match xqFloat "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" syn match xqFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" syn match xqFloat "\d\+e[-+]\=\d\+[fl]\=\>" syn match xqNumber "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" syn match xqNumber "\<\d\+\>" syn region xqString start=+\z(['"]\)+ skip=+\\.+ end=+\z1+ syn region xqComment start='(:' excludenl end=':)' contains=XQdoc syn match xqVariable "$\<[a-zA-Z:_][-.0-9a-zA-Z0-9:_]*\>" syn match xqSeparator ",\|;" syn region xqCode transparent contained start='{' excludenl end='}' contains=xqFunction,xqCode,xmlRegionBis,xqComment,xqStatement,xmlString,xqSeparator,xqNumber,xqVariable,xqString keepend extend syn region xmlRegionBis start=+<\z([^ /!?<>"']\+\)+ skip=++ end=++ end=+/>+ fold contains=xmlTag,xmlEndTag,xmlCdata,xmlRegionBis,xmlComment,xmlEntity,xmlProcessing,xqCode keepend extend hi def link xqNumber Number hi def link xqFloat Number hi def link xqString String hi def link xqVariable Identifier hi def link xqComment Comment hi def link xqSeparator Operator hi def link xqStatement Statement hi def link xqFunction Function hi def link xqOperator Operator hi def link xqType Type hi def link xqXPath Operator hi def link XQdoc Special hi def link xqExist Operator let b:current_syntax = "xquery" if exists("b:current_syntax") finish endif runtime! syntax/c.vim let b:current_syntax = "xs" if exists("b:current_syntax") finish endif runtime syntax/xml.vim syn cluster xmlTagHook add=xsdElement syn case match syn match xsdElement '\%(xsd:\)\@<=all' syn match xsdElement '\%(xsd:\)\@<=annotation' syn match xsdElement '\%(xsd:\)\@<=any' syn match xsdElement '\%(xsd:\)\@<=anyAttribute' syn match xsdElement '\%(xsd:\)\@<=appInfo' syn match xsdElement '\%(xsd:\)\@<=attribute' syn match xsdElement '\%(xsd:\)\@<=attributeGroup' syn match xsdElement '\%(xsd:\)\@<=choice' syn match xsdElement '\%(xsd:\)\@<=complexContent' syn match xsdElement '\%(xsd:\)\@<=complexType' syn match xsdElement '\%(xsd:\)\@<=documentation' syn match xsdElement '\%(xsd:\)\@<=element' syn match xsdElement '\%(xsd:\)\@<=enumeration' syn match xsdElement '\%(xsd:\)\@<=extension' syn match xsdElement '\%(xsd:\)\@<=field' syn match xsdElement '\%(xsd:\)\@<=group' syn match xsdElement '\%(xsd:\)\@<=import' syn match xsdElement '\%(xsd:\)\@<=include' syn match xsdElement '\%(xsd:\)\@<=key' syn match xsdElement '\%(xsd:\)\@<=keyref' syn match xsdElement '\%(xsd:\)\@<=length' syn match xsdElement '\%(xsd:\)\@<=list' syn match xsdElement '\%(xsd:\)\@<=maxInclusive' syn match xsdElement '\%(xsd:\)\@<=maxLength' syn match xsdElement '\%(xsd:\)\@<=minInclusive' syn match xsdElement '\%(xsd:\)\@<=minLength' syn match xsdElement '\%(xsd:\)\@<=pattern' syn match xsdElement '\%(xsd:\)\@<=redefine' syn match xsdElement '\%(xsd:\)\@<=restriction' syn match xsdElement '\%(xsd:\)\@<=schema' syn match xsdElement '\%(xsd:\)\@<=selector' syn match xsdElement '\%(xsd:\)\@<=sequence' syn match xsdElement '\%(xsd:\)\@<=simpleContent' syn match xsdElement '\%(xsd:\)\@<=simpleType' syn match xsdElement '\%(xsd:\)\@<=union' syn match xsdElement '\%(xsd:\)\@<=unique' hi def link xsdElement Statement if exists("b:current_syntax") finish endif runtime syntax/xml.vim syn cluster xmlTagHook add=xslElement syn case match syn match xslElement '\%(xsl:\)\@<=apply-imports' syn match xslElement '\%(xsl:\)\@<=apply-templates' syn match xslElement '\%(xsl:\)\@<=attribute' syn match xslElement '\%(xsl:\)\@<=attribute-set' syn match xslElement '\%(xsl:\)\@<=call-template' syn match xslElement '\%(xsl:\)\@<=choose' syn match xslElement '\%(xsl:\)\@<=comment' syn match xslElement '\%(xsl:\)\@<=copy' syn match xslElement '\%(xsl:\)\@<=copy-of' syn match xslElement '\%(xsl:\)\@<=decimal-format' syn match xslElement '\%(xsl:\)\@<=document' syn match xslElement '\%(xsl:\)\@<=element' syn match xslElement '\%(xsl:\)\@<=fallback' syn match xslElement '\%(xsl:\)\@<=for-each' syn match xslElement '\%(xsl:\)\@<=if' syn match xslElement '\%(xsl:\)\@<=include' syn match xslElement '\%(xsl:\)\@<=import' syn match xslElement '\%(xsl:\)\@<=key' syn match xslElement '\%(xsl:\)\@<=message' syn match xslElement '\%(xsl:\)\@<=namespace-alias' syn match xslElement '\%(xsl:\)\@<=number' syn match xslElement '\%(xsl:\)\@<=otherwise' syn match xslElement '\%(xsl:\)\@<=output' syn match xslElement '\%(xsl:\)\@<=param' syn match xslElement '\%(xsl:\)\@<=processing-instruction' syn match xslElement '\%(xsl:\)\@<=preserve-space' syn match xslElement '\%(xsl:\)\@<=script' syn match xslElement '\%(xsl:\)\@<=sort' syn match xslElement '\%(xsl:\)\@<=strip-space' syn match xslElement '\%(xsl:\)\@<=stylesheet' syn match xslElement '\%(xsl:\)\@<=template' syn match xslElement '\%(xsl:\)\@<=transform' syn match xslElement '\%(xsl:\)\@<=text' syn match xslElement '\%(xsl:\)\@<=value-of' syn match xslElement '\%(xsl:\)\@<=variable' syn match xslElement '\%(xsl:\)\@<=when' syn match xslElement '\%(xsl:\)\@<=with-param' hi def link xslElement Statement if exists("b:current_syntax") finish endif syn match xxdAddress "^[0-9a-f]\+:" contains=xxdSep syn match xxdSep contained ":" syn match xxdAscii " .\{,16\}\r\=$"hs=s+2 contains=xxdDot syn match xxdDot contained "[.\r]" if !exists("skip_xxd_syntax_inits") hi def link xxdAddress Constant hi def link xxdSep Identifier hi def link xxdAscii Statement endif let b:current_syntax = "xxd" if exists("b:current_syntax") syntax clear endif if has("folding") com! -nargs=+ SynFold fold else com! -nargs=+ SynFold endif let s:Cpath= fnameescape(expand(":p:h").(exists("g:yacc_uses_cpp")? "/cpp.vim" : "/c.vim")) if !filereadable(s:Cpath) for s:Cpath in split(globpath(&rtp,(exists("g:yacc_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n") if filereadable(fnameescape(s:Cpath)) let s:Cpath= fnameescape(s:Cpath) break endif endfor endif exe "syn include @yaccCode ".s:Cpath syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString,yaccComment SynFold syn region yaccInit start='.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty contained SynFold syn region yaccInit2 start='\%^.'ms=s-1,rs=s-1 matchgroup=yaccSectionSep end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2 contains=@yaccInitCluster nextgroup=yaccRules skipwhite skipempty SynFold syn region yaccHeader2 matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty contained SynFold syn region yaccHeader matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty SynFold syn region yaccRules matchgroup=yaccSectionSep start='^%%\ze\(\s*/[*/].*\)\=$' end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2 contains=@yaccRulesCluster nextgroup=yaccEndCode skipwhite skipempty contained SynFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%\ze\(\s*/[*/].*\)\=$' end='\%$' contains=@yaccCode contained syn match yaccDefines '^%define\s\+.*$' syn match yaccParseParam '%\(parse\|lex\)-param\>' skipwhite nextgroup=yaccParseParamStr syn match yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>' syn region yaccParseParamStr contained matchgroup=Delimiter start='{' end='}' contains=cStructure syn match yaccDelim "[:|]" contained syn match yaccOper "@\d\+" contained syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>" contained syn match yaccKey "\s%\(prec\|expect\)\>" contained syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" contained syn keyword yaccKeyActn yyerrok yyclearin contained syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion contained SynFold syn region yaccUnion matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode contained syn match yaccBrkt "[<>]" contained syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt contained SynFold syn region yaccNonterminal start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:" matchgroup=yaccDelim end=";" matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment contained syn region yaccComment start="/\*" end="\*/" syn region yaccComment start="//" end="$" syn match yaccString "'[^']*'" contained syn match yaccCurlyError "[{}]" SynFold syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=@yaccCode,yaccVar contained syn match yaccVar '\$\d\+\|\$\$\|\$<\I\i*>\$\|\$<\I\i*>\d\+' containedin=cParen,cPreProc,cMulti contained syn sync fromstart if !exists("skip_yacc_syn_inits") hi def link yaccBrkt yaccStmt hi def link yaccComment Comment hi def link yaccCurly Delimiter hi def link yaccCurlyError Error hi def link yaccDefines cDefine hi def link yaccDelim Delimiter hi def link yaccKeyActn Special hi def link yaccKey yaccStmt hi def link yaccNonterminal Function hi def link yaccOper yaccStmt hi def link yaccParseOption cDefine hi def link yaccParseParam yaccParseOption hi def link yaccSectionSep Todo hi def link yaccSep Delimiter hi def link yaccStmt Statement hi def link yaccString String hi def link yaccType Type hi def link yaccUnionStart yaccKey hi def link yaccVar Special endif delcommand SynFold let b:current_syntax = "yacc" if exists('b:current_syntax') finish endif let s:cpo_save = &cpo set cpo&vim if !exists('b:yaml_schema') if exists('g:yaml_schema') let b:yaml_schema = g:yaml_schema else let b:yaml_schema = 'core' endif endif let s:ns_char = '\%([\n\r\uFEFF \t]\@!\p\)' let s:ns_word_char = '[[:alnum:]_\-]' let s:ns_uri_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$,.!~*''()[\]]\)' let s:ns_tag_char = '\%(%\x\x\|'.s:ns_word_char.'\|[#/;?:@&=+$.~*''()]\)' let s:c_ns_anchor_char = '\%([\n\r\uFEFF \t,[\]{}]\@!\p\)' let s:c_indicator = '[\-?:,[\]{}#&*!|>''"%@`]' let s:c_flow_indicator = '[,[\]{}]' let s:ns_char_without_c_indicator = substitute(s:ns_char, '\v\C[\zs', '\=s:c_indicator[1:-2]', '') let s:_collection = '[^\@!\(\%(\\\.\|\[^\\\]]\)\+\)]' let s:_neg_collection = '[^\(\%(\\\.\|\[^\\\]]\)\+\)]' function s:SimplifyToAssumeAllPrintable(p) return substitute(a:p, '\V\C\\%('.s:_collection.'\\@!\\p\\)', '[^\1]', '') endfunction let s:ns_char = s:SimplifyToAssumeAllPrintable(s:ns_char) let s:ns_char_without_c_indicator = s:SimplifyToAssumeAllPrintable(s:ns_char_without_c_indicator) let s:c_ns_anchor_char = s:SimplifyToAssumeAllPrintable(s:c_ns_anchor_char) function s:SimplifyAdjacentCollections(p) return substitute(a:p, '\V\C'.s:_collection.'\\|'.s:_collection, '[\1\2]', 'g') endfunction let s:ns_uri_char = s:SimplifyAdjacentCollections(s:ns_uri_char) let s:ns_tag_char = s:SimplifyAdjacentCollections(s:ns_tag_char) let s:c_verbatim_tag = '!<'.s:ns_uri_char.'\+>' let s:c_named_tag_handle = '!'.s:ns_word_char.'\+!' let s:c_secondary_tag_handle = '!!' let s:c_primary_tag_handle = '!' let s:c_tag_handle = '\%('.s:c_named_tag_handle. \ '\|'.s:c_secondary_tag_handle. \ '\|'.s:c_primary_tag_handle.'\)' let s:c_ns_shorthand_tag = s:c_tag_handle . s:ns_tag_char.'\+' let s:c_non_specific_tag = '!' let s:c_ns_tag_property = s:c_verbatim_tag. \ '\|'.s:c_ns_shorthand_tag. \ '\|'.s:c_non_specific_tag let s:c_ns_anchor_name = s:c_ns_anchor_char.'\+' let s:c_ns_anchor_property = '&'.s:c_ns_anchor_name let s:c_ns_alias_node = '\*'.s:c_ns_anchor_name let s:ns_directive_name = s:ns_char.'\+' let s:ns_local_tag_prefix = '!'.s:ns_uri_char.'*' let s:ns_global_tag_prefix = s:ns_tag_char.s:ns_uri_char.'*' let s:ns_tag_prefix = s:ns_local_tag_prefix. \ '\|'.s:ns_global_tag_prefix let s:ns_plain_safe_out = s:ns_char let s:ns_plain_safe_in = '\%('.s:c_flow_indicator.'\@!'.s:ns_char.'\)' let s:ns_plain_safe_in = substitute(s:ns_plain_safe_in, '\V\C\\%('.s:_collection.'\\@!'.s:_neg_collection.'\\)', '[^\1\2]', '') let s:ns_plain_safe_in_without_colhash = substitute(s:ns_plain_safe_in, '\V\C'.s:_neg_collection, '[^\1:#]', '') let s:ns_plain_safe_out_without_colhash = substitute(s:ns_plain_safe_out, '\V\C'.s:_neg_collection, '[^\1:#]', '') let s:ns_plain_first_in = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_in.'\)\@=\)' let s:ns_plain_first_out = '\%('.s:ns_char_without_c_indicator.'\|[?:\-]\%('.s:ns_plain_safe_out.'\)\@=\)' let s:ns_plain_char_in = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_in.'\|'.s:ns_plain_safe_in_without_colhash.'\)' let s:ns_plain_char_out = '\%('.s:ns_char.'#\|:'.s:ns_plain_safe_out.'\|'.s:ns_plain_safe_out_without_colhash.'\)' let s:ns_plain_out = s:ns_plain_first_out . s:ns_plain_char_out.'*' let s:ns_plain_in = s:ns_plain_first_in . s:ns_plain_char_in.'*' syn keyword yamlTodo contained TODO FIXME XXX NOTE syn region yamlComment display oneline start='\%\(^\|\s\)#' end='$' \ contains=yamlTodo execute 'syn region yamlDirective oneline start='.string('^\ze%'.s:ns_directive_name.'\s\+').' '. \ 'end="$" '. \ 'contains=yamlTAGDirective,'. \ 'yamlYAMLDirective,'. \ 'yamlReservedDirective '. \ 'keepend' syn match yamlTAGDirective '%TAG\s\+' contained nextgroup=yamlTagHandle execute 'syn match yamlTagHandle contained nextgroup=yamlTagPrefix '.string(s:c_tag_handle.'\s\+') execute 'syn match yamlTagPrefix contained nextgroup=yamlComment ' . string(s:ns_tag_prefix) syn match yamlYAMLDirective '%YAML\s\+' contained nextgroup=yamlYAMLVersion syn match yamlYAMLVersion '\d\+\.\d\+' contained nextgroup=yamlComment execute 'syn match yamlReservedDirective contained nextgroup=yamlComment '. \string('%\%(\%(TAG\|YAML\)\s\)\@!'.s:ns_directive_name) syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"' \ contains=yamlEscape \ nextgroup=yamlKeyValueDelimiter syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'" \ contains=yamlSingleEscape \ nextgroup=yamlKeyValueDelimiter syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)' syn match yamlSingleEscape contained "''" syn match yamlBlockScalarHeader contained '\s\+\zs[|>]\%([+-]\=[1-9]\|[1-9]\=[+-]\)\=' syn cluster yamlConstant contains=yamlBool,yamlNull syn cluster yamlFlow contains=yamlFlowString,yamlFlowMapping,yamlFlowCollection syn cluster yamlFlow add=yamlFlowMappingKey,yamlFlowMappingMerge syn cluster yamlFlow add=@yamlConstant,yamlPlainScalar,yamlFloat syn cluster yamlFlow add=yamlTimestamp,yamlInteger,yamlMappingKeyStart syn cluster yamlFlow add=yamlComment syn region yamlFlowMapping matchgroup=yamlFlowIndicator start='{' end='}' contains=@yamlFlow syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' contains=@yamlFlow execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/' execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/' syn match yamlMappingKeyStart '?\ze\s' syn match yamlMappingKeyStart '?' contained execute 'syn match yamlFlowMappingKey /\%#=1'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '. \'nextgroup=yamlKeyValueDelimiter' syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlKeyValueDelimiter syn match yamlBlockCollectionItemStart '^\s*\zs-\%(\s\+-\)*\s' nextgroup=yamlBlockMappingKey,yamlBlockMappingMerge execute 'syn match yamlBlockMappingKey /\%#=1^\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ '. \'nextgroup=yamlKeyValueDelimiter' execute 'syn match yamlBlockMappingKey /\%#=1\s*\zs'.s:ns_plain_out.'\%(\s\+'.s:ns_plain_out.'\)*\ze\s*:\%(\s\|$\)/ contained '. \'nextgroup=yamlKeyValueDelimiter' syn match yamlBlockMappingMerge /^\s*\zs<<\ze:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter syn match yamlBlockMappingMerge /<<\ze\s*:\%(\s\|$\)/ nextgroup=yamlKeyValueDelimiter contained syn match yamlKeyValueDelimiter /\s*:/ contained syn match yamlKeyValueDelimiter /\s*:/ contained syn cluster yamlScalarWithSpecials contains=yamlPlainScalar,yamlBlockMappingKey,yamlFlowMappingKey let s:_bounder = s:SimplifyToAssumeAllPrintable('\%([[\]{}, \t]\@!\p\)') if b:yaml_schema is# 'json' syn keyword yamlNull null contained containedin=@yamlScalarWithSpecials syn keyword yamlBool true false exe 'syn match yamlInteger /'.s:_bounder.'\@1" syn match z8aInstruction "\" syn match z8aInstruction "\" syn match z8aSpecInst "\"me=s+3 syn match z8aSpecInst "\"me=s+3 syn match z8aSpecInst "\"me=s+2 syn match z8aLabel "[a-z_][a-z0-9_]*:" syn match z8aSpecialLabel "[a-z_][a-z0-9_]*::" syn match z8aPreProc "\.org" syn match z8aPreProc "\.globl" syn match z8aPreProc "\.db" syn match z8aPreProc "\.dw" syn match z8aPreProc "\.ds" syn match z8aPreProc "\.byte" syn match z8aPreProc "\.word" syn match z8aPreProc "\.blkb" syn match z8aPreProc "\.blkw" syn match z8aPreProc "\.ascii" syn match z8aPreProc "\.asciz" syn match z8aPreProc "\.module" syn match z8aPreProc "\.title" syn match z8aPreProc "\.sbttl" syn match z8aPreProc "\.even" syn match z8aPreProc "\.odd" syn match z8aPreProc "\.area" syn match z8aPreProc "\.page" syn match z8aPreProc "\.setdp" syn match z8aPreProc "\.radix" syn match z8aInclude "\.include" syn match z8aPreCondit "\.if" syn match z8aPreCondit "\.else" syn match z8aPreCondit "\.endif" syn match z8aString "\".*\"" syn match z8aString "\'.*\'" syn match z8aNumber "[0-9]\+" syn match z8aNumber "0[xXhH][0-9a-fA-F]\+" syn match z8aNumber "0[bB][0-1]*" syn match z8aNumber "0[oO\@qQ][0-7]\+" syn match z8aNumber "0[dD][0-9]\+" syn match z8aString "\#\'."hs=s+1 syn match z8aComment ";.*" syn case match hi def link z8aSection Special hi def link z8aLabel Label hi def link z8aSpecialLabel Label hi def link z8aComment Comment hi def link z8aInstruction Statement hi def link z8aSpecInst Statement hi def link z8aInclude Include hi def link z8aPreCondit PreCondit hi def link z8aPreProc PreProc hi def link z8aNumber Number hi def link z8aString String let b:current_syntax = "z8a" if exists("b:current_syntax") finish endif syn include @Ccode syntax/c.vim syn keyword zimbuTodo TODO FIXME XXX contained syn match zimbuNoBar "|" contained syn match zimbuParam "|[^| ]\+|" contained contains=zimbuNoBar syn match zimbuNoBacktick "`" contained syn match zimbuCode "`[^`]\+`" contained contains=zimbuNoBacktick syn match zimbuComment "#.*$" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell syn match zimbuComment "/\*.\{-}\*/" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell syn match zimbuChar "'\\\=.'" syn keyword zimbuBasicType bool status syn keyword zimbuBasicType int1 int2 int3 int4 int5 int6 int7 syn keyword zimbuBasicType int9 int10 int11 int12 int13 int14 int15 syn keyword zimbuBasicType int int8 int16 int32 int64 bigInt syn keyword zimbuBasicType nat nat8 byte nat16 nat32 nat64 bigNat syn keyword zimbuBasicType nat1 nat2 nat3 nat4 nat5 nat6 nat7 syn keyword zimbuBasicType nat9 nat10 nat11 nat12 nat13 nat14 nat15 syn keyword zimbuBasicType float float32 float64 float80 float128 syn keyword zimbuBasicType fixed1 fixed2 fixed3 fixed4 fixed5 fixed6 syn keyword zimbuBasicType fixed7 fixed8 fixed9 fixed10 fixed11 fixed12 syn keyword zimbuBasicType fixed13 fixed14 fixed15 syn keyword zimbuCompType string varString syn keyword zimbuCompType byteString varByteString syn keyword zimbuCompType tuple array list dict dictList set callback syn keyword zimbuCompType sortedList multiDict multiDictList multiSet syn keyword zimbuCompType complex complex32 complex64 complex80 complex128 syn keyword zimbuCompType proc func def thread evalThread lock cond pipe syn keyword zimbuType VAR dyn type USE GET syn match zimbuType "IO.File" syn match zimbuType "IO.Stat" syn keyword zimbuStatement IF ELSE ELSEIF IFNIL WHILE REPEAT FOR IN TO STEP syn keyword zimbuStatement DO UNTIL SWITCH WITH syn keyword zimbuStatement TRY CATCH FINALLY syn keyword zimbuStatement GENERATE_IF GENERATE_ELSE GENERATE_ELSEIF syn keyword zimbuStatement GENERATE_ERROR syn keyword zimbuStatement BUILD_IF BUILD_ELSE BUILD_ELSEIF syn keyword zimbuStatement CASE DEFAULT FINAL ABSTRACT VIRTUAL DEFINE REPLACE syn keyword zimbuStatement IMPLEMENTS EXTENDS PARENT LOCAL syn keyword zimbuStatement PART ALIAS TYPE CONNECT WRAP syn keyword zimbuStatement BREAK CONTINUE PROCEED syn keyword zimbuStatement RETURN EXIT THROW DEFER syn keyword zimbuStatement IMPORT AS OPTIONS MAIN syn keyword zimbuStatement INTERFACE PIECE INCLUDE MODULE ENUM BITS syn keyword zimbuStatement SHARED STATIC syn keyword zimbuStatement LAMBDA syn match zimbuStatement "\<\(FUNC\|PROC\|DEF\)\>" syn match zimbuStatement "\" syn match zimbuStatement "}" syn match zimbuAttribute "@backtrace=no\>" syn match zimbuAttribute "@backtrace=yes\>" syn match zimbuAttribute "@abstract\>" syn match zimbuAttribute "@earlyInit\>" syn match zimbuAttribute "@default\>" syn match zimbuAttribute "@define\>" syn match zimbuAttribute "@replace\>" syn match zimbuAttribute "@final\>" syn match zimbuAttribute "@primitive\>" syn match zimbuAttribute "@notOnExit\>" syn match zimbuAttribute "@private\>" syn match zimbuAttribute "@protected\>" syn match zimbuAttribute "@public\>" syn match zimbuAttribute "@local\>" syn match zimbuAttribute "@file\>" syn match zimbuAttribute "@directory\>" syn match zimbuAttribute "@read=private\>" syn match zimbuAttribute "@read=protected\>" syn match zimbuAttribute "@read=public\>" syn match zimbuAttribute "@read=file\>" syn match zimbuAttribute "@read=directory\>" syn match zimbuAttribute "@items=private\>" syn match zimbuAttribute "@items=protected\>" syn match zimbuAttribute "@items=public\>" syn match zimbuAttribute "@items=file\>" syn match zimbuAttribute "@items=directory\>" syn keyword zimbuMethod NEW EQUAL COPY COMPARE SIZE GET SET INIT EARLYINIT syn keyword zimbuOperator IS ISNOT ISA ISNOTA syn keyword zimbuModule ARG CHECK E GC IO LOG PROTO SYS HTTP ZC ZWT T TIME THREAD syn match zimbuImport "\.\zsPROTO" syn match zimbuImport "\.\zsCHEADER" syn region zimbuString start=+"+ skip=+[^"\\]\|\\.+ end=+"\|$+ contains=zimbuStringExpr syn match zimbuString +R"\([^"]\|""\)*\("\|$\)+ syn region zimbuLongString start=+''"+ end=+"''+ syn match zimbuStringExpr +\\([^)]*)+hs=s+2,he=e-1 contained contains=zimbuString,zimbuParenPairOuter syn region zimbuParenPairOuter start=+(+ms=s+1 end=+)+me=e-1 contained contains=zimbuString,zimbuParenPair syn region zimbuParenPair start=+(+ end=+)+ contained contains=zimbuString,zimbuParenPair syn keyword zimbuFixed TRUE FALSE NIL THIS THISTYPE FAIL OK syn keyword zimbuError NULL syn match zimbuSpaceError display excludenl "\S\s\+$"ms=s+1 syn match zimbuSpaceError display " \+\t" syn match zimbuSpaceError display "\t\+ " syn match zimbuUses contained "\ 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 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='<\@' \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString syn region zshHereDoc matchgroup=zshRedir \ start='<\@' \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString syn region zshHereDoc matchgroup=zshRedir \ start='<\@' \ contains=@zshSubst,@zshDerefs,zshQuoted,zshPOSIXString syn region zshHereDoc matchgroup=zshRedir \ start=+<\@' syn region zshHereDoc matchgroup=zshRedir \ start=+<\@' syn match zshVariable '\<\h\w*' contained syn match zshVariableDef '\<\h\w*\ze+\==' syn region zshVariableDef oneline \ start='\$\@' 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 zrecompile \ zregexparse zsocket zstyle ztcp syn case ignore syn match zshOptStart /^\s*\%(\%(\%(un\)\?setopt\)\|set\s+[-+]o\)/ nextgroup=zshOption skipwhite syn match zshOption / \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?all_export\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?always_last_prompt\>\)\|\%(\%(no_\?\)\?always_lastprompt\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?always_to_end\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?append_create\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?append_history\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_cd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_continue\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_list\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_menu\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_name_dirs\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_param_keys\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_param_slash\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_pushd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_remove_slash\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?auto_resume\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bad_pattern\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bang_hist\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bare_glob_qual\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bash_auto_list\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bash_rematch\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bg_nice\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?brace_ccl\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?brace_expand\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?bsd_echo\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?case_glob\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?case_match\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?c_bases\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?cdable_vars\>\)\|\%(\%(no_\?\)\?cd_able_vars\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?chase_dots\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?chase_links\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?check_jobs\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?combining_chars\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?complete_aliases\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?complete_in_word\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?continue_on_error\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?correct_all\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?c_precedences\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?csh_junkie_history\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?csh_junkie_loops\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?csh_junkie_quotes\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?csh_null_cmd\>\)\|\%(\%(no_\?\)\?cshnullcmd\>\)\|\%(\%(no_\?\)\?csh_null_cmd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?csh_null_glob\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?debug_before_cmd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?dot_glob\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?err_exit\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?err_return\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?extended_glob\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?extended_history\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?flow_control\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?force_float\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?function_argzero\>\)\|\%(\%(no_\?\)\?function_arg_zero\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?global_export\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?global_rcs\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?glob_assign\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?glob_complete\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?glob_dots\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?globsubst\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?glob_star_short\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hash_all\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hash_cmds\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hash_dirs\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hash_executables_only\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hash_list_all\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_allow_clobber\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_append\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_beep\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?histexpand\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?histexpiredupsfirst\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_fcntl_lock\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_find_no_dups\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_ignore_all_dups\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_ignore_dups\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_ignore_space\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_lex_words\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_no_functions\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_no_store\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_reduce_blanks\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_save_by_copy\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_save_no_dups\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_subst_pattern\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?hist_verify\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ignore_braces\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ignore_close_braces\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ignore_eof\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?inc_append_history\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?inc_append_history_time\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?interactive_comments\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ksh_arrays\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ksh_autoload\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ksh_glob\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ksh_option_print\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ksh_typeset\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?ksh_zero_subscript\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?list_ambiguous\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?list_beep\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?list_packed\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?list_rows_first\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?list_types\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?local_loops\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?local_options\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?local_patterns\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?local_traps\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?long_list_jobs\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?magic_equal_subst\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?mail_warn\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?mail_warning\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?menu_complete\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?multi_byte\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?multi_func_def\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?multi_os\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?no_match\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?null_glob\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?numeric_glob_sort\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?octal_zeroes\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?one_cmd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?over_strike\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?path_dirs\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?path_script\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?pipe_fail\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_aliases\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_arg_zero\>\)\|\%(\%(no_\?\)\?posix_argzero\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_builtins\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_cd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_identifiers\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_jobs\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_strings\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?posix_traps\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?print_eight_bit\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?print_exit_value\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?prompt_bang\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?prompt_cr\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?prompt_percent\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?prompt_sp\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?prompt_subst\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?prompt_vars\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?pushd_ignore_dups\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?pushd_minus\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?pushd_silent\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?pushd_to_home\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?rc_expandparam\>\)\|\%(\%(no_\?\)\?rc_expand_param\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?rc_quotes\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?rec_exact\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?re_match_pcre\>\)\|\%(\%(no_\?\)\?rematch_pcre\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?rm_star_silent\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?rm_star_wait\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?share_history\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?sh_file_expansion\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?sh_glob\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?shin_stdin\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?sh_nullcmd\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?sh_option_letters\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?short_loops\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?sh_word_split\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?single_command\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?single_line_zle\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?source_trace\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?sun_keyboard_hack\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?track_all\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?transient_rprompt\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?traps_async\>\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?type_set_silent\>\)\|\%(\%(no_\?\)\?typeset_silent\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)\| \ \%(\%(\\)\| \ \%(\%(\\)\|\%(\%(no_\?\)\?warn_create_global\>\)\| \ \%(\%(\\)\| \ \%(\%(\\)/ nextgroup=zshOption,zshComment skipwhite contained syn keyword zshTypes float integer local typeset declare private readonly syn match zshNumber '[+-]\=\<\d\+\>' syn match zshNumber '[+-]\=\<0x\x\+\>' syn match zshNumber '[+-]\=\<0\o\+\>' syn match zshNumber '[+-]\=\d\+#[-+]\=\w\+\>' syn match zshNumber '[+-]\=\d\+\.\d\+\>' 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 =============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = =============================================================================== Vim is a very powerful editor that has many commands, too many to explain in a tutor such as this. This tutor is designed to describe enough of the commands that you will be able to easily use Vim as an all-purpose editor. The approximate time required to complete the tutor is 25-30 minutes, depending upon how much time is spent with experimentation. ATTENTION: The commands in the lessons will modify the text. Make a copy of this file to practice on (if you started "vimtutor" this is already a copy). It is important to remember that this tutor is set up to teach by use. That means that you need to execute the commands to learn them properly. If you only read the text, you will forget the commands! Now, make sure that your Caps-Lock key is NOT depressed and press the j key enough times to move the cursor so that lesson 1.1 completely fills the screen. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.1: MOVING THE CURSOR ** To move the cursor, press the h,j,k,l keys as indicated. ** ^ k Hint: The h key is at the left and moves left. < h l > The l key is at the right and moves right. j The j key looks like a down arrow. v 1. Move the cursor around the screen until you are comfortable. 2. Hold down the down key (j) until it repeats. Now you know how to move to the next lesson. 3. Using the down key, move to lesson 1.2. NOTE: If you are ever unsure about something you typed, press to place you in Normal mode. Then retype the command you wanted. NOTE: The cursor keys should also work. But using hjkl you will be able to move around much faster, once you get used to it. Really! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.2: EXITING VIM !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. Press the key (to make sure you are in Normal mode). 2. Type: :q! . This exits the editor, DISCARDING any changes you have made. 3. Get back here by executing the command that got you into this tutor. That might be: vimtutor 4. If you have these steps memorized and are confident, execute steps 1 through 3 to exit and re-enter the editor. NOTE: :q! discards any changes you made. In a few lessons you will learn how to save the changes to a file. 5. Move the cursor down to lesson 1.3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.3: TEXT EDITING - DELETION ** Press x to delete the character under the cursor. ** 1. Move the cursor to the line below marked --->. 2. To fix the errors, move the cursor until it is on top of the character to be deleted. 3. Press the x key to delete the unwanted character. 4. Repeat steps 2 through 4 until the sentence is correct. ---> The ccow jumpedd ovverr thhe mooon. 5. Now that the line is correct, go on to lesson 1.4. NOTE: As you go through this tutor, do not try to memorize, learn by usage. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.4: TEXT EDITING - INSERTION ** Press i to insert text. ** 1. Move the cursor to the first line below marked --->. 2. To make the first line the same as the second, move the cursor on top of the character BEFORE which the text is to be inserted. 3. Press i and type in the necessary additions. 4. As each error is fixed press to return to Normal mode. Repeat steps 2 through 4 to correct the sentence. ---> There is text misng this . ---> There is some text missing from this line. 5. When you are comfortable inserting text move to lesson 1.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.5: TEXT EDITING - APPENDING ** Press A to append text. ** 1. Move the cursor to the first line below marked --->. It does not matter on what character the cursor is in that line. 2. Press A and type in the necessary additions. 3. As the text has been appended press to return to Normal mode. 4. Move the cursor to the second line marked ---> and repeat steps 2 and 3 to correct this sentence. ---> There is some text missing from th There is some text missing from this line. ---> There is also some text miss There is also some text missing here. 5. When you are comfortable appending text move to lesson 1.6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1.6: EDITING A FILE ** Use :wq to save a file and exit. ** !! NOTE: Before executing any of the steps below, read this entire lesson!! 1. Exit this tutor as you did in lesson 1.2: :q! Or, if you have access to another terminal, do the following there. 2. At the shell prompt type this command: vim tutor 'vim' is the command to start the Vim editor, 'tutor' is the name of the file you wish to edit. Use a file that may be changed. 3. Insert and delete text as you learned in the previous lessons. 4. Save the file with changes and exit Vim with: :wq 5. If you have quit vimtutor in step 1 restart the vimtutor and move down to the following summary. 6. After reading the above steps and understanding them: do it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 1 SUMMARY 1. The cursor is moved using either the arrow keys or the hjkl keys. h (left) j (down) k (up) l (right) 2. To start Vim from the shell prompt type: vim FILENAME 3. To exit Vim type: :q! to trash all changes. OR type: :wq to save the changes. 4. To delete the character at the cursor type: x 5. To insert or append text type: i type inserted text insert before the cursor A type appended text append after the line NOTE: Pressing will place you in Normal mode or will cancel an unwanted and partially completed command. Now continue with lesson 2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.1: DELETION COMMANDS ** Type dw to delete a word. ** 1. Press to make sure you are in Normal mode. 2. Move the cursor to the line below marked --->. 3. Move the cursor to the beginning of a word that needs to be deleted. 4. Type dw to make the word disappear. NOTE: The letter d will appear on the last line of the screen as you type it. Vim is waiting for you to type w . If you see another character than d you typed something wrong; press and start over. ---> There are a some words fun that don't belong paper in this sentence. 5. Repeat steps 3 and 4 until the sentence is correct and go to lesson 2.2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.2: MORE DELETION COMMANDS ** Type d$ to delete to the end of the line. ** 1. Press to make sure you are in Normal mode. 2. Move the cursor to the line below marked --->. 3. Move the cursor to the end of the correct line (AFTER the first . ). 4. Type d$ to delete to the end of the line. ---> Somebody typed the end of this line twice. end of this line twice. 5. Move on to lesson 2.3 to understand what is happening. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.3: ON OPERATORS AND MOTIONS Many commands that change text are made from an operator and a motion. The format for a delete command with the d delete operator is as follows: d motion Where: d - is the delete operator. motion - is what the operator will operate on (listed below). A short list of motions: w - until the start of the next word, EXCLUDING its first character. e - to the end of the current word, INCLUDING the last character. $ - to the end of the line, INCLUDING the last character. Thus typing de will delete from the cursor to the end of the word. NOTE: Pressing just the motion while in Normal mode without an operator will move the cursor as specified. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.4: USING A COUNT FOR A MOTION ** Typing a number before a motion repeats it that many times. ** 1. Move the cursor to the start of the line below marked --->. 2. Type 2w to move the cursor two words forward. 3. Type 3e to move the cursor to the end of the third word forward. 4. Type 0 (zero) to move to the start of the line. 5. Repeat steps 2 and 3 with different numbers. ---> This is just a line with words you can move around in. 6. Move on to lesson 2.5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.5: USING A COUNT TO DELETE MORE ** Typing a number with an operator repeats it that many times. ** In the combination of the delete operator and a motion mentioned above you insert a count before the motion to delete more: d number motion 1. Move the cursor to the first UPPER CASE word in the line marked --->. 2. Type d2w to delete the two UPPER CASE words. 3. Repeat steps 1 and 2 with a different count to delete the consecutive UPPER CASE words with one command. ---> this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.6: OPERATING ON LINES ** Type dd to delete a whole line. ** Due to the frequency of whole line deletion, the designers of Vi decided it would be easier to simply type two d's to delete a line. 1. Move the cursor to the second line in the phrase below. 2. Type dd to delete the line. 3. Now move to the fourth line. 4. Type 2dd to delete two lines. ---> 1) Roses are red, ---> 2) Mud is fun, ---> 3) Violets are blue, ---> 4) I have a car, ---> 5) Clocks tell time, ---> 6) Sugar is sweet ---> 7) And so are you. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2.7: THE UNDO COMMAND ** Press u to undo the last commands, U to fix a whole line. ** 1. Move the cursor to the line below marked ---> and place it on the first error. 2. Type x to delete the first unwanted character. 3. Now type u to undo the last command executed. 4. This time fix all the errors on the line using the x command. 5. Now type a capital U to return the line to its original state. 6. Now type u a few times to undo the U and preceding commands. 7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times to redo the commands (undo the undo's). ---> Fiix the errors oon thhis line and reeplace them witth undo. 8. These are very useful commands. Now move on to the lesson 2 Summary. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 2 SUMMARY 1. To delete from the cursor up to the next word type: dw 2. To delete from the cursor to the end of a line type: d$ 3. To delete a whole line type: dd 4. To repeat a motion prepend it with a number: 2w 5. The format for a change command is: operator [number] motion where: operator - is what to do, such as d for delete [number] - is an optional count to repeat the motion motion - moves over the text to operate on, such as w (word), $ (to the end of line), etc. 6. To move to the start of the line use a zero: 0 7. To undo previous actions, type: u (lowercase u) To undo all the changes on a line, type: U (capital U) To undo the undo's, type: CTRL-R ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.1: THE PUT COMMAND ** Type p to put previously deleted text after the cursor. ** 1. Move the cursor to the first line below marked --->. 2. Type dd to delete the line and store it in a Vim register. 3. Move the cursor to the c) line, ABOVE where the deleted line should go. 4. Type p to put the line below the cursor. 5. Repeat steps 2 through 4 to put all the lines in correct order. ---> d) Can you learn too? ---> b) Violets are blue, ---> c) Intelligence is learned, ---> a) Roses are red, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.2: THE REPLACE COMMAND ** Type rx to replace the character at the cursor with x . ** 1. Move the cursor to the first line below marked --->. 2. Move the cursor so that it is on top of the first error. 3. Type r and then the character which should be there. 4. Repeat steps 2 and 3 until the first line is equal to the second one. ---> Whan this lime was tuoed in, someone presswd some wrojg keys! ---> When this line was typed in, someone pressed some wrong keys! 5. Now move on to lesson 3.3. NOTE: Remember that you should be learning by doing, not memorization. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.3: THE CHANGE OPERATOR ** To change until the end of a word, type ce . ** 1. Move the cursor to the first line below marked --->. 2. Place the cursor on the u in lubw. 3. Type ce and the correct word (in this case, type ine ). 4. Press and move to the next character that needs to be changed. 5. Repeat steps 3 and 4 until the first sentence is the same as the second. ---> This lubw has a few wptfd that mrrf changing usf the change operator. ---> This line has a few words that need changing using the change operator. Notice that ce deletes the word and places you in Insert mode. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3.4: MORE CHANGES USING c ** The change operator is used with the same motions as delete. ** 1. The change operator works in the same way as delete. The format is: c [number] motion 2. The motions are the same, such as w (word) and $ (end of line). 3. Move the cursor to the first line below marked --->. 4. Move the cursor to the first error. 5. Type c$ and type the rest of the line like the second and press . ---> The end of this line needs some help to make it like the second. ---> The end of this line needs to be corrected using the c$ command. NOTE: You can use the Backspace key to correct mistakes while typing. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 3 SUMMARY 1. To put back text that has just been deleted, type p . This puts the deleted text AFTER the cursor (if a line was deleted it will go on the line below the cursor). 2. To replace the character under the cursor, type r and then the character you want to have there. 3. The change operator allows you to change from the cursor to where the motion takes you. eg. Type ce to change from the cursor to the end of the word, c$ to change to the end of a line. 4. The format for change is: c [number] motion Now go on to the next lesson. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.1: CURSOR LOCATION AND FILE STATUS ** Type CTRL-G to show your location in the file and the file status. Type G to move to a line in the file. ** NOTE: Read this entire lesson before executing any of the steps!! 1. Hold down the Ctrl key and press g . We call this CTRL-G. A message will appear at the bottom of the page with the filename and the position in the file. Remember the line number for Step 3. NOTE: You may see the cursor position in the lower right corner of the screen This happens when the 'ruler' option is set (see :help 'ruler' ) 2. Press G to move you to the bottom of the file. Type gg to move you to the start of the file. 3. Type the number of the line you were on and then G . This will return you to the line you were on when you first pressed CTRL-G. 4. If you feel confident to do this, execute steps 1 through 3. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.2: THE SEARCH COMMAND ** Type / followed by a phrase to search for the phrase. ** 1. In Normal mode type the / character. Notice that it and the cursor appear at the bottom of the screen as with the : command. 2. Now type 'errroor' . This is the word you want to search for. 3. To search for the same phrase again, simply type n . To search for the same phrase in the opposite direction, type N . 4. To search for a phrase in the backward direction, use ? instead of / . 5. To go back to where you came from press CTRL-O (Keep Ctrl down while pressing the letter o). Repeat to go back further. CTRL-I goes forward. ---> "errroor" is not the way to spell error; errroor is an error. NOTE: When the search reaches the end of the file it will continue at the start, unless the 'wrapscan' option has been reset. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.3: MATCHING PARENTHESES SEARCH ** Type % to find a matching ),], or } . ** 1. Place the cursor on any (, [, or { in the line below marked --->. 2. Now type the % character. 3. The cursor will move to the matching parenthesis or bracket. 4. Type % to move the cursor to the other matching bracket. 5. Move the cursor to another (,),[,],{ or } and see what % does. ---> This ( is a test line with ('s, ['s ] and {'s } in it. )) NOTE: This is very useful in debugging a program with unmatched parentheses! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4.4: THE SUBSTITUTE COMMAND ** Type :s/old/new/g to substitute 'new' for 'old'. ** 1. Move the cursor to the line below marked --->. 2. Type :s/thee/the . Note that this command only changes the first occurrence of "thee" in the line. 3. Now type :s/thee/the/g . Adding the g flag means to substitute globally in the line, change all occurrences of "thee" in the line. ---> thee best time to see thee flowers is in thee spring. 4. To change every occurrence of a character string between two lines, type :#,#s/old/new/g where #,# are the line numbers of the range of lines where the substitution is to be done. Type :%s/old/new/g to change every occurrence in the whole file. Type :%s/old/new/gc to find every occurrence in the whole file, with a prompt whether to substitute or not. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 4 SUMMARY 1. CTRL-G displays your location in the file and the file status. G moves to the end of the file. number G moves to that line number. gg moves to the first line. 2. Typing / followed by a phrase searches FORWARD for the phrase. Typing ? followed by a phrase searches BACKWARD for the phrase. After a search type n to find the next occurrence in the same direction or N to search in the opposite direction. CTRL-O takes you back to older positions, CTRL-I to newer positions. 3. Typing % while the cursor is on a (,),[,],{, or } goes to its match. 4. To substitute new for the first old in a line type :s/old/new To substitute new for all 'old's on a line type :s/old/new/g To substitute phrases between two line #'s type :#,#s/old/new/g To substitute all occurrences in the file type :%s/old/new/g To ask for confirmation each time add 'c' :%s/old/new/gc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.1: HOW TO EXECUTE AN EXTERNAL COMMAND ** Type :! followed by an external command to execute that command. ** 1. Type the familiar command : to set the cursor at the bottom of the screen. This allows you to enter a command-line command. 2. Now type the ! (exclamation point) character. This allows you to execute any external shell command. 3. As an example type ls following the ! and then hit . This will show you a listing of your directory, just as if you were at the shell prompt. Or use :!dir if ls doesn't work. NOTE: It is possible to execute any external command this way, also with arguments. NOTE: All : commands must be finished by hitting From here on we will not always mention it. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.2: MORE ON WRITING FILES ** To save the changes made to the text, type :w FILENAME ** 1. Type :!dir or :!ls to get a listing of your directory. You already know you must hit after this. 2. Choose a filename that does not exist yet, such as TEST. 3. Now type: :w TEST (where TEST is the filename you chose.) 4. This saves the whole file (the Vim Tutor) under the name TEST. To verify this, type :!dir or :!ls again to see your directory. NOTE: If you were to exit Vim and start it again with vim TEST , the file would be an exact copy of the tutor when you saved it. 5. Now remove the file by typing (Windows): :!del TEST or (Unix): :!rm TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.3: SELECTING TEXT TO WRITE ** To save part of the file, type v motion :w FILENAME ** 1. Move the cursor to this line. 2. Press v and move the cursor to the fifth item below. Notice that the text is highlighted. 3. Press the : character. At the bottom of the screen :'<,'> will appear. 4. Type w TEST , where TEST is a filename that does not exist yet. Verify that you see :'<,'>w TEST before you press . 5. Vim will write the selected lines to the file TEST. Use :!dir or :!ls to see it. Do not remove it yet! We will use it in the next lesson. NOTE: Pressing v starts Visual selection. You can move the cursor around to make the selection bigger or smaller. Then you can use an operator to do something with the text. For example, d deletes the text. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5.4: RETRIEVING AND MERGING FILES ** To insert the contents of a file, type :r FILENAME ** 1. Place the cursor just above this line. NOTE: After executing Step 2 you will see text from lesson 5.3. Then move DOWN to see this lesson again. 2. Now retrieve your TEST file using the command :r TEST where TEST is the name of the file you used. The file you retrieve is placed below the cursor line. 3. To verify that a file was retrieved, cursor back and notice that there are now two copies of lesson 5.3, the original and the file version. NOTE: You can also read the output of an external command. For example, :r !ls reads the output of the ls command and puts it below the cursor. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 5 SUMMARY 1. :!command executes an external command. Some useful examples are: (Windows) (Unix) :!dir :!ls - shows a directory listing. :!del FILENAME :!rm FILENAME - removes file FILENAME. 2. :w FILENAME writes the current Vim file to disk with name FILENAME. 3. v motion :w FILENAME saves the Visually selected lines in file FILENAME. 4. :r FILENAME retrieves disk file FILENAME and puts it below the cursor position. 5. :r !dir reads the output of the dir command and puts it below the cursor position. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.1: THE OPEN COMMAND ** Type o to open a line below the cursor and place you in Insert mode. ** 1. Move the cursor to the first line below marked --->. 2. Type the lowercase letter o to open up a line BELOW the cursor and place you in Insert mode. 3. Now type some text and press to exit Insert mode. ---> After typing o the cursor is placed on the open line in Insert mode. 4. To open up a line ABOVE the cursor, simply type a capital O , rather than a lowercase o. Try this on the line below. ---> Open up a line above this by typing O while the cursor is on this line. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.2: THE APPEND COMMAND ** Type a to insert text AFTER the cursor. ** 1. Move the cursor to the start of the first line below marked --->. 2. Press e until the cursor is on the end of li . 3. Type an a (lowercase) to append text AFTER the cursor. 4. Complete the word like the line below it. Press to exit Insert mode. 5. Use e to move to the next incomplete word and repeat steps 3 and 4. ---> This li will allow you to pract appendi text to a line. ---> This line will allow you to practice appending text to a line. NOTE: a, i and A all go to the same Insert mode, the only difference is where the characters are inserted. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.3: ANOTHER WAY TO REPLACE ** Type a capital R to replace more than one character. ** 1. Move the cursor to the first line below marked --->. Move the cursor to the beginning of the first xxx . 2. Now press R and type the number below it in the second line, so that it replaces the xxx . 3. Press to leave Replace mode. Notice that the rest of the line remains unmodified. 4. Repeat the steps to replace the remaining xxx. ---> Adding 123 to xxx gives you xxx. ---> Adding 123 to 456 gives you 579. NOTE: Replace mode is like Insert mode, but every typed character deletes an existing character. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.4: COPY AND PASTE TEXT ** Use the y operator to copy text and p to paste it ** 1. Move to the line below marked ---> and place the cursor after "a)". 2. Start Visual mode with v and move the cursor to just before "first". 3. Type y to yank (copy) the highlighted text. 4. Move the cursor to the end of the next line: j$ 5. Type p to put (paste) the text. Then type: a second . 6. Use Visual mode to select " item.", yank it with y , move to the end of the next line with j$ and put the text there with p . ---> a) this is the first item. b) NOTE: You can also use y as an operator; yw yanks one word. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6.5: SET OPTION ** Set an option so a search or substitute ignores case ** 1. Search for 'ignore' by entering: /ignore Repeat several times by pressing n . 2. Set the 'ic' (Ignore case) option by entering: :set ic 3. Now search for 'ignore' again by pressing n Notice that Ignore and IGNORE are now also found. 4. Set the 'hlsearch' and 'incsearch' options: :set hls is 5. Now type the search command again and see what happens: /ignore 6. To disable ignoring case enter: :set noic NOTE: To remove the highlighting of matches enter: :nohlsearch NOTE: If you want to ignore case for just one search command, use \c in the phrase: /ignore\c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 6 SUMMARY 1. Type o to open a line BELOW the cursor and start Insert mode. Type O to open a line ABOVE the cursor. 2. Type a to insert text AFTER the cursor. Type A to insert text after the end of the line. 3. The e command moves to the end of a word. 4. The y operator yanks (copies) text, p puts (pastes) it. 5. Typing a capital R enters Replace mode until is pressed. 6. Typing ":set xxx" sets the option "xxx". Some options are: 'ic' 'ignorecase' ignore upper/lower case when searching 'is' 'incsearch' show partial matches for a search phrase 'hls' 'hlsearch' highlight all matching phrases You can either use the long or the short option name. 7. Prepend "no" to switch an option off: :set noic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.1: GETTING HELP ** Use the on-line help system ** Vim has a comprehensive on-line help system. To get started, try one of these three: - press the key (if you have one) - press the key (if you have one) - type :help Read the text in the help window to find out how the help works. Type CTRL-W CTRL-W to jump from one window to another. Type :q to close the help window. You can find help on just about any subject, by giving an argument to the ":help" command. Try these (don't forget pressing ): :help w :help c_CTRL-D :help insert-index :help user-manual ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.2: CREATE A STARTUP SCRIPT ** Enable Vim features ** Vim has many more features than Vi, but most of them are disabled by default. To start using more features you have to create a "vimrc" file. 1. Start editing the "vimrc" file. This depends on your system: :e ~/.vimrc for Unix :e $VIM/_vimrc for Windows 2. Now read the example "vimrc" file contents: :r $VIMRUNTIME/vimrc_example.vim 3. Write the file with: :w The next time you start Vim it will use syntax highlighting. You can add all your preferred settings to this "vimrc" file. For more information type :help vimrc-intro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7.3: COMPLETION ** Command line completion with CTRL-D and ** 1. Make sure Vim is not in compatible mode: :set nocp 2. Look what files exist in the directory: :!ls or :!dir 3. Type the start of a command: :e 4. Press CTRL-D and Vim will show a list of commands that start with "e". 5. Type d and Vim will complete the command name to ":edit". 6. Now add a space and the start of an existing file name: :edit FIL 7. Press . Vim will complete the name (if it is unique). NOTE: Completion works for many commands. Just try pressing CTRL-D and . It is especially useful for :help . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lesson 7 SUMMARY 1. Type :help or press or to open a help window. 2. Type :help cmd to find help on cmd . 3. Type CTRL-W CTRL-W to jump to another window. 4. Type :q to close the help window. 5. Create a vimrc startup script to keep your preferred settings. 6. When typing a : command, press CTRL-D to see possible completions. Press to use one completion. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This concludes the Vim Tutor. It was intended to give a brief overview of the Vim editor, just enough to allow you to use the editor fairly easily. It is far from complete as Vim has many many more commands. Read the user manual next: ":help user-manual". For further reading and studying, this book is recommended: Vim - Vi Improved - by Steve Oualline Publisher: New Riders The first book completely dedicated to Vim. Especially useful for beginners. There are many examples and pictures. See http://iccf-holland.org/click5.html This book is older and more about Vi than Vim, but also recommended: Learning the Vi Editor - by Linda Lamb Publisher: O'Reilly & Associates Inc. It is a good book to get to know almost anything you want to do with Vi. The sixth edition also includes information on Vim. This tutorial was written by Michael C. Pierce and Robert K. Ware, Colorado School of Mines using ideas supplied by Charles Smith, Colorado State University. E-mail: bware@mines.colorado.edu. Modified for Vim by Bram Moolenaar. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~