Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Why does ^X? behave differently than TAB?



This situation is a little baroque; I'm not sure I can give a simple case
that reproduces it.

I have a script that uses a `select' loop, and I want completion at the
prompt.  So I did this inside the script:

local curcontext=scriptname:::
zstyle ':completion:scriptname:*' insert-tab no
zstyle ':completion:scriptname:*' completer _script_completer
_script_completer() { compcall -T -D }

The reason for the compcall is that this is an old script that uses a trick
with compctl -T to force 3.0.x to complete something other than commands at
the select prompt:

l=(list of things to complete)
compctl -Tx 'p[1,-1]' -f - 'W[0,*]' -k l ${${ZSH_VERSION##3.0*}:+-tn}

I.e., complete from $l in the first word, otherwise complete file names.

This all works fine as long as I never press anything but TAB for completion;
it even starts up menu-selection properly based on my other styles, etc.

However, if at any point after the first TAB, I press ^X? (_complete_debug)
instead, I get command completion (which usually means a menu-select with
2198 choices, but sometimes it just asks if I really want to see all 2198
possibilities).

I would just write this off as a new/old completion incompatibility if not
for the fact that it differs depending on the widget used to activate the
completion.  And if I replace the `compcall' with `compadd $l' then it works
(except for not completing files) with any combination of TAB and ^X?.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com



Messages sorted by: Reverse Date, Date, Thread, Author