Project Paper A4 5mm

清書したメモが置かれる

exaのfish-completionsを追加したかった(非推奨方法)

概要

github.com

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とした(い)。