SmallSense__SmalltalkCompletionEngine.st
author Claus Gittinger <cg@exept.de>
Fri, 27 Mar 2015 12:34:51 +0100
branchcvs_MAIN
changeset 443 3511d16582e6
parent 428 0ad006b92fec
child 838 85db2fa38866
permissions -rw-r--r--
class: SmallSense::CriticsWindow comment/format in: #disableLintRule
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
428
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
     1
"{ Encoding: utf8 }"
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
     2
252
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     3
"
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     4
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     5
Copyright (C) 2013-2014 Jan Vrany
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     6
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     7
This library is free software; you can redistribute it and/or
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     8
modify it under the terms of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     9
License as published by the Free Software Foundation; either
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    10
version 2.1 of the License. 
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    11
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    12
This library is distributed in the hope that it will be useful,
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    13
but WITHOUT ANY WARRANTY; without even the implied warranty of
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    15
Lesser General Public License for more details.
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    16
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    17
You should have received a copy of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    18
License along with this library; if not, write to the Free Software
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    19
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    20
"
249
8bc64027b189 Package renamed to stx:goodies/smallsense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 236
diff changeset
    21
"{ Package: 'stx:goodies/smallsense' }"
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
"{ NameSpace: SmallSense }"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
    25
CompletionEngine subclass:#SmalltalkCompletionEngine
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    26
	instanceVariableNames:'collector'
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    27
	classVariableNames:'Debug'
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	poolDictionaries:''
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
    29
	category:'SmallSense-Smalltalk'
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
252
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    32
!SmalltalkCompletionEngine class methodsFor:'documentation'!
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    33
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    34
copyright
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    35
"
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    36
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    37
Copyright (C) 2013-2014 Jan Vrany
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    38
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    39
This library is free software; you can redistribute it and/or
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    40
modify it under the terms of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    41
License as published by the Free Software Foundation; either
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    42
version 2.1 of the License. 
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    43
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    44
This library is distributed in the hope that it will be useful,
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    45
but WITHOUT ANY WARRANTY; without even the implied warranty of
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    46
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    47
Lesser General Public License for more details.
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    48
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    49
You should have received a copy of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    50
License along with this library; if not, write to the Free Software
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    51
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    52
"
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    53
! !
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    55
!SmalltalkCompletionEngine class methodsFor:'initialization'!
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    56
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    57
initialize
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    58
    "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
    59
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    60
    "/ 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
    61
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    62
    Debug := false.
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    63
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    64
    "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
    65
! !
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    66
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    67
!SmalltalkCompletionEngine class methodsFor:'accessing'!
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    68
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    69
debug
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    70
    ^ Debug
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    71
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    72
    "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
    73
!
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    74
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    75
debug: aBoolean
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    76
    Debug := aBoolean .
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    77
    "
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
    78
    self debug: true.
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
    79
    self debug: false.
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    80
    "
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    81
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    82
    "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
    83
    "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
    84
! !
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
    85
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
    86
!SmalltalkCompletionEngine class methodsFor:'utilities'!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
    88
