class: DoWhatIMeanSupport
changed:
#classOfNode:
#codeCompletionForVariable:into:
better weight for class variables
--- a/DoWhatIMeanSupport.st Wed Oct 09 12:12:11 2013 +0200
+++ b/DoWhatIMeanSupport.st Wed Oct 09 18:15:38 2013 +0200
@@ -1743,6 +1743,10 @@
"/ some hardwired knowlegde here
receiverClass := self classOfNode:nodeReceiver.
receiverClass notNil ifTrue:[
+ nodeSelector == #class ifTrue:[
+ ^ receiverClass class
+ ].
+
receiverClass isBehavior ifTrue:[
mthd := receiverClass lookupMethodFor:nodeSelector.
receiverClass isMeta ifTrue:[
@@ -2896,14 +2900,14 @@
classOrNil notNil ifTrue:[
"/ private classes
addWithFactorBlock value:(nonMetaClass privateClasses collect:[:cls | cls nameWithoutPrefix])
- value:(1.75 * globalFactor).
+ value:(2.75 * globalFactor).
"/ class variables
names := nonMetaClass classVarNames.
responders := names select:[:classVar | (nonMetaClass classVarAt:classVar) respondsTo:selectorOfMessageToNode].
nonResponders := names reject:[:classVar | (nonMetaClass classVarAt:classVar) respondsTo:selectorOfMessageToNode].
- addWithFactorBlock value:responders value:(1.5 * globalFactor).
+ addWithFactorBlock value:responders value:(3.0 * globalFactor).
addWithFactorBlock value:nonResponders value:(0.5 * 1.5 * globalFactor).
"/ superclass var names
@@ -2912,7 +2916,7 @@
responders := names select:[:classVar | (superClass classVarAt:classVar) respondsTo:selectorOfMessageToNode].
nonResponders := names reject:[:classVar | (superClass classVarAt:classVar) respondsTo:selectorOfMessageToNode].
- addWithFactorBlock value:responders value:(1 * globalFactor).
+ addWithFactorBlock value:responders value:(2.75 * globalFactor).
addWithFactorBlock value:nonResponders value:(0.5 * 1 * globalFactor).
].
@@ -2934,6 +2938,7 @@
[:nm |
(nm includes:$:) and:[ (Smalltalk at:nm) isBehavior not]
].
+ names := names reject:[:nm | nm startsWith:'Undeclared:::' ].
names := names select:[:nm | nm isUppercaseFirst ] as:OrderedCollection.
responders := names select:[:glblVar | |c| c := Smalltalk at:glblVar. c isBehavior not or:[c isLoaded and:[c respondsTo:selectorOfMessageToNode]]].
@@ -2959,18 +2964,26 @@
classOrNil notNil ifTrue:[
"/ private classes
addWithFactorBlock value:(nonMetaClass privateClasses collect:[:cls | cls nameWithoutPrefix])
- value:(1.75 * globalFactor).
+ value:(2.75 * globalFactor).
"/ class variables
- addWithFactorBlock value:nonMetaClass classVarNames value:(2.0 * globalFactor).
+ addWithFactorBlock value:nonMetaClass classVarNames value:(3.0 * globalFactor).
classOrNil superclass notNil ifTrue:[
- addWithFactorBlock value:nonMetaClass superclass allClassVarNames value:(2.0 * globalFactor).
+ addWithFactorBlock value:nonMetaClass superclass allClassVarNames value:(2.5 * globalFactor).
].
"/ namespace vars
+ classOrNil topNameSpace ~~ Smalltalk ifTrue:[
+ names := classOrNil topNameSpace keys.
+ names := names reject:[:nm | nm includes:$:].
+ names := names select:[:nm | nm isUppercaseFirst ].
+ addWithFactorBlock value:names value:(2.5 * globalFactor).
+ ].
+ "/ namespace vars
classOrNil nameSpace ~~ Smalltalk ifTrue:[
names := classOrNil nameSpace isNameSpace ifTrue:[classOrNil nameSpace keys] ifFalse:[classOrNil nameSpace privateClasses collect:[:c | c nameWithoutPrefix]].
names := names select:[:nm | nm isUppercaseFirst ].
+ names := names reject:[:nm | nm includes:$:].
addWithFactorBlock value:names value:(2.5 * globalFactor).
].
@@ -2987,6 +3000,9 @@
"/ globals
names := Smalltalk keys.
names := names select:[:nm | nm isUppercaseFirst ].
+ names := names reject:[:nm | nm startsWith:'Undeclared:::' ].
+ names := names reject:[:nm | (nm includes:$:) and:[ (nm includesString:'::') not]].
+
"/ only consider all globals, if the first char of the completed name is uppercase;
"/ otherwise, only consider names with a caseInsensitve prefix match
nm first isUppercase ifTrue:[
@@ -2995,13 +3011,6 @@
names := names select:[:globalName | globalName asLowercase startsWith: nm].
].
addWithFactorBlock value:names value:(1.5 * globalFactor).
- "/ namespace vars
- classOrNil topNameSpace ~~ Smalltalk ifTrue:[
- names := classOrNil topNameSpace keys.
- names := names reject:[:nm | nm includes:$:].
- names := names select:[:nm | nm isUppercaseFirst ].
- addWithFactorBlock value:names value:(2.5 * globalFactor).
- ].
].
"/ pseudos - assuming that thisContext is seldom used.
@@ -3053,13 +3062,22 @@
].
].
allTheBest size > 15 ifTrue:[
- "/ remove all those which are below some threshold
- 0.4 to:0.8 by:0.1 do:[:delta |
+ "/ remove all those which are below some threshold or are a prefix
+ 0.4 to:0.9 by:0.1 do:[:delta |
"/ if still too many, remove more and more
allTheBest size > 15 ifTrue:[
allTheBest := allDistances select:[:entry | (entry key startsWith:nm) or:[ entry value >= (bestAssoc value * delta) ]].
]
].
+ allTheBest size > 15 ifTrue:[
+ "/ remove all those which are below some threshold
+ 0.4 to:0.9 by:0.1 do:[:delta |
+ "/ if still too many, remove more and more
+ allTheBest size > 15 ifTrue:[
+ allTheBest := allDistances select:[:entry | entry value >= (bestAssoc value * delta) ].
+ ]
+ ].
+ ].
].
suggestions := allTheBest collect:[:assoc | assoc key].
@@ -4529,10 +4547,10 @@
!DoWhatIMeanSupport class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.180 2013-10-08 15:20:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.181 2013-10-09 16:15:38 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.180 2013-10-08 15:20:10 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.181 2013-10-09 16:15:38 cg Exp $'
! !