Add <a-h>, <a-l>, <a-x> and <a-d> bindings to line editor

<a-h> : move cursor left
<a-l> : move cursor right
<a-x> : delete char before cursor
<a-d> : delete char under cursor
This commit is contained in:
Maxime Coste 2015-02-13 19:13:44 +00:00
parent 224f73d72a
commit 8c843f5bea

View File

@ -242,12 +242,12 @@ class LineEditor
public: public:
void handle_key(Key key) void handle_key(Key key)
{ {
if (key == Key::Left) if (key == Key::Left or key == alt('h'))
{ {
if (m_cursor_pos > 0) if (m_cursor_pos > 0)
--m_cursor_pos; --m_cursor_pos;
} }
else if (key == Key::Right) else if (key == Key::Right or key == alt('l'))
{ {
if (m_cursor_pos < m_line.char_length()) if (m_cursor_pos < m_line.char_length())
++m_cursor_pos; ++m_cursor_pos;
@ -256,7 +256,7 @@ public:
m_cursor_pos = 0; m_cursor_pos = 0;
else if (key == Key::End) else if (key == Key::End)
m_cursor_pos = m_line.char_length(); m_cursor_pos = m_line.char_length();
else if (key == Key::Backspace) else if (key == Key::Backspace or key == alt('x'))
{ {
if (m_cursor_pos != 0) if (m_cursor_pos != 0)
{ {
@ -266,7 +266,7 @@ public:
--m_cursor_pos; --m_cursor_pos;
} }
} }
else if (key == Key::Delete) else if (key == Key::Delete or key == alt('d'))
{ {
if (m_cursor_pos != m_line.char_length()) if (m_cursor_pos != m_line.char_length())
m_line = m_line.substr(0, m_cursor_pos) m_line = m_line.substr(0, m_cursor_pos)