Simple autocomplete with fish
, . Tagged
Making your own autocomplete functions is easy with fish. Lately I wanted to have autocompletion of npm projects in a lerna-managed monorepo.
The documentation
Adding completions to an existing command is not as hard as for bash/zsh. The documentation is quite helpful here.
The only tricky bit here is to get the list of possible values for our complete
command. Fortunately, lerna provides the ls
command to list all subpackages.
We need a little bit of trickery to only output what we need with lerna
--loglevel silent ls --all 2> /dev/null
The code
All options are provided in their long form, but you can use the short one also.
I use home-manager to append
the followings to my $XDG_CONFIG_HOME/fish/config.fish
# Auto-complete lerna scope complete --command lerna --exclusive --long-option=scope --arguments="(lerna --loglevel silent ls --all 2> /dev/null)" complete --command lerna --exclusive --long-option=ignore --arguments="(lerna --loglevel silent ls --all 2> /dev/null)"