Skip to content

Instantly share code, notes, and snippets.

@pozemka
Last active April 16, 2020 08:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pozemka/38df81fb9ff3e979bd9a98a8d05a2e69 to your computer and use it in GitHub Desktop.
Save pozemka/38df81fb9ff3e979bd9a98a8d05a2e69 to your computer and use it in GitHub Desktop.
Haku syntax highlight file for KSyntaxHighlighting / KateParts based editos such as KDevelop, Kate, Qt Creator, etc.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
[
<!ENTITY varname "[A-Za-z_][A-Za-z0-9_\-]*">
]>
<!--
Haku syntax highlight file for KSyntaxHighlighting / KatePart based editos such as KDevelop, Kate, Qt Creator, etc.
Get latest version at https://gist.github.com/pozemka/38df81fb9ff3e979bd9a98a8d05a2e69
INSTALLATION: Refer to your editor/IDE manual.
-->
<language
name="Hakufile"
version="2"
kateversion="2.4"
section="Other"
extensions="Hakufile;hakufile;Taskfile;taskfile"
author="Mikhail Bryukhovets (push.uni@gmail.com)"
license="LGPLv2+">
<highlighting>
<list name="keywords">
<item>if</item>
<item>then</item>
<item>do</item>
<item>end</item>
<item>done</item>
<item>else</item>
<item>elseif</item>
<item>for</item>
<item>in</item>
<item>while</item>
<item>continue</item>
<item>break</item>
<item>return</item>
<item>finish</item>
</list>
<list name="operators">
<item>and</item>
<item>or</item>
<item>not</item>
</list>
<list name="booleans">
<item>true</item>
<item>false</item>
</list>
<list name="Haku commands">
<item>cd</item>
<item>error</item>
<item>pause</item>
<item>setenv</item>
<item>delenv</item>
<item>clearenv</item>
</list>
<list name="Haku functions">
<item>os</item>
<item>family</item>
<item>platform</item>
<item>bit</item>
<item>arch</item>
<item>feature</item>
<item>feat</item>
<item>endian</item>
<item>is_file</item>
<item>is-file</item>
<item>isfile</item>
<item>is_dir</item>
<item>is-dir</item>
<item>isdir</item>
<item>join</item>
<item>stem</item>
<item>ext</item>
<item>dir</item>
<item>filename</item>
<item>add_ext</item>
<item>add-ext</item>
<item>with_ext</item>
<item>with-ext</item>
<item>with_filename</item>
<item>with-filename</item>
<item>with_name</item>
<item>with-name</item>
<item>with_stem</item>
<item>with-stem</item>
<item>documents</item>
<item>docs_dir</item>
<item>docs-dir</item>
<item>temp</item>
<item>temp_dir</item>
<item>temp-dir</item>
<item>home</item>
<item>home_dir</item>
<item>home-dir</item>
<item>config</item>
<item>config_dir</item>
<item>config-dir</item>
<item>print</item>
<item>println</item>
<item>time</item>
<item>format_time</item>
<item>format-time</item>
<item>time_format</item>
<item>time-format</item>
<item>trim</item>
<item>trim_left</item>
<item>trim-left</item>
<item>trim_start</item>
<item>trim-start</item>
<item>trim_right</item>
<item>trim-right</item>
<item>trim_end</item>
<item>trim-end</item>
<item>starts_with</item>
<item>starts-with</item>
<item>ends_with</item>
<item>ends-with</item>
<item>lowcase</item>
<item>upcase</item>
<item>replace</item>
<item>match</item>
<item>substr</item>
<item>contains</item>
<item>pad_center</item>
<item>pad-center</item>
<item>pad_left</item>
<item>pad-left</item>
<item>pad_right</item>
<item>pad-right</item>
<item>field</item>
<item>fields</item>
<item>field_sep</item>
<item>field-sep</item>
<item>fields_sep</item>
<item>fields-sep</item>
<item>rand_str</item>
<item>rand-str</item>
<item>inc</item>
<item>dec</item>
<item>shell</item>
<item>invoke_dir</item>
<item>invoke-dir</item>
<item>invokedir</item>
<item>glob</item>
<item>set_env</item>
<item>set-env</item>
<item>setenv</item>
<item>del_env</item>
<item>del-env</item>
<item>delenv</item>
<item>clear_env</item>
<item>clear-env</item>
<item>clearenv</item>
<item>ver_inc</item>
<item>ver-inc</item>
<item>ver_match</item>
<item>ver-match</item>
<item>ver_eq</item>
<item>ver-eq</item>
<item>ver_gt</item>
<item>ver-gt</item>
<item>ver_lt</item>
<item>ver-lt</item>
</list>
<list name="Haku imports">
<item>import</item>
<item>include</item>
</list>
<list name="Features">
<item>os</item>
<item>family</item>
<item>platform</item>
<item>bit</item>
<item>arch</item>
<item>feature</item>
<item>feat</item>
<item>endian</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay">
<keyword attribute="Keyword" context="#stay" String="keywords" />
<keyword attribute="Imports" context="#stay" String="Haku imports" />
<keyword attribute="Functions" context="#stay" String="Haku functions"/>
<keyword attribute="Command" context="#stay" String="Haku commands"/>
<Detect2Chars attribute="Features" context="Features" char="#" char1="[" />
<Detect2Chars attribute="Documentation" context="Documentation" char="#" char1="#"/>
<Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
<DetectChar attribute="Comment" context="Commentar 1" char="#"/>
<DetectChar attribute="String" context="String" char="&quot;"/>
<DetectChar attribute="String" context="String2" char="&apos;"/>
<RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
<RegExpr attribute="Variable" context="#stay" String="\$&varname;" />
<DetectChar attribute="Command" context="Command" char="`" />
<RegExpr
attribute="Decimal"
context="#stay"
String="(?:\b|-)(?:[0-9](?:_?[0-9]+)*)+?\b"
/>
<keyword attribute="Booleans" context="#stay" String="booleans" />
<AnyChar attribute="Flags" context="Flags" firstNonSpace="true" String="@-" />
<RegExpr
attribute="Recipe"
context="Recipe"
firstNonSpace="true"
String="(&varname;|\s?)+:"
/>
<keyword attribute="Operator" context="#stay" String="operators" />
<RegExpr attribute="Operator" context="#stay" String="(\!|&amp;&amp;|\|\||=|==|!=|&lt;|&gt;|&lt;=|&gt;=|\?=|\?)" /> <!-- NOTE: no math operators in Haku -->
</context>
<context attribute="String" name="String" lineEndContext="#pop">
<LineContinue attribute="String" context="#stay" />
<RegExpr attribute="String" context="#pop" String="&quot;" />
<RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
</context>
<context attribute="String" name="String2" lineEndContext="#pop">
<LineContinue attribute="String2" context="#stay" />
<RegExpr attribute="String2" context="#pop" String="&apos;" />
<RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
</context>
<context attribute="Comment" name="Commentar 1" lineEndContext="#pop">
<RegExpr attribute="Alert" context="#stay" String="(FIXME|TODO|NOTE|BUG|WARNING)"/>
</context>
<context attribute="Variable" name="VarBrace" lineEndContext="#stay">
<DetectChar attribute="Variable" context="#pop" char="}" />
</context>
<context attribute="Command" name="Command" lineEndContext="#pop">
<DetectChar attribute="Command" context="#pop" char="`"/>
</context>
<context attribute="Features" name="Features" lineEndContext="#pop">
<keyword attribute="Feature" context="#stay" String="Features" />
<DetectChar attribute="Features" context="#pop" char="]"/>
</context>
<context attribute="Documentation" name="Documentation" lineEndContext="#pop">
<RegExpr attribute="Alert" context="#stay" String="(FIXME|TODO|NOTE|BUG|WARNING)"/>
</context>
<context attribute="Recipe" name="Recipe" lineEndContext="#pop">
<RegExpr context="#pop#pop" String="."/> <!-- pop right after : -->
</context>
<context attribute="Flags" name="Flags" lineEndContext="#pop">
<RegExpr
attribute="Recipe"
context="Recipe"
String="(&varname;|\s?)+:"
/>
<DetectIdentifier context="#pop" />
<DetectSpaces context="#pop" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
<itemData name="Functions" defStyleNum="dsBuiltIn" spellChecking="false" />
<itemData name="Documentation" defStyleNum="dsDocumentation" spellChecking="true" />
<itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
<itemData name="String" defStyleNum="dsString" spellChecking="true" />
<itemData name="String2" defStyleNum="dsString" spellChecking="true" />
<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
<itemData name="Booleans" defStyleNum="dsBaseN" spellChecking="false" />
<itemData name="Variable" defStyleNum="dsVariable" spellChecking="false" />
<itemData name="Alert" defStyleNum="dsAlert" spellChecking="false" />
<itemData name="Recipe" defStyleNum="dsFunction" spellChecking="false" /> <!-- or dsExtension -->
<itemData name="Imports" defStyleNum="dsImport" spellChecking="false"/>
<itemData name="Command" defStyleNum="dsExtension" spellChecking="false" />
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false" />
<itemData name="Flags" defStyleNum="dsAttribute" spellChecking="false" />
<itemData name="Features" defStyleNum="dsPreprocessor" spellChecking="false" />
<itemData name="Feature" defStyleNum="dsBuiltIn" spellChecking="false" />
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="//"/>
</comments>
<keywords casesensitive="1" weakDeliminator="-"/>
</general>
<language>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment