On Mar 20, 2011, at 9:59 AM, Lukas Renggli wrote: > Yes, I looked at it and I gave detailed feedback in my previous mails. > > No, I won't include it for the reasons given in my previous mails. > Your changes subtly break assumptions made by any user of > BrowserEnvironment (in addition to unnecessarily changing the API), > but I am not going to repeat that and how to solve it differently a > fourth time :-(
Too bad that you are stubborn. I'm too. The changes we are proposing to not break the default use of the system. ***All the queries that a normal user will do will share the same default environment *** and only when we will need to browse/query another systemDictionary we will have to make sure that the environment points to the right systemDictionary and that the queries access this root (which they do). Show me how this is wrong. We need it. So if you do not want to help I cannot do too much and I will fork because all our efforts to make the system parameterized will not be blocked just because you do not want to take 5 min to listen carefully what we are saying. Stef > > Lukas > > On 20 March 2011 09:43, Stéphane Ducasse <[email protected]> wrote: >> So lukas >> - did you check what we did? >> - will you include in rb packages? >> I need to know. >> >> Stef >> >> On Mar 19, 2011, at 7:55 AM, Stéphane Ducasse wrote: >> >>> Let us be more productive :) >>> >>> A BrowserEnvironment >>> has an environment input= a systemDictionary (may be we should call >>> it origin) >>> a selectedEnviroment = a composite based on the BrowserEnvironment >>> hierarchy >>> >>> The precondition is that it does not make sense to mix apple and orange so >>> selectedEnvironment inside a composite to be meaningfull should sahre the >>> same origin. >>> >>> Now it does not mean that we cannot have different composite over the same >>> origin (ie we have >>> multiple queries over Smalltalk globals) or that we cannot have different >>> and separate composite >>> working on different origin (ie I have a selection on Pharo1.2 and one on >>> Pharo1.3 or a remote one). >>> >>> >>> On Mar 18, 2011, at 10:09 PM, Lukas Renggli wrote: >>> >>>> - BrowserEnvironment>>#copyEmpty >>> >>> copyEmpty >>> ^ self class new on: SystemDictionary new; yourself. >>> >>>> - BrowserEnvironment>>#& >>> >>> & anEnvironment >>> "If we or anEnvironment includes everything, then just include the >>> other environment (optimization)" >>> >>> self isSystem ifTrue: [^anEnvironment]. >>> anEnvironment isSystem ifTrue: [^self]. >>> ^AndEnvironment onEnvironment: self and: anEnvironment >>> >>> does not change >>> >>> >>>> - BrowserEnvironment>>#I >>> >>> | anEnvironment >>> "If we or anEnvironment includes everything, then return it instead >>> of creating >>> an or that will include everything." >>> >>> self isSystem ifTrue: [^self]. >>> anEnvironment isSystem ifTrue: [^anEnvironment]. >>> ^ OrEnvironment onEnvironment: self or: anEnvironment >>> >>>> - BrowserEnvironment>>#not >>> not >>> self isSystem ifTrue: [^SelectorEnvironment new]. >>> ^NotEnvironment onEnvironment: self >>> >>> >>> >>>> - BrowserEnvironment>>#isSystem >>> isSystem >>> ^true >>> >>> No problem (this could be renamed isOriginalInput but we keep it for >>> compatibiity >>> >>>> - ClassEnvironment>>#classesDo: >>> >>> classesDo: aBlock >>> classes do: [ :each | >>> | class | >>> class := Smalltalk globals at: each ifAbsent: [ nil ]. >>> (class notNil and: [ environment includesClass: class ]) >>> ifTrue: [ aBlock value: class ] ]. >>> metaClasses do: [ :each | >>> | class | >>> class := Smalltalk globals at: each ifAbsent: [ nil ]. >>> (class notNil and: [ environment includesClass: class class ]) >>> ifTrue: [ aBlock value: class class ] ] >>> We already fixed it. >>> >>> classesDo: aBlock >>> classes do: [ :each | >>> | class | >>> class := self environment at: each ifAbsent: [ nil ]. >>> (class notNil and: [ selectedEnvironment includesClass: class >>> ]) >>> ifTrue: [ aBlock value: class ] ]. >>> metaClasses do: [ :each | >>> | class | >>> class := self environment at: each ifAbsent: [ nil ]. >>> (class notNil and: [ selectedEnvironment includesClass: class >>> class ]) >>> ifTrue: [ aBlock value: class class ] ] >>> >>>> - SelectorEnvironment>>#classesDo: >>> >>> classesDo: aBlock >>> classSelectors keysDo: [ :each | >>> | class | >>> class := Smalltalk globals at: each ifAbsent: [ nil ]. >>> (class notNil and: [ environment includesClass: class ]) >>> ifTrue: [ aBlock value: class ] ]. >>> metaClassSelectors keysDo: [ :each | >>> | class | >>> class := Smalltalk globals at: each ifAbsent: [ nil ]. >>> (class notNil and: [ environment includesClass: class class ]) >>> ifTrue: [ aBlock value: class class ] ] >>> >>> again we already fixed it. >>> >>> classesDo: aBlock >>> classes do: [ :each | >>> | class | >>> class := self environment at: each ifAbsent: [ nil ]. >>> (class notNil and: [ selectedEnvironment includesClass: class >>> ]) >>> ifTrue: [ aBlock value: class ] ]. >>> metaClasses do: [ :each | >>> | class | >>> class := self environment at: each ifAbsent: [ nil ]. >>> (class notNil and: [ selectedEnvironment includesClass: class >>> class ]) >>> ifTrue: [ aBlock value: class class ] ] >>> >>> >>> So does it make sense? >>> I think so. >>> We just have a common input for a given composite. >>> >>> Stef >> >> >> > > > > -- > Lukas Renggli > www.lukas-renggli.ch >
