diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-05-05 20:18:41 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-05-05 20:18:41 +0200 |
commit | e542aa5accdc6559b7b8ae6005f5322492676e08 (patch) | |
tree | 96da2129e6be0d13bdc8124630a5e47e3fe2f9d2 | |
parent | fa0ee9d65bca974cbaf85d1f0599a068ffc5ff48 (diff) | |
download | xK-e542aa5accdc6559b7b8ae6005f5322492676e08.tar.gz xK-e542aa5accdc6559b7b8ae6005f5322492676e08.tar.xz xK-e542aa5accdc6559b7b8ae6005f5322492676e08.zip |
degesch: some libedit fixes
-rw-r--r-- | degesch.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -413,8 +413,9 @@ input_ding (struct input *self) { (void) self; - // XXX: this isn't probably very portable - putc ('\a', stdout); + // XXX: this isn't probably very portable; + // we could use "bell" from terminfo but that creates a dependency + write (STDOUT_FILENO, "\a", 1); } static void @@ -490,6 +491,9 @@ input_start (struct input *self, const char *program_name) el_set (self->editline, EL_UNBUFFERED, true); el_set (self->editline, EL_EDITOR, "emacs"); + // No, editline, it's not supposed to kill the entire line + el_set (self->editline, EL_BIND, "^W", "ed-delete-prev-word", NULL); + app_editline_init (self); self->prompt_shown = 1; self->active = true; @@ -613,7 +617,11 @@ input_on_readable (struct input *self) // The character is VEOF (usually C-d) // TODO: read it from terminal info if (count == 0 && buf[0] == ('D' - 'A' + 1)) + { + el_deletestr (self->editline, 1); + input_redisplay (self); input_ding (self); + } } #endif // HAVE_EDITLINE |