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