SmallSense__CompletionEngine.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 15 May 2014 14:41:52 +0100
changeset 212 a2caebc602a7
parent 210 1922d415c704
child 233 fb33bd6466a4
permissions -rw-r--r--
Fixes and improvements for Java/Groovy completion (part 1) * Better presentation of constructors. * Better alignment of completion window when completing packages / full class names.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:smallsense' }"
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 |
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    27
        prefix size < 5 ifTrue:[ 
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    28
            selector startsWith: prefix.  
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
    29
        ] ifFalse:[ 
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 |
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    44
        prefix size < 5 ifTrue:[ 
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    45
            selector startsWith: prefix.  
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
    46
        ] ifFalse:[ 
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
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
completeFor: aCodeView2OrTextEditView
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    "Compute completion for given codeView, taking all the information
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
     from it. Returns a CompletionResult with computed completions"
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    codeView := aCodeView2OrTextEditView.
118
88e6fd734a11 Some more fixes in complete-as-you-type support...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    85
    result := CompletionResult new.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
    86
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ^ self complete.
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    "Created: / 02-10-2013 / 13:24:43 / 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
    90
    "Modified: / 03-10-2013 / 16:42:19 / 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
    91
! !
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
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
!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
    94
212
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
    95
addClassesInJavaPackage: prefix
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
    96
    prefix isEmptyOrNil ifTrue:[
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
    97
        context environment allClassesDo: [:cls |
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
    98
            cls isJavaClass ifTrue:[
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
    99
                result add: (ClassPO new klass: cls; showPrefix: true; yourself)
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   100
            ].
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   101
        ].
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   102
    ] ifFalse:[
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   103
        context environment allClassesDo: [:cls |
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   104
            (cls isJavaClass and:[cls binaryName startsWith: prefix]) ifTrue:[
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   105
                result add: (ClassPO new klass: cls; showPrefix: true; yourself)
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   106
            ].
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   107
        ].
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   108
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   109
    ].
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   110
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   111
    "Created: / 15-05-2014 / 11:43:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   112
!
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   113
210
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   114
addMethodsForType: type 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   115
    | classes seen |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   116
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   117
    classes := type classes.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   118
    "/ Hack for Boolean: ifTrue:iFalse: etc are not defined
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   119
    "/ in Boolean ?!!?
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   120
    (classes size == 1 and:[classes anElement == Boolean ]) ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   121
        classes := Array with: True with: False.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   122
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   123
    classes size == 1 ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   124
        classes anElement == JavaPackage class ifTrue:[  
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   125
            "/ Special hack for JAVA: for pattern `JAVA java lang reflect`
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   126
            "/ complete all Java classes in that package
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   127
            | node |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   128
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   129
            node := result context node.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   130
            node isUnaryMessage ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   131
                | package |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   132
                "/ Compute package prefix...
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   133
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   134
                package := node selector.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   135
                node := node receiver.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   136
                [ node isUnaryMessage ] whileTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   137
                    package := node selector , '/' , package.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   138
                    node := node receiver.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   139
                ].
212
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   140
                self addClassesInJavaPackage: package.
210
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   141
                ^ self.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   142
            ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   143
        ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   144
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   145
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   146
    seen := Set new.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   147
    classes do: [:each | 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   148
        | class |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   149
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   150
        class := each.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   151
        [ class notNil and:[(seen includes: class) not]] whileTrue: [
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   152
            seen add: class.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   153
            "/ Now, special care for Java classes, sigh...
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   154
            (class isMetaclass and:[class theNonMetaclass isJavaClass]) ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   155
                class theNonMetaclass selectorsAndMethodsDo: [:selector :met | 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   156
                    met isStatic ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   157
                        result add: (MethodPO 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   158
                                    name: selector
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   159
                                    class: met mclass).
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   160
                    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   161
                ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   162
            ] ifFalse:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   163
                class selectorsAndMethodsDo: [:selector :met | 
212
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   164
                    "/ Do not offer synthetic methods and Java ctors
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   165
                    (met isSynthetic or:[met isJavaMethod and:[met selector startsWith: '<init>']]) ifFalse:[
210
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   166
                        result add: (MethodPO 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   167
                                    name: selector
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   168
                                    class: met mclass).
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   169
                    ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   170
                ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   171
            ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   172
            class := class superclass.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   173
        ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   174
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   175
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   176
    "Created: / 26-11-2011 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
212
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   177
    "Modified: / 15-05-2014 / 11:43:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
210
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   178
!
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   179
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   180
addMethodsForType: type prefix: prefix stripOff: stripprefix
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   181
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   182
    type isUnknownType ifFalse:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   183
        self addMethodsForType:type stripOff: stripprefix.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   184
        
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   185
        "/ If the type is union of more than 6 types, then
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   186
        "/ assume that the inferencer is likely wrong.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   187
        "/ then, if the prefix is at least 3 chars,
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   188
        "/ also add methods with that prefix.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   189
        
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   190
        ((type classes size > 6) and:[ prefix size > 2 ]) ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   191
            self addMethodsStartingWith:prefix stripOff: stripprefix
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   192
        ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   193
    ] ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   194
        self addMethodsStartingWith:prefix stripOff: stripprefix  
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   195
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   196
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   197
    "Created: / 08-04-2014 / 21:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   198
    "Modified: / 09-04-2014 / 09:31:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   199
!
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   200
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   201
addMethodsForType: type stripOff: stripprefix     
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   202
    | classes seen |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   203
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   204
    classes := type classes.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   205
    "/ Hack for Boolean: ifTrue:iFalse: etc are not defined
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   206
    "/ in Boolean ?!!?
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   207
    (classes size == 1 and:[classes anElement == Boolean ]) ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   208
        classes := Array with: True with: False.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   209
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   210
    classes size == 1 ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   211
        classes anElement == JavaPackage class ifTrue:[  
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   212
            "/ Special hack for JAVA: for pattern `JAVA java lang reflect`
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   213
            "/ complete all Java classes in that package
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   214
            | node |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   215
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   216
            node := result context node.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   217
            node isUnaryMessage ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   218
                | package |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   219
                "/ Compute package prefix...
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   220
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   221
                package := node selector.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   222
                node := node receiver.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   223
                [ node isUnaryMessage ] whileTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   224
                    package := node selector , '/' , package.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   225
                    node := node receiver.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   226
                ].
212
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   227
                self addClassesInJavaPackage: package.
210
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   228
                ^ self.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   229
            ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   230
        ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   231
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   232
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   233
    seen := Set new.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   234
    classes do: [:each | 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   235
        | class |
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   236
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   237
        class := each.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   238
        [ class notNil and:[(seen includes: class) not]] whileTrue: [
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   239
            seen add: class.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   240
            "/ Now, special care for Java classes, sigh...
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   241
            (class isMetaclass and:[class theNonMetaclass isJavaClass]) ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   242
                class theNonMetaclass selectorsAndMethodsDo: [:selector :met | 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   243
                    met isStatic ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   244
                        result add: (MethodPO 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   245
                                    name: selector
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   246
                                    class: met mclass).
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   247
                    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   248
                ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   249
            ] ifFalse:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   250
                class selectorsAndMethodsDo: [:selector :met | 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   251
                    met isSynthetic ifFalse:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   252
                        (stripprefix isNil or:[ selector size > stripprefix size and:[selector startsWith: stripprefix]]) ifTrue:[
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   253
                            result add: (MethodPO 
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   254
                                        name: selector
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   255
                                        class: met mclass
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   256
                                        stripOff: stripprefix).
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   257
                        ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   258
                    ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   259
                ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   260
            ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   261
            class := class superclass.
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   262
        ]
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   263
    ].
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   264
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   265
    "Created: / 08-04-2014 / 21:23:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
212
a2caebc602a7 Fixes and improvements for Java/Groovy completion (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 210
diff changeset
   266
    "Modified: / 15-05-2014 / 11:43:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
210
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   267
!
1922d415c704 AbstractJavaCompletionEngineSimple refactored to use token patterns. Initial support for receiver type guessing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 205
diff changeset
   268
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   269
addMethodsStartingWith: prefix
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   270
    ^ 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
   271
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   272
    "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
   273
    "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
   274
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   275
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   276
addMethodsStartingWith: prefix stripOff: stripoffPrefix 
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   277
    ^ 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
   278
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   279
    "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
   280
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   281
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   282
addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   283
    | 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
   284
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   285
    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
   286
    ^ 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
   287
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   288
    "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
   289
!
7baeeea7d8ae Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   290
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   291
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
   292
    | 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
   293
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   294
    selectors := Dictionary new.
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   295
    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
   296
    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
   297
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   298
    context environment allMethodsWithSelectorDo:[:mthd :selector|
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   299
        (mthd isSynthetic not and:[(filter value: mthd) and:[ matcher value: matchPrefix value: selector]]) ifTrue:[
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   300
            | class skip |
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   301
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   302
            class := mthd mclass superclass.
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   303
            skip := false.
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   304
            [ skip not and:[class notNil] ] whileTrue:[
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   305
                (class methodDictionary includesKey: selector) ifTrue:[
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   306
                    skip := 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
   307
                ].
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   308
                class := class superclass.
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   309
            ].
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   310
            skip ifFalse:[
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   311
                | classes |
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   312
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   313
                classes := selectors at: selector ifAbsentPut:[ Set new ].
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   314
                (classes includes: mthd mclass) ifFalse:[
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   315
                    classes add: mthd mclass.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   316
                ].
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   317
            ].
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   318
        ]
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   319
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   320
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   321
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   322
    selectors keysAndValuesDo: [:selector :classes|
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   323
        result add:(MethodPO 
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   324
                name:selector
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   325
                class:(classes size == 1 ifTrue:[classes anElement] ifFalse:[classes])
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   326
                stripOff: stripoffPrefix)
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   327
    ]
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   328
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 187
diff changeset
   329
    "Created: / 08-04-2014 / 21:34:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   330
    "Modified: / 13-05-2014 / 12:30:10 / 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
   331
! !
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 118
diff changeset
   332
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
   333
!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
   334
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
   335
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
   336
    "Compute completion for `codeView`, 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
   337
     from it. Returns a CompletionResult with computed completions"        
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
   338
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
   339
    ^ 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
   340
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
   341
    "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
   342
! !
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
   343
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
   344
!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
   345
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   346
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
   347
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   348
    ^ '$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
   349
! !
5c835893f71b New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   350