--- 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 $'
! !