Home

Awesome

zsh autocompletion plugin for lets

Lets is a cli tool for developers that is a better alternative to make - https://github.com/lets-cli/lets

Install as plugin

oh-my-zsh

Just clone plugin to oh-my-zsh plugins directory

cd ~/.oh-my-zsh/custom/plugins/
git clone https://github.com/lets-cli/lets-zsh-plugin.git lets

Open ~/.zshrc and add lets to plugins

 plugins=(lets)

zinit

Add to your ~/.zshrc

zinit load lets-cli/lets-zsh-plugin

Manual completions setup

You can set up completions manually (no plugins).

Usually to make completion works you have to make sure that:

  1. A file with completions exists
  2. A path to directory with a file with completions is in $fpath env.

lets can generate completions script for you

lets completion -s zsh

This will print completion script, and you have to save it somewhere, for example:

lets completion -s zsh ~/.my-completions/_lets

Now, add ~/.my-completions/_lets to fpath

fpath=(~/.my-completions $fpath)

And just to be sure that everything will work as expected fine, rebuild zcompdump:

rm -f ~/.zcompdump; compinit

Do not forget to add autoload call to the end of file (it actually can be after plugins section, but its better to add it to the end of ~/.zshrc)

autoload -U compinit && compinit

Restart terminal

exec $SHELL -l

Manual configuration for zinit

Since zinit adds ~/.local/share/zinit/completions to fpath, you just need to put completions to that directory:

lets completion -s zsh > ~/.local/share/zinit/completions/_lets

Manual configuration for oh-my-zsh

For oh-my-zsh these are usually one of the following directories in fpath:

lets completion -s zsh > ~/.oh-my-zsh/completions/_lets.zsh

Source completions on shell load

You can just add source <(lets completion -s zsh) to your ~/.zshrc file, save it and reload shell. Completions should work.

If completions does not work, try to put source <(lets completion -s zsh) after line with autoload -U compinit && compinit, like this:

autoload -U compinit && compinit
source <(lets completion -s zsh)

Configution

For zsh there is --verbose flag which generate completions with descriptions, like this:

lets <tab>
... generated completions

build  -- Build my app
run    -- Run my app
test   -- Test my app
lets completion -s zsh --verbose