diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | Src/Zle/zle_main.c | 24 | ||||
-rw-r--r-- | Src/init.c | 2 |
3 files changed, 19 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog index 3dd273437..f347b542e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-09-20 Bart Schaefer <schaefer@zsh.org> + + * 20387: Src/init.c, Src/zle_main.c: rather than counting the EOF + keystrokes as in 20363, pretend that we received an EOF each time + the "use 'logout' to logout" warning is printed, and let the top- + level loop keep the count. This way, disabling the warning (by + rebinding that key to a "zle -N" widget) also disables counting. + 2004-09-17 Peter Stephenson <pws@csr.com> * 20378: Matthias B <msb@winterdrache.de>: Src/params.c, @@ -34,7 +42,7 @@ from zle -I and improve documentation of status from zle, zle -I, zle -R. -2004-09-08 Bart Schaefer <schaefer@zanshin.com> +2004-09-08 Bart Schaefer <schaefer@zsh.org> * 20325: Src/exec.c, Test/E01options.ztst: fix crash when using the "command" builtin (as opposed to the "command" precommand diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index 80c0db6ed..2f78db1d1 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -688,30 +688,23 @@ zlecore(void) selectlocalmap(NULL); bindk = getkeycmd(); if (bindk) { - if (!ll && isfirstln && lastchar == eofchar) { + 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. - * - * The noxitct test is done in the top-level loop - * if zle is not running. As we trap EOFs at this - * level inside zle we need to mimic it here. - * If we break, the top-level loop will actually increment - * noexitct an extra time; that doesn't cause any - * problems. */ - if (!(zlereadflags & ZLRF_IGNOREEOF) || - ++noexitct >= 10) - { - eofsent = 1; - break; - } + eofsent = 1; + break; } - if (execzlefunc(bindk, zlenoargs)) + if (execzlefunc(bindk, zlenoargs)) { handlefeep(zlenoargs); + if (eofsent) + break; + } handleprefixes(); /* for vi mode, make sure the cursor isn't somewhere illegal */ if (invicmdmode() && cs > findbol() && @@ -908,6 +901,7 @@ execzlefunc(Thingy func, char **args) !ll && isfirstln && (zlereadflags & ZLRF_IGNOREEOF)) { showmsg((!islogin) ? "zsh: use 'exit' to exit." : "zsh: use 'logout' to logout."); + eofsent = 1; ret = 1; } else { if(!(wflags & ZLE_KEEPSUFFIX)) diff --git a/Src/init.c b/Src/init.c index d562349d5..ef101069c 100644 --- a/Src/init.c +++ b/Src/init.c @@ -37,7 +37,7 @@ #include "version.h" /**/ -mod_export int noexitct = 0; +int noexitct = 0; /* buffer for $_ and its length */ |