add 'o' and 'O' commands

This commit is contained in:
Josh Holtrop 2016-12-28 14:48:17 -05:00
parent dbe5843d77
commit 599ccdb6db

View File

@ -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;
}