1" Vim syntax file 2" Language: less 3" Maintainer: Alessandro Vioni <[email protected]> 4" URL: https://github.com/genoma/vim-less 5" Last Change: 2020 Sep 29 6 7if exists("b:current_syntax") 8 finish 9endif 10 11runtime! syntax/css.vim 12 13syn case ignore 14 15syn cluster lessCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp 16syn cluster lessCssAttributes contains=css.*Attr,lessEndOfLineComment,lessComment,cssValue.*,cssColor,cssURL,lessDefault,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp 17 18syn region lessDefinition matchgroup=cssBraces start="{" end="}" contains=TOP 19 20syn match lessProperty "\%([{};]\s*\|^\)\@<=\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:" contains=css.*Prop skipwhite nextgroup=lessCssAttribute contained containedin=lessDefinition 21syn match lessProperty "^\s*\zs\s\%(\%([[:alnum:]-]\|#{[^{}]*}\)\+\s*:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute 22syn match lessProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=lessCssAttribute 23syn match lessCssAttribute +\%("\%([^"]\|\\"\)*"\|'\%([^']\|\\'\)*'\|#{[^{}]*}\|[^{};]\)*+ contained contains=@lessCssAttributes,lessVariable,lessFunction,lessInterpolation 24syn match lessDefault "!default\>" contained 25 26" less variables and media queries 27syn match lessVariable "@[[:alnum:]_-]\+" nextgroup=lessCssAttribute skipwhite 28syn match lessMedia "@media" nextgroup=lessCssAttribute skipwhite 29 30" Less functions 31syn match lessFunction "\<\%(escape\|e\|unit\)\>(\@=" contained 32syn match lessFunction "\<\%(ceil\|floor\|percentage\|round\|sqrt\|abs\|sin\|asin\|cos\|acos\|tan\|atan\|pi\|pow\|min\|max\)\>(\@=" contained 33syn match lessFunction "\<\%(rgb\|rgba\|argb\|argb\|hsl\|hsla\|hsv\|hsva\)\>(\@=" contained 34syn match lessFunction "\<\%(hue\|saturation\|lightness\|red\|green\|blue\|alpha\|luma\)\>(\@=" contained 35syn match lessFunction "\<\%(saturate\|desaturate\|lighten\|darken\|fadein\|fadeout\|fade\|spin\|mix\|greyscale\|contrast\)\>(\@=" contained 36syn match lessFunction "\<\%(multiply\|screen\|overlay\|softlight\|hardlight\|difference\|exclusion\|average\|negation\)\>(\@=" contained 37 38" Less id class visualization 39syn match lessIdChar "#[[:alnum:]_-]\@=" nextgroup=lessId,lessClassIdCall 40syn match lessId "[[:alnum:]_-]\+" contained 41syn match lessClassIdCall "[[:alnum:]_-]\+()" contained 42 43syn match lessClassChar "\.[[:alnum:]_-]\@=" nextgroup=lessClass,lessClassCall 44syn match lessClass "[[:alnum:]_-]\+" contained 45syn match lessClassCall "[[:alnum:]_-]\+()" contained 46 47syn match lessAmpersand "&" contains=lessIdChar,lessClassChar 48 49syn region lessInclude start="@import" end=";\|$" contains=lessComment,cssURL,cssUnicodeEscape,cssMediaType,cssStringQ,cssStringQQ 50 51syn keyword lessTodo FIXME NOTE TODO OPTIMIZE XXX contained 52syn region lessComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell 53syn region lessCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=lessTodo,@Spell 54syn match lessEndOfLineComment "//.*" contains=lessComment,lessTodo,@Spell 55 56hi def link lessEndOfLineComment lessComment 57hi def link lessCssComment lessComment 58hi def link lessComment Comment 59hi def link lessDefault cssImportant 60hi def link lessVariable Identifier 61hi def link lessFunction PreProc 62hi def link lessTodo Todo 63hi def link lessInclude Include 64hi def link lessIdChar Special 65hi def link lessClassChar Special 66hi def link lessAmpersand Character 67hi def link lessId Identifier 68hi def link lessClass Type 69hi def link lessCssAttribute PreProc 70hi def link lessClassCall Type 71hi def link lessClassIdCall Type 72hi def link lessTagName cssTagName 73hi def link lessDeprecated cssDeprecated 74hi def link lessMedia cssMedia 75 76let b:current_syntax = "less" 77 78" vim:set sw=2: 79