diff --git a/crates/vim/src/insert.rs b/crates/vim/src/insert.rs index 98d542dbc4d3651b5307959fba01bf7320983cc9..d5323f31dce38dad29831cbbfe551b6f30760ed2 100644 --- a/crates/vim/src/insert.rs +++ b/crates/vim/src/insert.rs @@ -50,17 +50,23 @@ impl Vim { if count <= 1 || Vim::globals(cx).dot_replaying { self.create_mark("^".into(), window, cx); + if HelixModeSetting::get_global(cx).0 { + self.update_editor(cx, |_, editor, cx| { + editor.dismiss_menus_and_popups(false, window, cx); + }); + self.switch_mode(Mode::HelixNormal, false, window, cx); + return; + } + self.update_editor(cx, |_, editor, cx| { editor.dismiss_menus_and_popups(false, window, cx); - if !HelixModeSetting::get_global(cx).0 { - editor.change_selections(Default::default(), window, cx, |s| { - s.move_cursors_with(|map, mut cursor, _| { - *cursor.column_mut() = cursor.column().saturating_sub(1); - (map.clip_point(cursor, Bias::Left), SelectionGoal::None) - }); + editor.change_selections(Default::default(), window, cx, |s| { + s.move_cursors_with(|map, mut cursor, _| { + *cursor.column_mut() = cursor.column().saturating_sub(1); + (map.clip_point(cursor, Bias::Left), SelectionGoal::None) }); - } + }); }); self.switch_mode(Mode::Normal, false, window, cx);