SmallSense__CompletionEngine.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 09 Jul 2014 12:06:40 +0100
changeset 249 8bc64027b189
parent 234 97857872ee47
child 252 feba6ee5c814
permissions -rw-r--r--
Package renamed to stx:goodies/smallsense
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
249
8bc64027b189 Package renamed to stx:goodies/smallsense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 234
diff changeset
     1
"{ Package: 'stx:goodies/smallsense' }"
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: SmallSense }"
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
Object subclass:#CompletionEngine
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
     6
	instanceVariableNames:'codeView result context'
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'SmallSense-Core'
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
147
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
    12
187
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    13
!CompletionEngine class methodsFor:'accessing'!
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    14
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    15
exactMatcher
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    16
    "Return a match block returning true, if given selector start with given prefix"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    17
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    18
    ^ [ :prefix :selector | selector startsWith: prefix ]
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    19
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    20
    "Created: / 08-04-2014 / 21:31:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    21
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    22
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    23
inexactMatcher
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    24
    "Return a match block returning true, if given prefix matches given selector"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    25
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    26
    ^ [ :prefix :selector |
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    27
        prefix size < 5 ifTrue:[
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    28
            selector startsWith: prefix.
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    29
        ] ifFalse:[
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    30
            | part |
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    31
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    32
            part := selector copyTo: (prefix size min: selector size).
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    33
            (prefix levenshteinTo: part) < 15
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    34
        ].
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    35
    ].
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    36
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    37
    "Created: / 08-04-2014 / 21:30:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    38
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    39
187
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    40
matcher
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    41
    "Return a match block returning true, if given prefix matches given selector"
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    42
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    43
    ^ [ :prefix :selector |
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    44
        prefix size < 5 ifTrue:[
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    45
            selector startsWith: prefix.
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    46
        ] ifFalse:[
187
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    47
            | part |
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    48
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    49
            part := selector copyTo: (prefix size min: selector size).
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    50
            (prefix levenshteinTo: part) < 15
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    51
        ].
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    52
    ].
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    53
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    54
    "Created: / 02-04-2014 / 23:30:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    55
! !
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    56
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!CompletionEngine class methodsFor:'testing'!
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
isAbstract
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    ^ self == CompletionEngine
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    "Created: / 02-10-2013 / 13:11:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
! !
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
!CompletionEngine methodsFor:'completion'!
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    67
complete: aCompletionContext
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    68
    "Compute completion for given completion context, taking all the information
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    69
     from it. Returns a CompletionResult with computed completions"
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    71
    context := aCompletionContext.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    72
    result := CompletionResult new.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    73
    codeView := context codeView.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    74
    result context: context.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    75
    ^ self complete.
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
    77
    "Created: / 21-01-2014 / 23:07:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
! !
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    80
!CompletionEngine methodsFor:'completion-individual'!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    81
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    82
addMethodsStartingWith: prefix
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    83
    ^ self addMethodsStartingWith: prefix stripOff: nil filter: nil
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    84
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    85
    "Created: / 24-07-2013 / 13:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    86
    "Modified: / 08-04-2014 / 21:36:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    87
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    88
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    89
addMethodsStartingWith: prefix stripOff: stripoffPrefix
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    90
    ^ self addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: nil
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    91
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    92
    "Created: / 08-04-2014 / 21:36:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    93
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    94
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    95
addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    96
    | matcher |
187
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    97
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    98
    matcher := stripoffPrefix isEmptyOrNil ifTrue:[ CompletionEngine inexactMatcher ] ifFalse:[ CompletionEngine exactMatcher ].
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    99
    ^ self addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil matcher: matcher.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   100
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   101
    "Created: / 08-04-2014 / 21:35:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
187
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   102
!
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   103
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   104
addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil matcher: matcher
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   105
    | matchPrefix selectors filter |
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   106
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   107
    selectors := Dictionary new.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   108
    matchPrefix := stripoffPrefix isNil ifTrue:[ prefix ] ifFalse:[ stripoffPrefix , prefix ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   109
    filter := filterOrNil  isNil ifTrue:[ [:method | true ] ] ifFalse:[ filterOrNil  ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   110
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   111
    context environment allMethodsWithSelectorDo:[:mthd :selector|
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   112
        (mthd isSynthetic not and:[(filter value: mthd) and:[ matcher value: matchPrefix value: selector]]) ifTrue:[
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   113
                | class overridden |
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   114
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   115
                class := mthd mclass superclass.
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   116
                overridden := false.
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   117
                [ overridden not and:[class notNil] ] whileTrue:[
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   118
                    (class methodDictionary includesKey: selector) ifTrue:[
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   119
                        overridden := true.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   120
                    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   121
                    class := class superclass.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   122
                ].
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   123
                overridden ifFalse:[
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   124
                    | classes |
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   125
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   126
                    classes := selectors at: selector ifAbsentPut:[ Set new ].
131
ea84eea5a3c4 Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   127
                    (classes includes: mthd mclass) ifFalse:[
ea84eea5a3c4 Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   128
                        classes add: mthd mclass.
ea84eea5a3c4 Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   129
                    ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   130
                ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   131
            ]
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   132
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   133
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   134
234
97857872ee47 Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   135
    selectors keysAndValuesDo: [:selector :classes |
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 201
diff changeset
   136
        result add:(PO forClasses: classes selector: selector prefix: stripoffPrefix)
234
97857872ee47 Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   137
    ].
97857872ee47 Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   138
    ^ self
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   139
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   140
    "Created: / 08-04-2014 / 21:34:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
234
97857872ee47 Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   141
    "Modified: / 23-05-2014 / 11:54:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   142
! !
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   143
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   144
!CompletionEngine methodsFor:'completion-private'!
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   145
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   146
complete
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   147
    "Compute completion for `codeView`, taking all the information
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   148
     from it. Returns a CompletionResult with computed completions"
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   149
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   150
    ^ self subclassResponsibility
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   151
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   152
    "Modified (comment): / 02-10-2013 / 13:33:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   153
! !
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 147
diff changeset
   154
147
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   155
!CompletionEngine class methodsFor:'documentation'!
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   156
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   157
version_HG
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   158
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   159
    ^ '$Changeset: <not expanded> $'
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   160
! !
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   161