blob: e2a8729f3fa29c034d6c00ff86370f2860c63ff9 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Latte
3" Maintainer: Nick Moffitt, <nick@zork.net>
4" Last Change: 14 June, 2000
5"
6" Notes:
7" I based this on the TeX and Scheme syntax files (but mostly scheme).
8" See http://www.latte.org for info on the language.
9
10" For version 5.x: Clear all syntax items
11" For version 6.x: Quit when a syntax file was already loaded
12if version < 600
13 syntax clear
14elseif exists("b:current_syntax")
15 finish
16endif
17
18syn match latteError "[{}\\]"
19syn match latteOther "\\{"
20syn match latteOther "\\}"
21syn match latteOther "\\\\"
22
23if version < 600
24 set iskeyword=33,43,45,48-57,63,65-90,95,97-122,_
25else
26 setlocal iskeyword=33,43,45,48-57,63,65-90,95,97-122,_
27endif
28
29syn region latteVar matchgroup=SpecialChar start=!\\[A-Za-z_]!rs=s+1 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther
30syn region latteVar matchgroup=SpecialChar start=!\\[=\&][A-Za-z_]!rs=s+2 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther
31syn region latteString start=+\\"+ skip=+\\\\"+ end=+\\"+
32
33syn region latteGroup matchgroup=Delimiter start="{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax
34
35syn region latteUnquote matchgroup=Delimiter start="\\,{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax
36syn region latteSplice matchgroup=Delimiter start="\\,@{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax
37syn region latteQuote matchgroup=Delimiter start="\\'{" skip="\\[{}]" matchgroup=Delimiter end="}"
38syn region latteQuote matchgroup=Delimiter start="\\`{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=latteUnquote,latteSplice
39
40syn match latteOperator '\\/'
41syn match latteOperator '='
42
43syn match latteComment "\\;.*$"
44
45" This was gathered by slurping in the index.
46
47syn keyword latteSyntax __FILE__ __latte-version__ contained
48syn keyword latteSyntax _bal-tag _pre _tag add and append apply back contained
49syn keyword latteSyntax caar cadr car cdar cddr cdr ceil compose contained
50syn keyword latteSyntax concat cons def defmacro divide downcase contained
51syn keyword latteSyntax empty? equal? error explode file-contents contained
52syn keyword latteSyntax floor foreach front funcall ge? getenv contained
53syn keyword latteSyntax greater-equal? greater? group group? gt? html contained
54syn keyword latteSyntax if include lambda le? length less-equal? contained
55syn keyword latteSyntax less? let lmap load-file load-library lt? macro contained
56syn keyword latteSyntax member? modulo multiply not nth operator? contained
57syn keyword latteSyntax or ordinary quote process-output push-back contained
58syn keyword latteSyntax push-front quasiquote quote random rdc reverse contained
59syn keyword latteSyntax set! snoc splicing unquote strict-html4 contained
60syn keyword latteSyntax string-append string-ge? string-greater-equal? contained
61syn keyword latteSyntax string-greater? string-gt? string-le? contained
62syn keyword latteSyntax string-less-equal? string-less? string-lt? contained
63syn keyword latteSyntax string? subseq substr subtract contained
64syn keyword latteSyntax upcase useless warn while zero? contained
65
66
67" If it's good enough for scheme...
68
69syn sync match matchPlace grouphere NONE "^[^ \t]"
70" ... i.e. synchronize on a line that starts at the left margin
71
72" Define the default highlighting.
73" For version 5.7 and earlier: only when not done already
74" For version 5.8 and later: only when an item doesn't have highlighting yet
75if version >= 508 || !exists("did_latte_syntax_inits")
76 if version < 508
77 let did_latte_syntax_inits = 1
78 command -nargs=+ HiLink hi link <args>
79 else
80 command -nargs=+ HiLink hi def link <args>
81 endif
82
83 HiLink latteSyntax Statement
84 HiLink latteVar Function
85
86 HiLink latteString String
87 HiLink latteQuote String
88
89 HiLink latteDelimiter Delimiter
90 HiLink latteOperator Operator
91
92 HiLink latteComment Comment
93 HiLink latteError Error
94
95 delcommand HiLink
96endif
97
98let b:current_syntax = "latte"