<div dir="ltr">Hi Chris,<div><br></div><div>    two things.  First this is an opportunity to replace <span style="color:rgb(0,0,0);font-size:12.800000190734863px"> </span><font color="#000000"><span style="font-size:12.800000190734863px">(class isKindOf: Behavior) with class isBehavior.  Second, why delete mail out bug report?  It's still useful right?</span></font></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 8, 2018 at 8:59 PM,  <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Chris Muller uploaded a new version of Tools to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Tools-cmm.812.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/<wbr>trunk/Tools-cmm.812.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Tools-cmm.812<br>
Author: cmm<br>
Time: 8 May 2018, 10:59:15.586524 pm<br>
UUID: d05b5ccd-cc99-4f00-85b1-<wbr>264218092ef2<br>
Ancestors: Tools-dtl.811<br>
<br>
- Integrate newly-defined classes into the hierarchy list of a HierarchyBrowser without muting the other classes.  If it's outside the hierarchy, spawn it in a new window.<br>
- Bug reports can contain sensitive and/or private information (variable values), so use care when sending them electronically.  'copy bug report to clipboard' replaced 'mail out bug report' on the debugger menu.<br>
<br>
=============== Diff against Tools-dtl.811 ===============<br>
<br>
Item was changed:<br>
  ----- Method: Browser>>defineClass:<wbr>notifying: (in category 'class functions') -----<br>
  defineClass: defString notifying: aController  <br>
        "The receiver's textual content is a request to define a new class. The<br>
        source code is defString. If any errors occur in compilation, notify<br>
        aController."<br>
        | oldClass class newClassName defTokens keywdIx envt |<br>
        oldClass := self selectedClassOrMetaClass.<br>
        defTokens := defString findTokens: Character separators.<br>
<br>
        ((defTokens first = 'Trait' and: [defTokens second = 'named:'])<br>
                or: [defTokens second = 'classTrait'])<br>
                ifTrue: [^self defineTrait: defString notifying: aController].<br>
<br>
        keywdIx := defTokens findFirst: [:x | x beginsWith: 'category'].<br>
        envt := self selectedEnvironment.<br>
        keywdIx := defTokens findFirst: [:x | '*subclass*' match: x].<br>
        newClassName := (defTokens at: keywdIx+1) copyWithoutAll: '#()'.<br>
        ((oldClass isNil or: [oldClass theNonMetaClass name asString ~= newClassName])<br>
                and: [envt includesKey: newClassName asSymbol]) ifTrue:<br>
                        ["Attempting to define new class over existing one when<br>
                                not looking at the original one in this browser..."<br>
                        (self confirm: ((newClassName , ' is an existing class in this system.<br>
  Redefining it might cause serious problems.<br>
  Is this really what you want to do?') asText makeBoldFrom: 1 to: newClassName size))<br>
                                ifFalse: [^ false]].<br>
        "ar 8/29/1999: Use oldClass superclass for defining oldClass<br>
        since oldClass superclass knows the definerClass of oldClass."<br>
        oldClass ifNotNil:[oldClass := oldClass superclass].<br>
        class := envt beCurrentDuring: <br>
                [oldClass subclassDefinerClass<br>
                                evaluate: defString<br>
                                in: envt<br>
                                notifying: aController<br>
                                logged: false].<br>
        (class isKindOf: Behavior)<br>
+               ifTrue: [self changed: #systemCategoryList; changed: #classList.<br>
+                               self clearUserEditFlag; spawnOrNavigateTo: class.<br>
-               ifTrue: [self changed: #systemCategoryList.<br>
-                               self changed: #classList.<br>
-                               self clearUserEditFlag.<br>
-                               self setClass: class selector: nil.<br>
-                               "self clearUserEditFlag; editClass."<br>
                                ^ true]<br>
                ifFalse: [^ false]!<br>
<br>
Item was added:<br>
+ ----- Method: Browser>>spawnOrNavigateTo: (in category 'private') -----<br>
+ spawnOrNavigateTo: aClass<br>
+       self setClass: aClass selector: nil!<br>
<br>
Item was changed:<br>
  ----- Method: Debugger>><wbr>mainContextStackMenu: (in category 'context stack menu') -----<br>
  mainContextStackMenu: aMenu<br>
        "Set up the menu appropriately for the context-stack-list, unshifted"<br>
        <contextStackMenuShifted: false><br>
        ^ aMenu addList: #(<br>
                        ('fullStack (f)'                                fullStack) <br>
                        ('restart (r)'                          restart) <br>
                        ('proceed (p)'                          proceed) <br>
                        ('step (t)'                                     doStep) <br>
                        ('step through (T)'                     stepIntoBlock) <br>
                        ('send (e)'                                     send) <br>
                        ('where (w)'                            where) <br>
                        ('peel to first like this'              peelToFirst) <br>
                        - <br>
                        ('return entered value'                 returnValue) <br>
                        - <br>
                        ('toggle break on entry'        toggleBreakOnEntry) <br>
                        ('senders of    (n)'                    browseSendersOfMessages) <br>
                        ('implementors of    (m)'       browseMessages) <br>
                        ('inheritance (i)'                      methodHierarchy) <br>
                        - <br>
                        ('versions (v)'                                 browseVersions) <br>
                        - <br>
                        ('references    (r)'                    browseVariableReferences) <br>
                        ('assignments    (a)'           browseVariableAssignments) <br>
                        - <br>
                        ('class refs (N)'                               browseClassRefs) <br>
                        ('browse full (b)'                      browseMethodFull) <br>
                        ('file out '                                    fileOutMessage) <br>
                        - <br>
+                       ('copy bug report to clipboard' copyBugReportToClipboard));<br>
-                       ('mail out bug report'          mailOutBugReport)<br>
-                       ('bug report to clipboard'      copyBugReportToClipboard));<br>
                yourself<br>
  !<br>
<br>
Item was changed:<br>
  ----- Method: HierarchyBrowser>>setClass: (in category 'initialization') -----<br>
+ setClass: aClass <br>
+       self initHierarchyForClass: (centralClass ifNil: [ aClass ]).<br>
+       super setClass: aClass!<br>
- setClass: aClass<br>
- <br>
-       self initHierarchyForClass: aClass.<br>
-       super setClass: aClass.!<br>
<br>
Item was added:<br>
+ ----- Method: HierarchyBrowser>><wbr>spawnOrNavigateTo: (in category 'private') -----<br>
+ spawnOrNavigateTo: aClass <br>
+       (aClass inheritsFrom: centralClass)<br>
+               ifTrue: [ super spawnOrNavigateTo: aClass ]<br>
+               ifFalse: [ self systemNavigation browseHierarchy: aClass ]!<br>
<br>
Item was changed:<br>
  ----- Method: HierarchyBrowser>><wbr>updateAfterClassChange (in category 'initialization') -----<br>
  updateAfterClassChange<br>
        "It is possible that some the classes comprising the hierarchy have changed, so reinitialize the entire browser."<br>
<br>
+       | priorSelection |<br>
+       priorSelection := self selectedClassName.<br>
+       <br>
        (centralClass notNil and: [centralClass isObsolete not])<br>
+               ifTrue: [self initHierarchyForClass: centralClass].<br>
+               <br>
+       (self classListIndexOf: priorSelection) > 0<br>
+               ifTrue: [self selectClassNamed: priorSelection].!<br>
-               ifTrue: [self initHierarchyForClass: centralClass]!<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div>