anthonyfieroni added inline comments. INLINE COMMENTS
> katedocument.cpp:3169-3223 > if (!(config()->backspaceIndents())) { > // ordinary backspace > - KTextEditor::Cursor beginCursor(line, > view->textLayout(c)->previousCursorPosition(c.column())); > + KTextEditor::Cursor beginCursor(line, 0); > KTextEditor::Cursor endCursor(line, col); > - > + if (!view->config()->backspaceRemoveComposed()) { // Normal > backspace behavior > + // move to left of surrogate pair > + if (!isValidTextPosition(beginCursor)) { This peace of code should be simplified, to not have code dublication. if (config()->backspaceIndents()) { // backspace indents: erase to next indent position Kate::TextLine textLine = m_buffer->plainLine(line); // don't forget this check!!!! really!!!! if (!textLine) { return; } int colX = textLine->toVirtualColumn(col, config()->tabWidth()); int pos = textLine->firstChar(); if (pos > 0) { pos = textLine->toVirtualColumn(pos, config()->tabWidth()); } if (pos < 0 || pos >= (int)colX) { // only spaces on left side of cursor indent(KTextEditor::Range(line, 0, line, 0), -1); } } Then validate pos and add 2 backspace behaviors. REPOSITORY R39 KTextEditor REVISION DETAIL https://phabricator.kde.org/D7660 To: safaalfulaij, #ktexteditor, jgrulich, hein, dhaumann Cc: anthonyfieroni, cullmann, jgrulich, dhaumann, hein, kwrite-devel, #frameworks