resultSetFor: mode source: source class: class line: line column: col
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    | inferencer tree |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    mode == #method ifTrue:[
69
1a143dfff51b Copied ParseTreeIndex from libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 64
diff changeset
    92
        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
    93
        inferencer parserClass: SmalltalkParser.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
        inferencer process.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    ] ifFalse:[
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
        self breakPoint: #jv.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
        ^nil.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
        inferencer := Parser for: (source asString readStream).
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
        "JV@2011-06-13: HACK, use polymorphism"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
        tree := inferencer
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   101
            parseExpressionWithSelf:nil
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   102
            notifying:nil
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   103
            ignoreErrors:false
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   104
            ignoreWarnings:false
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
            inNameSpace:nil.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
        inferencer tree: tree.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    ^ self new
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
        completeAtLine:line
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        column:col
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
        collector:inferencer
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "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
   114
    "Created: / 26-11-2011 / 17:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
78
16cd76c8d70c Fix in SmallSense::Recognizer: use customized SmalltalkParser to parse smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 73
diff changeset
   115
    "Modified: / 02-09-2013 / 14:43:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   116
    "Modified (format): / 02-10-2013 / 13:09:56 / 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
   117
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   119
!SmalltalkCompletionEngine methodsFor:'completion-helpers'!
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   120
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   121
javaClassesDo: aBlock
428
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   122
    | class loader loaders javaVM |
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   123
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   124
    (javaVM := Smalltalk at:#JavaVM) isNil ifTrue:[^ self].
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   125
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   126
    class := collector klass.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   127
    loaders := Set new.
428
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   128
    loader := (class notNil and:[class isJavaClass]) 
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   129
                    ifTrue:[class classLoader] 
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   130
                    ifFalse:[javaVM systemClassLoader].
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   131
    [ loader notNil ] whileTrue:[
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   132
        loaders add: loader.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   133
        loader := loader instVarNamed: #parent.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   134
    ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   135
    loaders add: nil.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   136
428
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   137
    javaVM registry allClassesDo:[:cls|
269
8aaf6403a01d Fixed Smalltalk completion: do not offer Java anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 258
diff changeset
   138
        (cls isAnonymous not and:[(loaders includes: cls classLoader)]) ifTrue:[
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   139
            aBlock value: cls.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   140
        ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   141
    ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   142
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   143
    "Created: / 04-10-2013 / 13:10:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
269
8aaf6403a01d Fixed Smalltalk completion: do not offer Java anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 258
diff changeset
   144
    "Modified: / 07-08-2014 / 13:03:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   145
! !
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   146
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   147
!SmalltalkCompletionEngine methodsFor:'completion-individual'!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
addClassVariables
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    | class |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
    class := collector klass theNonMetaclass.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    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
   154
        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
   155
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    "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
   158
    "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
   159
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
addGlobalsStartingWith: prefix
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
258
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   163
    | class namespace environment |
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    class := collector klass.
258
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   165
    namespace := class nameSpace.
205
43bee6463c53 Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   166
    environment := context environment.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "nameSpace may return private class, sigh"
258
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   168
    [ namespace isNameSpace ] whileFalse:[ namespace := namespace nameSpace ].
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   169
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   170
    environment keysDo:[:name |
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   171
            | value |
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   172
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   173
            (self isGlobalKeyForClassVariable: name) ifFalse:[ 
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   174
                value := environment at: name.
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   175
                ((name startsWith: prefix) or:[(value isBehavior and:[(value nameWithoutPrefix startsWith: prefix) or:[value nameWithoutNameSpacePrefix startsWith: prefix]])]) ifTrue:[
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   176
                    (value notNil and:[value isBehavior]) ifTrue:[ 
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   177
                        "/ Check for aliases...
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   178
                        | clsnm |
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   179
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   180
                        clsnm := value name.
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   181
                        clsnm = name ifTrue:[ 
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   182
                            result add: (PO forClass: value)
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   183
                        ] ifFalse:[ 
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   184
                            result add: (PO forGlobalNamed: name)  
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   185
                        ].
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   186
                    ] ifFalse:[ 
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   187
                        result add: (PO forGlobalNamed: name)  
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   188
                    ].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
                ]
146
dfb2ae961d9c Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 136
diff changeset
   190
            ].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
        ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    "Created: / 26-11-2011 / 17:29:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
258
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   194
    "Modified: / 24-07-2014 / 17:51:49 / 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
   195
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   197
addJavaClassesInPackage: prefix
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   198
    prefix isEmptyOrNil ifTrue:[
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   199
        self javaClassesDo: [:cls |
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   200
            result add: (ClassPO new klass: cls; showPrefix: true; yourself)
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   201
        ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   202
    ] ifFalse:[
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   203
        self javaClassesDo: [:cls |
133
bd659b67811c Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   204
            (cls binaryName startsWith: prefix) ifTrue:[
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   205
                result add: (ClassPO new klass: cls; showPrefix: true; yourself)
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   206
            ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   207
        ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   208
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   209
    ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   210
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   211
    "Created: / 04-10-2013 / 13:09: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
   212
    "Modified: / 20-10-2013 / 02:42:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   213
!
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   214
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   215
addMethodsForType: type
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   216
    ^ self addMethodsForType: type stripOff: nil
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   217
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   218
    "Created: / 26-11-2011 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   219
    "Modified: / 09-05-2014 / 12:51:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   220
!
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   221
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   222
addMethodsForType: type prefix: prefix stripOff: stripprefix
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   223
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   224
    type isUnknownType ifFalse:[
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   225
        self addMethodsForType:type stripOff: stripprefix.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   226
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   227
        "/ If the type is union of more than 6 types, then
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   228
        "/ assume that the inferencer is likely wrong.
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   229
        "/ then, if the prefix is at least 3 chars,
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   230
        "/ also add methods with that prefix.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   231
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   232
        ((type classes size > 6) and:[ prefix size > 2 ]) ifTrue:[
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   233
            self addMethodsStartingWith:prefix stripOff: stripprefix
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   234
        ].
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   235
    ] ifTrue:[
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   236
        self addMethodsStartingWith:prefix stripOff: stripprefix
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   237
    ].
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   238
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   239
    "Created: / 08-04-2014 / 21:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   240
    "Modified: / 09-04-2014 / 09:31:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   241
!
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   242
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   243
addMethodsForType: type stripOff: stripprefix
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   244
    | classes seen selector2classesMap |
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   245
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   246
    selector2classesMap := Dictionary new.
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   247
    classes := type classes.
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   248
    "/ Hack for Boolean: ifTrue:iFalse: etc are not defined
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   249
    "/ in Boolean ?!!?
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   250
    (classes size == 1 and:[classes anElement == Boolean ]) ifTrue:[
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   251
        classes := Array with: True with: False.
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   252
    ].
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   253
    classes size == 1 ifTrue:[
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   254
        classes anElement == JavaPackage class ifTrue:[
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   255
            "/ Special hack for JAVA: for pattern `JAVA java lang reflect`
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   256
            "/ complete all Java classes in that package
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   257
            | node |
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   258
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   259
            node := result context node.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   260
            node isUnaryMessage ifTrue:[
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   261
                | package |
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   262
                "/ Compute package prefix...
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   263
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   264
                package := node selector.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   265
                node := node receiver.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   266
                [ node isUnaryMessage ] whileTrue:[
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   267
                    package := node selector , '/' , package.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   268
                    node := node receiver.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   269
                ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   270
                self addJavaClassesInPackage: package.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   271
                ^ self.
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   272
            ]
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   273
        ]
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   274
    ].
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   275
131
ea84eea5a3c4 Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 128
diff changeset
   276
    seen := Set new.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   277
    classes do: [:each |
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   278
        | class selector2classMap |
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   280
        class := each.
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   281
        selector2classMap := Dictionary new.
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   282
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   283
        "/ Now, special care for Java classes, sigh...
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   284
        (class isMetaclass and:[class theNonMetaclass isJavaClass]) ifTrue:[
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   285
            seen add: class.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   286
            class theNonMetaclass selectorsAndMethodsDo: [:selector :met |
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   287
                met isStatic ifTrue:[
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   288
                    result add: (PO forClass: met mclass selector: selector)
123
1b949542c4b2 Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   289
                ].
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   290
            ].
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   291
        ] ifFalse:[
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   292
            [ class notNil and:[(seen includes: class) not]] whileTrue: [
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   293
                class selectorsAndMethodsDo: [:selector :met |
136
a1c1b160f2ca Fix in method completion: do not offer synthetic methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   294
                    met isSynthetic ifFalse:[
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   295
                        (stripprefix isNil or:[ selector size > stripprefix size and:[selector startsWith: stripprefix]]) ifTrue:[
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   296
                            selector2classMap at: selector put: class.
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   297
                        ].
136
a1c1b160f2ca Fix in method completion: do not offer synthetic methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   298
                    ]
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   299
                ].
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   300
                class := class superclass.
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   301
            ]
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   302
        ].
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   303
        selector2classMap keysAndValuesDo:[:selector :class |
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   304
            | classes |
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   305
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   306
            classes := selector2classesMap at: selector ifAbsentPut: [ Set new ].
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   307
            classes add: class.
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   308
        ]
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   309
    ].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   311
    selector2classesMap keysAndValuesDo: [:selector :classes|
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   312
        result add:(MethodPO forClasses: classes selector: selector prefix: stripprefix)
201
9a0df215823a Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 195
diff changeset
   313
    ]
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   314
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   315
    "Created: / 08-04-2014 / 21:23:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 201
diff changeset
   316
    "Modified: / 20-05-2014 / 10:47:37 / 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
   317
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   318
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
addPools
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    | class |
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
    class := collector klass theNonMetaclass.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    class theNonMetaclass sharedPools do:[:pool|
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
        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
   325
            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
   326
        ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    ].
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
    "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
   330
    "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
   331
!
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
addVariablesFor: node
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
93
f50bd9fded52 Fix in Recognizer - set correct class for instance-variable POs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   335
    | n klass |
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
    "Add Instance variables"
93
f50bd9fded52 Fix in Recognizer - set correct class for instance-variable POs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   338
    klass := collector klass.
f50bd9fded52 Fix in Recognizer - set correct class for instance-variable POs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   339
    [ 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
   340
        | 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
   341
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   342
        usedInstVars := collector 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
   343
        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
   344
            | 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
   345
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
   346
            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
   347
            "/ 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
   348
            (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
   349
                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
   350
            ].
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
   351
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
   352
            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
   353
        ].
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   354
        "/ 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
   355
        "/ instance variables of Class / ClassDescription / Behaviour
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   356
        "/ as STC won't compile such code.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   357
        klass := (klass isMetaclass and:[klass superclass == Class])
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   358
                    ifTrue:[nil]
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   359
                    ifFalse:[klass superclass].
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
    "Add pseudo variables"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
    #(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
   363
        result add: (VariablePO new name: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    "Add arguments"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
    collector 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
   367
        result add: (VariablePO argument: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
    "Add temporaries"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
    collector 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
   371
        result add: (VariablePO variable: nm).
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    ].
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   373
    "Add literals"
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   374
    #(#true #false #nil ) do:[:nm|
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 201
diff changeset
   375
        result add: (SnippetPO new value: nm).
159
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   376
    ].
289c7ef539af Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 158
diff changeset
   377
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
    n := node.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
    [ n notNil ] whileTrue:[
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
        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
   382
            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
   383
            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
   384
        ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
        n := n parent.
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
    ]
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
    "Created: / 31-07-2013 / 00:32:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
229
c82a22d2153d PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 201
diff changeset
   389
    "Modified: / 20-05-2014 / 10:09: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
   390
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   392
!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
   393
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
   394
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
   395
    "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
   396
     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
   397
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
   398
    | 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
   399
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
   400
    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
   401
    class := codeView isCodeView2
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   402
                ifTrue: [ codeView klass ]
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
   403
                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
   404
    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
   405
        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
   406
    ].
234
97857872ee47 Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   407
    ^ self complete: codeView codeAspect source: codeView contents string class: class line: codeView cursorLine column: codeView cursorCol
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
   408
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
   409
    "Created: / 02-10-2013 / 13:32:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
234
97857872ee47 Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 233
diff changeset
   410
    "Modified: / 22-05-2014 / 17:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
   411
!
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
   412
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   413
complete: mode source: source class: class line: lineNrArg column: colNrArg
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   414
    | inferencer lineNr colNr |
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   415
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   416
    mode == #method ifTrue:[
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   417
        lineNr := lineNrArg.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   418
        colNr := colNrArg.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   419
        inferencer := SmalltalkInferencer forClass: class methodSource: source asString.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   420
    ] ifFalse:[
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   421
        | line |
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   422
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   423
        lineNr := 1.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   424
        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
   425
        line := codeView list at: lineNrArg ifAbsent:[ nil ].
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   426
        line isEmptyOrNil ifTrue:[ ^ nil ].
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   427
        inferencer := SmalltalkInferencer forExpression: line.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   428
    ].
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   429
    inferencer parserClass: SmalltalkParser.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   430
    inferencer process.
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   431
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   432
    ^ self
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   433
        completeAtLine:lineNr
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   434
        column:colNr
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   435
        collector:inferencer
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   436
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   437
    "Created: / 02-10-2013 / 13:23:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
127
98c615301608 Fixes for Java completion (for both Java/Groovy and Smalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 124
diff changeset
   438
    "Modified: / 07-10-2013 / 13:43:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
124
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   439
!
73fa59be4774 Oops, added lost method.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   440
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   441
completeAfter:node
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   442
    "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
   443
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   444
    | type |
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   445
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   446
    type := node inferedType.
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   447
    type isUnknownType ifFalse:[
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   448
        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
   449
    ].
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   450
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   451
    "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
   452
    "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
   453
    "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
   454
    "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
   455
!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   457
completeAtLine:line column:col collector:coll
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
    "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
   459
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
   460
    | 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
   461
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
    collector := coll.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   463
    (collector tree isNil or:[collector tree == #Error]) ifTrue:[
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   464
        ^ nil
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
    ].
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   466
    nodeToPosition := SmalltalkParseNodeFinder new
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 159
diff changeset
   467
                        findNodeIn: collector source tree: collector tree comments: collector parser commentPositions
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 159
diff changeset
   468
                        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
   469
    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
   470
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   471
    context isAfterNode ifTrue:[
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   472
        self completeAfter:context node.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
    ] ifFalse:[
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   474
    context isInNode ifTrue:[
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   475
        self completeIn:context node.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
    ] ifFalse:[
132
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   477
    context isBeforeNode ifTrue:[
7c23c51d2cfd Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   478
        self completeBefore:context node.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
    ]]].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   481
    result isEmpty ifTrue:[
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
        nil "/Only to set breakpoint here
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
    ].
120
4fefce92f5bb Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   484
    ^result.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
    "Created: / 04-03-2011 / 13:01:14 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
    "Modified: / 08-04-2011 / 10:52:59 / Jakub <zelenja7@fel.cvut.cz>"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
    "Created: / 26-11-2011 / 17:05:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
161
5ff416530ac4 Fx in Smalltalk code completion - do not complete inside comments.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 159
diff changeset
   489
    "Modified: / 29-01-2014 / 10:36:20 / 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
   490
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
completeBefore:node
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
    self breakPoint: #jv. "Not yet implemented"
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
    "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
   497
    "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
   498
    "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
   499
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   501
completeIn:node
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    "return collection which can be afterNode"
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   503
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
    node isVariableNode ifTrue:[
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   505
        self completeInVariableNode:node.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   506
        ^ self.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
    ].
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
    node isMessage ifTrue:[
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   509
        self completeInMessageNode:node.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   510
        ^ self
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
    ].
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   512
    self breakPoint:#jv.
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    "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
   515
    "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
   516
    "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
   517
    "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
   518
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   519
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   520
completeInMessageNode:node
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   521
    | parent |
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   522
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   523
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   524
    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
   525
    parent := node parent.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   526
    parent isMessage ifTrue:[
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   527
        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
   528
    ].
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   529
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   530
    "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
   531
!
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   532
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   533
completeInVariableNode:node
192
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   534
    node name first isUppercase ifTrue:[
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   535
        self addGlobalsStartingWith:node name.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   536
        self addClassVariables.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   537
        self addPools.
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   538
    ] ifFalse:[
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   539
        self addVariablesFor:node
f27ce6dac101 Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 176
diff changeset
   540
    ]
258
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   541
1b0df5fb47b9 Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 252
diff changeset
   542
    "Modified: / 24-07-2014 / 19:11:20 / 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
   543
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
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
   545
!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
   546
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
   547
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
   548
    | 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
   549
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
   550
    i := 0.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   551
    [
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
   552
        i := aString indexOf: $: startingAt: i + 1.
233
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   553
        i ~~ 0
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   554
    ] whileTrue:[
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   555
        aString size > i ifTrue:[
fb33bd6466a4 Merged ef4a53a77c35 and a95a378b4248
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 212 229
diff changeset
   556
            (aString at: i + 1) ~~ $: ifTrue:[
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
   557
                ^ 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
   558
            ].
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
   559
        ].
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
   560
        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
   561
    ].
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
   562
    ^ 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
   563
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
   564
    "
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
   565
    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
   566
    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
   567
    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
   568
    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
   569
    "
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
   570
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
   571
    "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
   572
! !
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
   573
117
441529422c2f Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 114
diff changeset
   574
!SmalltalkCompletionEngine class methodsFor:'documentation'!
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
428
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   576
version
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   577
    ^ '$Header: /cvs/stx/stx/goodies/smallsense/SmallSense__SmalltalkCompletionEngine.st,v 1.2 2015-03-23 16:56:17 cg Exp $'
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   578
!
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   579
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   580
version_CVS
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   581
    ^ '$Path: stx/goodies/smallsense/SmallSense__SmalltalkCompletionEngine.st, Version: 1.0, User: cg, Time: 2015-03-23T17:57:02.930+01$'
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   582
!
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   583
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
version_HG
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
    ^ '$Changeset: <not expanded> $'
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
!
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
version_SVN
428
0ad006b92fec class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents: 320
diff changeset
   590
    ^ '$Id: SmallSense__SmalltalkCompletionEngine.st,v 1.2 2015-03-23 16:56:17 cg Exp $'
64
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
! !
2257d7223898 All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
158
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   593
d275ae2a0003 Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 157
diff changeset
   594
SmalltalkCompletionEngine initialize!