@@ -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