diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,12 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.12.3
+
+  * Add scss, sass, systemverilog, orgmode.
+
+  * Update xml definitions from upstream: bash, css, python, r, zsh.
+
+
 ## 0.12.2
 
   * Parser: handle context shift to external context, e.g.,
diff --git a/skylighting-core.cabal b/skylighting-core.cabal
--- a/skylighting-core.cabal
+++ b/skylighting-core.cabal
@@ -1,5 +1,5 @@
 name:                skylighting-core
-version:             0.12.2
+version:             0.12.3
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/xml/bash.xml b/xml/bash.xml
--- a/xml/bash.xml
+++ b/xml/bash.xml
@@ -39,7 +39,7 @@
         <!ENTITY arithmetic_as_subshell "\(((?:[^`'&quot;()$]++|\$\{[^`'&quot;(){}$]+\}|\$(?=[^{`'&quot;()])|`[^`]*+`|\((?1)(?:[)]|(?=['&quot;])))++)(?:[)](?=$|[^)])|[&quot;'])">
 ]>
 
-<language name="Bash" version="34" kateversion="5.79" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<language name="Bash" version="36" kateversion="5.79" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
 
 <!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
     Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
@@ -553,6 +553,8 @@
         <AnyChar attribute="Error" context="#stay" String=")}"/>
 
         <LineContinue attribute="Escape" context="#stay"/>
+
+        <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">
         <!-- start expression in double brackets -->
@@ -786,8 +788,8 @@
       <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}-->
       <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">
         <IncludeRules context="FindExtGlobAndPopInAlternateValue"/>
-        <AnyChar attribute="Glob" context="PathThenPopInAlternateValue" String="?*"/>
-        <RegExpr attribute="Path" context="PathThenPopInAlternateValue" String="&pathpart_alt;"/>
+        <AnyChar attribute="Glob" context="#pop!PathThenPopInAlternateValue" String="?*"/>
+        <RegExpr attribute="Path" context="#pop!PathThenPopInAlternateValue" String="&pathpart_alt;"/>
       </context>
       <context attribute="Path" lineEndContext="#stay" name="FindExtGlobAndPopInAlternateValue">
         <Detect2Chars attribute="Glob" context="ExtGlobAndPopInAlternateValue" char="?" char1="("/>
@@ -1415,10 +1417,13 @@
 
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="ExprDblBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>
-        <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>
+        <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>
         <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValue">
+        <IncludeRules context="TestMaybeUnary"/>
+      </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValue">
         <Detect2Chars context="ExprDblBracketDblParentOrSubValue" char="(" char1="(" lookAhead="1"/>
@@ -1465,7 +1470,7 @@
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="ExprDblBracketFinal" name="ExprDblBracketParam3" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="ExprDblBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
         <AnyChar attribute="Error" context="#stay" String="&lt;>"/>
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -38,7 +38,7 @@
 
 -->
 
-<language name="CSS" version="12" kateversion="5.53" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="CSS" version="13" kateversion="5.53" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
     <!-- https://www.w3.org/Style/CSS/current-work -->
 
     <highlighting>
@@ -665,6 +665,7 @@
         <list name="values">
             <item>none</item>
             <item>hidden</item>
+            <item>initial</item>
             <item>dotted</item>
             <item>dashed</item>
             <item>solid</item>
@@ -729,23 +730,9 @@
             <item>katakana</item>
             <item>hiragana-iroha</item>
             <item>katakana-iroha</item>
-            <item>inline</item>
-            <item>inline-block</item>
-            <item>block</item>
             <item>list-item</item>
-            <item>run-in</item>
             <item>compact</item>
             <item>marker</item>
-            <item>table</item>
-            <item>inline-table</item>
-            <item>table-row-group</item>
-            <item>table-header-group</item>
-            <item>table-footer-group</item>
-            <item>table-row</item>
-            <item>table-column-group</item>
-            <item>table-column</item>
-            <item>table-cell</item>
-            <item>table-caption</item>
             <item>crosshair</item>
             <item>default</item>
             <item>pointer</item>
@@ -765,15 +752,20 @@
             <item>absolute</item>
             <item>always</item>
             <item>avoid</item>
+            <item>avoid-page</item>
+            <item>avoid-column</item>
+            <item>avoid-region</item>
             <item>below</item>
             <item>bidi-override</item>
             <item>blink</item>
             <item>both</item>
+            <item>break-word</item>
             <item>capitalize</item>
             <item>caption</item>
             <item>clip</item>
             <item>close-quote</item>
             <item>collapse</item>
+            <item>column</item>
             <item>condensed</item>
             <item>crop</item>
             <item>cross</item>
@@ -843,6 +835,41 @@
             <item>contain</item>
             <item>cover</item>
 
+            <!-- display -->
+            <!-- https://developer.mozilla.org/fr/docs/Web/CSS/display -->
+            <item>block</item>
+            <item>inline</item>
+            <item>run-in</item>
+
+            <item>flow</item>
+            <item>flow-root</item>
+            <item>table</item>
+            <item>flex</item>
+            <item>grid</item>
+            <item>ruby</item>
+
+            <item>list-item</item>
+
+            <item>table-row-group</item>
+            <item>table-header-group</item>
+            <item>table-footer-group</item>
+            <item>table-row</item>
+            <item>table-cell</item>
+            <item>table-column-group</item>
+            <item>table-column</item>
+            <item>table-caption</item>
+            <item>ruby-base</item>
+            <item>ruby-text</item>
+            <item>ruby-base-container</item>
+            <item>ruby-text-container</item>
+
+            <item>contents</item>
+
+            <item>inline-block</item>
+            <item>inline-table</item>
+            <item>inline-flex</item>
+            <item>inline-grid</item>
+
             <!-- transition and animation -->
             <item>all</item>
             <item>ease</item>
@@ -991,6 +1018,7 @@
             <item>pink</item>
             <item>plum</item>
             <item>powderblue</item>
+            <item>rebeccapurple</item>
             <item>rosybrown</item>
             <item>royalblue</item>
             <item>saddlebrown</item>
@@ -1060,6 +1088,22 @@
             <item>var</item>
             <item>url</item>
 
+            <!-- CSS4 -->
+            <item>min</item>
+            <item>max</item>
+            <item>clamp</item>
+            <item>toggle</item>
+            <item>hwb</item>
+            <item>device-cmyk</item>
+            <item>color</item>
+            <item>element</item>
+            <item>image</item>
+            <item>image-set</item>
+            <item>conic-gradient</item>
+
+            <!-- counter style -->
+            <item>symbols</item>
+
             <!-- clip -->
             <item>rect</item>
 
@@ -1678,6 +1722,7 @@
                 <DetectChar attribute="Function" context="#pop#pop" char=")" />
                 <IncludeRules context="FindComments" />
                 <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
                 <IncludeRules context="FindValues" />
                 <DetectChar attribute="Separator Symbol" context="#stay" char="," />
             </context>
diff --git a/xml/orgmode.xml b/xml/orgmode.xml
new file mode 100644
--- /dev/null
+++ b/xml/orgmode.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+<!ENTITY listbullet "[\+\-]">
+<!ENTITY checkbox "\[[ \-X]\](?=\s)">
+<!-- links. -->
+<!ENTITY startlink "(?:(?:https?|ftp)\://|(?:file|docview|mailto|mhe|rmail|bbdb|irc|info)\:)">
+<!ENTITY link "&startlink;[^&quot;&gt;\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;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[: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="3" 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 attribute="Keyword" 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="&macroreplacement_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" defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <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; -->
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -52,7 +52,7 @@
 <!-- v2.07 add support for %prog and co, see bug 142832 -->
 <!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
 <!-- v2.29 recognize escape sequenzes correctly -->
-<language name="Python" version="22" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+<language name="Python" version="23" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
 	<highlighting>
 		<list name="import">
 			<item>import</item>
@@ -408,9 +408,15 @@
 				<DetectIdentifier attribute="Normal Text"/>
 
 				<RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>
-				<AnyChar attribute="Operator" String="+*/%\|=;&lt;&gt;!^&amp;~-@" context="#stay"/>
+				<AnyChar attribute="Operator" String="+*/%|=;&lt;&gt;!^&amp;~-@" context="#stay"/>
 
+				<LineContinue attribute="Operator" context="MultiLineExpr"/>
+
 				<Int attribute="Error"/>
+			</context>
+			<context name="MultiLineExpr" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+				<IncludeRules context="StringVariants" />
 			</context>
 
 			<!-- https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals -->
diff --git a/xml/r.xml b/xml/r.xml
--- a/xml/r.xml
+++ b/xml/r.xml
@@ -8,7 +8,7 @@
 	R      : http://www.r-project.org/
 	RKWard : http://rkward.kde.org/
 	-->
-<language version="11" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
+<language version="12" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
 <highlighting>
 
 	<list name="controls">
@@ -117,12 +117,14 @@
 			<Detect2Chars attribute="Assign" context="operator_rhs" char="&lt;" char1="-"/>
 			<StringDetect attribute="Assign" context="operator_rhs" String="-&gt;&gt;"/>
 			<Detect2Chars attribute="Assign" context="operator_rhs" char="-" char1="&gt;"/>
-			<RegExpr attribute="Assign" context="operator_rhs" String="=(?!=)"/>
+			<RegExpr attribute="Assign" context="operator_rhs" String="=(?!(=|&gt;))"/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="*" char1="*"/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="&lt;" char1="="/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="&gt;" char1="="/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="=" char1="="/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="=" char1="&gt;"/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="!" char1="="/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="|" char1="&gt;"/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="|" char1="|"/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="&amp;" char1="&amp;"/>
 			<StringDetect attribute="Operator" context="operator_rhs" String=":::"/>
