disable vim mode in non full editors

Kay Simmons created

Change summary

crates/vim/src/editor_events.rs | 4 +---
crates/vim/src/vim.rs           | 4 ++--
2 files changed, 3 insertions(+), 5 deletions(-)

Detailed changes

crates/vim/src/editor_events.rs 🔗

@@ -37,9 +37,7 @@ fn editor_focused(EditorFocused(editor): &EditorFocused, cx: &mut MutableAppCont
         let editor_mode = editor.mode();
         let newest_selection_empty = editor.selections.newest::<usize>(cx).is_empty();
 
-        if editor_mode != EditorMode::Full {
-            vim.switch_mode(Mode::Insert, true, cx);
-        } else if !newest_selection_empty {
+        if editor_mode == EditorMode::Full && !newest_selection_empty {
             vim.switch_mode(Mode::Visual { line: false }, true, cx);
         }
     });

crates/vim/src/vim.rs 🔗

@@ -12,7 +12,7 @@ mod visual;
 
 use collections::HashMap;
 use command_palette::CommandPaletteFilter;
-use editor::{Bias, Cancel, Editor};
+use editor::{Bias, Cancel, Editor, EditorMode};
 use gpui::{
     impl_actions,
     keymap_matcher::{KeyPressed, Keystroke},
@@ -267,7 +267,7 @@ impl Vim {
         for editor in self.editors.values() {
             if let Some(editor) = editor.upgrade(cx) {
                 editor.update(cx, |editor, cx| {
-                    if self.enabled {
+                    if self.enabled && editor.mode() == EditorMode::Full {
                         editor.set_cursor_shape(cursor_shape, cx);
                         editor.set_clip_at_line_ends(state.clip_at_line_end(), cx);
                         editor.set_input_enabled(!state.vim_controlled());