codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: TT2 (Perl Template Toolkit)3" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)4" Author: Moriki, Atsushi <4woods+vim@gmail.com>5" Homepage: https://github.com/vim-perl/vim-perl6" Bugs/requests: https://github.com/vim-perl/vim-perl/issues7" License: Vim License (see :help license)8" Last Change: 2018 Mar 289"10" Installation:11" put tt2.vim and tt2html.vim in to your syntax directory.12"13" add below in your filetype.vim.14" au BufNewFile,BufRead *.tt2 setf tt215" or16" au BufNewFile,BufRead *.tt217" \ if ( getline(1) . getline(2) . getline(3) =~ '<\chtml' |18" \ && getline(1) . getline(2) . getline(3) !~ '<[%?]' ) |19" \ || getline(1) =~ '<!DOCTYPE HTML' |20" \ setf tt2html |21" \ else |22" \ setf tt2 |23" \ endif24"25" define START_TAG, END_TAG26" "ASP"27" :let b:tt2_syn_tags = '<% %>'28" "PHP"29" :let b:tt2_syn_tags = '<? ?>'30" "TT2 and HTML"31" :let b:tt2_syn_tags = '\[% %] <!-- -->'32"33" Changes:34" 0.1.335" Changed fileformat from 'dos' to 'unix'36" Deleted 'echo' that print obstructive message37" 0.1.238" Added block comment syntax39" e.g. [%# COMMENT40" COMMENT TOO %]41" [%# IT'S SAFE %] HERE IS OUTSIDE OF TT2 DIRECTIVE42" [% # WRONG!! %] HERE STILL BE COMMENT43" 0.1.144" Release45" 0.1.046" Internal47 48if !exists("b:tt2_syn_tags")49 let b:tt2_syn_tags = '\[% %]'50 "let b:tt2_syn_tags = '\[% %] \[\* \*]'51endif52 53if !exists("b:tt2_syn_inc_perl")54 let b:tt2_syn_inc_perl = 155endif56 57if exists("b:current_syntax")58 finish59endif60 61let s:cpo_save = &cpo62set cpo&vim63 64syn case match65 66syn cluster tt2_top_cluster contains=tt2_perlcode,tt2_tag_region67 68" TT2 TAG Region69if exists("b:tt2_syn_tags")70 71 let s:str = b:tt2_syn_tags . ' '72 let s:str = substitute(s:str,'^ \+','','g')73 let s:str = substitute(s:str,' \+',' ','g')74 75 while stridx(s:str,' ') > 076 77 let s:st = strpart(s:str,0,stridx(s:str,' '))78 let s:str = substitute(s:str,'[^ ]* ','',"")79 80 let s:ed = strpart(s:str,0,stridx(s:str,' '))81 let s:str = substitute(s:str,'[^ ]* ','',"")82 83 exec 'syn region tt2_tag_region '.84 \ 'matchgroup=tt2_tag '.85 \ 'start=+\(' . s:st .'\)[-]\=+ '.86 \ 'end=+[-]\=\(' . s:ed . '\)+ '.87 \ 'contains=@tt2_statement_cluster keepend extend'88 89 exec 'syn region tt2_commentblock_region '.90 \ 'matchgroup=tt2_tag '.91 \ 'start=+\(' . s:st .'\)[-]\=\(#\)\@=+ '.92 \ 'end=+[-]\=\(' . s:ed . '\)+ '.93 \ 'keepend extend'94 95 "Include Perl syntax when 'PERL' 'RAWPERL' block96 if b:tt2_syn_inc_perl97 syn include @Perl syntax/perl.vim98 exec 'syn region tt2_perlcode '.99 \ 'start=+\(\(RAW\)\=PERL\s*[-]\=' . s:ed . '\(\n\)\=\)\@<=+ ' .100 \ 'end=+' . s:st . '[-]\=\s*END+me=s-1 contains=@Perl keepend'101 endif102 103 "echo 'TAGS ' . s:st . ' ' . s:ed104 unlet s:st105 unlet s:ed106 endwhile107 108else109 110 syn region tt2_tag_region111 \ matchgroup=tt2_tag112 \ start=+\(\[%\)[-]\=+113 \ end=+[-]\=%\]+114 \ contains=@tt2_statement_cluster keepend extend115 116 syn region tt2_commentblock_region117 \ matchgroup=tt2_tag118 \ start=+\(\[%\)[-]\=#+119 \ end=+[-]\=%\]+120 \ keepend extend121 122 "Include Perl syntax when 'PERL' 'RAWPERL' block123 if b:tt2_syn_inc_perl124 syn include @Perl syntax/perl.vim125 syn region tt2_perlcode126 \ start=+\(\(RAW\)\=PERL\s*[-]\=%]\(\n\)\=\)\@<=+127 \ end=+\[%[-]\=\s*END+me=s-1128 \ contains=@Perl keepend129 endif130endif131 132" Directive133syn keyword tt2_directive contained134 \ GET CALL SET DEFAULT DEBUG135 \ LAST NEXT BREAK STOP BLOCK136 \ IF IN UNLESS ELSIF FOR FOREACH WHILE SWITCH CASE137 \ USE PLUGIN MACRO META138 \ TRY FINAL RETURN LAST139 \ CLEAR TO STEP AND OR NOT MOD DIV140 \ ELSE PERL RAWPERL END141syn match tt2_directive +|+ contained142syn keyword tt2_directive contained nextgroup=tt2_string_q,tt2_string_qq,tt2_blockname skipwhite skipempty143 \ INSERT INCLUDE PROCESS WRAPPER FILTER144 \ THROW CATCH145syn keyword tt2_directive contained nextgroup=tt2_def_tag skipwhite skipempty146 \ TAGS147 148syn match tt2_def_tag "\S\+\s\+\S\+\|\<\w\+\>" contained149 150syn match tt2_variable +\I\w*+ contained151syn match tt2_operator "[+*/%:?-]" contained152syn match tt2_operator "\<\(mod\|div\|or\|and\|not\)\>" contained153syn match tt2_operator "[!=<>]=\=\|&&\|||" contained154syn match tt2_operator "\(\s\)\@<=_\(\s\)\@=" contained155syn match tt2_operator "=>\|," contained156syn match tt2_deref "\([[:alnum:]_)\]}]\s*\)\@<=\." contained157syn match tt2_comment +#.*$+ contained158syn match tt2_func +\<\I\w*\(\s*(\)\@=+ contained nextgroup=tt2_bracket_r skipempty skipwhite159"160syn region tt2_bracket_r start=+(+ end=+)+ contained contains=@tt2_statement_cluster keepend extend161syn region tt2_bracket_b start=+\[+ end=+]+ contained contains=@tt2_statement_cluster keepend extend162syn region tt2_bracket_b start=+{+ end=+}+ contained contains=@tt2_statement_cluster keepend extend163 164syn region tt2_string_qq start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable keepend extend165syn region tt2_string_q start=+'+ end=+'+ skip=+\\'+ contained keepend extend166 167syn match tt2_ivariable +\$\I\w*\>\(\.\I\w*\>\)*+ contained168syn match tt2_ivariable +\${\I\w*\>\(\.\I\w*\>\)*}+ contained169 170syn match tt2_number "\d\+" contained171syn match tt2_number "\d\+\.\d\+" contained172syn match tt2_number "0x\x\+" contained173syn match tt2_number "0\o\+" contained174 175syn match tt2_blockname "\f\+" contained nextgroup=tt2_blockname_joint skipwhite skipempty176syn match tt2_blockname "$\w\+" contained contains=tt2_ivariable nextgroup=tt2_blockname_joint skipwhite skipempty177syn region tt2_blockname start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable nextgroup=tt2_blockname_joint keepend skipwhite skipempty178syn region tt2_blockname start=+'+ end=+'+ skip=+\\'+ contained nextgroup=tt2_blockname_joint keepend skipwhite skipempty179syn match tt2_blockname_joint "+" contained nextgroup=tt2_blockname skipwhite skipempty180 181syn 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_number182 183" Synchronizing184syn sync minlines=50185 186hi def link tt2_tag Type187hi def link tt2_tag_region Type188hi def link tt2_commentblock_region Comment189hi def link tt2_directive Statement190hi def link tt2_variable Identifier191hi def link tt2_ivariable Identifier192hi def link tt2_operator Statement193hi def link tt2_string_qq String194hi def link tt2_string_q String195hi def link tt2_blockname String196hi def link tt2_comment Comment197hi def link tt2_func Function198hi def link tt2_number Number199 200if exists("b:tt2_syn_tags")201 unlet b:tt2_syn_tags202endif203 204let b:current_syntax = "tt2"205 206let &cpo = s:cpo_save207unlet s:cpo_save208 209" vim:ts=4:sw=4210 