blob: c44f0775f23c4fe6fed32a5f65f367ed1b1871c7 [file] [log] [blame]
Bram Moolenaar8feef4f2015-01-07 16:57:10 +01001" Vim syntax file
2" Language: less
3" Maintainer: Alessandro Vioni <jenoma@gmail.com>
4" URL: https://github.com/genoma/vim-less
Bram Moolenaar4f4d51a2020-10-11 13:57:40 +02005" Last Change: 2020 Sep 29
Bram Moolenaar8feef4f2015-01-07 16:57:10 +01006
7if exists("b:current_syntax")
8 finish
9endif
10
11runtime! syntax/css.vim
Bram Moolenaar8feef4f2015-01-07 16:57:10 +010012
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: