SyntaxHighlighter2.st
changeset 14056 1b0f6f3c4bbd
parent 13844 c2938013239e
child 14299 163fd5573c17
--- a/SyntaxHighlighter2.st	Tue Feb 25 22:55:30 2014 +0100
+++ b/SyntaxHighlighter2.st	Tue Feb 25 23:04:06 2014 +0100
@@ -929,106 +929,35 @@
 
     "Modified: / 19-01-2012 / 10:47:37 / cg"
     "Created: / 16-02-2012 / 23:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-variable
-    | node |
-
-    ignoreBadIdentifier := classToCompileFor isNil.
-    node := super variable.
-    ignoreBadIdentifier := false.
-    node isVariable ifTrue:[
-	| 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.
-    ].
-    ^node
-
-    "Modified: / 19-01-2000 / 16:22:16 / cg"
-    "Created: / 16-02-2012 / 22:21:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !SyntaxHighlighter2 methodsFor:'syntax detection'!
 
-markArgumentIdentifierFrom:pos1 to:pos2
-    | node el prevEl |
+markLocalVariableDeclaration: name from:pos1 to:pos2
+    | type node |
 
-    super markArgumentIdentifierFrom:pos1 to:pos2.
-    node := VariableNode methodArgumentNamed:(sourceText string copyFrom: pos1 to: pos2).
+    super markLocalVariableDeclaration: name from:pos1 to:pos2.
+
+    type := currentBlock notNil ifTrue:[#BlockVariable] ifFalse:[#MethodVariable].
+    node := VariableNode type: type name: name.
     node startPosition: pos1 endPosition: pos2.
-    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.
+    self rememberVariableElementFor: node from: pos1 to: pos2 assigned: false.
+
+    "Created: / 25-02-2014 / 20:22:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+markMethodArgumentIdentifierFrom:pos1 to:pos2
+    | node |
+
+    super markMethodArgumentIdentifierFrom:pos1 to:pos2.
+
+    node := VariableNode methodArgumentNamed:(sourceText string copyFrom: pos1 to: pos2).
+    node startPosition: pos1 endPosition: pos2.    
+    self rememberVariableElementFor: node from:pos1 to:pos2 assigned:false
 
     "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-08-2011 / 09:27:26 / cg"
-    "Modified: / 16-02-2012 / 22:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-markAssignedVariable:v from:pos to:endPos
-    super markAssignedVariable:v from:pos to:endPos.
-    (v type == #GlobalVariable) ifTrue:[^self].
-
-    self rememberVariableElementFor:v name type:v type from:pos to:endPos assigned:true
-!
-
-markBadIdentifierFrom:pos1 to:pos2
-
-    super markBadIdentifierFrom:pos1 to:pos2
-
-    "Created: / 17-03-2012 / 19:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-markGlobalClassIdentifierFrom:pos1 to:pos2
-
-    | name env cls |
-
-    super markGlobalClassIdentifierFrom:pos1 to:pos2.
-
-    name := token isString ifTrue:[token asSymbolIfInterned] ifFalse:[nil].
-    name notNil ifTrue:[
-        env := (classToCompileFor ? UndefinedObject) theNonMetaclass environment.
-        cls := env isNameSpace ifTrue:[env at: name] ifFalse:[nil].
-        cls isNil ifTrue:[
-            cls := Smalltalk at: name
-        ]
-    ].
-
-    elements add: ((SyntaxElementVariable from: pos1 to: pos2 type: #class value: cls) name:name)
-
-    "Created: / 14-02-2010 / 14:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 15-02-2010 / 10:53:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:54:53 / cg"
-!
-
-markLocalIdentifierFrom:pos1 to:pos2
-    | node el prevEl |
-
-    super markLocalIdentifierFrom:pos1 to:pos2.
-    node := VariableNode methodLocalNamed:(sourceText string copyFrom: pos1 to: pos2).
-    node startPosition: pos1 endPosition: pos2.
-    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.
-
-    "Modified: / 21-08-2011 / 09:27:26 / cg"
-    "Created: / 16-02-2012 / 22:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-markMethodArgumentIdentifierFrom:pos1 to:pos2
-    super markMethodArgumentIdentifierFrom:pos1 to:pos2.
-    self rememberVariableElementFor:tokenName type:#MethodArg from:pos1 to:pos2 assigned:false
-
-    "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-08-2011 / 09:27:26 / cg"
+    "Modified: / 25-02-2014 / 12:15:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
@@ -1067,10 +996,30 @@
 !
 
 markSelfFrom:pos1 to:pos2
+    | node |
+
     super markSelfFrom:pos1 to:pos2.
-    self rememberVariableElementFor:'self' type:#self from:pos1 to:pos2
+
+    node := SelfNode new.
+    node startPosition: pos1 endPosition: pos2.  
+    node type: #Self.
+    self rememberVariableElementFor: node from:pos1 to:pos2 assigned:false
 
     "Created: / 21-08-2011 / 09:15:45 / cg"
+    "Modified: / 25-02-2014 / 21:56:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+markSuperFrom:pos1 to:pos2
+    | node |
+
+    super markSuperFrom:pos1 to:pos2.
+
+    node := SuperNode new.
+    node startPosition: pos1 endPosition: pos2.  
+    node type: #Super.
+    self rememberVariableElementFor: node from:pos1 to:pos2 assigned:false
+
+    "Created: / 25-02-2014 / 21:57:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 markUnknownIdentifierFrom:pos1 to:pos2
@@ -1084,51 +1033,46 @@
 !
 
 markVariable:v from:pos1 to:pos2 assigned:assigned
+    self rememberVariableElementFor:v from:pos1 to:pos2 assigned:assigned.
     super markVariable:v from:pos1 to:pos2 assigned:assigned.
-    (v type == #GlobalVariable) ifTrue:[^self].
-    assigned ifTrue:[^ self].       "/ already done in redefined markAssignedVariable...
-
-    self rememberVariableElementFor:v name type:v type from:pos1 to:pos2 assigned:false
 
     "Created: / 25-06-2010 / 13:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-06-2010 / 14:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-08-2011 / 09:26:30 / cg"
+    "Modified: / 25-02-2014 / 14:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2 
-    self rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2 assigned:false
-!
+rememberVariableElementFor:node from:pos1 to:pos2 assigned:assigned
+    |name typeSymbol element prev|
 
-rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2 assigned:assigned
-    |element prev|
-
+    name := node name.
+    typeSymbol := node type.
     prev := (lastVariableElements at:typeSymbol ifAbsentPut:[Dictionary new]) at:name ifAbsent:[nil].
     (prev notNil and:[prev start == pos1]) ifTrue:[
-        prev assigned:assigned.
+"/        prev assigned:assigned.
         ^ self
     ].
 
-    element := (SyntaxElementVariable from: pos1 to: pos2 type:typeSymbol value: name assigned:assigned) name:name.
+    element := elements newElementFor: node.
 
     prev notNil ifTrue:[prev next:element].
     (lastVariableElements at:typeSymbol) at:name put:element.
 
     elements add: element.
 
-    "Created: / 21-08-2011 / 09:26:24 / cg"
+    "Created: / 25-02-2014 / 12:13:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !SyntaxHighlighter2 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.19 2014-02-05 18:59:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.20 2014-02-25 22:04:06 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.19 2014-02-05 18:59:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.20 2014-02-25 22:04:06 vrany Exp $'
 !
 
 version_SVN
-    ^ '$Id: SyntaxHighlighter2.st,v 1.19 2014-02-05 18:59:09 cg Exp $'
+    ^ '$Id: SyntaxHighlighter2.st,v 1.20 2014-02-25 22:04:06 vrany Exp $'
 ! !