summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/init.c2
-rw-r--r--Src/utils.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/Src/init.c b/Src/init.c
index b987f1399..6c5421e6f 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -123,6 +123,7 @@ loop(int toplevel, int justonce)
errflag = 0;
}
}
+ use_exit_printed = 0;
intr(); /* interrupts on */
lexinit(); /* initialize lexical state */
if (!(prog = parse_event())) { /* if we couldn't parse a list */
@@ -1335,7 +1336,6 @@ zsh_main(UNUSED(int argc), char **argv)
init_misc();
for (;;) {
- use_exit_printed = 0;
/*
* See if we can free up some of jobtab.
* We only do this at top level, because if we are
diff --git a/Src/utils.c b/Src/utils.c
index 35915a2e7..98d441aa0 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -1156,10 +1156,13 @@ preprompt(void)
int period = getiparam("PERIOD");
int mailcheck = getiparam("MAILCHECK");
- if (isset(PROMPTSP) && isset(PROMPTCR)) {
+ if (isset(PROMPTSP) && isset(PROMPTCR) && !use_exit_printed) {
/* The PROMPT_SP heuristic will move the prompt down to a new line
* if there was any dangling output on the line (assuming the terminal
- * has automatic margins, but we try even if hasam isn't set). */
+ * has automatic margins, but we try even if hasam isn't set).
+ * Unfortunately it interacts badly with ZLE displaying message
+ * when ^D has been pressed. So just disable PROMPT_SP logic in
+ * this case */
char *str;
int percents = opts[PROMPTPERCENT];
opts[PROMPTPERCENT] = 1;