1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Smalltalk 3071d4279SBram Moolenaar" Maintainer: Arndt Hesse <[email protected]> 45dc6252dSBram Moolenaar" Last Change: 2012 Feb 12 by Thilo Six 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 115dc6252dSBram Moolenaarlet s:cpo_save = &cpo 125dc6252dSBram Moolenaarset cpo&vim 135dc6252dSBram Moolenaar 14071d4279SBram Moolenaar" some Smalltalk keywords and standard methods 15071d4279SBram Moolenaarsyn keyword stKeyword super self class true false new not 16071d4279SBram Moolenaarsyn keyword stKeyword notNil isNil inspect out nil 17071d4279SBram Moolenaarsyn match stMethod "\<do\>:" 18071d4279SBram Moolenaarsyn match stMethod "\<whileTrue\>:" 19071d4279SBram Moolenaarsyn match stMethod "\<whileFalse\>:" 20071d4279SBram Moolenaarsyn match stMethod "\<ifTrue\>:" 21071d4279SBram Moolenaarsyn match stMethod "\<ifFalse\>:" 22071d4279SBram Moolenaarsyn match stMethod "\<put\>:" 23071d4279SBram Moolenaarsyn match stMethod "\<to\>:" 24071d4279SBram Moolenaarsyn match stMethod "\<at\>:" 25071d4279SBram Moolenaarsyn match stMethod "\<add\>:" 26071d4279SBram Moolenaarsyn match stMethod "\<new\>:" 27071d4279SBram Moolenaarsyn match stMethod "\<for\>:" 28071d4279SBram Moolenaarsyn match stMethod "\<methods\>:" 29071d4279SBram Moolenaarsyn match stMethod "\<methodsFor\>:" 30071d4279SBram Moolenaarsyn match stMethod "\<instanceVariableNames\>:" 31071d4279SBram Moolenaarsyn match stMethod "\<classVariableNames\>:" 32071d4279SBram Moolenaarsyn match stMethod "\<poolDictionaries\>:" 33071d4279SBram Moolenaarsyn match stMethod "\<subclass\>:" 34071d4279SBram Moolenaar 35071d4279SBram Moolenaar" the block of local variables of a method 36071d4279SBram Moolenaarsyn region stLocalVariables start="^[ \t]*|" end="|" 37071d4279SBram Moolenaar 38071d4279SBram Moolenaar" the Smalltalk comment 39071d4279SBram Moolenaarsyn region stComment start="\"" end="\"" 40071d4279SBram Moolenaar 41071d4279SBram Moolenaar" the Smalltalk strings and single characters 42071d4279SBram Moolenaarsyn region stString start='\'' skip="''" end='\'' 43071d4279SBram Moolenaarsyn match stCharacter "$." 44071d4279SBram Moolenaar 45071d4279SBram Moolenaarsyn case ignore 46071d4279SBram Moolenaar 47*6c391a74SBram Moolenaar" the symbols prefixed by a '#' 48071d4279SBram Moolenaarsyn match stSymbol "\(#\<[a-z_][a-z0-9_]*\>\)" 49071d4279SBram Moolenaarsyn match stSymbol "\(#'[^']*'\)" 50071d4279SBram Moolenaar 51071d4279SBram Moolenaar" the variables in a statement block for loops 52071d4279SBram Moolenaarsyn match stBlockVariable "\(:[ \t]*\<[a-z_][a-z0-9_]*\>[ \t]*\)\+|" contained 53071d4279SBram Moolenaar 54071d4279SBram Moolenaar" some representations of numbers 55071d4279SBram Moolenaarsyn match stNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" 56071d4279SBram Moolenaarsyn match stFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" 57071d4279SBram Moolenaarsyn match stFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" 58071d4279SBram Moolenaar 59071d4279SBram Moolenaarsyn case match 60071d4279SBram Moolenaar 61*6c391a74SBram Moolenaar" a try to highlight paren mismatches 62071d4279SBram Moolenaarsyn region stParen transparent start='(' end=')' contains=ALLBUT,stParenError 63071d4279SBram Moolenaarsyn match stParenError ")" 64071d4279SBram Moolenaarsyn region stBlock transparent start='\[' end='\]' contains=ALLBUT,stBlockError 65071d4279SBram Moolenaarsyn match stBlockError "\]" 66071d4279SBram Moolenaarsyn region stSet transparent start='{' end='}' contains=ALLBUT,stSetError 67071d4279SBram Moolenaarsyn match stSetError "}" 68071d4279SBram Moolenaar 69071d4279SBram Moolenaarhi link stParenError stError 70071d4279SBram Moolenaarhi link stSetError stError 71071d4279SBram Moolenaarhi link stBlockError stError 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" synchronization for syntax analysis 74071d4279SBram Moolenaarsyn sync minlines=50 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" Define the default highlighting. 7789bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 78071d4279SBram Moolenaar 79f37506f6SBram Moolenaarhi def link stKeyword Statement 80f37506f6SBram Moolenaarhi def link stMethod Statement 81f37506f6SBram Moolenaarhi def link stComment Comment 82f37506f6SBram Moolenaarhi def link stCharacter Constant 83f37506f6SBram Moolenaarhi def link stString Constant 84f37506f6SBram Moolenaarhi def link stSymbol Special 85f37506f6SBram Moolenaarhi def link stNumber Type 86f37506f6SBram Moolenaarhi def link stFloat Type 87f37506f6SBram Moolenaarhi def link stError Error 88f37506f6SBram Moolenaarhi def link stLocalVariables Identifier 89f37506f6SBram Moolenaarhi def link stBlockVariable Identifier 90071d4279SBram Moolenaar 91071d4279SBram Moolenaar 92071d4279SBram Moolenaarlet b:current_syntax = "st" 935dc6252dSBram Moolenaar 945dc6252dSBram Moolenaarlet &cpo = s:cpo_save 955dc6252dSBram Moolenaarunlet s:cpo_save 96