blob: d629eb4ed8646e0c28e881af77ac2efca2b72589 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Smalltalk
3" Maintainer: Arndt Hesse <hesse@self.de>
4" Last Change: 2001 May 09
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9 syntax clear
10elseif exists("b:current_syntax")
11 finish
12endif
13
14" some Smalltalk keywords and standard methods
15syn keyword stKeyword super self class true false new not
16syn keyword stKeyword notNil isNil inspect out nil
17syn match stMethod "\<do\>:"
18syn match stMethod "\<whileTrue\>:"
19syn match stMethod "\<whileFalse\>:"
20syn match stMethod "\<ifTrue\>:"
21syn match stMethod "\<ifFalse\>:"
22syn match stMethod "\<put\>:"
23syn match stMethod "\<to\>:"
24syn match stMethod "\<at\>:"
25syn match stMethod "\<add\>:"
26syn match stMethod "\<new\>:"
27syn match stMethod "\<for\>:"
28syn match stMethod "\<methods\>:"
29syn match stMethod "\<methodsFor\>:"
30syn match stMethod "\<instanceVariableNames\>:"
31syn match stMethod "\<classVariableNames\>:"
32syn match stMethod "\<poolDictionaries\>:"
33syn match stMethod "\<subclass\>:"
34
35" the block of local variables of a method
36syn region stLocalVariables start="^[ \t]*|" end="|"
37
38" the Smalltalk comment
39syn region stComment start="\"" end="\""
40
41" the Smalltalk strings and single characters
42syn region stString start='\'' skip="''" end='\''
43syn match stCharacter "$."
44
45syn case ignore
46
47" the symols prefixed by a '#'
48syn match stSymbol "\(#\<[a-z_][a-z0-9_]*\>\)"
49syn match stSymbol "\(#'[^']*'\)"
50
51" the variables in a statement block for loops
52syn match stBlockVariable "\(:[ \t]*\<[a-z_][a-z0-9_]*\>[ \t]*\)\+|" contained
53
54" some representations of numbers
55syn match stNumber "\<\d\+\(u\=l\=\|lu\|f\)\>"
56syn match stFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
57syn match stFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
58
59syn case match
60
61" a try to higlight paren mismatches
62syn region stParen transparent start='(' end=')' contains=ALLBUT,stParenError
63syn match stParenError ")"
64syn region stBlock transparent start='\[' end='\]' contains=ALLBUT,stBlockError
65syn match stBlockError "\]"
66syn region stSet transparent start='{' end='}' contains=ALLBUT,stSetError
67syn match stSetError "}"
68
69hi link stParenError stError
70hi link stSetError stError
71hi link stBlockError stError
72
73" synchronization for syntax analysis
74syn sync minlines=50
75
76" Define the default highlighting.
77" For version 5.7 and earlier: only when not done already
78" For version 5.8 and later: only when an item doesn't have highlighting yet
79if version >= 508 || !exists("did_st_syntax_inits")
80 if version < 508
81 let did_st_syntax_inits = 1
82 command -nargs=+ HiLink hi link <args>
83 else
84 command -nargs=+ HiLink hi def link <args>
85 endif
86
87 HiLink stKeyword Statement
88 HiLink stMethod Statement
89 HiLink stComment Comment
90 HiLink stCharacter Constant
91 HiLink stString Constant
92 HiLink stSymbol Special
93 HiLink stNumber Type
94 HiLink stFloat Type
95 HiLink stError Error
96 HiLink stLocalVariables Identifier
97 HiLink stBlockVariable Identifier
98
99 delcommand HiLink
100endif
101
102let b:current_syntax = "st"