1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
<!ENTITY listbullet "[\+\-]">
<!ENTITY checkbox "\[[ \-X]\](?=\s)">
<!-- links. -->
<!ENTITY startlink "(?:(?:https?|ftp)\://|(?:file|docview|mailto|mhe|rmail|bbdb|irc|info)\:)">
<!ENTITY link "&startlink;[^">\s]+">
<!-- link in normal text.
Using the implicitlink entity in markdown.xml for now.
Actual doc: https://orgmode.org/guide/Hyperlinks.html -->
<!ENTITY implicitlink "\b&startlink;[^">\s`\)]*[^\s!"'`\(\)\*,\.:;<>\?~\]\}\\](?=[[:punct:]]*(?:[\s\]]|$))">
<!-- org-emphasis-alist -->
<!ENTITY contentregex_ast "(?:(?:[^\*\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^\*\s\\]|\\\S)">
<!ENTITY contentregex_und "(?:(?:[^_\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^_\s\\]|\\\S)">
<!ENTITY contentregex_itl "(?:(?:[^/\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^/\s\\]|\\\S)">
<!ENTITY contentregex_stk "(?:(?:[^+\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^+\s\\]|\\\S)">
<!ENTITY contentregex_cod "(?:(?:[^~\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^~\s\\]|\\\S)">
<!ENTITY contentregex_vbt "(?:(?:[^=\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^=\s\\]|\\\S)">
<!ENTITY contentregex_mco "(?:(?:[^\{\}\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^\{\}\s\\]|\\\S)">
<!ENTITY bold_regex "\*{1}(?:&contentregex_ast;\*{1})">
<!ENTITY underline_regex "\b_{1}(?:&contentregex_und;_{1})">
<!ENTITY italic_regex "[/]{1}(?:&contentregex_itl;[/]{1})">
<!ENTITY strike_regex "\+{1}(?:&contentregex_stk;\+{1})">
<!ENTITY inlinecode_regex "\~{1}(?:&contentregex_cod;\~{1})">
<!ENTITY verbatim_regex "\={1}(?:&contentregex_vbt;\={1})">
<!ENTITY macroreplacement_regex "\{{3}(?:&contentregex_mco;\}{3})">
<!-- [[plain-link]] -->
<!ENTITY link_plain_regex "\[\[(?:[^\[\]]+)\]\]">
<!-- [[link][description]] -->
<!ENTITY link_desc_regex "\[\[(?:[^\[\]]+)\]\[(?:[^\[\]]+)\]\]">
]>
<!-- org syntax spec: https://orgmode.org/worg/dev/org-syntax.html -->
<!-- syntax highlight: https://docs.kde.org/stable5/en/kate/katepart/highlight.html -->
<language name="Org Mode" version="4" kateversion="5.79" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT">
<highlighting>
<list name="org-todo-keywords-todo">
<item>TODO</item>
</list>
<list name="org-todo-keywords-done">
<item>DONE</item>
</list>
<contexts>
<context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
<DetectChar context="find-header" char="*" column="0" lookAhead="true"/>
<RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>
<RegExpr attribute="Number List" context="numlist" String="^(\s*)\d+(?:\.|\))(\s+)" column="0"/>
<RegExpr attribute="Comment" String="^(\s*)# .*" column="0"/>
<RegExpr attribute="Block" context="find-block" String="^#\+BEGIN(_\w+|:).*" beginRegion="RegionBlock" column="0"/>
<RegExpr attribute="Babel" String="^(\s*)#\+[A-Z]+(?:\[[A-Z]+\])?:.*" column="0"/>
<DetectChar context="find-bold-normal" char="*" lookAhead="true"/>
<DetectChar context="find-underline-normal" char="_" lookAhead="true"/>
<DetectChar context="find-italic-normal" char="/" lookAhead="true"/>
<DetectChar context="find-strike-normal" char="+" lookAhead="true"/>
<DetectChar context="find-inlinecode-normal" char="~" lookAhead="true"/>
<DetectChar context="find-verbatim-normal" char="=" lookAhead="true"/>
<DetectChar context="find-link-normal" char="[" lookAhead="true"/>
<StringDetect context="find-macro-replacement" String="{{{" lookAhead="true"/>
<RegExpr attribute="Normal Text: Link" String="&implicitlink;"/>
</context>
<context name="find-header" attribute="Normal Text" lineEndContext="#pop">
<RegExpr context="parse-header" String="^(?:\*){1,}\s+(?:([A-Z]+)\s+){0,1}(?:(\[#(?:[A-Z\d]+)\])\s+){0,1}(.*)\s*(\[[\d/%]+\]){0,1}\s*$" column="0" lookAhead="true"/>
</context>
<context name="parse-header" attribute="Heading" lineEndContext="#pop">
<RegExpr attribute="Heading" String="(?:\*){1,}\s+" lookAhead="false"/>
<keyword String="org-todo-keywords-todo" attribute="Keyword Todo" context="#stay" />
<keyword String="org-todo-keywords-done" attribute="Keyword Done" context="#stay" />
<RegExpr attribute="Cookie: Priority" String="\[#(?:[A-Z\d]+)\]" lookAhead="false"/>
<RegExpr attribute="Cookie: Statistics" String="\[[\d/%]+\]" lookAhead="false"/>
</context>
<context name="list" attribute="List: Normal Text" lineEndContext="#stay">
<RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
<RegExpr attribute="List: Checkbox" String="\s*&checkbox;"/>
</context>
<context name="numlist" attribute="List: Normal Text" lineEndContext="#stay">
<RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
<RegExpr attribute="List: Checkbox" String="\s*&checkbox;"/>
</context>
<context name="find-block" attribute="Block" lineEndContext="#stay">
<StringDetect context="#pop" attribute="Block" String="#+END%1" dynamic="true" endRegion="RegionBlock" column="0"/>
</context>
<context name="find-bold-normal" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Bold Text" context="#pop" minimal="true" String="&bold_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="*"/>
</context>
<context name="find-underline-normal" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Underline Text" context="#pop" minimal="true" String="&underline_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="_"/>
</context>
<context name="find-italic-normal" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Italic Text" context="#pop" minimal="true" String="&italic_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="/"/>
</context>
<context name="find-strike-normal" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Strikethrough Text" context="#pop" minimal="true" String="&strike_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="+"/>
</context>
<context name="find-verbatim-normal" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Verbatim" context="#pop" minimal="true" String="&verbatim_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="~"/>
</context>
<context name="find-link-normal" attribute="Link" lineEndContext="#pop">
<RegExpr attribute="Plain Link" context="#pop" minimal="true" String="&link_plain_regex;"/>
<!-- FIXME: currently, link and description are using the same style -->
<RegExpr attribute="Link" context="#pop" minimal="true" String="&link_desc_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="]"/>
</context>
<context name="find-macro-replacement" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Macro" context="#pop" minimal="true" String="¯oreplacement_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="}"/>
</context>
<context name="find-inlinecode-normal" attribute="Normal Text" lineEndContext="#pop">
<RegExpr attribute="Code" context="#pop" minimal="true" String="&inlinecode_regex;"/>
<DetectChar attribute="Normal Text" context="#pop" char="~"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Normal Text: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
<itemData name="Bold Text" defStyleNum="dsNormal" bold="true"/>
<itemData name="Underline Text" defStyleNum="dsNormal" underline="true"/>
<itemData name="Italic Text" defStyleNum="dsNormal" italic="true"/>
<itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
<itemData name="Keyword Done" defStyleNum="dsInformation" spellChecking="false"/>
<itemData name="Keyword Todo" defStyleNum="dsAlert" spellChecking="false"/>
<itemData name="Cookie: Priority" defStyleNum="dsInformation" spellChecking="false"/>
<itemData name="Cookie: Statistics" defStyleNum="dsInformation" spellChecking="false"/>
<itemData name="Heading" defStyleNum="dsFunction"/>
<itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
<itemData name="List: Normal Text" defStyleNum="dsNormal"/>
<itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
<itemData name="Plain Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
<itemData name="Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Macro" defStyleNum="dsPreprocessor"/>
<itemData name="Babel" defStyleNum="dsPreprocessor"/>
<itemData name="Verbatim" defStyleNum="dsExtension" spellChecking="false"/>
<itemData name="Code" defStyleNum="dsInformation" spellChecking="false"/>
<itemData name="Block" defStyleNum="dsInformation"/>
</itemDatas>
</highlighting>
<general>
<comments>
<!-- Kate will add a space after the char so it's just a "#" here -->
<comment name="singleLine" start="#"/>
</comments>
</general>
</language>
<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
|