Emacs indentation fix.
[cslatevm.git] / etc / slate.vim
blob2aa4d9940f7869d9a1612ef472deb7ba1282cacd
1 " Slate syntax file
2 " Language:     Slate
4 " For version 5.x: Clear all syntax items
5 " For version 6.x: Quit when a syntax file was already loaded
6 if version < 600
7   syntax clear
8 elseif exists("b:current_syntax")
9   finish
10 endif
12 " some Smalltalk keywords and standard methods
13 syn keyword     slateOddballs   True False Nil
14 syn match       slateControl    "\<resend\>"
15 syn match       slateControl    "\^"
16 syn match       slateControl    "@"
17 syn match       slateIgnore     "_"
18 syn match       slateArgument   ":"
19 syn match       slateStatement  "\."
21 " the block of local variables of a method
22 syn region slateLocalVariables  start="|" end="|" contains=slateInputVariable
24 " the Smalltalk comment
25 syn region slateComment start="\"" skip="\\\"" end="\"" contains=slateEscape
27 " the Smalltalk strings and single characters
28 syn region slateString  start='\'' skip="\\'" end='\'' contains=slateEscape
29 syn match  slateEscape     contained "\\."
30 syn match  slateCharacter       "$."
31 syn match  slateCharacter  "$\\." contains=slateEscape
33 syn case ignore
35 syn match slateInputVariable       contained "\(:\<[a-z_][a-z0-9_]*\>\)"
37 " the symbols prefixed by a '#'
38 " syn match  slateSymbol        "\(#\<[a-z_][a-z0-9_:]*\>\)" contains=slateArgument
39 syn match  slateSymbol  "\(#\<[^'        ]*\>\)" contains=slateArgument
40 syn match  slateSymbol  "\(#'[^']*'\)" contains=slateArgument
42 " some representations of numbers
43 syn match  slateNumber  "\<\d\+\(u\=l\=\|lu\|f\)\>"
44 syn match  slateFloat   "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
45 syn match  slateFloat   "\<\d\+e[-+]\=\d\+[fl]\=\>"
47 syn case match
49 " a try to highlight paren mismatches
50 syn region slateParen   transparent matchgroup=slateParenChars start='(' matchgroup=slateParenChars end=')' matchgroup=NONE contains=ALLBUT,slateParenError
51 syn match  slateParenError      ")"
52 syn region slateBlock   transparent matchgroup=slateBlockChars start='\[' matchgroup=slateBlockChars end='\]' matchgroup=NONE contains=ALLBUT,slateBlockError
53 syn match  slateBlockError      "\]"
54 syn region slateSet     transparent matchgroup=slateSetChars start='{' matchgroup=slateSetChars end='}' matchgroup=NONE contains=ALLBUT,slateSetError
55 syn match  slateSetError        "}"
57 hi link slateParenError slateError
58 hi link slateSetError slateError
59 hi link slateBlockError slateError
61 " synchronization for syntax analysis
62 syn sync minlines=50
64 " Define the default highlighting.
65 " For version 5.7 and earlier: only when not done already
66 " For version 5.8 and later: only when an item doesn't have highlighting yet
67 if version >= 508 || !exists("did_slate_syntax_inits")
68   if version < 508
69     let did_slate_syntax_inits = 1
70     command -nargs=+ HiLink hi link <args>
71   else
72     command -nargs=+ HiLink hi def link <args>
73   endif
75   HiLink slateStatement         PreProc
76   HiLink slateIgnore            PreProc
77   HiLink slateOddballs          Type
78   HiLink slateControl           Label
79   HiLink slateArgument          Label
80   HiLink slateComment           Comment
81   HiLink slateCharacter         Constant
82   HiLink slateString            Constant
83   HiLink slateEscape            Special
84   HiLink slateSymbol            Constant
85   HiLink slateSetChars          Constant
86   HiLink slateParenChars        Delimiter
87   HiLink slateBlockChars        Delimiter
88   HiLink slateNumber            Type
89   HiLink slateFloat             Type
90   HiLink slateError             Error
91   HiLink slateLocalVariables    PreProc
92   HiLink slateInputVariable     Label
94   delcommand HiLink
95 endif
97 let b:current_syntax = "slate"