1" 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" 99