--- a/Tools__NewSystemBrowser.st Wed May 04 08:21:04 2016 +0200
+++ b/Tools__NewSystemBrowser.st Thu May 05 06:48:38 2016 +0200
@@ -431,7 +431,7 @@
'Search class'
#gotoClassEntryField
-'Goto class (uppercase) or method which implements this selector (lowercase)'
+'Goto class (uppercase) or method which implements this selector (lowercase).\Use "*foo" to search for names ending with "foo",\"foo*" for names beginning with foo.\Otherwise, names which contain "foo" are listed.'
"/#gotoClassEntryField
"/'Goto Class'
@@ -3956,7 +3956,7 @@
name: 'HorizontalPanel1'
layout: (LayoutFrame 0 0 0 0 0 1 0 1)
level: 1
- horizontalLayout: fitSpace
+ horizontalLayout: fit
verticalLayout: center
horizontalSpace: 2
verticalSpace: 2
@@ -3973,7 +3973,7 @@
acceptOnPointerLeave: false
acceptIfUnchanged: true
entryCompletionBlock: searchCompletionBlock
- extent: (Point 292 24)
+ extent: (Point 296 24)
postBuildCallback: searchFieldCreated:
)
)
@@ -5491,7 +5491,7 @@
(SubChannelInfoSpec
subAspect: menuHolder
- aspect: classMenu
+ aspect: classMenuForSmallLint
)
(SubChannelInfoSpec
subAspect: meta
@@ -18614,18 +18614,18 @@
onlyShowJavaClassesHolder onChangeEvaluate:[ updateClassAndNameList value. updateList value].
box enterField
- origin:(0 @ check corner y);
- onKey:#CursorDown leaveWith:[
- |listView|
-
- listView := box listView.
- listView windowGroup focusView:listView byTab:true.
- listView hasSelection ifFalse:[
- listView selectFirst
- ] ifTrue:[
- listView selectNext
- ].
- ].
+"/ onKey:#CursorDown leaveWith:[
+"/ |listView|
+"/
+"/ listView := box listView.
+"/ listView windowGroup focusView:listView byTab:true.
+"/ listView hasSelection ifFalse:[
+"/ listView selectFirst
+"/ ] ifTrue:[
+"/ listView selectNext
+"/ ].
+"/ ];
+ origin:(0 @ check corner y).
box listView origin:(0 @ check corner y).
box extent:(400 @ 550).
@@ -19339,6 +19339,14 @@
"Created: / 18.2.2000 / 12:17:07 / cg"
!
+classMenuForSmallLint
+ "somehow I need this indirection; otherwise,
+ aspects are fetched too early (with no class selected),
+ and the CVS menus are all disabled"
+
+ ^ [ self classMenu ]
+!
+
cvsRepositoryMenusAreShown
^ ConfigurableFeatures includesFeature: #CVSSupportEnabled
@@ -23532,12 +23540,12 @@
!
methodRefersToSelfOrInstanceVariable:aMethod
- |tree|
+ |parser|
- tree := aMethod parseTree.
- tree isNil ifTrue:[^ true]. "/ actually: don't know.
- tree halt.
- ^ false.
+ parser := Parser parseMethod:aMethod source in:aMethod mclass ignoreErrors:true ignoreWarnings:true.
+ ^ parser usedInstVars notEmptyOrNil
+ or:[ parser messagesSentToSelf notEmptyOrNil
+ or:[ parser messagesSentToSuper notEmptyOrNil]]
!
selectedClassNameInCodeViewOrNil
@@ -24866,6 +24874,7 @@
updateToolBarButtonEnablement
self hasClassOrMethodSelectedHolder value:self hasClassOrMethodSelected.
+ self updateLintEnablement.
!
variableSelectionChanged
@@ -28400,6 +28409,101 @@
"Modified: / 27-11-2014 / 10:20:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+setupSmalllintBrowser:browser byRuleFor:result
+ "configure a just created smallLint browser"
+
+ |selectedClassesHolder selectedMethodHolder methodGenerator
+ ruleGenerator prevSelectedClasses prevMeta|
+
+ selectedClassesHolder := browser selectedClasses.
+ selectedMethodHolder := browser selectedMethods.
+
+ ruleGenerator :=
+ Iterator on:[:whatToDo|
+ result failedRules do:whatToDo
+ ].
+
+ methodGenerator :=
+ Iterator on: [:whatToDo|
+ | selectedRules selectedClasses failedMethods |
+
+ selectedClasses := selectedClassesHolder value.
+ selectedClasses notEmptyOrNil ifTrue:[
+ selectedRules := browser selectedLintRules value.
+ failedMethods := OrderedCollection new.
+ selectedRules ? #() do:[:rule|
+ failedMethods addAll:
+ (rule failedMethodsInAnyOf: selectedClasses meta: self hasMetaSelected)
+ ].
+ failedMethods do:[:mth|
+ whatToDo
+ value:mth containingClass
+ value:mth category
+ value:mth selector
+ value:mth
+ ]
+ ]
+ ].
+
+ browser lintRuleListGenerator value:ruleGenerator.
+ browser selectorListGenerator value:methodGenerator.
+
+ selectedClassesHolder onChangeEvaluate:[
+"/ |selectedRules selectedClasses meta|
+"/
+"/ selectedRules := browser selectedLintRules value ? #().
+"/ selectedClasses := selectedClassesHolder value ? #().
+"/ meta := self hasMetaSelected.
+"/
+"/ "/ really a new class selection (in contrast to just toggling meta)
+"/ ((prevSelectedClasses ~= selectedClasses)
+"/ and:[ prevMeta = meta ]) ifTrue:[
+"/ "/ only one?
+"/ selectedClasses size == 1 ifTrue:[
+"/ "/ hello!! anyone out there?
+"/ (selectedRules
+"/ contains:[:rule |
+"/ (rule failedMethodsInAnyOf: selectedClasses meta: meta)]
+"/ ) ifFalse:[
+"/ "/ no - try opposite meta side
+"/ (selectedRules
+"/ contains:[:rule |
+"/ (rule failedMethodsInAnyOf: (selectedClasses collect:[:c | meta ifTrue:[c theMetaclass] ifFalse:[c theNonMetaclass]])
+"/ meta: meta not)]
+"/ ) ifTrue:[
+"/ "/ yes - toggle meta
+"/ self halt.
+"/ ]
+"/ ].
+"/ ].
+"/ ].
+"/
+ browser selectorListGenerator changed:#value.
+ ].
+
+ browser selectedLintRules
+ onChangeSend: #changed to: browser selectorListGenerator.
+ browser meta
+ onChangeSend: #changed to: browser selectorListGenerator.
+
+ selectedMethodHolder onChangeEvaluate:[
+ "/ update the info, depending on the rule's information
+ "/ self halt.
+ ].
+
+ "/ cg: does not work - why?
+ result failedRules size == 1 ifTrue:[
+ "/ autoselect the first one
+ browser selectedLintRules value: result failedRules.
+ ].
+
+ "Modified: / 22-07-2009 / 15:51:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Created: / 02-02-2010 / 20:05:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 25-08-2010 / 10:30:33 / Jan Vrany <enter your email here>"
+ "Modified: / 01-03-2012 / 19:52:57 / cg"
+ "Modified: / 27-11-2014 / 10:26:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
smalllintRulesOrDefault
"Return last run rules or default ruleset if no checks has been run so far"
@@ -28567,7 +28671,10 @@
progressFeedBackInto:[:classBeingChecked |
count := count + 1.
ProgressNotification new
- messageText: ('Checking: %1 (%2)' withCRs bindWith:ruleName with:ruleClassName "with:classBeingChecked name");
+ messageText: (('Checking: ' withColor:Color grey)
+ , ruleName
+ , ((' (',ruleClassName,')')withColor:Color grey)
+ , ' in ',classBeingChecked name);
parameter: ((count-1) / numOverAll * 100);
raiseRequest.
].
@@ -28603,151 +28710,7 @@
label:labelOrNil
forSpec: #smallLintByRuleResultBrowserSpec
setupWith:[:browser |
- |methodGenerator classGenerator ruleGenerator|
-
- ruleGenerator :=
- Iterator on:[:whatToDo|
- result failedRules do:whatToDo].
-
- methodGenerator :=
- Iterator on: [:whatToDo|
- | selectedRules selectedClasses failedMethods |
-
- selectedClasses := browser selectedClasses value.
- selectedRules := browser selectedLintRules value.
- failedMethods := OrderedCollection new.
- selectedClasses isEmptyOrNil ifFalse:
- [selectedRules ? #() do:
- [:rule|
- failedMethods addAll:
- (rule failedMethodsInAnyOf: selectedClasses meta: self hasMetaSelected)].
- failedMethods do:
- [:mth|
- whatToDo
- value:mth containingClass
- value:mth category
- value:mth selector
- value:mth]]].
-
- browser lintRuleListGenerator value:ruleGenerator.
- browser selectorListGenerator value:methodGenerator.
-
-"/ browser selectedClasses
-"/ onChangeSend: #changed to: browser selectorListGenerator.
- browser selectedClasses onChangeEvaluate:[
- browser selectorListGenerator changed:#value.
- ].
- browser selectedLintRules
- onChangeSend: #changed to: browser selectorListGenerator.
- browser meta
- onChangeSend: #changed to: browser selectorListGenerator.
-
- "/ cg: does not work - why?
- result failedRules size == 1 ifTrue:[
- "/ autoselect the first one
- browser selectedLintRules value: result failedRules.
- ].
-
- "/self halt.
- "
- theMethodList isNil ifTrue:[
- methodsOrMethodGeneratorBlock isBlock ifTrue:[
- theMethodList := methodsOrMethodGeneratorBlock value.
- ] ifFalse:[
- theMethodList := methodsOrMethodGeneratorBlock copy.
- ].
- ].
- perClassInfo := perClassInfoHolder value.
- perMethodInfo := perMethodInfoHolder value.
-
- methodGenerator := Iterator on:[:whatToDo |
- theMethodList isNil ifTrue:[
- methodsOrMethodGeneratorBlock isBlock ifTrue:[
- theMethodList := methodsOrMethodGeneratorBlock value.
- ] ifFalse:[
- theMethodList := methodsOrMethodGeneratorBlock copy.
- ].
- ].
- perClassInfo := perClassInfoHolder value.
- perMethodInfo := perMethodInfoHolder value.
-
- theMethodNameList := theMethodList collect:[:eachMethod | eachMethod mclass -> eachMethod selector].
- theMethodNameList do:[:mAssoc |
- |methodClass methodSelector method|
-
- methodClass := mAssoc key.
- methodSelector := mAssoc value.
- methodClass notNil ifTrue:[
- method := methodClass compiledMethodAt:methodSelector.
- method notNil ifTrue:[
- whatToDo
- value:methodClass
- value:method category
- value:methodSelector
- value:method.
- ].
- ].
- ].
- methodsOrMethodGeneratorBlock isBlock ifTrue:[
- theMethodList := nil.
- ].
- whatToDo
- value:nil
- value:nil
- value:nil
- value:nil.
- ].
-
- sortHow notNil ifTrue:[brwsr sortBy value:sortHow].
-
- brwsr selectorListGenerator value:methodGenerator.
- perClassInfo notNil ifTrue:[
- classGenerator := perClassInfo keys.
- brwsr classListGenerator value:classGenerator.
- brwsr meta value:false.
- ].
-
- perClassInfo notNil ifTrue:[
- brwsr selectedClasses
- onChangeEvaluate:[
- |class infoText|
-
- brwsr selectedMethods value:nil.
- class := brwsr theSingleSelectedClass.
- class notNil ifTrue:[
- brwsr meta value:false.
- infoText := perClassInfoHolder value at:class theNonMetaclass ifAbsent:nil.
- infoText isNil ifTrue:[
- infoText := perClassInfo at:class theMetaclass ifAbsent:nil
- ]
- ].
- brwsr methodInfo value:infoText.
- ]
- ].
-
- perMethodInfo notNil ifTrue:[
- brwsr selectedMethods
- onChangeEvaluate:[
- |mthd infoText|
-
- brwsr selectedClasses value:nil.
- mthd := brwsr theSingleSelectedMethod.
- mthd notNil ifTrue:[
- infoText := perMethodInfo at:mthd ifAbsent:nil
- ].
- brwsr methodInfo value:infoText.
- ]
- ] ifFalse:[
- (doSelect and:[theMethodList size == 1]) ifTrue:[
- brwsr selectMethods:(Array with:theMethodList first).
- brwsr methodsSelectionChanged.
- ]
- ].
-
- methodsOrMethodGeneratorBlock isBlock ifTrue:[
- theMethodList := nil
- ]
- "
+ self setupSmalllintBrowser:browser byRuleFor:result.
]
"Modified: / 22-07-2009 / 15:51:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
@@ -39958,7 +39921,7 @@
!
methodListMenuSpawnClasses:where
- "add a buffer/open a browser showing the selected methods classes"
+ "add a buffer/open a browser showing the selected method's classes"
|classes|
@@ -39969,7 +39932,7 @@
!
methodListMenuSpawnClassesBuffer
- "add a buffer showing the selected methodss classes"
+ "add a buffer showing the selected method's classes"
^ self methodListMenuSpawnClasses:#newBuffer
!
@@ -39983,24 +39946,22 @@
!
methodListMenuSpawnFullBrowser
- "add a buffer showing the selected methodss classes"
+ "add a buffer showing the selected method's classes"
^ self methodListMenuSpawnFullBrowserIn:#newBrowser
!
methodListMenuSpawnFullBrowserBuffer
- "add a buffer showing the selected methodss classes"
+ "add a buffer showing the selected method's classes"
^ self methodListMenuSpawnFullBrowserIn:#newBuffer
!
-methodListMenuSpawnFullBrowserIn:where
+methodListMenuSpawnFullBrowserForClasses:classes methods:methods in:where
"add a buffer/open a browser showing the selected methods classes"
- |methods classes brwsr anyMeta anyNonMeta|
-
- methods := self selectedMethodsValue.
- classes := self selectedMethodsClasses asOrderedCollection.
+ |brwsr anyMeta anyNonMeta|
+
brwsr := self spawnFullBrowserInClass:nil selector:nil in:where.
classes size > 0 ifTrue:[
@@ -40025,6 +39986,18 @@
^ brwsr
"Modified: / 28-02-2012 / 16:27:44 / cg"
+!
+
+methodListMenuSpawnFullBrowserIn:where
+ "add a buffer/open a browser showing the selected methods classes"
+
+ |methods classes|
+
+ methods := self selectedMethodsValue.
+ classes := self selectedMethodsClasses asOrderedCollection.
+ self methodListMenuSpawnFullBrowserForClasses:classes methods:methods in:where
+
+ "Modified: / 28-02-2012 / 16:27:44 / cg"
! !
!NewSystemBrowser methodsFor:'menu actions-namespace'!
@@ -53767,29 +53740,39 @@
or:[ aMatchString first isLowercase]) ifTrue:[
implementors := SystemBrowser findImplementorsMatching:aMatchString in:(environment allClasses) ignoreCase:true.
implementors size > 0 ifTrue:[
- (classesMatchingCaseless isEmpty and:[implementors size == 1]) ifTrue:[
- answer := Dialog
- confirm:(resources
- stringWithCRs:'No class named "%1".\But "%2" implements it. Go there ?'
- with:aMatchString allBold
- with:implementors first mclass name).
- answer ifTrue:[
- self switchToClass:implementors first mclass selector:implementors first selector.
- ].
- ^ self.
- ].
+ |searchClassToken browseAllImplementorsToken|
+
+ searchClassToken := Object new.
+ browseAllImplementorsToken := Object new.
+
+"/ (classesMatchingCaseless isEmpty and:[implementors size == 1]) ifTrue:[
+"/ answer := Dialog
+"/ confirm:(resources
+"/ stringWithCRs:'No class named "%1".\But "%2" implements it. Go there ?'
+"/ with:aMatchString allBold
+"/ with:implementors first mclass name).
+"/ answer ifTrue:[
+"/ self switchToClass:implementors first mclass selector:implementors first selector.
+"/ ].
+"/ ^ self.
+"/ ].
implementors := implementors asOrderedCollection sort:[:a :b | a mclass name < b mclass name].
classesMatchingCaseless isEmpty ifTrue:[
- answer := Dialog
- choose:(resources
- stringWithCRs:'No class named "%1.\But there are %2 implementors of it.\\Goto one of them ?'
- with:aMatchString allBold
- with:implementors size)
- fromList:(implementors collect:[:m | m mclass name])
- values:implementors
- buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors)
- lines:10 cancel:nil
- postBuildBlock:[:box | box minExtent:300@250].
+ implementors size == 1 ifTrue:[
+ answer := browseAllImplementorsToken.
+ ] ifFalse:[
+ answer := Dialog
+ choose:(resources
+ stringWithCRs:'There are %2 implementors of it.\\Goto one of them ?'
+ with:aMatchString allBold
+ with:implementors size)
+ fromList:(#('** show all **'),(implementors collect:[:m | m mclass name]))
+ values:{browseAllImplementorsToken},implementors
+ buttons:#('No, Search for a Class' 'Show all Implementors')
+ values:{searchClassToken . browseAllImplementorsToken}
+ lines:10 cancel:nil
+ postBuildBlock:[:box | box minExtent:300@250].
+ ].
] ifFalse:[
answer := Dialog
choose:(resources
@@ -53801,29 +53784,37 @@
with:classesMatchingCaseless size)
fromList:({'Implementors:' colorizeAllWith:Color gray}
,(implementors collect:[:m | m mclass name])
+ ,'-'
,{'Classes:' colorizeAllWith:Color gray}
,classesMatchingCaseless)
- values:(#(nil),implementors,#(nil),classesMatchingCaseless)
- buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors)
+ values:(#(nil),implementors,#(nil nil),classesMatchingCaseless)
+ buttons:#('No, Search for a Class' 'Show all Implementors')
+ values:{ searchClassToken . browseAllImplementorsToken}
lines:10 cancel:nil
postBuildBlock:[:box | box minExtent:300@250].
].
answer isNil ifTrue:[^ self].
- answer == #browseAllImplementors ifTrue:[
- self
- spawnMethodBrowserForSearch:[
- SystemBrowser
- findImplementorsOf:aMatchString
- in:environment allClasses
- ignoreCase:false.
- ]
- sortBy:#class
- in:#newBuffer
- label:(resources string:'Implementors of %1' string with:aMatchString).
+ answer == browseAllImplementorsToken ifTrue:[
+ implementors size == 1 ifTrue:[
+ self
+ methodListMenuSpawnFullBrowserForClasses:{implementors first mclass}
+ methods:implementors in:#newBuffer
+ ] ifFalse:[
+ self
+ spawnMethodBrowserForSearch:[
+ SystemBrowser
+ findImplementorsOf:aMatchString
+ in:environment allClasses
+ ignoreCase:false.
+ ]
+ sortBy:#class
+ in:#newBuffer
+ label:(resources string:'Implementors of %1' string with:aMatchString).
+ ].
^ self
].
- answer ~~ #searchClass ifTrue:[
+ answer ~~ searchClassToken ifTrue:[
answer isSymbol ifTrue:[
self switchToClass:(environment classNamed:answer).
] ifFalse:[
@@ -55987,17 +55978,17 @@
].
].
- box enterField
- onKey:#CursorDown
- leaveWith:[
- listView windowGroup focusView:listView byTab:true.
- (listView hasSelection not or:[listView lineIsVisible:listView selection]) ifFalse:[
- listView selectFirstVisibleLine
- ] ifTrue:[
- listView selectNext
- ].
- listView selectionValue isEmptyOrNil ifTrue:[listView selectNext].
- ].
+"/ box enterField
+"/ onKey:#CursorDown
+"/ leaveWith:[
+"/ listView windowGroup focusView:listView byTab:true.
+"/ (listView hasSelection not or:[listView lineIsVisible:listView selection]) ifFalse:[
+"/ listView selectFirstVisibleLine
+"/ ] ifTrue:[
+"/ listView selectNext
+"/ ].
+"/ listView selectionValue isEmptyOrNil ifTrue:[listView selectNext].
+"/ ].
box open.
^ retVal
@@ -58173,12 +58164,12 @@
"get something about aMethod
to be shown in the info line at the bottom"
- |msg msg2 method|
+ |msg msg2 method wrapper|
method := aMethod.
method isNil ifTrue:[ ^ nil ].
- method wrapper notNil ifTrue:[
- method := method wrapper
+ (wrapper := method wrapper) notNil ifTrue:[
+ method := wrapper
].
method isNil ifTrue:[
^ 'oops - this method is not attached to any class'.
@@ -58194,7 +58185,7 @@
ifFalse:[msg,'; ',msg2]
].
msg isNil ifTrue:[
- msg := Explainer methodImplementorsInfoFor:method
+ msg := Explainer methodImplementorsInfoFor:method inEnvironment:environment
].
].
msg := (msg ? '').
@@ -58338,7 +58329,6 @@
!NewSystemBrowser methodsFor:'private-searching'!
searchCompletionBlock
-
"Returns a class/selector name completion block that
is used by the search field in browser's toolbar"
@@ -58347,11 +58337,12 @@
(now in searchCompletionBlock_Standard)"
| sel |
+
sel := UserPreferences current at: #searchCompletionBlock ifAbsent:[nil].
sel notNil ifTrue:[
- ^self perform: ('searchCompletionBlock_' , sel) asSymbol ifNotUnderstood:[
- self searchCompletionBlock_Standard
- ].
+ ^self
+ perform: ('searchCompletionBlock_' , sel) asSymbol
+ ifNotUnderstood:[ self searchCompletionBlock_Standard ].
].
^self searchCompletionBlock_Standard
@@ -58370,35 +58361,20 @@
!
searchCompletionBlock_New
-
"This returns a class/selector name completion block that uses
- standard DoWhatIMeanSupport"
-
- ^[:patternString|self searchCompletionNew: patternString]
+ JV's private search"
+
+ ^[:patternString | self searchCompletionNew: patternString]
"Modified: / 04-08-2011 / 19:05:28 / cg"
"Created: / 04-12-2011 / 22:13:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
searchCompletionBlock_Standard
-
"This returns a class/selector name completion block that uses
standard DoWhatIMeanSupport"
- ^[:partialName| | env |
- env := self theSingleSelectedNamespace ? #Smalltalk.
- env = NavigatorModel nameListEntryForALL
- ifTrue:[env := #Smalltalk].
- env := environment at: env.
- partialName isEmptyOrNil
- ifTrue:
- [#('' #())]
- ifFalse:
- [partialName first isUppercase
- ifTrue:
- [DoWhatIMeanSupport classnameCompletion: partialName inEnvironment: env]
- ifFalse:
- [DoWhatIMeanSupport selectorCompletion: partialName inEnvironment: env]]]
+ ^[:partialName | self searchCompletionStandard:partialName]
"Modified: / 10-02-2010 / 08:47:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 04-08-2011 / 19:05:28 / cg"
@@ -58406,6 +58382,7 @@
!
searchCompletionNew: patternString
+ "JV's private search"
| env pattern matches |
@@ -58433,6 +58410,37 @@
"Modified: / 04-08-2011 / 19:05:28 / cg"
"Created: / 04-12-2011 / 22:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchCompletionStandard:partialName
+ "This does a class/selector name completion using
+ standard DoWhatIMeanSupport"
+
+ | env firstLetter doMatch|
+
+ env := self theSingleSelectedNamespace ? #Smalltalk.
+ env = NavigatorModel nameListEntryForALL ifTrue:[env := #Smalltalk].
+ env := environment at: env.
+ partialName isEmptyOrNil ifTrue: [
+ ^ #('' #())
+ ].
+ firstLetter := partialName first.
+ (partialName size > 1
+ and:[firstLetter == $*
+ and:[partialName second isLetter]]
+ ) ifTrue:[
+ firstLetter := partialName second
+ ].
+ firstLetter isUppercase ifTrue:[
+ ^ DoWhatIMeanSupport classnameCompletion: partialName inEnvironment: env
+ ].
+
+ doMatch := true.
+ "/ to allow searching for multiplication
+ partialName = '*' ifTrue:[
+ doMatch := false.
+ ].
+ ^ DoWhatIMeanSupport selectorCompletion: partialName inEnvironment: env match:doMatch
! !
@@ -59342,6 +59350,7 @@
!
searchFieldCreated:anInputField
+ anInputField font:(ListView defaultFont).
anInputField emptyFieldReplacementText:
"/(resources string:'Class Search & History').
(resources string:'Search Class/Selector (Ctrl-L)').
@@ -59813,7 +59822,8 @@
cls isNil ifTrue:[^ self].
(navigationState isVersionDiffBrowser
- or:[navigationState isCheckOutputBrowser]) ifTrue:[
+ or:[navigationState isCheckOutputBrowser
+ or:[navigationState isLintResultBrowser]]) ifTrue:[
self spawnFullBrowserInClass:cls selector:nil in:#newBuffer.
^ self
].
@@ -59851,12 +59861,14 @@
organizerModeHolder := navigationState organizerMode.
organizerMode := organizerModeHolder value.
- "/ toggle view mode (between category and class hierarchy)
- organizerMode == OrganizerCanvas organizerModeClassHierarchy ifTrue:[
- newMode := OrganizerCanvas organizerModeCategory
- ] ifFalse:[
- organizerMode == OrganizerCanvas organizerModeCategory ifTrue:[
- newMode := OrganizerCanvas organizerModeClassHierarchy
+ navigationState isLintResultBrowser ifFalse:[
+ "/ toggle view mode (between category and class hierarchy)
+ organizerMode == OrganizerCanvas organizerModeClassHierarchy ifTrue:[
+ newMode := OrganizerCanvas organizerModeCategory
+ ] ifFalse:[
+ organizerMode == OrganizerCanvas organizerModeCategory ifTrue:[
+ newMode := OrganizerCanvas organizerModeClassHierarchy
+ ].
].
].
newMode notNil ifTrue:[