[squeak-dev] The Trunk: Tools-cmm.347.mcz
karl ramberg
karlramberg at gmail.com
Mon Jan 27 05:41:21 UTC 2014
Hi,
I don't look at class variables very often, but when I want to it's hard to
get to them, and even hard to remember the how to get to them. It is also
hard to discover a way to get to them for a beginner.
Cheers,
Karl
On Mon, Jan 27, 2014 at 4:08 AM, Chris Muller <asqueaker at gmail.com> wrote:
> Browsing all class-vars of a class at once? Is that something you
> want to do very often? Fewer than 5% [1] of classes in the system
> have more than one class var. Maybe it's a sign of having too many
> class-vars in a class..?
>
> If looking one of the 4.2% of classes that have more than 1 class var,
> their individual values can be inspected straight from the definition,
> and the class itself explored simply by double clicking the class name
> pressing Command+Shift+I. The classPool is presented right there.
> That's only +2 gestures for this pretty rare(?) thing.
>
> Of all the entries in that menu, "browse class vars" is the one that
> stands alone.
>
> So it seems like we shouldn't have it in the menu.
>
> [1] -- (((Object withAllSubclasses count: [ : e | e classVarNames size
> > 1 ]) / Object withAllSubclasses size)) asFloat
>
> On Sun, Jan 26, 2014 at 3:07 PM, karl ramberg <karlramberg at gmail.com>
> wrote:
> > I miss the menu options to inspect and explore class variables.
> > This change makes it much harder to inspect values stored in class
> variables
> >
> > Cheers,
> > Karl
> >
> >
> >
> > On Tue, May 3, 2011 at 1:36 AM, <commits at source.squeak.org> wrote:
> >>
> >> Chris Muller uploaded a new version of Tools to project The Trunk:
> >> http://source.squeak.org/trunk/Tools-cmm.347.mcz
> >>
> >> ==================== Summary ====================
> >>
> >> Name: Tools-cmm.347
> >> Author: cmm
> >> Time: 2 May 2011, 6:36:40.244 pm
> >> UUID: 977c180b-7c15-4200-9ceb-319d2e850364
> >> Ancestors: Tools-fbs.346, Tools-fbs.345
> >>
> >> - Update menu "inst var defs" to "assignments..." and "inst var refs" to
> >> "references...". Each option now includes a selection of the available
> >> class-variables, enabling "class var refs" to be removed. Each option
> also
> >> has an appropriate hot-key assignment.
> >> - Removed "class vars" because one could simply explore the class'
> >> classPool.
> >>
> >> =============== Diff against Tools-fbs.346 ===============
> >>
> >> Item was changed:
> >> ----- Method: Browser>>classListMenu:shifted: (in category 'class
> >> functions') -----
> >> classListMenu: aMenu shifted: shifted
> >> "Set up the menu to apply to the receiver's class list, honoring
> >> the #shifted boolean"
> >> self
> >> menuHook: aMenu
> >> named: #classListMenu
> >> shifted: shifted.
> >> Preferences useOnlyServicesInMenu ifTrue:[^aMenu].
> >> shifted ifTrue:[^ self shiftedClassListMenu: aMenu].
> >> aMenu addList: #(
> >> -
> >> ('browse full (b)'
> browseMethodFull)
> >> ('browse hierarchy (h)' spawnHierarchy)
> >> ('browse protocol (p)' browseFullProtocol)
> >> -
> >> ('printOut'
> >> printOutClass)
> >> ('fileOut'
> >> fileOutClass)
> >> -
> >> ('show hierarchy' hierarchy)
> >> ('show definition' editClass)
> >> ('show comment' editComment)
> >> -
> >> + ('references... (r)'
> >> browseVariableReferences)
> >> + ('assignments... (a)'
> >> browseVariableAssignments)
> >> - ('inst var refs...'
> browseInstVarRefs)
> >> - ('inst var defs...'
> browseInstVarDefs)
> >> - -
> >> - ('class var refs...'
> >> browseClassVarRefs)
> >> - ('class vars'
> >> browseClassVariables)
> >> ('class refs (N)'
> >> browseClassRefs)
> >> -
> >> ('rename class ...' renameClass)
> >> ('copy class' copyClass)
> >> ('remove class (x)' removeClass)
> >> -
> >> ('find method...'
> >> findMethod)
> >> -
> >> ('more...'
> >> offerShiftedClassListMenu)).
> >> ^ aMenu
> >> !
> >>
> >> Item was changed:
> >> ----- Method: Browser>>messageListMenu:shifted: (in category 'message
> >> functions') -----
> >> messageListMenu: aMenu shifted: shifted
> >> "Answer the message-list menu"
> >> self
> >> menuHook: aMenu
> >> named: #messageListMenu
> >> shifted: shifted.
> >> Preferences useOnlyServicesInMenu ifTrue:[^aMenu].
> >> shifted ifTrue: [^ self shiftedMessageListMenu: aMenu].
> >> aMenu addList: #(
> >> ('what to show...'
> >> offerWhatToShowMenu)
> >> ('toggle break on entry'
> >> toggleBreakOnEntry)
> >> -
> >> ('browse full (b)'
> >> browseMethodFull)
> >> ('browse hierarchy (h)'
> >> classHierarchy)
> >> ('browse method (O)'
> >> openSingleMessageBrowser)
> >> ('browse protocol (p)'
> >> browseFullProtocol)
> >> -
> >> ('fileOut'
> >> fileOutMessage)
> >> ('printOut'
> >> printOutMessage)
> >> ('copy selector (c)'
> >> copySelector)
> >> ('copy reference'
> >> copyReference)
> >> -
> >> ('senders of... (n)'
> >> browseSendersOfMessages)
> >> ('implementors of... (m)'
> >> browseMessages)
> >> ('inheritance (i)'
> >> methodHierarchy)
> >> ('versions (v)'
> >> browseVersions)
> >> -
> >> + ('references... (r)'
> >> browseVariableReferences)
> >> + ('assignments... (a)'
> >> browseVariableAssignments)
> >> - ('inst var refs...'
> >> browseInstVarRefs)
> >> - ('inst var defs...'
> >> browseInstVarDefs)
> >> - ('class var refs...'
> >> browseClassVarRefs)
> >> - ('class variables'
> >> browseClassVariables)
> >> ('class refs (N)'
> >> browseClassRefs)
> >> -
> >> ('remove method (x)'
> >> removeMessage)
> >> ('explore method'
> >> exploreMethod)
> >> ('inspect method'
> >> inspectMethod)
> >> -
> >> ('more...'
> >> shiftedYellowButtonActivity)).
> >> ^ aMenu!
> >>
> >> Item was changed:
> >> ----- Method: Browser>>reformulateList (in category 'message list')
> >> -----
> >> reformulateList
> >> "If the receiver has a way of reformulating its message list,
> here
> >> is a chance for it to do so"
> >> super reformulateList.
> >> (self messageList includes: self selectedMessageName)
> >> + ifFalse: [ self messageList
> >> + ifEmpty: [ self
> >> selectMessageNamed: nil ]
> >> + ifNotEmpty: [ self
> >> selectMessageNamed: self lastMessageName ]].!
> >> - ifFalse: [ self selectMessageNamed: self lastMessageName
> >> ].!
> >>
> >> Item was changed:
> >> ----- Method: ChangeSorter>>classListMenu:shifted: (in category 'class
> >> list') -----
> >> classListMenu: aMenu shifted: shifted
> >> "Fill aMenu with items appropriate for the class list"
> >>
> >> aMenu title: 'class list'.
> >> aMenu addStayUpItemSpecial.
> >> (parent notNil and: [shifted not])
> >> ifTrue: [aMenu addList: #( "These two only apply to dual
> >> change sorters"
> >> ('copy class chgs to other side'
> >> copyClassToOther)
> >> ('move class chgs to other side'
> >> moveClassToOther))].
> >>
> >> aMenu addList: (shifted
> >> ifFalse: [#(
> >> -
> >> ('delete class from change set (d)'
> >> forgetClass)
> >> ('remove class from system (x)'
> >> removeClass)
> >> -
> >> ('browse full (b)'
> >> browseMethodFull)
> >> ('browse hierarchy (h)'
> >> spawnHierarchy)
> >> ('browse protocol (p)'
> >> browseFullProtocol)
> >> -
> >> ('printOut'
> >> printOutClass)
> >> ('fileOut'
> >> fileOutClass)
> >> -
> >> + ('references... (r)'
> >> browseVariableReferences)
> >> + ('assignments... (a)'
> >> browseVariableAssignments)
> >> - ('inst var refs...'
> >> browseInstVarRefs)
> >> - ('inst var defs...'
> >> browseInstVarDefs)
> >> - ('class var refs...'
> >> browseClassVarRefs)
> >> - ('class vars'
> >> browseClassVariables)
> >> ('class refs (N)'
> >> browseClassRefs)
> >> -
> >> ('more...'
> >> offerShiftedClassListMenu))]
> >>
> >> ifTrue: [#(
> >> -
> >> ('unsent methods'
> >> browseUnusedMethods)
> >> ('unreferenced inst vars'
> >> showUnreferencedInstVars)
> >> ('unreferenced class vars'
> >> showUnreferencedClassVars)
> >> -
> >> ('sample instance'
> >> makeSampleInstance)
> >> ('inspect instances'
> >> inspectInstances)
> >> ('inspect subinstances'
> >> inspectSubInstances)
> >> -
> >> ('more...'
> >> offerUnshiftedClassListMenu ))]).
> >> ^ aMenu!
> >>
> >> Item was changed:
> >> ----- Method: CodeHolder>>abbreviatedWordingFor: (in category
> >> 'commands') -----
> >> abbreviatedWordingFor: aButtonSelector
> >> + "Answer the abbreviated form of wording, from a static table.
> >> Answer nil if there is no entry -- in which case the long form will be
> used
> >> on the corresponding browser button."
> >> - "Answer the abbreviated form of wording, from a static table
> which
> >> you're welcome to edit. Answer nil if there is no entry -- in which
> case
> >> the long firm will be used on the corresponding browser button."
> >>
> >> #(
> >> (browseMethodFull 'browse')
> >> (browseSendersOfMessages 'senders')
> >> (browseMessages 'impl')
> >> (browseVersions 'vers')
> >> (methodHierarchy 'inher')
> >> (classHierarchy 'hier')
> >> + (browseVariableReferences 'refs')
> >> - (browseInstVarRefs 'iVar')
> >> - (browseClassVarRefs 'cVar')
> >> (offerMenu 'menu'))
> >> do:
> >>
> >> [:pair | pair first == aButtonSelector ifTrue: [^ pair
> >> second]].
> >> ^ nil!
> >>
> >> Item was changed:
> >> ----- Method: CodeHolder>>messageListKey:from: (in category 'message
> >> list menu') -----
> >> messageListKey: aChar from: view
> >> "Respond to a Command key. I am a model with a code pane, and I
> >> also
> >> have a listView that has a list of methods. The view knows how
> to
> >> get
> >> the list and selection."
> >>
> >> | sel class |
> >> aChar == $D ifTrue: [^ self toggleDiffing].
> >>
> >> sel := self selectedMessageName.
> >> aChar == $m ifTrue: "These next two put up a type in if no
> >> message selected"
> >> [^ self useSelector: sel orGetSelectorAndSendQuery:
> >> #browseAllImplementorsOf: to: self ].
> >> aChar == $n ifTrue:
> >> [^ self useSelector: sel orGetSelectorAndSendQuery:
> >> #browseAllCallsOn: to: self ].
> >>
> >> "The following require a class selection"
> >> (class := self selectedClassOrMetaClass) ifNil: [^ self
> arrowKey:
> >> aChar from: view].
> >> aChar == $b ifTrue: [^ Browser fullOnClass: class selector:
> sel].
> >> aChar == $N ifTrue: [^ self browseClassRefs].
> >> aChar == $i ifTrue: [^ self methodHierarchy].
> >> aChar == $h ifTrue: [^ self classHierarchy].
> >> aChar == $p ifTrue: [^ self browseFullProtocol].
> >> + aChar == $r ifTrue: [^ self browseVariableReferences].
> >> + aChar == $a ifTrue: [^ self browseVariableAssignments].
> >>
> >> +
> >> "The following require a method selection"
> >> sel ifNotNil:
> >> [aChar == $o ifTrue: [^ self fileOutMessage].
> >> aChar == $c ifTrue: [^ self copySelector].
> >> aChar == $v ifTrue: [^ self browseVersions].
> >> aChar == $O ifTrue: [^ self openSingleMessageBrowser].
> >> aChar == $x ifTrue: [^ self removeMessage].
> >> aChar == $d ifTrue: [^ self removeMessageFromBrowser].
> >>
> >> (aChar == $C and: [self
> canShowMultipleMessageCategories])
> >> ifTrue: [^ self showHomeCategory]].
> >>
> >> ^ self arrowKey: aChar from: view!
> >>
> >> Item was changed:
> >> ----- Method: CodeHolder>>optionalButtonPairs (in category 'controls')
> >> -----
> >> optionalButtonPairs
> >> "Answer a tuple (formerly pairs) defining buttons, in the
> format:
> >> button label
> >> selector to send
> >> help message"
> >>
> >> | aList |
> >>
> >> aList := #(
> >> ('browse' browseMethodFull
> >> 'view this method in a browser')
> >> ('senders' browseSendersOfMessages 'browse
> >> senders of...')
> >> ('implementors' browseMessages
> >> 'browse implementors of...')
> >> ('versions' browseVersions
> >> 'browse versions')),
> >>
> >> (Preferences decorateBrowserButtons
> >> ifTrue:
> >> [{#('inheritance' methodHierarchy
> >> 'browse method inheritance
> >> green: sends to super
> >> tan: has override(s)
> >> mauve: both of the above
> >> pink: is an override but doesn''t call super
> >> pinkish tan: has override(s), also is an override but doesn''t call
> >> super' )}]
> >> ifFalse:
> >> [{#('inheritance' methodHierarchy
> >> 'browse method inheritance')}]),
> >>
> >> #(
> >> ('hierarchy' classHierarchy
> >> 'browse class hierarchy')
> >> + ('vars' browseVariableReferences
> >> 'references...')).
> >> - ('inst vars' browseInstVarRefs
> >> 'inst var refs...')
> >> - ('class vars' browseClassVarRefs
> >> 'class var refs...')).
> >>
> >> ^ aList!
> >>
> >> Item was added:
> >> + ----- Method: CodeHolder>>receiverClass (in category 'toolbuilder')
> >> -----
> >> + receiverClass
> >> + ^ self selectedClassOrMetaClass !
> >>
> >> Item was added:
> >> + ----- Method: Debugger>>classHierarchy (in category 'toolbuilder')
> -----
> >> + classHierarchy
> >> + "Create and schedule a class list browser on the receiver's
> >> hierarchy."
> >> + (self selectedMessageName = #doesNotUnderstand: and: [ self
> >> selectedClassOrMetaClass = Object ])
> >> + ifTrue:
> >> + [ self systemNavigation
> >> + spawnHierarchyForClass: self
> receiverClass
> >> + selector: self selectedMessageName ]
> >> + ifFalse: [ super classHierarchy ]!
> >>
> >> Item was changed:
> >> ----- Method: Debugger>>contextStackMenu:shifted: (in category
> 'context
> >> stack menu') -----
> >> contextStackMenu: aMenu shifted: shifted
> >> "Set up the menu appropriately for the context-stack-list,
> either
> >> shifted or unshifted as per the parameter provided"
> >>
> >> ^ shifted ifFalse:[
> >> aMenu addList: {
> >> {'fullStack (f)'. #fullStack}.
> >> {'restart (r)'. #restart}.
> >> {'proceed (p)'. #proceed}.
> >> {'step (t)'. #doStep}.
> >> {'step through (T)'. #stepIntoBlock}.
> >> {'send (e)'. #send}.
> >> {'where (w)'. #where}.
> >> {'peel to first like this'.
> >> #peelToFirst}.
> >> #-.
> >> {'return entered value'.
> >> #returnValue}.
> >> #-.
> >> {'toggle break on entry'.
> >> #toggleBreakOnEntry}.
> >> {'senders of... (n)'.
> >> #browseSendersOfMessages}.
> >> {'implementors of... (m)'.
> #browseMessages}.
> >> {'inheritance (i)'. #methodHierarchy}.
> >> #-.
> >> {'versions (v)'.
> #browseVersions}.
> >> - {'inst var refs...'.
> >> #browseInstVarRefs}.
> >> #-.
> >> + {'references... (r)'.
> >> #browseVariableReferences}.
> >> + {'assignments... (a)'.
> >> #browseVariableAssignments}.
> >> - {'inst var defs...'. #browseInstVarDefs}.
> >> - {'class var refs...'. #browseClassVarRefs}.
> >> - {'class variables'. #browseClassVariables}.
> >> #-.
> >> {'class refs (N)'.
> #browseClassRefs}.
> >> {'browse full (b)'. #browseMethodFull}.
> >> {'file out '.
> #fileOutMessage}.
> >> #-.
> >> {'mail out bug report'. #mailOutBugReport}.
> >> {'more...'.
> >> #shiftedYellowButtonActivity}.
> >> }.
> >> ] ifTrue: [
> >> aMenu addList: {
> >> {'browse class hierarchy'.
> #classHierarchy}.
> >> {'browse class'.
> >> #browseClass}.
> >> {'browse method (O)'.
> >> #openSingleMessageBrowser}.
> >> {'implementors of sent messages'.
> >> #browseAllMessages}.
> >> {'change sets with this method'.
> >> #findMethodInChangeSets}.
> >> #-.
> >> {'inspect instances'.
> >> #inspectInstances}.
> >> {'inspect subinstances'.
> >> #inspectSubInstances}.
> >> #-.
> >> {'revert to previous version'.
> >> #revertToPreviousVersion}.
> >> {'remove from current change set'.
> >> #removeFromCurrentChanges}.
> >> {'revert & remove from changes'.
> >> #revertAndForget}.
> >> #-.
> >> {'more...'.
> >> #unshiftedYellowButtonActivity}.
> >> }
> >> ].!
> >>
> >> Item was added:
> >> + ----- Method: Debugger>>receiverClass (in category 'toolbuilder')
> -----
> >> + receiverClass
> >> + ^ self selectedContext receiver class!
> >>
> >> Item was removed:
> >> - ----- Method: Inspector>>classVarRefs (in category 'menu commands')
> >> -----
> >> - classVarRefs
> >> - "Request a browser of methods that store into a chosen instance
> >> variable"
> >> -
> >> - | aClass |
> >> - (aClass := self classOfSelection) ifNotNil:
> >> - [self systemNavigation browseClassVarRefs: aClass].
> >> - !
> >>
> >> Item was changed:
> >> ----- Method: Inspector>>fieldListMenu: (in category 'menu commands')
> >> -----
> >> fieldListMenu: aMenu
> >> "Arm the supplied menu with items for the field-list of the
> >> receiver"
> >>
> >> aMenu addStayUpItemSpecial.
> >>
> >> aMenu addList: #(
> >> ('inspect (i)'
> >> inspectSelection)
> >> ('explore (I)'
> >> exploreSelection)).
> >>
> >> self addCollectionItemsTo: aMenu.
> >>
> >> aMenu addList: #(
> >> -
> >> ('method refs to this inst var'
> >> referencesToSelection)
> >> ('methods storing into this inst var' defsOfSelection)
> >> ('objects pointing to this value'
> >> objectReferencesToSelection)
> >> ('chase pointers'
> >> chasePointers)
> >> ('explore pointers'
> >> explorePointers)
> >> -
> >> ('browse full (b)'
> >> browseMethodFull)
> >> ('browse class'
> >> browseClass)
> >> ('browse hierarchy (h)'
> >> classHierarchy)
> >> ('browse protocol (p)'
> >> browseFullProtocol)
> >> -
> >> + ('references... (r)'
> >> browseVariableReferences)
> >> + ('assignments... (a)'
> >> browseVariableAssignments)
> >> - ('inst var refs...'
> >> browseInstVarRefs)
> >> - ('inst var defs...'
> >> browseInstVarDefs)
> >> - ('class var refs...'
> >> classVarRefs)
> >> - ('class variables'
> >> browseClassVariables)
> >> ('class refs (N)'
> >> browseClassRefs)
> >> -
> >> ('copy name (c)'
> >> copyName)
> >> ('basic inspect'
> >> inspectBasic)).
> >>
> >> Smalltalk isMorphic ifTrue:
> >> [aMenu addList: #(
> >> -
> >> ('tile for this value (t)'
> >> tearOffTile)
> >> ('viewer for this value (v)'
> >> viewerForValue))].
> >>
> >> ^ aMenu
> >>
> >>
> >> " -
> >> ('alias for this value'
> >> aliasForValue)
> >> ('watcher for this slot'
> >> watcherForSlot)"
> >>
> >> !
> >>
> >> Item was changed:
> >> ----- Method: RecentMessageSet>>messageListMenu:shifted: (in category
> >> 'message functions') -----
> >> messageListMenu: aMenu shifted: shifted
> >> "Answer the message-list menu"
> >>
> >> shifted ifTrue: [^ self shiftedMessageListMenu: aMenu].
> >> aMenu addList:#(
> >> ('what to show...'
> >> offerWhatToShowMenu)
> >> -
> >> ('browse full (b)'
> >> browseMethodFull)
> >> ('browse hierarchy (h)'
> >> classHierarchy)
> >> ('browse method (O)'
> >> openSingleMessageBrowser)
> >> ('browse protocol (p)'
> >> browseFullProtocol)
> >> -
> >> ('fileOut (o)'
> >> fileOutMessage)
> >> ('printOut'
> >> printOutMessage)
> >> ('copy selector (c)'
> >> copySelector)
> >> ('copy reference'
> >> copyReference)
> >> -
> >> ('senders of... (n)'
> >> browseSendersOfMessages)
> >> ('implementors of... (m)'
> >> browseMessages)
> >> ('inheritance (i)'
> >> methodHierarchy)
> >> ('versions (v)'
> >> browseVersions)
> >> -
> >> + ('references... (r)'
> >> browseVariableReferences)
> >> + ('assignments... (a)'
> >> browseVariableAssignments)
> >> - ('inst var refs...'
> >> browseInstVarRefs)
> >> - ('inst var defs...'
> >> browseInstVarDefs)
> >> - ('class var refs...'
> >> browseClassVarRefs)
> >> - ('class variables'
> >> browseClassVariables)
> >> ('class refs (N)'
> >> browseClassRefs)
> >> -
> >> ('remove method (x)'
> >> removeMessage)
> >> ('remove from RecentSubmissions'
> >> removeFromRecentSubmissions)
> >> -
> >> ('more...'
> >> shiftedYellowButtonActivity)).
> >> ^ aMenu!
> >>
> >> Item was removed:
> >> - ----- Method: StringHolder>>browseClassVarRefs (in category
> >> '*Tools-traits') -----
> >> - browseClassVarRefs
> >> - "1/17/96 sw: devolve responsibility to the class, so that the
> code
> >> that does the real work can be shared"
> >> -
> >> - | cls |
> >> - cls := self selectedClass.
> >> - (cls notNil and: [cls isTrait not])
> >> - ifTrue: [self systemNavigation browseClassVarRefs:
> cls]!
> >>
> >> Item was removed:
> >> - ----- Method: StringHolder>>browseClassVariables (in category
> >> '*Tools-traits') -----
> >> - browseClassVariables
> >> - "Browse the class variables of the selected class. 2/5/96 sw"
> >> - | cls |
> >> - cls := self selectedClass.
> >> - (cls notNil and: [cls isTrait not])
> >> - ifTrue: [self systemNavigation browseClassVariables:
> cls]
> >> - !
> >>
> >> Item was removed:
> >> - ----- Method: StringHolder>>browseInstVarDefs (in category
> >> '*Tools-traits') -----
> >> - browseInstVarDefs
> >> -
> >> - | cls |
> >> - cls := self selectedClassOrMetaClass.
> >> - (cls notNil and: [cls isTrait not])
> >> - ifTrue: [self systemNavigation browseInstVarDefs: cls]!
> >>
> >> Item was removed:
> >> - ----- Method: StringHolder>>browseInstVarRefs (in category
> >> '*Tools-traits') -----
> >> - browseInstVarRefs
> >> - "1/26/96 sw: real work moved to class, so it can be shared"
> >> - | cls |
> >> - cls := self selectedClassOrMetaClass.
> >> - (cls notNil and: [cls isTrait not])
> >> - ifTrue: [self systemNavigation browseInstVarRefs: cls]!
> >>
> >> Item was added:
> >> + ----- Method: StringHolder>>browseVariableAssignments (in category
> >> '*Tools-traits') -----
> >> + browseVariableAssignments
> >> + | cls |
> >> + cls := self selectedClassOrMetaClass.
> >> + (cls notNil and: [ cls isTrait not ]) ifTrue: [ self
> >> systemNavigation browseVariableAssignments: cls ]!
> >>
> >> Item was added:
> >> + ----- Method: StringHolder>>browseVariableReferences (in category
> >> '*Tools-traits') -----
> >> + browseVariableReferences
> >> + | cls |
> >> + cls := self selectedClassOrMetaClass.
> >> + (cls notNil and: [cls isTrait not])
> >> + ifTrue: [self systemNavigation browseVariableReferences:
> >> cls]!
> >>
> >> Item was changed:
> >> ----- Method: StringHolder>>classListKey:from: (in category '*Tools')
> >> -----
> >> classListKey: aChar from: view
> >> "Respond to a Command key. I am a model with a list of classes
> >> and a
> >> code pane, and I also have a listView that has a list of
> methods.
> >> The
> >> view knows how to get the list and selection."
> >>
> >> aChar == $f ifTrue: [^ self findMethod].
> >> + aChar == $r ifTrue: [^ self browseVariableReferences].
> >> + aChar == $a ifTrue: [^ self browseVariableAssignments].
> >> - aChar == $r ifTrue: [^ self browseInstVarRefs].
> >> - aChar == $d ifTrue: [^ self browseInstVarDefs].
> >> aChar == $h ifTrue: [^ self spawnHierarchy].
> >> aChar == $x ifTrue: [^ self removeClass].
> >> ^ self messageListKey: aChar from: view!
> >>
> >>
> >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140127/f6d798e1/attachment-0001.htm
More information about the Squeak-dev
mailing list
|