diff options
Diffstat (limited to 'Src/Zle')
-rw-r--r-- | Src/Zle/complist.c | 2 | ||||
-rw-r--r-- | Src/Zle/zle_refresh.c | 3 | ||||
-rw-r--r-- | Src/Zle/zle_tricky.c | 2 | ||||
-rw-r--r-- | Src/Zle/zle_utils.c | 5 |
4 files changed, 10 insertions, 2 deletions
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c index fd90ccb31..01bcb7cf8 100644 --- a/Src/Zle/complist.c +++ b/Src/Zle/complist.c @@ -2386,7 +2386,7 @@ domenuselect(Hookdef dummy, Chdata dat) * to be metafied locally in a couple of places. * It's horrifically difficult to work out where the line * is metafied, so I've resorted to the following. - * Unfortunately we need to unmetatfy in zrefresh() when + * Unfortunately we need to unmetafy in zrefresh() when * we want to display something. Maybe this function can * be done better. */ diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c index 78046fb7b..0c28c0a2d 100644 --- a/Src/Zle/zle_refresh.c +++ b/Src/Zle/zle_refresh.c @@ -1761,7 +1761,8 @@ singlelineout: inlist = 1; listmatches(); inlist = 0; - zrefresh(); + if (!errflag) + zrefresh(); } if (showinglist == -1) showinglist = nlnct; diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c index 97bdcc020..b1a6f9e7e 100644 --- a/Src/Zle/zle_tricky.c +++ b/Src/Zle/zle_tricky.c @@ -2812,6 +2812,8 @@ doexpandhist(void) do { ctxtlex(); } while (tok != ENDINPUT && tok != LEXERR); + if (tok == LEXERR) + lexstop = 0; while (!lexstop) hgetc(); /* We have to save errflags because it's reset in zcontext_restore. Since * diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c index d1d320613..9751f7a1f 100644 --- a/Src/Zle/zle_utils.c +++ b/Src/Zle/zle_utils.c @@ -1183,6 +1183,11 @@ getzlequery(void) /* get a character from the tty and interpret it */ c = getfullchar(0); + /* + * We'll interpret an interruption here as only interrupting the + * query, not the line editor. + */ + errflag &= ~ERRFLAG_INT; if (c == ZWC('\t')) c = ZWC('y'); else if (ZC_icntrl(c) || c == ZLEEOF) |