on master help sign in
Refactor {move,extend}_char_* commands
commitea2b4c687d4ee360cc8cbdbd6cf1c1cb2728a23d authorGokul Soumya <gokulps15@gmail.com> dateSat 4 Sep 2021, 20:16 (5 years ago) parent07fe4a6
1 file changed+32−71
helix-term/src/commands.rs+32−71
helix-term/src/commands.rs+32−71
@@ -358,48 +358,53 @@ impl PartialEq for Command {
358358 }
359359}
360360
361−fn move_char_left(cx: &mut Context) {
361+fn move_impl<F>(cx: &mut Context, move_fn: F, dir: Direction, behaviour: Movement)
362+where
363+ F: Fn(RopeSlice, Range, Direction, usize, Movement) -> Range,
364+{
362365 let count = cx.count();
363366 let (view, doc) = current!(cx.editor);
364367 let text = doc.text().slice(..);
365368
366− let selection = doc.selection(view.id).clone().transform(|range| {
367− movement::move_horizontally(text, range, Direction::Backward, count, Movement::Move)
368− });
369+ let selection = doc
370+ .selection(view.id)
371+ .clone()
372+ .transform(|range| move_fn(text, range, dir, count, behaviour));
369373 doc.set_selection(view.id, selection);
370374}
371375
372−fn move_char_right(cx: &mut Context) {
373− let count = cx.count();
374− let (view, doc) = current!(cx.editor);
375− let text = doc.text().slice(..);
376+use helix_core::movement::{move_horizontally, move_vertically};
376377
377− let selection = doc.selection(view.id).clone().transform(|range| {
378− movement::move_horizontally(text, range, Direction::Forward, count, Movement::Move)
379− });
380− doc.set_selection(view.id, selection);
378+fn move_char_left(cx: &mut Context) {
379+ move_impl(cx, move_horizontally, Direction::Backward, Movement::Move)
381380}
382381
383−fn move_line_up(cx: &mut Context) {
384− let count = cx.count();
385− let (view, doc) = current!(cx.editor);
386− let text = doc.text().slice(..);
382+fn move_char_right(cx: &mut Context) {
383+ move_impl(cx, move_horizontally, Direction::Forward, Movement::Move)
384+}
387385
388− let selection = doc.selection(view.id).clone().transform(|range| {
389− movement::move_vertically(text, range, Direction::Backward, count, Movement::Move)
390− });
391− doc.set_selection(view.id, selection);
386+fn move_line_up(cx: &mut Context) {
387+ move_impl(cx, move_vertically, Direction::Backward, Movement::Move)
392388}
393389
394390fn move_line_down(cx: &mut Context) {
395− let count = cx.count();
396− let (view, doc) = current!(cx.editor);
397− let text = doc.text().slice(..);
391+ move_impl(cx, move_vertically, Direction::Forward, Movement::Move)
392+}
398393
399− let selection = doc.selection(view.id).clone().transform(|range| {
400− movement::move_vertically(text, range, Direction::Forward, count, Movement::Move)
401− });
402− doc.set_selection(view.id, selection);
394+fn extend_char_left(cx: &mut Context) {
395+ move_impl(cx, move_horizontally, Direction::Backward, Movement::Extend)
396+}
397+
398+fn extend_char_right(cx: &mut Context) {
399+ move_impl(cx, move_horizontally, Direction::Forward, Movement::Extend)
400+}
401+
402+fn extend_line_up(cx: &mut Context) {
403+ move_impl(cx, move_vertically, Direction::Backward, Movement::Extend)
404+}
405+
406+fn extend_line_down(cx: &mut Context) {
407+ move_impl(cx, move_vertically, Direction::Forward, Movement::Extend)
403408}
404409
405410fn goto_line_end(cx: &mut Context) {
@@ -1001,28 +1006,6 @@ fn half_page_down(cx: &mut Context) {
10011006 scroll(cx, offset, Direction::Forward);
10021007}
10031008
1004−fn extend_char_left(cx: &mut Context) {
1005− let count = cx.count();
1006− let (view, doc) = current!(cx.editor);
1007− let text = doc.text().slice(..);
1008−
1009− let selection = doc.selection(view.id).clone().transform(|range| {
1010− movement::move_horizontally(text, range, Direction::Backward, count, Movement::Extend)
1011− });
1012− doc.set_selection(view.id, selection);
1013−}
1014−
1015−fn extend_char_right(cx: &mut Context) {
1016− let count = cx.count();
1017− let (view, doc) = current!(cx.editor);
1018− let text = doc.text().slice(..);
1019−
1020− let selection = doc.selection(view.id).clone().transform(|range| {
1021− movement::move_horizontally(text, range, Direction::Forward, count, Movement::Extend)
1022− });
1023− doc.set_selection(view.id, selection);
1024−}
1025−
10261009fn copy_selection_on_line(cx: &mut Context, direction: Direction) {
10271010 let count = cx.count();
10281011 let (view, doc) = current!(cx.editor);
@@ -1093,28 +1076,6 @@ fn copy_selection_on_next_line(cx: &mut Context) {
10931076 copy_selection_on_line(cx, Direction::Forward)
10941077}
10951078
1096−fn extend_line_up(cx: &mut Context) {
1097− let count = cx.count();
1098− let (view, doc) = current!(cx.editor);
1099− let text = doc.text().slice(..);
1100−
1101− let selection = doc.selection(view.id).clone().transform(|range| {
1102− movement::move_vertically(text, range, Direction::Backward, count, Movement::Extend)
1103− });
1104− doc.set_selection(view.id, selection);
1105−}
1106−
1107−fn extend_line_down(cx: &mut Context) {
1108− let count = cx.count();
1109− let (view, doc) = current!(cx.editor);
1110− let text = doc.text().slice(..);
1111−
1112− let selection = doc.selection(view.id).clone().transform(|range| {
1113− movement::move_vertically(text, range, Direction::Forward, count, Movement::Extend)
1114− });
1115− doc.set_selection(view.id, selection);
1116−}
1117−
11181079fn select_all(cx: &mut Context) {
11191080 let (view, doc) = current!(cx.editor);
11201081