From 599ccdb6db7de896726ea3b4a2f514409b441735 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 28 Dec 2016 14:48:17 -0500 Subject: [PATCH] add 'o' and 'O' commands --- src/gui/BufferPane.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) 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; }