#define ZC_HKEY_HELP 0x15
#define ZC_HKEY_MAX 0x15
#define ZC_ESCAPE 0x1b
+#define ZC_DEL_WORD 0x1c
#define ZC_ASCII_MIN 0x20
#define ZC_ASCII_MAX 0x7e
#define ZC_BAD 0x7f
case MOD_CTRL ^ 'E': c = KEY_END; break;
case MOD_CTRL ^ 'D': c = KEY_DC; break;
case MOD_CTRL ^ 'K': c = KEY_EOL; break;
+ case MOD_CTRL ^ 'W': c = ZC_DEL_WORD; break;
default: break; /* Who knows? */
}
memmove(buf + scrpos, buf + scrpos + 1, len - scrpos);
}
break;
+ case ZC_DEL_WORD:
+ if (scrpos != 0) {
+ /* Search for start of preceding word */
+ int i = len;
+ while (i > 0 && buf[i] != ' ') {
+ mvaddch(y, x + i, ' ');
+ i--;
+ }
+
+ searchpos = -1;
+ int delta = scrpos - i;
+ len -= delta;
+ scrpos -= delta;
+ scrnmove(x + scrpos, x + scrpos + delta, delta);
+ memmove(buf + scrpos, buf + scrpos + delta, delta);
+ }
+ break;
case CHR_DEL:
case KEY_DC: /* Delete following character */
if (scrpos < len) {