👩💻 gradle/gradle-completion
本家から公開されてたんですね!
👉 gradle/gradle-completion: Gradle tab completion for bash and zsh
./gradlew でも利用できるようなのでインストールしてみました。
brew install gradle-completion
しかし、補完されないので調べる。
❯ brew info gradle-completion
...
==> Caveats
zsh completions have been installed to:
/opt/homebrew/share/zsh/site-functions
...
❯ ls /opt/homebrew/share/zsh/site-functions
_brew@ _gradle@ _lsd@ _starship@
手動でロードしてみると弾いてるが。
❯ source /opt/homebrew/share/zsh/site-functions/_gradle
_arguments:comparguments:327: can only be called from completion function
_tags:comptags:36: can only be called from completion function
_tags:comptry:55: can only be called from completion function
_tags:comptags:60: can only be called from completion function
_tags:comptags:67: can only be called from completion function
どうなってるんや。
👩💻 Basic installation doesn't work on macOS with zsh #95
issues にこんな。
if [ $commands[brew] ]
then
fpath=("$(brew --prefix)/share/zsh/site-functions" $fpath)
fi
gradle-completion/issues/95#issuecomment-1165679687
見てみると FPATH にない。
❯ echo $FPATH | tr ':' '\n'
/opt/homebrew/share/zsh-completions
/usr/local/share/zsh/site-functions
/usr/share/zsh/site-functions
/usr/share/zsh/5.9/functions
ここに、gradle-completion のインストール先である
/opt/homebrew/share/zsh/site-functions
を追加すると補完は効き始めた。
👩💻 Homebrew Shell-Completion
さっきの解決方法の issue コメントに書いてあったページをみてみる。
To make Homebrew’s completions available in zsh, you must insert the Homebrew-managed zsh/site-functions path into your FPATH before initialising zsh’s completion facility. Add the following to your ~/.zshrc:
if type brew &>/dev/null
then
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
autoload -Uz compinit
compinit
fi
👉 brew Shell Completion — Homebrew Documentation
.zshrc に追加すると、brew コマンドでも TAB キーで補完が効き始める。
❯ brew i
info -- Display brief statistics for your Homebrew installa
install -- Install a formula or cask
install-bundler-gems -- Install Homebrew's Bundler gems
irb -- Enter the interactive Homebrew Ruby shell
知らんかった。
👩💻 まとめ
Homebrew のコマンド補完を以下で有効にしておくと、
# .zshrc
if type brew &>/dev/null
then
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
autoload -Uz compinit
compinit
fi
Homebrew で以下にインストールされる補完スクリプトたちも、
❯ ls $(brew --prefix)/share/zsh/site-functions
_brew@ _gradle@ _lsd@ _starship@
インストール直後にそのまま使えるようになる。