@@ -905,22 +905,26 @@ fn move_next_long_word_end(cx: &mut Context) {
905905
906906fn move_para_impl<F>(cx: &mut Context, move_fn: F)
907907where
908− F: Fn(RopeSlice, Range, usize, Movement) -> Range,
908+ F: Fn(RopeSlice, Range, usize, Movement) -> Range + 'static,
909909{
910910 let count = cx.count();
911− let (view, doc) = current!(cx.editor);
912− let text = doc.text().slice(..);
913− let behavior = if doc.mode == Mode::Select {
914− Movement::Extend
915− } else {
916− Movement::Move
917− };
911+ let motion = move |editor: &mut Editor| {
912+ let (view, doc) = current!(editor);
913+ let text = doc.text().slice(..);
914+ let behavior = if doc.mode == Mode::Select {
915+ Movement::Extend
916+ } else {
917+ Movement::Move
918+ };
918919
919− let selection = doc
920− .selection(view.id)
921− .clone()
922− .transform(|range| move_fn(text, range, count, behavior));
923− doc.set_selection(view.id, selection);
920+ let selection = doc
921+ .selection(view.id)
922+ .clone()
923+ .transform(|range| move_fn(text, range, count, behavior));
924+ doc.set_selection(view.id, selection);
925+ };
926+ motion(cx.editor);
927+ cx.editor.last_motion = Some(Motion(Box::new(motion)));
924928}
925929
926930fn move_prev_paragraph(cx: &mut Context) {