comparison vendor/vim-syntax/slim.vim @ 508:bbcffc594d1e

Vendor what should be vendored and add some more.
author edogawaconan <me@myconan.net>
date Mon, 17 Mar 2014 15:47:15 +0900
parents rc/vim-syntax-slim@86873b811343
children 351bd965bc1f
comparison
equal deleted inserted replaced
507:973b7f21b582 508:bbcffc594d1e
1 " Vim syntax file
2 " Language: Slim
3 " Maintainer: Andrew Stone <andy@stonean.com>
4 " Version: 1
5 " Last Change: 2010 Sep 25
6 " TODO: Feedback is welcomed.
7
8 " Quit when a syntax file is already loaded.
9 if exists("b:current_syntax")
10 finish
11 endif
12
13 if !exists("main_syntax")
14 let main_syntax = 'slim'
15 endif
16
17 " Allows a per line syntax evaluation.
18 let b:ruby_no_expensive = 1
19
20 " Include Ruby syntax highlighting
21 syn include @slimRubyTop syntax/ruby.vim
22 unlet! b:current_syntax
23 " Include Haml syntax highlighting
24 syn include @slimHaml syntax/haml.vim
25 unlet! b:current_syntax
26
27 syn match slimBegin "^\s*\(&[^= ]\)\@!" nextgroup=slimTag,slimClassChar,slimIdChar,slimRuby
28
29 syn region rubyCurlyBlock start="{" end="}" contains=@slimRubyTop contained
30 syn cluster slimRubyTop add=rubyCurlyBlock
31
32 syn cluster slimComponent contains=slimClassChar,slimIdChar,slimWrappedAttrs,slimRuby,slimAttr,slimInlineTagChar
33
34 syn keyword slimDocType contained html 5 1.1 strict frameset mobile basic transitional
35 syn match slimDocTypeKeyword "^\s*\(doctype\)\s\+" nextgroup=slimDocType
36
37 syn keyword slimTodo FIXME TODO NOTE OPTIMIZE XXX contained
38 syn keyword htmlTagName contained script
39
40 syn match slimTag "\w\+[><]*" contained contains=htmlTagName nextgroup=@slimComponent
41 syn match slimIdChar "#{\@!" contained nextgroup=slimId
42 syn match slimId "\%(\w\|-\)\+" contained nextgroup=@slimComponent
43 syn match slimClassChar "\." contained nextgroup=slimClass
44 syn match slimClass "\%(\w\|-\)\+" contained nextgroup=@slimComponent
45 syn match slimInlineTagChar "\s*:\s*" contained nextgroup=slimTag,slimClassChar,slimIdChar
46
47 syn region slimWrappedAttrs matchgroup=slimWrappedAttrsDelimiter start="\s*{\s*" skip="}\s*\"" end="\s*}\s*" contained contains=slimAttr nextgroup=slimRuby
48 syn region slimWrappedAttrs matchgroup=slimWrappedAttrsDelimiter start="\s*\[\s*" end="\s*\]\s*" contained contains=slimAttr nextgroup=slimRuby
49 syn region slimWrappedAttrs matchgroup=slimWrappedAttrsDelimiter start="\s*(\s*" end="\s*)\s*" contained contains=slimAttr nextgroup=slimRuby
50
51 syn match slimAttr "\s*\%(\w\|-\)\+\s*" contained contains=htmlArg nextgroup=slimAttrAssignment
52 syn match slimAttrAssignment "\s*=\s*" contained nextgroup=slimWrappedAttrValue,slimAttrString
53
54 syn region slimWrappedAttrValue matchgroup=slimWrappedAttrValueDelimiter start="{" end="}" contained contains=slimAttrString,@slimRubyTop nextgroup=slimAttr,slimRuby,slimInlineTagChar
55 syn region slimWrappedAttrValue matchgroup=slimWrappedAttrValueDelimiter start="\[" end="\]" contained contains=slimAttrString,@slimRubyTop nextgroup=slimAttr,slimRuby,slimInlineTagChar
56 syn region slimWrappedAttrValue matchgroup=slimWrappedAttrValueDelimiter start="(" end=")" contained contains=slimAttrString,@slimRubyTop nextgroup=slimAttr,slimRuby,slimInlineTagChar
57
58 syn region slimAttrString start=+\s*"+ skip=+\%(\\\\\)*\\"+ end=+"\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr,slimRuby,slimInlineTagChar
59 syn region slimAttrString start=+\s*'+ skip=+\%(\\\\\)*\\"+ end=+'\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr,slimRuby,slimInlineTagChar
60
61 syn region slimInnerAttrString start=+\s*"+ skip=+\%(\\\\\)*\\"+ end=+"\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr
62 syn region slimInnerAttrString start=+\s*'+ skip=+\%(\\\\\)*\\"+ end=+'\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr
63
64 syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
65 syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{{" end="}}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
66 syn match slimInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
67
68 syn region slimRuby matchgroup=slimRubyOutputChar start="\s*[=]\==[']\=" skip=",\s*$" end="$" contained contains=@slimRubyTop keepend
69 syn region slimRuby matchgroup=slimRubyChar start="\s*-" skip=",\s*$" end="$" contained contains=@slimRubyTop keepend
70
71 syn match slimComment /^\(\s*\)[/].*\(\n\1\s.*\)*/ contains=slimTodo
72 syn match slimText /^\(\s*\)[`|'].*\(\n\1\s.*\)*/
73
74 syn match slimFilter /\s*\w\+:\s*/ contained
75 syn match slimHaml /^\(\s*\)\<haml:\>.*\(\n\1\s.*\)*/ contains=@slimHaml,slimFilter
76
77 syn match slimIEConditional "\%(^\s*/\)\@<=\[\s*if\>[^]]*]" contained containedin=slimComment
78
79 hi def link slimAttrString String
80 hi def link slimBegin String
81 hi def link slimClass Type
82 hi def link slimAttr Type
83 hi def link slimClassChar Type
84 hi def link slimComment Comment
85 hi def link slimDocType Identifier
86 hi def link slimDocTypeKeyword Keyword
87 hi def link slimFilter Keyword
88 hi def link slimIEConditional SpecialComment
89 hi def link slimId Identifier
90 hi def link slimIdChar Identifier
91 hi def link slimInnerAttrString String
92 hi def link slimInterpolationDelimiter Delimiter
93 hi def link slimRubyChar Special
94 hi def link slimRubyOutputChar Special
95 hi def link slimText String
96 hi def link slimTodo Todo
97 hi def link slimWrappedAttrValueDelimiter Delimiter
98 hi def link slimWrappedAttrsDelimiter Delimiter
99 hi def link slimInlineTagChar Delimiter
100
101 let b:current_syntax = "slim"