ChangesBrowser.st
changeset 6378 d29af7307c7c
parent 6357 95e37428f3aa
child 6386 08b529345d57
--- a/ChangesBrowser.st	Fri Aug 12 16:46:45 2005 +0200
+++ b/ChangesBrowser.st	Mon Sep 05 23:09:22 2005 +0200
@@ -3172,111 +3172,114 @@
 
     className := self classNameOfChange:changeNr.
     className notNil ifTrue:[
-	className := className asSymbol.
-	changeClass := Smalltalk at:className ifAbsent:[].
-	changeClass notNil ifTrue:[
-	    changeClass autoload
-	]
+        className := className asSymbol.
+        changeClass := Smalltalk at:className ifAbsent:[].
+        changeClass isNil ifTrue:[
+            changeClass := self classOfChange:changeNr.
+        ].
+        changeClass notNil ifTrue:[
+            changeClass autoload
+        ]
     ].
 
     changeNrProcessed := changeNr.
     aborted := false.
 
     applyAction :=
-	[
-	    (skipSignal notNil) ifTrue:[
-		sig := skipSignal
-	    ] ifFalse:[
-		sig := AbortOperationRequest
-	    ].
-	    sig handle:[:ex |
-		aborted := true.
-		ex return.
-	    ] do:[
-		nameSpace := self nameSpaceForApply.
-
-		pkg := enforcedPackage ? Class packageQuerySignal query.
-		Class packageQuerySignal answer:pkg
-		do:[
-		    Class nameSpaceQuerySignal answer:nameSpace
-		    do:[
-			"/ a followup methodsFor: chunk ...
-			(self changeIsFollowupMethodChange:changeNr) ifTrue:[
-			    methodsForChunk := (changeChunks at:changeNr).
-			] ifFalse:[
-			    doItChunk := aStream nextChunk.   "/ an empty chunk sometimes ...
-			    doItChunk notEmpty ifTrue:[
-				Compiler evaluate:doItChunk notifying:self.
-			    ] ifFalse:[
-				methodsForChunk := aStream nextChunk.   "/ the real one
-			    ]
-			].
-			methodsForChunk notNil ifTrue:[
-			    changeClass isNil ifTrue:[
-				orgClassName := className.
-
-				(className includes:$:) ifTrue:[
-				    ownerName := className copyTo:(className lastIndexOf:$:) - 1.
-				    (ownerName endsWith:$:) ifTrue:[
-					ownerName := ownerName copyWithoutLast:1.
-				    ].
-
-				    ownerClass := Smalltalk at:(ownerName asSymbol) ifAbsent:[].
-				    ownerClass notNil ifTrue:[
-					ownerClass autoload
-				    ].
-				].
-				(nameSpace notNil and:[nameSpace ~~ Smalltalk]) ifTrue:[
-				    changeClass := nameSpace at:className ifAbsent:[].
-				].
-				changeClass isNil ifTrue:[
-				    changeClass := Smalltalk at:className ifAbsent:[].
-				].
-				[changeClass isNil] whileTrue:[
-				    (NameSpace allNamespaces
-					detect:[:ns | (nsClass := (ns at:className)) notNil] ifNone:nil)
-				    notNil ifTrue:[
-					shortName := nsClass name.
-				    ] ifFalse:[
-					shortName := className copyFrom:(className lastIndexOf:$:) + 1.
-					shortName = className ifTrue:[
-					     shortName := ''
-					].
-				    ].
-				    className := Dialog
-						    request:'No class ''' , className , ''' for change. Add to which class ?'
-						    initialAnswer:shortName.
-
-				    className size == 0 ifTrue:[
-					^ self
-				    ].
-				    alternativeClass := Smalltalk classNamed:className.
-				    alternativeClass notNil ifTrue:[
-					changeClass := alternativeClass
-				    ]
-				].
-				methodsForChunk := methodsForChunk copyFrom:(methodsForChunk indexOfSeparator).
-				methodsForChunk := changeClass name , methodsForChunk.
-			    ].
-
-			    reader := Compiler evaluate:methodsForChunk notifying:self.
-			    reader fileInFrom:aStream notifying:self passChunk:false single:true.
-			]
-		    ]
-		]
-	    ].
-	    changeNrProcessed := nil.
-	].
+        [
+            (skipSignal notNil) ifTrue:[
+                sig := skipSignal
+            ] ifFalse:[
+                sig := AbortOperationRequest
+            ].
+            sig handle:[:ex |
+                aborted := true.
+                ex return.
+            ] do:[
+                nameSpace := self nameSpaceForApply.
+
+                pkg := enforcedPackage ? Class packageQuerySignal query.
+                Class packageQuerySignal answer:pkg
+                do:[
+                    Class nameSpaceQuerySignal answer:nameSpace
+                    do:[
+                        "/ a followup methodsFor: chunk ...
+                        (self changeIsFollowupMethodChange:changeNr) ifTrue:[
+                            methodsForChunk := (changeChunks at:changeNr).
+                        ] ifFalse:[
+                            doItChunk := aStream nextChunk.   "/ an empty chunk sometimes ...
+                            doItChunk notEmpty ifTrue:[
+                                Compiler evaluate:doItChunk notifying:self.
+                            ] ifFalse:[
+                                methodsForChunk := aStream nextChunk.   "/ the real one
+                            ]
+                        ].
+                        methodsForChunk notNil ifTrue:[
+                            changeClass isNil ifTrue:[
+                                orgClassName := className.
+
+                                (className includes:$:) ifTrue:[
+                                    ownerName := className copyTo:(className lastIndexOf:$:) - 1.
+                                    (ownerName endsWith:$:) ifTrue:[
+                                        ownerName := ownerName copyWithoutLast:1.
+                                    ].
+
+                                    ownerClass := Smalltalk at:(ownerName asSymbol) ifAbsent:[].
+                                    ownerClass notNil ifTrue:[
+                                        ownerClass autoload
+                                    ].
+                                ].
+                                (nameSpace notNil and:[nameSpace ~~ Smalltalk]) ifTrue:[
+                                    changeClass := nameSpace at:className ifAbsent:[].
+                                ].
+                                changeClass isNil ifTrue:[
+                                    changeClass := Smalltalk at:className ifAbsent:[].
+                                ].
+                                [changeClass isNil] whileTrue:[
+                                    (NameSpace allNamespaces
+                                        detect:[:ns | (nsClass := (ns at:className)) notNil] ifNone:nil)
+                                    notNil ifTrue:[
+                                        shortName := nsClass name.
+                                    ] ifFalse:[
+                                        shortName := className copyFrom:(className lastIndexOf:$:) + 1.
+                                        shortName = className ifTrue:[
+                                             shortName := ''
+                                        ].
+                                    ].
+                                    className := Dialog
+                                                    request:'No class ''' , className , ''' for change. Add to which class ?'
+                                                    initialAnswer:shortName.
+
+                                    className size == 0 ifTrue:[
+                                        ^ self
+                                    ].
+                                    alternativeClass := Smalltalk classNamed:className.
+                                    alternativeClass notNil ifTrue:[
+                                        changeClass := alternativeClass
+                                    ]
+                                ].
+                                methodsForChunk := methodsForChunk copyFrom:(methodsForChunk indexOfSeparator).
+                                methodsForChunk := changeClass name , methodsForChunk.
+                            ].
+
+                            reader := Compiler evaluate:methodsForChunk notifying:self.
+                            reader fileInFrom:aStream notifying:self passChunk:false single:true.
+                        ]
+                    ]
+                ]
+            ].
+            changeNrProcessed := nil.
+        ].
 
     "/
     "/ if I am showing the changes file, dont update it
     "/
     changeFileName = ObjectMemory nameForChanges ifTrue:[
-	Class withoutUpdatingChangesDo:[
-	    Class updateChangeListQuerySignal answer:updateChangeSet value do:applyAction
-	]
+        Class withoutUpdatingChangesDo:[
+            Class updateChangeListQuerySignal answer:updateChangeSet value do:applyAction
+        ]
     ] ifFalse:[
-	applyAction value
+        applyAction value
     ].
     aStream close.
 
@@ -4050,6 +4053,9 @@
                 newSource := aStream nextChunk.
 
                 thisClass := (parseTree receiver evaluate).
+                thisClass isBehavior ifFalse:[
+                    thisClass := self classOfChange:changeNr.
+                ].
                 thisClass isBehavior ifTrue:[
                     (thisClass isLoaded
                     or:[ autoloadAsRequired value
@@ -4344,35 +4350,41 @@
 
     className := self realClassNameOfChange:changeNr.
     className isNil ifTrue:[
-	^ exceptionBlock value:nil
+        ^ exceptionBlock value:nil
     ].
 
     isMeta := false.
     (className endsWith:' class') ifTrue:[
-	className := className copyWithoutLast:6.
-	isMeta := true.
+        className := className copyWithoutLast:6.
+        isMeta := true.
     ].
 
     (cls := (self nameSpaceForApply) classNamed:className) isNil ifTrue:[
-	cls := Smalltalk classNamed:className
+        cls := Smalltalk classNamed:className
     ].
 
     cls isNil ifTrue:[
-	(className includes:$:) ifTrue:[
-	    ownerClassName := className copyTo:(className lastIndexOf:$:)-1.
-	    (ownerClassName endsWith:$:) ifTrue:[ ownerClassName := ownerClassName copyWithoutLast:1 ].
-	    ownerClass := Smalltalk classNamed:ownerClassName.
-	    ownerClass isBehavior ifTrue:[
-		ownerClass isLoaded ifFalse:[
-"/ self halt.
-		].
-	    ].
-	].
-	^ exceptionBlock value:className
+        (className includes:$:) ifTrue:[
+            ownerClassName := className copyTo:(className lastIndexOf:$:)-1.
+            (ownerClassName endsWith:$:) ifTrue:[ 
+                ownerClassName := ownerClassName copyWithoutLast:1 
+            ].
+            ownerClass := Smalltalk classNamed:ownerClassName.
+            ownerClass isBehavior ifTrue:[
+                ownerClass isLoaded ifFalse:[
+                    autoloadAsRequired value == true ifTrue:[
+                        ownerClass autoload.
+                        cls := Smalltalk classNamed:className
+                    ].
+                ].
+            ].
+        ].
     ].
-
+    cls isNil ifTrue:[
+        ^ exceptionBlock value:className
+    ].
     isMeta ifTrue:[
-	cls := cls class
+        cls := cls class
     ].
     ^ cls
 !
@@ -5666,5 +5678,5 @@
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.333 2005-07-13 15:53:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.334 2005-09-05 21:09:22 cg Exp $'
 ! !