Add ':' command to focus command buffer pane

This commit is contained in:
Josh Holtrop 2017-01-18 21:46:34 -05:00
parent 9d150524fb
commit 12c034fb8f
3 changed files with 21 additions and 1 deletions

View File

@ -748,4 +748,5 @@ void BufferPane::set_command_mode()
{
m_command_mode = true;
set_show_status_bar(false);
enter_insert_mode(Window::EnterInsertModeMode::START_OF_CHAR);
}

View File

@ -272,9 +272,16 @@ void Window::handle_keyval(uint32_t keyval)
if (m_focused_buffer_pane->insert_mode())
{
if (keyval == '\033')
{
if (m_focused_buffer_pane == m_command_buffer_pane)
{
change_focus(m_buffer_pane);
}
else
{
m_focused_buffer_pane->exit_insert_mode();
}
}
else if (keyval < 0xFFu)
{
m_focused_buffer_pane->insert_code_point(keyval);
@ -290,6 +297,9 @@ void Window::handle_keyval(uint32_t keyval)
case '$':
m_focused_buffer_pane->cursor_move(CursorMovement::EOL);
break;
case ':':
change_focus(m_command_buffer_pane);
break;
case 'A':
m_focused_buffer_pane->enter_insert_mode(EnterInsertModeMode::END_OF_LINE);
break;
@ -490,3 +500,11 @@ uint32_t Window::get_shifted(uint32_t keysym)
return 0u;
}
void Window::change_focus(std::shared_ptr<BufferPane> buffer_pane)
{
m_focused_buffer_pane->set_focused(false);
m_focused_buffer_pane = buffer_pane;
m_focused_buffer_pane->set_focused(true);
request_redraw();
}

View File

@ -72,6 +72,7 @@ protected:
void handle_keyval(uint32_t keyval);
uint32_t get_keyval(SDL_Keycode keysym);
uint32_t get_shifted(uint32_t keysym);
void change_focus(std::shared_ptr<BufferPane> buffer_pane);
SDL_Window * m_window;
bool m_exit_requested;