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

TextEditor: Jump to word break when deleting and holding Ctrl modifier

This commit is contained in:
Sasan Hezarkhani 2020-07-21 22:28:59 -07:00 committed by Andreas Kling
parent 107db38a51
commit a2bbacbfc8
2 changed files with 6 additions and 3 deletions

View file

@ -442,8 +442,8 @@ TextPosition TextDocument::first_word_break_before(const TextPosition& position,
auto is_start_alphanumeric = isalnum(line.codepoints()[target.column() - (start_at_column_before ? 1 : 0)]);
while (target.column() > 0) {
auto next_codepoint = line.codepoints()[target.column() - 1];
if ((is_start_alphanumeric && !isalnum(next_codepoint)) || (!is_start_alphanumeric && isalnum(next_codepoint)))
auto prev_codepoint = line.codepoints()[target.column() - 1];
if ((is_start_alphanumeric && !isalnum(prev_codepoint)) || (!is_start_alphanumeric && isalnum(prev_codepoint)))
break;
target.set_column(target.column() - 1);
}

View file

@ -895,7 +895,10 @@ void TextEditor::keydown_event(KeyEvent& event)
}
if (m_cursor.column() > 0) {
int erase_count = 1;
if (current_line().first_non_whitespace_column() >= m_cursor.column()) {
if (event.modifiers() == Mod_Ctrl) {
auto word_break_pos = document().first_word_break_before(m_cursor, true);
erase_count = m_cursor.column() - word_break_pos.column();
} else if (current_line().first_non_whitespace_column() >= m_cursor.column()) {
int new_column;
if (m_cursor.column() % m_soft_tab_width == 0)
new_column = m_cursor.column() - m_soft_tab_width;