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