on master help sign in
Add paragraph to last motion (#1956)
e7beb32Ivan Tham
helix-term/src/commands.rs+17−13
@@ -905,22 +905,26 @@ fn move_next_long_word_end(cx: &mut Context) {
905
905
906fn move_para_impl<F>(cx: &mut Context, move_fn: F)
906fn move_para_impl<F>(cx: &mut Context, move_fn: F)
907where
907where
908− F: Fn(RopeSlice, Range, usize, Movement) -> Range,
908+ F: Fn(RopeSlice, Range, usize, Movement) -> Range + 'static,
909{
909{
910 let count = cx.count();
910 let count = cx.count();
911+ let motion = move |editor: &mut Editor| {
911− let (view, doc) = current!(cx.editor);
912+ let (view, doc) = current!(editor);
912− let text = doc.text().slice(..);
913+ let text = doc.text().slice(..);
913− let behavior = if doc.mode == Mode::Select {
914+ let behavior = if doc.mode == Mode::Select {
914− Movement::Extend
915+ Movement::Extend
915− } else {
916+ } else {
916− Movement::Move
917+ Movement::Move
917− };
918+ };
918
919
919− let selection = doc
920+ let selection = doc
920− .selection(view.id)
921+ .selection(view.id)
921− .clone()
922+ .clone()
922− .transform(|range| move_fn(text, range, count, behavior));
923+ .transform(|range| move_fn(text, range, count, behavior));
923− doc.set_selection(view.id, selection);
924+ doc.set_selection(view.id, selection);
925+ };
926+ motion(cx.editor);
927+ cx.editor.last_motion = Some(Motion(Box::new(motion)));
924}
928}
925
929
926fn move_prev_paragraph(cx: &mut Context) {
930fn move_prev_paragraph(cx: &mut Context) {