summaryrefslogtreecommitdiffstats
path: root/syntax/hss.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/hss.vim')
-rw-r--r--syntax/hss.vim115
1 files changed, 115 insertions, 0 deletions
diff --git a/syntax/hss.vim b/syntax/hss.vim
new file mode 100644
index 00000000..1d04f48f
--- /dev/null
+++ b/syntax/hss.vim
@@ -0,0 +1,115 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'haxe', 'syntax/hss.vim')
+ finish
+endif
+
+" Vim syntax file
+" Language: hss (Haxe css)
+" Author: Justin Donaldson (jdonaldson@gmail.com)
+" Based heavily on work by Daniel Hofstetter (daniel.hofstetter@42dh.com)
+
+if !exists("main_syntax")
+ if version < 600
+ syntax clear
+ elseif exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'hss'
+endif
+
+runtime! syntax/css.vim
+runtime! syntax/css/*.vim
+
+syn case ignore
+
+syn region hssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssUrl,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,hssDefinition,hssComment,hssIdChar,hssClassChar,hssAmpersand,hssVariable,hssInclude,hssExtend,hssDebug,hssWarn,@hssControl,hssInterpolation,hssNestedSelector,hssReturn
+
+syn region hssInterpolation start="#{" end="}" contains=hssVariable
+
+syn match hssVariable "$[[:alnum:]_-]\+" nextgroup=hssVariableAssignment
+syn match hssVariableAssignment ":" contained nextgroup=hssVariableValue
+syn match hssVariableValue ".*;"me=e-1 contained contains=hssVariable,hssOperator,hssDefault "me=e-1 means that the last char of the pattern is not highlighted
+" syn match hssMixin "^@mixin" nextgroup=hssMixinName
+syn match hssMixinName " [[:alnum:]_-]\+" contained nextgroup=hssDefinition
+syn match hssFunction "^@function" nextgroup=hssFunctionName
+syn match hssFunctionName " [[:alnum:]_-]\+" contained nextgroup=hssDefinition
+" syn match hssReturn "@return" contained
+" syn match hssInclude "@include" nextgroup=hssMixinName
+" syn match hssExtend "@extend .*[;}]"me=e-1 contains=cssTagName,hssIdChar,hssClassChar
+syn keyword hssTodo TODO FIXME NOTE OPTIMIZE XXX contained containedIn=hssComment,cssComment
+
+syn match hssColor "#[0-9A-Fa-f]\{3\}\>" contained
+syn match hssColor "#[0-9A-Fa-f]\{6\}\>" contained
+
+syn match hssIdChar "#[[:alnum:]_-]\@=" nextgroup=hssId contains=hssColor
+syn match hssId "[[:alnum:]_-]\+" contained
+syn match hssClassChar "\.[[:alnum:]_-]\@=" nextgroup=hssClass
+syn match hssClass "[[:alnum:]_-]\+" contained
+syn match hssAmpersand "&" nextgroup=cssPseudoClass
+
+syn match hssOperator "+" contained
+syn match hssOperator "-" contained
+syn match hssOperator "/" contained
+syn match hssOperator "*" contained
+
+syn match hssNestedSelector "[^/]* {"me=e-1 contained contains=cssTagName,cssAttributeSelector,hssIdChar,hssClassChar,hssAmpersand,hssVariable,hssMixin,hssFunction,@hssControl,hssInterpolation,hssNestedProperty
+syn match hssNestedProperty "[[:alnum:]]\+:"me=e-1 contained
+
+" syn match hssDebug "@debug"
+" syn match hssWarn "@warn"
+syn match hssDefault "!default" contained
+
+" syn match hssIf "@if"
+" syn match hssElse "@else"
+" syn match hssElseIf "@else if"
+" syn match hssWhile "@while"
+" syn match hssFor "@for" nextgroup=hssVariable
+" syn match hssFrom " from "
+" syn match hssTo " to "
+" syn match hssThrough " through "
+" syn match hssEach "@each" nextgroup=hssVariable
+" syn match hssIn " in "
+" syn cluster hssControl contains=hssIf,hssElse,hssElseIf,hssWhile,hssFor,hssFrom,hssTo,hssThrough,hssEach,hssIn
+
+syn match hssComment "//.*$" contains=@Spell
+syn region hssImportStr start="\"" end="\""
+syn region hssImport start="@import" end=";" contains=hssImportStr,hssComment,cssComment,cssUnicodeEscape,cssMediaType
+
+hi def link hssVariable Identifier
+hi def link hssVariableValue Constant
+hi def link hssMixin PreProc
+hi def link hssMixinName Function
+hi def link hssFunction PreProc
+hi def link hssFunctionName Function
+hi def link hssReturn Statement
+hi def link hssInclude PreProc
+hi def link hssExtend PreProc
+hi def link hssComment Comment
+hi def link hssColor Constant
+hi def link hssIdChar Special
+hi def link hssClassChar Special
+hi def link hssId Identifier
+hi def link hssClass Identifier
+hi def link hssAmpersand Character
+hi def link hssNestedProperty Type
+hi def link hssDebug Debug
+hi def link hssWarn Debug
+hi def link hssDefault Special
+hi def link hssIf Conditional
+hi def link hssElse Conditional
+hi def link hssElseIf Conditional
+hi def link hssWhile Repeat
+hi def link hssFor Repeat
+hi def link hssFrom Repeat
+hi def link hssTo Repeat
+hi def link hssThrough Repeat
+hi def link hssEach Repeat
+hi def link hssIn Repeat
+hi def link hssInterpolation Delimiter
+hi def link hssImport Include
+hi def link hssImportStr Include
+hi def link hssTodo Todo
+
+let b:current_syntax = "hss"
+if main_syntax == 'hss'
+ unlet main_syntax
+endif