3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
5 <!-- A JEdit mode configuration file for FTL (FreeMarker Template Language)
6 Note that this version will only work with JEdit 4.1pre6 or later.
7 by Jonathan Revusky, revusky@users.sourceforge.net -->
10 <RULES IGNORE_CASE="FALSE">
13 <SPAN TYPE="MARKUP" DELEGATE="html::JAVASCRIPT">
14 <BEGIN><script</BEGIN>
15 <END></script></END>
17 <SPAN TYPE="MARKUP" DELEGATE="html::JAVASCRIPT">
18 <BEGIN><Script</BEGIN>
19 <END></Script></END>
21 <SPAN TYPE="MARKUP" DELEGATE="html::JAVASCRIPT">
22 <BEGIN><SCRIPT</BEGIN>
23 <END></SCRIPT></END>
27 <SPAN TYPE="MARKUP" DELEGATE="html::CSS">
28 <BEGIN><style</BEGIN>
29 <END></style></END>
31 <SPAN TYPE="MARKUP" DELEGATE="html::CSS">
32 <BEGIN><Style</BEGIN>
33 <END></Style></END>
35 <SPAN TYPE="MARKUP" DELEGATE="html::CSS">
36 <BEGIN><STYLE</BEGIN>
37 <END></STYLE></END>
40 <!-- XML/HTML comment -->
41 <SPAN TYPE="COMMENT2" DELEGATE="xml::DTD-TAGS">
42 <BEGIN><!--</BEGIN>
46 <!-- DTD instructions -->
47 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
52 <!-- FTL markup starts here. -->
54 <SPAN TYPE="KEYWORD1" DELEGATE="EXPRESSION">
59 <SPAN TYPE="KEYWORD1" DELEGATE="EXPRESSION">
64 <SPAN_REGEXP TYPE="KEYWORD1" HASH_CHAR="<#ftl" DELEGATE="EXPRESSION">
65 <BEGIN><#ftl\b</BEGIN>
69 <SPAN_REGEXP TYPE="KEYWORD1" DELEGATE="EXPRESSION" HASH_CHAR="<">
70 <BEGIN><#?(if|elseif|switch|foreach|list|case|assign|local|global|setting|include|import|stop|escape|macro|function|transform|call|visit|recurse)(\s|/|$)</BEGIN>
74 <SEQ_REGEXP TYPE="KEYWORD1" HASH_CHAR="</"
75 ></#?(assign|local|global|if|switch|foreach|list|escape|macro|function|transform|compress|noescape)></SEQ_REGEXP>
77 <SPAN_REGEXP TYPE="KEYWORD1" DELEGATE="INVALID" HASH_CHAR="<">
78 <BEGIN><#?(else|compress|noescape|default|break|flush|nested|t|rt|lt|return|recurse)\b</BEGIN>
82 <SPAN_REGEXP TYPE="KEYWORD1" DELEGATE="INVALID" HASH_CHAR="</@">
83 <BEGIN></@(([_@\p{Alpha}][_@\p{Alnum}]*)(\.[_@\p{Alpha}][_@\p{Alnum}]*)*?)?</BEGIN>
87 <SPAN_REGEXP TYPE="KEYWORD1" DELEGATE="EXPRESSION" HASH_CHAR="<@">
88 <BEGIN><@([_@\p{Alpha}][_@\p{Alnum}]*)(\.[_@\p{Alpha}][_@\p{Alnum}]*?)*</BEGIN>
92 <SPAN TYPE="COMMENT1">
93 <BEGIN><#--</BEGIN>
97 <SEQ TYPE="KEYWORD1"><stop></SEQ>
98 <SPAN TYPE="COMMENT1">
99 <BEGIN><comment></BEGIN>
100 <END></comment></END>
102 <SPAN TYPE="INVALID">
106 <SPAN TYPE="INVALID">
107 <BEGIN></#</BEGIN>
111 <!-- non-FTL markup -->
112 <SPAN TYPE="MARKUP" DELEGATE="TAGS">
118 <RULES SET="EXPRESSION"
120 HIGHLIGHT_DIGITS="TRUE"
123 <SPAN TYPE="COMMENT1">
124 <BEGIN><#--</BEGIN>
127 <SPAN TYPE="COMMENT1">
128 <BEGIN><!--</BEGIN>
132 <SPAN TYPE="LITERAL1" ESCAPE="\">
136 <SPAN TYPE="OPERATOR" DELEGATE="EXPRESSION">
137 <BEGIN>(</BEGIN><END>)</END>
139 <SEQ TYPE="OPERATOR">=</SEQ>
140 <SEQ TYPE="OPERATOR">!</SEQ>
141 <SEQ TYPE="OPERATOR">|</SEQ>
142 <SEQ TYPE="OPERATOR">&</SEQ>
143 <SEQ TYPE="OPERATOR"><</SEQ>
144 <SEQ TYPE="OPERATOR">></SEQ>
145 <SEQ TYPE="OPERATOR">*</SEQ>
146 <SEQ TYPE="OPERATOR">/</SEQ>
147 <SEQ TYPE="OPERATOR">-</SEQ>
148 <SEQ TYPE="OPERATOR">+</SEQ>
149 <SEQ TYPE="OPERATOR">%</SEQ>
150 <SEQ TYPE="OPERATOR">.</SEQ>
151 <SEQ TYPE="OPERATOR">:</SEQ>
152 <SEQ TYPE="OPERATOR">.</SEQ>
153 <SEQ TYPE="OPERATOR">.</SEQ>
154 <SEQ TYPE="OPERATOR">[</SEQ>
155 <SEQ TYPE="OPERATOR">]</SEQ>
156 <SEQ TYPE="OPERATOR">{</SEQ>
157 <SEQ TYPE="OPERATOR">}</SEQ>
158 <SEQ TYPE="OPERATOR">;</SEQ>
160 <MARK_FOLLOWING TYPE="FUNCTION">?</MARK_FOLLOWING>
162 <KEYWORD1>true</KEYWORD1>
163 <KEYWORD1>false</KEYWORD1>
164 <KEYWORD1>as</KEYWORD1>
165 <KEYWORD1>in</KEYWORD1>
166 <KEYWORD1>using</KEYWORD1>
167 <OPERATOR>gt</OPERATOR>
168 <OPERATOR>gte</OPERATOR>
169 <OPERATOR>lt</OPERATOR>
170 <OPERATOR>lte</OPERATOR>
174 <RULES SET="TAGS" DEFAULT="MARKUP">
175 <SPAN TYPE="LITERAL1" DELEGATE="INQUOTE">
180 <SPAN TYPE="LITERAL1" DELEGATE="INQUOTE">
185 <SEQ TYPE="OPERATOR">=</SEQ>
189 <!-- a ruleset for when we are within a quoted string within an SGML tag
190 It can contain FTL interpolations -->
191 <RULES SET="INQUOTE" ESCAPE="\">
192 <SPAN TYPE="KEYWORD1" DELEGATE="EXPRESSION">
196 <SPAN TYPE="KEYWORD1" DELEGATE="EXPRESSION">
202 <!-- empty ruleset to delegate to for spots where any non-whitespace is invalid -->
203 <RULES SET="INVALID" DEFAULT="INVALID" />