Problem with <Control-D> and IGNORE_EOF #139
Looks like this has something to do with ctrl+d being bound to a widget that overrides the delete-char-or-list builtin widget:
% zsh -f
%% setopt ignore_eof
%% bindkey '^D'
"^D" delete-char-or-list
%% <Control-D>
zsh: use 'exit' to exit.
%% delete-char-or-list() { zle .delete-char-or-list }
%% zle -N delete-char-or-list
%% <Control-D>
zsh: do you wish to see all 1782 possibilities (594 lines)?
%% bindkey '^D' .delete-char-or-list
%% <Control-D>
zsh: use 'exit' to exit.
Comment in the zle code confirms:
/*
* The rule is that "zle -N" widgets suppress EOF warnings. When
* a "zle -N" widget invokes "zle another-widget" we pass through
* this code again, but with actual arguments rather than with the
* zlenoargs placeholder.
*/Not sure how to fix this right now. At some point, I'll dig into the execzlefunc function with gdb and see if I can get more insights on how this all fits together.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I've been facing a problem with
IGNORE_EOFrecently and I found it was caused byzsh-autosuggestions. I've been getting this on<Control-D>:Instead of the usual:
This is the minimal configuration in
.zshrcto reproduce the issue:I managed to walk around the issue binding
^Dtobeep, but it seems like a bug to me.