diff --git a/xml/sass.xml b/xml/sass.xml
new file mode 100644
--- /dev/null
+++ b/xml/sass.xml
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
+  <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
+  <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
+]>
+
+<language name="SASS" version="5" kateversion="5.53" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
+
+    <highlighting>
+        <list name="properties">
+            <include>properties##SCSS</include>
+            <include>sub-properties##SCSS</include>
+        </list>
+        <list name="special values"><include>special values##SCSS</include></list>
+        <list name="value keywords"><include>value keywords##SCSS</include></list>
+        <list name="values"><include>values##SCSS</include></list>
+        <list name="colors"><include>colors##SCSS</include></list>
+        <list name="functions"><include>functions##SCSS</include></list>
+        <list name="medias"><include>medias##SCSS</include></list>
+        <list name="pseudoelements"><include>pseudoelements##SCSS</include></list>
+        <list name="pseudoclasses"><include>pseudoclasses##SCSS</include></list>
+        <list name="pseudoclass-selector"><include>pseudoclass-selector##SCSS</include></list>
+        <list name="pseudoclasses-@page"><include>pseudoclasses-@page##SCSS</include></list>
+        <list name="at-rules"><include>at-rules##SCSS</include></list>
+        <list name="nested at-rules"><include>nested at-rules##SCSS</include></list>
+        <list name="inline and nested at-rules"><include>inline and nested at-rules##SCSS</include></list>
+        <list name="@extend"><include>@extend##SCSS</include></list>
+        <list name="@if"><include>@if##SCSS</include></list>
+        <list name="@else"><include>@else##SCSS</include></list>
+        <list name="@mixin"><include>@mixin##SCSS</include></list>
+        <list name="@viewport"><include>@viewport##SCSS</include></list>
+        <list name="@page"><include>@page##SCSS</include></list>
+        <list name="@keyframes-@font-face">
+            <include>@font-face##SCSS</include>
+            <include>@keyframes##SCSS</include>
+        </list>
+        <list name="media operators"><include>media operators##SCSS</include></list>
+        <list name="operators"><include>operators##SCSS</include></list>
+        <list name="annotations"><include>annotations##SCSS</include></list>
+
+        <contexts>
+            <context name="Base" attribute="Normal Text" lineEndContext="#stay">
+                <IncludeRules context="FindCommentsColumn0" />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Property" context="Rule" String="^\s*[-_A-Za-z]+(/\*.*\*/)?\s*(?=:(\s|$))" lookAhead="true" column="0" />
+                <DetectSpaces />
+                <DetectChar attribute="At Rule" context="@mixin" char="=" firstNonSpace="true" />
+                <DetectChar attribute="At Rule" context="AtRule" char="+" firstNonSpace="true" />
+                <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
+                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <AnyChar attribute="Operator" context="#stay" String="&amp;*>+~|" />
+                <RegExpr attribute="Selector Pseudo" context="SelectorPseudo" String=":(?=[a-z:])" />
+                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
+                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+                <RegExpr attribute="Placeholder Selector" context="#stay" String="%[_a-zA-Z][_a-zA-Z\-]*" />
+                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*(?=\s|:?[#.&amp;[*>+~|,]|:[a-z:])" />
+                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+                <DetectChar attribute="Normal Text" context="Rule" char=":" lookAhead="true" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
+                <AnyChar attribute="Error" context="#stay" String=",&amp;" />
+                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
+                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
+                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+                <RegExpr attribute="Placeholder Selector" context="#stay" String="%[_a-zA-Z][_a-zA-Z\-]*" />
+                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="VariableDefine" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
+            </context>
+
+            <context name="Interpolation" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Interpolation" context="#pop" char="}" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+
+            <!-- find functions // rgba(255,255,255,0.75) -->
+            <!-- same as SCSS -->
+            <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
+                <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
+            </context>
+
+            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
+            <!-- same as SCSS -->
+            <context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Annotation" context="Annotation" char="!" />
+                <keyword attribute="Operator" context="#stay" String="operators" />
+                <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
+                <keyword attribute="Value" context="#stay" String="values" />
+                <keyword attribute="Color" context="#stay" String="colors" />
+                <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
+                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
+                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
+                <keyword attribute="Value Keyword" context="#stay" String="special values" />
+                <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
+                <AnyChar attribute="Operator" context="#stay" String="*/+%-" />
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <keyword attribute="Annotation" context="#pop" String="annotations" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)" />
+            </context>
+
+            <!-- find strings // "some words" 'some words' -->
+            <!-- same as SCSS -->
+            <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="String" context="StringDQ" char="&quot;" />
+                <DetectChar attribute="String" context="StringSQ" char="'" />
+            </context>
+
+            <!-- find comments // and /* at the beginning of line -->
+            <context name="FindCommentsColumn0" attribute="Comment" lineEndContext="#stay">
+                <!-- (\s*)(?=/[*/]) is not selected when the match is empty -->
+                <RegExpr attribute="Normal Text" context="Comment" String="^(\s+)(?=/[*/])" column="0" />
+                <RegExpr attribute="Comment" context="Comment" String="^()/[*/]" column="0" />
+            </context>
+
+            <!-- find comments // and /* -->
+            <context name="FindComments" attribute="Comment" lineEndContext="#stay">
+                <Detect2Chars attribute="Comment" context="IsInlineComment" char="/" char1="/" />
+                <Detect2Chars attribute="Comment" context="IsInlineComment2" char="/" char1="*" />
+            </context>
+
+            <context name="Comment" attribute="Comment" lineEndContext="#stay" dynamic="true" fallthrough="true" fallthroughContext="IsInlineComment">
+                <RegExpr attribute="Comment" context="IsInlineComment" String="^%1\s|^\s*$" dynamic="true" column="0" />
+                <DetectSpaces attribute="Normal Text" context="#pop" lookAhead="true" column="0" />
+                <RegExpr attribute="Comment" context="#pop" String="." lookAhead="true" column="0"/>
+            </context>
+
+            <context name="IsInlineComment" attribute="Comment" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="IsInlineComment2" attribute="Comment" lineEndContext="#pop">
+                <DetectSpaces />
+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
+                <keyword attribute="At Rule" context="#pop!AtRule" String="nested at-rules" />
+                <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
+                <keyword attribute="At Rule" context="#pop!AtRule" String="inline and nested at-rules" />
+                <keyword attribute="At Rule" context="#pop!@extend" String="@extend" />
+                <keyword attribute="At Rule" context="#pop!@mixin" String="@mixin" />
+                <keyword attribute="At Rule" context="#pop!@keyframes-@font-face" String="@keyframes-@font-face" />
+                <keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" />
+                <keyword attribute="At Rule" context="#pop!@if" String="@if" />
+                <keyword attribute="At Rule" context="#pop!@else" String="@else" />
+                <keyword attribute="At Rule" context="#pop!@page" String="@page" />
+                <RegExpr attribute="At Rule" context="#pop!AtRule" String="@[a-zA-Z0-9\-_]+\b" />
+            </context>
+
+            <context name="@if" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="@else" attribute="Error" lineEndContext="#pop">
+                <DetectSpaces attribute="Normal Text" />
+                <IncludeRules context="FindComments" />
+                <WordDetect attribute="At Rule" context="#pop!@if" String="if" />
+                <DetectIdentifier attribute="Error" />
+            </context>
+
+            <context name="@extend" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindSelector" />
+            </context>
+
+            <context name="@mixin" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Function" context="MixinParameter" String="[a-zA-Z0-9\-_]+" />
+            </context>
+
+            <context name="MixinParameter" attribute="Error" lineEndContext="#pop#pop">
+                <DetectSpaces attribute="Normal Text" />
+                <AnyChar attribute="Normal Text" context="#stay" String="()" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
+                <StringDetect attribute="Operator" context="#stay" String="..." />
+            </context>
+
+            <context name="@keyframes-@font-face" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+            </context>
+
+            <context name="@viewport" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
+            </context>
+
+            <context name="@page" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
+            </context>
+
+            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
+                <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Operator" context="#stay" char="&amp;" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <keyword attribute="Keyword" context="#stay" String="media operators" />
+                <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
+                <keyword attribute="Value" context="#stay" String="medias" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#pop">
+                <DetectChar attribute="Selector Attribute" context="#pop" char="]" />
+                <IncludeRules context="FindStrings" />
+                <DetectChar   attribute="Operator" context="SelectorAttrValue" char="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
+                <DetectIdentifier />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorAttrValue" attribute="String" lineEndContext="#pop#pop">
+                <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
+                <DetectIdentifier />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
+                <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
+                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
+                <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
+            </context>
+
+            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#pop#pop#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
+                <IncludeRules context="FindSelector" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
+                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="Rule" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
+                <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
+                <keyword attribute="Property" context="#stay" String="properties" />
+                <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
+            </context>
+
+            <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
+                <RegExpr attribute="Variable" context="#stay" String="[^:/]+" />
+                <IncludeRules context="FindComments" />
+            </context>
+
+            <context name="RuleParameters" attribute="Normal Text" lineEndContext="#pop#pop">
+                <DetectSpaces />
+                <!-- Jump out conditions -->
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="Function" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Function" context="FunctionParameters" char="(" />
+                <StringDetect attribute="Function" context="FunctionVar" String="var(" />
+                <StringDetect attribute="Function" context="FunctionUrl" String="url(" />
+                <StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
+                <keyword attribute="Function" context="#stay" String="functions" />
+                <RegExpr attribute="Function" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="FunctionVar" attribute="Variable" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#pop#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Function" context="#pop#pop" char=")" />
+                <IncludeRules context="Calc" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="NestedCalc" attribute="Normal Text" lineEndContext="#pop#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Normal Text" context="#pop" char=")" />
+                <IncludeRules context="Calc" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="Calc" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="UrlValue">
+                <DetectSpaces />
+                <IncludeRules context="FindStrings" />
+                <DetectChar attribute="Function" context="#pop#pop" char=")" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="UrlValue" attribute="String" lineEndContext="#pop#pop#pop">
+                <DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#pop#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Function" context="#pop#pop" char=")" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <StringDetect attribute="Operator" String="..." />
+            </context>
+
+            <!-- string contexts -->
+            <!-- same as SCSS -->
+            <context name="StringDQ" attribute="String" lineEndContext="#pop">
+                <DetectChar attribute="String" context="#pop" char="&quot;" />
+                <IncludeRules context="InsideString" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="StringSQ" attribute="String" lineEndContext="#pop">
+                <DetectChar attribute="String" context="#pop" char="'" />
+                <IncludeRules context="InsideString" />
+            </context>
+
+            <!-- same as SCSS -->
+            <context name="InsideString" attribute="String" lineEndContext="#stay">
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+                <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
+                <RegExpr attribute="String" context="#stay" String="\\?[^#&quot;'\\]+" />
+            </context>
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
+            <itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
+            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
+            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment" />
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="0" weakDeliminator="-%@" />
+        <folding indentationsensitive="1" />
+        <comments>
+            <comment name="singleLine" start="//" position="afterwhitespace"/>
+        </comments>
+    </general>
+
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/scss.xml b/xml/scss.xml
new file mode 100644
--- /dev/null
+++ b/xml/scss.xml
@@ -0,0 +1,1040 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
+  <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
+  <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
+]>
+
+<!--
+
+Kate SCSS syntax highlighting definition
+
+Changelog:
+
+- Version 7, by Jonathan Poelen
+- fix tag followed by a pseudo-class in a nested rule (@media, ...)
+- fix constraint in a rule
+- fix Kate auto-completion for properties and rules
+- fix highlighting of pseudoclass/pseudoelement in a sub-rule
+- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Value Keyword, Color, Number, Unit, Selector Tag, Placeholder Selector
+
+- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
+- Remake for complex SCSS syntax, avoid errors
+
+- Version 2.06, by Guo Yunhe
+- Add all W3C Work Draft properties, inherit rules from css.xml
+
+- Version 1.2.03.6, by Mte90
+- Css3 Tag
+
+- Version 1.2.03.1, by Tijn Schuurmans
+- Added basic support for "@include mixin();"
+- Clean the indentation to use 4 spaces everywhere
+
+-->
+
+<language name="SCSS" version="13" kateversion="5.53" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+
+    <highlighting>
+        <list name="properties">
+            <include>properties##CSS</include>
+        </list>
+
+        <list name="sub-properties">
+            <item>adjust</item>
+            <item>after</item>
+            <item>align-all</item>
+            <item>align</item>
+            <item>align-last</item>
+            <item>alternates</item>
+            <item>anchor</item>
+            <item>area</item>
+            <item>areas</item>
+            <item>attachment</item>
+            <item>auto-columns</item>
+            <item>auto-flow</item>
+            <item>auto-rows</item>
+            <item>baseline</item>
+            <item>basis</item>
+            <item>before</item>
+            <item>bidi</item>
+            <item>blend-mode</item>
+            <item>block-color</item>
+            <item>block-end-color</item>
+            <item>block-end</item>
+            <item>block-end-style</item>
+            <item>block-end-width</item>
+            <item>block</item>
+            <item>block-start-color</item>
+            <item>block-start</item>
+            <item>block-start-style</item>
+            <item>block-start-width</item>
+            <item>block-style</item>
+            <item>block-width</item>
+            <item>border-mode</item>
+            <item>border-outset</item>
+            <item>border-repeat</item>
+            <item>border-slice</item>
+            <item>border-source</item>
+            <item>bottom-color</item>
+            <item>bottom-left-radius</item>
+            <item>bottom-right-radius</item>
+            <item>bottom-style</item>
+            <item>bottom-width</item>
+            <item>boundary</item>
+            <item>box</item>
+            <item>break</item>
+            <item>caps</item>
+            <item>cells</item>
+            <item>change</item>
+            <item>character</item>
+            <item>chars</item>
+            <item>collapse</item>
+            <item>column-end</item>
+            <item>column</item>
+            <item>column-start</item>
+            <item>combine-upright</item>
+            <item>composite</item>
+            <item>count</item>
+            <item>decoration-break</item>
+            <item>decoration-color</item>
+            <item>decoration</item>
+            <item>decoration-line</item>
+            <item>decoration-skip-ink</item>
+            <item>decoration-skip</item>
+            <item>decoration-style</item>
+            <item>decoration-width</item>
+            <item>defer</item>
+            <item>delay</item>
+            <item>distance</item>
+            <item>down</item>
+            <item>duration</item>
+            <item>during</item>
+            <item>east-asian</item>
+            <item>emoji</item>
+            <item>emphasis-color</item>
+            <item>emphasis</item>
+            <item>emphasis-position</item>
+            <item>emphasis-skip</item>
+            <item>emphasis-style</item>
+            <item>end-color</item>
+            <item>end</item>
+            <item>end-style</item>
+            <item>end-width</item>
+            <item>events</item>
+            <item>family</item>
+            <item>feature-settings</item>
+            <item>fill-mode</item>
+            <item>filters</item>
+            <item>fit</item>
+            <item>flow</item>
+            <item>fragment</item>
+            <item>from</item>
+            <item>function</item>
+            <item>grow</item>
+            <item>gutter</item>
+            <item>header</item>
+            <item>height-step</item>
+            <item>image</item>
+            <item>image-outset</item>
+            <item>image-repeat</item>
+            <item>image-slice</item>
+            <item>image-source</item>
+            <item>image-threshold</item>
+            <item>image-transform</item>
+            <item>image-width</item>
+            <item>increment</item>
+            <item>indent</item>
+            <item>inline-color</item>
+            <item>inline-end-color</item>
+            <item>inline-end</item>
+            <item>inline-end-style</item>
+            <item>inline-end-width</item>
+            <item>inline</item>
+            <item>inline-start-color</item>
+            <item>inline-start</item>
+            <item>inline-start-style</item>
+            <item>inline-start-width</item>
+            <item>inline-style</item>
+            <item>inline-width</item>
+            <item>insert</item>
+            <item>inside</item>
+            <item>interpolation-filters</item>
+            <item>into</item>
+            <item>items</item>
+            <item>iteration-count</item>
+            <item>justify</item>
+            <item>kerning</item>
+            <item>knockout-left</item>
+            <item>knockout-right</item>
+            <item>label</item>
+            <item>language-override</item>
+            <item>last</item>
+            <item>layout</item>
+            <item>left-color</item>
+            <item>left-radius</item>
+            <item>left-style</item>
+            <item>left-width</item>
+            <item>letter-align</item>
+            <item>letter</item>
+            <item>letter-wrap</item>
+            <item>level</item>
+            <item>ligatures</item>
+            <item>limit-chars</item>
+            <item>limit-last</item>
+            <item>limit-lines</item>
+            <item>limit-zone</item>
+            <item>line</item>
+            <item>lines</item>
+            <item>loop</item>
+            <item>max-size</item>
+            <item>merge</item>
+            <item>mid</item>
+            <item>min-size</item>
+            <item>mode</item>
+            <item>name</item>
+            <item>numeral</item>
+            <item>numeric</item>
+            <item>optical-sizing</item>
+            <item>orientation</item>
+            <item>orientation-vertical</item>
+            <item>origin</item>
+            <item>outset</item>
+            <item>outside</item>
+            <item>override</item>
+            <item>palette</item>
+            <item>path</item>
+            <item>pattern</item>
+            <item>play-state</item>
+            <item>point</item>
+            <item>policy</item>
+            <item>property</item>
+            <item>punctuation</item>
+            <item>radius</item>
+            <item>range</item>
+            <item>rate</item>
+            <item>reference</item>
+            <item>rendering</item>
+            <item>repeat</item>
+            <item>reset</item>
+            <item>resolution</item>
+            <item>right-color</item>
+            <item>right-radius</item>
+            <item>right-style</item>
+            <item>right-width</item>
+            <item>rotate</item>
+            <item>round</item>
+            <item>row-end</item>
+            <item>row</item>
+            <item>rows</item>
+            <item>row-start</item>
+            <item>rule-color</item>
+            <item>rule</item>
+            <item>rule-style</item>
+            <item>rule-width</item>
+            <item>segment</item>
+            <item>select</item>
+            <item>self</item>
+            <item>set</item>
+            <item>settings</item>
+            <item>shadow</item>
+            <item>shape</item>
+            <item>shift</item>
+            <item>shrink</item>
+            <item>side</item>
+            <item>size-adjust</item>
+            <item>sizing</item>
+            <item>skip-ink</item>
+            <item>skip</item>
+            <item>slice</item>
+            <item>snap</item>
+            <item>source</item>
+            <item>space-collapse</item>
+            <item>space</item>
+            <item>space-trim</item>
+            <item>spacing</item>
+            <item>span</item>
+            <item>speed</item>
+            <item>start-color</item>
+            <item>start</item>
+            <item>start-style</item>
+            <item>start-width</item>
+            <item>state</item>
+            <item>step-align</item>
+            <item>step-insert</item>
+            <item>step</item>
+            <item>step-round</item>
+            <item>step-size</item>
+            <item>stretch</item>
+            <item>style-image</item>
+            <item>style</item>
+            <item>style-position</item>
+            <item>style-type</item>
+            <item>synthesis</item>
+            <item>template-areas</item>
+            <item>template-columns</item>
+            <item>template</item>
+            <item>template-rows</item>
+            <item>threshold</item>
+            <item>through</item>
+            <item>timing-function</item>
+            <item>top-color</item>
+            <item>top-left-radius</item>
+            <item>top-right-radius</item>
+            <item>top-style</item>
+            <item>top-width</item>
+            <item>trim</item>
+            <item>type</item>
+            <item>underline-offset</item>
+            <item>underline-position</item>
+            <item>up</item>
+            <item>upright</item>
+            <item>variant-alternates</item>
+            <item>variant-caps</item>
+            <item>variant-east-asian</item>
+            <item>variant-emoji</item>
+            <item>variant</item>
+            <item>variant-ligatures</item>
+            <item>variant-numeric</item>
+            <item>variant-position</item>
+            <item>variation-settings</item>
+            <item>vertical</item>
+            <item>weight</item>
+            <item>wrap</item>
+            <item>x</item>
+            <item>y</item>
+            <item>zone</item>
+        </list>
+
+        <list name="special values">
+            <item>true</item>
+            <item>false</item>
+            <item>null</item>
+        </list>
+
+        <list name="value keywords">
+            <include>value keywords##CSS</include>
+        </list>
+
+        <list name="values">
+            <include>values##CSS</include>
+        </list>
+
+        <list name="colors">
+            <include>colors##CSS</include>
+        </list>
+
+        <list name="functions">
+            <include>functions##CSS</include>
+
+            <!-- sass -->
+            <item>red</item>
+            <item>green</item>
+            <item>blue</item>
+            <item>mix</item>
+            <item>hue</item>
+            <item>saturation</item>
+            <item>lightness</item>
+            <item>adjust-hue</item>
+            <item>lighten</item>
+            <item>darken</item>
+            <item>saturate</item>
+            <item>desaturate</item>
+            <item>grayscale</item>
+            <item>complement</item>
+            <item>invert</item>
+            <item>alpha</item>
+            <item>opacify</item>
+            <item>transparentize</item>
+            <item>adjust-color</item>
+            <item>scale-color</item>
+            <item>change-color</item>
+            <item>ie-hex-str</item>
+            <item>unquote</item>
+            <item>quote</item>
+            <item>str-length</item>
+            <item>str-insert</item>
+            <item>str-index</item>
+            <item>str-slice</item>
+            <item>to-upper-case</item>
+            <item>to-lower-case</item>
+            <item>percentage</item>
+            <item>round</item>
+            <item>ceil</item>
+            <item>floor</item>
+            <item>abs</item>
+            <item>min</item>
+            <item>max</item>
+            <item>random</item>
+            <item>length</item>
+            <item>nth</item>
+            <item>set-nth</item>
+            <item>join</item>
+            <item>append</item>
+            <item>zip</item>
+            <item>index</item>
+            <item>list-separator</item>
+            <item>is-bracketed</item>
+            <item>map-get</item>
+            <item>map-merge</item>
+            <item>map-remove</item>
+            <item>map-keys</item>
+            <item>map-values</item>
+            <item>map-has-key</item>
+            <item>keywords</item>
+            <item>selector-nest</item>
+            <item>selector-append</item>
+            <item>selector-extend</item>
+            <item>selector-replace</item>
+            <item>selector-unify</item>
+            <item>is-superselector</item>
+            <item>simple-selectors</item>
+            <item>selector-parse</item>
+            <item>feature-exists</item>
+            <item>variable-exists</item>
+            <item>global-variable-exists</item>
+            <item>function-exists</item>
+            <item>mixin-exists</item>
+            <item>content-exists</item>
+            <item>inspect</item>
+            <item>type-of</item>
+            <item>unit</item>
+            <item>unitless</item>
+            <item>comparable</item>
+            <item>call</item>
+            <item>get-function</item>
+            <item>if</item>
+            <item>unique-id</item>
+        </list>
+
+        <list name="medias">
+            <include>medias##CSS</include>
+        </list>
+
+        <!-- prefixed by :: -->
+        <list name="pseudoelements">
+            <include>pseudoelements##CSS</include>
+        </list>
+
+        <!-- prefixed by : -->
+        <list name="pseudoclasses">
+            <include>pseudoclasses##CSS</include>
+        </list>
+
+        <list name="pseudoclass-selector">
+            <include>pseudoclass-selector##CSS</include>
+        </list>
+
+        <list name="pseudoclasses-@page">
+            <include>pseudoclasses-@page##CSS</include>
+        </list>
+
+        <list name="at-rules">
+            <include>at-rules##CSS</include>
+
+            <!-- scss -->
+            <item>@debug</item>
+            <item>@warn</item>
+            <item>@error</item>
+            <item>@content</item>
+            <item>@return</item>
+        </list>
+
+        <list name="nested at-rules">
+            <include>nested at-rules##CSS</include>
+
+            <!-- scss -->
+            <item>@at-rule</item>
+            <item>@for</item>
+            <item>@each</item>
+            <item>@while</item>
+        </list>
+
+        <list name="inline and nested at-rules">
+            <!-- CSS: inline -->
+            <!-- SCSS: inline or block -->
+            <item>@include</item>
+        </list>
+
+        <list name="@extend">
+            <item>@extend</item>
+        </list>
+
+        <list name="@if">
+            <item>@if</item>
+        </list>
+
+        <list name="@else">
+            <item>@else</item>
+        </list>
+
+        <list name="@mixin">
+            <item>@mixin</item>
+            <item>@function</item>
+        </list>
+
+        <list name="@viewport">
+            <item>@viewport</item>
+        </list>
+
+        <list name="within-@viewport">
+            <include>within-@viewport##CSS</include>
+        </list>
+
+        <list name="@page">
+            <item>@page</item>
+        </list>
+
+        <list name="within-@page">
+            <include>within-@page##CSS</include>
+        </list>
+
+        <list name="@font-face">
+            <item>@font-face</item>
+        </list>
+
+        <list name="within-@font-face">
+            <include>within-@font-face##CSS</include>
+        </list>
+
+        <list name="@keyframes">
+            <item>@keyframes</item>
+        </list>
+
+        <list name="within-@keyframes">
+            <include>within-@keyframes##CSS</include>
+        </list>
+
+        <list name="media operators">
+            <include>media operators##CSS</include>
+        </list>
+
+        <list name="operators">
+            <item>and</item>
+            <item>or</item>
+            <item>not</item>
+        </list>
+
+        <list name="annotations">
+            <item>important</item>
+            <item>default</item>
+            <item>global</item>
+        </list>
+
+        <contexts>
+            <context name="Base" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
+                <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
+                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
+                <DetectChar attribute="Separator Symbol" context="IsSelectors" char="," />
+                <AnyChar attribute="Operator" context="IsSelectors" String="*>+~|&amp;" />
+                <RegExpr attribute="Selector Pseudo" context="SelectorPseudo" String=":(?=[a-z:])" />
+                <RegExpr attribute="Selector Id" context="IsSelectors" String="#[-]?(&nmstart;)(&nmchar;)*" />
+                <RegExpr attribute="Selector Class" context="IsSelectors" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+                <RegExpr attribute="Placeholder Selector" context="IsSelectors" String="%[_a-zA-Z][_a-zA-Z\-]*" />
+                <RegExpr attribute="Selector Tag" context="IsSelectors" String="[-]?(&nmstart;)(&nmchar;)*(?=\s|:?[#.&amp;{[*>+~|,]|:[a-z:])" />
+                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
+                <Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
+            </context>
+
+            <context name="IsSelectors" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <DetectChar attribute="At Rule" context="#pop!SelectAtRule" char="@" lookAhead="true" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <DetectChar attribute="Error" context="#pop" char=";" />
+                <AnyChar attribute="Operator" context="#stay" String="*>+~|&amp;" />
+                <IncludeRules context="SelectorTypes" />
+            </context>
+
+            <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
+                <AnyChar attribute="Error" context="#stay" String=",&amp;" />
+                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
+                <IncludeRules context="SelectorTypes" />
+            </context>
+
+            <context name="SelectorTypes" attribute="Normal Text" lineEndContext="#stay">
+                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
+                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
+                <RegExpr attribute="Placeholder Selector" context="#stay" String="%[_a-zA-Z][_a-zA-Z\-]*" />
+                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+            </context>
+
+            <context name="VariableDefine" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
+            </context>
+
+            <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Interpolation" context="#pop" char="}" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="InterpolationMaybeProperty" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Interpolation" context="#pop!MaybeProperty" char="}" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="MaybeProperty" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Normal Text" context="Rule" String=":($|[/{\s0-9$&quot;'])" lookAhead="true"/>
+            </context>
+
+
+            <!-- find functions // rgba(255,255,255,0.75) -->
+            <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
+                <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
+            </context>
+
+            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
+            <context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Annotation" context="Annotation" char="!" />
+                <keyword attribute="Operator" context="#stay" String="operators" />
+                <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
+                <keyword attribute="Value" context="#stay" String="values" />
+                <keyword attribute="Color" context="#stay" String="colors" />
+                <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
+                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
+                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
+                <keyword attribute="Value Keyword" context="#stay" String="special values" />
+                <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
+                <AnyChar attribute="Operator" context="#stay" String="*/+%-" />
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+            </context>
+
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <keyword attribute="Annotation" context="#pop" String="annotations" />
+            </context>
+
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)" />
+            </context>
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="String" context="StringDQ" char="&quot;" />
+                <DetectChar attribute="String" context="StringSQ" char="'" />
+            </context>
+
+            <!-- find comments // /* comment */ -->
+            <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="/" lookAhead="true"/>
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/>
+            </context>
+
+            <context name="IsComments" attribute="Normal Text" lineEndContext="#stay">
+                <RegExpr attribute="Region Marker" context="#stay" String="/\*\s*BEGIN\b.*\*/|//\s*BEGIN\b.*" beginRegion="UserDefined" />
+                <RegExpr attribute="Region Marker" context="#stay" String="/\*\s*END\b.*\*/|//\s*END\b.*" endRegion="UserDefined" />
+                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
+                <Detect2Chars attribute="Comment" context="SassComment" char="/" char1="/" />
+            </context>
+
+            <context name="SassComment" attribute="Comment" lineEndContext="#pop#pop">
+                <DetectSpaces />
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
+                <keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" />
+                <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
+                <keyword attribute="At Rule" context="#pop!UnknownAtRule" String="inline and nested at-rules" />
+                <keyword attribute="At Rule" context="#pop!@extend" String="@extend" />
+                <keyword attribute="At Rule" context="#pop!@mixin" String="@mixin" />
+                <keyword attribute="At Rule" context="#pop!@keyframes" String="@keyframes" />
+                <keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" />
+                <keyword attribute="At Rule" context="#pop!@font-face" String="@font-face" />
+                <keyword attribute="At Rule" context="#pop!@if" String="@if" />
+                <keyword attribute="At Rule" context="#pop!@else" String="@else" />
+                <keyword attribute="At Rule" context="#pop!@page" String="@page" />
+                <RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" />
+            </context>
+
+            <context name="@if" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="@else" attribute="Error" lineEndContext="#stay">
+                <DetectSpaces attribute="Normal Text" />
+                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <IncludeRules context="FindComments" />
+                <WordDetect attribute="At Rule" context="#pop!@if" String="if" />
+                <DetectIdentifier attribute="Error" />
+            </context>
+
+            <context name="@extend" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
+                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
+                <IncludeRules context="FindSelector" />
+            </context>
+
+            <context name="@mixin" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Function" context="MixinParameter" String="[a-zA-Z0-9\-_]+" />
+            </context>
+
+            <context name="MixinParameter" attribute="Error" lineEndContext="#stay">
+                <DetectSpaces attribute="Normal Text" />
+                <AnyChar attribute="Normal Text" context="#stay" String="()" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <DetectChar attribute="Normal Text" context="#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
+                <StringDetect attribute="Operator" context="#stay" String="..." />
+            </context>
+
+            <context name="@keyframes" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" />
+            </context>
+
+            <context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
+                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
+                <keyword attribute="Value" context="#stay" String="within-@keyframes" />
+                <RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" />
+            </context>
+
+            <context name="@viewport" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
+                <DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" />
+            </context>
+
+            <context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <keyword attribute="Property" context="IsProperty" String="within-@viewport" />
+                <IncludeRules context="RuleSet" />
+            </context>
+
+            <context name="@font-face" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" />
+            </context>
+
+            <context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <keyword attribute="Property" context="IsProperty" String="within-@font-face" />
+                <RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" />
+                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
+            </context>
+
+            <context name="@page" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
+                <DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" />
+            </context>
+
+            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
+                <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <context name="Within-@page" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <keyword attribute="Property" context="IsProperty" String="within-@page" />
+                <IncludeRules context="RuleSet" />
+            </context>
+
+            <context name="IsProperty" attribute="Error" lineEndContext="#stay">
+                <DetectSpaces attribute="Normal Text" />
+                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
+                <IncludeRules context="FindComments" />
+            </context>
+
+            <context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <IncludeRules context="AtRuleValue" />
+            </context>
+
+            <context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
+                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
+                <IncludeRules context="AtRuleValue" />
+            </context>
+
+            <context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#pop">
+                <DetectSpaces />
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
+                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
+                <IncludeRules context="AtRuleValue" />
+            </context>
+
+            <context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Operator" context="#stay" char="&amp;" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <keyword attribute="Keyword" context="#stay" String="media operators" />
+                <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
+                <keyword attribute="Value" context="#stay" String="medias" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay">
+                <DetectChar attribute="Selector Attribute" context="#pop" char="]" />
+                <IncludeRules context="FindStrings" />
+                <DetectChar   attribute="Operator" context="SelectorAttrValue" char="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
+                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="SelectorAttrValue" attribute="String" lineEndContext="#stay">
+                <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
+                <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
+                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
+                <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
+            </context>
+
+            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
+                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
+                <IncludeRules context="FindSelector" />
+            </context>
+
+            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
+            </context>
+
+            <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
+                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="Comment" attribute="Comment" lineEndContext="#stay">
+                <DetectSpaces />
+                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier />
+            </context>
+
+            <context name="RuleSet" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
+                <RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+\s*:($|[/{\s0-9$&quot;'])" lookAhead="true" />
+                <IncludeRules context="Base" />
+                <!-- auto-completion only, includes by a previous rule -->
+                <keyword attribute="Normal Text" context="#stay" String="properties" />
+            </context>
+
+            <context name="Rule" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
+                <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
+                <keyword attribute="Property" context="#stay" String="properties" />
+                <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
+            </context>
+
+            <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
+                <RegExpr attribute="Variable" context="#stay" String="[^:]+" />
+            </context>
+
+            <context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <!-- Jump out conditions -->
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
+                <DetectChar attribute="Normal Text" context="SubRule" char="{" beginRegion="ruleset" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="SubRule" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
+                <RegExpr attribute="Property" context="IsProperty" String="[A-Za-z_-]+(?=\s*:)" />
+                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
+                <Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
+                <DetectIdentifier />
+                <AnyChar attribute="Error" context="#stay" String="*>+~|.#" />
+                <!-- auto-completion only, includes by previous rule -->
+                <keyword attribute="Normal Text" context="#stay" String="properties" />
+                <keyword attribute="Normal Text" context="#stay" String="sub-properties" />
+            </context>
+
+            <context name="Function" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Function" context="FunctionParameters" char="(" />
+                <StringDetect attribute="Function" context="FunctionVar" String="var(" />
+                <StringDetect attribute="Function" context="FunctionUrl" String="url(" />
+                <StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
+                <keyword attribute="Function" context="#stay" String="functions" />
+                <RegExpr attribute="Function" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
+            </context>
+
+            <context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
+                <DetectSpaces />
+                <IncludeRules context="FindComments" />
+                <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
+            </context>
+
+            <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Function" context="#pop#pop" char=")" />
+                <IncludeRules context="Calc" />
+            </context>
+
+            <context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Normal Text" context="#pop" char=")" />
+                <IncludeRules context="Calc" />
+            </context>
+
+            <context name="Calc" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
+                <!-- auto-completion only -->
+                <keyword attribute="Normal Text" context="#stay" String="functions" />
+            </context>
+
+            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue">
+                <DetectSpaces />
+                <IncludeRules context="FindStrings" />
+                <DetectChar attribute="Function" context="#pop#pop" char=")" />
+            </context>
+
+            <context name="UrlValue" attribute="String" lineEndContext="#stay">
+                <DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
+            </context>
+
+            <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
+                <DetectChar attribute="Function" context="#pop#pop" char=")" />
+                <IncludeRules context="FindComments" />
+                <IncludeRules context="FindStrings" />
+                <IncludeRules context="FindFunctions" />
+                <IncludeRules context="FindValues" />
+                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
+                <StringDetect attribute="Operator" String="..." />
+            </context>
+
+            <!-- string contexts -->
+            <context name="StringDQ" attribute="String" lineEndContext="#stay">
+                <DetectChar attribute="String" context="#pop" char="&quot;" />
+                <IncludeRules context="InsideString" />
+            </context>
+
+            <context name="StringSQ" attribute="String" lineEndContext="#stay">
+                <DetectChar attribute="String" context="#pop" char="'" />
+                <IncludeRules context="InsideString" />
+            </context>
+
+            <context name="InsideString" attribute="String" lineEndContext="#stay">
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
+                <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
+                <RegExpr attribute="String" context="#stay" String="\\?[^#&quot;'\\]+" />
+            </context>
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
+            <itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
+            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
+            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment" />
+            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="0" weakDeliminator="-%@" />
+        <comments>
+            <comment name="singleLine" start="//" position="afterwhitespace" />
+            <comment name="multiLine" start="/*" end="*/" region="comment" />
+        </comments>
+    </general>
+
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/systemverilog.xml b/xml/systemverilog.xml
new file mode 100644
--- /dev/null
+++ b/xml/systemverilog.xml
@@ -0,0 +1,993 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************-->
+<!-- $Id: systemverilog.xml 10 2009-06-25 03:41:39Z seanoboyle $            -->
+<!--***********************************************************************-->
+<!--  This program is free software: you can redistribute it and/or modify -->
+<!--  it under the terms of the GNU General Public License as published by -->
+<!--  the Free Software Foundation, either version 3 of the License, or    -->
+<!--  (at your option) any later version.                                  -->
+<!--                                                                       -->
+<!--  This program is distributed in the hope that it will be useful,      -->
+<!--  but WITHOUT ANY WARRANTY; without even the implied warranty of       -->
+<!--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        -->
+<!--  GNU General Public License for more details.                         -->
+<!--                                                                       -->
+<!--  You should have received a copy of the GNU General Public License    -->
+<!--  along with this program.  If not, see <http://www.gnu.org/licenses/>.-->
+<!--                                                                       -->
+<!--***********************************************************************-->
+<!-- Title:        SystemVerilog Language Keywords File for Kate Editor    -->
+<!-- Description:  This file contains the SV keywords defined in the       -->
+<!--               IEEE1800-2009 Draft Standard in the format expected by  -->
+<!--               the Kate Editor.                                        -->
+<!--                                                                       -->
+<!-- Original Author: Sean O'Boyle                                         -->
+<!-- Contact:         seanoboyle@intelligentdv.com                         -->
+<!-- Company:         Intelligent Design Verification                      -->
+<!-- Company URL:     http://intelligentdv.com                             -->
+<!--                                                                       -->
+<!-- Download the most recent version here:                                -->
+<!--                  http://intelligentdv.com/downloads                   -->
+<!--                                                                       -->
+<!-- File Bugs Here:  http://bugs.intelligentdv.com                        -->
+<!--        Project:  SyntaxFiles                                          -->
+<!--                                                                       -->
+<!-- File: systemverilog.xml                                               -->
+<!-- $LastChangedBy: seanoboyle $                                          -->
+<!-- $LastChangedDate: 2009-06-24 20:41:39 -0700 (Wed, 24 Jun 2009) $      -->
+<!-- $LastChangedRevision: 10 $                                             -->
+<!--                                                                       -->
+<!--***********************************************************************-->
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="SystemVerilog" version="11" kateversion="5.0" section="Hardware" extensions="*.sv;*.svh" mimetype="text/x-systemverilog-src" author="Sean O'Boyle (seanoboyle@intelligentdv.com)" license="GPLv3+">
+  <highlighting>
+    <list name="key_deprecated">
+       <item>defparam</item>
+       <item>deassign</item>
+    </list>
+
+    <list name="key_dpi">
+       <item>DPI</item>
+       <item>DPI-C</item>
+       <item>import</item>
+       <item>export</item>
+       <item>context</item>
+    </list>
+
+    <list name="key_assert">
+       <item>assert</item>
+       <item>assume</item>
+       <item>cover</item>
+       <item>expect</item>
+       <item>disable</item>
+       <item>iff</item>
+       <item>binsof</item>
+       <item>intersect</item>
+       <item>first_match</item>
+       <item>throughout</item>
+       <item>within</item>
+    </list>
+
+    <list name="key_coverage">
+       <item>coverpoint</item>
+       <item>cross</item>
+       <item>wildcard</item>
+       <item>bins</item>
+       <item>ignore_bins</item>
+       <item>illegal_bins</item>
+    </list>
+
+    <list name="key_generator">
+       <item>genvar</item>
+    </list>
+
+    <list name="key_conditional">
+       <item>if</item>
+       <item>else</item>
+       <item>unique</item>
+       <item>priority</item>
+       <item>matches</item>
+    </list>
+
+    <list name="key_case">
+       <item>default</item>
+    </list>
+
+    <list name="key_loop">
+       <item>forever</item>
+       <item>repeat</item>
+       <item>while</item>
+       <item>for</item>
+       <item>do</item>
+       <item>foreach</item>
+       <item>break</item>
+       <item>continue</item>
+       <item>return</item>
+    </list>
+
+    <list name="key_specify">
+       <item>pulsestyle_onevent</item>
+       <item>pulsestyle_ondetect</item>
+       <item>noshowcancelled</item>
+       <item>showcancelled</item>
+       <item>ifnone</item>
+    </list>
+
+    <list name="key_procblock">
+       <item>initial</item>
+       <item>final</item>
+       <item>always</item>
+       <item>always_comb</item>
+       <item>always_ff</item>
+       <item>always_latch</item>
+    </list>
+
+    <list name="key_contassign">
+       <item>alias</item>
+       <item>assign</item>
+       <item>force</item>
+       <item>release</item>
+    </list>
+
+    <list name="key_event">
+       <item>posedge</item>
+       <item>negedge</item>
+       <item>edge</item>
+       <item>wait</item>
+       <item>wait_order</item>
+    </list>
+
+    <list name="key_time">
+       <item>timeunit</item>
+       <item>timeprecision</item>
+       <item>s</item>
+       <item>ms</item>
+       <item>ns</item>
+       <item>us</item>
+       <item>ns</item>
+       <item>ps</item>
+       <item>fs</item>
+       <item>step</item>
+    </list>
+
+    <list name="key_class">
+       <item>new</item>
+       <item>extends</item>
+       <item>this</item>
+       <item>super</item>
+       <item>protected</item>
+       <item>local</item>
+       <item>rand</item>
+       <item>randc</item>
+       <item>bind</item>
+    </list>
+
+    <list name="key_constraint">
+       <item>constraint</item>
+       <item>solve</item>
+       <item>before</item>
+       <item>dist</item>
+       <item>inside</item>
+       <item>with</item>
+    </list>
+
+    <list name="key_methods">
+       <item>virtual</item>
+       <item>pure</item>
+       <item>extern</item>
+       <item>forkjoin</item>
+    </list>
+
+    <list name="key_config">
+       <item>design</item>
+       <item>instance</item>
+       <item>cell</item>
+       <item>liblist</item>
+       <item>use</item>
+    </list>
+
+    <list name="key_library">
+       <item>library</item>
+       <item>incdir</item>
+       <item>include</item>
+    </list>
+
+    <list name="key_interface">
+       <item>modport</item>
+    </list>
+
+    <list name="key_checker">
+        <item>sync_accept_on</item>
+        <item>reject_on</item>
+        <item>accept_on</item>
+        <item>sync_reject_on</item>
+        <item>restrict</item>
+        <item>let</item>
+        <item>until</item>
+        <item>until_with</item>
+        <item>unique0</item>
+        <item>eventually</item>
+        <item>s_until</item>
+        <item>s_always</item>
+        <item>s_eventually</item>
+        <item>s_nexttime</item>
+        <item>s_until_with</item>
+        <item>global</item>
+        <item>untyped</item>
+        <item>implies</item>
+        <item>weak</item>
+        <item>strong</item>
+        <item>nexttime</item>
+    </list>
+
+    <list name="key_types">
+       <!-- parameters -->
+       <item>parameter</item>
+       <item>localparam</item>
+       <item>specparam</item>
+       <!-- port direction -->
+       <item>input</item>
+       <item>output</item>
+       <item>inout</item>
+       <item>ref</item>
+       <!-- integer atom type -->
+       <item>byte</item>
+       <item>shortint</item>
+       <item>int</item>
+       <item>integer</item>
+       <item>longint</item>
+       <item>time</item>
+       <!-- integer vector type -->
+       <item>bit</item>
+       <item>logic</item>
+       <item>reg</item>
+       <!-- net type -->
+       <item>supply0</item>
+       <item>supply1</item>
+       <item>tri</item>
+       <item>triand</item>
+       <item>trior</item>
+       <item>trireg</item>
+       <item>tri0</item>
+       <item>tri1</item>
+       <item>wire</item>
+       <item>uwire</item>
+       <item>wand</item>
+       <item>wor</item>
+       <!-- signing -->
+       <item>signed</item>
+       <item>unsigned</item>
+       <!-- noninteger type -->
+       <item>shortreal</item>
+       <item>real</item>
+       <item>realtime</item>
+       <!-- type reference -->
+       <item>type</item>
+       <item>void</item>
+       <!-- struct union -->
+       <item>struct</item>
+       <item>union</item>
+       <item>tagged</item>
+       <!-- modifier -->
+       <item>const</item>
+       <item>var</item>
+       <item>automatic</item>
+       <item>static</item>
+       <item>packed</item>
+       <item>vectored</item>
+       <item>scalared</item>
+       <!-- other types -->
+       <item>typedef</item>
+       <item>enum</item>
+       <item>string</item>
+       <item>chandle</item>
+       <item>event</item>
+       <!-- misc -->
+       <item>null</item>
+    </list>
+
+    <list name="key_preprocessor">
+        <item>`__FILE__</item>
+        <item>`__LINE__</item>
+        <item>`begin_keywords</item>
+        <item>`celldefine</item>
+        <item>`default_nettype</item>
+        <item>`define</item>
+        <item>`else</item>
+        <item>`elsif</item>
+        <item>`end_keywords</item>
+        <item>`endcelldefine</item>
+        <item>`endif</item>
+        <item>`ifdef</item>
+        <item>`ifndef</item>
+        <item>`include</item>
+        <item>`line</item>
+        <item>`nounconnected_drive</item>
+        <item>`pragma</item>
+        <item>`resetall</item>
+        <item>`timescale</item>
+        <item>`unconnected_drive</item>
+        <item>`undef</item>
+        <item>`undefineall</item>
+    </list>
+
+    <list name="key_system">
+        <item>$finish</item>
+        <item>$stop</item>
+        <item>$exit</item>
+        <item>$realtime</item>
+        <item>$stime</item>
+        <item>$time</item>
+        <item>$printtimescale</item>
+        <item>$timeformat</item>
+        <item>$bitstoreal</item>
+        <item>$realtobits</item>
+        <item>$bitstoshortreal</item>
+        <item>$shortrealtobits</item>
+        <item>$itor</item>
+        <item>$rtoi</item>
+        <item>$signed</item>
+        <item>$unsigned</item>
+        <item>$cast</item>
+        <item>$bits</item>
+        <item>$isunbounded</item>
+        <item>$typename</item>
+        <item>$unpacked_dimensions</item>
+        <item>$dimensions</item>
+        <item>$left</item>
+        <item>$right</item>
+        <item>$low</item>
+        <item>$high</item>
+        <item>$increment</item>
+        <item>$size</item>
+        <item>$clog2</item>
+        <item>$asin</item>
+        <item>$ln</item>
+        <item>$acos</item>
+        <item>$log10</item>
+        <item>$atan</item>
+        <item>$exp</item>
+        <item>$atan2</item>
+        <item>$sqrt</item>
+        <item>$hypot</item>
+        <item>$pow</item>
+        <item>$sinh</item>
+        <item>$floor</item>
+        <item>$cosh</item>
+        <item>$ceil</item>
+        <item>$tanh</item>
+        <item>$sin</item>
+        <item>$asinh</item>
+        <item>$cos</item>
+        <item>$acosh</item>
+        <item>$tan</item>
+        <item>$atanh</item>
+        <item>$fatal</item>
+        <item>$error</item>
+        <item>$warning</item>
+        <item>$info</item>
+        <item>$fatal</item>
+        <item>$error</item>
+        <item>$warning</item>
+        <item>$info</item>
+        <item>$asserton</item>
+        <item>$assertoff</item>
+        <item>$assertkill</item>
+        <item>$assertpasson</item>
+        <item>$assertpassoff</item>
+        <item>$assertfailon</item>
+        <item>$assertfailoff</item>
+        <item>$assertnonvacuouson</item>
+        <item>$assertvacuousoff</item>
+        <item>$onehot</item>
+        <item>$onehot0</item>
+        <item>$isunknown</item>
+        <item>$sampled</item>
+        <item>$rose</item>
+        <item>$fell</item>
+        <item>$stable</item>
+        <item>$changed</item>
+        <item>$past</item>
+        <item>$countones</item>
+        <item>$past_gclk</item>
+        <item>$rose_gclk</item>
+        <item>$fell_gclk</item>
+        <item>$stable_gclk</item>
+        <item>$changed_gclk</item>
+        <item>$future_gclk</item>
+        <item>$rising_gclk</item>
+        <item>$falling_gclk</item>
+        <item>$steady_gclk</item>
+        <item>$changing_gclk</item>
+        <item>$coverage_control</item>
+        <item>$coverage_get_max</item>
+        <item>$coverage_get</item>
+        <item>$coverage_merge</item>
+        <item>$coverage_save</item>
+        <item>$get_coverage</item>
+        <item>$set_coverage_db_name</item>
+        <item>$load_coverage_db</item>
+        <item>$random</item>
+        <item>$dist_chi_square</item>
+        <item>$dist_erlang</item>
+        <item>$dist_exponential</item>
+        <item>$dist_normal</item>
+        <item>$dist_poisson</item>
+        <item>$dist_t</item>
+        <item>$dist_uniform</item>
+        <item>$q_initialize</item>
+        <item>$q_add</item>
+        <item>$q_remove</item>
+        <item>$q_full</item>
+        <item>$q_exam</item>
+        <item>$async$and$array</item>
+        <item>$async$and$plane</item>
+        <item>$async$nand$array</item>
+        <item>$async$nand$plane</item>
+        <item>$async$or$array</item>
+        <item>$async$or$plane</item>
+        <item>$async$nor$array</item>
+        <item>$async$nor$plane</item>
+        <item>$sync$and$array</item>
+        <item>$sync$and$plane</item>
+        <item>$sync$nand$array</item>
+        <item>$sync$nand$plane</item>
+        <item>$sync$or$array</item>
+        <item>$sync$or$plane</item>
+        <item>$sync$nor$array</item>
+        <item>$sync$nor$plane</item>
+        <item>$system</item>
+        <item>$display</item>
+        <item>$write</item>
+        <item>$displayb</item>
+        <item>$writeb</item>
+        <item>$displayh</item>
+        <item>$writeh</item>
+        <item>$displayo</item>
+        <item>$writeo</item>
+        <item>$strobe</item>
+        <item>$monitor</item>
+        <item>$strobeb</item>
+        <item>$monitorb</item>
+        <item>$strobeh</item>
+        <item>$monitorh</item>
+        <item>$strobeo</item>
+        <item>$monitoro</item>
+        <item>$monitoroff</item>
+        <item>$monitoron</item>
+        <item>$fclose</item>
+        <item>$fopen</item>
+        <item>$fdisplay</item>
+        <item>$fwrite</item>
+        <item>$fdisplayb</item>
+        <item>$fwriteb</item>
+        <item>$fdisplayh</item>
+        <item>$fwriteh</item>
+        <item>$fdisplayo</item>
+        <item>$fwriteo</item>
+        <item>$fstrobe</item>
+        <item>$fmonitor</item>
+        <item>$fstrobeb</item>
+        <item>$fmonitorb</item>
+        <item>$fstrobeh</item>
+        <item>$fmonitorh</item>
+        <item>$fstrobeo</item>
+        <item>$fmonitoro</item>
+        <item>$swrite</item>
+        <item>$sformat</item>
+        <item>$swriteb</item>
+        <item>$sformatf</item>
+        <item>$swriteh</item>
+        <item>$fgetc</item>
+        <item>$swriteo</item>
+        <item>$ungetc</item>
+        <item>$fscanf</item>
+        <item>$fgets</item>
+        <item>$fread</item>
+        <item>$sscanf</item>
+        <item>$fseek</item>
+        <item>$rewind</item>
+        <item>$fflush</item>
+        <item>$ftell</item>
+        <item>$feof</item>
+        <item>$ferror</item>
+        <item>$readmemb</item>
+        <item>$readmemh</item>
+        <item>$writememb</item>
+        <item>$writememh</item>
+        <item>$test$plusargs</item>
+        <item>$value$plusargs</item>
+        <item>$dumpfile</item>
+        <item>$dumpvars</item>
+        <item>$dumpoff</item>
+        <item>$dumpon</item>
+        <item>$dumpall</item>
+        <item>$dumplimit</item>
+        <item>$dumpflush</item>
+        <item>$dumpports</item>
+        <item>$dumpportsoff</item>
+        <item>$dumpportson</item>
+        <item>$dumpportsall</item>
+        <item>$dumpportslimit</item>
+        <item>$dumpportsflush</item>
+    </list>
+
+    <list name="key_gates">
+       <item>pullup</item>
+       <item>pulldown</item>
+       <item>cmos</item>
+       <item>rcmos</item>
+       <item>nmos</item>
+       <item>pmos</item>
+       <item>rnmos</item>
+       <item>rpmos</item>
+       <item>and</item>
+       <item>nand</item>
+       <item>or</item>
+       <item>nor</item>
+       <item>xor</item>
+       <item>xnor</item>
+       <item>not</item>
+       <item>buf</item>
+       <item>tran</item>
+       <item>rtran</item>
+       <item>tranif0</item>
+       <item>tranif1</item>
+       <item>rtranif0</item>
+       <item>rtranif1</item>
+       <item>bufif0</item>
+       <item>bufif1</item>
+       <item>notif0</item>
+       <item>notif1</item>
+    </list>
+
+    <list name="key_strength">
+       <!-- drive strength -->
+       <item>strong0</item>
+       <item>strong1</item>
+       <item>pull0</item>
+       <item>pull1</item>
+       <item>weak0</item>
+       <item>weak1</item>
+       <item>highz0</item>
+       <item>highz1</item>
+       <!-- charge strength -->
+       <item>small</item>
+       <item>medium</item>
+       <item>large</item>
+    </list>
+    <list name="key_stdlib">
+       <item>randomize</item>
+       <item>mailbox</item>
+       <item>semaphore</item>
+       <item>put</item>
+       <item>get</item>
+       <item>try_put</item>
+       <item>try_get</item>
+       <item>peek</item>
+       <item>try_peek</item>
+       <item>process</item>
+       <item>state</item>
+       <item>self</item>
+       <item>status</item>
+       <item>kill</item>
+       <item>await</item>
+       <item>suspend</item>
+       <item>resume</item>
+       <!-- Array -->
+       <item>size</item>
+       <item>delete</item>
+       <item>insert</item>
+       <item>num</item>
+       <item>first</item>
+       <item>last</item>
+       <item>next</item>
+       <item>prev</item>
+       <item>pop_front</item>
+       <item>pop_back</item>
+       <item>push_front</item>
+       <item>push_back</item>
+       <item>find</item>
+       <item>find_index</item>
+       <item>find_first</item>
+       <item>find_last</item>
+       <item>find_last_index</item>
+       <item>min</item>
+       <item>max</item>
+       <item>unique_index</item>
+       <item>reverse</item>
+       <item>sort</item>
+       <item>rsort</item>
+       <item>shuffle</item>
+       <item>sum</item>
+       <item>product</item>
+       <!-- List_pkg -->
+       <item>List</item>
+       <item>List_Iterator</item>
+       <item>neq</item>
+       <item>eq</item>
+       <item>data</item>
+       <item>empty</item>
+       <item>front</item>
+       <item>back</item>
+       <item>start</item>
+       <item>finish</item>
+       <item>insert_range</item>
+       <item>erase</item>
+       <item>erase_range</item>
+       <item>set</item>
+       <item>swap</item>
+       <item>clear</item>
+       <item>purge</item>
+    </list>
+
+    <list name="begin">
+       <item>begin</item>
+    </list>
+    <list name="end">
+       <item>end</item>
+    </list>
+    <list name="package">
+       <item>package</item>
+    </list>
+    <list name="endpackage">
+       <item>endpackage</item>
+    </list>
+    <list name="macromodule">
+       <item>macromodule</item>
+    </list>
+    <list name="module">
+       <item>module</item>
+    </list>
+    <list name="endmodule">
+       <item>endmodule</item>
+    </list>
+    <list name="generate">
+       <item>generate</item>
+    </list>
+    <list name="endgenerate">
+       <item>endgenerate</item>
+    </list>
+    <list name="program">
+       <item>program</item>
+    </list>
+    <list name="endprogram">
+       <item>endprogram</item>
+    </list>
+    <list name="class">
+       <item>class</item>
+    </list>
+    <list name="endclass">
+       <item>endclass</item>
+    </list>
+    <list name="function">
+       <item>function</item>
+    </list>
+    <list name="endfunction">
+       <item>endfunction</item>
+    </list>
+    <list name="case">
+       <item>case</item>
+    </list>
+    <list name="casex">
+       <item>casex</item>
+    </list>
+    <list name="casez">
+       <item>casez</item>
+    </list>
+    <list name="randcase">
+       <item>randcase</item>
+    </list>
+    <list name="endcase">
+       <item>endcase</item>
+    </list>
+    <list name="interface">
+       <item>interface</item>
+    </list>
+    <list name="endinterface">
+       <item>endinterface</item>
+    </list>
+    <list name="clocking">
+       <item>clocking</item>
+    </list>
+    <list name="endclocking">
+       <item>endclocking</item>
+    </list>
+    <list name="task">
+       <item>task</item>
+    </list>
+    <list name="endtask">
+       <item>endtask</item>
+    </list>
+    <list name="primitive">
+       <item>primitive</item>
+    </list>
+    <list name="endprimitive">
+       <item>endprimitive</item>
+    </list>
+    <list name="fork">
+       <item>fork</item>
+    </list>
+    <list name="join">
+       <item>join</item>
+    </list>
+    <list name="join_any">
+       <item>join_any</item>
+    </list>
+    <list name="join_none">
+       <item>join_none</item>
+    </list>
+    <list name="covergroup">
+       <item>covergroup</item>
+    </list>
+    <list name="endgroup">
+       <item>endgroup</item>
+    </list>
+    <list name="checker">
+       <item>checker</item>
+    </list>
+    <list name="endchecker">
+       <item>endchecker</item>
+    </list>
+    <list name="property">
+       <item>property</item>
+    </list>
+    <list name="endproperty">
+       <item>endproperty</item>
+    </list>
+    <list name="randsequence">
+       <item>randsequence</item>
+    </list>
+    <list name="sequence">
+       <item>sequence</item>
+    </list>
+    <list name="endsequence">
+       <item>endsequence</item>
+    </list>
+    <list name="specify">
+       <item>specify</item>
+    </list>
+    <list name="endspecify">
+       <item>endspecify</item>
+    </list>
+    <list name="config">
+       <item>config</item>
+    </list>
+    <list name="endconfig">
+       <item>endconfig</item>
+    </list>
+    <list name="table">
+       <item>table</item>
+    </list>
+    <list name="endtable">
+       <item>endtable</item>
+    </list>
+    <list name="extern">
+       <item>extern</item>
+    </list>
+    <list name="pure">
+       <item>pure</item>
+    </list>
+    <list name="typedef">
+       <item>typedef</item>
+    </list>
+    <list name="import">
+       <item>import</item>
+    </list>
+
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
+        <RegExpr attribute="Block Keyword" context="Block Name" String="begin\ *:" beginRegion="beginEnd"/>
+        <keyword attribute="Method Keyword" context="Extern Context" String="extern"/>
+        <keyword attribute="Method Keyword" context="Extern Context" String="pure"/>
+        <keyword attribute="Method Keyword" context="Extern Context" String="import"/>
+        <keyword attribute="Type Keyword" context="Typedef Context" String="typedef"/>
+        <keyword attribute="Block Keyword" context="#stay" String="begin" beginRegion="beginEnd"/>
+        <keyword attribute="Block Keyword" context="#stay" String="end" endRegion="beginEnd"/>
+        <keyword attribute="Block Keyword" context="#stay" String="package" beginRegion="packageEndpackage"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endpackage" endRegion="packageEndpackage"/>
+        <keyword attribute="Block Keyword" context="#stay" String="macromodule" beginRegion="moduleEndmodule"/>
+        <keyword attribute="Block Keyword" context="#stay" String="module" beginRegion="moduleEndmodule"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endmodule" endRegion="moduleEndmodule"/>
+        <keyword attribute="Block Keyword" context="#stay" String="generate" beginRegion="generateEndgenerate"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endgenerate" endRegion="generateEndgenerate"/>
+        <keyword attribute="Block Keyword" context="#stay" String="program" beginRegion="programEndprogram"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endprogram" endRegion="programEndprogram"/>
+        <keyword attribute="Block Keyword" context="#stay" String="class" beginRegion="classEndclass"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endclass" endRegion="classEndclass"/>
+        <keyword attribute="Block Keyword" context="#stay" String="function" beginRegion="functionEndfunction"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endfunction" endRegion="functionEndfunction"/>
+        <keyword attribute="Block Keyword" context="#stay" String="case" beginRegion="caseEndcase"/>
+        <keyword attribute="Block Keyword" context="#stay" String="casex" beginRegion="caseEndcase"/>
+        <keyword attribute="Block Keyword" context="#stay" String="casez" beginRegion="caseEndcase"/>
+        <keyword attribute="Block Keyword" context="#stay" String="randcase" beginRegion="caseEndcase"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endcase" endRegion="caseEndcase"/>
+        <keyword attribute="Block Keyword" context="#stay" String="interface" beginRegion="interfaceEndinterface"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endinterface" endRegion="interfaceEndinterface"/>
+        <keyword attribute="Block Keyword" context="#stay" String="clocking" beginRegion="clockingEndclocking"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endclocking" endRegion="clockingEndclocking"/>
+        <keyword attribute="Block Keyword" context="#stay" String="task" beginRegion="taskEndtask"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endtask" endRegion="taskEndtask"/>
+        <keyword attribute="Block Keyword" context="#stay" String="primitive" beginRegion="primitiveEndprimitive"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endprimitive" endRegion="primitiveEndprimitive"/>
+        <keyword attribute="Block Keyword" context="#stay" String="fork" beginRegion="forkJoin"/>
+        <keyword attribute="Block Keyword" context="#stay" String="join" endRegion="forkJoin"/>
+        <keyword attribute="Block Keyword" context="#stay" String="join_any" endRegion="forkJoin"/>
+        <keyword attribute="Block Keyword" context="#stay" String="join_none" endRegion="forkJoin"/>
+        <keyword attribute="Block Keyword" context="#stay" String="covergroup" beginRegion="covergroupEndgroup"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endgroup" endRegion="covergroupEndgroup"/>
+        <keyword attribute="Block Keyword" context="#stay" String="checker" beginRegion="checkerEndchecker"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endchecker" endRegion="checkerEndchecker"/>
+        <keyword attribute="Block Keyword" context="#stay" String="property" beginRegion="propertyEndproperty"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endproperty" endRegion="propertyEndproperty"/>
+        <keyword attribute="Block Keyword" context="#stay" String="randsequence" beginRegion="sequenceEndsequence"/>
+        <keyword attribute="Block Keyword" context="#stay" String="sequence" beginRegion="sequenceEndsequence"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endsequence" endRegion="sequenceEndsequence"/>
+        <keyword attribute="Block Keyword" context="#stay" String="specify" beginRegion="specifyEndspecify"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endspecify" endRegion="specifyEndspecify"/>
+        <keyword attribute="Block Keyword" context="#stay" String="config" beginRegion="configEndconfig"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endconfig" endRegion="configEndconfig"/>
+        <keyword attribute="Block Keyword" context="#stay" String="table" beginRegion="tableEndtable"/>
+        <keyword attribute="Block Keyword" context="#stay" String="endtable" endRegion="tableEndtable"/>
+        <keyword attribute="Deprecated Keyword" context="#stay" String="key_deprecated"/>
+        <keyword attribute="DPI Keyword" context="#stay" String="key_dpi"/>
+        <keyword attribute="Assert Keyword" context="#stay" String="key_assert"/>
+        <keyword attribute="Coverage Keyword" context="#stay" String="key_coverage"/>
+        <keyword attribute="Generator Keyword" context="#stay" String="key_generator"/>
+        <keyword attribute="Confitional Keyword" context="#stay" String="key_conditional"/>
+        <keyword attribute="Case Keyword" context="#stay" String="key_case"/>
+        <keyword attribute="Loop Keyword" context="#stay" String="key_loop"/>
+        <keyword attribute="Specify Keyword" context="#stay" String="key_specify"/>
+        <keyword attribute="Process Block Keyword" context="#stay" String="key_procblock"/>
+        <keyword attribute="Continuous Assign Keyword" context="#stay" String="key_contassign"/>
+        <keyword attribute="Event Keyword" context="#stay" String="key_event"/>
+        <keyword attribute="Time Keyword" context="#stay" String="key_time"/>
+        <keyword attribute="Class Keyword" context="#stay" String="key_class"/>
+        <keyword attribute="Constraint Keyword" context="#stay" String="key_constraint"/>
+        <keyword attribute="Method Keyword" context="#stay" String="key_methods"/>
+        <keyword attribute="Config Keyword" context="#stay" String="key_config"/>
+        <keyword attribute="Library Keyword" context="#stay" String="key_library"/>
+        <keyword attribute="Interface Keyword" context="#stay" String="key_interface"/>
+        <keyword attribute="Checker Keyword" context="#stay" String="key_checker"/>
+        <keyword attribute="Data Type Keyword" context="#stay" String="key_types"/>
+        <keyword attribute="Preprocessor Keyword" context="#stay" String="key_preprocessor"/>
+        <keyword attribute="System Task Keyword" context="#stay" String="key_system"/>
+        <keyword attribute="Drive/Charge Strength Keyword" context="#stay" String="key_strength"/>
+        <keyword attribute="Gate Instantiation Keyword" context="#stay" String="key_gates"/>
+        <keyword attribute="Standard Library" context="#stay" String="key_stdlib"/>
+
+        <RegExpr attribute="Decimal" context="#stay" String="[\d_]*'d[\d_]+"/>
+        <RegExpr attribute="Octal" context="#stay" String="[\d_]*'o[0-7xXzZ_]+"/>
+        <RegExpr attribute="Hex" context="#stay" String="[\d_]*'h[\da-fA-FxXzZ_]+"/>
+        <RegExpr attribute="Binary" context="#stay" String="[\d_]*'b[01_zZxX]+"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Integer" context="#stay"/>
+
+        <RegExpr attribute="Port Connection" context="#stay" String="[^\w$]\.[a-zA-Z]+[\w$]*"/>
+
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="FindComments" />
+        <AnyChar attribute="Symbol" context="#stay" String="!%&amp;()+,-&lt;=+/:;&gt;?[]^{|}~@"/>
+
+        <DetectChar attribute="Preprocessor" context="Preprocessor" char="`" column="0"/>
+        <RegExpr attribute="Preprocessor" context="#stay" String="\`[a-zA-Z_]+\w*" />
+        <RegExpr attribute="PLI Task" context="#stay" String="\$[a-zA-Z_]+\w*"/>
+        <RegExpr attribute="Delay" context="#stay" String="#[\d_]+"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Extern Context">
+         <keyword attribute="Method Keyword" context="#stay" String="key_methods"/>
+         <keyword attribute="DPI Keyword" context="#stay" String="key_dpi"/>
+         <keyword attribute="Class Keyword" context="#stay" String="key_class"/>
+	      <keyword attribute="Constraint Keyword" context="#stay" String="key_constraint"/>
+         <keyword attribute="Block Keyword" context="#pop" String="function"/>
+         <keyword attribute="Block Keyword" context="#pop" String="task"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Typedef Context">
+         <keyword attribute="Block Keyword" context="#pop" String="class"/>
+         <keyword attribute="Type Keyword" context="#pop" String="key_types"/>
+         <keyword attribute="Interface Keyword" context="#pop" String="key_interface"/>
+         <keyword attribute="Checker Keyword" context="#pop" String="key_checker"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue attribute="String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+      </context>
+
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <LineContinue attribute="Comment" context="#stay"/>
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Comments" />
+        <DetectIdentifier />
+      </context>
+     
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="FindComments" />
+      </context>
+
+      <context attribute="Block Name" lineEndContext="#pop" name="Block Name">
+          <RegExpr attribute="Data Type Keyword" context="#pop" String="[^ ]+"/>
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Block Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="DPI Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Assert Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Coverage Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Generator Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Confitional Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Case Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Loop Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Specify Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Process Block Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Continuous Assign Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Event Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Time Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Class Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Constraint Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Method Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Config Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Library Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Interface Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Checker Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Type Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Preprocessor Keyword" defStyleNum="dsOthers"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="System Task Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Data Type Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Drive/Charge Strength Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Gate Instantiation Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Decimal" defStyleNum="dsBaseN"/>
+      <itemData name="Octal" defStyleNum="dsBaseN"/>
+      <itemData name="Hex" defStyleNum="dsBaseN"/>
+      <itemData name="Binary" defStyleNum="dsBaseN"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="String Char" defStyleNum="dsChar"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Deprecated Keyword" defStyleNum="dsError"/>
+      <itemData name="Symbol" defStyleNum="dsNormal"/>
+      <itemData name="Prep. Lib" defStyleNum="dsFloat"/>
+      <itemData name="PLI Task" defStyleNum="dsDataType"/>
+      <itemData name="Integer" defStyleNum="dsDecVal"/>
+      <itemData name="Delay" defStyleNum="dsBaseN"/>
+      <itemData name="Block Name" defStyleNum="dsDataType"/>
+      <itemData name="Port Connection" defStyleNum="dsDataType"/>
+      <itemData name="Standard Library" defStyleNum="dsOthers"/>
+      </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" position="afterwhitespace" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
+    </comments>
+    <keywords casesensitive="1"/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/zsh.xml b/xml/zsh.xml
--- a/xml/zsh.xml
+++ b/xml/zsh.xml
@@ -57,7 +57,7 @@
         <!ENTITY int "(?:[0-9]++[_0-9]*+)">
         <!ENTITY exp "(?:[eE][-+]?&int;)">
 ]>
-<language name="Zsh" version="23" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+<language name="Zsh" version="25" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
 
   <highlighting>
     <list name="keywords">
@@ -249,6 +249,8 @@
         <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/>
 
         <LineContinue attribute="Escape" context="#stay"/>
+
+        <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd">
         <RegExpr context="#pop!Command" String="&nogroupend;" lookAhead="1"/>
@@ -1515,10 +1517,10 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">
-        <RegExpr attribute="Expression" context="#pop" String="-[abcdefghknoprstuvwxzLOGNS](?=[ &tab;])"/>
+        <RegExpr attribute="Expression" context="#pop" String="-[abcdefghknoprstuvwxzLOGNS](?=[ &tab;]|$)"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue">
-        <RegExpr attribute="Expression" context="#pop" String="(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=[ &tab;])"/>
+        <RegExpr attribute="Expression" context="#pop" String="(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=[ &tab;]|$)"/>
       </context>
 
 
@@ -1529,20 +1531,26 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam1"/>
         <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1">
         <RegExpr attribute="Expression" context="#pop" String="!(?=$|[ &tab;(])"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="#pop!ExprDblBracketParam1_2">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1_2" fallthroughContext="ExprDblBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>
-        <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>
+        <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>
         <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
         <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValue">
+        <IncludeRules context="TestMaybeUnary"/>
+      </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop">
         <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/>
         <DetectChar attribute="Operator" context="#pop" char=")"/>
@@ -1561,7 +1569,10 @@
         <DetectChar context="#pop" char="&gt;" lookAhead="1"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
         <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>
         <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
@@ -1569,14 +1580,17 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValue">
         <IncludeRules context="TestMaybeBinary"/>
-        <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~(?=[ &tab;(])"/>
+        <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~(?=[ &tab;(]|$)"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="ExprDblBracketFinal" name="ExprDblBracketParam3" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
       </context>
