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