diff options
author | A-Walrus | 2022-09-01 16:59:39 +0000 |
---|---|---|
committer | GitHub | 2022-09-01 16:59:39 +0000 |
commit | 45dbcb67832e31ca5eea936628f34f5dc26c4381 (patch) | |
tree | f79b049f772f2645537b4c4388cfa3cf2049c158 /helix-term | |
parent | ec28b2b5ccf162e9df550e59a28e043d51796621 (diff) |
Fix closing buffer with custom keymap (#3633)
* Fix closing buffer with custom keymap
* Add comment explaining if
Diffstat (limited to 'helix-term')
-rw-r--r-- | helix-term/src/ui/editor.rs | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index 539e164c..fa437a7e 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -1263,17 +1263,20 @@ impl Component for EditorView { if cx.editor.should_close() { return EventResult::Ignored(None); } - let config = cx.editor.config(); - let mode = cx.editor.mode(); - let view = cx.editor.tree.get_mut(focus); - let doc = cx.editor.documents.get_mut(&view.doc).unwrap(); - - 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.id); + // 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 = cx.editor.tree.get_mut(focus); + let doc = cx.editor.documents.get_mut(&view.doc).unwrap(); + + 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.id); + } } EventResult::Consumed(callback) |