--- a/SmallSense__CompletionEngine.st Fri Oct 04 08:01:47 2013 +0100
+++ b/SmallSense__CompletionEngine.st Fri Oct 04 08:25:15 2013 +0100
@@ -34,9 +34,58 @@
codeView := aCodeView2OrTextEditView.
result := CompletionResult new.
+
^ self complete.
"Created: / 02-10-2013 / 13:24:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 03-10-2013 / 11:18:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 03-10-2013 / 16:42:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!CompletionEngine methodsFor:'completion-individual'!
+
+addMethodsStartingWith: prefix
+ ^ self addMethodsStartingWith: prefix filter: nil
+
+ "Created: / 24-07-2013 / 13:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 03-10-2013 / 17:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addMethodsStartingWith: prefix filter: filterOrNil
+ | selectors filter |
+
+ selectors := Dictionary new.
+ filter := filterOrNil isNil ifTrue:[ [:method | true ] ] ifFalse:[ filterOrNil ].
+
+ Smalltalk allClassesDo:[:class|
+ class selectorsAndMethodsDo:[:selector :mthd |
+ ((selector startsWith: prefix) and:[filter value: mthd]) ifTrue:[
+ | class skip |
+
+ class := mthd mclass superclass.
+ skip := false.
+ [ skip not and:[class notNil] ] whileTrue:[
+ (class methodDictionary includesKey: selector) ifTrue:[
+ skip := true.
+ ].
+ class := class superclass.
+ ].
+ skip ifFalse:[
+ | classes |
+
+ classes := selectors at: selector ifAbsentPut:[ Set new ].
+ classes add: mthd mclass.
+ ].
+ ]
+ ].
+ ].
+
+ selectors keysAndValuesDo: [:selector :classes|
+ result add:(MethodPO
+ name:selector
+ description:"met source"nil
+ class:(classes size == 1 ifTrue:[classes anElement] ifFalse:[classes])).
+ ]
+
+ "Created: / 03-10-2013 / 17:56:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+