@@ -28,6 +28,7 @@ define(function (require, exports, module) {
2828 let _cutInterceptor = null ;
2929 let _copyInterceptor = null ;
3030 let _pasteInterceptor = null ;
31+ let _keyEventInterceptor = null ;
3132
3233 const CodeMirror = require ( "thirdparty/CodeMirror/lib/codemirror" ) ,
3334 Menus = require ( "command/Menus" ) ;
@@ -174,6 +175,10 @@ define(function (require, exports, module) {
174175
175176 // Redispatch these CodeMirror key events as Editor events
176177 function _onKeyEvent ( instance , event ) {
178+ if ( _keyEventInterceptor && _keyEventInterceptor ( self , self . _codeMirror , event ) ) {
179+ // the interceptor processed it, so don't pass it along to CodeMirror'
180+ return ;
181+ }
177182 self . trigger ( "keyEvent" , self , event ) ; // deprecated
178183 self . trigger ( event . type , self , event ) ;
179184 return event . defaultPrevented ; // false tells CodeMirror we didn't eat the event
@@ -310,7 +315,7 @@ define(function (require, exports, module) {
310315 }
311316
312317 /**
313- * Sets the cut interceptor function
318+ * Sets the cut interceptor function in codemirror
314319 * @param {Function } interceptor - Function(editor, cm, event) that returns true to
315320 preventDefault
316321 */
@@ -319,7 +324,7 @@ define(function (require, exports, module) {
319324 }
320325
321326 /**
322- * Sets the copy interceptor function
327+ * Sets the copy interceptor function in codemirror
323328 * @param {Function } interceptor - Function(editor, cm, event) that returns true to
324329 preventDefault
325330 */
@@ -328,16 +333,26 @@ define(function (require, exports, module) {
328333 }
329334
330335 /**
331- * Sets the paste interceptor function
336+ * Sets the paste interceptor function in codemirror
332337 * @param {Function } interceptor - Function(editor, cm, event) that returns true to
333338 preventDefault
334339 */
335340 function setPasteInterceptor ( interceptor ) {
336341 _pasteInterceptor = interceptor ;
337342 }
338343
344+ /**
345+ * Sets the key down/up/press interceptor function in codemirror
346+ * @param {Function } interceptor - Function(editor, cm, event) that returns true to
347+ preventDefault
348+ */
349+ function setKeyEventInterceptor ( interceptor ) {
350+ _keyEventInterceptor = interceptor ;
351+ }
352+
339353 exports . addHelpers = addHelpers ;
340354 exports . setCutInterceptor = setCutInterceptor ;
341355 exports . setCopyInterceptor = setCopyInterceptor ;
342356 exports . setPasteInterceptor = setPasteInterceptor ;
357+ exports . setKeyEventInterceptor = setKeyEventInterceptor ;
343358} ) ;
0 commit comments