author | Stefan Vogel <sv@exept.de> |
Mon, 11 Jan 2016 12:06:06 +0100 | |
branch | cvs_MAIN |
changeset 910 | 2cf84854bedc |
parent 426 | 509fd0895236 |
permissions | -rw-r--r-- |
252
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
1 |
" |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
2 |
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
3 |
Copyright (C) 2013-2014 Jan Vrany |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
4 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
5 |
This library is free software; you can redistribute it and/or |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
6 |
modify it under the terms of the GNU Lesser General Public |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
7 |
License as published by the Free Software Foundation; either |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
8 |
version 2.1 of the License. |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
9 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
10 |
This library is distributed in the hope that it will be useful, |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
13 |
Lesser General Public License for more details. |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
14 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
15 |
You should have received a copy of the GNU Lesser General Public |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
16 |
License along with this library; if not, write to the Free Software |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
17 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
18 |
" |
249
8bc64027b189
Package renamed to stx:goodies/smallsense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
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 |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
35 |
Copyright (C) 2013-2014 Jan Vrany |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
36 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
37 |
This library is free software; you can redistribute it and/or |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
38 |
modify it under the terms of the GNU Lesser General Public |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
39 |
License as published by the Free Software Foundation; either |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
40 |
version 2.1 of the License. |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
41 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
42 |
This library is distributed in the hope that it will be useful, |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
43 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
44 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
45 |
Lesser General Public License for more details. |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
46 |
|
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
47 |
You should have received a copy of the GNU Lesser General Public |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
48 |
License along with this library; if not, write to the Free Software |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
49 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
50 |
" |
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
51 |
! ! |
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 |
328 | 101 |
|scopeKind org_eclipse_jdt_internal_compiler_lookup_Scope| |
102 |
||
103 |
scopeKind := scope kind. |
|
104 |
org_eclipse_jdt_internal_compiler_lookup_Scope := JAVA org eclipse jdt internal compiler lookup Scope. |
|
105 |
||
106 |
((scopeKind == org_eclipse_jdt_internal_compiler_lookup_Scope METHOD_SCOPE) |
|
107 |
or:[ scopeKind == org_eclipse_jdt_internal_compiler_lookup_Scope BLOCK_SCOPE]) ifTrue:[ |
|
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
|
108 |
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
|
109 |
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
|
110 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
111 |
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
|
112 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
113 |
|
328 | 114 |
scopeKind == org_eclipse_jdt_internal_compiler_lookup_Scope CLASS_SCOPE ifTrue:[ |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
115 |
| type | |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
116 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
117 |
type := scope referenceType. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
118 |
type notNil ifTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
119 |
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
|
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 |
|
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 |
"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
|
124 |
"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
|
125 |
! ! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
126 |
|
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
127 |
!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
|
128 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
129 |
completeOnFieldType: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
130 |
node type acceptCompletionEngine: self |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
132 |
"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
|
133 |
! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
134 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
135 |
completeOnQualifiedNameReference: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
136 |
| 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
|
137 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
138 |
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
|
139 |
(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
|
140 |
binding := binding type. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
141 |
binding notNil ifTrue:[ |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
142 |
self addMethodsForTypeBinding: binding. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
143 |
self addFieldsForTypeBinding: binding. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
144 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
145 |
]. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
146 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
147 |
"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
|
148 |
"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
|
149 |
! |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
150 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
151 |
completeOnSingleNameReference: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
152 |
self addVariablesInScope: completionScope. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
153 |
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
|
154 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
155 |
"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
|
156 |
! |
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
|
157 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
158 |
completeOnSingleTypeReference: node |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
159 |
self addClassesStartingWith: node token |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
160 |
|
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
161 |
"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
|
162 |
! ! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
!JavaCompletionEngine methodsFor:'completion-private'! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
166 |
complete |
328 | 167 |
"use the eclipse framework (running in the stx java vm) |
168 |
to do java code completion" |
|
169 |
||
426 | 170 |
|position source stx_libjava_tools org_eclipse_jdt org_eclipse_jdt_internal_compiler |
171 |
org_eclipse_jdt_internal_codeassist rslt problemReporter parser tree searcher resolver |
|
172 |
javaClass javaNamespace | |
|
173 |
||
174 |
"/ cg: avoid prereq of libjava for smallsense |
|
175 |
javaNamespace := Smalltalk at:#JAVA. |
|
176 |
javaClass := Smalltalk at:#Java. |
|
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
position := context codeView characterPositionOfCursor. |
267
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
179 |
|
426 | 180 |
stx_libjava_tools := javaNamespace stx libjava tools. |
181 |
org_eclipse_jdt := javaNamespace org eclipse jdt. |
|
328 | 182 |
org_eclipse_jdt_internal_compiler := org_eclipse_jdt internal compiler. |
183 |
org_eclipse_jdt_internal_codeassist := org_eclipse_jdt internal codeassist. |
|
184 |
||
185 |
source := stx_libjava_tools Source new. |
|
186 |
||
267
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
187 |
source setContents: codeView 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
|
188 |
"/ parser := JAVA stx libjava tools parser Parser new. |
328 | 189 |
rslt := org_eclipse_jdt_internal_compiler CompilationResult |
190 |
new: source _: 1 _: 1 _: 1000. |
|
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
|
191 |
|
328 | 192 |
problemReporter := org_eclipse_jdt_internal_compiler problem ProblemReporter |
193 |
new: org_eclipse_jdt_internal_compiler DefaultErrorHandlingPolicies proceedWithAllProblems |
|
194 |
_: stx_libjava_tools parser Parser defaultCompilerOptions |
|
195 |
_: stx_libjava_tools parser Parser defaultProblemFactory. |
|
196 |
||
197 |
parser := org_eclipse_jdt_internal_codeassist complete CompletionParser |
|
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
|
198 |
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
|
199 |
|
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
200 |
"/ 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
|
201 |
tree := parser dietParse: source _: rslt _: position - 1"Java is 0-based" - 1"cursor is actualy one fter the end of token". |
328 | 202 |
searcher := org_eclipse_jdt core dom NodeSearcher new: position - 1"Java is 0-based" - 1"cursor is actualy one fter the end of 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
|
203 |
tree traverse: searcher _: tree scope. |
328 | 204 |
(searcher found notNil and:[searcher found isKindOf: org_eclipse_jdt_internal_compiler ast AbstractMethodDeclaration]) ifTrue:[ |
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
|
205 |
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
|
206 |
]. |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
207 |
|
267
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
208 |
" |
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
209 |
(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
|
210 |
" |
b6fbf84b14ae
Temporary commit: More work on JavaCompletionEngine
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
211 |
|
426 | 212 |
resolver := (javaClass classForName: 'stx.libjava.tools.environment.Resolver') new: problemReporter. |
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
|
213 |
[ |
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
267
diff
changeset
|
214 |
resolver resolve: tree. |
328 | 215 |
] on: 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
|
216 |
completionNode := ex astNode. |
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
217 |
completionScope := ex scope. |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
]. |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
220 |
context node: completionNode position: position. |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
|
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
222 |
(completionNode isNil or:[completionScope isNil]) ifTrue:[ |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
result := JavaCompletionEngineSimple new complete: context. |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
] ifFalse:[ |
280
100db0f8279b
Support for completing Java methods (only first level).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
225 |
completionNode acceptCompletionEngine: self. |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
]. |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
^ result |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
|
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
"Created: / 02-10-2013 / 13:55:43 / 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
|
231 |
"Modified: / 13-08-2014 / 21:08:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
206
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
! ! |
f74a5ffd8eae
Separated JavaCompletionEngine and JavaCompletionEngineSimple.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
|
328 | 234 |
!JavaCompletionEngine class methodsFor:'documentation'! |
235 |
||
236 |
version |
|
910 | 237 |
^ '$Header$' |
328 | 238 |
! |
239 |
||
240 |
version_CVS |
|
910 | 241 |
^ '$Header$' |
328 | 242 |
! ! |
243 |