SmallSense__SmalltalkCompletionEngine.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:
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:smallsense' }"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: SmallSense }"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
     5
CompletionEngine subclass:#SmalltalkCompletionEngine
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
     6
	instanceVariableNames:'inferencer'
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
     7
	classVariableNames:'Debug'
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
     9
	category:'SmallSense-Smalltalk'
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    13
!SmalltalkCompletionEngine class methodsFor:'initialization'!
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    14
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    15
initialize
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    16
    "Invoked at system start or when the class is dynamically loaded."
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    17
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    18
    "/ please change as required (and remove this comment)
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    19
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    20
    Debug := false.
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    21
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    22
    "Modified: / 22-01-2014 / 09:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    23
! !
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    24
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    25
!SmalltalkCompletionEngine class methodsFor:'accessing'!
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    26
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    27
debug
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    28
    ^ Debug
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    29
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    30
    "Created: / 22-01-2014 / 09:08:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    31
!
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    32
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    33
debug: aBoolean
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    34
    Debug := aBoolean .
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    35
    "
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
    36
    self debug: true.
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
    37
    self debug: false.
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    38
    "
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    39
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    40
    "Created: / 22-01-2014 / 09:08:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
    41
    "Modified (comment): / 22-01-2014 / 19:42:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    42
! !
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    43
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
    44
!SmalltalkCompletionEngine class methodsFor:'utilities'!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
resultSetFor: mode source: source class: class line: line column: col 
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    | inferencer tree |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    mode == #method ifTrue:[
69
1a143dfff51b Copied ParseTreeIndex from libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    50
        inferencer := SmalltalkInferencer forClass: class methodSource: source asString.
