Make Shift+Backspace erase a character in insert mode

Terminals that support CSI u escape codes (like iTerm2, Kitty and foot)
allow us to map <s-backspace> independently of <backspace>.

Users expect that <s-backspace> does the same as <backspace>,
especially when typing ALL_CAPS. Make it so.

The first version of 0cf719103 (Make Shift+Space insert a space in
insert mode, 2022-02-09) did that already but I later dropped it
because I wasn't sure if it's right.
This commit is contained in:
Johannes Altmanninger 2022-02-09 12:43:36 +01:00
parent ce75867e44
commit dbd8cf2145

View File

@ -469,7 +469,7 @@ public:
m_cursor_pos = 0; m_cursor_pos = 0;
else if (key == Key::End or key == ctrl('e')) else if (key == Key::End or key == ctrl('e'))
m_cursor_pos = m_line.char_length(); m_cursor_pos = m_line.char_length();
else if (key == Key::Backspace or key == ctrl('h')) else if (key == Key::Backspace or key == shift(Key::Backspace) or key == ctrl('h'))
{ {
if (m_cursor_pos != 0) if (m_cursor_pos != 0)
{ {
@ -810,7 +810,7 @@ public:
return; return;
} }
else if (key == Key::Escape or key == ctrl('c') or else if (key == Key::Escape or key == ctrl('c') or
((key == Key::Backspace or key == ctrl('h')) and line.empty())) ((key == Key::Backspace or key == shift(Key::Backspace) or key == ctrl('h')) and line.empty()))
{ {
history_push(line); history_push(line);
context().print_status(DisplayLine{}); context().print_status(DisplayLine{});
@ -1263,7 +1263,7 @@ public:
m_completer.reset(); m_completer.reset();
pop_mode(); pop_mode();
} }
else if (key == Key::Backspace) else if (key == Key::Backspace or key == shift(Key::Backspace))
{ {
Vector<Selection> sels; Vector<Selection> sels;
for (auto& sel : context().selections()) for (auto& sel : context().selections())