allow entering and exiting insert mode
This commit is contained in:
parent
e3f156c513
commit
4c412e10d7
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user