Code Comments
Programming Forum and web based access to our favorite programming groups.Hi!
I have already sent the syntax definition to both the Smarty and Kate
devel groups, but I'm more than happy to send it again. Oh, yes, I'm
still using Kate version 2.2.1, so pretty much everyting was made and
tested for that version. It would be nice to compare our syntax files,
to come up with a pretty decent solution (more official solution). You
are welcome to contact me personally in that regard, and we can discuss
every little bit of the syntax definition file.
Cheerios,
Werner
Following is my original message:
-----------
Please find attached my Smarty Syntax Definition.
A few notes:
1) Improvements are *very* welcome. This is my first syntax definition
(born out of necessity), I hope it helps someone out there (at least
I've been using it a lot).
2) It includes the HTML Syntax Definition (v1.93 tested) with
<IncludeRules context="##HTML" />
3) Known bug: Smarty Code is not recognized inside HTML 'Values'
(especially attributes), due to the amateur-like down-and-dirty way
which I included the HTML definition.
Not-recognized example:
<select name="{$myVar}">
If anyone knows how to solve this I would be very happy, just to escape
the Smarty Code from within an HTML 'Value', without modifying the HTML
Syntax Definition.
4) If anyone more experienced with Syntax Definitions would like to
rewrite the whole thing based on the info of my file, please go ahead,
but let me know, so I can use the improved version as well.
5) Keep me posted (feedback is welcome) if I missed something very basic
in Smarty's syntax.
----
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Smarty" version="1.00" kateversion="2.2"
section="Scripts" extensions="*.tpl" mimetype="text/smarty-src"
author="Werner Mollentze (werner@zoomsouth.com)" license="LGPL">
<highlighting>
<list name="keywords">
<item> capture </item>
<item> config_load </item>
<item> else </item>
<item> elseif </item>
<item> foreach </item>
<item> foreachelse </item>
<item> if </item>
<item> include </item>
<item> include_php </item>
<item> insert </item>
<item> ldelim </item>
<item> literal </item>
<item> php </item>
<item> rdelim </item>
<item> section </item>
<item> sectionelse </item>
<item> strip </item>
<item> /if </item>
<item> /section </item>
<item> /foreach </item>
<!-- Custom functions -->
<item> assign </item>
<item> counter </item>
<item> cycle </item>
<item> debug </item>
<item> eval </item>
<item> fetch </item>
<item> html_options </item>
<item> html_select_date </item>
<item> html_select_time </item>
<item> math </item>
<item> popup </item>
<item> popup_init </item>
<item> textformat </item>
</list>
<list name="modifiers">
<item> capitalize </item>
<item> count_characters </item>
<item> count_paragraphs </item>
<item> count_sentences </item>
<item> count_words </item>
<item> date_format </item>
<item> default </item>
<item> escape </item>
<item> indent </item>
<item> lower </item>
<item> regex_replace </item>
<item> replace </item>
<item> spacify </item>
<item> string_format </item>
<item> strip </item>
<item> strip_tags </item>
<item> truncate </item>
<item> upper </item>
<item> wordwrap </item>
</list>
<list name="attributes">
<item> above </item>
<item> advance </item>
<item> all_extra </item>
<item> assign </item>
<item> autostatus </item>
<item> autostatuscap </item>
<item> background </item>
<item> below </item>
<item> bgbackground </item>
<item> bgcolor </item>
<item> border </item>
<item> caparray </item>
<item> capcolor </item>
<item> capicon </item>
<item> caption </item>
<item> captionfont </item>
<item> captionsize </item>
<item> center </item>
<item> closecolor </item>
<item> closefont </item>
<item> closesize </item>
<item> closetext </item>
<item> day_extra </item>
<item> day_format </item>
<item> day_size </item>
<item> delay </item>
<item> delimiter </item>
<item> direction </item>
<item> display_days </item>
<item> display_hours </item>
<item> display_meridian </item>
<item> display_minutes </item>
<item> display_months </item>
<item> display_seconds </item>
<item> display_years </item>
<item> end_year </item>
<item> equation </item>
<item> fgbackground </item>
<item> fgcolor </item>
<item> field_array </item>
<item> field_order </item>
<item> field_separator </item>
<item> file </item>
<item> fixx </item>
<item> fixy </item>
<item> format </item>
<item> frame </item>
<item> from </item>
<item> fullhtml </item>
<item> hauto </item>
<item> height </item>
<item> hour_extra </item>
<item> inarray </item>
<item> indent </item>
<item> indent_char </item>
<item> indent_first </item>
<item> item </item>
<item> key </item>
<item> left </item>
<item> loop </item>
<item> max </item>
<item> meridian_extra </item>
<item> minute_extra </item>
<item> minute_interval </item>
<item> month_extra </item>
<item> month_format </item>
<item> month_size </item>
<item> month_value_format </item>
<item> name </item>
<item> noclose </item>
<item> offsetx </item>
<item> offsety </item>
<item> once </item>
<item> options </item>
<item> output </item>
<item> padx </item>
<item> pady </item>
<item> prefix </item>
<item> print </item>
<item> reverse_years </item>
<item> right </item>
<item> scope </item>
<item> script </item>
<item> second_extra </item>
<item> second_interval </item>
<item> section </item>
<item> selected </item>
<item> show </item>
<item> skip </item>
<item> snapx </item>
<item> snapy </item>
<item> start </item>
<item> start_year </item>
<item> status </item>
<item> step </item>
<item> sticky </item>
<item> stop </item>
<item> style </item>
<item> text </item>
<item> textcolor </item>
<item> textfont </item>
<item> textsize </item>
<item> time </item>
<item> timeout </item>
<item> trigger </item>
<item> use_24_hours </item>
<item> value </item>
<item> values </item>
<item> var </item>
<item> vauto </item>
<item> width </item>
<item> wrap </item>
<item> wrap_char </item>
<item> wrap_cut </item>
<item> year_as_text </item>
<item> year_extra </item>
<item> year_size </item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay"
name="Smarty">
<Detect2Chars attribute="Comment" context="Comment"
char="{" char1="*"/>
<DetectChar attribute="Smarty Code" context="smartycode"
char="{"/>
<IncludeRules context="##HTML" />
</context>
<context attribute="Smarty Code" lineEndContext="#stay"
name="smartycode">
<DetectChar attribute="Smarty Code" context="#pop"
char="}"/>
<DetectChar attribute="String" context="String"
char="""/>
<DetectChar attribute="String" context="String" char="'"/>
<RegExpr attribute="Reserved Variable" context="#stay"
String="[\$]+smarty[._a-zA-Z0-9\x7f-\xff]*" />
<RegExpr attribute="Variable" context="#stay"
String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
<RegExpr attribute="Variable" context="#stay"
String="#+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*#" />
<RegExpr attribute="Associative" context="#stay"
String="\.+[a-zA-Z0-9_\x7f-\xff]*" />
<RegExpr attribute="Property" context="#stay"
String="->[\s]*[_a-zA-Z0-9\x7f-\xff]*" />
<RegExpr attribute="Brace" context="brace" String="\["/>
<!-- the usual -->
<keyword attribute="Keyword" context="#stay"
String="keywords"/>
<keyword attribute="Modifiers" context="#stay"
String="modifiers"/>
<keyword attribute="Attributes" context="#stay"
String="attributes"/>
<Float attribute="Float" context="#stay"/>
<Int attribute="Decimal" context="#stay"/>
<!-- smarty operators -->
<Detect2Chars attribute="Operator" context="#stay"
char="!" char1="="/>
<DetectChar attribute="Operator" context="#stay"
char=">"/>
<Detect2Chars attribute="Operator" context="#stay"
char=">" char1="="/>
<DetectChar attribute="Operator" context="#stay"
char="<"/>
<Detect2Chars attribute="Operator" context="#stay"
char="<" char1="="/>
<DetectChar attribute="Operator" context="#stay" char="`"/>
<DetectChar attribute="Operator" context="#stay" char="."/>
<DetectChar attribute="Operator" context="#stay" char=":"/>
<DetectChar attribute="Operator" context="#stay" char="="/>
<Detect2Chars attribute="Operator" context="#stay"
char="=" char1="="/>
<DetectChar attribute="Operator" context="#stay" char="|"/>
<RegExpr attribute="Operator" context="#stay" String="eq"/>
<RegExpr attribute="Operator" context="#stay"
String="div by"/>
<RegExpr attribute="Operator" context="#stay"
String="even by"/>
<RegExpr attribute="Operator" context="#stay" String="is
even"/>
<RegExpr attribute="Operator" context="#stay" String="is
not even"/>
<RegExpr attribute="Operator" context="#stay" String="is
not odd"/>
<RegExpr attribute="Operator" context="#stay" String="is
odd"/>
<RegExpr attribute="Operator" context="#stay"
String="odd by"/>
<RegExpr attribute="Operator" context="#stay" String="not"/>
<RegExpr attribute="Operator" context="#stay" String="and"/>
<RegExpr attribute="Operator" context="#stay" String="or"/>
</context>
<context attribute="Brace" lineEndContext="#stay" name="brace">
<DetectChar attribute="Brace" context="#pop" char="]"/>
<RegExpr attribute="Variable" context="#stay"
String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
<RegExpr attribute="Variable" context="#stay"
String="#+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*#" />
<RegExpr attribute="ArrIndex" context="#stay"
String="[^\]]*" />
</context>
<context attribute="String" lineEndContext="#pop" name="String">
<DetectChar attribute="String" context="#pop"
char="""/>
<DetectChar attribute="String" context="#pop" char="'"/>
<RegExpr attribute="Variable" context="#stay"
String="#+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*#" />
<RegExpr attribute="Variable" context="#stay"
String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
<RegExpr attribute="Associative" context="#stay"
String="\.+[a-zA-Z0-9_\x7f-\xff]*" />
<RegExpr attribute="Property" context="#stay"
String="->[\s]*[_a-zA-Z0-9\x7f-\xff]*" />
<RegExpr attribute="Brace" context="brace" String="\["/>
</context>
<context attribute="Comment" lineEndContext="#stay"
name="Comment">
<Detect2Chars attribute="Comment" context="#pop"
char="*" char1="}" />
<RegExpr attribute="Alert" context="#stay"
String="(FIXME|TODO)" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" />
<itemData name="Smarty Code" defStyleNum="dsKeyword"
color="#000080" selColor="#ffffff" italic="0" bold="1" />
<itemData name="Variable" defStyleNum="dsOthers"
color="#800000" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Reserved Variable" defStyleNum="dsOthers"
color="#800000" selColor="#ffffff" italic="1" bold="0" />
<itemData name="Associative" defStyleNum="dsKeyword"
color="#800080" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Operator" defStyleNum="dsOthers"
color="#0000ff" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Brace" defStyleNum="dsOthers"
color="#000080" selColor="#ffffff" italic="0" bold="0" />
<itemData name="ArrIndex" defStyleNum="dsOthers"
color="#800080" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Property" defStyleNum="dsOthers"
color="#800080" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Keyword" defStyleNum="dsKeyword"
color="#0000ff" selColor="#ffffff" italic="0" bold="1" />
<itemData name="Modifiers" defStyleNum="dsOthers"
color="#AC8312" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Attributes" defStyleNum="dsOthers"
color="#0000ff" selColor="#ffffff" italic="0" bold="0" />
<itemData name="String" defStyleNum="dsString"
color="#008000" selColor="#ffffff" italic="0" bold="0" />
<itemData name="Decimal" defStyleNum="dsDecVal" />
<itemData name="Float" defStyleNum="dsFloat" />
<itemData name="Char" defStyleNum="dsChar" color="#008000"
selColor="#ffffff" italic="0" bold="0" />
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Alert" defStyleNum="dsNormal" bold="1"
color="white" backgroundColor="red" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="multiLine" start="{*" end="*}" />
</comments>
<keywords casesensitive="1" />
</general>
</language>
----
Riviere Informatique SARL wrote:
> Hi Werner,
>
>
>
>
> Would you care to share these? I'm working on one which isn't complete
> yet, because I couldn't find any, but I'm totally new to both Smarty
> and syntax highlighting - if your file is well-accomplished you may
> even want to share it with the 'Kate' download website?
>
> Regards,
> Steven.
>
Post Follow-up to this message
Show a Printable Version
Email This Page to Someone!
Receive updates to this thread
Powered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.