" Vim syntax file
" Language: SPYCE
" Maintainer: Rimon Barr <rimon AT acm DOT org>
" URL: http://spyce.sourceforge.net
" Last Change: 2003 May 11
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" we define it here so that included files can test for it
if !exists("main_syntax")
let main_syntax='spyce'
endif
" Read the HTML syntax to start with
let b:did_indent = 1 " don't perform HTML indentation!
let html_no_rendering = 1 " do not render <b>,<i>, etc...
if version < 600
so <sfile>:p:h/html.vim
else
runtime! syntax/html.vim
unlet b:current_syntax
endif
" include python
syn include @Python <sfile>:p:h/python.vim
syn include @Html <sfile>:p:h/html.vim
" spyce definitions
syn keyword spyceDirectiveKeyword include compact module import contained
syn keyword spyceDirectiveArg name names file contained
syn region spyceDirectiveString start=+"+ end=+"+ contained
syn match spyceDirectiveValue "=[\t ]*[^'", \t>][^, \t>]*"hs=s+1 contained
syn match spyceBeginErrorS ,\[\[,
syn match spyceBeginErrorA ,<%,
syn cluster spyceBeginError contains=spyceBeginErrorS,spyceBeginErrorA
syn match spyceEndErrorS ,\]\],
syn match spyceEndErrorA ,%>,
syn cluster spyceEndError contains=spyceEndErrorS,spyceEndErrorA
syn match spyceEscBeginS ,\\\[\[,
syn match spyceEscBeginA ,\\<%,
syn cluster spyceEscBegin contains=spyceEscBeginS,spyceEscBeginA
syn match spyceEscEndS ,\\\]\],
syn match spyceEscEndA ,\\%>,
syn cluster spyceEscEnd contains=spyceEscEndS,spyceEscEndA
syn match spyceEscEndCommentS ,--\\\]\],
syn match spyceEscEndCommentA ,--\\%>,
syn cluster spyceEscEndComment contains=spyceEscEndCommentS,spyceEscEndCommentA
syn region spyceStmtS matchgroup=spyceStmtDelim start=,\[\[, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
syn region spyceStmtA matchgroup=spyceStmtDelim start=,<%, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
syn region spyceChunkS matchgroup=spyceChunkDelim start=,\[\[\\, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
syn region spyceChunkA matchgroup=spyceChunkDelim start=,<%\\, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
syn region spyceEvalS matchgroup=spyceEvalDelim start=,\[\[=, end=,\]\], contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
syn region spyceEvalA matchgroup=spyceEvalDelim start=,<%=, end=,%>, contains=@Python,spyceLambdaS,spyceLambdaA,spyceBeginError keepend
syn region spyceDirectiveS matchgroup=spyceDelim start=,\[\[\., end=,\]\], contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend
syn region spyceDirectiveA matchgroup=spyceDelim start=,<%@, end=,%>, contains=spyceBeginError,spyceDirectiveKeyword,spyceDirectiveArg,spyceDirectiveValue,spyceDirectiveString keepend
syn region spyceCommentS matchgroup=spyceCommentDelim start=,\[\[--, end=,--\]\],
syn region spyceCommentA matchgroup=spyceCommentDelim start=,<%--, end=,--%>,
syn region spyceLambdaS matchgroup=spyceLambdaDelim start=,\[\[spy!\?, end=,\]\], contains=@Html,@spyce extend
syn region spyceLambdaA matchgroup=spyceLambdaDelim start=,<%spy!\?, end=,%>, contains=@Html,@spyce extend
syn cluster spyce contains=spyceStmtS,spyceStmtA,spyceChunkS,spyceChunkA,spyceEvalS,spyceEvalA,spyceCommentS,spyceCommentA,spyceDirectiveS,spyceDirectiveA
syn cluster htmlPreproc contains=@spyce
hi link spyceDirectiveKeyword Special
hi link spyceDirectiveArg Type
hi link spyceDirectiveString String
hi link spyceDirectiveValue String
hi link spyceDelim Special
hi link spyceStmtDelim spyceDelim
hi link spyceChunkDelim spyceDelim
hi link spyceEvalDelim spyceDelim
hi link spyceLambdaDelim spyceDelim
hi link spyceCommentDelim Comment
hi link spyceBeginErrorS Error
hi link spyceBeginErrorA Error
hi link spyceEndErrorS Error
hi link spyceEndErrorA Error
hi link spyceStmtS spyce
hi link spyceStmtA spyce
hi link spyceChunkS spyce
hi link spyceChunkA spyce
hi link spyceEvalS spyce
hi link spyceEvalA spyce
hi link spyceDirectiveS spyce
hi link spyceDirectiveA spyce
hi link spyceCommentS Comment
hi link spyceCommentA Comment
hi link spyceLambdaS Normal
hi link spyceLambdaA Normal
hi link spyce Statement
let b:current_syntax = "spyce"
if main_syntax == 'spyce'
unlet main_syntax
endif
|