diff --git a/src/ply-window.c b/src/ply-window.c index 747fa3ee..a3dc8891 100644 --- a/src/ply-window.c +++ b/src/ply-window.c @@ -44,6 +44,8 @@ #include "ply-utils.h" #define KEY_CTRL_T ('\100' ^'T') +#define KEY_CTRL_U ('\100' ^'U') +#define KEY_CTRL_W ('\100' ^'W') #define KEY_CTRL_V ('\100' ^'V') #define KEY_ESCAPE ('\100' ^'[') #define KEY_RETURN '\r' @@ -118,6 +120,15 @@ process_backspace (ply_window_t *window) } } +static void +process_line_erase (ply_window_t *window) +{ + size_t size; + + while ((size = ply_buffer_get_size (window->line_buffer)) > 0) + process_backspace (window); +} + static void process_keyboard_input (ply_window_t *window, const char *keyboard_input, @@ -136,6 +147,12 @@ process_keyboard_input (ply_window_t *window, ply_trace ("text mode toggled!"); return; + case KEY_CTRL_U: + case KEY_CTRL_W: + ply_trace ("erase line!"); + process_line_erase (window); + return; + case KEY_CTRL_V: ply_trace ("toggle verbose mode!"); ply_toggle_tracing ();