From 2a07fb040dfc5876ab66b270b60776e34f979325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Buga?= Date: Thu, 15 Sep 2022 22:31:16 +0200 Subject: [PATCH] Don't restore non-insert cursor mode if not in modal editing mode --- lapce-core/src/editor.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lapce-core/src/editor.rs b/lapce-core/src/editor.rs index 46afdc6f..4d1df718 100644 --- a/lapce-core/src/editor.rs +++ b/lapce-core/src/editor.rs @@ -820,11 +820,15 @@ pub fn do_edit( Undo => { if let Some((delta, inval_lines, cursor_mode)) = buffer.do_undo() { if let Some(cursor_mode) = cursor_mode { - if modal { - cursor.mode = CursorMode::Normal(cursor_mode.offset()); + cursor.mode = if modal { + CursorMode::Normal(cursor_mode.offset()) + } else if cursor.is_insert() { + cursor_mode } else { - cursor.mode = cursor_mode; - } + CursorMode::Insert(Selection::caret( + cursor_mode.offset(), + )) + }; } else if let Some(new_cursor) = get_first_selection_after(cursor, buffer, &delta) { @@ -840,11 +844,15 @@ pub fn do_edit( Redo => { if let Some((delta, inval_lines, cursor_mode)) = buffer.do_redo() { if let Some(cursor_mode) = cursor_mode { - if modal { - cursor.mode = CursorMode::Normal(cursor_mode.offset()); + cursor.mode = if modal { + CursorMode::Normal(cursor_mode.offset()) + } else if cursor.is_insert() { + cursor_mode } else { - cursor.mode = cursor_mode; - } + CursorMode::Insert(Selection::caret( + cursor_mode.offset(), + )) + }; } else if let Some(new_cursor) = get_first_selection_after(cursor, buffer, &delta) {