author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 12 Feb 2015 00:30:40 +0000 | |
changeset 395 | 25ed27eaeaae |
parent 374 | e65bd2bf892a |
child 449 | 5c253d838e86 |
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 |
374
e65bd2bf892a
Updated copyright notice.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
281
diff
changeset
|
3 |
Copyright (C) 2013-2015 Jan Vrany |
252
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:
210
diff
changeset
|
19 |
"{ Package: 'stx:goodies/smallsense' }" |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
"{ NameSpace: SmallSense }" |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
AbstractJavaCompletionEngine subclass:#JavaCompletionEngine |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
24 |
instanceVariableNames:'completionNode completionScope' |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
classVariableNames:'' |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
poolDictionaries:'' |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
category:'SmallSense-Java' |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
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 |
!JavaCompletionEngine 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 |
374
e65bd2bf892a
Updated copyright notice.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
281
diff
changeset
|
35 |
Copyright (C) 2013-2015 Jan Vrany |
252
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 |
! ! |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
52 |
|
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
!JavaCompletionEngine methodsFor:'completion-individual'! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
55 |
addFieldsForTypeBinding:binding |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
56 |
| current | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
57 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
58 |
current := binding. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
59 |
[ current notNil ] whileTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
60 |
current fields do:[:fbinding | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
61 |
result add: (PO forFieldBinding: fbinding ) |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
62 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
63 |
current := current superclass. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
64 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
65 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
66 |
"Created: / 13-08-2014 / 21:39:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
67 |
"Modified: / 14-08-2014 / 09:06:41 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
68 |
! |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
69 |
|
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
addMethodsForReceiver: maybeReceiverToken startingWith: prefix |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
^ self addMethodsStartingWith: prefix |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
"Created: / 03-10-2013 / 17:46:44 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
76 |
addMethodsForTypeBinding: binding |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
77 |
| current seen | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
78 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
79 |
current := binding. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
80 |
seen := Set new. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
81 |
[ current notNil ] whileTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
82 |
current methods do:[:mbinding | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
83 |
mbinding isConstructor ifFalse:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
84 |
| selector | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
85 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
86 |
selector := mbinding selector , mbinding signature. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
87 |
(seen includes: selector) ifFalse:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
88 |
result add: (PO forMethodBinding: mbinding). |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
89 |
seen add: selector. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
90 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
91 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
92 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
93 |
current := current superclass. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
94 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
95 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
96 |
"Created: / 13-08-2014 / 21:39:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
97 |
"Modified: / 13-08-2014 / 22:54:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
98 |
! |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
99 |
|
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
100 |
addVariablesInScope: scope |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
101 |
((scope kind == JAVA org eclipse jdt internal compiler lookup Scope METHOD_SCOPE) or:[ |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
102 |
scope kind == JAVA org eclipse jdt internal compiler lookup Scope BLOCK_SCOPE]) ifTrue:[ |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
103 |
1 to: scope localIndex do:[:i | |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
104 |
result add: (PO forLocalVariableBinding: (scope locals at:i) ) |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
105 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
106 |
self addVariablesInScope: (scope instVarNamed: #parent). "/ !!?!! Why 'scope parent' does not work? |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
107 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
108 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
109 |
scope kind == JAVA org eclipse jdt internal compiler lookup Scope CLASS_SCOPE ifTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
110 |
| type | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
111 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
112 |
type := scope referenceType. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
113 |
type notNil ifTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
114 |
self addFieldsForTypeBinding: type binding. |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
115 |
]. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
116 |
]. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
117 |
|
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
118 |
"Created: / 12-08-2014 / 10:41:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
119 |
"Modified: / 14-08-2014 / 09:08:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
120 |
! ! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
121 |
|
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
122 |
!JavaCompletionEngine methodsFor:'completion-nodes'! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
123 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
124 |
completeOnFieldType: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
125 |
node type acceptCompletionEngine: self |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
127 |
"Created: / 13-08-2014 / 21:04:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
128 |
! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
129 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
130 |
completeOnQualifiedNameReference: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
131 |
| binding | |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
132 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
133 |
binding := node binding. |
281
200db18cbc2f
Fix for completion on field names - do not complete 'problem' fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
280
diff
changeset
|
134 |
(binding notNil and:[binding problemId ~~ JAVA org eclipse jdt internal compiler lookup ProblemReasons NoError]) ifTrue:[ |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
135 |
binding := binding type. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
136 |
binding notNil ifTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
137 |
self addMethodsForTypeBinding: binding. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
138 |
self addFieldsForTypeBinding: binding. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
139 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
140 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
141 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
142 |
"Created: / 13-08-2014 / 21:32:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
281
200db18cbc2f
Fix for completion on field names - do not complete 'problem' fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
280
diff
changeset
|
143 |
"Modified: / 14-08-2014 / 11:13:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
144 |
! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
145 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
146 |
completeOnSingleNameReference: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
147 |
self addVariablesInScope: completionScope. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
148 |
self addClassesStartingWith: node token. |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
149 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
150 |
"Created: / 13-08-2014 / 21:05:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
151 |
! |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
152 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
153 |
completeOnSingleTypeReference: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
154 |
self addClassesStartingWith: node token |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
155 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
156 |
"Created: / 13-08-2014 / 21:05:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
157 |
! ! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
158 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
!JavaCompletionEngine methodsFor:'completion-private'! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
161 |
complete |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
163 |
| position source rslt problemReporter parser tree searcher resolver | |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
|
395
25ed27eaeaae
Completion: added support for SmallSense completion in an inspector views.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
374
diff
changeset
|
165 |
position := textView characterPositionOfCursor. |
267
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
166 |
|
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
167 |
source := JAVA stx libjava tools Source new. |
395
25ed27eaeaae
Completion: added support for SmallSense completion in an inspector views.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
374
diff
changeset
|
168 |
source setContents: textView list asStringWithoutEmphasis. |
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
169 |
"/ parser := JAVA stx libjava tools parser Parser new. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
170 |
rslt := JAVA org eclipse jdt internal compiler CompilationResult |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
171 |
new: source _: 1 _: 1 _: 1000. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
172 |
problemReporter := JAVA org eclipse jdt internal compiler problem ProblemReporter |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
173 |
new: JAVA org eclipse jdt internal compiler DefaultErrorHandlingPolicies proceedWithAllProblems |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
174 |
_: JAVA stx libjava tools parser Parser defaultCompilerOptions |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
175 |
_: JAVA stx libjava tools parser Parser defaultProblemFactory. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
176 |
|
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
177 |
parser := JAVA org eclipse jdt internal codeassist complete CompletionParser |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
178 |
new: problemReporter _: true. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
179 |
|
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
180 |
"/ tree := parser parse: source diet: true resolve: true. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
181 |
tree := parser dietParse: source _: rslt _: position - 1"Java is 0-based" - 1"cursor is actualy one fter the end of token". |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
182 |
searcher := JAVA org eclipse jdt core dom NodeSearcher new: position - 1"Java is 0-based" - 1"cursor is actualy one fter the end of token". |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
183 |
tree traverse: searcher _: tree scope. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
184 |
(searcher found notNil and:[searcher found isKindOf: JAVA org eclipse jdt internal compiler ast AbstractMethodDeclaration]) ifTrue:[ |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
185 |
parser parseBlockStatements: searcher found _: tree. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
186 |
]. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
187 |
|
267
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
188 |
|
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
189 |
" |
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
190 |
(SmallSense::ParseTreeInspector new node:tree source: codeView list asString) open |
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
191 |
" |
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
192 |
|
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
193 |
resolver := (Java classForName: 'stx.libjava.tools.environment.Resolver') new: problemReporter. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
194 |
[ |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
195 |
resolver resolve: tree. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
196 |
] on: JAVA org eclipse jdt internal codeassist complete CompletionNodeFound do:[:ex | |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
197 |
completionNode := ex astNode. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
198 |
completionScope := ex scope. |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
]. |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
201 |
context node: completionNode position: position. |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
203 |
(completionNode isNil or:[completionScope isNil]) ifTrue:[ |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
result := JavaCompletionEngineSimple new complete: context. |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
] ifFalse:[ |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
206 |
completionNode acceptCompletionEngine: self. |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
]. |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
^ result |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
"Created: / 02-10-2013 / 13:55:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
395
25ed27eaeaae
Completion: added support for SmallSense completion in an inspector views.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
374
diff
changeset
|
212 |
"Modified: / 12-02-2015 / 00:13:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
! ! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |