ぐるっとぐりっど

日曜プログラマがいろいろ試してみたことを、後の自分のためにまとめておく場所

:ensure tを:straight tにおきかえるところから、straight.elを使ってみよう。MELPAでもgithubでもどこのパッケージも取得できるよ

自分は use-package で、emacsのパッケージ管理および設定管理をしている。

use-packageは、遅延ロードとかを意識しなくてもよしなにやってくれるし、なにより :ensureキーワードを使うことで、MELPAからダウンロードも自動でやってくれるので、パッケージの取得と設定を一元管理することができるのがよい。

ただ、そんなuse-packageだけど、不満点がひとつあり、 package.el をラッピングしてるだけなので、当然のことながら package.el の対象のサイトである、elpa, melpaなどからしかパッケージを取得することができない。

なので、githubで管理されていて、melpaのレシピが作成されていないものとか、melpaにあるんだけどバグがあってフォーク版がgithubにあるとか、そういったものを管理するのがめんどくさい。 自分でダウンロードして、load-pathに配置して、という作業が必要になってしまうのだ。

かといって、そのためにcask使ってみるのもなあ。。。と思っていた。quelpaとかも使ってみたのだけどイマイチぱっとしなかったり。

そんななか、straight.elの存在を知って使ってみたのですが、これがけっこういいかんじ

github.com

何がいいって、use-packageのキーワードに追加してくれるので、何も考えなければ、これまで :ensure t と書いてたところを :straight t と一括置換するだけで、とりあえず乗り換えが完了するのです。

(use-package dash
  :straight t)

こんな感じで、あまり移行を意識しなくてすむのがよい。

melpaで管理されているもののフォーク版を使いたいものの例としては、key-chordがあります。

qiita.com

これも、 :straightキーワードをちょっと変えて取得先を指定するだけなので、非常に簡単に書けます。

(use-package key-chord
  :straight (:host github :repo "zk-phi/key-chord" :branch "master"))

正直、ここまで意識せずに移行できると思わなかったので、なぜ早く乗り換えなかったのか悔むばかり。以前からstraight聞いてたけど、readme.mdがちょっと読みにくくて、どこがキモかよくわからなかったのよね。。。まあ、だからこそこのエントリを書くにいたったのですが。