SyntaxHighlighter2.st
changeset 10633 48c904090606
parent 10428 777230dbf7ab
child 10882 fed2030884dc
--- a/SyntaxHighlighter2.st	Sun Aug 21 12:25:36 2011 +0200
+++ b/SyntaxHighlighter2.st	Sun Aug 21 12:25:51 2011 +0200
@@ -26,7 +26,7 @@
 "{ Package: 'stx:libtool' }"
 
 SyntaxHighlighter subclass:#SyntaxHighlighter2
-	instanceVariableNames:'elements lastSelectorElement lastVariableElement'
+	instanceVariableNames:'elements lastVariableElements lastSelectorElement'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-CodeView-Syntax'
@@ -217,7 +217,11 @@
 !
 
 elements:something
+    "the element collection, to collect variables, selectors etc. into"
+
     elements := something.
+
+    "Modified (comment): / 21-08-2011 / 09:13:31 / cg"
 ! !
 
 !SyntaxHighlighter2 methodsFor:'initialization'!
@@ -226,10 +230,11 @@
 
     super initialize.
     elements := SortedCollection new.
-    lastVariableElement := Dictionary new.
+    lastVariableElements := Dictionary new.
 
     "Created: / 14-02-2010 / 13:08:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-06-2010 / 13:04:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-08-2011 / 09:37:35 / cg"
 ! !
 
 !SyntaxHighlighter2 methodsFor:'parsing-expressions'!
@@ -683,17 +688,11 @@
 !SyntaxHighlighter2 methodsFor:'syntax detection'!
 
 markArgumentIdentifierFrom:pos1 to:pos2
-
-    | element prev |
-
     super markArgumentIdentifierFrom:pos1 to:pos2.
-    element := SyntaxElement from: pos1 to: pos2 type: #variable value: tokenName.
-    prev := lastVariableElement at: tokenName ifAbsent:[nil].
-    prev ifNotNil:[prev next:element].
-    lastVariableElement at: tokenName put:element.
-    elements add: element.
+    self rememberVariableElementFor:tokenName type:#variable from:pos1 to:pos2
 
     "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-08-2011 / 09:27:26 / cg"
 !
 
 markGlobalClassIdentifierFrom:pos1 to:pos2
@@ -719,16 +718,12 @@
 !
 
 markLocalIdentifierFrom:pos1 to:pos2
-    | element prev |
+    super markLocalIdentifierFrom:pos1 to:pos2.
 
-    super markLocalIdentifierFrom:pos1 to:pos2.
-    element := SyntaxElement from: pos1 to: pos2 type: #variable value: tokenName.
-    prev := lastVariableElement at: tokenName ifAbsent:[nil].
-    prev ifNotNil:[prev next:element].
-    lastVariableElement at: tokenName put:element.
-    elements add: element.
+    self rememberVariableElementFor:tokenName type:#variable from:pos1 to:pos2
 
     "Created: / 24-07-2010 / 09:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 21-08-2011 / 09:27:12 / cg"
 !
 
 markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
@@ -738,13 +733,20 @@
     super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
 
     element := SyntaxElement from: pos1 to: pos2 type: #selector value: selectorString asSymbol.
-    lastSelectorElement 
-        ifNotNil:[lastSelectorElement next: element].
+    lastSelectorElement ifNotNil:[lastSelectorElement next: element].
     elements add: element.
     lastSelectorElement := 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>"
+    "Modified (format): / 21-08-2011 / 09:18:21 / cg"
+!
+
+markSelfFrom:pos1 to:pos2
+    super markSelfFrom:pos1 to:pos2.
+    self rememberVariableElementFor:'self' type:#self from:pos1 to:pos2
+
+    "Created: / 21-08-2011 / 09:15:45 / cg"
 !
 
 markUnknownIdentifierFrom:pos1 to:pos2
@@ -758,26 +760,34 @@
 !
 
 markVariable:v from:pos1 to:pos2
-
-    | element prev |
     super markVariable:v from:pos1 to:pos2.
     (v type == #GlobalVariable) ifTrue:[^self].
 
-    element := SyntaxElement from: pos1 to: pos2 type: #variable value: v name.
-
-    prev := lastVariableElement at: v name ifAbsent:[nil].
-    prev ifNotNil:[prev next:element].
-    lastVariableElement at: v name put:element.
-    elements add: element.
+    self rememberVariableElementFor:v name type:#variable from:pos1 to:pos2
 
     "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"
+!
+
+rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2
+    |element prev|
+
+    element := SyntaxElement from: pos1 to: pos2 type:typeSymbol value: name.
+
+    prev := lastVariableElements at:name ifAbsent:[nil].
+    prev notNil ifTrue:[prev next:element].
+    lastVariableElements at:name put:element.
+
+    elements add: element.
+
+    "Created: / 21-08-2011 / 09:26:24 / cg"
 ! !
 
 !SyntaxHighlighter2 class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.5 2011-08-02 07:36:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.6 2011-08-21 10:25:51 cg Exp $'
 !
 
 version_SVN