Skip to content

Instantly share code, notes, and snippets.

@razor-x
Created May 6, 2011 08:16
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save razor-x/958598 to your computer and use it in GitHub Desktop.
Save razor-x/958598 to your computer and use it in GitHub Desktop.
SCSS syntax highlighting for Kate. Based on Kate CSS syntax file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!--
Kate SCSS syntax highlighting definition
Modified the Kate CSS syntax highlighting definition to support SCSS.
This file should be merged with any updates to the normal Kate CCS definition (see note on version numbering in changelog for 1.2.03.0).
The latest version of this file can be found at https://gist.github.com/958598
Changelog:
- Version 1.2.03.1, by Tijn Schuurmans
- Added basic support for "@include mixin();"
- Clean the indentation to use 4 spaces everywhere
- Version 1.2.03.0, by Evan Sosenko
- Added basic SCSS syntax support (e.g. nesting).
- New version numbering: version 1.x.xx.y is for SCSS, where x.xx is forked version of original CSS syntax file, and y is minor revision to SCSS support.
-->
<language name="SCSS" version="2.04" kateversion="2.4" section="Markup" extensions="*.scss" indenter="cstyle"
mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
<highlighting>
<list name="properties">
<!-- CSS2 -->
<item> azimuth </item>
<item> background </item>
<item> background-attachment </item>
<item> background-color </item>
<item> background-image </item>
<item> background-position </item>
<item> background-repeat </item>
<item> border </item>
<item> border-bottom </item>
<item> border-bottom-color </item>
<item> border-bottom-style </item>
<item> border-bottom-width </item>
<item> border-collapse </item>
<item> border-color </item>
<item> border-left </item>
<item> border-left-color </item>
<item> border-left-style </item>
<item> border-left-width </item>
<item> border-right </item>
<item> border-right-color </item>
<item> border-right-style </item>
<item> border-right-width </item>
<item> border-spacing </item>
<item> border-style </item>
<item> border-top </item>
<item> border-top-color </item>
<item> border-top-style </item>
<item> border-top-width </item>
<item> border-width </item>
<item> bottom </item>
<item> caption-side </item>
<item> clear </item>
<item> clip </item>
<item> color </item>
<item> content </item>
<item> counter-increment </item>
<item> counter-reset </item>
<item> cue </item>
<item> cue-after </item>
<item> cue-before </item>
<item> cursor </item>
<item> direction </item>
<item> display </item>
<item> elevation </item>
<item> empty-cells </item>
<item> float </item>
<item> font </item>
<item> font-family </item>
<item> font-size </item>
<item> font-size-adjust </item>
<item> font-stretch </item>
<item> font-style </item>
<item> font-variant </item>
<item> font-weight </item>
<item> height </item>
<item> left </item>
<item> letter-spacing </item>
<item> line-height </item>
<item> list-style </item>
<item> list-style-image </item>
<item> list-style-keyword </item>
<item> list-style-position </item>
<item> list-style-type </item>
<item> margin </item>
<item> margin-bottom </item>
<item> margin-left </item>
<item> margin-right </item>
<item> margin-top </item>
<item> marker-offset </item>
<item> max-height </item>
<item> max-width </item>
<item> min-height </item>
<item> min-width </item>
<item> orphans </item>
<item> outline </item>
<item> outline-color </item>
<item> outline-style </item>
<item> outline-width </item>
<item> overflow </item>
<item> padding </item>
<item> padding-bottom </item>
<item> padding-left </item>
<item> padding-right </item>
<item> padding-top </item>
<item> page </item>
<item> page-break-after </item>
<item> page-break-before </item>
<item> page-break-inside </item>
<item> pause </item>
<item> pause-after </item>
<item> pause-before </item>
<item> pitch </item>
<item> pitch-range </item>
<item> play-during </item>
<item> position </item>
<item> quotes </item>
<item> richness </item>
<item> right </item>
<item> size </item>
<item> speak </item>
<item> speak-header </item>
<item> speak-numeral </item>
<item> speak-punctuation </item>
<item> speech-rate </item>
<item> stress </item>
<item> table-layout </item>
<item> text-align </item>
<item> text-decoration </item>
<item> text-decoration-color </item>
<item> text-indent </item>
<item> text-shadow </item>
<item> text-transform </item>
<item> top </item>
<item> unicode-bidi </item>
<item> vertical-align </item>
<item> visibility </item>
<item> voice-family </item>
<item> volume </item>
<item> white-space </item>
<item> widows </item>
<item> width </item>
<item> word-spacing </item>
<item> z-index </item>
<!-- CSS3 -->
<item> border-bottom-image </item>
<item> border-bottom-left-image </item>
<item> border-bottom-left-radius </item>
<item> border-bottom-right-image </item>
<item> border-bottom-right-radius </item>
<item> border-corner-image </item>
<item> border-image </item>
<item> border-left-image </item>
<item> border-radius </item>
<item> border-right-image </item>
<item> border-top-image </item>
<item> border-top-left-image </item>
<item> border-top-left-radius </item>
<item> border-top-right-image </item>
<item> border-top-right-radius </item>
<item> box-shadow </item>
<item> box-sizing </item>
<item> opacity </item>
<item> outline-offset </item>
<item> overflow-x </item>
<item> overflow-y </item>
<item> text-overflow </item>
<item> text-shadow </item>
<!-- Gecko rendering engine CSS property extensions -->
<item> -moz-border-bottom-colors </item>
<item> -moz-border-left-colors </item>
<item> -moz-border-radius </item>
<item> -moz-border-right-colors </item>
<item> -moz-border-top-colors </item>
<item> -moz-box-flex </item>
<!-- Opera rendering engine CSS property extensions -->
<item> -o-background-size </item>
<item> -o-text-overflow </item>
<!-- konq specific -->
<item> -khtml-background-size </item>
<item> konq_bgpos_x </item>
<item> konq_bgpos_y </item>
<!-- Webkit rendering engine CSS property extensions -->
<item> -webkit-background-size </item>
<!-- font properties in @font-face -->
<item> font-family </item>
<item> font-size </item>
<item> font-stretch </item>
<item> font-style </item>
<item> font-variant </item>
<item> font-weight </item>
<item> unicode-range </item>
<item> units-per-em </item>
<item> src </item>
<item> panose-1 </item>
<item> stemv </item>
<item> stemh </item>
<item> slope </item>
<item> cap-height </item>
<item> x-height </item>
<item> ascent </item>
<item> descent </item>
<item> widths </item>
<item> bbox </item>
<item> definition-src </item>
<item> baseline </item>
<item> centerline </item>
<item> mathline </item>
<item> topline </item>
</list>
<list name="types">
<item> inherit </item>
<item> none </item>
<item> hidden </item>
<item> dotted </item>
<item> dashed </item>
<item> solid </item>
<item> double </item>
<item> groove </item>
<item> ridge </item>
<item> inset </item>
<item> outset </item>
<item> xx-small </item>
<item> x-small </item>
<item> small </item>
<item> medium </item>
<item> large </item>
<item> x-large </item>
<item> xx-large </item>
<item> smaller </item>
<item> larger </item>
<item> italic </item>
<item> oblique </item>
<item> small-caps </item>
<item> normal </item>
<item> bold </item>
<item> bolder </item>
<item> lighter </item>
<item> light </item>
<item> 100 </item>
<item> 200 </item>
<item> 300 </item>
<item> 400 </item>
<item> 500 </item>
<item> 600 </item>
<item> 700 </item>
<item> 800 </item>
<item> 900 </item>
<item> transparent </item>
<item> repeat </item>
<item> repeat-x </item>
<item> repeat-y </item>
<item> no-repeat </item>
<item> baseline </item>
<item> sub </item>
<item> super </item>
<item> top </item>
<item> text-top </item>
<item> middle </item>
<item> bottom </item>
<item> text-bottom </item>
<item> left </item>
<item> right </item>
<item> center </item>
<item> justify </item>
<item> konq-center </item>
<item> disc </item>
<item> circle </item>
<item> square </item>
<item> box </item>
<item> decimal </item>
<item> decimal-leading-zero </item>
<item> lower-roman </item>
<item> upper-roman </item>
<item> lower-greek </item>
<item> lower-alpha </item>
<item> lower-latin </item>
<item> upper-alpha </item>
<item> upper-latin </item>
<item> hebrew </item>
<item> armenian </item>
<item> georgian </item>
<item> cjk-ideographic </item>
<item> hiragana </item>
<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> auto </item>
<item> crosshair </item>
<item> default </item>
<item> pointer </item>
<item> move </item>
<item> e-resize </item>
<item> ne-resize </item>
<item> nw-resize </item>
<item> n-resize </item>
<item> se-resize </item>
<item> sw-resize </item>
<item> s-resize </item>
<item> w-resize </item>
<item> text </item>
<item> wait </item>
<item> help </item>
<item> above </item>
<item> absolute </item>
<item> always </item>
<item> avoid </item>
<item> below </item>
<item> bidi-override </item>
<item> blink </item>
<item> both </item>
<item> capitalize </item>
<item> caption </item>
<item> clip </item>
<item> close-quote </item>
<item> collapse </item>
<item> condensed </item>
<item> crop </item>
<item> cross </item>
<item> ellipsis </item>
<item> ellipsis-word </item>
<item> embed </item>
<item> expanded </item>
<item> extra-condensed </item>
<item> extra-expanded </item>
<item> fixed </item>
<item> hand </item>
<item> hide </item>
<item> higher </item>
<item> icon </item>
<item> inside </item>
<item> invert </item>
<item> landscape </item>
<item> level </item>
<item> line-through </item>
<item> loud </item>
<item> lower </item>
<item> lowercase </item>
<item> ltr </item>
<item> menu </item>
<item> message-box </item>
<item> mix </item>
<item> narrower </item>
<item> no-close-quote </item>
<item> no-open-quote </item>
<item> nowrap </item>
<item> open-quote </item>
<item> outside </item>
<item> overline </item>
<item> portrait </item>
<item> pre </item>
<item> pre-line </item>
<item> pre-wrap </item>
<item> relative </item>
<item> rtl </item>
<item> scroll </item>
<item> semi-condensed </item>
<item> semi-expanded </item>
<item> separate </item>
<item> show </item>
<item> small-caption </item>
<item> static </item>
<item> static-position </item>
<item> status-bar </item>
<item> thick </item>
<item> thin </item>
<item> ultra-condensed </item>
<item> ultra-expanded </item>
<item> underline </item>
<item> uppercase </item>
<item> visible </item>
<item> wider </item>
<item> break </item>
<item> serif </item>
<item> sans-serif </item>
<item> cursive </item>
<item> fantasy </item>
<item> monospace </item>
<item> border-box </item>
<item> content-box </item>
<!-- Gecko rendering engine CSS value extensions -->
<item> -moz-box </item>
</list>
<list name="colors">
<item> aqua </item>
<item> black </item>
<item> blue </item>
<item> cyan </item>
<item> fuchsia </item>
<item> gray </item>
<item> green </item>
<item> lime </item>
<item> maroon </item>
<item> navy </item>
<item> olive </item>
<item> purple </item>
<item> red </item>
<item> silver </item>
<item> teal </item>
<item> white </item>
<item> yellow </item>
<item> ActiveBorder </item>
<item> ActiveCaption </item>
<item> AppWorkspace </item>
<item> Background </item>
<item> ButtonFace </item>
<item> ButtonHighlight </item>
<item> ButtonShadow </item>
<item> ButtonText </item>
<item> CaptionText </item>
<item> GrayText </item>
<item> Highlight </item>
<item> HighlightText </item>
<item> InactiveBorder </item>
<item> InactiveCaption </item>
<item> InactiveCaptionText </item>
<item> InfoBackground </item>
<item> InfoText </item>
<item> Menu </item>
<item> MenuText </item>
<item> Scrollbar </item>
<item> ThreeDDarkShadow </item>
<item> ThreeDFace </item>
<item> ThreeDHighlight </item>
<item> ThreeDLightShadow </item>
<item> ThreeDShadow </item>
<item> Window </item>
<item> WindowFrame </item>
<item> WindowText </item>
</list>
<list name="paren">
<item> url </item>
<item> attr </item>
<item> rect </item>
<item> rgb </item>
<item> rgba </item>
<item> hsl </item>
<item> hsla </item>
<item> counter </item>
<item> counters </item>
<!-- in @font-face -->
<item> local </item>
<item> format </item>
<!-- Trident (a.k.a., MSHTML) rendering engine functional notation extensions -->
<item> expression </item>
</list>
<list name="mediatypes">
<item> all </item>
<item> aural </item>
<item> braille </item>
<item> embossed </item>
<item> handheld </item>
<item> print </item>
<item> projection </item>
<item> screen </item>
<item> tty </item>
<item> tv </item>
</list>
<list name="pseudoclasses">
<item> hover </item>
<item> link </item>
<item> visited </item>
<item> active </item>
<item> focus </item>
<item> first-child </item>
<item> last-child </item>
<item> only-child </item>
<item> first-of-type </item>
<item> last-of-type </item>
<item> only-of-type </item>
<item> first-letter </item>
<item> first-line </item>
<item> before </item>
<item> after </item>
<item> selection </item>
<item> root </item>
<item> empty </item>
<item> target </item>
<item> enabled </item>
<item> disabled </item>
<item> checked </item>
<item> indeterminate </item>
<item> nth-child </item>
<item> nth-last-child </item>
<item> nth-of-type </item>
<item> nth-last-of-type </item>
<item> not </item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Base">
<LineContinue/>
<DetectSpaces/>
<IncludeRules context="FindRuleSets" />
</context>
<!-- to be included -->
<!-- finds rules and detects nesting -->
<context attribute="Normal Text" lineEndContext="#stay" name="FindRuleSets">
<RegExpr attribute="Media" context="Media" String="@media\b" />
<RegExpr attribute="At Rule" context="Import" String="@import\b" />
<RegExpr attribute="At Rule" context="Include" String="@include\b" />
<RegExpr attribute="At Rule" context="#stay" String="@(font-face|charset)\b" />
<RegExpr attribute="Variable" context="#stay" String="\$[^:]*" />
<DetectChar attribute="Property" context="RuleSet" char="{" beginRegion="ruleset" />
<!--parse selectors-->
<DetectChar attribute="Selector Attr" context="SelAttr" char="[" />
<RegExpr attribute="Selector Id" context="#stay" String="#([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
<RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
<RegExpr attribute="Selector Pseudo" context="#stay" String=":lang\([\w_-]+\)" />
<DetectChar attribute="Selector Pseudo" context="SelPseudo" char=":" />
<IncludeRules context="FindStrings" />
<IncludeRules context="FindComments" />
</context>
<!-- finds arguments to properties -->
<context attribute="Normal Text" lineEndContext="#stay" name="FindValues">
<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+(em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz)\b" />
<RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+[%]?" />
<RegExpr attribute="Normal Text" context="#stay" String="[\w\-]+" />
</context>
<!-- finds strings -->
<context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
<DetectChar attribute="String" context="StringDQ" char="&quot;" />
<DetectChar attribute="String" context="StringSQ" char="'" />
</context>
<!-- finds comments -->
<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
<RegExpr attribute="Region Marker" context="#stay" String="/\*BEGIN.*\*/" beginRegion="UserDefined" />
<RegExpr attribute="Region Marker" context="#stay" String="/\*END.*\*/" endRegion="UserDefined" />
<Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
<Detect2Chars attribute="Comment" context="sassComment" char="/" char1="/" beginRegion="sassComment" />
</context>
<!-- other contexts -->
<context attribute="Normal Text" lineEndContext="#stay" name="Media">
<DetectChar attribute="Media" context="Media2" char="{" beginRegion="media" />
<keyword attribute="Media" context="#stay" String="mediatypes" />
<DetectChar attribute="Media" context="#stay" char="," />
<IncludeRules context="FindComments" />
<RegExpr attribute="Error" context="#stay" String="\S+" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Media2">
<DetectChar attribute="Media" context="#pop#pop" char="}" endRegion="media" />
<IncludeRules context="FindRuleSets" />
</context>
<context attribute="Selector Attr" lineEndContext="#stay" name="SelAttr">
<DetectChar attribute="Selector Attr" context="#pop" char="]" />
<IncludeRules context="FindStrings" />
</context>
<context attribute="Selector Pseudo" lineEndContext="#pop" name="SelPseudo" fallthrough="true" fallthroughContext="#pop">
<keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Import">
<DetectChar attribute="At Rule" context="#pop" char=";" />
<keyword attribute="Media" context="#stay" String="mediatypes" />
<IncludeRules context="FindValues" />
<IncludeRules context="FindStrings" />
<IncludeRules context="FindComments" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Include">
<DetectChar attribute="At Rule" context="#pop" char=";" />
<IncludeRules context="FindValues" />
<IncludeRules context="FindStrings" />
<IncludeRules context="FindComments" />
<keyword attribute="Value" context="PropParen" String="paren" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="sassComment">
</context>
<context attribute="Comment" lineEndContext="#stay" name="Comment">
<DetectSpaces/>
<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />
<IncludeRules context="##Alerts" />
<DetectIdentifier/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="RuleSet">
<DetectChar attribute="Property" context="RuleSet" char="{" beginRegion="ruleset" />
<IncludeRules context="FindRuleSets" />
<DetectChar attribute="Property" context="#pop" char="}" endRegion="ruleset" />
<keyword attribute="Property" context="Rule" String="properties" />
<RegExpr attribute="Unknown Property" context="Rule" String="-?[A-Za-z_-]+(?=\s*:)" />
<IncludeRules context="FindComments" />
<!-- <RegExpr attribute="Error" context="#stay" String="\S" /> -->
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Rule">
<DetectChar attribute="Property" context="Rule2" char=":" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="Rule2">
<DetectChar attribute="Property" context="#pop#pop" char=";" />
<DetectChar attribute="Property" context="#pop#pop#pop" char="}" endRegion="ruleset" />
<!-- parse property values -->
<keyword attribute="Value" context="#stay" String="types" />
<keyword attribute="Value" context="#stay" String="colors" />
<RegExpr attribute="Value" context="#stay" String="#([0-9A-Fa-f]{3}){1,4}\b" />
<keyword attribute="Value" context="PropParen" String="paren" />
<RegExpr attribute="Variable" context="#stay" String="\$[^;]*" />
<RegExpr attribute="Important" context="#stay" String="!important\b" />
<IncludeRules context="FindValues" />
<IncludeRules context="FindStrings" />
<IncludeRules context="FindComments" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="PropParen">
<DetectChar attribute="Value" context="PropParen2" char="(" />
<IncludeRules context="FindComments" />
<RegExpr attribute="Error" context="#stay" String="\S" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="PropParen2">
<DetectChar attribute="Value" context="#pop#pop" char=")" />
<IncludeRules context="FindValues" />
<IncludeRules context="FindStrings" />
<IncludeRules context="FindComments" />
</context>
<!-- string contexts -->
<context attribute="String" lineEndContext="#stay" name="StringDQ">
<DetectChar attribute="String" context="#pop" char="&quot;" />
<IncludeRules context="InsideString" />
</context>
<context attribute="String" lineEndContext="#stay" name="StringSQ">
<DetectChar attribute="String" context="#pop" char="'" />
<IncludeRules context="InsideString" />
</context>
<context attribute="String" lineEndContext="#stay" name="InsideString">
<RegExpr attribute="String" context="#stay" String="\\[&quot;']" />
<DetectIdentifier/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Unknown Property" defStyleNum="dsKeyword" italic="1" spellChecking="false"/>
<itemData name="Media" defStyleNum="dsDecVal" bold="1" spellChecking="false"/>
<itemData name="At Rule" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Value" defStyleNum="dsDataType" spellChecking="false"/>
<itemData name="Important" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Selector Attr" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="Selector Id" defStyleNum="dsFloat" bold="1" spellChecking="false"/>
<itemData name="Selector Class" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Selector Pseudo" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment" />
<itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
<itemData name="Alert" defStyleNum="dsAlert" spellChecking="false"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
<itemData name="Variable" defStyleNum="dsNormal" spellChecking="false"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="0" weakDeliminator="-%"/>
<comments>
<comment name="multiLine" start="/*" end="*/" />
</comments>
</general>
</language>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment