diff --git a/src/gui/BufferPane.cc b/src/gui/BufferPane.cc index 87d1018..3b543bf 100644 --- a/src/gui/BufferPane.cc +++ b/src/gui/BufferPane.cc @@ -500,6 +500,36 @@ std::shared_ptr BufferPane::get_range_for_motion(const Command::U switch (motion.id) { + case Command::Motion::FORWARD_UP_TO_CHAR: + if (!end->go_forward_in_line_up_to_char(motion.following_char)) + { + return nullptr; + } + end->go_forward(); + break; + + case Command::Motion::FORWARD_ON_TO_CHAR: + if (!end->go_forward_in_line_on_to_char(motion.following_char)) + { + return nullptr; + } + end->go_forward(); + break; + + case Command::Motion::BACK_UP_TO_CHAR: + if (!start->go_backward_in_line_up_to_char(motion.following_char)) + { + return nullptr; + } + break; + + case Command::Motion::BACK_ON_TO_CHAR: + if (!start->go_backward_in_line_on_to_char(motion.following_char)) + { + return nullptr; + } + break; + case Command::Motion::THIS_LINE: start->go_start_of_line(); end->go_end_of_line(true); diff --git a/src/gui/Window.cc b/src/gui/Window.cc index 1ef5b96..76f69a0 100644 --- a/src/gui/Window.cc +++ b/src/gui/Window.cc @@ -336,6 +336,7 @@ void Window::execute_command(const Command & command) m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::BACK_ON_TO_CHAR, command.main.following_char); break; case Command::DELETE_MOTION: + m_focused_buffer_pane->delete_motion(command.motion); break; case Command::DELETE_LINE: {