<?xml version="1.0" ?>
<!--
/**
* @version		1.0.1
* @author		Mads Lie Jensen
* Find the latest version of this file on 
* http://www.palustris.dk/jedit/smarty.xml
*/

catalog-entry:
<MODE NAME="smarty" FILE="smarty.xml" FILE_NAME_GLOB="*.tpl"></MODE>

You might want to execute these lines of BeanShell code :

jEdit.setProperty("mode.smarty.xml.parser","html");
jEdit.setProperty("mode.smarty.xml.completion-info",
"jeditresource:/XML.jar!/xml/completion/html-complete.xml");

to get tag-completion/matching on html in the templates-files if you have the XML-plugin installed

-->
<!DOCTYPE MODE SYSTEM "xmode.dtd">
<MODE>
	<PROPS>
		<PROPERTY NAME="commentStart" VALUE="&lt;!--" />
		<PROPERTY NAME="commentEnd" VALUE="--&gt;" />
	</PROPS>

	<RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE">
		<WHITESPACE> </WHITESPACE>
		<WHITESPACE>	</WHITESPACE>
		<SPAN TYPE="COMMENT1">
			<BEGIN>{*</BEGIN>
			<END>*}</END>
		</SPAN>

		<SPAN TYPE="MARKUP" DELEGATE="php::PHP">
			<BEGIN>&lt;?php</BEGIN>
			<END>?&gt;</END>
		</SPAN>

		<SPAN TYPE="MARKUP" DELEGATE="php::PHP">
			<BEGIN>&lt;?</BEGIN>
			<END>?&gt;</END>
		</SPAN>

		<SPAN TYPE="MARKUP" DELEGATE="php::PHP">
			<BEGIN>&lt;%=</BEGIN>
			<END>%&gt;</END>
		</SPAN>

		<SPAN TYPE="LITERAL1">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>

		<SPAN TYPE="LITERAL1">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>

		<SPAN TYPE="MARKUP" DELEGATE="SMARTY">
			<BEGIN>{</BEGIN>
			<END>}</END>
		</SPAN>

		<!-- SGML comment -->
		<SPAN TYPE="COMMENT1">
			<BEGIN>&lt;!--</BEGIN>
			<END>--&gt;</END>
		</SPAN>

		<!-- JavaScript -->
		<SPAN TYPE="MARKUP" DELEGATE="javascript::MAIN">
			<BEGIN>&lt;SCRIPT</BEGIN>
			<END>&lt;/SCRIPT&gt;</END>
		</SPAN>

		<!-- stylesheet -->
		<SPAN TYPE="MARKUP" DELEGATE="css::MAIN">
			<BEGIN>&lt;STYLE&gt;</BEGIN>
			<END>&lt;/STYLE&gt;</END>
		</SPAN>

		<!-- DTD instructions -->
		<SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
			<BEGIN>&lt;!</BEGIN>
			<END>&gt;</END>
		</SPAN>

		<!-- markup tags -->
		<SPAN TYPE="KEYWORD2" DELEGATE="TAGS">
			<BEGIN>&lt;</BEGIN>
			<END>&gt;</END>
		</SPAN>

		<!-- SGML entities -->
		<SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">
			<BEGIN>&amp;</BEGIN>
			<END>;</END>
		</SPAN>

	</RULES>

	<RULES SET="TAGS" DEFAULT="KEYWORD2">
		<!-- whitespace: (space and tab) -->
		<WHITESPACE> </WHITESPACE>
		<WHITESPACE>	</WHITESPACE>

		<SPAN TYPE="LITERAL1" DELEGATE="TAGS_LITERAL">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>

		<SPAN TYPE="LITERAL1" DELEGATE="TAGS_LITERAL">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>

		<SEQ TYPE="OPERATOR">=</SEQ>
	</RULES>

	<RULES SET="TAGS_LITERAL" DEFAULT="LITERAL1">
		<!-- whitespace: (space and tab) -->
		<WHITESPACE> </WHITESPACE>
		<WHITESPACE>    </WHITESPACE>

		<SPAN TYPE="MARKUP" DELEGATE="SMARTY">
			<BEGIN>{</BEGIN>
			<END>}</END>
		</SPAN>

	</RULES>

	<RULES SET="SMARTY" IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" DEFAULT="LITERAL1">
		<!-- whitespace: (space and tab) -->
		<WHITESPACE> </WHITESPACE>
		<WHITESPACE>	</WHITESPACE>

		<SPAN TYPE="LITERAL1">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>

		<SPAN TYPE="LITERAL1">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>
		
		<!-- Variables from config-files -->
		<SPAN TYPE="KEYWORD3">
			<BEGIN>#</BEGIN>
			<END>#</END>
		</SPAN>
		
		<!-- Variables -->
		<MARK_FOLLOWING TYPE="KEYWORD3">$</MARK_FOLLOWING>
		
		<SEQ TYPE="OPERATOR">!=</SEQ>
		<SEQ TYPE="OPERATOR">&gt;</SEQ>
		<SEQ TYPE="OPERATOR">&gt;=</SEQ>
		<SEQ TYPE="OPERATOR">&lt;</SEQ>
		<SEQ TYPE="OPERATOR">&lt;=</SEQ>
		<SEQ TYPE="OPERATOR">.</SEQ>
		<SEQ TYPE="OPERATOR">:</SEQ>
		<SEQ TYPE="OPERATOR">=</SEQ>
		<SEQ TYPE="OPERATOR">==</SEQ>
		<SEQ TYPE="OPERATOR">div by </SEQ>
		<SEQ TYPE="OPERATOR">even by </SEQ>
		<SEQ TYPE="OPERATOR">is even </SEQ>
		<SEQ TYPE="OPERATOR">is not even </SEQ>
		<SEQ TYPE="OPERATOR">is not odd </SEQ>
		<SEQ TYPE="OPERATOR">is odd </SEQ>
		<SEQ TYPE="OPERATOR">odd by </SEQ>
		<SEQ TYPE="OPERATOR">|</SEQ>
			
		
		<KEYWORDS>
		
			<!-- Operators as used in ie. if/elseif/else constructs -->
			<OPERATOR>eq</OPERATOR>
			<OPERATOR>ge</OPERATOR>
			<OPERATOR>gt</OPERATOR>
			<OPERATOR>gte</OPERATOR>
			<OPERATOR>le</OPERATOR>
			<OPERATOR>lt</OPERATOR>
			<OPERATOR>lte</OPERATOR>
			<OPERATOR>mod</OPERATOR>
			<OPERATOR>ne</OPERATOR>
			<OPERATOR>neq</OPERATOR>
			<OPERATOR>not</OPERATOR>
			
			<!-- Built-in functions -->
			<FUNCTION>capture</FUNCTION>
			<FUNCTION>config_load</FUNCTION>
			<FUNCTION>else</FUNCTION>
			<FUNCTION>elseif</FUNCTION>
			<FUNCTION>foreach</FUNCTION>
			<FUNCTION>foreachelse</FUNCTION>
			<FUNCTION>if</FUNCTION>
			<FUNCTION>include</FUNCTION>
			<FUNCTION>include_php</FUNCTION>
			<FUNCTION>insert</FUNCTION>
			<FUNCTION>ldelim</FUNCTION>
			<FUNCTION>literal</FUNCTION>
			<FUNCTION>php</FUNCTION>
			<FUNCTION>rdelim</FUNCTION>
			<FUNCTION>section</FUNCTION>
			<FUNCTION>sectionelse</FUNCTION>
			<FUNCTION>strip</FUNCTION>
			<FUNCTION>/if</FUNCTION>
			<FUNCTION>/section</FUNCTION>
			<FUNCTION>/foreach</FUNCTION>
			
			<!-- Custom functions -->
			<FUNCTION>assign</FUNCTION>
			<FUNCTION>counter</FUNCTION>
			<FUNCTION>cycle</FUNCTION>
			<FUNCTION>debug</FUNCTION>
			<FUNCTION>eval</FUNCTION>
			<FUNCTION>fetch</FUNCTION>
			<FUNCTION>html_options</FUNCTION>
			<FUNCTION>html_select_date</FUNCTION>
			<FUNCTION>html_select_time</FUNCTION>
			<FUNCTION>math</FUNCTION>
			<FUNCTION>popup</FUNCTION>
			<FUNCTION>popup_init</FUNCTION>
			<FUNCTION>textformat</FUNCTION>
			
			<!-- 
			Variable modifiers
			'strip' is used in Smarty as both a variable modifier and a function.
			I have them listed as both, but it will only be reckognised as one of these possibilities.
			At time of writing this is the last entry, ie. a KEYWORD1
			-->
			<KEYWORD1>capitalize</KEYWORD1>
			<KEYWORD1>count_characters</KEYWORD1>
			<KEYWORD1>count_paragraphs</KEYWORD1>
			<KEYWORD1>count_sentences</KEYWORD1>
			<KEYWORD1>count_words</KEYWORD1>
			<KEYWORD1>date_format</KEYWORD1>
			<KEYWORD1>default</KEYWORD1>
			<KEYWORD1>escape</KEYWORD1>
			<KEYWORD1>indent</KEYWORD1>
			<KEYWORD1>lower</KEYWORD1>
			<KEYWORD1>regex_replace</KEYWORD1>
			<KEYWORD1>replace</KEYWORD1>
			<KEYWORD1>spacify</KEYWORD1>
			<KEYWORD1>string_format</KEYWORD1>
			<KEYWORD1>strip</KEYWORD1>
			<KEYWORD1>strip_tags</KEYWORD1>
			<KEYWORD1>truncate</KEYWORD1>
			<KEYWORD1>upper</KEYWORD1>
			<KEYWORD1>wordwrap</KEYWORD1>
			
			<!-- attributes for Smarty built-in and custom functions -->
			<LITERAL2>above</LITERAL2>
			<LITERAL2>advance</LITERAL2>
			<LITERAL2>all_extra</LITERAL2>
			<LITERAL2>assign</LITERAL2>
			<LITERAL2>autostatus</LITERAL2>
			<LITERAL2>autostatuscap</LITERAL2>
			<LITERAL2>background</LITERAL2>
			<LITERAL2>below</LITERAL2>
			<LITERAL2>bgbackground</LITERAL2>
			<LITERAL2>bgcolor</LITERAL2>
			<LITERAL2>border</LITERAL2>
			<LITERAL2>caparray</LITERAL2>
			<LITERAL2>capcolor</LITERAL2>
			<LITERAL2>capicon</LITERAL2>
			<LITERAL2>caption</LITERAL2>
			<LITERAL2>captionfont</LITERAL2>
			<LITERAL2>captionsize</LITERAL2>
			<LITERAL2>center</LITERAL2>
			<LITERAL2>closecolor</LITERAL2>
			<LITERAL2>closefont</LITERAL2>
			<LITERAL2>closesize</LITERAL2>
			<LITERAL2>closetext</LITERAL2>
			<LITERAL2>day_extra</LITERAL2>
			<LITERAL2>day_format</LITERAL2>
			<LITERAL2>day_size</LITERAL2>
			<LITERAL2>delay</LITERAL2>
			<LITERAL2>delimiter</LITERAL2>
			<LITERAL2>direction</LITERAL2>
			<LITERAL2>display_days</LITERAL2>
			<LITERAL2>display_hours</LITERAL2>
			<LITERAL2>display_meridian</LITERAL2>
			<LITERAL2>display_minutes</LITERAL2>
			<LITERAL2>display_months</LITERAL2>
			<LITERAL2>display_seconds</LITERAL2>
			<LITERAL2>display_years</LITERAL2>
			<LITERAL2>end_year</LITERAL2>
			<LITERAL2>equation</LITERAL2>
			<LITERAL2>fgbackground</LITERAL2>
			<LITERAL2>fgcolor</LITERAL2>
			<LITERAL2>field_array</LITERAL2>
			<LITERAL2>field_order</LITERAL2>
			<LITERAL2>field_separator</LITERAL2>
			<LITERAL2>file</LITERAL2>
			<LITERAL2>fixx</LITERAL2>
			<LITERAL2>fixy</LITERAL2>
			<LITERAL2>format</LITERAL2>
			<LITERAL2>frame</LITERAL2>
			<LITERAL2>from</LITERAL2>
			<LITERAL2>fullhtml</LITERAL2>
			<LITERAL2>hauto</LITERAL2>
			<LITERAL2>height</LITERAL2>
			<LITERAL2>hour_extra</LITERAL2>
			<LITERAL2>inarray</LITERAL2>
			<LITERAL2>indent</LITERAL2>
			<LITERAL2>indent_char</LITERAL2>
			<LITERAL2>indent_first</LITERAL2>
			<LITERAL2>item</LITERAL2>
			<LITERAL2>key</LITERAL2>
			<LITERAL2>left</LITERAL2>
			<LITERAL2>loop</LITERAL2>
			<LITERAL2>max</LITERAL2>
			<LITERAL2>meridian_extra</LITERAL2>
			<LITERAL2>minute_extra</LITERAL2>
			<LITERAL2>minute_interval</LITERAL2>
			<LITERAL2>month_extra</LITERAL2>
			<LITERAL2>month_format</LITERAL2>
			<LITERAL2>month_size</LITERAL2>
			<LITERAL2>month_value_format</LITERAL2>
			<LITERAL2>name</LITERAL2>
			<LITERAL2>noclose</LITERAL2>
			<LITERAL2>offsetx</LITERAL2>
			<LITERAL2>offsety</LITERAL2>
			<LITERAL2>once</LITERAL2>
			<LITERAL2>options</LITERAL2>
			<LITERAL2>output</LITERAL2>
			<LITERAL2>padx</LITERAL2>
			<LITERAL2>pady</LITERAL2>
			<LITERAL2>prefix</LITERAL2>
			<LITERAL2>print</LITERAL2>
			<LITERAL2>reverse_years</LITERAL2>
			<LITERAL2>right</LITERAL2>
			<LITERAL2>scope</LITERAL2>
			<LITERAL2>script</LITERAL2>
			<LITERAL2>second_extra</LITERAL2>
			<LITERAL2>second_interval</LITERAL2>
			<LITERAL2>section</LITERAL2>
			<LITERAL2>selected</LITERAL2>
			<LITERAL2>show</LITERAL2>
			<LITERAL2>skip</LITERAL2>
			<LITERAL2>snapx</LITERAL2>
			<LITERAL2>snapy</LITERAL2>
			<LITERAL2>start</LITERAL2>
			<LITERAL2>start_year</LITERAL2>
			<LITERAL2>status</LITERAL2>
			<LITERAL2>step</LITERAL2>
			<LITERAL2>sticky</LITERAL2>
			<LITERAL2>stop</LITERAL2>
			<LITERAL2>style</LITERAL2>
			<LITERAL2>text</LITERAL2>
			<LITERAL2>textcolor</LITERAL2>
			<LITERAL2>textfont</LITERAL2>
			<LITERAL2>textsize</LITERAL2>
			<LITERAL2>time</LITERAL2>
			<LITERAL2>timeout</LITERAL2>
			<LITERAL2>trigger</LITERAL2>
			<LITERAL2>use_24_hours</LITERAL2>
			<LITERAL2>value</LITERAL2>
			<LITERAL2>values</LITERAL2>
			<LITERAL2>var</LITERAL2>
			<LITERAL2>vauto</LITERAL2>
			<LITERAL2>width</LITERAL2>
			<LITERAL2>wrap</LITERAL2>
			<LITERAL2>wrap_char</LITERAL2>
			<LITERAL2>wrap_cut</LITERAL2>
			<LITERAL2>year_as_text</LITERAL2>
			<LITERAL2>year_extra</LITERAL2>
			<LITERAL2>year_size</LITERAL2>
			
		</KEYWORDS>
		
	</RULES>

</MODE>
