grml-zsh-config で rye の補完を有効にする

ryeの補完

ふと思い立って zsh を触ってみることにしました。 Oh-my-zsh はなんとなく大きすぎて嫌だったのですが、次の記事を見て grml-zsh-config を導入しました。

知ったらもう戻れない!? 便利すぎるZshの世界 - Mimir Yokohama

rye をHomebrewではなく本家からダウンロードしてインストールしているのですが、zshの補完の設定方法として次のように書かれています。

# Make sure ~/.zfunc is added to fpath, before compinit.
rye self completion -s zsh > ~/.zfunc/_rye

試しに fpath=( "$HOME/.zfunc" ${fpath} ) を ~/.zshrc.local に追加してみたのですが、補完が有効になりません。「before compinit」になっていないようです。

grml-zsh-config では ~/.zshrc を編集することが推奨されていないようなのでどうしたものかと眺めていたのですが、 ~/.zshrc の先頭付近に次のような記述を見つけました。

# USAGE
# If you are using this file as your ~/.zshrc file, please use ~/.zshrc.pre
# and ~/.zshrc.local for your own customisations. The former file is read
# before ~/.zshrc, the latter is read after it.

ということで、次のようにしたら無事にryeのコマンド補完が動くようになりました。

% echo 'fpath=( "$HOME/.zfunc" ${fpath} )' > ~/.zshrc.pre

Homebrewを使っているときは、ついでに Homebrew の zsh 補完関数置き場も fpath に追加しておきましょう。

# ~/.zshrc.pre
fpath=( "$HOME/.zfunc" /opt/homebrew/share/zsh/site-functions ${fpath} )

# zsh-completions も有効にする場合は $(brew --prefix)/share/zsh-completions もfpathに追加する。
このブログに乗せているコードは引用を除き CC0 1.0 で提供します。