According to the documentation in man zshcompsys, there is a widget menu-select that is defined in the complist module.

If you use the menu-select widget, which is part of the zsh/complist module, you should make sure that that module is loaded before the call to compinit so that that widget is also re-defined.

man zshmodules also mentions:

Note, however, that complist will not automatically be loaded if it is not linked in: on systems with dynamic loading, `zmodload zsh/complist' is required.

So I have added this in my ~/.zshrc:

# .....(other stuff)
# load complist module to make "menu-select" widget available to zle
zmodload zsh/complist
autoload -Uz complist
# Load zsh's completion system "compsys"
autoload -Uz compinit
# ....

however on zsh startup, I get this output

.zshrc:44: complist: function definition file not found

What I'm actually trying to do is load the widget menu-select, if anyone can offer a solution that does that - whether it involves loading complist.so or not that would be great

  • my OS - Ubuntu 16.04.1
  • my zsh - version 5.1.1

For completeness, the reason I am trying to load menu-select is because I want to be able to bind it to a key combination and call it manually, I can use zstyle to get menu-select completion, (I believe when menu-select is invoked this way the completions system does everything needed to bootstrap menu-select) but the zstyle way I can't control/call the widget manually.

  • Where in the man pages tells you to autoload complist? – llua Aug 16 '16 at 13:06
  • @llua good question. I dont think the man page does say to autoload complist. they only mention "you should make sure complist is loaded" I assumed - perhaps mistakenly? - that you autoloaded simply because thats how other features, e.g. compinit were loaded – the_velour_fog Aug 16 '16 at 13:21
  • You loaded complist with zmodload zsh/complist, nothing else is needed. you are free to bind the widget after that. – llua Aug 17 '16 at 3:01
  • @llua I tried what you said and it worked! thanks for the help. I'm guessing the reason complist gets loaded with zmodload is because it is a module written in C. and compinit is written in zsh scripts placed somewhere in fpath? therefore for future usages, if the module is a module.so file in a directory like /usr/lib/x86_64-linux-gnu/zsh/5.1.1/zsh then use zmodload, if the module is somewhere in fpath then it (probably) should be autoloaded. – the_velour_fog Aug 17 '16 at 5:23

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.