Hi, The solution you posted sort of dose what I want. With this code I have to type ? in order for it to work. If I just type ? and hit tab it dose not work. I get that's because of ( \?* ) and I tried (\?) but it dose not work. Interesting, if I use for example ( \! ) that works as expected. Is the '?' special for some reason? Also I found another way of getting what I want I think it's a more intuitive solution than the whole '?' idea. I found that I can write my own widget and bind it to a key so this is what I did: zle -C custom-complete menu-expand-or-complete _parse_sb_file _parse_sb_file() { WORDS=( ${(f)"$(<$SB_FILE_PATH)"} ) ARRAY=() integer POS=1 for ITEM in ${WORDS}; do ARRAY[${POS}]=${POS}") "${WORDS[${POS}]} (( POS++ )) done compadd -l -d ARRAY -a -S '' -- WORDS } bindkey ${CTRLTAB_KEY} custom-complete This works but I have some issues with this to: 1) if I press ctrl-tab I can not select the options with arrow keys I can just switch them with ctrl-tab, unless I first run for example "cp " then I get the menu and I can select options. And if I after that (after cp showed the menu with select) use ctrl-tab I get menu with select? Not sure why I first have invoke another menu for ctrl-tab to work in a same manner? 2) if I have this string, for example, in a file "cp file1 file2" it is inserted like this "cp\ file1\ file2". The white spaces are escaped, how can I disable this, and tell zsh to insert a string as it is. Thanks for your help. Regards, Domagoj On Mon, Aug 4, 2014 at 10:57 PM, Bart Schaefer wrote: > On Aug 4, 1:39pm, Bart Schaefer wrote: > } > } # Now anything starting with '?' > } (\?*) _message "Querying answerfile" > } compstate[insert]=menu > } compadd -U -a answers # -U to replace "?" with the result > } ;; > > Hmm, it occurs to me that this should probably be in the order > > compadd -U -a answers # -U to replace "?" with the result > compstate[insert]=menu > > so that the initial value of compstate[insert] is visible to compadd > before we change it. I don't know exactly when that would matter, but > the doc for compstate[insert] implies that it might. >