@@ -188,20 +188,24 @@ $(function() {
188188    const  mac  =  CodeMirror . keyMap . default  ===  CodeMirror . keyMap . macDefault ; 
189189    const  modifier  =  mac  ? "Cmd"  : "Ctrl" ; 
190190
191-     var  cmOptions  =  { 
192-       extraKeys : CodeMirror . normalizeKeyMap ( { 
191+     defaultKeyMap  =  CodeMirror . normalizeKeyMap ( { 
193192        "Shift-Enter" : function ( cm )  {  runFun ( cm . getValue ( ) ) ;  } , 
194193        "Shift-Ctrl-Enter" : function ( cm )  {  runFun ( cm . getValue ( ) ) ;  } , 
195194        "Tab" : "indentAuto" , 
196195        "Ctrl-I" : reindentAllLines , 
197-         "Esc Left" : "goBackwardSexp" , 
198196        "Alt-Left" : "goBackwardSexp" , 
199-         "Esc Right" : "goForwardSexp" , 
200197        "Alt-Right" : "goForwardSexp" , 
201198        "Ctrl-Left" : "goBackwardToken" , 
202199        "Ctrl-Right" : "goForwardToken" , 
203200        [ `${ modifier }  ] : "toggleComment" , 
204-       } ) , 
201+     } ) ; 
202+     CPO . noVimKeyMap  =  CodeMirror . normalizeKeyMap ( { 
203+         "Esc Left" : "goBackwardSexp" , 
204+         "Esc Right" : "goForwardSexp" , 
205+     } ) ; 
206+ 
207+     var  cmOptions  =  { 
208+       extraKeys : defaultKeyMap , 
205209      indentUnit : 2 , 
206210      tabSize : 2 , 
207211      viewportMargin : Infinity , 
@@ -221,6 +225,8 @@ $(function() {
221225    cmOptions  =  merge ( cmOptions ,  options . cmOptions  ||  { } ) ; 
222226
223227    var  CM  =  CodeMirror . fromTextArea ( textarea [ 0 ] ,  cmOptions ) ; 
228+     // we do this separately so we can more easily add and remove it for vim mode 
229+     CM . addKeyMap ( CPO . noVimKeyMap ) ; 
224230
225231    function  firstLineIsNamespace ( )  { 
226232      const  firstline  =  CM . getLine ( 0 ) ; 
0 commit comments