diff options
Diffstat (limited to 'edit-readline.c')
| -rw-r--r-- | edit-readline.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/edit-readline.c b/edit-readline.c index 6a997c5..acf96aa 100644 --- a/edit-readline.c +++ b/edit-readline.c @@ -18,6 +18,7 @@ void *edit_begin(int fd) { List *hist; struct cookie *c; + rl_initialize(); rl_catch_signals = 0; rl_completer_quote_characters = "'"; rl_filename_quote_characters = "\t\n !#$&'()*;<=>?@[\\]^`{|}~"; @@ -32,7 +33,11 @@ void *edit_begin(int fd) { return c; } +static void (*oldint)(int), (*oldquit)(int); + static void edit_catcher(int sig) { + sys_signal(SIGINT, oldint); + sys_signal(SIGQUIT, oldquit); write(2, "\n", 1); rc_raise(eError); } @@ -41,11 +46,11 @@ static char *prompt; char *edit_alloc(void *cookie, size_t *count) { struct cookie *c = cookie; - void (*oldint)(int), (*oldquit)(int); oldint = sys_signal(SIGINT, edit_catcher); oldquit = sys_signal(SIGQUIT, edit_catcher); + rl_reset_screen_size(); c->buffer = readline(prompt); sys_signal(SIGINT, oldint); |