SyntaxHighlighter2.st
branchjv
changeset 13178 c9bf900fe729
parent 13176 54255ec9b267
parent 12987 306d6dc6ffbb
child 13333 2e8aa3023772
--- a/SyntaxHighlighter2.st	Mon Jul 01 12:31:33 2013 +0100
+++ b/SyntaxHighlighter2.st	Mon Jul 01 22:15:23 2013 +0100
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-              All Rights Reserved
+	      All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -38,7 +38,7 @@
 copyright
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-              All Rights Reserved
+	      All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -96,23 +96,23 @@
     text emphasisCollection:(text emphasis asRunArray).
 
     tree == #Error ifTrue:[
-        "/ mhmh - which is better ...
-        "/ alternative1: color rest after error in red
-"/        text 
-"/            emphasizeFrom:(parser sourceStream position) 
-"/            to:text size 
+	"/ mhmh - which is better ...
+	"/ alternative1: color rest after error in red
+"/        text
+"/            emphasizeFrom:(parser sourceStream position)
+"/            to:text size
 "/            with:(#color->Color red).
 
 
-        "/ alternative2: take original emphasis for rest
+	"/ alternative2: take original emphasis for rest
 
-        endPos := parser sourceStream position1Based.
-        endPos >= text size ifTrue:[
-            ^ text
-        ].
-        ^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1))).
+	endPos := parser sourceStream position1Based.
+	endPos >= text size ifTrue:[
+	    ^ text
+	].
+	^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1))).
 
-        "/ alternative3: no emphasis for rest.
+	"/ alternative3: no emphasis for rest.
 
 "/        ^ text "/ aString
     ].
@@ -120,8 +120,8 @@
 
     "
      self
-        formatExpression:'(1 + 2) max:5' 
-        in:UndefinedObject
+	formatExpression:'(1 + 2) max:5'
+	in:UndefinedObject
     "
 
     "Created: / 25-07-2010 / 08:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -134,10 +134,10 @@
 
     "/ obsolete interface
     ^ self
-        formatMethod:nil
-        source:aString
-        in:aClass
-        using:preferencesOrNil elementsInto:elements
+	formatMethod:nil
+	source:aString
+	in:aClass
+	using:preferencesOrNil elementsInto:elements
 
     "Created: / 25-07-2010 / 08:56:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (comment): / 05-07-2011 / 11:07:50 / cg"
@@ -152,59 +152,59 @@
     aString isNil ifTrue:[^ nil].
 
     Error handle:[:ex |
-        ex creator isHandled ifTrue:[
-            ex reject.    
-        ].
-        (self parseErrorSignal handles:ex) ifFalse:[
-            "Parse error may happen when re-formatting incomplete code while editing"
-            ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
-            "/ ex suspendedContext fullPrintAll.
-        ].
-        ^ aString
+	ex creator isHandled ifTrue:[
+	    ex reject.
+	].
+	(self parseErrorSignal handles:ex) ifFalse:[
+	    "Parse error may happen when re-formatting incomplete code while editing"
+	    ('SyntaxHighlighter [info]: error during highlight: ' , ex description) infoPrintCR.
+	    "/ ex suspendedContext fullPrintAll.
+	].
+	^ aString
     ] do:[
-        highlighter := self for:(ReadStream on:aString string) in:aClass.
-        highlighter elements: elements.
-        preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
-        "/ highlighter ignoreErrors:true.
-        highlighter ignoreWarnings:true.
-        highlighter sourceText:(text := aString string asText).
-        "/ use an array here - this can be changed much faster using #at:put:
-        text emphasisCollection:(Array new:aString size).
+	highlighter := self for:(ReadStream on:aString string) in:aClass.
+	highlighter elements: elements.
+	preferencesOrNil notNil ifTrue:[highlighter preferences:preferencesOrNil].
+	"/ highlighter ignoreErrors:true.
+	highlighter ignoreWarnings:true.
+	highlighter sourceText:(text := aString string asText).
+	"/ use an array here - this can be changed much faster using #at:put:
+	text emphasisCollection:(Array new:aString size).
 
-        tree := highlighter parseMethod.
-        "/ now, convert the emphasis-array to a runArray
-        text emphasisCollection:(text emphasis asRunArray).
+	tree := highlighter parseMethod.
+	"/ now, convert the emphasis-array to a runArray
+	text emphasisCollection:(text emphasis asRunArray).
 
-        tree == #Error ifTrue:[
-            eColor := UserPreferences current errorColor.
-            eColor notNil ifTrue:[
-                "/ mhmh - which is better ...
-                "/ alternative1: color rest after error in red
-                text 
-                    emphasizeFrom:(highlighter sourceStream position1Based) 
-                    to:text size 
-                    with:(#color->eColor).
-            ] ifFalse:[
-                "/ alternative2: take original emphasis for rest
+	tree == #Error ifTrue:[
+	    eColor := UserPreferences current errorColor.
+	    eColor notNil ifTrue:[
+		"/ mhmh - which is better ...
+		"/ alternative1: color rest after error in red
+		text
+		    emphasizeFrom:(highlighter sourceStream position1Based)
+		    to:text size
+		    with:(#color->eColor).
+	    ] ifFalse:[
+		"/ alternative2: take original emphasis for rest
 
-                endPos := highlighter sourceStream position1Based.
-                endPos >= text size ifTrue:[
-                    ^ Array with: text with: highlighter elements
-                ].
-                ^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1)))
-            ].
-            "/ alternative3: no emphasis for rest.
-        ].
-        ^text 
+		endPos := highlighter sourceStream position1Based.
+		endPos >= text size ifTrue:[
+		    ^ Array with: text with: highlighter elements
+		].
+		^ ((text copyTo:endPos) , (aString copyFrom:(endPos+1)))
+	    ].
+	    "/ alternative3: no emphasis for rest.
+	].
+	^text
     ]
     "
      self
