1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 18:18:12 +00:00

LibGUI: Implement case inversion in Vim emulation

When in visual mode with text selected, on Key_Tilde press, uppercase
characters convert to lowercase and lowercase ones to uppercase.
This commit is contained in:
huttongrabiel 2022-05-18 22:34:23 -07:00 committed by Linus Groh
parent 8ffa860bc3
commit 2cfbb9a0e8
2 changed files with 9 additions and 1 deletions

View file

@ -1149,6 +1149,10 @@ bool VimEditingEngine::on_key_in_visual_mode(KeyEvent const& event)
casefold_selection(Casing::Uppercase);
switch_to_normal_mode();
return true;
case (KeyCode::Key_Tilde):
casefold_selection(Casing::Invertcase);
switch_to_normal_mode();
return true;
default:
break;
}
@ -1428,6 +1432,9 @@ void VimEditingEngine::casefold_selection(Casing casing)
case Casing::Lowercase:
m_editor->insert_at_cursor_or_replace_selection(m_editor->selected_text().to_lowercase());
return;
case Casing::Invertcase:
m_editor->insert_at_cursor_or_replace_selection(m_editor->selected_text().invert_case());
return;
}
}

View file

@ -162,7 +162,8 @@ private:
enum class Casing {
Uppercase,
Lowercase
Lowercase,
Invertcase
};
VimMode m_vim_mode { VimMode::Normal };