author | Claus Gittinger <cg@exept.de> |
Sun, 26 Feb 2017 15:17:18 +0100 | |
branch | cvs_MAIN |
changeset 1020 | 5cc6ac344d41 |
parent 922 | 1fc4c42fa302 |
child 1065 | 56015ef51e76 |
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:
234
diff
changeset
|
19 |
"{ Package: 'stx:goodies/smallsense' }" |
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
"{ NameSpace: SmallSense }" |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
Object subclass:#CompletionEngine |
157
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
24 |
instanceVariableNames:'codeView result context' |
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
classVariableNames:'' |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
poolDictionaries:'' |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
category:'SmallSense-Core' |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
! |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
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 |
!CompletionEngine 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 |
! ! |
147
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
52 |
|
187
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
53 |
!CompletionEngine class methodsFor:'accessing'! |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
54 |
|
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
55 |
exactMatcher |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
56 |
"Return a match block returning true, if given selector start with given prefix" |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
57 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
58 |
^ [ :prefix :selector | selector startsWith: prefix ] |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
59 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
60 |
"Created: / 08-04-2014 / 21:31:18 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
61 |
! |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
62 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
63 |
inexactMatcher |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
64 |
"Return a match block returning true, if given prefix matches given selector" |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
65 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
66 |
^ [ :prefix :selector | |
233 | 67 |
prefix size < 5 ifTrue:[ |
68 |
selector startsWith: prefix. |
|
69 |
] ifFalse:[ |
|
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
70 |
| part | |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
71 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
72 |
part := selector copyTo: (prefix size min: selector size). |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
73 |
(prefix levenshteinTo: part) < 15 |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
74 |
]. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
75 |
]. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
76 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
77 |
"Created: / 08-04-2014 / 21:30:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
78 |
! |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
79 |
|
187
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
80 |
matcher |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
81 |
"Return a match block returning true, if given prefix matches given selector" |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
82 |
|
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
83 |
^ [ :prefix :selector | |
233 | 84 |
prefix size < 5 ifTrue:[ |
85 |
selector startsWith: prefix. |
|
86 |
] ifFalse:[ |
|
187
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
87 |
| part | |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
88 |
|
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
89 |
part := selector copyTo: (prefix size min: selector size). |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
90 |
(prefix levenshteinTo: part) < 15 |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
91 |
]. |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
92 |
]. |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
93 |
|
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
94 |
"Created: / 02-04-2014 / 23:30:00 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
95 |
! ! |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
96 |
|
922 | 97 |
!CompletionEngine class methodsFor:'queries'! |
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
isAbstract |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
^ self == CompletionEngine |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
"Created: / 02-10-2013 / 13:11:39 / 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:
diff
changeset
|
103 |
! ! |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
|
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
!CompletionEngine methodsFor:'completion'! |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
|
157
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
107 |
complete: aCompletionContext |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
108 |
"Compute completion for given completion context, 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:
147
diff
changeset
|
109 |
from it. Returns a CompletionResult with computed completions" |
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
|
157
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
111 |
context := aCompletionContext. |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
112 |
result := CompletionResult new. |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
113 |
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:
147
diff
changeset
|
114 |
result context: context. |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
115 |
^ self complete. |
117
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
|
157
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
117 |
"Created: / 21-01-2014 / 23:07:47 / 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:
diff
changeset
|
118 |
! ! |
441529422c2f
Completion support refactored to make it more pluggable/extendable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
|
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
120 |
!CompletionEngine methodsFor:'completion-individual'! |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
121 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
122 |
addMethodsStartingWith: prefix |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
123 |
^ self addMethodsStartingWith: prefix stripOff: nil filter: nil |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
124 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
125 |
"Created: / 24-07-2013 / 13:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
126 |
"Modified: / 08-04-2014 / 21:36:54 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
127 |
! |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
128 |
|
233 | 129 |
addMethodsStartingWith: prefix stripOff: stripoffPrefix |
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
130 |
^ self addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: nil |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
131 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
132 |
"Created: / 08-04-2014 / 21:36:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
133 |
! |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
134 |
|
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
135 |
addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
136 |
| matcher | |
187
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
137 |
|
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
138 |
matcher := stripoffPrefix isEmptyOrNil ifTrue:[ CompletionEngine inexactMatcher ] ifFalse:[ CompletionEngine exactMatcher ]. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
139 |
^ self addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil matcher: matcher. |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
140 |
|
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
141 |
"Created: / 08-04-2014 / 21:35:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
187
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
142 |
! |
7baeeea7d8ae
Fixes issue #4 - Use levenshtein distance when computing prefix-based selector completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
143 |
|
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
144 |
addMethodsStartingWith: prefix stripOff: stripoffPrefix filter: filterOrNil matcher: matcher |
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
145 |
| matchPrefix selectors filter | |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
146 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
147 |
selectors := Dictionary new. |
233 | 148 |
matchPrefix := stripoffPrefix isNil ifTrue:[ prefix ] ifFalse:[ stripoffPrefix , prefix ]. |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
149 |
filter := filterOrNil isNil ifTrue:[ [:method | true ] ] ifFalse:[ filterOrNil ]. |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
150 |
|
205
43bee6463c53
Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
151 |
context environment allMethodsWithSelectorDo:[:mthd :selector| |
43bee6463c53
Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
152 |
(mthd isSynthetic not and:[(filter value: mthd) and:[ matcher value: matchPrefix value: selector]]) ifTrue:[ |
201
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
153 |
| class overridden | |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
154 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
155 |
class := mthd mclass superclass. |
201
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
156 |
overridden := false. |
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
157 |
[ overridden not and:[class notNil] ] whileTrue:[ |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
158 |
(class methodDictionary includesKey: selector) ifTrue:[ |
201
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
159 |
overridden := true. |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
160 |
]. |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
161 |
class := class superclass. |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
162 |
]. |
201
9a0df215823a
Fix in (Smalltalk)CompletionEngine - do not add method twice to completion result.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
163 |
overridden ifFalse:[ |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
164 |
| classes | |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
165 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
166 |
classes := selectors at: selector ifAbsentPut:[ Set new ]. |
131
ea84eea5a3c4
Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
167 |
(classes includes: mthd mclass) ifFalse:[ |
ea84eea5a3c4
Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
168 |
classes add: mthd mclass. |
ea84eea5a3c4
Fix in code completion - do not add same method multiple times into completion list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
120
diff
changeset
|
169 |
]. |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
170 |
]. |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
171 |
] |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
172 |
]. |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
173 |
|
205
43bee6463c53
Introduced notion of `environment` to completion context.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
192
diff
changeset
|
174 |
|
234
97857872ee47
Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
233
diff
changeset
|
175 |
selectors keysAndValuesDo: [:selector :classes | |
229
c82a22d2153d
PO refactoring: get rid of subject instvar.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
201
diff
changeset
|
176 |
result add:(PO forClasses: classes selector: selector prefix: stripoffPrefix) |
234
97857872ee47
Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
233
diff
changeset
|
177 |
]. |
97857872ee47
Initial set of tests for GroovyCompletionEngineSimple (along with some fixes)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
233
diff
changeset
|
178 |
^ self |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
179 |
|
192
f27ce6dac101
Initial support for completing selector parts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
187
diff
changeset
|
180 |
"Created: / 08-04-2014 / 21:34:36 / 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
|
181 |
"Modified: / 23-05-2014 / 11:54:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
182 |
! ! |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
118
diff
changeset
|
183 |
|
157
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
184 |
!CompletionEngine methodsFor:'completion-private'! |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
185 |
|
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
186 |
complete |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
187 |
"Compute completion for `codeView`, taking all the information |
233 | 188 |
from it. Returns a CompletionResult with computed completions" |
157
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
189 |
|
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
190 |
^ self subclassResponsibility |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
191 |
|
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
192 |
"Modified (comment): / 02-10-2013 / 13:33:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
193 |
! ! |
c71d2e62ece2
Refactored API of CompletionEngine - caller now must set up an context pass it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
147
diff
changeset
|
194 |
|
147
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
195 |
!CompletionEngine class methodsFor:'documentation'! |
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
196 |
|
922 | 197 |
version |
198 |
^ '$Header$' |
|
199 |
! |
|
200 |
||
201 |
version_CVS |
|
202 |
^ '$Header$' |
|
203 |
! |
|
204 |
||
147
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
205 |
version_HG |
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
206 |
|
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
207 |
^ '$Changeset: <not expanded> $' |
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
208 |
! ! |
5c835893f71b
New class search completion for browser's search bar moved to SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
136
diff
changeset
|
209 |