From 5d0c105b104654093a479fd4c4027589023c4d4a Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Wed, 21 Oct 2020 23:33:32 +0200 Subject: Make backspace erase combining characters They might not be even printed correctly, though. Updates #4 --- sdn.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sdn.cpp b/sdn.cpp index 74b70cf..fb65d7d 100644 --- a/sdn.cpp +++ b/sdn.cpp @@ -1186,8 +1186,13 @@ fun handle_editor (wint_t c) { g.editor_on_confirm = nullptr; break; case ACTION_INPUT_B_DELETE: - if (g.editor_cursor > 0) - g.editor_line.erase (--g.editor_cursor, 1); + // Remove the last character including its postfix combining characters + while (g.editor_cursor > 0) { + auto erased = g.editor_line.at (--g.editor_cursor); + g.editor_line.erase (g.editor_cursor, 1); + if (wcwidth (erased)) + break; + } break; default: if (c & (ALT | SYM)) { -- cgit v1.2.3-70-g09d2