SmallSense__JavaCompletionEngineSimple.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 20 May 2014 11:01:39 +0100
changeset 229 c82a22d2153d
parent 192 f27ce6dac101
child 233 fb33bd6466a4
permissions -rw-r--r--
PO refactoring: get rid of subject instvar. The meaning of subject instvar was ambiguous and confusing. Some PO don't even use it to store anything meaningful. Now each PO should define its own instvars with meaningfull names to store information they need.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:smallsense' }"
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: SmallSense }"
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
CompletionEngine subclass:#JavaCompletionEngineSimple
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
     6
	instanceVariableNames:'class classTree method methodTree'
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'SmallSense-Java'
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
126
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
    12
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!JavaCompletionEngineSimple methodsFor:'completion'!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    15
completeNode: node
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    16
    Transcript 
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    17
        show: 'Java Simple Completion on node: ';
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    18
        show: node printString;
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    19
        show: ' [';
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    20
        show: node class printString;
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    21
        showCR: ']'.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    22
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    23
    "Created: / 20-10-2013 / 01:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    24
!
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    25
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    26
completeSimple
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    27
    | line col scanner token tokens values startPositions stopPositions maybeReceiverToken |
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    line := codeView listAt: codeView cursorLine.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    col := codeView cursorCol.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    line isNil ifTrue:[ ^ nil ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    line size < (col - 1) ifTrue:[ ^ nil ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    34
"/    "/ we need at least three characters in order to reduce
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    35
"/    "/ completions...
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    36
"/    line size < 3 ifTrue:[ ^ nil ]. 
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    37
"/    col - 3 to: col - 1 do:[:i|
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    38
"/        | c |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    39
"/
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    40
"/        c := line at: i.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    41
"/        (c isLetterOrDigit or:[c == $_ or:[ c == $$ ] ]) ifFalse:[ ^ nil ] 
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    42
"/    ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    "/ Setup some context vars
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    method := codeView editedMethod.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    class := method notNil ifTrue:[method mclass] ifFalse:[codeView editedClass ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "/ ok, we got three character prefix, now scan the current line...
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    scanner := JavaScanner for: line.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    tokens := OrderedCollection new.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    values := OrderedCollection new.
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    52
    startPositions := OrderedCollection new.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    53
    stopPositions := OrderedCollection new.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    [
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
        [ (token := scanner nextToken) ~~ #EOF and:[ scanner tokenStartPosition < (col - 1) ] ] whileTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
            tokens add: token.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
            values add: scanner tokenValue.
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    58
            startPositions add: scanner tokenStartPosition.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    59
            stopPositions add: scanner tokenEndPosition. 
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
        ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    ] on: Error do:[ 
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
        ^ nil 
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    65
    tokens isEmpty ifTrue:[ ^ nil ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    66
    "/ now, simple check for import declaration
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    67
    tokens first == #import and:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    68
        | prefix |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    69
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    70
        prefix := String streamContents:[:s|
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    71
            | i |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    72
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    73
            i := 2.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    74
            [ i <= tokens size ] whileTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    75
                (tokens at: i) == #Identifier ifTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    76
                    s nextPutAll: (values at: i).
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    77
                ] ifFalse:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    78
                    ^ nil "/ malformed import
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    79
                ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    80
                (i < tokens size) ifTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    81
                    (tokens at: i + 1) == $. ifTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    82
                        s nextPut: $.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    83
                    ] ifFalse:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    84
                        ^ nil "/ malformed import
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    85
                    ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    86
                ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    87
                i := i + 2.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    88
            ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    89
        ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    90
        self addImportsStartingWith: prefix.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    91
        ^ result.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    92
    ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    93
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    94
    "/ We need at least three characters to complete methods/fields.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    95
    (tokens last ~~ #Identifier or:[values last size < 3]) ifTrue:[ ^ nil ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    96
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    97
    "/ Complete after new keyword
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    98
    (tokens size > 1 and:[(tokens at: tokens size - 1) == #new]) ifTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    99
        self addClassesStartingWith: values last.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   100
        ^ result.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   101
    ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   102
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   103
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    "/ now check whether the butlast token is dot...
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    maybeReceiverToken := nil.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    (tokens size > 1 and:[(tokens at: tokens size - 1) == $.]) ifTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
        "/ if so, it's likely a message send, then complete methods...
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
        tokens size > 2 ifTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
            maybeReceiverToken := values at: values size - 2.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    ] ifFalse:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
        "/ if not, then complete local variables, fields and methods defined in the class itself.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
        maybeReceiverToken := 'this'.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    maybeReceiverToken = 'this' ifTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
        values last first isUppercase ifTrue:[      
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
            self addClassesStartingWith: values last.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
        ] ifFalse:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
            self addFieldsStartingWith: values last.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
            self addLocalsStartingWith: values last.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
        ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    self addMethodsForReceiver: maybeReceiverToken startingWith: values last.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    ^ result
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   127
    "Created: / 20-10-2013 / 01:32:01 / 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:
diff changeset
   128
! !
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
126
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   130
!JavaCompletionEngineSimple methodsFor:'completion-helpers'!
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   131
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   132
javaClassesDo: aBlock
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   133
    | loader loaders |
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   134
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   135
    loaders := Set new.
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   136
    loader := (class notNil and:[class isJavaClass]) ifTrue:[class classLoader] ifFalse:[JavaVM systemClassLoader].
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   137
    [ loader notNil ] whileTrue:[
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   138
        loaders add: loader.
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   139
        loader := loader instVarNamed: #parent.
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   140
    ].
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   141
    loaders add: nil.
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   142
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   143
    JavaVM registry  classesDo:[:cls|
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   144
        (loaders includes: cls classLoader) ifTrue:[
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   145
            aBlock value: cls.
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   146
        ].
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   147
    ].
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   148
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   149
    "Created: / 04-10-2013 / 13:10:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   150
! !
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   151
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
!JavaCompletionEngineSimple methodsFor:'completion-individual'!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
addClassesStartingWith: prefix
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   155
    self javaClassesDo:[:cls|
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
        | name i |
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   158
        name := cls lastName.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
        i := name lastIndexOf: $/.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
        ((name size >= (i + prefix size))
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
            and:[(name at: i + 1) == prefix first
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
            and:[(name at: i + prefix size) == prefix last
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
            and:[(2 to: prefix size - 1) allSatisfy:[:o| (name at: i + o) == (prefix at: o)]]]])
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
            ifTrue:[
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   165
                result add: (PO forClass: cls).        
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
            ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    "Created: / 03-10-2013 / 11:16:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   170
    "Modified: / 20-05-2014 / 09:57:52 / 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:
diff changeset
   171
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
addFieldsStartingWith: prefix
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    | klass |
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   176
    classTree notNil ifTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   177
        (classTree fields ? #()) do:[:field |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   178
            result add: (VariablePO instanceVariable: field name in: class).            
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   179
        ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   180
    ] ifFalse:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   181
        klass := class.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   182
    ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   183
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    [ klass notNil ] whileTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
        klass instVarNames do:[:nm |
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
            result add: (VariablePO instanceVariable: nm in: klass).
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
        ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
        klass := klass superclass.
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
    ].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    "Created: / 03-10-2013 / 11:16:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   192
    "Modified: / 20-10-2013 / 02:04:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   193
!
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   194
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   195
addImportsStartingWith: prefix
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   196
    | packages |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   197
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   198
    packages := Set new.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   199
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   200
    "/ Class imports...
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   201
    self javaClassesDo:[:cls|
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   202
        | name i |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   203
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   204
        name := cls javaName.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   205
        (cls isPublic and:[name startsWith: prefix]) ifTrue:[
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   206
            result add: (JavaImportPO new import: name; klass: cls; yourself).        
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   207
            packages add: cls javaPackage.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   208
        ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   209
    ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   210
    "/ Package imports...
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   211
    packages do:[:each |
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   212
        result add: (JavaImportPO new import: (each , '.*'))
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   213
    ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   214
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   215
    "Created: / 19-10-2013 / 17:54:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 192
diff changeset
   216
    "Modified: / 20-05-2014 / 10:10:48 / 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:
diff changeset
   217
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
addLocalsStartingWith: prefix
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   220
    | queue |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   221
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   222
    methodTree isNil ifTrue:[ ^ self ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   223
    methodTree scope isNil ifTrue:[ ^ self ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   224
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   225
    queue := OrderedCollection with: methodTree scope.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   226
    [ queue notEmpty ] whileTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   227
        | scope |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   228
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   229
        scope := queue removeFirst.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   230
        1 to: scope localIndex do:[:i|
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   231
            | nm |
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   232
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   233
            nm := (scope locals at: i) name.
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   234
            (nm startsWith: prefix) ifTrue:[
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   235
                result add: (VariablePO instanceVariable: nm in: class). 
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   236
            ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   237
        ].
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   238
    ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
    "Created: / 03-10-2013 / 17:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   241
    "Modified: / 20-10-2013 / 02:15:51 / 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:
diff changeset
   242
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
addMethodsForReceiver: maybeReceiverToken startingWith: prefix    
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    ^ self addMethodsStartingWith: prefix
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    "Created: / 03-10-2013 / 17:46:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
!
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
addMethodsStartingWith: prefix    
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   251
    ^ self addMethodsStartingWith: prefix stripOff: nil filter: [:m | m isJavaMethod ]
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    "Created: / 03-10-2013 / 18:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   254
    "Modified: / 08-04-2014 / 21:37:21 / 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:
diff changeset
   255
! !
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   257
!JavaCompletionEngineSimple 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: 133
diff changeset
   258
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   259
complete
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   260
    
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   261
    | position entry node |
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   262
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   263
    position := context codeView characterPositionOfCursor.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   264
    codeView syntaxElements notEmptyOrNil ifTrue:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   265
        entry := codeView syntaxElements atCharacterPosition: position - 1. 
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   266
        entry notNil ifTrue:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   267
            node := entry node
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   268
        ].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   269
        codeView syntaxElements tree notNil ifTrue:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   270
            classTree := (codeView syntaxElements tree types ? #()) detect:[:t | (position - 1) between: t declarationSourceStart and: t declarationSourceEnd ] ifNone:[nil].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   271
            classTree notNil ifTrue:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   272
                methodTree := (classTree methods ? #()) detect:[:m | (position - 1) between: m declarationSourceStart and: m declarationSourceEnd ] ifNone:[nil].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   273
            ]
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   274
        ].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   275
    ].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   276
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   277
    context node: node position: position.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   278
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   279
    node isNil ifTrue:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   280
        self completeSimple.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   281
    ] ifFalse:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   282
        self completeNode: node.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   283
    ].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   284
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   285
    ^ result
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   286
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   287
    "Created: / 02-10-2013 / 13:55:43 / 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: 133
diff changeset
   288
    "Modified: / 21-01-2014 / 23:22:56 / 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: 133
diff changeset
   289
! !
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   290
126
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   291
!JavaCompletionEngineSimple class methodsFor:'documentation'!
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   292
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   293
version_HG
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   294
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   295
    ^ '$Changeset: <not expanded> $'
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   296
! !
b6468af34fa5 Added lost SmallSense::JavaCompletionEngineSimple>>javaClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   297