blob: e76cb1a1a2f1ccc6818562e7ebb14391ac3921da [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: SPYCE
3" Maintainer: Rimon Barr <rimon AT acm DOT org>
4" URL: http://spyce.sourceforge.net
Bram Moolenaar5c736222010-01-06 20:54:52 +01005" Last Change: 2009 Nov 11
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10 syntax clear
11elseif exists("b:current_syntax")
12 finish
13endif
14
15" we define it here so that included files can test for it
16if !exists("main_syntax")
17 let main_syntax='spyce'
18endif
19
20" Read the HTML syntax to start with
21let b:did_indent = 1 " don't perform HTML indentation!
22let html_no_rendering = 1 " do not render <b>,<i>, etc...
23if version < 600
24 so <sfile>:p:h/html.vim
25else
26 runtime! syntax/html.vim
27 unlet b:current_syntax
Bram Moolenaar5c736222010-01-06 20:54:52 +010028 syntax spell default " added by Bram
Bram Moolenaar071d4272004-06-13 20:20:40 +000029endif
30
31" include python
32syn include @Python <sfile>:p:h/python.vim
33syn include @Html <sfile>:p:h/html.vim
34
35" spyce definitions
36syn keyword spyceDirectiveKeyword include compact module import contained
37syn keyword spyceDirectiveArg name names file contained
38syn region spyceDirectiveString start=+"+ end=+"+ contained
39syn match spyceDirectiveValue "=[\t ]*[^'", \t>][^, \t>]*"hs=s+1 contained
40
41syn match spyceBeginErrorS ,\[\[,
42syn match spyceBeginErrorA ,<%,
43syn cluster spyceBeginError contains=spyceBeginErrorS,spyceBeginErrorA
44syn match spyceEndErrorS ,\]\],
45syn match spyceEndErrorA ,%>,
46syn cluster spyceEndError contains=spyceEndErrorS,spyceEndErrorA
47
48syn match spyceEscBeginS ,\\\[\[,
49syn match spyceEscBeginA ,\\<%,
50syn cluster spyceEscBegin contains=spyceEscBeginS,spyceEscBeginA
51syn match spyceEscEndS ,\\\]\],
52syn match spyceEscEndA ,\\%>,
53syn cluster spyceEscEnd contains=spyceEscEndS,spyceEscEndA
54syn match spyceEscEndCommentS ,--\\\]\],
55syn match spyceEscEndCommentA ,--\\%>,
56syn cluster spyceEscEndComment contains=spyceEscEndCommentS,spyceEscEndCommentA
57
58syn region spyceStmtS matchgroup=spyceStmtDelim start=,\[\[, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
59syn region spyceStmtA matchgroup=spyceStmtDelim start=,<%, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
60syn region spyceChunkS matchgroup=spyceChunkDelim start=,\[\[\\, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
61syn region spyceChunkA matchgroup=spyceChunkDelim start=,<%\\, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
62syn region spyceEvalS matchgroup=spyceEvalDelim start=,\[\[=, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
63syn region spyceEvalA matchgroup=spyceEvalDelim start=,<%=, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
64syn region spyceDirectiveS matchgroup=spyceDelim start=,\[\[\., end=,\]\], contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend
65syn region spyceDirectiveA matchgroup=spyceDelim start=,<%@, end=,%>, contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend
66syn region spyceCommentS matchgroup=spyceCommentDelim start=,\[\[--, end=,--\]\],
67syn region spyceCommentA matchgroup=spyceCommentDelim start=,<%--, end=,--%>,
68syn region spyceLambdaS matchgroup=spyceLambdaDelim start=,\[\[spy!\?, end=,\]\], contains=@Html,@spyce extend
69syn region spyceLambdaA matchgroup=spyceLambdaDelim start=,<%spy!\?, end=,%>, contains=@Html,@spyce extend
70
71syn cluster spyce contains=spyceStmtS,spyceStmtA,spyceChunkS,spyceChunkA,spyceEvalS,spyceEvalA,spyceCommentS,spyceCommentA,spyceDirectiveS,spyceDirectiveA
72
73syn cluster htmlPreproc contains=@spyce
74
75hi link spyceDirectiveKeyword Special
76hi link spyceDirectiveArg Type
77hi link spyceDirectiveString String
78hi link spyceDirectiveValue String
79
80hi link spyceDelim Special
81hi link spyceStmtDelim spyceDelim
82hi link spyceChunkDelim spyceDelim
83hi link spyceEvalDelim spyceDelim
84hi link spyceLambdaDelim spyceDelim
85hi link spyceCommentDelim Comment
86
87hi link spyceBeginErrorS Error
88hi link spyceBeginErrorA Error
89hi link spyceEndErrorS Error
90hi link spyceEndErrorA Error
91
92hi link spyceStmtS spyce
93hi link spyceStmtA spyce
94hi link spyceChunkS spyce
95hi link spyceChunkA spyce
96hi link spyceEvalS spyce
97hi link spyceEvalA spyce
98hi link spyceDirectiveS spyce
99hi link spyceDirectiveA spyce
100hi link spyceCommentS Comment
101hi link spyceCommentA Comment
102hi link spyceLambdaS Normal
103hi link spyceLambdaA Normal
104
105hi link spyce Statement
106
107let b:current_syntax = "spyce"
108if main_syntax == 'spyce'
109 unlet main_syntax
110endif
111