diff options
Diffstat (limited to 'Src/Zle/zle_main.c')
-rw-r--r-- | Src/Zle/zle_main.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index 97d5432be..5299c755b 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -687,12 +687,19 @@ zlecore(void) reselectkeymap(); selectlocalmap(NULL); bindk = getkeycmd(); - if (!ll && isfirstln && !(zlereadflags & ZLRF_IGNOREEOF) && - lastchar == eofchar) { - eofsent = 1; - break; - } if (bindk) { + if (!ll && isfirstln && !(zlereadflags & ZLRF_IGNOREEOF) && + lastchar == eofchar) { + /* + * Slight hack: this relies on getkeycmd returning + * a value for the EOF character. However, + * undefined-key is fine. That's necessary because + * otherwise we can't distinguish this case from + * a ^C. + */ + eofsent = 1; + break; + } if (execzlefunc(bindk, zlenoargs)) handlefeep(zlenoargs); handleprefixes(); |