diff --git a/src/utils/edit.c b/src/utils/edit.c index d4de2b168..f4d50aca2 100644 --- a/src/utils/edit.c +++ b/src/utils/edit.c @@ -130,13 +130,17 @@ static void delete_current(void) static void delete_word(void) { + int pos; + edit_clear_line(); - while (cmdbuf_len > 0 && cmdbuf[cmdbuf_len - 1] == ' ') - cmdbuf_len--; - while (cmdbuf_len > 0 && cmdbuf[cmdbuf_len - 1] != ' ') - cmdbuf_len--; - if (cmdbuf_pos > cmdbuf_len) - cmdbuf_pos = cmdbuf_len; + pos = cmdbuf_pos; + while (pos > 0 && cmdbuf[pos - 1] == ' ') + pos--; + while (pos > 0 && cmdbuf[pos - 1] != ' ') + pos--; + os_memmove(cmdbuf + pos, cmdbuf + cmdbuf_pos, cmdbuf_len - cmdbuf_pos); + cmdbuf_len -= cmdbuf_pos - pos; + cmdbuf_pos = pos; edit_redraw(); }