exaのfish-completionsを追加したかった(非推奨方法)
概要
exaをcargoでインストールしたとき、fish-completionsが追加されていなかった。
ln -s $HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/exa-0.9.0/contrib/completions.fish $__fish_config_dir/completions/exa.fish
でリンクを貼って無理やり追加した。
より良い方法を知りたい。
経緯
Rust製のexaというコマンドがある。ls, treeの代替として優秀らしい。 実際触ってみて、カラフルで良いなと思った。
しかし、補完が効かない。fishプラグインとしてどっかにあるかなと検索したらexaのリポジトリにcompletions.fishが存在していた。 インストール時にこのファイルがcompletions以下に置かれなかったらしい。
install-fish-completions
オプションはどうすれば……?
どうやればインストール時に補完ファイルも持ってきてくれるのか確認したところ、Makefileに以下のような記述があった。
install-fish-completions: install -m644 -- contrib/completions.fish "$(DESTDIR)$(FISHDIR)/exa.fish"
Rust, Cargoについて全く知らないので、とりあえずcargo install exa --features install-fish-completions
と試してみたが、"Package exa v0.9.0
does not have these features" らしい。
そもそもCargo.tomlに
exclude = ["/devtools/*", "/Makefile", "/Vagrantfile", "/screenshots.png"]
とあり、Makefileの記述はcargo install
のときには参考にならないかも……?
結果
あれこれ調べたが、結局わからずじまいだったので、ひとまず .cargo/
以下にあるexaのソースコードからcompletions.fish
ファイルを拝借した。
ln -s $HOME/.cargo/registry/src/github.com-1ecc6299db9ec823/exa-0.9.0/contrib/completions.fish $__fish_config_dir/completions/exa.fish
上記コマンドはhash値のようなディレクトリを指定していて、あまり褒められたものではない(アプデ時に消えそう)が、ひとまずコレでALL OKとした(い)。