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 slateControl "=:="
18 syn match slateControl "@"
19 syn match slateIgnore "_"
20 syn match slateArgument ":"
21 syn match slateStatement "\."
23 " the block of local variables of a method
24 syn region slateLocalVariables start="|" end="|" contains=slateInputVariable
26 " the Smalltalk comment
27 syn region slateComment start="\"" skip="\\\"" end="\"" contains=slateEscape
29 " the Smalltalk strings and single characters
30 syn region slateString start='\'' skip="\\'" end='\'' contains=slateEscape
31 syn match slateEscape contained "\\."
32 syn match slateCharacter "$."
33 syn match slateCharacter "$\\." contains=slateEscape
37 syn match slateInputVariable contained "\(:\<[a-z_][a-z0-9_]*\>\)"
39 " the symbols prefixed by a '#'
40 " syn match slateSymbol "\(#\<[a-z_][a-z0-9_:]*\>\)" contains=slateArgument
41 syn match slateSymbol "\(#\<[^' ]*\>\)" contains=slateArgument
42 syn match slateSymbol "\(#'[^']*'\)" contains=slateArgument
44 " some representations of numbers
45 syn match slateNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
46 syn match slateFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
47 syn match slateFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
51 " a try to highlight paren mismatches
52 syn region slateParen transparent matchgroup=slateParenChars start='(' matchgroup=slateParenChars end=')' matchgroup=NONE contains=ALLBUT,slateParenError
53 syn match slateParenError ")"
54 syn region slateBlock transparent matchgroup=slateBlockChars start='\[' matchgroup=slateBlockChars end='\]' matchgroup=NONE contains=ALLBUT,slateBlockError
55 syn match slateBlockError "\]"
56 syn region slateSet transparent matchgroup=slateSetChars start='{' matchgroup=slateSetChars end='}' matchgroup=NONE contains=ALLBUT,slateSetError
57 syn match slateSetError "}"
59 hi link slateParenError slateError
60 hi link slateSetError slateError
61 hi link slateBlockError slateError
63 " synchronization for syntax analysis
66 " Define the default highlighting.
67 " For version 5.7 and earlier: only when not done already
68 " For version 5.8 and later: only when an item doesn't have highlighting yet
69 if version >= 508 || !exists("did_slate_syntax_inits")
71 let did_slate_syntax_inits = 1
72 command -nargs=+ HiLink hi link <args>
74 command -nargs=+ HiLink hi def link <args>
77 HiLink slateStatement PreProc
78 HiLink slateIgnore PreProc
79 HiLink slateOddballs Type
80 HiLink slateControl Label
81 HiLink slateArgument Label
82 HiLink slateComment Comment
83 HiLink slateCharacter Constant
84 HiLink slateString Constant
85 HiLink slateEscape Special
86 HiLink slateSymbol Constant
87 HiLink slateSetChars Constant
88 HiLink slateParenChars Delimiter
89 HiLink slateBlockChars Delimiter
90 HiLink slateNumber Type
91 HiLink slateFloat Type
92 HiLink slateError Error
93 HiLink slateLocalVariables PreProc
94 HiLink slateInputVariable Label
99 let b:current_syntax = "slate"