On 16 January 2016 at 23:55, Bart Schaefer wrote: > B) Don't invoke completion directly; instead, invoke a normal editing > widget to modify the buffer so the tokens do not begin a context, then > call the completion widget, and finally clean up the buffer again when > the completion widget returns. I went this path and it was quite easy. I have zew-complete-shell-word widget (attached) that does a simple grep: __zew_csw_found=( "${(@M)historywords:#(#i)$__zew_csw_left*$__zew_csw_right}" ) then zle -M displays the results and Alt-h/H navigates among them. One minute video: https://asciinema.org/a/9smut3m7l6njvwfhrkfb6emdp > The unfortunate bit of (B) > is that it can't work at all as a completer function (zstyle element). So no automatic multi-column zle -M, no actual highlighting (tried to pass ANSI codes to zle -M but it doesn't process them), no zstyles that configure pagination etc. These are the drawbacks? All this is in the queue to implement, e.g. I currently display LINES / 3 matches and there is no access to matches beyond that. Code is at: https://github.com/psprint/zsh-editing-workbench/blob/master/zew-complete-shell-word only 74 lines for a robust _history_complete_older Thanks, Sebastian Gniazdowski