@@ -158,6 +158,9 @@ impl Command {
158158 move_next_word_start,
159159 move_prev_word_start,
160160 move_next_word_end,
161+ move_next_long_word_start,
162+ move_prev_long_word_start,
163+ move_next_long_word_end,
161164 move_file_start,
162165 move_file_end,
163166 extend_next_word_start,
@@ -434,6 +437,42 @@ fn move_next_word_end(cx: &mut Context) {
434437 doc.set_selection(view.id, selection);
435438}
436439
440+fn move_next_long_word_start(cx: &mut Context) {
441+ let count = cx.count();
442+ let (view, doc) = current!(cx.editor);
443+ let text = doc.text().slice(..);
444+
445+ let selection = doc
446+ .selection(view.id)
447+ .transform(|range| movement::move_next_long_word_start(text, range, count));
448+
449+ doc.set_selection(view.id, selection);
450+}
451+
452+fn move_prev_long_word_start(cx: &mut Context) {
453+ let count = cx.count();
454+ let (view, doc) = current!(cx.editor);
455+ let text = doc.text().slice(..);
456+
457+ let selection = doc
458+ .selection(view.id)
459+ .transform(|range| movement::move_prev_long_word_start(text, range, count));
460+
461+ doc.set_selection(view.id, selection);
462+}
463+
464+fn move_next_long_word_end(cx: &mut Context) {
465+ let count = cx.count();
466+ let (view, doc) = current!(cx.editor);
467+ let text = doc.text().slice(..);
468+
469+ let selection = doc
470+ .selection(view.id)
471+ .transform(|range| movement::move_next_long_word_end(text, range, count));
472+
473+ doc.set_selection(view.id, selection);
474+}
475+
437476fn move_file_start(cx: &mut Context) {
438477 push_jump(cx.editor);
439478 let (view, doc) = current!(cx.editor);