4 " For version 5.x: Clear all syntax items
5 " For version 6.x: Quit when a syntax file was already loaded
8 elseif exists("b:current_syntax")
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
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]\=\>"
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
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")
69 let did_slate_syntax_inits = 1
70 command -nargs=+ HiLink hi link <args>
72 command -nargs=+ HiLink hi def link <args>
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
97 let b:current_syntax = "slate"