summaryrefslogtreecommitdiff
path: root/Src/Zle
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle')
-rw-r--r--Src/Zle/complist.c2
-rw-r--r--Src/Zle/zle_refresh.c3
-rw-r--r--Src/Zle/zle_tricky.c2
-rw-r--r--Src/Zle/zle_utils.c5
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)