diff --git a/assets/js/hooks/cell_editor/live_editor.js b/assets/js/hooks/cell_editor/live_editor.js index 66d953e1e..dd171d088 100644 --- a/assets/js/hooks/cell_editor/live_editor.js +++ b/assets/js/hooks/cell_editor/live_editor.js @@ -371,16 +371,7 @@ class LiveEditor { this._initializeWidgets(); // Set the editor mode - if (settings.editor_mode == "emacs") { - this.emacsMode = new EmacsExtension(this.editor); - this.emacsMode.start(); - unregisterKey("Tab"); - } else if (settings.editor_mode == "vim") { - this.vimMode = initVimMode(this.editor); - this.vimMode.on("vim-mode-change", ({ mode: mode }) => { - this.editor.getDomNode().setAttribute("data-vim-mode", mode); - }); - } + this._setEditorMode(settings.editor_mode); } /** @@ -646,6 +637,22 @@ class LiveEditor { ); }); } + + /** + * Sets Monaco editor mode via monaco-emacs or monaco-vim packages. + */ + _setEditorMode(editorMode) { + if (editorMode == "emacs") { + this.emacsMode = new EmacsExtension(this.editor); + this.emacsMode.start(); + unregisterKey("Tab"); + } else if (editorMode == "vim") { + this.vimMode = initVimMode(this.editor); + this.vimMode.on("vim-mode-change", ({ mode: mode }) => { + this.editor.getDomNode().setAttribute("data-vim-mode", mode); + }); + } + } } function completionItemsToSuggestions(items, settings) { diff --git a/assets/js/hooks/session.js b/assets/js/hooks/session.js index 636ec341e..34b41b991 100644 --- a/assets/js/hooks/session.js +++ b/assets/js/hooks/session.js @@ -469,8 +469,8 @@ const Session = { return true; } - // Vim insert mode - if (editor.dataset.vimMode == "insert") { + // Vim insert or visual mode + if (["insert", "visual"].includes(editor.dataset.vimMode)) { return true; }