emacs設定棚卸し

2023-12-09 emacs nix

年末なので

emacsの設定棚卸ししておこうと思います。

ビルド

emacs29.1が最新です。debian unstableでパッケージあるんでそれでもいいんですが、最近若干話題な気がするnixで管理することにします。

emacs-overlayが用意されてるのでそちらを使ってunstable-pgtk版をビルド。(waylandなのでpgtk版がうれしい)

nix home-managerのprograms.emacsで設定ごと管理します。

programs.emacs = {
  enable = true;
  package = pkgs.emacsWithPackagesFromUsePackage {
    package = pkgs.emacs-unstable-pgtk;
    config = ./config/emacs/config.org;
    alwaysTangle = true;
  };
  extraConfig = ''(org-babel-load-file "${./config/emacs/config.org}")'';
};

orgで設定ファイルを書く

orgのコードブロックを使って文芸的プログラミングみたいな感じで書きます。

文芸的プログラミングって複数ファイルを取り扱ったりとかLSPとどう折り合いつけるかとか現代的にはなかなかうまい使い方がなさそうですが、設定ファイルを扱う分には結構あり。

emacs lispのコードブロックならorg-babel-load-fileで一発なので上記のnix設定でもorgファイル読み込むだけの設定追加(extraConfig)してあります。

パッケージ管理

nixのemacsWithPackagesFromUsePackageではなんとemacs lispをパースしてuse-packageで管理しているモジュールをnixパッケージで読み込んでくれます。

しかもorgファイルのコードブロックもパース対象。 ,(´_>∀<)_バカじゃないの

退役モジュールとか

projectileはそれほど多くの機能を使いこなしてるわけでもないし標準のproject.elを使うことにしました。

ivy/councel/swiperは後述のvertico/consultに変えます。ついでにmarginaliaとかも追加設定。

eglotを試していましたがflymakeとエラー情報が同期してくれない(解消してるのにずっとエラーが表示され続ける)ことが多く、lsp-modeに戻します。

treemacsはまあなんかすごいなぁと思いつつも手に馴染むことはなかったのでもういいかなと。dired-toggleに変えてみることにします。

company-modeはcorfuに変更してみることに。まあどっちがいいかそれほど吟味したわけでもないですが。

コマンド補完

anything/helmには手を出さなかったもののidoからivyという感じでとりあえず入れとくといった使い方をしていましたが、今回vertico/consultにしてみます。どっちかというとmarginaliaとembark使いたかったのでついでに変えたというところ。

embarkのアクションはもっと使いこなせるようにしたい。今の所はwdiredとかlinesの結果を一括編集するとかそういったわかりやすい使い方をしている。

プログラミング

eglotは軽いし既存の仕組みとうまくやりとりする作りってのが好みではあるのですがflymakeとの同期がうまくいかないことが何度も発生してしまい断念。 lsp-modeに戻しています。

lsp-modeの補完はcompany-modeが標準っぽいけど補完方法をcapfではなくnoneにするとcorfuでも問題なく動くという不思議。

あとはdockerでコンテナ起動するとかcontainer-trampが標準で使えるのでdevcontainerで開発できないかと考えましたがlsp-modeだとリモート設定がなかなか面倒そうです。来年はここらへん強化したい。

メール

それほど出番ないけどemacsからさっと見るくらいする分のことはできると便利なので設定。今はmu4eが有名っぽいので、mbsyncと一緒に設定する。

なんかメール送信については標準のメール関連設定でやるとか、メールごとの表示設定がgnusと共通だったりして、構成がよくわからないのでとりあえず入れただけという状況。

org roam

1ファイルでがんばるつもりでしたがなんとなくorg-roamを入れてみることにしました。まだそれほど使ってないのでひとまずというところ。

org-roam-uiでグラフを見ているだけでもそれなりに楽しめます。

試そうと思ってるもの

  • shackle, popper
    • ウィンドウ管理するやつ。popwinよりもわかりやすいとか特化してるとかで使いやすそう。
  • elfeed
    • RSSリーダーだが、feedlyと既読管理してくれるなら使いたいところだった。検討中。
  • emms
    • mpdクライアントとして使いたい。id3タグが文字化け状態だとemacs閉じるときにバッファの文字コードが不明みたいに言われてうっとおしいのでそこらへん解消できたら常用したい。

まとめ

あんまり大きな変化はない