-        formatMethod:'foo 
+	formatMethod:'foo
     ^ self bar:''hello''.
 
     ' , (Character doubleQuote asString) , 'some comment' , (Character doubleQuote asString) , '
 '
-        in:UndefinedObject
+	in:UndefinedObject
     "
 
     "Modified: / 22-08-2006 / 13:32:04 / cg"
@@ -259,66 +259,66 @@
     "special kludge: since Scanner cannot know if -digit is a binary
      expression or a negative constant, handle cases here"
 
-    [(tokenType == #BinaryOperator) 
+    [(tokenType == #BinaryOperator)
      or:[(tokenType == $|)
      or:[(tokenType == $^ and:[parserFlags allowCaretAsBinop])
-         or:[((tokenType == #Integer) or:[tokenType == #Float])
-             and:[tokenValue < 0]]]]
+	 or:[((tokenType == #Integer) or:[tokenType == #Float])
+	     and:[tokenValue < 0]]]]
     ] whileTrue:[
-        "/ kludge alarm: in a function-call argList, #, is not a binarySelector
-        inFunctionCallArgument == true ifTrue:[
-            ((tokenType == #BinaryOperator) and:[tokenName = ',']) ifTrue:[
-                ^ receiver
-            ].
-        ].
+	"/ kludge alarm: in a function-call argList, #, is not a binarySelector
+	inFunctionCallArgument == true ifTrue:[
+	    ((tokenType == #BinaryOperator) and:[tokenName = ',']) ifTrue:[
+		^ receiver
+	    ].
+	].
 
-        pos1 := tokenPosition.
-        lno := tokenLineNr.
+	pos1 := tokenPosition.
+	lno := tokenLineNr.
 
-        "/ kludge alarm: bar, caret and minus are not scanned as binop
-        (tokenType == $|) ifTrue:[
-            sel := '|'.
-            sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
-            self nextToken.
-        ] ifFalse:[
-            (tokenType == $^) ifTrue:[
-                sel := '^'.
-                sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
-                self nextToken.
-            ] ifFalse:[
-                (tokenType == #BinaryOperator) ifTrue:[
-                    sel := tokenName.
-                    sel := self selectorCheck:sel for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
-                    self nextToken
-                ] ifFalse:[
-                    sel := '-'.
-                    token := tokenValue := tokenValue negated.
-                    tokenPosition := tokenPosition + 1. "/ to skip the sign
-                ]
-            ].
-        ].
+	"/ kludge alarm: bar, caret and minus are not scanned as binop
+	(tokenType == $|) ifTrue:[
+	    sel := '|'.
+	    sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
+	    self nextToken.
+	] ifFalse:[
+	    (tokenType == $^) ifTrue:[
+		sel := '^'.
+		sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
+		self nextToken.
+	    ] ifFalse:[
+		(tokenType == #BinaryOperator) ifTrue:[
+		    sel := tokenName.
+		    sel := self selectorCheck:sel for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
+		    self nextToken
+		] ifFalse:[
+		    sel := '-'.
+		    token := tokenValue := tokenValue negated.
+		    tokenPosition := tokenPosition + 1. "/ to skip the sign
+		]
+	    ].
+	].
 
-        pos2 := pos1 + sel size - 1.
-        self markSelector:sel from:pos1 to:pos2 receiverNode:receiver.
-        lastSelectorElement := nil.
+	pos2 := pos1 + sel size - 1.
+	self markSelector:sel from:pos1 to:pos2 receiverNode:receiver.
+	lastSelectorElement := nil.
 
-        arg := self unaryExpression.
-        (arg == #Error) ifTrue:[^ #Error].
+	arg := self unaryExpression.
+	(arg == #Error) ifTrue:[^ #Error].
 
-        expr := BinaryNode receiver:receiver selector:sel arg:arg fold:foldConstants.
-        expr isErrorNode ifTrue:[
-            self parseError:(expr errorString) position:pos1 to:tokenPosition.
-            errorFlag := false. "ok, user wants it - so he'll get it"
-            expr := BinaryNode receiver:receiver selector:sel arg:arg fold:nil.
-        ].
-        expr lineNumber:lno.
-        expr selectorPosition:pos1.
+	expr := BinaryNode receiver:receiver selector:sel arg:arg fold:foldConstants.
+	expr isErrorNode ifTrue:[
+	    self parseError:(expr errorString) position:pos1 to:tokenPosition.
+	    errorFlag := false. "ok, user wants it - so he'll get it"
+	    expr := BinaryNode receiver:receiver selector:sel arg:arg fold:nil.
+	].
+	expr lineNumber:lno.
+	expr selectorPosition:pos1.
 
-        self checkPlausibilityOf:expr from:pos1 to:pos2.
-        parseForCode ifFalse:[
-            self rememberSelectorUsed:sel receiver:receiver
-        ].
-        receiver := expr.   "/ for next message
+	self checkPlausibilityOf:expr from:pos1 to:pos2.
+	parseForCode ifFalse:[
+	    self rememberSelectorUsed:sel receiver:receiver
+	].
+	receiver := expr.   "/ for next message
     ].
     ^ receiver
 
@@ -332,7 +332,7 @@
     "parse a keyword-expression; return a node-tree, nil or #Error.
 
      keywordExpression ::= binaryexpression
-                           | { KEYWORD-PART binaryExpression }
+			   | { KEYWORD-PART binaryExpression }
     "
 
     |expr receiver sel arg args posR1 posR2 pos1 pos2 lno positions constVal|
@@ -351,40 +351,40 @@
     (arg == #Error) ifTrue:[^ #Error].
     args := Array with:arg.
     [tokenType == #Keyword] whileTrue:[
-        sel := sel , tokenName.
-        pos2 := tokenPosition + tokenName size - 1.
-        positions add:(tokenPosition to:pos2).
-        self nextToken.
-        arg := self binaryExpression.
-        (arg == #Error) ifTrue:[^ #Error].
-        args := args copyWith:arg.
+	sel := sel , tokenName.
+	pos2 := tokenPosition + tokenName size - 1.
+	positions add:(tokenPosition to:pos2).
+	self nextToken.
+	arg := self binaryExpression.
+	(arg == #Error) ifTrue:[^ #Error].
+	args := args copyWith:arg.
     ].
 
     positions do:[:p |
-        self markSelector:sel from:p start to:p stop receiverNode:receiver.
+	self markSelector:sel from:p start to:p stop receiverNode:receiver.
     ].
     lastSelectorElement := nil.
     sel := self selectorCheck:sel for:receiver positions:positions.
 
     ignoreWarnings ifFalse:[
-        (Class definitionSelectors includes:sel) ifTrue:[
-            (receiver isVariable and:[receiver isUndeclared]) ifTrue:[
-                "this is not an error - the undefined class may be loaded after this code!!"
-                self warning:('as yet undefined superclass: ' , receiver name) position:pos1 to:pos2.
-            ].
-        ].
+	(Class definitionSelectors includes:sel) ifTrue:[
+	    (receiver isVariable and:[receiver isUndeclared]) ifTrue:[
+		"this is not an error - the undefined class may be loaded after this code!!"
+		self warning:('as yet undefined superclass: ' , receiver name) position:pos1 to:pos2.
+	    ].
+	].
     ].
 
     expr := MessageNode receiver:receiver selector:sel args:args fold:foldConstants.
     expr isErrorNode ifTrue:[
-        self parseError:(expr errorString) position:pos1 to:pos2.
-        errorFlag := false. "ok, user wants it - so he'll get it"
-        expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
+	self parseError:(expr errorString) position:pos1 to:pos2.
+	errorFlag := false. "ok, user wants it - so he'll get it"
+	expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
     ].
     expr lineNumber:lno.
     self checkPlausibilityOf:expr from:pos1 to:pos2.
     parseForCode ifFalse:[
-        self rememberSelectorUsed:sel receiver:receiver
+	self rememberSelectorUsed:sel receiver:receiver
     ].
 
 "/        (contextToEvaluateIn isNil and:[selfValue isNil]) ifTrue:[    "/ do not check this for doits
@@ -398,72 +398,72 @@
 "/
 
     (sel = #ifTrue: or:[sel = #ifFalse: or:[sel = #ifTrue:ifFalse: or:[sel = #ifFalse:ifTrue:]]]) ifTrue:[
-        (expr receiver withConstantValueDo:[:val | constVal := val]) ifTrue:[
-            |indexOfArgNotExecuted|
+	(expr receiver withConstantValueDo:[:val | constVal := val]) ifTrue:[
+	    |indexOfArgNotExecuted|
 
-            "/ receiver evaluates to a constant
-            constVal == true ifTrue:[
-                (sel startsWith: #ifFalse:) ifTrue:[
-                    indexOfArgNotExecuted := 1.
-                ] ifFalse:[
-                    indexOfArgNotExecuted := 2.
-                ]
-            ].
-            constVal == false ifTrue:[
-                (sel startsWith: #ifTrue:) ifTrue:[
-                    indexOfArgNotExecuted := 1.
-                ] ifFalse:[
-                    indexOfArgNotExecuted := 2.
-                ]
-            ].
-            indexOfArgNotExecuted == 2 ifTrue:[
-                args size == 1 ifTrue:[ indexOfArgNotExecuted := nil]
-            ].
+	    "/ receiver evaluates to a constant
+	    constVal == true ifTrue:[
+		(sel startsWith: #ifFalse:) ifTrue:[
+		    indexOfArgNotExecuted := 1.
+		] ifFalse:[
+		    indexOfArgNotExecuted := 2.
+		]
+	    ].
+	    constVal == false ifTrue:[
+		(sel startsWith: #ifTrue:) ifTrue:[
+		    indexOfArgNotExecuted := 1.
+		] ifFalse:[
+		    indexOfArgNotExecuted := 2.
+		]
+	    ].
+	    indexOfArgNotExecuted == 2 ifTrue:[
+		args size == 1 ifTrue:[ indexOfArgNotExecuted := nil]
+	    ].
 
-            indexOfArgNotExecuted notNil ifTrue:[
-                |argIsNotExecuted|
+	    indexOfArgNotExecuted notNil ifTrue:[
+		|argIsNotExecuted|
 
-                "/ self warning:'receiver is constant; arg',indexOfArgNotExecuted printString,' is never executed' position:pos1 to:tokenPosition.
-                argIsNotExecuted := expr args at:indexOfArgNotExecuted.
-                argIsNotExecuted isBlockNode ifTrue:[
-                    self markCommentFrom:argIsNotExecuted startPosition to:argIsNotExecuted endPosition.
-                ].
-            ].
-        ].
+		"/ self warning:'receiver is constant; arg',indexOfArgNotExecuted printString,' is never executed' position:pos1 to:tokenPosition.
+		argIsNotExecuted := expr args at:indexOfArgNotExecuted.
+		argIsNotExecuted isBlockNode ifTrue:[
+		    self markCommentFrom:argIsNotExecuted startPosition to:argIsNotExecuted endPosition.
+		].
+	    ].
+	].
     ].
 
     (ignoreErrors or:[ignoreWarnings]) ifFalse:[
-        (sel = #and: or:[sel = #or:]) ifTrue:[
-            expr arg1 isBlock ifFalse:[
-                (expr arg1 isVariable
-                and:[ (expr arg1 name asLowercase includesString:'block')]) ifFalse:[
-                    self warnCommonMistake:'(possible common mistake) missing block brackets ?'
-                              position:pos2+1 to:tokenPosition-1
-                ]
-            ].
-            ^ expr.
-        ].
+	(sel = #and: or:[sel = #or:]) ifTrue:[
+	    expr arg1 isBlock ifFalse:[
+		(expr arg1 isVariable
+		and:[ (expr arg1 name asLowercase includesString:'block')]) ifFalse:[
+		    self warnCommonMistake:'(possible common mistake) missing block brackets ?'
+			      position:pos2+1 to:tokenPosition-1
+		]
+	    ].
+	    ^ expr.
+	].
 
-        (sel = #whileTrue: or:[sel = #whileFalse:]) ifTrue:[
-            expr receiver isBlock ifFalse:[
-                (expr receiver isVariable
-                and:[ (expr receiver name asLowercase includesString:'block')]) ifFalse:[
-                    self warnCommonMistake:'(possible common mistake) missing block brackets ?'
-                              position:pos1 to:pos2
-                ]
-            ].
-            ^ expr.
-        ].
+	(sel = #whileTrue: or:[sel = #whileFalse:]) ifTrue:[
+	    expr receiver isBlock ifFalse:[
+		(expr receiver isVariable
+		and:[ (expr receiver name asLowercase includesString:'block')]) ifFalse:[
+		    self warnCommonMistake:'(possible common mistake) missing block brackets ?'
+			      position:pos1 to:pos2
+		]
+	    ].
+	    ^ expr.
+	].
 
-        (sel = #ifTrue: or:[sel = #ifFalse:]) ifTrue:[
-            expr receiver isMessage ifTrue:[
-                (expr receiver selector = #whileTrue or:[expr receiver selector = #whileFalse]) ifTrue:[
-                    self warnCommonMistake:'strange receiver expression'
-                              position:pos1 to:pos2
-                ].
-            ].
-            ^ expr
-        ].
+	(sel = #ifTrue: or:[sel = #ifFalse:]) ifTrue:[
+	    expr receiver isMessage ifTrue:[
+		(expr receiver selector = #whileTrue or:[expr receiver selector = #whileFalse]) ifTrue:[
+		    self warnCommonMistake:'strange receiver expression'
+			      position:pos1 to:pos2
+		].
+	    ].
+	    ^ expr
+	].
     ].
 
     ^ expr.
@@ -482,55 +482,55 @@
     (receiver == #Error) ifTrue:[^ #Error].
 
     [ self isValidUnarySelector:tokenType ] whileTrue:[
-        pos := tokenPosition.
-        pos2 := pos + tokenName size - 1.
-        lNr := tokenLineNr.
-        sel := tokenName.
+	pos := tokenPosition.
+	pos2 := pos + tokenName size - 1.
+	lNr := tokenLineNr.
+	sel := tokenName.
 
-        self markSelector:sel from:pos to:pos2 receiverNode:receiver.
-        lastSelectorElement := nil.
+	self markSelector:sel from:pos to:pos2 receiverNode:receiver.
+	lastSelectorElement := nil.
 
-        self nextToken.
-        tokenType == $( ifTrue:[
-            parserFlags allowSqueakExtensions == true ifTrue:[
-                "/ croquet/squeak extension - c/java-style arguments
-                arguments := self functionCallArgList.
-                "/ synthetic selector: foo[:[with:[with:[...]]]]
-                arguments notEmpty ifTrue:[
-                    sel := sel , ':'.
-                    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
-                ].
-                sel := self selectorCheck:sel for:receiver position:pos to:pos2.
-                expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
-                expr isErrorNode ifTrue:[
-                    self parseError:(expr errorString) position:pos to:pos2.
-                    errorFlag := false. "ok, user wants it - so he'll get it"
-                    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
-                ].
-                expr lineNumber:lNr.
-                self checkPlausibilityOf:expr from:pos to:pos2.
-                parseForCode ifFalse:[
-                    self rememberSelectorUsed:sel receiver:receiver
-                ].
-                ^ expr.
-            ].
-        ].
+	self nextToken.
+	tokenType == $( ifTrue:[
+	    parserFlags allowSqueakExtensions == true ifTrue:[
+		"/ croquet/squeak extension - c/java-style arguments
+		arguments := self functionCallArgList.
+		"/ synthetic selector: foo[:[with:[with:[...]]]]
+		arguments notEmpty ifTrue:[
+		    sel := sel , ':'.
+		    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
+		].
+		sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+		expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
+		expr isErrorNode ifTrue:[
+		    self parseError:(expr errorString) position:pos to:pos2.
+		    errorFlag := false. "ok, user wants it - so he'll get it"
+		    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
+		].
+		expr lineNumber:lNr.
+		self checkPlausibilityOf:expr from:pos to:pos2.
+		parseForCode ifFalse:[
+		    self rememberSelectorUsed:sel receiver:receiver
+		].
+		^ expr.
+	    ].
+	].
 
-        sel := self selectorCheck:sel for:receiver position:pos to:pos2.
-        expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
-        expr isErrorNode ifTrue:[
-            self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
-            errorFlag := false. "ok, user wants it - so he'll get it"
-            expr := UnaryNode receiver:receiver selector:sel fold:nil.
-        ].
-        expr lineNumber:lNr.
+	sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+	expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
+	expr isErrorNode ifTrue:[
+	    self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
+	    errorFlag := false. "ok, user wants it - so he'll get it"
+	    expr := UnaryNode receiver:receiver selector:sel fold:nil.
+	].
+	expr lineNumber:lNr.
 
-        self checkPlausibilityOf:expr from:pos to:pos2.
-        parseForCode ifFalse:[
-            self rememberSelectorUsed:sel receiver:receiver
-        ].
+	self checkPlausibilityOf:expr from:pos to:pos2.
+	parseForCode ifFalse:[
+	    self rememberSelectorUsed:sel receiver:receiver
+	].
 
-        receiver := expr.   "/ for next message
+	receiver := expr.   "/ for next message
     ].
     ^ receiver
 
@@ -546,7 +546,7 @@
     lastSelectorElement := nil.
     node := super binaryExpression.
     (lastSelectorElement notNil and:[node ~~ #Error and:[node isMessage]]) ifTrue:[
-        lastSelectorElement node parent: node.
+	lastSelectorElement node parent: node.
     ].
     lastSelectorElement := savedLastSelectorElement.
     ^node
@@ -562,10 +562,10 @@
     lastSelectorElement := nil.
     node := super expression.
     ((node ~~ #Error) and:[node isMessage]) ifTrue:[
-        [ lastSelectorElement notNil ] whileTrue:[
-            lastSelectorElement node parent: node.
-            lastSelectorElement := lastSelectorElement prev.            
-        ].
+	[ lastSelectorElement notNil ] whileTrue:[
+	    lastSelectorElement node parent: node.
+	    lastSelectorElement := lastSelectorElement prev.
+	].
     ].
     lastSelectorElement := savedLastSelectorElement.
     ^node
@@ -584,57 +584,57 @@
     (receiver == #Error) ifTrue:[^ #Error].
 
     [ self isValidUnarySelector:tokenType ] whileTrue:[
-        pos := tokenPosition.
-        pos2 := pos + tokenName size - 1.
-        lNr := tokenLineNr.
-        sel := tokenName.
+	pos := tokenPosition.
+	pos2 := pos + tokenName size - 1.
+	lNr := tokenLineNr.
+	sel := tokenName.
 
-        lastSelectorElement := nil.
-        self markSelector:sel from:pos to:pos2 receiverNode:receiver.
+	lastSelectorElement := nil.
+	self markSelector:sel from:pos to:pos2 receiverNode:receiver.
 
-        self nextToken.
-        tokenType == $( ifTrue:[
-            parserFlags allowSqueakExtensions == true ifTrue:[
-                "/ croquet/squeak extension - c/java-style arguments
-                arguments := self functionCallArgList.
-                "/ synthetic selector: foo[:[with:[with:[...]]]]
-                arguments notEmpty ifTrue:[
-                    sel := sel , ':'.
-                    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
-                ].
-                sel := self selectorCheck:sel for:receiver position:pos to:pos2.
-                expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
-                expr isErrorNode ifTrue:[
-                    self parseError:(expr errorString) position:pos to:pos2.
-                    errorFlag := false. "ok, user wants it - so he'll get it"
-                    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
-                ].
-                lastSelectorElement node parent: expr.
-                expr lineNumber:lNr.
-                self checkPlausibilityOf:expr from:pos to:pos2.
-                parseForCode ifFalse:[
-                    self rememberSelectorUsed:sel receiver:receiver
-                ].
-                ^ expr.
-            ].
-        ].
+	self nextToken.
+	tokenType == $( ifTrue:[
+	    parserFlags allowSqueakExtensions == true ifTrue:[
+		"/ croquet/squeak extension - c/java-style arguments
+		arguments := self functionCallArgList.
+		"/ synthetic selector: foo[:[with:[with:[...]]]]
+		arguments notEmpty ifTrue:[
+		    sel := sel , ':'.
+		    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
+		].
+		sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+		expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
+		expr isErrorNode ifTrue:[
+		    self parseError:(expr errorString) position:pos to:pos2.
+		    errorFlag := false. "ok, user wants it - so he'll get it"
+		    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
+		].
+		lastSelectorElement node parent: expr.
+		expr lineNumber:lNr.
+		self checkPlausibilityOf:expr from:pos to:pos2.
+		parseForCode ifFalse:[
+		    self rememberSelectorUsed:sel receiver:receiver
+		].
+		^ expr.
+	    ].
+	].
 
-        sel := self selectorCheck:sel for:receiver position:pos to:pos2.
-        expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
-        expr isErrorNode ifTrue:[
-            self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
-            errorFlag := false. "ok, user wants it - so he'll get it"
-            expr := UnaryNode receiver:receiver selector:sel fold:nil.
-        ].
-        expr lineNumber:lNr.
-        lastSelectorElement node parent: expr.
+	sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+	expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
+	expr isErrorNode ifTrue:[
+	    self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
+	    errorFlag := false. "ok, user wants it - so he'll get it"
+	    expr := UnaryNode receiver:receiver selector:sel fold:nil.
+	].
+	expr lineNumber:lNr.
+	lastSelectorElement node parent: expr.
 
-        self checkPlausibilityOf:expr from:pos to:pos2.
-        parseForCode ifFalse:[
-            self rememberSelectorUsed:sel receiver:receiver
-        ].
+	self checkPlausibilityOf:expr from:pos to:pos2.
+	parseForCode ifFalse:[
+	    self rememberSelectorUsed:sel receiver:receiver
+	].
 
-        receiver := expr.   "/ for next message
+	receiver := expr.   "/ for next message
     ].
     lastSelectorElement := savedLastSelectorElement.
     ^ receiver
@@ -650,13 +650,13 @@
     node := super variable.
     ignoreBadIdentifier := false.
     node isVariable ifTrue:[
-        | el prevEl |
+	| el prevEl |
 
-        el := elements newElementFor: node.
-        prevEl := lastVariableElements at:node name ifAbsent:[nil].
-        prevEl notNil ifTrue:[prevEl next:el].
-        lastVariableElements at:node name put:el.
-        elements add: el.
+	el := elements newElementFor: node.
+	prevEl := lastVariableElements at:node name ifAbsent:[nil].
+	prevEl notNil ifTrue:[prevEl next:el].
+	lastVariableElements at:node name put:el.
+	elements add: el.
     ].
     ^node
 
@@ -714,26 +714,26 @@
      marked specially (and not as an error when the class is not yet loaded -
      the code is correct as JavaClassAccessor loads it lazily"
     (aReceiverNode isJavaPackageReference) ifTrue:[
-        self
-            markFrom:pos1 to:pos2 
-            withEmphasis:preferences globalClassIdentifierEmphasis 
-            color: preferences globalClassIdentifierColor
+	self
+	    markFrom:pos1 to:pos2
+	    withEmphasis:preferences globalClassIdentifierEmphasis
+	    color: preferences globalClassIdentifierColor
     ] ifFalse:[
-        super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
+	super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
     ].
-    
+
     "don't create symbols for partial typed selectors"
     selectorSymbol := selectorString asSymbolIfInterned.
 
     element := elements newElementFor: (SelectorNode value: selectorString from: pos1 to: pos2).
 
     (lastSelectorElement notNil "and:[lastSelectorElement value = selectorString]") ifTrue:[
-        lastSelectorElement next: element.
+	lastSelectorElement next: element.
     ].
     elements add: element.
     lastSelectorElement := "(self isValidUnarySelector:tokenType)"false
-                                ifTrue:[nil] 
-                                ifFalse:[element].
+				ifTrue:[nil]
+				ifFalse:[element].
 
     "Created: / 14-02-2010 / 17:40:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -765,4 +765,3 @@
 version_SVN
     ^ '$Id: SyntaxHighlighter2.st,v 1.15 2013-06-23 10:44:44 cg Exp $'
 ! !
-