diff --git a/src/gui/BufferPane.cc b/src/gui/BufferPane.cc index 7e59c59..37bcab9 100644 --- a/src/gui/BufferPane.cc +++ b/src/gui/BufferPane.cc @@ -342,6 +342,9 @@ void BufferPane::handle_key(uint32_t keyval) case 'I': enter_insert_mode(EnterInsertModeMode::START_OF_LINE); break; + case 'O': + enter_insert_mode(EnterInsertModeMode::NEW_LINE_BEFORE); + break; case 'a': enter_insert_mode(EnterInsertModeMode::END_OF_CHAR); break; @@ -363,6 +366,9 @@ void BufferPane::handle_key(uint32_t keyval) case 'l': cursor_move(CursorMovement::RIGHT); break; + case 'o': + enter_insert_mode(EnterInsertModeMode::NEW_LINE_AFTER); + break; case 'x': if (**m_iterator != '\n') { @@ -512,10 +518,17 @@ void BufferPane::enter_insert_mode(EnterInsertModeMode which) enter_insert_mode(EnterInsertModeMode::END_OF_CHAR); break; case EnterInsertModeMode::NEW_LINE_BEFORE: - /* TODO */ + m_iterator->go_start_of_line(); + m_buffer->enter_insert_mode(*m_iterator); + m_buffer->insert_code_point('\n'); + m_buffer->exit_insert_mode(); + cursor_move(CursorMovement::UP); + enter_insert_mode(EnterInsertModeMode::START_OF_CHAR); break; case EnterInsertModeMode::NEW_LINE_AFTER: - /* TODO */ + m_iterator->go_end_of_line(true); + m_buffer->enter_insert_mode(*m_iterator); + m_buffer->insert_code_point('\n'); break; }