author | Claus Gittinger <cg@exept.de> |
Fri, 25 Mar 2016 16:41:21 +0100 | |
branch | cvs_MAIN |
changeset 931 | 9198e15fb1e8 |
parent 906 | eec7c2c12535 |
child 1033 | eeb3f8ceb201 |
permissions | -rw-r--r-- |
252
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
1 |
" |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
2 |
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
|
3 |
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
|
4 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
5 |
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
|
6 |
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
|
7 |
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
|
8 |
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
|
9 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
10 |
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
|
11 |
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
|
12 |
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
|
13 |
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
|
14 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
15 |
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
|
16 |
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
|
17 |
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
|
18 |
" |
249
8bc64027b189
Package renamed to stx:goodies/smallsense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
236
diff
changeset
|
19 |
"{ Package: 'stx:goodies/smallsense' }" |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
"{ NameSpace: SmallSense }" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
23 |
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
|
24 |
instanceVariableNames:'collector' |
158
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
25 |
classVariableNames:'Debug' |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
poolDictionaries:'' |
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
27 |
category:'SmallSense-Smalltalk' |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
|
252
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
30 |
!SmalltalkCompletionEngine class methodsFor:'documentation'! |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
31 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
32 |
copyright |
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 |
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
|
35 |
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
|
36 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
37 |
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
|
38 |
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
|
39 |
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
|
40 |
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
|
41 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
42 |
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
|
43 |
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
|
44 |
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
|
45 |
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
|
46 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
47 |
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
|
48 |
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
|
49 |
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
|
50 |
" |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
51 |
! ! |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
158
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
53 |
!SmalltalkCompletionEngine class methodsFor:'initialization'! |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
54 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
55 |
initialize |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
56 |
"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
|
57 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
58 |
"/ 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
|
59 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
60 |
Debug := false. |
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 |
"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
|
63 |
! ! |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
64 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
65 |
!SmalltalkCompletionEngine class methodsFor:'accessing'! |
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 |
debug |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
68 |
^ Debug |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
69 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
70 |
"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
|
71 |
! |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
72 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
73 |
debug: aBoolean |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
74 |
Debug := aBoolean . |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
75 |
" |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
76 |
self debug: true. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
77 |
self debug: false. |
158
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
78 |
" |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
79 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
80 |
"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
|
81 |
"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
|
82 |
! ! |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
83 |
|
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
84 |
!SmalltalkCompletionEngine class methodsFor:'utilities'! |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
|
233 | 86 |
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
|
87 |
| inferencer tree | |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
mode == #method ifTrue:[ |
69
1a143dfff51b
Copied ParseTreeIndex from libtool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
90 |
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
|
91 |
inferencer parserClass: SmalltalkParser. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
inferencer process. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
] ifFalse:[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
self breakPoint: #jv. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
^nil. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
inferencer := Parser for: (source asString readStream). |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
"JV@2011-06-13: HACK, use polymorphism" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
tree := inferencer |
233 | 99 |
parseExpressionWithSelf:nil |
100 |
notifying:nil |
|
101 |
ignoreErrors:false |
|
102 |
ignoreWarnings:false |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
inNameSpace:nil. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
inferencer tree: tree. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
^ self new |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
completeAtLine:line |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
column:col |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
collector:inferencer |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
"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
|
112 |
"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
|
113 |
"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
|
114 |
"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
|
115 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
|
123
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
117 |
!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
|
118 |
|
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
119 |
javaClassesDo: aBlock |
428
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
120 |
| class loader loaders javaVM | |
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
121 |
|
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
122 |
(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
|
123 |
|
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
124 |
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
|
125 |
loaders := Set new. |
428
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
126 |
loader := (class notNil and:[class isJavaClass]) |
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
127 |
ifTrue:[class classLoader] |
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
128 |
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
|
129 |
[ 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
|
130 |
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
|
131 |
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
|
132 |
]. |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
133 |
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
|
134 |
|
428
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
135 |
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
|
136 |
(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
|
137 |
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
|
138 |
]. |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
139 |
]. |
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 |
"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
|
142 |
"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
|
143 |
! ! |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
144 |
|
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
145 |
!SmalltalkCompletionEngine methodsFor:'completion-individual'! |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
addClassVariables |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
148 |
| class | |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
150 |
class := collector klass theNonMetaclass. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
151 |
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
|
152 |
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
|
153 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
154 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
155 |
"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
|
156 |
"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
|
157 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
158 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
addGlobalsStartingWith: prefix |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
|
258
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
161 |
| class namespace environment | |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
class := collector klass. |
258
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
163 |
namespace := class nameSpace. |
205
43bee6463c53
Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
195
diff
changeset
|
164 |
environment := context environment. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
"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
|
166 |
[ namespace isNameSpace ] whileFalse:[ namespace := namespace nameSpace ]. |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
167 |
|
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
168 |
environment keysDo:[:name | |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
169 |
| value | |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
170 |
|
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
171 |
(self isGlobalKeyForClassVariable: name) ifFalse:[ |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
172 |
value := environment at: name. |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
173 |
((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
|
174 |
(value notNil and:[value isBehavior]) ifTrue:[ |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
175 |
"/ Check for aliases... |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
176 |
| clsnm | |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
177 |
|
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
178 |
clsnm := value name. |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
179 |
clsnm = name ifTrue:[ |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
180 |
result add: (PO forClass: value) |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
181 |
] ifFalse:[ |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
182 |
result add: (PO forGlobalNamed: name) |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
183 |
]. |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
184 |
] ifFalse:[ |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
185 |
result add: (PO forGlobalNamed: name) |
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
186 |
]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
] |
146
dfb2ae961d9c
Fix for completing globals (like Transcript or OperatingSystem)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
188 |
]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
"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
|
192 |
"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
|
193 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
|
123
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
195 |
addJavaClassesInPackage: prefix |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
196 |
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
|
197 |
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
|
198 |
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
|
199 |
]. |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
200 |
] ifFalse:[ |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
201 |
self javaClassesDo: [:cls | |
133
bd659b67811c
Improvements in Java completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
202 |
(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
|
203 |
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
|
204 |
]. |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
205 |
]. |
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 |
"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
|
210 |
"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
|
211 |
! |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
212 |
|
233 | 213 |
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
|
214 |
^ 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
|
215 |
|
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 |
"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
|
217 |
"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
|
218 |
! |
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 |
|
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 |
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
|
221 |
|
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
|
222 |
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
|
223 |
self addMethodsForType:type stripOff: stripprefix. |
233 | 224 |
|
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
|
225 |
"/ 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
|
226 |
"/ 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
|
227 |
"/ 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
|
228 |
"/ also add methods with that prefix. |
233 | 229 |
|
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
|
230 |
((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
|
231 |
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
|
232 |
]. |
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 |
] ifTrue:[ |
233 | 234 |
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
|
235 |
]. |
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
195
diff
changeset
|
236 |
|
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 |
"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
|
238 |
"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
|
239 |
! |
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 |
|
233 | 241 |
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
|
242 |
| 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
|
243 |
|
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 |
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
|
245 |
classes := type classes. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
246 |
"/ 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
|
247 |
"/ in Boolean ?!!? |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
248 |
(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
|
249 |
classes := Array with: True with: False. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
250 |
]. |
123
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
251 |
classes size == 1 ifTrue:[ |
233 | 252 |
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
|
253 |
"/ 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
|
254 |
"/ 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
|
255 |
| node | |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
256 |
|
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
257 |
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
|
258 |
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
|
259 |
| package | |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
260 |
"/ 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
|
261 |
|
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
262 |
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
|
263 |
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
|
264 |
[ 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
|
265 |
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
|
266 |
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
|
267 |
]. |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
268 |
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
|
269 |
^ self. |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
270 |
] |
1b949542c4b2
Improvements for completion of Java classes/methods in Smalltalk code.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
271 |
] |
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 |
|
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
|
274 |
seen := Set new. |
233 | 275 |
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
|
276 |
| class selector2classMap | |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
277 |
|
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
278 |
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
|
279 |
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
|
280 |
|
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 |
"/ 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
|
282 |
(class isMetaclass and:[class theNonMetaclass isJavaClass]) ifTrue:[ |
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
283 |
seen add: class. |
233 | 284 |
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
|
285 |
met isStatic ifTrue:[ |
233 | 286 |
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
|
287 |
]. |
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
|
288 |
]. |
233 | 289 |
] 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
|
290 |
[ class notNil and:[(seen includes: class) not]] whileTrue: [ |
233 | 291 |
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
|
292 |
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
|
293 |
(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
|
294 |
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
|
295 |
]. |
136
a1c1b160f2ca
Fix in method completion: do not offer synthetic methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
296 |
] |
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
297 |
]. |
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
|
298 |
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
|
299 |
] |
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 |
]. |
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 |
selector2classMap keysAndValuesDo:[:selector :class | |
233 | 302 |
| 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
|
303 |
|
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
195
diff
changeset
|
304 |
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
|
305 |
classes add: class. |
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
306 |
] |
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
307 |
]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
|
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
|
309 |
selector2classesMap keysAndValuesDo: [:selector :classes| |
233 | 310 |
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
|
311 |
] |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
312 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
313 |
"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
|
314 |
"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
|
315 |
! |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
316 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
317 |
addPools |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
318 |
| class | |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
319 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
320 |
class := collector klass theNonMetaclass. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
321 |
class theNonMetaclass sharedPools do:[:pool| |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
322 |
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
|
323 |
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
|
324 |
] |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
325 |
]. |
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 |
"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
|
328 |
"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
|
329 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
330 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
331 |
addVariablesFor: node |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
332 |
|
93
f50bd9fded52
Fix in Recognizer - set correct class for instance-variable POs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
78
diff
changeset
|
333 |
| n klass | |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
334 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
335 |
"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
|
336 |
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
|
337 |
[ 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
|
338 |
| 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
|
339 |
|
233 | 340 |
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
|
341 |
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
|
342 |
| 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
|
343 |
|
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 := 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
|
345 |
"/ 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
|
346 |
(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
|
347 |
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
|
348 |
]. |
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 |
|
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 |
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
|
351 |
]. |
158
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
352 |
"/ 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
|
353 |
"/ instance variables of Class / ClassDescription / Behaviour |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
354 |
"/ as STC won't compile such code. |
233 | 355 |
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
|
356 |
ifTrue:[nil] |
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
357 |
ifFalse:[klass superclass]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
358 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
359 |
"Add pseudo variables" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
360 |
#(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
|
361 |
result add: (VariablePO new name: nm). |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
362 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
363 |
"Add arguments" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
364 |
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
|
365 |
result add: (VariablePO argument: nm). |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
366 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
367 |
"Add temporaries" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
368 |
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
|
369 |
result add: (VariablePO variable: nm). |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
370 |
]. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
371 |
"Add literals" |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
372 |
#(#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
|
373 |
result add: (SnippetPO new value: nm). |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
374 |
]. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
158
diff
changeset
|
375 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
376 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
377 |
n := node. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
378 |
[ n notNil ] whileTrue:[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
379 |
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
|
380 |
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
|
381 |
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
|
382 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
383 |
n := n parent. |
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 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
386 |
"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
|
387 |
"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
|
388 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
389 |
|
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
390 |
!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
|
391 |
|
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
|
392 |
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
|
393 |
"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
|
394 |
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
|
395 |
|
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 |
| 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
|
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 |
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
|
399 |
class := codeView isCodeView2 |
233 | 400 |
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
|
401 |
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
|
402 |
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
|
403 |
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
|
404 |
]. |
234
97857872ee47
Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
233
diff
changeset
|
405 |
^ 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
|
406 |
|
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
|
407 |
"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
|
408 |
"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
|
409 |
! |
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
|
410 |
|
233 | 411 |
complete: mode source: source class: class line: lineNrArg column: colNrArg |
124 | 412 |
| inferencer lineNr colNr | |
413 |
||
414 |
mode == #method ifTrue:[ |
|
415 |
lineNr := lineNrArg. |
|
416 |
colNr := colNrArg. |
|
417 |
inferencer := SmalltalkInferencer forClass: class methodSource: source asString. |
|
418 |
] ifFalse:[ |
|
419 |
| line | |
|
420 |
||
421 |
lineNr := 1. |
|
422 |
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
|
423 |
line := codeView list at: lineNrArg ifAbsent:[ nil ]. |
124 | 424 |
line isEmptyOrNil ifTrue:[ ^ nil ]. |
425 |
inferencer := SmalltalkInferencer forExpression: line. |
|
426 |
]. |
|
427 |
inferencer parserClass: SmalltalkParser. |
|
428 |
inferencer process. |
|
429 |
||
430 |
^ self |
|
431 |
completeAtLine:lineNr |
|
432 |
column:colNr |
|
433 |
collector:inferencer |
|
434 |
||
435 |
"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
|
436 |
"Modified: / 07-10-2013 / 13:43:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
124 | 437 |
! |
438 |
||
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
439 |
completeAfter:node |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
440 |
"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
|
441 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
442 |
| type | |
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 := node inferedType. |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
445 |
type isUnknownType ifFalse:[ |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
446 |
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
|
447 |
]. |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
448 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
449 |
"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
|
450 |
"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
|
451 |
"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
|
452 |
"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
|
453 |
! |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
454 |
|
233 | 455 |
completeAtLine:line column:col collector:coll |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
456 |
"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
|
457 |
|
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
|
458 |
| 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
|
459 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
460 |
collector := coll. |
233 | 461 |
(collector tree isNil or:[collector tree == #Error]) ifTrue:[ |
462 |
^ nil |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
463 |
]. |
233 | 464 |
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
|
465 |
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
|
466 |
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
|
467 |
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
|
468 |
|
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
469 |
context isAfterNode ifTrue:[ |
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
470 |
self completeAfter:context node. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
471 |
] ifFalse:[ |
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
472 |
context isInNode ifTrue:[ |
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
473 |
self completeIn:context node. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
474 |
] ifFalse:[ |
132
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
475 |
context isBeforeNode ifTrue:[ |
7c23c51d2cfd
Completion insertion refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
476 |
self completeBefore:context node. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
477 |
]]]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
478 |
|
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
479 |
result isEmpty ifTrue:[ |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
480 |
nil "/Only to set breakpoint here |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
481 |
]. |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
117
diff
changeset
|
482 |
^result. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
483 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
484 |
"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
|
485 |
"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
|
486 |
"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
|
487 |
"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
|
488 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
489 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
490 |
completeBefore:node |
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 |
self breakPoint: #jv. "Not yet implemented" |
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 |
"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
|
495 |
"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
|
496 |
"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
|
497 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
498 |
|
233 | 499 |
completeIn:node |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
500 |
"return collection which can be afterNode" |
233 | 501 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
502 |
node isVariableNode ifTrue:[ |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
503 |
self completeInVariableNode:node. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
504 |
^ self. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
505 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
506 |
node isMessage ifTrue:[ |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
507 |
self completeInMessageNode:node. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
508 |
^ self |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
509 |
]. |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
510 |
self breakPoint:#jv. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
511 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
512 |
"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
|
513 |
"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
|
514 |
"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
|
515 |
"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
|
516 |
! |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
517 |
|
233 | 518 |
completeInMessageNode:node |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
519 |
| parent | |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
520 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
521 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
522 |
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
|
523 |
parent := node parent. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
524 |
parent isMessage ifTrue:[ |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
525 |
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
|
526 |
]. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
527 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
528 |
"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
|
529 |
! |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
530 |
|
233 | 531 |
completeInVariableNode:node |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
532 |
node name first isUppercase ifTrue:[ |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
533 |
self addGlobalsStartingWith:node name. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
534 |
self addClassVariables. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
535 |
self addPools. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
536 |
] ifFalse:[ |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
537 |
self addVariablesFor:node |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
538 |
] |
258
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
539 |
|
1b0df5fb47b9
Refactored and fixes class name completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
540 |
"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
|
541 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
542 |
|
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
|
543 |
!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
|
544 |
|
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 |
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
|
546 |
| 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
|
547 |
|
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 := 0. |
233 | 549 |
[ |
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
|
550 |
i := aString indexOf: $: startingAt: i + 1. |
233 | 551 |
i ~~ 0 |
552 |
] whileTrue:[ |
|
553 |
aString size > i ifTrue:[ |
|
554 |
(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
|
555 |
^ 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
|
556 |
]. |
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 |
]. |
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 |
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
|
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 |
^ 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
|
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 |
" |
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 |
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
|
564 |
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
|
565 |
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
|
566 |
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
|
567 |
" |
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 |
|
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 |
"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
|
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 |
|
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
114
diff
changeset
|
572 |
!SmalltalkCompletionEngine class methodsFor:'documentation'! |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
573 |
|
428
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
574 |
version |
838
85db2fa38866
fixed version methods for CVS (were lost after move from HG)
Claus Gittinger <cg@exept.de>
parents:
428
diff
changeset
|
575 |
^ '$Header$' |
428
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
576 |
! |
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
577 |
|
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
578 |
version_CVS |
906 | 579 |
^ '$Header$' |
428
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
580 |
! |
0ad006b92fec
class: SmallSense::SmalltalkCompletionEngine
Claus Gittinger <cg@exept.de>
parents:
320
diff
changeset
|
581 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
582 |
version_HG |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
583 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
584 |
^ '$Changeset: <not expanded> $' |
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 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
587 |
version_SVN |
838
85db2fa38866
fixed version methods for CVS (were lost after move from HG)
Claus Gittinger <cg@exept.de>
parents:
428
diff
changeset
|
588 |
^ '$Id$' |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
589 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
590 |
|
158
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
591 |
|
d275ae2a0003
Added simple debugg option to SmalltaqlkCodeCompletion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
157
diff
changeset
|
592 |
SmalltalkCompletionEngine initialize! |