allow entering and exiting insert mode
This commit is contained in:
parent
e3f156c513
commit
4c412e10d7
@ -177,7 +177,7 @@ void BufferPane::draw()
|
|||||||
}
|
}
|
||||||
else
|
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)
|
if (i == *m_iterator)
|
||||||
{
|
{
|
||||||
/* TODO: highlight multi-column characters */
|
/* 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))
|
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)
|
void BufferPane::handle_key(uint32_t keyval)
|
||||||
{
|
{
|
||||||
#if 0
|
if (m_buffer->insert_mode())
|
||||||
if (m_buffer->piece_table->in_insert_mode())
|
|
||||||
{
|
{
|
||||||
if (keyval == '\033')
|
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)
|
else if (keyval <= 0xFFu)
|
||||||
{
|
{
|
||||||
m_buffer->piece_table->insert_code_point(keyval);
|
m_buffer->insert_code_point(keyval);
|
||||||
}
|
}
|
||||||
redraw();
|
m_window->request_redraw();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
switch (keyval)
|
switch (keyval)
|
||||||
{
|
{
|
||||||
@ -280,6 +279,10 @@ void BufferPane::handle_key(uint32_t keyval)
|
|||||||
case 'h':
|
case 'h':
|
||||||
cursor_move(CursorMovement::LEFT);
|
cursor_move(CursorMovement::LEFT);
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
m_buffer->enter_insert_mode(*m_iterator);
|
||||||
|
m_window->request_redraw();
|
||||||
|
break;
|
||||||
case 'j':
|
case 'j':
|
||||||
cursor_move(CursorMovement::DOWN);
|
cursor_move(CursorMovement::DOWN);
|
||||||
break;
|
break;
|
||||||
@ -303,7 +306,7 @@ void BufferPane::cursor_move(CursorMovement which)
|
|||||||
moved = m_iterator->go_left_in_line();
|
moved = m_iterator->go_left_in_line();
|
||||||
break;
|
break;
|
||||||
case CursorMovement::RIGHT:
|
case CursorMovement::RIGHT:
|
||||||
moved = m_iterator->go_right_in_line(false);
|
moved = m_iterator->go_right_in_line(m_buffer->insert_mode());
|
||||||
break;
|
break;
|
||||||
case CursorMovement::UP:
|
case CursorMovement::UP:
|
||||||
moved = m_iterator->go_previous_line();
|
moved = m_iterator->go_previous_line();
|
||||||
@ -315,7 +318,7 @@ void BufferPane::cursor_move(CursorMovement which)
|
|||||||
moved = m_iterator->go_start_of_line();
|
moved = m_iterator->go_start_of_line();
|
||||||
break;
|
break;
|
||||||
case CursorMovement::EOL:
|
case CursorMovement::EOL:
|
||||||
moved = m_iterator->go_end_of_line(false);
|
moved = m_iterator->go_end_of_line(m_buffer->insert_mode());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (moved)
|
if (moved)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user