blob: 1a2e7a450f5a68fd72973189fbb5caf59d567c17 [file] [log] [blame]
Bram Moolenaarc236c162008-07-13 17:41:49 +00001" Vim syntax file
2" Language: Sass
3" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
4" Filenames: *.sass
5
6if exists("b:current_syntax")
7 finish
8endif
9
10runtime! syntax/css.vim
11
12syn case ignore
13
14syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp
15syn cluster sassCssAttributes contains=css.*Attr,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
16
17syn match sassProperty "^\s*\zs\s\%([[:alnum:]-]\+:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
18syn match sassCssAttribute ".*$" contained contains=@sassCssAttributes,sassConstant
19syn match sassConstant "![[:alnum:]_-]\+"
20syn match sassConstantAssignment "\%(![[:alnum:]_]\+\s*\)\@<==" nextgroup=sassCssAttribute skipwhite
21syn match sassMixin "^=.*"
22syn match sassMixing "^\s\+\zs+.*"
23
24syn match sassEscape "^\s*\zs\\"
25syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId
26syn match sassId "[[:alnum:]_-]\+" contained
27syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass
28syn match sassClass "[[:alnum:]_-]\+" contained
29syn match sassAmpersand "&"
30
31" TODO: Attribute namespaces
32" TODO: Arithmetic (including strings and concatenation)
33
34syn region sassInclude start="@import" end=";\|$" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
35
36syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained
37syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo
38syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo
39
40hi def link sassCssComment sassComment
41hi def link sassComment Comment
42hi def link sassConstant Identifier
43hi def link sassMixing PreProc
44hi def link sassMixin PreProc
45hi def link sassTodo Todo
46hi def link sassInclude Include
47hi def link sassEscape Special
48hi def link sassIdChar Special
49hi def link sassClassChar Special
50hi def link sassAmpersand Character
51hi def link sassId Identifier
52hi def link sassClass Type
53
54let b:current_syntax = "sass"
55
56" vim:set sw=2: