Use the original document and view for mode transition hooks (#3508)
When changing focus, the lookup with `current!` may change the view and end up executing mode transition hooks on the newly focused view. We should use the same view and document to execute mode transition hooks so that switching away from a view triggers history save points.
This commit is contained in:
parent
16525349db
commit
9e24f2aa81
1 changed files with 5 additions and 2 deletions
|
@ -1157,7 +1157,8 @@ impl Component for EditorView {
|
|||
// clear status
|
||||
cx.editor.status_msg = None;
|
||||
|
||||
let doc = doc!(cx.editor);
|
||||
let (view, doc) = current!(cx.editor);
|
||||
let focus = view.id;
|
||||
let mode = doc.mode();
|
||||
|
||||
if let Some(on_next_key) = self.on_next_key.take() {
|
||||
|
@ -1221,7 +1222,9 @@ impl Component for EditorView {
|
|||
return EventResult::Ignored(None);
|
||||
}
|
||||
let config = cx.editor.config();
|
||||
let (view, doc) = current!(cx.editor);
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue