if has_key(g:polyglot_is_disabled, 'stylus') finish endif " Vim syntax file " Language: Stylus " Author: Ilia Loginov " Created: Jan 5, 2018 if !exists("main_syntax") if exists("b:current_syntax") finish endif let main_syntax = 'stylus' endif syntax case ignore " First of all define indented and not indented lines syntax match stylusNewLine "^\S\@=" \ nextgroup=stylusComment,stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusVariable,stylusExplicitVariable,stylusInterpolationSelectors,stylusFunctionName,stylusConditional,stylusOperatorReturn,stylusAtRuleMedia,stylusAtRuleKeyframes,stylusAtRuleNamespace,stylusAtRuleSupports,stylusAtRuleDocument,stylusAtRulePage,stylusAtRuleViewport syntax match stylusNewLineIndented "^\s\+" \ nextgroup=stylusComment,stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusProperty,stylusVariable,stylusExplicitVariable,stylusInterpolation,stylusFunctionName,stylusUnitInt,stylusParenthesised,stylusOperatorReturn,stylusConditional,stylusAtRuleMedia,stylusAtRuleKeyframes,stylusAtRuleKeyframesOffset,stylusAtRuleNamespace,stylusAtRuleSupports,stylusAtRuleDocument,stylusAtRulePageMarginBoxTypes,stylusAtRuleViewport,stylusAtRuleExtends " =============================================== " ENCLOSURES " =============================================== syntax match stylusEnclosure "\(\[\|\]\|{\|}\|(\|)\)" \ contained highlight def link stylusEnclosure SpecialChar " =============================================== " VARIABLES " =============================================== syntax match stylusVariable "\<\(\w\|-\|\$\)*\>" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusOperatorAssignment,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusSubscript,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorVarDefinition,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional,stylusHashDotGetter \ skipwhite syntax match stylusExplicitVariable "\$\(\w\|-\|\$\)*\>" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusOperatorAssignment,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusSubscript,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorVarDefinition,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional,stylusHashDotGetter,stylusOptional \ skipwhite syntax match stylusExplicitVariable "\" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusSubscript,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorVarDefinition,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional,stylusHashDotGetter \ skipwhite highlight def link stylusExplicitVariable Identifier " =============================================== " OPERATORS " =============================================== " Unary syntax match stylusOperatorUnary "\([-+\!\~]\+\|\\)" \ contained \ nextgroup=stylusVariable,stylusExplicitVariable,stylusUnitInt,stylusUnitFloat,stylusParenthesised,stylusPropertyLookup,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusOperatorUnary Operator " Additive syntax match stylusOperatorAdditive "[-+]" \ contained \ nextgroup=stylusVariable,stylusExplicitVariable,stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusParenthesised,stylusPropertyLookup,stylusColor,stylusFunctionName \ skipwhite highlight def link stylusOperatorAdditive Operator " Multiplicative syntax match stylusOperatorMultiplicative "\([/\%]\|\*\{1,2}\)" \ contained \ nextgroup=stylusVariable,stylusExplicitVariable,stylusUnitInt,stylusUnitFloat,stylusParenthesised,stylusPropertyLookup,stylusFunctionName \ skipwhite highlight def link stylusOperatorMultiplicative Operator " Ternary syntax match stylusOperatorTernary "[:?]" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusOperatorTernary Operator " Assignment syntax match stylusOperatorAssignment "[/\*+-:?]\==" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName,stylusHash,stylusAtRuleBlock \ skipwhite highlight def link stylusOperatorAssignment Operator " Relational syntax match stylusOperatorRelational "\(=\{2}\|\\(\s\\)\=\|\!=\|\\|>=\|<=\|>\|<\)" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusVariable,stylusExplicitVariable,stylusParenthesised,stylusPropertyLookup,stylusColor,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusOperatorRelational Operator " Logical syntax match stylusOperatorLogical "\(&&\|||\|\\|\\)" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusOperatorLogical Operator " Existence syntax match stylusOperatorExistence "\" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusOperatorExistence Operator " Instance syntax match stylusOperatorInstance "\" \ contained \ skipwhite highlight def link stylusOperatorInstance Operator " Variable definition syntax match stylusOperatorVarDefinition "\" \ contained \ nextgroup=stylusOperatorLogical,stylusOperatorTernary,stylusFunctionName \ skipwhite highlight def link stylusOperatorVarDefinition Operator " Return syntax match stylusOperatorReturn "\" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusOperatorReturn Operator " Comma syntax match stylusComma /,\(\s\=\(\a\w\{-}:\|\('\|"\).\{-}\('\|"\):\)\)\@!/ \ containedin=ALLBUT,stylusString,stylusComment,stylusHash,stylusAtRuleMediaComma \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite " Range syntax match stylusOperatorRange "\.\.\.\=" \ contained \ nextgroup=stylusUnitInt,stylusVariable,stylusExplicitVariable,stylusFunctionName highlight def link stylusOperatorRange Operator " =============================================== " CONDITIONALS " =============================================== syntax match stylusConditional "\<\(if\|else\|unless\|for\)\>" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName,stylusConditional \ skipwhite highlight def link stylusConditional Conditional " =============================================== " SPRINTF " =============================================== syntax match stylusSprintfPlaceholder "%s" \ contained highlight def link stylusSprintfPlaceholder Operator syntax match stylusSprintfDefinition "%" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite highlight def link stylusSprintfDefinition Operator " =============================================== " SUBSCRIPT " =============================================== syntax region stylusSubscript matchgroup=stylusEnclosure start="\[" end="\]" \ contained \ contains=stylusExplicitVariable,stylusVariable,stylusUnitInt,stylusParenthesised,stylusPropertyLookup,stylusFunctionName \ keepend \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional,stylusOperatorAssignment,stylusHashDotGetter \ oneline \ skipwhite " =============================================== " UNITS " =============================================== syntax match stylusUnitInt "[-+]\=\d\+%\=" \ contained \ nextgroup=stylusOperatorRange,stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite syntax match stylusUnitInt "\" \ contained \ nextgroup=stylusOperatorRange,stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite highlight def link stylusUnitInt Number syntax match stylusUnitFloat "[-+]\=\d\=\.\d\+%\=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite highlight def link stylusUnitFloat Number execute 'syntax match stylusUnitName "\(\<\|\d\@<=\)\(' . join(g:css_units, '\|') . '\)\>" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite' highlight def link stylusUnitName Number " Resolve 'in' unit name and operator conflict syntax match stylusOperatorExistence "\s\@<=\" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName \ skipwhite " =============================================== " BOOLEAN " =============================================== syntax match stylusBoolean "\<\(true\|false\|null\)\>" \ contained \ nextgroup=stylusOperatorRelational,stylusOperatorAssignment,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusFunctionName,stylusConditional \ skipwhite highlight def link stylusBoolean Boolean " =============================================== " SELECTORS " =============================================== " HTML or SVG elements execute 'syn match stylusSelectorElement "\<\(' . join(g:html_elements, '\|') . '\)\(\>\|#\@=\)" \ contained \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ oneline \ skipwhite' syn match stylusSelectorElement "\(^\|\s\)\@<=\*\($\|\s\)\@=" \ contained \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ oneline \ skipwhite highlight def link stylusSelectorElement Statement " CSS Class syntax region stylusSelectorClass start="\." skip="\w-\@=" end="\(\w\|-+\)\(\W\|$\)\@=" \ contained \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional,stylusOptional \ oneline \ skipwhite syntax match stylusSelectorClass "\.{\@=" \ contained \ nextgroup=stylusInterpolationSelectors highlight def link stylusSelectorClass Identifier " CSS Id syntax region stylusSelectorId start="#" skip="\w-\@=" end="\(\w\|-+\)\(\W\|$\)\@=" \ contained \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ oneline \ skipwhite syntax match stylusSelectorId "#{\@=" \ contained \ nextgroup=stylusInterpolationSelectors highlight def link stylusSelectorId Identifier " Attribute selectors syntax match stylusSelectorAttributeOperator "\(=\|\~=\||=\|\^=\|\$=\|\*=\)" \ contained highlight def link stylusSelectorAttributeOperator Operator syntax region stylusSelectorAttribute matchgroup=stylusEnclosure start="\[" skip="{.\{-}}" end="\]" \ contained \ contains=stylusSelectorAttributeOperator,stylusInterpolation \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ oneline \ skipwhite highlight def link stylusSelectorAttribute Type " Parent reference syntax match stylusSelectorReference "\(&\|\~/\|\(\.\./\)\+\|/\)" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ skipwhite highlight def link stylusSelectorReference Statement " Partial reference syntax region stylusSelectorPartialReference matchgroup=stylusSelectorReference start="\^\[\@=" skip="{.\{-}}" matchgroup=NONE end="\]" \ contained \ contains=stylusEnclosure,stylusUnitInt,stylusInterpolation \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ oneline \ skipwhite syntax region stylusSelectorClass start="\(&\|\~/\|\(\.\./\)\+\|/\)" skip="\w[-()]\@=" end="\(\w\|(\|)\)\(\W\|$\)\@=" \ contained \ contains=stylusSelectorReference \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusOptional \ oneline \ skipwhite " CSS pseudo classes and elements execute 'syntax match stylusSelectorPseudo ":\(' . join(g:css_pseudo, '\|') . '\)-\@!" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusSelectorPseudo,stylusOptional \ skipwhite' syntax match stylusSelectorPseudo ":\(\(first\|last\|only\)-\(child\|of-type\)\)" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusSelectorPseudo,stylusOptional \ skipwhite syntax match stylusSelectorPseudo ":not(.\{-})" \ contained \ contains=stylusSelectorElement,stylusEnclosure,stylusInterpolationSelectors \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusSelectorPseudo,stylusOptional \ skipwhite syntax match stylusSelectorPseudo ":lang(.\{-})" \ contained \ contains=stylusEnclosure,stylusInterpolationSelectors \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusSelectorPseudo,stylusOptional \ skipwhite syntax match stylusSelectorPseudo ":\(nth-last-\|nth-\)\(child\|of-type\)(.\{-})" \ contained \ contains=stylusUnitInt,stylusEnclosure,stylusInterpolationSelectors \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusSelectorPseudo,stylusOptional \ skipwhite syntax match stylusSelectorPseudo /::\=\(first-\(line\|letter\)\|before\|after\|selection\|placeholder\)/ \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusSelectorPseudo,stylusOptional \ skipwhite highlight def link stylusSelectorPseudo Define " CSS Selector operators syntax match stylusSelectorCombinator "[>\~+|,]" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusExplicitVariable \ skipwhite highlight def link stylusSelectorCombinator Operator " =============================================== " PROPERTIES " =============================================== execute 'syntax match stylusProperty "\<\(' . join(g:css_single_props, '\|') . '\)\>-\@!:\=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationProperties,stylusFunctionName \ skipwhite' execute 'syntax match stylusProperty "\<\(' . join(g:css_multi_props, '\|') . '\)\>-\@!:\=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationProperties,stylusFunctionName \ skipwhite' execute 'syntax match stylusProperty "\<\(' . join(g:svg_props, '\|') . '\)\>-\@!:\=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationProperties,stylusFunctionName \ skipwhite' syntax match stylusProperty "\(-webkit-\|-moz-\|-o-\|-ms-\|-khtml-\)\(\w\|-\)*:\=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationProperties,stylusFunctionName \ skipwhite highlight def link stylusProperty Type " =============================================== " PROPERTY LOOKUP " =============================================== execute 'syntax match stylusPropertyLookup "@\(' . join(g:css_props, '\|') . '\)\>-\@!" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite' execute 'syntax match stylusPropertyLookup "@\(' . join(g:svg_props, '\|') . '\)\>-\@!" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite' syntax match stylusPropertyLookup "@\(-webkit-\|-moz-\|-o-\|-ms-\|-khtml-\)\(\w\|-\)*" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite highlight def link stylusPropertyLookup Type " =============================================== " VALUES " =============================================== execute 'syntax match stylusValues "\<\(' . join(g:css_values, '\|') . '\)\>-\@!" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName \ skipwhite' execute 'syntax match stylusValues "\<\(' . join(g:css_animatable_props, '\|') . '\)\>-\@!" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName \ skipwhite' highlight def link stylusValues PreCondit " =============================================== " COLORS " =============================================== " Named execute 'syntax match stylusColor "\<\(' . join(g:css_colors, '\|') . '\)\>-\@!" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusOperatorAdditive,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite' syntax match stylusColor "\" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusOperatorAdditive,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite " Hexadecimal syntax match stylusColor "#\x\{3,6\}\>" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusOperatorAdditive,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite highlight stylusColor term=underline ctermfg=133 guifg=#b169b2 " =============================================== " FONT " =============================================== " Highlight generic font families syntax match stylusFont "\<\(serif\|sans-serif\|monospace\)\>" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite highlight def link stylusFont Directory " =============================================== " Explicitly point out that the word before assignment operator is a variable syntax match stylusVariable "\<\(\w\|-\)*\(\s\=[:?]\==[^=]\)\@=" \ contained \ nextgroup=stylusOperatorAssignment \ skipwhite " =============================================== " =============================================== " IMPORTANT " =============================================== syntax match stylusImportant "!important" \ contained highlight def link stylusImportant Special " =============================================== " INTERPOLATION " =============================================== " Prepend is always a property syntax match stylusProperty "\(\w\|-\)\+{\@=" \ contained \ nextgroup=stylusInterpolationProperties syntax region stylusInterpolation matchgroup=stylusEnclosure start="{" end="}" \ contained \ contains=stylusVariable,stylusExplicitVariable,stylusOperatorUnary,stylusUnitInt,stylusUnitFloat,stylusParenthesised,stylusConditional,stylusFunctionName \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationSelectorsTail,stylusInterpolationPropertiesTail,stylusFunctionName \ oneline \ skipwhite syntax region stylusInterpolationSelectors matchgroup=stylusEnclosure start="{" end="}" \ contained \ contains=stylusVariable,stylusExplicitVariable,stylusOperatorUnary,stylusUnitInt,stylusUnitFloat,stylusParenthesised,stylusConditional,stylusFunctionName \ keepend \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectorsTail \ oneline \ skipwhite syntax region stylusInterpolationProperties matchgroup=stylusEnclosure start="{" end="}" \ contained \ contains=stylusVariable,stylusExplicitVariable,stylusOperatorUnary,stylusUnitInt,stylusUnitFloat,stylusParenthesised,stylusConditional,stylusFunctionName \ keepend \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusProperty,stylusInterpolationPropertiesTail,stylusFunctionName \ oneline \ skipwhite syntax match stylusInterpolationPropertiesTail "}\@<=\(\w\|-\)\+" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusProperty,stylusInterpolationProperties,stylusFunctionName \ skipwhite highlight def link stylusInterpolationPropertiesTail Type " Tail is a selector by default syntax match stylusInterpolationSelectorsTail "}\@<=\(\w\|-\)\+" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors \ skipwhite highlight def link stylusInterpolationSelectorsTail Identifier " Tail is a property if followed by anything syntax match stylusInterpolationPropertiesTail "}\@<=\(\w\|-\)\+:\=\s\S\@=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusProperty,stylusInterpolationProperties,stylusFunctionName \ skipwhite " Tail is a selector if followed by .#[]$~^& syntax match stylusInterpolationSelectorsTail "}\@<=\(\w\|-\)\+:\=\s[\.#\[~^&+|,>]\@=" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors \ skipwhite " Tail is a property if followed by float number syntax match stylusInterpolationPropertiesTail "}\@<=\(\w\|-\)\+:\=\s\(\.\d\)\@=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusProperty,stylusInterpolationProperties,stylusFunctionName \ skipwhite " Tail is a property if followed by hex color syntax match stylusInterpolationPropertiesTail "}\@<=\(\w\|-\)\+:\=\s\(#\x\{3,6}\)\@=" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusProperty,stylusInterpolationProperties,stylusFunctionName \ skipwhite execute 'syntax match stylusInterpolationSelectorsTail "}\@<=\(\w\|-\)\+:\=\s\(' . join(g:html_elements, '\|') . '\)\@=" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors \ skipwhite' " =============================================== " MIXINS & FUNCTIONS " =============================================== syntax match stylusFunctionBlock "+" \ contained highlight def link stylusFunctionBlock Operator syntax match stylusFunctionRest "\w\@<=\.\.\." \ contained highlight def link stylusFunctionRest Operator syntax match stylusFunctionName "\(\<\|+\)\(\w\|\$\)\(-\|\w\|\$\)\{-}(\@=" \ contained \ contains=stylusFunctionBlock \ nextgroup=stylusFunctionProps syntax match stylusFunctionName "@\{-}(\@=" \ contained \ contains=stylusFunctionBlock \ nextgroup=stylusFunctionProps highlight def link stylusFunctionName Function syntax region stylusFunctionProps matchgroup=stylusEnclosure start="\S\@<=(" end=")" \ contained \ contains=stylusOperatorUnary,stylusVariable,stylusExplicitVariable,stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusColor,stylusFunctionName,stylusFunctionRest,stylusValues \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusSubscript,stylusConditional,stylusOperatorRelational \ skipwhite " =============================================== " PARENTHESISED EXPRESSIONS " =============================================== syntax region stylusParenthesised matchgroup=stylusEnclosure start="\W\@<=(" skip=/["'].\{-}["']/ end=")" \ contained \ contains=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ keepend \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusUnitName,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ oneline \ skipwhite " Resolve '%' unit name and operator conflict syntax match stylusUnitName ")\@<=%" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional \ skipwhite " =============================================== " STRINGS " =============================================== syntax region stylusString start=/\('\|"\)/ end=/\('\|"\)/ \ containedin=ALLBUT,stylusComment,stylusHash,stylusHashStringKey \ contains=stylusSprintfPlaceholder \ keepend \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusOperatorAdditive,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorTernary,stylusSprintfDefinition,stylusImportant,stylusFunctionName,stylusConditional \ oneline \ skipwhite highlight def link stylusString String " =============================================== " HASHES " =============================================== syntax match stylusHashKey "\a\w\{-}:" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName,stylusHash,stylusString \ skipwhite highlight def link stylusHashKey NonText syntax region stylusHashStringKey start=/\('\|"\)/ end=/\('\|"\):/ \ contained \ keepend \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusBoolean,stylusFunctionName,stylusHash,stylusString \ oneline \ skipwhite highlight def link stylusHashStringKey String syntax match stylusHashDotGetter "\S\@<=\." \ contained \ nextgroup=stylusHashIdent highlight def link stylusHashDotGetter Operator syntax match stylusHashComma "," \ contained \ nextgroup=stylusHashKey,stylusHashStringKey \ skipwhite syntax match stylusHashIdent "\<\(\w\|-\|\$\)*\>" \ contained \ nextgroup=stylusColor,stylusUnitInt,stylusUnitFloat,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusOperatorAssignment,stylusPropertyLookup,stylusParenthesised,stylusOperatorAdditive,stylusOperatorMultiplicative,stylusSubscript,stylusOperatorRelational,stylusOperatorLogical,stylusOperatorExistence,stylusOperatorInstance,stylusOperatorVarDefinition,stylusOperatorTernary,stylusImportant,stylusFunctionName,stylusConditional,stylusHashDotGetter \ skipwhite highlight def link stylusHashIdent NonText syntax region stylusHash matchgroup=stylusEnclosure start="{" end="}" \ contained \ contains=stylusHashKey,stylusHashStringKey,stylusHash,stylusHashComma \ skipwhite " =============================================== " @ RULES " =============================================== syntax match stylusAtRuleImport "@\(import\|require\)\>" \ containedin=ALLBUT,stylusString,stylusComment \ nextgroup=stylusFunctionName,stylusVariable,stylusExplicitVariable \ skipwhite highlight def link stylusAtRuleImport Macro syntax match stylusAtRuleMedia "@media\>" \ contained \ nextgroup=stylusAtRuleMediaType,stylusAtRuleMediaFeatureExpression \ skipwhite highlight def link stylusAtRuleMedia Macro syntax match stylusAtRuleMediaType "\<\(all\|print\|screen\|speech\)\>" \ contained \ nextgroup=stylusAtRuleMediaType,stylusAtRuleMediaFeatureExpression,stylusAtRuleMediaLogical \ skipwhite highlight def link stylusAtRuleMediaType Macro syntax match stylusAtRuleMediaLogical "\<\(and\|not\|only\)\>" \ contained \ nextgroup=stylusAtRuleMediaType,stylusAtRuleMediaFeatureExpression,stylusAtRuleMediaLogical \ skipwhite highlight def link stylusAtRuleMediaLogical Operator syntax region stylusAtRuleMediaFeatureExpression matchgroup=stylusEnclosure start="(" end=")" \ contained \ contains=stylusAtRuleMediaFeature,stylusInterpolationProperties,stylusInterpolationPropertiesTail \ nextgroup=stylusAtRuleMediaComma,stylusAtRuleMediaLogical \ oneline \ skipwhite execute 'syntax match stylusAtRuleMediaFeature "\(min-\|max-\)\=\(' . join(g:css_media_features, '\|') . '\)\>:" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationProperties,stylusFunctionName \ skipwhite' syntax match stylusAtRuleMediaFeature "\(\w\|-\)\+{\@=" \ contained \ nextgroup=stylusInterpolationProperties syntax match stylusAtRuleMediaFeature "}\@<=:" \ contained \ nextgroup=stylusUnitInt,stylusUnitFloat,stylusColor,stylusValues,stylusFont,stylusVariable,stylusExplicitVariable,stylusPropertyLookup,stylusParenthesised,stylusOperatorUnary,stylusInterpolationProperties,stylusFunctionName \ skipwhite highlight def link stylusAtRuleMediaFeature Type syntax match stylusAtRuleMediaComma "," \ contained \ nextgroup=stylusAtRuleMediaFeatureExpression \ skipwhite syntax match stylusAtRuleFont "@font-face\>" \ containedin=ALLBUT,stylusString,stylusComment highlight def link stylusAtRuleFont Macro syntax match stylusAtRuleKeyframes "@\(-\(o\|webkit\|moz\)-\)\=keyframesi\>" \ contained \ nextgroup=stylusAtRuleKeyframesName,stylusInterpolationSelectors \ skipwhite highlight def link stylusAtRuleKeyframes Macro syntax match stylusAtRuleKeyframesName "\<\(\w\|-\|\$\)*\>" \ contained \ nextgroup=stylusInterpolationSelectors \ skipwhite highlight def link stylusAtRuleKeyframesName Identifier syntax match stylusAtRuleKeyframesOffset "\d\{1,3}%" \ contained syntax match stylusAtRuleKeyframesOffset "\<\(from\|to\)\>" \ contained highlight def link stylusAtRuleKeyframesOffset Macro syntax match stylusAtRuleNamespace "@namespace\>" \ contained \ nextgroup=stylusAtRuleNamespacePrefix,stylusAtRuleNamespaceUrl \ skipwhite highlight def link stylusAtRuleNamespace Macro syntax match stylusAtRuleNamespacePrefix "\<\(\w\|-\|\$\)*\>" \ contained \ nextgroup=stylusAtRuleNamespaceUrl \ skipwhite highlight def link stylusAtRuleNamespacePrefix Macro syntax match stylusAtRuleNamespaceUrl "\" \ contained \ nextgroup=stylusAtRuleSupportsLogic,stylusAtRuleSupportsDeclaration \ skipwhite highlight def link stylusAtRuleSupports Macro syntax region stylusAtRuleSupportsDeclaration matchgroup=stylusEnclosure start="(" end=")" \ contained \ contains=stylusProperty,stylusAtRuleSupportsLogic,stylusAtRuleSupportsDeclaration \ nextgroup=stylusAtRuleSupportsLogic,stylusAtRuleSupportsDeclaration \ oneline \ skipwhite syntax match stylusAtRuleSupportsLogic "\<\(and\|not\|or\)\>" \ contained \ nextgroup=stylusAtRuleSupportsLogic,stylusAtRuleSupportsDeclaration \ skipwhite highlight def link stylusAtRuleSupportsLogic Operator syntax match stylusAtRuleDocument "@document\>" \ contained \ nextgroup=stylusAtRuleDocumentFunc \ skipwhite highlight def link stylusAtRuleDocument Macro syntax match stylusAtRuleDocumentFunc "\<\(url\|url-prefix\|domain\|regexp\)(\@=" \ contained \ nextgroup=stylusAtRuleNamespaceUrlAdress highlight def link stylusAtRuleDocumentFunc Function syntax match stylusAtRulePage "@page\>" \ contained \ nextgroup=stylusAtRulePagePseudo \ skipwhite highlight def link stylusAtRulePage Macro syntax match stylusAtRulePagePseudo ":\(left\|right\|first\|blank\)\>" \ contained highlight def link stylusAtRulePagePseudo Macro syntax match stylusAtRulePageMarginBoxTypes "@\(top-left-corner\|top-left\|top-center\|top-right\|top-right-corner\|bottom-left-corner\|bottom-left\|bottom-center\|bottom-right\|bottom-right-corner\|left-top\|left-middle\|left-bottom\|right-top\|right-middle\|right-bottom\)\>" \ contained highlight def link stylusAtRulePageMarginBoxTypes Macro syntax match stylusAtRuleViewport "@viewport\>" \ contained \ skipwhite highlight def link stylusAtRuleViewport Macro syntax match stylusAtRuleBlock "@block\>" \ contained highlight def link stylusAtRuleBlock Macro syntax match stylusAtRuleExtends "@extends\=\>" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusExplicitVariable \ skipwhite highlight def link stylusAtRuleExtends Macro syntax match stylusOptional "!optional" \ contained \ nextgroup=stylusSelectorClass,stylusSelectorId,stylusSelectorCombinator,stylusSelectorElement,stylusSelectorAttribute,stylusSelectorPseudo,stylusSelectorReference,stylusSelectorPartialReference,stylusInterpolationSelectors,stylusExplicitVariable \ skipwhite highlight def link stylusOptional Special " =============================================== " COMMENTS " =============================================== " Single-line syntax region stylusComment start="//" end="$" \ containedin=ALLBUT,stylusString \ keepend \ oneline " Multi-line syntax region stylusComment start="/\*" end="\*/" \ containedin=ALLBUT,stylusString \ keepend highlight def link stylusComment Comment " =============================================== let b:current_syntax = "stylus"