From c768f6dcc23775ba4e0ae2f98b0d11e92a92e7be Mon Sep 17 00:00:00 2001 From: Pascal Kuthe Date: Mon, 8 Jan 2024 01:27:21 +0100 Subject: [PATCH] update history of a newly focused view This change effectively reverts #3508 and #3633. When a view is changed we must make history commits (and ensure that the cursor is in view) for the newly focused view. Not the old view. These changes were originally introduced to fix mode switch hooks. However, the mode switch hooks have been moved elsewhere so that concern doesn't apply anymore. In particular, because modes are now editor wide and not per view and also because view switches now always reset the editor back to normal mode. --- helix-term/src/ui/editor.rs | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index c808be175e0b..ff267e42d971 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -1302,8 +1302,6 @@ impl Component for EditorView { cx.editor.status_msg = None; let mode = cx.editor.mode(); - let (view, _) = current!(cx.editor); - let focus = view.id; if let Some(on_next_key) = self.on_next_key.take() { // if there's a command waiting input, do that first @@ -1385,20 +1383,16 @@ impl Component for EditorView { return EventResult::Ignored(None); } - // if the focused view still exists and wasn't closed - if cx.editor.tree.contains(focus) { - let config = cx.editor.config(); - let mode = cx.editor.mode(); - let view = view_mut!(cx.editor, focus); - let doc = doc_mut!(cx.editor, &view.doc); + let config = cx.editor.config(); + let mode = cx.editor.mode(); + let (view, doc) = current!(cx.editor); - view.ensure_cursor_in_view(doc, config.scrolloff); + view.ensure_cursor_in_view(doc, config.scrolloff); - // Store a history state if not in insert mode. This also takes care of - // committing changes when leaving insert mode. - if mode != Mode::Insert { - doc.append_changes_to_history(view); - } + // Store a history state if not in insert mode. This also takes care of + // committing changes when leaving insert mode. + if mode != Mode::Insert { + doc.append_changes_to_history(view); } EventResult::Consumed(callback)