Skip to content

Commit 04d512e

Browse files
committed
refresh all views cursors
1 parent 537faed commit 04d512e

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

helix-term/src/commands/typed.rs

+20-10
Original file line numberDiff line numberDiff line change
@@ -1049,34 +1049,44 @@ fn reload_all(
10491049
view.id
10501050
};
10511051

1052-
let docs_views: Vec<(DocumentId, ViewId)> = cx
1052+
let docs_views: Vec<(DocumentId, Vec<ViewId>)> = cx
10531053
.editor
10541054
.documents_mut()
10551055
.map(|doc| {
1056-
let target_view = if doc.selections().contains_key(&view_id) {
1057-
view_id
1058-
} else if let Some(view) = doc.selections().keys().next() {
1059-
*view
1060-
} else {
1056+
let mut views: Vec<_> = doc.selections().keys().cloned().collect();
1057+
1058+
if views.is_empty() {
10611059
doc.ensure_view_init(view_id);
1062-
view_id
1060+
views = vec![view_id];
10631061
};
10641062

1065-
(doc.id(), target_view)
1063+
(doc.id(), views)
10661064
})
10671065
.collect();
10681066

1069-
for (doc_id, view_id) in docs_views {
1070-
let view = view_mut!(cx.editor, view_id);
1067+
for (doc_id, view_ids) in docs_views {
10711068
let doc = doc_mut!(cx.editor, &doc_id);
10721069

1070+
let mut view_ids = view_ids.into_iter();
1071+
1072+
// Every doc is guaranteed to have at least 1 view at this point.
1073+
let view_id = view_ids.next().unwrap();
1074+
let view = view_mut!(cx.editor, view_id);
1075+
10731076
doc.reload(view).map(|_| {
10741077
view.ensure_cursor_in_view(doc, scrolloff);
10751078
})?;
1079+
1080+
for view_id in view_ids.into_iter() {
1081+
let view = view_mut!(cx.editor, view_id);
1082+
1083+
view.ensure_cursor_in_view(doc, scrolloff);
1084+
}
10761085
}
10771086

10781087
Ok(())
10791088
}
1089+
10801090
/// Update the [`Document`] if it has been modified.
10811091
fn update(
10821092
cx: &mut compositor::Context,

0 commit comments

Comments
 (0)