@@ -86,6 +86,12 @@ function applyEvent(data) {
86
86
editor . resize ( true ) ;
87
87
}
88
88
89
+ function scrollTop ( ) {
90
+ editor . endOperation ( ) ;
91
+ editor . renderer . $loop . _flush ( ) ;
92
+ return editor . renderer . scrollTop / editor . renderer . lineHeight ;
93
+ }
94
+
89
95
module . exports = {
90
96
setUp : function ( ) {
91
97
if ( ! editor ) {
@@ -119,7 +125,7 @@ module.exports = {
119
125
{ _ : "keydown" , range : [ 12 , 12 ] , value : "\thello world\n\n" , key : { code : "ControlLeft" , key : "Control" , keyCode : 17 } , modifier : "ctrl-" } ,
120
126
{ _ : "keydown" , range : [ 12 , 12 ] , value : "\thello world\n\n" , key : { code : "AltLeft" , key : "Alt" , keyCode : 18 } , modifier : "ctrl-alt-" } ,
121
127
{ _ : "keydown" , range : [ 6 , 11 ] , value : "hello world\n\n" , key : { code : "KeyL" , key : "fi" , keyCode : 76 } , modifier : "ctrl-alt-" } ,
122
-
128
+
123
129
{ _ : "keydown" , range : [ 6 , 11 ] , value : "hello world\n\n" , key : { code : "KeyC" , key : "c" , keyCode : 67 } } ,
124
130
{ _ : "input" , range : [ 7 , 7 ] , value : "hello c\n\n" } ,
125
131
{ _ : "keydown" , range : [ 7 , 7 ] , value : "hello c\n\n" , key : { code : "KeyX" , key : "x" , keyCode : 88 } } ,
@@ -136,10 +142,10 @@ module.exports = {
136
142
} ,
137
143
{ _ : "keydown" , range : [ 7 , 7 ] , value : "hello ^x\n\n" , key : { code : "Escape" , key : "Escape" , keyCode : 27 } } ,
138
144
{ _ : "keydown" , key : { code : "KeyH" , key : "˛" , keyCode : 72 } , modifier : "ctrl-alt-" } ,
139
-
145
+
140
146
{ _ : "keydown" , range : [ 1 , 6 ] , value : "\thello x\n\n" , key : { code : "AltRight" , key : "Alt" , keyCode : 18 } , modifier : "alt-" } ,
141
147
{ _ : "keydown" , range : [ 1 , 6 ] , value : "\thello x\n\n" , key : { code : "Digit4" , key : "$" , keyCode : 52 } , modifier : "alt-" } ,
142
-
148
+
143
149
{ _ : "input" , range : [ 2 , 2 ] , value : "\t$ x\n\n" } ,
144
150
function ( ) {
145
151
testSelection ( editor , [ [ 1 , 5 , 1 , 8 ] , [ 0 , 4 , 0 , 7 ] ] ) ;
@@ -149,7 +155,7 @@ module.exports = {
149
155
testSelection ( editor , [ [ 1 , 7 ] , [ 0 , 6 ] ] ) ;
150
156
} ,
151
157
{ _ : "keydown" , key : { code : "Escape" , key : "Escape" , keyCode : 27 } } ,
152
-
158
+
153
159
] . forEach ( function ( data ) {
154
160
applyEvent ( data ) ;
155
161
} ) ;
@@ -162,7 +168,7 @@ module.exports = {
162
168
{ _ : "keydown" , range : [ 12 , 12 ] , value : "\thello world\n\n" , key : { code : "ControlLeft" , key : "Control" , keyCode : 17 } , modifier : "ctrl-" } ,
163
169
{ _ : "keydown" , range : [ 12 , 12 ] , value : "\thello world\n\n" , key : { code : "AltLeft" , key : "Alt" , keyCode : 18 } , modifier : "ctrl-alt-" } ,
164
170
{ _ : "keydown" , range : [ 6 , 11 ] , value : "hello world\n\n" , key : { code : "KeyL" , key : "fi" , keyCode : 76 } , modifier : "ctrl-alt-" } ,
165
-
171
+
166
172
{ _ : "keydown" , range : [ 6 , 11 ] , value : "hello world\n\n" , key : { code : "KeyC" , key : "c" , keyCode : 67 } } ,
167
173
{ _ : "input" , range : [ 7 , 7 ] , value : "hello c\n\n" } ,
168
174
{ _ : "keydown" , range : [ 7 , 7 ] , value : "hello c\n\n" , key : { code : "KeyX" , key : "x" , keyCode : 88 } } ,
@@ -179,10 +185,10 @@ module.exports = {
179
185
} ,
180
186
{ _ : "keydown" , range : [ 7 , 7 ] , value : "hello ^x\n\n" , key : { code : "Escape" , key : "Escape" , keyCode : 27 } } ,
181
187
{ _ : "keydown" , key : { code : "KeyH" , key : "˛" , keyCode : 72 } , modifier : "ctrl-alt-" } ,
182
-
188
+
183
189
{ _ : "keydown" , range : [ 1 , 6 ] , value : "\thello x\n\n" , key : { code : "AltRight" , key : "Alt" , keyCode : 18 } , modifier : "alt-" } ,
184
190
{ _ : "keydown" , range : [ 1 , 6 ] , value : "\thello x\n\n" , key : { code : "Digit4" , key : "$" , keyCode : 52 } , modifier : "alt-" } ,
185
-
191
+
186
192
{ _ : "input" , range : [ 2 , 2 ] , value : "\t$ x\n\n" } ,
187
193
function ( ) {
188
194
testSelection ( editor , [ [ 1 , 5 , 1 , 8 ] , [ 0 , 4 , 0 , 7 ] ] ) ;
@@ -192,7 +198,7 @@ module.exports = {
192
198
testSelection ( editor , [ [ 1 , 7 ] , [ 0 , 6 ] ] ) ;
193
199
} ,
194
200
{ _ : "keydown" , key : { code : "Escape" , key : "Escape" , keyCode : 27 } } ,
195
-
201
+
196
202
] . forEach ( function ( data ) {
197
203
applyEvent ( data ) ;
198
204
} ) ;
@@ -206,15 +212,15 @@ module.exports = {
206
212
{ _ : "keyup" , range : [ 1 , 1 ] , value : "V\n\n" , key : { code : "KeyV" , key : "V" , keyCode : 86 } , modifier : "shift-" } ,
207
213
{ _ : "keyup" , range : [ 1 , 1 ] , value : "V\n\n" , key : { code : "ShiftLeft" , key : "Shift" , keyCode : 16 } } ,
208
214
{ _ : "keydown" , range : [ 1 , 1 ] , value : "V\n\n" , key : { code : "KeyK" , key : "k" , keyCode : 75 } } ,
209
- { _ : "keypress" , range : [ 1 , 1 ] , value : "V\n\n" , key : { code : "KeyK" , key : "k" , keyCode : 107 } } ,
215
+ { _ : "keypress" , range : [ 1 , 1 ] , value : "V\n\n" , key : { code : "KeyK" , key : "k" , keyCode : 107 } } ,
210
216
{ _ : "input" , range : [ 2 , 2 ] , value : "Vk\n\n" } ,
211
217
{ _ : "keyup" , range : [ 2 , 2 ] , value : "Vk\n\n" , key : { code : "KeyK" , key : "k" , keyCode : 75 } } ,
212
218
{ _ : "keydown" , range : [ 2 , 2 ] , value : "Vk\n\n" , key : { code : "KeyC" , key : "c" , keyCode : 67 } } ,
213
- { _ : "keypress" , range : [ 2 , 2 ] , value : "Vk\n\n" , key : { code : "KeyC" , key : "c" , keyCode : 99 } } ,
219
+ { _ : "keypress" , range : [ 2 , 2 ] , value : "Vk\n\n" , key : { code : "KeyC" , key : "c" , keyCode : 99 } } ,
214
220
{ _ : "input" , range : [ 3 , 3 ] , value : "Vkc\n\n" } ,
215
221
{ _ : "keyup" , range : [ 3 , 3 ] , value : "Vkc\n\n" , key : { code : "KeyC" , key : "c" , keyCode : 67 } } ,
216
222
{ _ : "keydown" , range : [ 3 , 3 ] , value : "Vkc\n\n" , key : { code : "KeyO" , key : "o" , keyCode : 79 } } ,
217
- { _ : "keypress" , range : [ 3 , 3 ] , value : "Vkc\n\n" , key : { code : "KeyO" , key : "o" , keyCode : 111 } } ,
223
+ { _ : "keypress" , range : [ 3 , 3 ] , value : "Vkc\n\n" , key : { code : "KeyO" , key : "o" , keyCode : 111 } } ,
218
224
{ _ : "input" , range : [ 4 , 4 ] , value : "Vkco\n\n" } ,
219
225
{ _ : "keyup" , range : [ 4 , 4 ] , value : "Vkco\n\n" , key : { code : "KeyO" , key : "o" , keyCode : 79 } } ,
220
226
function ( ) {
@@ -224,12 +230,12 @@ module.exports = {
224
230
{ _ : "keydown" , range : [ 0 , 0 ] , value : "ozzz\n\n" , key : { code : "Escape" , key : "Escape" , keyCode : 27 } } ,
225
231
{ _ : "keyup" , range : [ 0 , 0 ] , value : "ozzz\n\n" , key : { code : "Escape" , key : "Escape" , keyCode : 27 } } ,
226
232
{ _ : "keydown" , range : [ 0 , 0 ] , value : "ozzz\n\n" , key : { code : "ControlLeft" , key : "Control" , keyCode : 17 } , modifier : "ctrl-" } ,
227
-
233
+
228
234
{ _ : "keydown" , range : [ 0 , 1 ] , value : "ozzz\n\n" , key : { code : "KeyV" , key : "v" , keyCode : 86 } , modifier : "ctrl-" } ,
229
235
{ _ : "select" , range : [ 0 , 1 ] , value : "ozzz\n\n" } ,
230
236
{ _ : "keyup" , range : [ 0 , 1 ] , value : "ozzz\n\n" , key : { code : "KeyV" , key : "v" , keyCode : 86 } , modifier : "ctrl-" } ,
231
237
{ _ : "keyup" , range : [ 0 , 1 ] , value : "ozzz\n\n" , key : { code : "ControlLeft" , key : "Control" , keyCode : 17 } } ,
232
-
238
+
233
239
{ _ : "keydown" , range : [ 0 , 1 ] , value : "ccc\n\n" , key : { code : "ArrowDown" , key : "ArrowDown" , keyCode : 40 } } ,
234
240
{ _ : "select" , range : [ 0 , 1 ] , value : "ccc\n\n" } ,
235
241
{ _ : "keyup" , range : [ 0 , 1 ] , value : "ccc\n\n" , key : { code : "ArrowDown" , key : "ArrowDown" , keyCode : 40 } } ,
@@ -239,7 +245,7 @@ module.exports = {
239
245
} ,
240
246
{ _ : "keydown" , range : [ 0 , 1 ] , value : "ccc\n\n" , key : { code : "Period" , key : "." , keyCode : 190 } } ,
241
247
{ _ : "keypress" , range : [ 0 , 1 ] , value : "ccc\n\n" , key : { code : "Period" , key : "." , keyCode : 46 } } ,
242
-
248
+
243
249
{ _ : "input" , range : [ 1 , 1 ] , value : ".cc\n\n" } ,
244
250
{ _ : "keyup" , range : [ 1 , 1 ] , value : ".cc\n\n" , key : { code : "Period" , key : "." , keyCode : 190 } } ,
245
251
function ( ) {
@@ -252,8 +258,8 @@ module.exports = {
252
258
} ,
253
259
"test vim gq" : function ( ) {
254
260
editor . setValue (
255
- "1\n2\nhello world\n"
256
- + "xxx " . repeat ( 20 ) + "\nyyy"
261
+ "1\n2\nhello world\n"
262
+ + "xxx " . repeat ( 20 ) + "\nyyy"
257
263
+ "\n\nnext\nparagraph"
258
264
) ;
259
265
editor . selection . moveTo ( 2 , 5 )
@@ -298,25 +304,19 @@ module.exports = {
298
304
var screenSize = editor . renderer . layerConfig . height / editor . renderer . lineHeight ;
299
305
300
306
user . type ( "Escape" , "gg" ) ;
301
- assert . equal ( scollTop ( ) , 0 ) ;
307
+ assert . equal ( scrollTop ( ) , 0 ) ;
302
308
user . type ( "/" , "needle" ) ;
303
- assert . ok ( scollTop ( ) > 40 - screenSize ) ;
309
+ assert . ok ( scrollTop ( ) > 40 - screenSize ) ;
304
310
editor . endOperation ( ) ;
305
311
user . type ( "Escape" ) ;
306
- assert . equal ( scollTop ( ) , 0 ) ;
312
+ assert . equal ( scrollTop ( ) , 0 ) ;
307
313
308
314
user . type ( "/" , "needle" , "Enter" ) ;
309
- assert . ok ( scollTop ( ) > 40 - screenSize ) ;
310
- assert . ok ( scollTop ( ) < 40 ) ;
315
+ assert . ok ( scrollTop ( ) > 40 - screenSize ) ;
316
+ assert . ok ( scrollTop ( ) < 40 ) ;
311
317
user . type ( "6" , "/" , "more" , "Enter" ) ;
312
318
editor . endOperation ( ) ;
313
- assert . ok ( scollTop ( ) > 40 + 16 - screenSize ) ;
314
-
315
- function scollTop ( ) {
316
- editor . endOperation ( ) ;
317
- editor . renderer . $loop . _flush ( ) ;
318
- return editor . renderer . scrollTop / editor . renderer . lineHeight ;
319
- }
319
+ assert . ok ( scrollTop ( ) > 40 + 16 - screenSize ) ;
320
320
} ,
321
321
"test: vim normal mode brackets highlighting" : function ( ) {
322
322
editor . setValue ( "{((hello, world))}" ) ;
@@ -345,6 +345,23 @@ module.exports = {
345
345
} , isBackwards ) ;
346
346
assert . range ( ranges [ 1 ] , el . startRow , el . startColumn , el . endRow , el . endColumn ) ;
347
347
} ) ;
348
+ } ,
349
+ "test: gotoline" : function ( ) {
350
+ editor . renderer . setOption ( "animatedScroll" , false ) ;
351
+ editor . setValue (
352
+ "very\nlong\n\ntext\n" . repeat ( 20 ) ,
353
+ - 1
354
+ ) ;
355
+
356
+ editor . focus ( ) ;
357
+ var screenSize = editor . renderer . layerConfig . height / editor . renderer . lineHeight ;
358
+
359
+ assert . equal ( scrollTop ( ) , 0 ) ;
360
+ user . type ( ":30" , "Enter" ) ;
361
+ editor . endOperation ( ) ;
362
+
363
+ assert . ok ( scrollTop ( ) > 30 - screenSize ) ;
364
+ assert . ok ( scrollTop ( ) < 30 ) ;
348
365
}
349
366
} ;
350
367
0 commit comments