allow entering and exiting insert mode

This commit is contained in:
Josh Holtrop 2016-12-24 15:40:53 -05:00
parent e3f156c513
commit 4c412e10d7

View File

@ -177,7 +177,7 @@ void BufferPane::draw()
}
else
{
draw_cursor(col_x(0), row_y(0), false);
draw_cursor(col_x(0), row_y(0), m_buffer->insert_mode());
}
}
@ -194,7 +194,7 @@ int BufferPane::draw_buffer_line(int screen_row, const Buffer::Iterator & start_
if (i == *m_iterator)
{
/* TODO: highlight multi-column characters */
draw_cursor(x, y, false);
draw_cursor(x, y, m_buffer->insert_mode());
}
if ((code_point == '\n') || (code_point == 0xFFFFFFFFu))
{
@ -253,21 +253,20 @@ void BufferPane::draw_cursor(int x, int y, bool insert_mode)
void BufferPane::handle_key(uint32_t keyval)
{
#if 0
if (m_buffer->piece_table->in_insert_mode())
if (m_buffer->insert_mode())
{
if (keyval == '\033')
{
m_buffer->piece_table->end_insert();
m_buffer->exit_insert_mode();
/* TODO: move cursor to last character in row if it was on EOL */
}
else if (keyval <= 0xFFu)
{
m_buffer->piece_table->insert_code_point(keyval);
m_buffer->insert_code_point(keyval);
}
redraw();
m_window->request_redraw();
}
else
#endif
{
switch (keyval)
{
@ -280,6 +279,10 @@ void BufferPane::handle_key(uint32_t keyval)
case 'h':
cursor_move(CursorMovement::LEFT);
break;
case 'i':
m_buffer->enter_insert_mode(*m_iterator);
m_window->request_redraw();
break;
case 'j':
cursor_move(CursorMovement::DOWN);
break;
@ -303,7 +306,7 @@ void BufferPane::cursor_move(CursorMovement which)
moved = m_iterator->go_left_in_line();
break;
case CursorMovement::RIGHT:
moved = m_iterator->go_right_in_line(false);
moved = m_iterator->go_right_in_line(m_buffer->insert_mode());
break;
case CursorMovement::UP:
moved = m_iterator->go_previous_line();
@ -315,7 +318,7 @@ void BufferPane::cursor_move(CursorMovement which)
moved = m_iterator->go_start_of_line();
break;
case CursorMovement::EOL:
moved = m_iterator->go_end_of_line(false);
moved = m_iterator->go_end_of_line(m_buffer->insert_mode());
break;
}
if (moved)