diff --git a/Userland/Libraries/LibLine/Editor.cpp b/Userland/Libraries/LibLine/Editor.cpp index 5b8745ba31..b84a5217ac 100644 --- a/Userland/Libraries/LibLine/Editor.cpp +++ b/Userland/Libraries/LibLine/Editor.cpp @@ -172,6 +172,7 @@ void Editor::set_default_keybinds() // ^[^H: alt-backspace: backward delete word register_key_input_callback(Key { '\b', Key::Alt }, EDITOR_INTERNAL_FUNCTION(erase_alnum_word_backwards)); register_key_input_callback(Key { 'd', Key::Alt }, EDITOR_INTERNAL_FUNCTION(erase_alnum_word_forwards)); + register_key_input_callback(Key { '\\', Key::Alt }, EDITOR_INTERNAL_FUNCTION(erase_spaces)); register_key_input_callback(Key { 'c', Key::Alt }, EDITOR_INTERNAL_FUNCTION(capitalize_word)); register_key_input_callback(Key { 'l', Key::Alt }, EDITOR_INTERNAL_FUNCTION(lowercase_word)); register_key_input_callback(Key { 'u', Key::Alt }, EDITOR_INTERNAL_FUNCTION(uppercase_word)); diff --git a/Userland/Libraries/LibLine/Editor.h b/Userland/Libraries/LibLine/Editor.h index 7386d8e10e..ab5bb82f3e 100644 --- a/Userland/Libraries/LibLine/Editor.h +++ b/Userland/Libraries/LibLine/Editor.h @@ -127,6 +127,7 @@ struct Configuration { M(insert_last_erased) \ M(erase_alnum_word_backwards) \ M(erase_alnum_word_forwards) \ + M(erase_spaces) \ M(capitalize_word) \ M(lowercase_word) \ M(uppercase_word) \ diff --git a/Userland/Libraries/LibLine/InternalFunctions.cpp b/Userland/Libraries/LibLine/InternalFunctions.cpp index bada78017b..cea4662968 100644 --- a/Userland/Libraries/LibLine/InternalFunctions.cpp +++ b/Userland/Libraries/LibLine/InternalFunctions.cpp @@ -579,6 +579,23 @@ void Editor::erase_alnum_word_forwards() } } +void Editor::erase_spaces() +{ + while (m_cursor < m_buffer.size()) { + if (is_ascii_space(m_buffer[m_cursor])) + erase_character_forwards(); + else + break; + } + + while (m_cursor > 0) { + if (is_ascii_space(m_buffer[m_cursor - 1])) + erase_character_backwards(); + else + break; + } +} + void Editor::case_change_word(Editor::CaseChangeOp change_op) { // A word here is contiguous alnums. `foo=bar baz` is three words.