BufferView: cursor_move() takes a character argument
This commit is contained in:
1 parent
739edfd6f7
commit
2d559db7d0
6 files changed
+91
-91
No files matched your search
@@ -101,7 +101,7 @@ void BufferView::update()
|
||||
}
|
||||
}
|
||||
|
||||
bool BufferView::cursor_move(CursorMovement which, bool allow_eol)
|
||||
bool BufferView::cursor_move(CursorMovement which, uint32_t c, bool allow_eol)
|
||||
{
|
||||
bool moved = false;
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
{
|
||||
return BufferLineWalker(m_buffer, start_of_line, m_width, m_character_width_determiner);
|
||||
}
|
||||
bool cursor_move(CursorMovement which, bool allow_eol);
|
||||
bool cursor_move(CursorMovement which, uint32_t c, bool allow_eol);
|
||||
int cursor_screen_row() const { return m_cursor_screen_row; }
|
||||
int cursor_screen_column() const { return m_cursor_screen_column; }
|
||||
int cursor_virtual_column() const { return m_cursor_virtual_column; }
|
||||
|
||||
@@ -356,9 +356,9 @@ size_t BufferPane::display_column() const
|
||||
return m_buffer_view->cursor_virtual_column() + 1u;
|
||||
}
|
||||
|
||||
void BufferPane::cursor_move(BufferPane::CursorMovement which)
|
||||
void BufferPane::cursor_move(BufferPane::CursorMovement which, uint32_t c)
|
||||
{
|
||||
bool moved = m_buffer_view->cursor_move(which, insert_mode());
|
||||
bool moved = m_buffer_view->cursor_move(which, c, insert_mode());
|
||||
if (moved)
|
||||
{
|
||||
m_buffer_view->update();
|
||||
@@ -396,7 +396,7 @@ void BufferPane::enter_insert_mode(Window::EnterInsertModeMode which)
|
||||
m_buffer->enter_insert_mode();
|
||||
m_buffer->insert_code_point(*m_iterator, '\n');
|
||||
m_buffer->exit_insert_mode();
|
||||
cursor_move(CursorMovement::UP);
|
||||
cursor_move(CursorMovement::UP, 0u);
|
||||
enter_insert_mode(Window::EnterInsertModeMode::START_OF_CHAR);
|
||||
break;
|
||||
case Window::EnterInsertModeMode::NEW_LINE_AFTER:
|
||||
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
BufferPane(Window * window, std::shared_ptr<Buffer> buffer);
|
||||
void resize(int width, int height) override;
|
||||
void draw();
|
||||
void cursor_move(CursorMovement which);
|
||||
void cursor_move(CursorMovement which, uint32_t c);
|
||||
void enter_insert_mode(Window::EnterInsertModeMode which);
|
||||
void insert_code_point(uint32_t code_point);
|
||||
void exit_insert_mode();
|
||||
|
||||
+14
-14
@@ -255,22 +255,22 @@ void Window::handle_keypress(uint32_t keyval)
|
||||
switch (ctrl_keyval)
|
||||
{
|
||||
case JES_KEY_HOME:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::SOL);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::SOL, 0u);
|
||||
break;
|
||||
case JES_KEY_END:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::EOL);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::EOL, 0u);
|
||||
break;
|
||||
case JES_KEY_RIGHT:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::RIGHT);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::RIGHT, 0u);
|
||||
break;
|
||||
case JES_KEY_LEFT:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LEFT);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LEFT, 0u);
|
||||
break;
|
||||
case JES_KEY_DOWN:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::DOWN);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::DOWN, 0u);
|
||||
break;
|
||||
case JES_KEY_UP:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::UP);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::UP, 0u);
|
||||
break;
|
||||
case JES_KEY_PAGE_UP:
|
||||
m_focused_buffer_pane->scroll_window_up(ScrollMode::WHOLE_SCREEN);
|
||||
@@ -381,28 +381,28 @@ void Window::execute_command(const Command & command)
|
||||
case Command::CHANGE_CHAR:
|
||||
break;
|
||||
case Command::GO_TO_LINE:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::FIRST_LINE);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::FIRST_LINE, 0u);
|
||||
break;
|
||||
case Command::GO_TO_LAST_LINE:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LAST_LINE);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LAST_LINE, 0u);
|
||||
break;
|
||||
case Command::GO_LEFT:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LEFT);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::LEFT, 0u);
|
||||
break;
|
||||
case Command::GO_DOWN:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::DOWN);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::DOWN, 0u);
|
||||
break;
|
||||
case Command::GO_UP:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::UP);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::UP, 0u);
|
||||
break;
|
||||
case Command::GO_RIGHT:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::RIGHT);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::RIGHT, 0u);
|
||||
break;
|
||||
case Command::GO_START_OF_LINE:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::SOL);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::SOL, 0u);
|
||||
break;
|
||||
case Command::GO_END_OF_LINE:
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::EOL);
|
||||
m_focused_buffer_pane->cursor_move(BufferPane::CursorMovement::EOL, 0u);
|
||||
break;
|
||||
case Command::NEXT:
|
||||
break;
|
||||
|
||||
Reference in new issue
Block a user