|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
<!DOCTYPE language SYSTEM "language.dtd"
|
|
|
[
|
|
|
<!ENTITY var1 "\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff\.\-]*(\[[a-zA-Z0-9_]*\])*">
|
|
|
<!ENTITY varwithbraces "\$\{[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff\.\-]*(\[[a-zA-Z0-9_]*\])*\}">
|
|
|
]>
|
|
|
<!--
|
|
|
Copyright (C) 2007 Красимир Беров <k.berov@gmail.com>
|
|
|
Put this file in your ~/.trinity/share/apps/katepart/syntax,
|
|
|
then restart Кate/KDevelop/Quanta... whatever using katepart.
|
|
|
That's it. You have Template Toolkit Syntax highliting.
|
|
|
Enjoy!!!
|
|
|
|
|
|
-->
|
|
|
<!--
|
|
|
Changelog :)
|
|
|
0.02 Added highliting for interpolated variables
|
|
|
-->
|
|
|
<language version="1-1" kateversion="2.3"
|
|
|
author="Красимир Беров (k.berov@gmail.com)" license="Artistic"
|
|
|
name="TT2" section="Markup" extensions="*.tt*;" casesensitive="true">
|
|
|
<highlighting>
|
|
|
<list name="control structures">
|
|
|
<!-- Template directives -->
|
|
|
<item>SET</item>
|
|
|
<item>GET</item>
|
|
|
<item>CALL</item>
|
|
|
<item>DEFAULT</item>
|
|
|
<item>IF</item>
|
|
|
<item>ELSIF</item>
|
|
|
<item>ELSE</item>
|
|
|
<item>UNLESS</item>
|
|
|
<item>LAST</item>
|
|
|
<item>NEXT</item>
|
|
|
<item>FOR</item>
|
|
|
<item>FOREACH</item>
|
|
|
<item>WHILE</item>
|
|
|
<item>SWITCH</item>
|
|
|
<item>CASE</item>
|
|
|
<item>PROCESS</item>
|
|
|
<item>INCLUDE</item>
|
|
|
<item>INSERT</item>
|
|
|
<item>WRAPPER</item>
|
|
|
<item>BLOCK</item>
|
|
|
<item>MACRO</item>
|
|
|
<item>END</item>
|
|
|
<item>USE</item>
|
|
|
<item>IN</item>
|
|
|
<item>FILTER</item>
|
|
|
<item>TRY</item>
|
|
|
<item>THROW</item>
|
|
|
<item>CATCH</item>
|
|
|
<item>FINAL</item>
|
|
|
<item>META</item>
|
|
|
<item>TAGS</item>
|
|
|
<item>DEBUG</item>
|
|
|
<item>PERL</item>
|
|
|
</list>
|
|
|
<list name="keywords">
|
|
|
<!-- Compile Time Constant Folding -->
|
|
|
<item>constants</item>
|
|
|
<!-- Special Variables -->
|
|
|
<item>template</item>
|
|
|
<item>component</item>
|
|
|
<item>loop</item>
|
|
|
<item>error</item>
|
|
|
<item>content</item>
|
|
|
</list>
|
|
|
<list name="items">
|
|
|
<!-- VMethods -->
|
|
|
<!-- Scalar Virtual Methods -->
|
|
|
<item>defined</item>
|
|
|
<item>length</item>
|
|
|
<item>repeat</item>
|
|
|
<item>replace</item>
|
|
|
<item>match</item>
|
|
|
<item>search</item>
|
|
|
<item>split</item>
|
|
|
<item>chunk</item>
|
|
|
<item>list</item>
|
|
|
<item>hash</item>
|
|
|
<item>size</item>
|
|
|
<!-- Hash Virtual Methods -->
|
|
|
<item>keys</item>
|
|
|
<item>values</item>
|
|
|
<item>each</item>
|
|
|
<item>sort</item>
|
|
|
<item>nsort</item>
|
|
|
<item>import</item>
|
|
|
<item>defined</item>
|
|
|
<item>exists</item>
|
|
|
<item>item</item>
|
|
|
<!-- List Virtual Methods -->
|
|
|
<item>first</item>
|
|
|
<item>last</item>
|
|
|
<item>max</item>
|
|
|
<item>reverse</item>
|
|
|
<item>join</item>
|
|
|
<item>grep</item>
|
|
|
|
|
|
<item>unshift</item>
|
|
|
<item>push</item>
|
|
|
<item>shift</item>
|
|
|
<item>pop</item>
|
|
|
<item>unique</item>
|
|
|
<item>merge</item>
|
|
|
<item>slice</item>
|
|
|
<item>splice</item>
|
|
|
<item>count</item>
|
|
|
<!-- Standard filters -->
|
|
|
<item>format</item>
|
|
|
<item>upper</item>
|
|
|
<item>lower</item>
|
|
|
<item>ucfirst</item>
|
|
|
<item>lcfirst</item>
|
|
|
<item>trim</item>
|
|
|
<item>collapse</item>
|
|
|
<item>html</item>
|
|
|
<item>html_entity</item>
|
|
|
<item>html_para</item>
|
|
|
<item>html_break</item>
|
|
|
<item>html_para_break</item>
|
|
|
<item>html_line_break</item>
|
|
|
<item>uri</item>
|
|
|
<item>url</item>
|
|
|
<item>indent</item>
|
|
|
<item>truncate</item>
|
|
|
<item>repeat</item>
|
|
|
<item>remove</item>
|
|
|
<item>replace</item>
|
|
|
<item>redirect</item>
|
|
|
<item>eval</item>
|
|
|
<item>evaltt</item>
|
|
|
<item>perl</item>
|
|
|
<item>evalperl</item>
|
|
|
<item>stdout</item>
|
|
|
<item>stderr</item>
|
|
|
<item>null</item>
|
|
|
<item>latex</item>
|
|
|
</list>
|
|
|
<list name="operators">
|
|
|
<item> = </item>
|
|
|
<item> != </item>
|
|
|
<item> ~= </item>
|
|
|
<item> += </item>
|
|
|
<item> -= </item>
|
|
|
<item> *= </item>
|
|
|
<item> /= </item>
|
|
|
<item> **= </item>
|
|
|
<item> |= </item>
|
|
|
<item> ||= </item>
|
|
|
<item> &= </item>
|
|
|
<item> &&= </item>
|
|
|
<item> ?= </item>
|
|
|
<item> + </item>
|
|
|
<item> - </item>
|
|
|
<item> * </item>
|
|
|
<!-- <item> / </item>//-->
|
|
|
<item> % </item>
|
|
|
<item> || </item>
|
|
|
<item> && </item>
|
|
|
<item> | </item>
|
|
|
<item> & </item>
|
|
|
<item> < </item>
|
|
|
<item> << </item>
|
|
|
<item> > </item>
|
|
|
<item> >> </item>
|
|
|
<item> ^ </item>
|
|
|
<item> -> </item>
|
|
|
<item> => </item>
|
|
|
<item> . </item>
|
|
|
<item> , </item>
|
|
|
<item> ; </item>
|
|
|
<item> :: </item>
|
|
|
<item> \ </item>
|
|
|
<item> and </item>
|
|
|
<item> or </item>
|
|
|
<item> not </item>
|
|
|
<item> eq </item>
|
|
|
<item> ne </item>
|
|
|
</list>
|
|
|
|
|
|
<contexts>
|
|
|
<context name="nosource" attribute="Normal Text" lineEndContext="#stay">
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<RegExpr attribute="HTML Tag" context="scripts" String="<\s*script(\s|>)" insensitive="true" />
|
|
|
<RegExpr attribute="HTML Tag" context="htmltag" String="<\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />
|
|
|
<StringDetect attribute="HTML Comment" context="htmlcomment" String="<!--" />
|
|
|
<!-- Interpolated variables -->
|
|
|
<RegExpr attribute="Variable" context="#stay" String="&var1;" />
|
|
|
<RegExpr attribute="Variable" context="#stay" String="&varwithbraces;" />
|
|
|
</context>
|
|
|
|
|
|
<context name="tt2source" attribute="TT2 Text" lineEndContext="#stay">
|
|
|
<StringDetect attribute="Keyword" context="#pop" String="%]" />
|
|
|
<DetectChar attribute="Comment" context="tt2_onelinecomment" char="#" />
|
|
|
<DetectChar attribute="String" context="doublequotestring" char=""" />
|
|
|
<DetectChar attribute="String" context="singlequotestring" char="'" />
|
|
|
<DetectChar attribute="Keyword" context="#stay" char="&" />
|
|
|
<keyword attribute="Operator" context="#stay" String="operators" />
|
|
|
<keyword attribute="Function" context="#stay" String="functions" />
|
|
|
<RegExpr attribute="String" context="" String="" />
|
|
|
<RegExpr attribute="String" context="#stay" String="[0123456789]*\.\.\.[0123456789]*" />
|
|
|
<HlCOct attribute="Octal" context="#stay" />
|
|
|
<HlCHex attribute="Hex" context="#stay" />
|
|
|
<Float attribute="Float" context="#stay" />
|
|
|
<Int attribute="Decimal" context="#stay" />
|
|
|
<AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
|
|
|
<keyword attribute="Other" context="#stay" String="Others" />
|
|
|
|
|
|
<RegExpr attribute="Control Structures" context="#stay" String="\bELSIF\b" insensitive="false" beginRegion="iffi1" endRegion="iffi1"/>
|
|
|
<RegExpr attribute="Control Structures" context="#stay" String="\bELSE\b" insensitive="false" beginRegion="iffi1" endRegion="iffi1"/>
|
|
|
<RegExpr attribute="Control Structures" context="#stay" String="\bIF\b" insensitive="false" beginRegion="iffi1"/>
|
|
|
<RegExpr attribute="Control Structures" context="#stay" String="\bEND\b" insensitive="false" endRegion="iffi1"/>
|
|
|
|
|
|
<RegExpr attribute="Control Structures" context="#stay" String="\bFOREACH\b" insensitive="false" beginRegion="foreachblock"/>
|
|
|
<RegExpr attribute="Control Structures" context="#stay" String="\bEND\b" insensitive="false" endRegion="foreachblock"/>
|
|
|
|
|
|
|
|
|
<keyword attribute="Keyword" context="#stay" String="keywords" />
|
|
|
<keyword attribute="Control Structures" context="#stay" String="control structures" />
|
|
|
<keyword attribute="Function" context="#stay" String="functions" />
|
|
|
</context>
|
|
|
<context name="tt2_onelinecomment" attribute="Comment" lineEndContext="#pop">
|
|
|
<StringDetect attribute="Keyword" context="#pop#pop" String="%]" />
|
|
|
</context>
|
|
|
<context name="doublequotestring" attribute="String" lineEndContext="#stay">
|
|
|
<Detect2Chars attribute="Escape Code" context="#stay" char=""" char1=""" />
|
|
|
<RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}" />
|
|
|
<RegExpr attribute="Escape Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />
|
|
|
<DetectChar attribute="String" context="#pop" char=""" />
|
|
|
<!-- Interpolated variables -->
|
|
|
<RegExpr attribute="Variable" context="#stay" String="&var1;" />
|
|
|
<RegExpr attribute="Variable" context="#stay" String="&varwithbraces;" />
|
|
|
</context>
|
|
|
<context name="singlequotestring" attribute="String" lineEndContext="#stay">
|
|
|
<Detect2Chars attribute="Escape Code" context="#stay" char="'" char1="'"/>
|
|
|
<DetectChar attribute="String" context="#pop" char="'" />
|
|
|
</context>
|
|
|
<context name="htmltag" attribute="Identifier" lineEndContext="#stay">
|
|
|
<Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1=">" />
|
|
|
<DetectChar attribute="HTML Tag" context="#pop" char=">"/>
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<RegExpr attribute="Identifier" context="identifiers" String="\s*=\s*"/>
|
|
|
|
|
|
</context>
|
|
|
<context name="htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<StringDetect attribute="HTML Comment" context="#pop" String="-->" />
|
|
|
<RegExpr attribute="Normal Text" context="identifiers" String="\s*=\s*"/>
|
|
|
</context>
|
|
|
<context name="identifiers" attribute="Identifier" lineEndContext="#stay">
|
|
|
<RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
|
|
|
<DetectChar attribute="Types" context="types1" char="'" />
|
|
|
<DetectChar attribute="Types" context="types2" char=""" />
|
|
|
</context>
|
|
|
|
|
|
<context name="types1" attribute="Types" lineEndContext="#stay">
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<DetectChar attribute="Types" context="#pop#pop" char="'" />
|
|
|
</context>
|
|
|
|
|
|
<context name="types2" attribute="Types" lineEndContext="#stay">
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%" />
|
|
|
<DetectChar attribute="Types" context="#pop#pop" char=""" />
|
|
|
</context>
|
|
|
|
|
|
<context name="scripts" attribute="Normal Text" lineEndContext="#stay">
|
|
|
<Detect2Chars attribute="Comment" context="scripts_onelinecomment" char="/" char1="/" />
|
|
|
<Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" />
|
|
|
<keyword attribute="Control Structures" context="#stay" String="control structures" />
|
|
|
<keyword attribute="Keyword" context="#stay" String="keywords" />
|
|
|
<keyword attribute="Function" context="#stay" String="functions" />
|
|
|
<StringDetect attribute="Keyword" context="tt2source" String="[%"/>
|
|
|
<RegExpr attribute="HTML Tag" context="#pop" String="<\s*\/\s*script\s*>" insensitive="true" />
|
|
|
|
|
|
<DetectChar attribute="String" context="doublequotestring" char=""" />
|
|
|
<DetectChar attribute="String" context="singlequotestring" char="'" />
|
|
|
<HlCOct attribute="Octal" context="#stay" />
|
|
|
<HlCHex attribute="Hex" context="#stay" />
|
|
|
<Float attribute="Float" context="#stay" />
|
|
|
<Int attribute="Decimal" context="#stay" />
|
|
|
<DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="Brace1" />
|
|
|
<DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="Brace1" />
|
|
|
<AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
|
|
|
<keyword attribute="Other" context="#stay" String="Others" />
|
|
|
</context>
|
|
|
<context name="scripts_onelinecomment" attribute="Comment" lineEndContext="#pop">
|
|
|
<RegExpr attribute="HTML Tag" context="#pop#pop" String="<\s*\/\s*script\s*>" insensitive="true" />
|
|
|
</context>
|
|
|
<context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
|
|
|
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
|
|
|
</context>
|
|
|
|
|
|
</contexts>
|
|
|
|
|
|
<itemDatas>
|
|
|
<itemData name="Normal Text" defStyleNum="dsNormal" />
|
|
|
<itemData name="TT2 Text" defStyleNum="dsNormal" />
|
|
|
<itemData name="Keyword" defStyleNum="dsKeyword" />
|
|
|
<itemData name="Function" defStyleNum="dsKeyword" color="#0000FF" selColor="#00ffff" bold="0" italic="0"/>
|
|
|
<itemData name="Decimal" defStyleNum="dsDecVal" />
|
|
|
<itemData name="Octal" defStyleNum="dsBaseN" />
|
|
|
<itemData name="Hex" defStyleNum="dsBaseN" />
|
|
|
<itemData name="Float" defStyleNum="dsFloat" />
|
|
|
<itemData name="String" defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" />
|
|
|
<itemData name="Comment" defStyleNum="dsComment" />
|
|
|
<itemData name="Variable" defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="1" italic="0" />
|
|
|
<itemData name="Control Structures" defStyleNum="dsKeyword" color="#0000dd" selColor="#ffffff" bold="1" italic="0" />
|
|
|
<itemData name="Backslash Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" />
|
|
|
<itemData name="Other" defStyleNum="dsOthers" />
|
|
|
<itemData name="Operator" defStyleNum="dsKeyword" color="#008000"/>
|
|
|
<itemData name="HTML Tag" defStyleNum="dsKeyword" color="#0F0000" selColor="#ffffff" bold="1" italic="0" />
|
|
|
<itemData name="HTML Comment" defStyleNum="dsComment" />
|
|
|
<itemData name="Identifier" defStyleNum="dsOthers" />
|
|
|
<itemData name="Types" defStyleNum="dsDataType" />
|
|
|
</itemDatas>
|
|
|
</highlighting>
|
|
|
<general>
|
|
|
<comments>
|
|
|
<comment name="multiLine" start="<!--" end="-->" />
|
|
|
<comment name="singleLine" start="#" />
|
|
|
<comment name="multiLine" start="[%#" end="%]"/>
|
|
|
</comments>
|
|
|
<keywords casesensitive="1" />
|
|
|
</general>
|
|
|
</language>
|