LibLine: Add internal function to erase consecutive spaces under cursor

This commit is contained in:
ronak69 2024-01-13 18:24:12 +00:00 committed by Ali Mohammad Pur
parent 7f2582fca9
commit cb02d52ac9
Notes: sideshowbarker 2024-07-17 03:03:44 +09:00
3 changed files with 19 additions and 0 deletions

View file

@ -172,6 +172,7 @@ void Editor::set_default_keybinds()
// ^[^H: alt-backspace: backward delete word // ^[^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 { '\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 { '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 { '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 { 'l', Key::Alt }, EDITOR_INTERNAL_FUNCTION(lowercase_word));
register_key_input_callback(Key { 'u', Key::Alt }, EDITOR_INTERNAL_FUNCTION(uppercase_word)); register_key_input_callback(Key { 'u', Key::Alt }, EDITOR_INTERNAL_FUNCTION(uppercase_word));

View file

@ -127,6 +127,7 @@ struct Configuration {
M(insert_last_erased) \ M(insert_last_erased) \
M(erase_alnum_word_backwards) \ M(erase_alnum_word_backwards) \
M(erase_alnum_word_forwards) \ M(erase_alnum_word_forwards) \
M(erase_spaces) \
M(capitalize_word) \ M(capitalize_word) \
M(lowercase_word) \ M(lowercase_word) \
M(uppercase_word) \ M(uppercase_word) \

View file

@ -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) void Editor::case_change_word(Editor::CaseChangeOp change_op)
{ {
// A word here is contiguous alnums. `foo=bar baz` is three words. // A word here is contiguous alnums. `foo=bar baz` is three words.