author | Claus Gittinger <cg@exept.de> |
Thu, 10 Aug 2017 10:05:49 +0200 | |
branch | cvs_MAIN |
changeset 1041 | 4413bae59f15 |
parent 944 | 82d17f0bad72 |
child 1107 | f71b375b75cb |
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:
219
diff
changeset
|
19 |
"{ Package: 'stx:goodies/smallsense' }" |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
"{ NameSpace: SmallSense }" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
EditSupport subclass:#JavaEditSupport |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
instanceVariableNames:'lastTypedKey0 lastTypedKey1 lastTypedKey2 lastTypedKey3' |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
classVariableNames:'' |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
poolDictionaries:'' |
67
020b7461b15e
Package structure reorganization.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
27 |
category:'SmallSense-Java' |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
|
252
feba6ee5c814
Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
249
diff
changeset
|
30 |
!JavaEditSupport 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 |
! ! |
139
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
52 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
!JavaEditSupport methodsFor:'accessing'! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
language |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
"superclass SmallSenseEditSupport says that I am responsible to implement this method" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
|
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
58 |
| javaLanguageClass | |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
59 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
60 |
javaLanguageClass := Smalltalk at:#JavaLanguage. |
122 | 61 |
^ javaLanguageClass notNil ifTrue:[ javaLanguageClass instance ] ifFalse: [ nil ]. |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
62 |
|
122 | 63 |
"Modified: / 04-10-2013 / 08:42:10 / 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:
108
diff
changeset
|
64 |
! ! |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
|
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
66 |
!JavaEditSupport methodsFor:'accessing-classes'! |
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
67 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
68 |
completionEngineClass |
327 | 69 |
"Returns a code completion engine class or nil, |
70 |
if no completion is supported" |
|
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
71 |
|
944 | 72 |
UserPreferences current useJavaCompletionEngineSimple ifTrue:[ |
73 |
^ SmallSense::JavaCompletionEngineSimple |
|
278
696843cd1f9d
Revamp of Java completion engine - use JDT's CompletionParser to parse source.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
252
diff
changeset
|
74 |
]. |
944 | 75 |
^ SmallSense::JavaCompletionEngine |
120
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
76 |
|
4fefce92f5bb
Initial support for Java/Groovy completion and for mixed-language completion.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
108
diff
changeset
|
77 |
"Created: / 03-10-2013 / 17:45:08 / 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:
252
diff
changeset
|
78 |
"Modified: / 12-08-2014 / 10:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
79 |
! |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
80 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
81 |
scannerClass |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
82 |
"Returns a class to use for scanning lines. If nil, scanning is |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
83 |
not supported and scanLine* methods will return an empty array." |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
84 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
85 |
^ (Smalltalk at: #JavaScanner) |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
86 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
87 |
"Created: / 22-10-2013 / 00:38:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
88 |
! ! |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
89 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
90 |
!JavaEditSupport methodsFor:'editing'! |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
91 |
|
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
92 |
electricInsertSnippet |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
93 |
| tokens lastToken0 | |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
94 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
95 |
tokens := self scanLineAtCursor. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
96 |
tokens isEmptyOrNil ifTrue:[ |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
97 |
^ false |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
98 |
]. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
99 |
lastToken0 := tokens at:(tokens size - 3). |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
100 |
lastToken0 = 'Error' ifTrue:[ |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
101 |
^ false |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
102 |
]. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
103 |
(tokens last > service textView cursorCol) ifTrue:[ |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
104 |
^ false |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
105 |
]. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
106 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
107 |
"/ Insert try { ... } |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
108 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
109 |
lastToken0 == #try ifTrue:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
110 |
(tokens size == 4 |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
111 |
or:[ (tokens size > 4) and:[ (tokens at:tokens size - 7) ~~ $. ] ]) |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
112 |
ifTrue:[ |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
113 |
self electricInsertBlockOpenedBy:' {' closedBy:'}'. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
114 |
^ true. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
115 |
] |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
116 |
]. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
117 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
118 |
"/ Insert catch ( ) { ... } |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
119 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
120 |
lastToken0 == #catch ifTrue:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
121 |
(tokens size > 4 and:[ (tokens at:tokens size - 7) == $} ]) ifTrue:[ |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
122 |
| cursorLine cursorCol | |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
123 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
124 |
cursorLine := service textView cursorLine. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
125 |
cursorCol := service textView cursorCol. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
126 |
self electricInsertBlockOpenedBy:' ( ) {' closedBy:'}'. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
127 |
service textView cursorLine:cursorLine col:cursorCol + 3. |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
128 |
^ true. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
129 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
130 |
]. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
131 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
132 |
"/ Insert finally { ... } |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
133 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
134 |
lastToken0 == #finally ifTrue:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
135 |
(tokens size > 4 and:[ (tokens at:tokens size - 7) == $} ]) ifTrue:[ |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
136 |
self electricInsertBlockOpenedBy:' {' closedBy:'}'. |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
137 |
^ true. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
138 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
139 |
]. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
140 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
141 |
"/ Insert if/while/synchronized ( ) { ... } |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
142 |
|
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
143 |
(#( #if #while #synchronized ) includes:lastToken0) ifTrue:[ |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
144 |
(tokens size = 4) ifTrue:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
145 |
| cursorLine cursorCol | |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
146 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
147 |
cursorLine := service textView cursorLine. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
148 |
cursorCol := service textView cursorCol. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
149 |
self electricInsertBlockOpenedBy:' ( ) {' closedBy:'}'. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
150 |
service textView cursorLine:cursorLine col:cursorCol + 3. |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
151 |
^ true. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
152 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
153 |
]. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
154 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
155 |
"/ Insert for ( ; ; ) { ... } |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
156 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
157 |
(lastToken0 == #for) ifTrue:[ |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
158 |
(tokens size = 4) ifTrue:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
159 |
| cursorLine cursorCol | |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
160 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
161 |
cursorLine := service textView cursorLine. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
162 |
cursorCol := service textView cursorCol. |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
163 |
self electricInsertBlockOpenedBy:' ( ; ; ) {' closedBy:'}'. |
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
164 |
service textView cursorLine:cursorLine col:cursorCol + 3. |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
165 |
^ true. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
166 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
167 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
168 |
^ false |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
169 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
170 |
"Created: / 22-10-2013 / 01:53:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
171 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
!JavaEditSupport methodsFor:'event handling'! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
keyPress: key x:x y:y in: view |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
"Handles an event in given view (a subview of codeView). |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
If the method returns true, the event will not be processed |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
by the view." |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
view ~~ textView ifTrue:[ ^ false ]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
|
155
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
183 |
(self keyPressIgnored: key) ifTrue:[ |
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
184 |
^ true. |
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
185 |
]. |
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
186 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
lastTypedKey3 := lastTypedKey2. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
lastTypedKey2 := lastTypedKey1. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
lastTypedKey1 := lastTypedKey0. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
lastTypedKey0 := key. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
|
217
6ff466b83ff9
Fixes and improvements for Java/Groovy completion (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
192 |
key == #CodeCompletion ifTrue:[ |
219
c69943a410fd
Do not cache completion controller in edit support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
217
diff
changeset
|
193 |
| controller | |
c69943a410fd
Do not cache completion controller in edit support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
217
diff
changeset
|
194 |
|
c69943a410fd
Do not cache completion controller in edit support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
217
diff
changeset
|
195 |
(controller := self textView completionSupport) notNil ifTrue:[ |
c69943a410fd
Do not cache completion controller in edit support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
217
diff
changeset
|
196 |
^ controller handleKeyPress:key x:x y:y |
217
6ff466b83ff9
Fixes and improvements for Java/Groovy completion (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
197 |
]. |
6ff466b83ff9
Fixes and improvements for Java/Groovy completion (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
198 |
^ false |
279
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
199 |
]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
200 |
|
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
201 |
key == #Return ifTrue:[ |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
202 |
^ self keyPressReturn. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
203 |
]. |
217
6ff466b83ff9
Fixes and improvements for Java/Groovy completion (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
176
diff
changeset
|
204 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
key == ${ ifTrue:[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
^ self keyPressOpenCurly |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
|
155
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
209 |
key == Character space ifTrue:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
210 |
^ self electricInsertSnippet |
155
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
211 |
]. |
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
212 |
|
d792aed09149
Initial support for ignoring keystrokes to avoid duplicate text when electric insert is active.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
139
diff
changeset
|
213 |
^ false |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
"Created: / 07-03-2010 / 09:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
279
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
216 |
"Modified: / 13-08-2014 / 15:30:46 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
keyPressOpenCurly |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
220 |
| line tokens i | |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
line := service codeView listAt: service codeView cursorLine. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
line notEmptyOrNil ifTrue:[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
i := line size. |
139
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
225 |
[ i > 0 and:[(line at: i) isSeparator] ] whileTrue:[ i := i - 1 ]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
(i ~~ 0 and:[service codeView cursorCol < i]) ifTrue:[ |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
227 |
^ false. ]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
] ifFalse:[ |
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
229 |
self electricInsertBlockOpenedBy:'{' closedBy:'}'. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
^ true |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
|
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
233 |
tokens := self scanLineAtCursor. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
234 |
tokens notEmptyOrNil ifTrue:[ |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
235 |
| column | |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
236 |
|
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
237 |
column := service textView cursorCol. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
238 |
(tokens at: tokens size - 3) = 'Error' ifTrue:[ ^ false ]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
239 |
1 to: tokens size - 3 by: 4 do:[:i | |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
240 |
(column between: (tokens at: i + 2) and: (tokens at: i + 3)) ifTrue:[ |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
241 |
(tokens at: i) == #String ifTrue:[ ^ false ]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
242 |
|
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
243 |
self electricInsertBlockOpenedBy:'{' closedBy:'}'. |
134
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
244 |
^ true. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
245 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
246 |
]. |
e34ee6ceb7c8
Initial support for "electric snippets".
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
247 |
]. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
|
159
289c7ef539af
Improved support for electric bracket.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
155
diff
changeset
|
249 |
self electricInsertBlockOpenedBy:'{' closedBy:'}'. |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
^ true |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
"Created: / 04-08-2013 / 01:54:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
139
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
253 |
"Modified: / 25-10-2013 / 18:03:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
279
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
254 |
! |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
255 |
|
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
256 |
keyPressReturn |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
257 |
| line c i indent lineNr ccontroler | |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
258 |
|
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
259 |
textView isInInsertMode ifFalse:[ ^ false ]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
260 |
ccontroler := textView completionSupport. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
261 |
(ccontroler notNil and:[ ccontroler isCompletionViewShown ]) ifTrue:[ |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
262 |
^ false. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
263 |
]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
264 |
|
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
265 |
"/ First, check if the cursor is at the end of line, i.e., if |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
266 |
"/ there's no text after the cursor... |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
267 |
lineNr := textView cursorLine. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
268 |
line := textView list at: lineNr. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
269 |
i := line size. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
270 |
[ i > 0 and:[ (c := line at:i) isSeparator ] ] whileTrue:[ i := i - 1 ]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
271 |
i <= textView cursorCol ifFalse:[ |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
272 |
"/ If not, do not indent... |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
273 |
^ false |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
274 |
]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
275 |
|
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
276 |
"/ Search for closest non-empty line above |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
277 |
lineNr := textView cursorLine. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
278 |
[ (line := textView list at: lineNr) isEmptyOrNil and:[lineNr > 0 ] ] whileTrue:[ lineNr := lineNr - 1 ]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
279 |
lineNr == 0 ifTrue:[ |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
280 |
"/ No such line found, givin up |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
281 |
^ false. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
282 |
]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
283 |
indent := line indexOfNonSeparator. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
284 |
"/ Look for opening curly, if found, increase indent... |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
285 |
i := line size. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
286 |
[ i > 0 and:[ (c := line at:i) isSeparator ] ] whileTrue:[ i := i - 1 ]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
287 |
(i > 0 and:[ c == ${ ]) ifTrue:[ |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
288 |
indent := indent + 4. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
289 |
]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
290 |
textView undoableDo:[ |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
291 |
textView insertCharAtCursor:(Character cr). |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
292 |
textView cursorCol: indent. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
293 |
]. |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
294 |
^ true |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
295 |
|
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
296 |
"Created: / 13-08-2014 / 15:30:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1dcaf8e06968
Improvement in JavaEditSupport - indent when return is pressed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
278
diff
changeset
|
297 |
"Modified: / 13-08-2014 / 20:38:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
|
108
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
300 |
!JavaEditSupport methodsFor:'initialization'! |
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
301 |
|
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
302 |
initializeForService: anEditService |
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
303 |
super initializeForService: anEditService. |
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
304 |
service textView autoIndent:true. |
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
305 |
|
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
306 |
"Created: / 27-09-2013 / 13:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
307 |
! ! |
71471dc81e77
Completion refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
67
diff
changeset
|
308 |
|
64
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
!JavaEditSupport methodsFor:'private'! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
tokenAtCursorLine |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
312 |
| scanner token | |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
313 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
314 |
scanner := (Smalltalk at:#JavaScanner) for: (service textView listAt: service textView cursorLine) string. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
315 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
316 |
[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
317 |
[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
318 |
token := scanner nextToken. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
319 |
(token ~~ #EOF and:[ scanner tokenEndPosition + 1 < service textView cursorCol ]) |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
320 |
] whileTrue. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
321 |
] on: Error do:[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
322 |
token := nil. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
323 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
324 |
^ token |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
325 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
326 |
"Created: / 04-08-2013 / 02:00:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
327 |
"Modified: / 04-08-2013 / 03:10:40 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
328 |
! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
329 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
330 |
tokensAtCursorLine |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
331 |
| scanner token | |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
332 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
333 |
scanner := (Smalltalk at:#JavaScanner) for: (service textView listAt: service textView cursorLine) string. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
334 |
^ OrderedCollection streamContents:[:tokens | |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
335 |
[ token := scanner nextToken.token ~~ #EOF ] whileTrue:[ |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
336 |
tokens nextPut: token. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
337 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
338 |
]. |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
339 |
|
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
340 |
"Created: / 04-08-2013 / 01:57:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
341 |
! ! |
2257d7223898
All classes moved to namespace SmallSense.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
342 |
|
139
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
343 |
!JavaEditSupport class methodsFor:'documentation'! |
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
344 |
|
327 | 345 |
version |
901 | 346 |
^ '$Header$' |
327 | 347 |
! |
348 |
||
349 |
version_CVS |
|
901 | 350 |
^ '$Header$' |
327 | 351 |
! |
352 |
||
139
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
353 |
version_HG |
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
354 |
|
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
355 |
^ '$Changeset: <not expanded> $' |
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
356 |
! ! |
bf1538a4e7ce
Fixed off-by-one bug when computing indent level for closing curly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
134
diff
changeset
|
357 |