@@ -1337,7 +1337,9 @@ impl Component for EditorView {
1337 cx.editor.status_msg = None;
1337 cx.editor.status_msg = None;
1339 let mode = cx.editor.mode();
1339 let mode = cx.editor.mode();
1340− let (view, _) = current!(cx.editor);
1340+ let (view, doc) = current!(cx.editor);
1341+ let original_doc_id = doc.id();
1342+ let original_doc_revision = doc.get_current_revision();
1341 let focus = view.id;
1343 let focus = view.id;
1343 if let Some(on_next_key) = self.on_next_key.take() {
1345 if let Some(on_next_key) = self.on_next_key.take() {
@@ -1413,13 +1415,31 @@ impl Component for EditorView {
1413 let view = view_mut!(cx.editor, focus);
1415 let view = view_mut!(cx.editor, focus);
1414 let doc = doc_mut!(cx.editor, &view.doc);
1416 let doc = doc_mut!(cx.editor, &view.doc);
1416− view.ensure_cursor_in_view(doc, config.scrolloff);
1418 // Store a history state if not in insert mode. This also takes care of
1418 // Store a history state if not in insert mode. This also takes care of
1419 // committing changes when leaving insert mode.
1419 // committing changes when leaving insert mode.
1420 if mode != Mode::Insert {
1420 if mode != Mode::Insert {
1421 doc.append_changes_to_history(view.id);
1421 doc.append_changes_to_history(view.id);
1424+ // If the current document has been changed, apply the changes to all views.
1425+ // This ensures that selections in jumplists follow changes.
1426+ if doc.id() == original_doc_id
1427+ && doc.get_current_revision() > original_doc_revision
1429+ if let Some(transaction) =
1430+ doc.history.get_mut().changes_since(original_doc_revision)
1432+ let doc = doc!(cx.editor, &original_doc_id);
1433+ for (view, _focused) in cx.editor.tree.views_mut() {
1434+ view.apply(&transaction, doc);
1439+ let view = view_mut!(cx.editor, focus);
1440+ let doc = doc_mut!(cx.editor, &view.doc);
1442+ view.ensure_cursor_in_view(doc, config.scrolloff);
1425 EventResult::Consumed(callback)
1445 EventResult::Consumed(callback)