@@ -905,22 +905,26 @@ fn move_next_long_word_end(cx: &mut Context) {
906fn move_para_impl<F>(cx: &mut Context, move_fn: F)
906fn move_para_impl<F>(cx: &mut Context, move_fn: F)
908− F: Fn(RopeSlice, Range, usize, Movement) -> Range,
908+ F: Fn(RopeSlice, Range, usize, Movement) -> Range + 'static,
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
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);
927+ cx.editor.last_motion = Some(Motion(Box::new(motion)));
926fn move_prev_paragraph(cx: &mut Context) {
930fn move_prev_paragraph(cx: &mut Context) {