78
16cd76c8d70c Fix in SmallSense::Recognizer: use customized SmalltalkParser to parse smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 73
diff changeset
    51
        inferencer parserClass: SmalltalkParser.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    ] ifFalse:[
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
        self breakPoint: #jv.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
        ^nil.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
        inferencer := Parser for: (source asString readStream).
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
        "JV@2011-06-13: HACK, use polymorphism"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        tree := inferencer
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
            parseExpressionWithSelf:nil 
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
            notifying:nil 
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
            ignoreErrors:false 
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
            ignoreWarnings:false 
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
            inNameSpace:nil.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
        inferencer tree: tree.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    ^ self new
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
        completeAtLine:line
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
        column:col
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    68
        inferencer:inferencer
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    "Created: / 26-11-2011 / 17:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    72
    "Modified: / 13-05-2014 / 12:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    75
!SmalltalkCompletionEngine methodsFor:'completion-individual'!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
addClassVariables
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    | class |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    80
    class := inferencer klass theNonMetaclass.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    class classVarNames do:[:nm|
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    82
        result add:(VariablePO classVariable: nm in: class).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    "Created: / 24-07-2013 / 17:00:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    "Modified: / 30-07-2013 / 23:32:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
addGlobalsStartingWith: prefix
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    91
    | class ns cls environment |
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    92
    class := inferencer klass.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    ns := class nameSpace.
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
    94
    environment := context environment.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    "nameSpace may return private class, sigh"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    [ ns isNameSpace ] whileFalse:[ ns := ns nameSpace ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    ns keysDo:[:nm|
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
        (nm startsWith: prefix) ifTrue:[
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
            cls := ns classNamed: nm.
146
dfb2ae961d9c Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   100
            (cls notNil and:[cls name = nm]) ifTrue:[
dfb2ae961d9c Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   101
                (JavaPackage isNil or:[cls isJavaPackage not]) ifTrue:[
dfb2ae961d9c Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   102
                    result add:(ClassPO new subject: cls; showPrefix: cls isJavaClass).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
                ]
146
dfb2ae961d9c Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   104
            ] ifFalse:[
195
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   105
                (self isGlobalKeyForClassVariable: nm) ifFalse:[  
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   106
                    result add:(VariablePO globalVariable: nm)
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   107
                ].
146
dfb2ae961d9c Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   108
            ].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
        ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    ].
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   111
    ns ~~ environment ifTrue:[
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   112
        environment keysDo:[:nm|
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
            (nm startsWith: prefix) ifTrue:[
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   114
                cls := environment classNamed: nm.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   115
                (JavaPackage isNil or:[cls isJavaPackage not ]) ifTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   116
                    cls notNil ifTrue:[
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   117
                        cls isBehavior ifTrue:[
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   118
                            result add:(ClassPO new subject: cls; showPrefix: cls isJavaClass).
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   119
                        ] ifFalse:[
195
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   120
                            (self isGlobalKeyForClassVariable: nm) ifFalse:[  
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   121
                                result add:(VariablePO globalVariable: nm).
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   122
                            ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   123
                        ]
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
                    ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
                ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
            ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
        ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    "Created: / 26-11-2011 / 17:29:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   131
    "Modified: / 13-05-2014 / 12:09:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
addPools
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    | class |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   137
    class := inferencer klass theNonMetaclass.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    class theNonMetaclass sharedPools do:[:pool|
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
        pool theNonMetaclass classVarNames do:[:nm|
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   140
            result add:(VariablePO classVariable: nm in: pool).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
        ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    "Created: / 24-07-2013 / 16:59:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    "Modified: / 30-07-2013 / 23:32:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
addPrivateClasses
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
    | class |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   152
    class := inferencer klass theNonMetaclass.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    class privateClassesDo:[:pclass|
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
        | nm |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
        nm := pclass fullName copyFrom: class fullName size + 3.
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   157
        result add:(ClassPO new subject: pclass; name: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    "Created: / 06-08-2013 / 12:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
addVariablesFor: node
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
93
f50bd9fded52 Fix in Recognizer - set correct class for instance-variable POs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   165
    | n klass |
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "Add Instance variables"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   168
    klass := inferencer klass.
93
f50bd9fded52 Fix in Recognizer - set correct class for instance-variable POs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   169
    [ klass notNil ] whileTrue:[
153
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   170
        | usedInstVars |
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   171
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   172
        usedInstVars := inferencer parser usedInstVars. 
153
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   173
        klass instVarNames do:[:nm |
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   174
            | po |
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   175
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   176
            po := VariablePO instanceVariable: nm in: klass.
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   177
            "/ Raise relevance if the instvar is already used in the code...
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   178
            (usedInstVars includes: nm) ifTrue:[
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   179
                po relevance: (po relevance + 10).
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   180
            ].
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   181
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   182
            result add: po.
b04d591c8788 Added relevance value to completion item. Pre-select the most relevant item in complection view.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   183
        ].
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   184
        "/ When on class side (i.e., in class method), do not complete
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   185
        "/ instance variables of Class / ClassDescription / Behaviour
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   186
        "/ as STC won't compile such code.
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   187
        klass := (klass isMetaclass and:[klass superclass == Class]) 
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   188
                    ifTrue:[nil]
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   189
                    ifFalse:[klass superclass].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    "Add pseudo variables"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
    #(self super here thisContext) do:[:nm|
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   193
        result add: (VariablePO new name: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    "Add arguments"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   196
    inferencer parser methodArgs ? #() do:[:nm|
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   197
        result add: (VariablePO argument: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    "Add temporaries"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   200
    inferencer parser methodVars ? #() do:[:nm|
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   201
        result add: (VariablePO variable: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    ].
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   203
    "Add literals"
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   204
    #(#true #false #nil ) do:[:nm|
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   205
        result add: (SnippetPO new subject: nm).
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   206
    ].
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   207
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    n := node.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    [ n notNil ] whileTrue:[
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
        n isBlockNode ifTrue:[
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   212
            n arguments ? #() do:[:barg|result add: (VariablePO variable: barg name)].
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   213
            n variables ? #() do:[:bvar|result add: (VariablePO variable: bvar name)].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
        ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
        n := n parent.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    "Created: / 31-07-2013 / 00:32:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   219
    "Modified: / 22-01-2014 / 19:42:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   222
!SmalltalkCompletionEngine methodsFor:'completion-private'!
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   223
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   224
complete
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   225
    "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: 153
diff changeset
   226
     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: 153
diff changeset
   227
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   228
    | class |
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   229
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   230
    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: 153
diff changeset
   231
    class := codeView isCodeView2
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   232
                ifTrue: [ codeView klass ]  
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   233
                ifFalse: [ codeView editedClass ].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   234
    class isNil ifTrue:[
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   235
        class := UndefinedObject.
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   236
    ].
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   237
    ^ self complete: codeView codeAspect source: codeView contents class: class line: codeView cursorLine column: codeView cursorCol
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   238
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   239
    "Created: / 02-10-2013 / 13:32:30 / 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: 153
diff changeset
   240
    "Modified: / 21-01-2014 / 23:20:17 / 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: 153
diff changeset
   241
!
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   242
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   243
complete: mode source: source class: class line: lineNrArg column: colNrArg 
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   244
    | inf lineNr colNr |
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   245
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   246
    mode == #method ifTrue:[
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   247
        lineNr := lineNrArg.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   248
        colNr := colNrArg.
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   249
        inf := SmalltalkInferencer forClass: class methodSource: source asString.
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   250
    ] ifFalse:[
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   251
        | line |
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   252
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   253
        lineNr := 1.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   254
        colNr := colNrArg.
127
98c615301608 Fixes for Java completion (for both Java/Groovy and Smalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 124
diff changeset
   255
        line := codeView list at: lineNrArg ifAbsent:[ nil ].
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   256
        line isEmptyOrNil ifTrue:[ ^ nil ].
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   257
        inf := SmalltalkInferencer forExpression: line.
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   258
    ].
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   259
    inf parserClass: SmalltalkParser.
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   260
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   261
    ^ self
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   262
        completeAtLine:lineNr
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   263
        column:colNr
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   264
        inferencer:inf
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   265
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   266
    "Created: / 02-10-2013 / 13:23:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   267
    "Modified: / 13-05-2014 / 12:29:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   268
!
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   269
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   270
completeAfter:node
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   271
    "return collection of completion items after given node"
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   272
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   273
    | type |
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   274
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   275
    type := node inferedType.
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   276
    type isUnknownType ifFalse:[
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   277
        self addMethodsForType: node inferedType
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   278
    ].
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   279
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   280
    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   281
    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   282
    "Created: / 26-11-2011 / 17:07:52 / 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: 114
diff changeset
   283
    "Modified: / 24-09-2013 / 02:15:57 / 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: 114
diff changeset
   284
!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   286
completeAtLine:line column:col inferencer:inferencerArg 
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
    "find most possible codeCompletion object"
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   288
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   289
    | nodeToPosition |
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   290
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   291
    inferencer := inferencerArg.
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   292
    inferencer process.
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   293
    (inferencer tree isNil or:[inferencer tree == #Error]) ifTrue:[ 
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   294
        ^ nil 
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    ].
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   296
    inferencer environment: context environment.
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   297
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   298
    nodeToPosition := SmalltalkParseNodeFinder new 
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   299
                        findNodeIn: inferencer source tree: inferencer tree comments: inferencer parser commentPositions
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 159
diff changeset
   300
                        line: line column: col.
157
c71d2e62ece2 Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   301
    context node: nodeToPosition key position: nodeToPosition value.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   303
    context isAfterNode ifTrue:[
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   304
        self completeAfter:context node.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    ] ifFalse:[
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   306
    context isInNode ifTrue:[
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   307
        self completeIn:context node.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    ] ifFalse:[
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   309
    context isBeforeNode ifTrue:[
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   310
        self completeBefore:context node.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
    ]]].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   313
    result isEmpty ifTrue:[
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
        nil "/Only to set breakpoint here
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
    ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   316
    ^result.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   318
    "Created: / 13-05-2014 / 12:29:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
completeBefore:node
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    self breakPoint: #jv. "Not yet implemented"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    "Created: / 26-11-2011 / 17:07:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   330
completeIn:node 
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
    "return collection which can be afterNode"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
    
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    node isVariableNode ifTrue:[
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   334
        self completeInVariableNode:node.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   335
        ^ self.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
    node isMessage ifTrue:[
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   338
        self completeInMessageNode:node.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   339
        ^ self
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
    ].
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   341
    self breakPoint:#jv.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
    "Created: / 07-03-2011 / 18:59:02 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
    "Modified: / 08-04-2011 / 09:31:51 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    "Created: / 26-11-2011 / 17:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   346
    "Modified: / 08-04-2014 / 20:52:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   347
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   348
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   349
completeInMessageNode:node 
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   350
    | parent |
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   351
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   352
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   353
    self addMethodsForType: node receiver inferedType prefix: node selector stripOff: nil.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   354
    parent := node parent.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   355
    parent isMessage ifTrue:[
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   356
        self addMethodsForType: parent receiver inferedType prefix: node selector stripOff: parent selector.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   357
    ].
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   358
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   359
    "Modified (format): / 08-04-2014 / 21:16:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   360
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   361
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   362
completeInVariableNode:node 
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   363
    node name first isUppercase ifTrue:[
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   364
        self addGlobalsStartingWith:node name.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   365
        self addClassVariables.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   366
        self addPools.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   367
        self addPrivateClasses.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   368
    ] ifFalse:[
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   369
        self addVariablesFor:node
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   370
    ]
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
195
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   373
!SmalltalkCompletionEngine methodsFor:'queries'!
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   374
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   375
isGlobalKeyForClassVariable: aString
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   376
    | i |
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   377
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   378
    i := 0.
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   379
    [ 
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   380
        i := aString indexOf: $: startingAt: i + 1.
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   381
        i ~~ 0 
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   382
    ] whileTrue:[ 
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   383
        aString size > i ifTrue:[ 
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   384
            (aString at: i + 1) ~~ $: ifTrue:[ 
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   385
                ^ true
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   386
            ].
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   387
        ].
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   388
        i := i + 1.
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   389
    ].
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   390
    ^ false
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   391
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   392
    "
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   393
    SmalltalkCompletionEngine new isGlobalKeyForClassVariable: 'AAA'
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   394
    SmalltalkCompletionEngine new isGlobalKeyForClassVariable: 'AAA:X'
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   395
    SmalltalkCompletionEngine new isGlobalKeyForClassVariable: 'BB::CC::AA'
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   396
    SmalltalkCompletionEngine new isGlobalKeyForClassVariable: 'BB::CC::AA:X'
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   397
    "
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   398
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   399
    "Created: / 09-04-2014 / 13:49:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   400
! !
afdaa19094ef Fix in Smalltalk completion: do now show globals which are actually class vars.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   401
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   402
!SmalltalkCompletionEngine class methodsFor:'documentation'!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
version_HG
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
    ^ '$Changeset: <not expanded> $'
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
version_SVN
174
3e08d765d86f sync from current CVS head; fixed comment highlighting for STXEOLRule
Claus Gittinger
parents: 136
diff changeset
   410
    ^ '$Id: SmallSense__SmalltalkCompletionEngine.st,v 1.2 2014/02/12 14:49:29 sr Exp $'
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   413
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   414
SmalltalkCompletionEngine initialize!