aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sdn.cpp9
1 files 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)) {