@@ -82,7 +82,9 @@ at_line_end = (text, point) ->
82
82
false
83
83
84
84
# tab to indent is neccesary
85
- key_tab = (target ) ->
85
+ key_tab = (target , event ) ->
86
+ event .preventDefault ()
87
+
86
88
caret = wrap_text target
87
89
# o caret
88
90
{all ,ar ,ac ,br ,bc } = caret
@@ -112,7 +114,9 @@ key_tab = (target) ->
112
114
write_text target, {all,ar,ac,br,bc}
113
115
114
116
# use shift tab to remove indentation
115
- key_shift_tab = (target ) ->
117
+ key_shift_tab = (target , event ) ->
118
+ event .preventDefault ()
119
+
116
120
caret = wrap_text target
117
121
{all ,ar ,ac ,br ,bc } = caret
118
122
if caret .same
@@ -209,7 +213,9 @@ key_ctrl_shift_d = (target) ->
209
213
write_text target, {all,ar,ac,br,bc}
210
214
211
215
# enter only, consider last line and
212
- key_enter = (target ) ->
216
+ key_enter = (target , event ) ->
217
+ event .preventDefault ()
218
+
213
219
caret = wrap_text target
214
220
{all ,ar ,ac } = caret
215
221
if caret .same
@@ -224,7 +230,8 @@ key_enter = (target) ->
224
230
write_text target, {all,ar,ac}
225
231
226
232
# press backspace at head, last line if empty, delete it
227
- key_backspace = (target ) ->
233
+ key_backspace = (target , event ) ->
234
+
228
235
caret = wrap_text target
229
236
{all ,ar ,ac } = caret
230
237
if caret .same
@@ -233,12 +240,14 @@ key_backspace = (target) ->
233
240
if even n then all[ar] = all[ar][... n- 2 ] + all[ar][n.. ]
234
241
else all[ar] = all[ar][... n- 1 ] + all[ar][n.. ]
235
242
ac = n - 2
243
+ event .preventDefault ()
236
244
write_text target, {all,ar,ac}
237
245
else if all[ar- 1 ]? and caret .as
238
246
if all[ar- 1 ].match / ^ \s + $ /
239
247
all = all[... ar- 1 ].concat all[ar.. ]
240
248
ar = ar- 1
241
249
ac = 0
250
+ event .preventDefault ()
242
251
write_text target, {all,ar,ac}
243
252
# o caret.ae
244
253
else if all[ar].length > 1 and (not caret .ae )
@@ -247,6 +256,7 @@ key_backspace = (target) ->
247
256
if pair in [' {}' , ' ()' , ' []' , ' ""' , " ''" , ' ``' ]
248
257
all[ar] = all[ar][... ac- 1 ] + all[ar][ac+ 1 .. ]
249
258
ac -= 1
259
+ event .preventDefault ()
250
260
write_text target, {all,ar,ac}
251
261
252
262
# ctrl Enter to open a new line with indentation
@@ -307,7 +317,9 @@ key_ctrl_shift_down = (target) ->
307
317
write_text target, {all,ar,ac,br,bc}
308
318
309
319
# left-bracket
310
- key_bracket = (target , bracket ) ->
320
+ key_bracket = (target , event , bracket ) ->
321
+ event .preventDefault ()
322
+
311
323
caret = wrap_text target
312
324
{all ,ac ,ar ,br ,bc } = caret
313
325
# o bracket
@@ -318,7 +330,9 @@ key_bracket = (target, bracket) ->
318
330
bc += 1
319
331
write_text target, {all,ar,ac,br,bc}
320
332
321
- key_bracket_close = (target , closer ) ->
333
+ key_bracket_close = (target , event , closer ) ->
334
+ event .preventDefault ()
335
+
322
336
caret = wrap_text target
323
337
{all ,ar ,ac } = caret
324
338
if caret .same
@@ -335,7 +349,9 @@ key_home = (target) ->
335
349
ac = if spaces? then spaces[0 ].length else 0
336
350
write_text target, {all, ar, ac}
337
351
338
- key_quote = (target , sign ) ->
352
+ key_quote = (target , event , sign ) ->
353
+ event .preventDefault ()
354
+
339
355
caret = wrap_text target
340
356
if caret .same
341
357
{all , ar , ac } = caret
@@ -356,25 +372,25 @@ key_quote = (target, sign) ->
356
372
357
373
# new version of map_keys
358
374
call_shortcut =
359
- 9 : (target ) -> key_tab target
360
- 13 : (target ) -> key_enter target
361
- 8 : (target ) -> key_backspace target
375
+ 9 : (target , event ) -> key_tab target, event
376
+ 13 : (target , event ) -> key_enter target, event
377
+ 8 : (target , event ) -> key_backspace target, event
362
378
36 : (target ) -> key_home target
363
- 219 : (target ) -> key_bracket target, ' []'
364
- 192 : (target ) -> key_quote target, ' `'
365
- # 222: (target) -> key_quote target, "'"
366
- 221 : (target ) -> key_bracket_close target, ' ]'
367
- ' shift 9 ' : (target ) -> key_shift_tab target
368
- ' shift 57 ' : (target ) -> key_bracket target, ' ()'
369
- ' shift 48 ' : (target ) -> key_bracket_close target, ' )'
370
- ' shift 219 ' : (target ) -> key_bracket target, ' {}'
371
- ' shift 221 ' : (target ) -> key_bracket_close target, ' }'
372
- ' shift 222 ' : (target ) -> key_quote target, ' "'
379
+ 219 : (target , event ) -> key_bracket target, event , ' []'
380
+ 192 : (target , event ) -> key_quote target, event , ' `'
381
+ # 222: (target, event ) -> key_quote target, event , "'"
382
+ 221 : (target , event ) -> key_bracket_close target, event , ' ]'
383
+ ' shift 9 ' : (target , event ) -> key_shift_tab target, event
384
+ ' shift 57 ' : (target , event ) -> key_bracket target, event , ' ()'
385
+ ' shift 48 ' : (target , event ) -> key_bracket_close target, event , ' )'
386
+ ' shift 219 ' : (target , event ) -> key_bracket target, event , ' {}'
387
+ ' shift 221 ' : (target , event ) -> key_bracket_close target, event , ' }'
388
+ ' shift 222 ' : (target , event ) -> key_quote target, event , ' "'
373
389
' ctrl 76 ' : (target ) -> key_ctrl_l target
374
- ' ctrl 13 ' : (target ) -> key_ctrl_enter target
390
+ ' ctrl 13 ' : (target , event ) -> key_ctrl_enter target, event
375
391
' ctrl 75 ' : (target ) -> key_ctrl_k target
376
392
' ctrl 85 ' : (target ) -> key_ctrl_u target
377
- ' ctrl shift 13 ' : (target ) -> key_ctrl_shift_enter target
393
+ ' ctrl shift 13 ' : (target , event ) -> key_ctrl_shift_enter target, event
378
394
' ctrl shift 75 ' : (target ) -> key_ctrl_shift_k target
379
395
' ctrl shift 68 ' : (target ) -> key_ctrl_shift_d target
380
396
' ctrl shift 38 ' : (target ) -> key_ctrl_shift_up target
@@ -399,16 +415,16 @@ exports.codearea = (area) ->
399
415
mark += ' shift ' if e .shiftKey
400
416
mark += String e .keyCode
401
417
# o mark
402
- call_shortcut[mark] area if call_shortcut[mark]?
418
+ call_shortcut[mark] area, e if call_shortcut[mark]?
403
419
404
420
area .__codearea__ = handleEvents
405
421
406
- area .onkeydown = handleEvents
422
+ area .addEventListener ' keydown ' , handleEvents
407
423
408
424
exports .teardownCodearea = (area ) ->
409
425
if not area .__codearea__ ?
410
426
console .warn area, ' is not a textarea'
411
427
return
412
428
413
- area .onkeydown = null
429
+ area .removeEventListner ' keydown ' , area . __codearea__
414
430
area .__codearea__
0 commit comments