Last active
April 16, 2020 08:23
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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="""/> | |
<DetectChar attribute="String" context="String2" char="'"/> | |
<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="(\!|&&|\|\||=|==|!=|<|>|<=|>=|\?=|\?)" /> <!-- 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=""" /> | |
<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="'" /> | |
<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