Zsh-autosuggestions: Problem with <Control-D> and IGNORE_EOF

Created on 5 Apr 2016  路  3Comments  路  Source: zsh-users/zsh-autosuggestions

I've been facing a problem with IGNORE_EOF recently and I found it was caused by zsh-autosuggestions. I've been getting this on <Control-D>:

<Control-D>
zsh: do you wish to see all 3221 possibilities (3221 lines)?

Instead of the usual:

<Control-D>
zsh: use 'logout' to logout.

This is the minimal configuration in .zshrc to reproduce the issue:

source "$DOT/zsh/.antigen/antigen.zsh"
antigen bundle zsh-users/zsh-autosuggestions
antigen apply
setopt ignore_eof

I managed to walk around the issue binding ^D to beep, but it seems like a bug to me.

bug reproduced

Most helpful comment

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.

All 3 comments

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.

For both I keep getting following output: zsh: do you wish to see all 2319 possibilities (773 lines)?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

srajasimman picture srajasimman  路  5Comments

moritzschaefer picture moritzschaefer  路  5Comments

Kenmmm picture Kenmmm  路  4Comments

metalmac picture metalmac  路  4Comments

daniele-orlando picture daniele-orlando  路  6Comments