on master help sign in
Fix jumplist jumps, keep the selection on vsplit.
commited827e993f0a0ef8d48eb54cf314facbda15a2ba authorBlaž Hrastnik <blaz@mxxn.io> dateSat 8 May 2021, 18:25 (5 years ago) parentcaf4349
1 file changed+13−2
helix-term/src/commands.rs+13−2
helix-term/src/commands.rs+13−2
@@ -2167,6 +2167,7 @@ pub fn jump_forward(cx: &mut Context) {
21672167 if let Some((id, selection)) = view.jumps.forward(count) {
21682168 view.doc = *id;
21692169 let selection = selection.clone();
2170+ let (view, doc) = cx.current(); // refetch doc
21702171 doc.set_selection(view.id, selection);
21712172
21722173 align_view(doc, view, Align::Center);
@@ -2179,7 +2180,9 @@ pub fn jump_backward(cx: &mut Context) {
21792180
21802181 if let Some((id, selection)) = view.jumps.backward(count) {
21812182 view.doc = *id;
2182− doc.set_selection(view.id, selection.clone());
2183+ let selection = selection.clone();
2184+ let (view, doc) = cx.current(); // refetch doc
2185+ doc.set_selection(view.id, selection);
21832186
21842187 align_view(doc, view, Align::Center);
21852188 };
@@ -2189,9 +2192,17 @@ pub fn jump_backward(cx: &mut Context) {
21892192
21902193pub fn vsplit(cx: &mut Context) {
21912194 use helix_view::editor::Action;
2192− let id = cx.doc().id();
2195+ let (view, doc) = cx.current();
2196+ let id = doc.id();
2197+ let selection = doc.selection(view.id).clone();
2198+ let first_line = view.first_line;
21932199
21942200 cx.editor.switch(id, Action::VerticalSplit);
2201+
2202+ // match the selection in the previous view
2203+ let (view, doc) = cx.current();
2204+ view.first_line = first_line;
2205+ doc.set_selection(view.id, selection);
21952206}
21962207
21972208pub fn space_mode(cx: &mut Context) {