xref: /vim-8.2.3635/runtime/syntax/less.vim (revision 4f4d51a9)
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