Hi All,<div><br></div><div> I have just found out why some recent images of ours at Teleplace aren't logging doits; the system notifications are missing Smalltalk as a target. If you look at senders of SystemChangeNotifier>>notify:ofAllSystemChangesUsing: in trunk you'll see the following three key senders (ignoring tests)</div>
<div><br></div><div> ChangeSet class>>newChanges: - ensures change sets keep up to date with changes</div><div> Preferences class>>registerForEvents - ensures prefs stay up to date when methods with preference method tags get added/removed</div>
<div> Utilities class>>startUp - ensures recent submissions are maintained</div><div><br></div><div>SmalltalkImage is conspicuously absent, yet</div><div><br></div><div><div>|<span class="Apple-tab-span" style="white-space:pre">        </span>| am |</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>am := (SystemChangeNotifier uniqueInstance instVarNamed: 'eventSource') actionMap.</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>am keys select:</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>[:k| | e |</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>(e := am at: k) isArray</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>ifTrue: [e anySatisfy: [:seq| seq receiver == Smalltalk]]</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>ifFalse: [e receiver == Smalltalk]]</div><div><span class="Apple-tab-span" style="white-space:pre">                </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>#(#protocolRenamedEvent: #methodModifiedEvent: #protocolAddedEvent: #categoryRemovedEvent: #expressionDoItEvent: #methodRemovedEvent: #classReorganizedEvent: #protocolModifiedEvent: #categoryModifiedEvent: #classRenamedEvent: #protocolRemovedEvent: #classRemovedEvent: #classAddedEvent: #categoryRenamedEvent: #classModifiedEvent: #methodRecategorizedEvent: #classCommentedEvent: #methodAddedEvent: #classRecategorizedEvent: #categoryAddedEvent:)</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>| am |</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>am := (SystemChangeNotifier uniqueInstance instVarNamed: 'eventSource') actionMap.</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>am keys reject:</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>[:k| | e |</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>(e := am at: k) isArray</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>ifTrue: [e anySatisfy: [:seq| seq receiver == Smalltalk]]</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>ifFalse: [e receiver == Smalltalk]]</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>#(#methodReorganizedEvent: #methodCommentedEvent: #methodDoItEvent: #categoryRecategorizedEvent: #methodRenamedEvent:)</div></div><div><br></div>
<div>and there's the rub. Why isn't Smalltalk a target of all events? Why does it exclude #methodReorganizedEvent: #methodCommentedEvent: #methodDoItEvent: #categoryRecategorizedEvent: #methodRenamedEvent:? Is this merely accident?</div>
<div><br></div><div>I'm pretty sure that SmalltalkImage class>>startUp needs to ensure system notifications are up-to-date, but are the above exclusions missing for any reason? It's kind of hard to figure out (see below). I *think* that it should read</div>
<div><br></div><div>SmalltalkImage class>>startUp</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>"XXXX: This is broken. SmalltalkImage startUp happens quite late in the startup sequence; earlier startups may very well need the information about the endianness of the platform."</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>EndianCache := nil.</div><div><span class="Apple-tab-span" style="white-space: pre; ">        SystemChangeNotifier uniqueInstance notify: </span>Smalltalk<span class="Apple-tab-span" style="white-space: pre; "> ofAllSystemChangesUsing: #event:</span></div>
<div><span class="Apple-tab-span" style="white-space: pre; "><br></span></div><div><span class="Apple-tab-span" style="white-space: pre; ">b</span>ut I thought I'd check with y'all.</div><div><br></div><div>and finally when can we reimplement this entire mess using e.g. Anouncements, I mean:</div>
<div><br></div><div>AbstractEvent>>eventSelector</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>^self class eventSelectorBlock value: itemKind value: self changeKind</div><div>
<br></div><div>AbstractEvent class>>eventSelectorBlock</div><div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>^[:itemKind :changeKind | itemKind, changeKind, 'Event:']</div>
</div><div><br></div><div>Surely this is too direct and easy to understand ;) I mean who /needs/ senders and implementors to work?</div><div><br></div><div>grrr....</div><div>Eliot</div>