blob: 5bee495c04829601ebe7175f19462663ff02e511 [file] [log] [blame]
Bram Moolenaarc236c162008-07-13 17:41:49 +00001" Vim syntax file
2" Language: Sass
Bram Moolenaar7a329912010-05-21 12:05:36 +02003" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
Bram Moolenaarc236c162008-07-13 17:41:49 +00004" Filenames: *.sass
Bram Moolenaar7a329912010-05-21 12:05:36 +02005" Last Change: 2010 May 21
Bram Moolenaarc236c162008-07-13 17:41:49 +00006
7if exists("b:current_syntax")
8 finish
9endif
10
11runtime! syntax/css.vim
12
13syn case ignore
14
15syn cluster sassCssProperties contains=cssFontProp,cssFontDescriptorProp,cssColorProp,cssTextProp,cssBoxProp,cssGeneratedContentProp,cssPagingProp,cssUIProp,cssRenderProp,cssAuralProp,cssTableProp
16syn cluster sassCssAttributes contains=css.*Attr,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssRenderProp
17
18syn match sassProperty "^\s*\zs\s\%([[:alnum:]-]\+:\|:[[:alnum:]-]\+\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassCssAttribute
Bram Moolenaar7a329912010-05-21 12:05:36 +020019syn match sassProperty "^\s*\zs\s\%(:\=[[:alnum:]-]\+\s*=\)"hs=s+1 contains=css.*Prop skipwhite nextgroup=sassScript
Bram Moolenaarc236c162008-07-13 17:41:49 +000020syn match sassCssAttribute ".*$" contained contains=@sassCssAttributes,sassConstant
Bram Moolenaar7a329912010-05-21 12:05:36 +020021syn match sassScript ".*$" contained contains=@sassCssAttributes,sassConstant
Bram Moolenaarc236c162008-07-13 17:41:49 +000022syn match sassConstant "![[:alnum:]_-]\+"
Bram Moolenaar7a329912010-05-21 12:05:36 +020023syn match sassConstantAssignment "\%(![[:alnum:]_]\+\s*\)\@<=\%(||\)\==" nextgroup=sassScript skipwhite
Bram Moolenaarc236c162008-07-13 17:41:49 +000024syn match sassMixin "^=.*"
25syn match sassMixing "^\s\+\zs+.*"
26
27syn match sassEscape "^\s*\zs\\"
28syn match sassIdChar "#[[:alnum:]_-]\@=" nextgroup=sassId
29syn match sassId "[[:alnum:]_-]\+" contained
30syn match sassClassChar "\.[[:alnum:]_-]\@=" nextgroup=sassClass
31syn match sassClass "[[:alnum:]_-]\+" contained
32syn match sassAmpersand "&"
33
34" TODO: Attribute namespaces
35" TODO: Arithmetic (including strings and concatenation)
36
37syn region sassInclude start="@import" end=";\|$" contains=cssComment,cssURL,cssUnicodeEscape,cssMediaType
Bram Moolenaar7a329912010-05-21 12:05:36 +020038syn region sassDebugLine matchgroup=sassDebug start="@debug\>" end="$" contains=@sassCssAttributes,sassConstant
39syn region sassControlLine matchgroup=sassControl start="@\%(if\|else\%(\s\+if\)\=\|while\|for\)\>" end="$" contains=sassFor,@sassCssAttributes,sassConstant
40syn keyword sassFor from to through contained
Bram Moolenaarc236c162008-07-13 17:41:49 +000041
42syn keyword sassTodo FIXME NOTE TODO OPTIMIZE XXX contained
43syn region sassComment start="^\z(\s*\)//" end="^\%(\z1 \)\@!" contains=sassTodo
44syn region sassCssComment start="^\z(\s*\)/\*" end="^\%(\z1 \)\@!" contains=sassTodo
45
46hi def link sassCssComment sassComment
47hi def link sassComment Comment
48hi def link sassConstant Identifier
49hi def link sassMixing PreProc
50hi def link sassMixin PreProc
51hi def link sassTodo Todo
52hi def link sassInclude Include
Bram Moolenaar7a329912010-05-21 12:05:36 +020053hi def link sassDebug Debug
54hi def link sassControl PreProc
55hi def link sassFor PreProc
Bram Moolenaarc236c162008-07-13 17:41:49 +000056hi def link sassEscape Special
57hi def link sassIdChar Special
58hi def link sassClassChar Special
59hi def link sassAmpersand Character
60hi def link sassId Identifier
61hi def link sassClass Type
62
63let b:current_syntax = "sass"
64
65" vim:set sw=2: