emacs

emacs設定棚卸し

年末なので 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閉じるときにバッファの文字コードが不明みたいに言われてうっとおしいのでそこらへん解消できたら常用したい。 まとめ あんまり大きな変化はない

そろそろemacs29にしてみるか

emacs29.1がリリースされたしdebian sidもemacs29となったので設定見直しつつ乗り換え。 use-packageが標準入り 最初から入ってるのでブートストラップするとこは削除する。が、straight使ってる場合はそれほど変わらなかったりする。 docker-tramp -> tramp-container docker-tramp でコンテナ内に入っていたが標準でtramp-containerが使えるようになったのでこちらも削除。 csharp-mode これも標準で入ってくる。 pgtk 真にgtk3ネイティブなpgtkコンパイルでwaylandに対応した。透過背景とかちゃんと効くようになった eglot emacsのlspクライアントでlsp-modeと両翼をなすeglotが標準に。 eglotのほうが仕組みが簡素なイメージなのだが、そのせいかtramp下で使うのはなんかeglotのほうがうまく動いてる気がする。ただエラー情報がflymakeと同期してくれないのか修正済みのエラーが表示され続けることが度々。

ox-hugoを使うようにする

ox-hugoとは emacsのorg-modeで書いた文章をhugoで扱えるmarkdownにexportするもの。 なんでox-hugo org-modeから離れられないとかそういう人向け。 orgファイルにすべてを集約しているのでそこからブログに切り出すというワークフローを使いたい。 org-modeのよさ emacsの標準ドキュメンテーション なんでも書ける なんにでも出せる emacs lisp以外でもプログラミングを埋め込むなどできる 表計算まで可能 TODOリストにもなる 大元はアウトラインプロセッサのはず org-modeのよくなさ 多分emacsなしではやってけない 普通はmarkdownでしょ? なんでもできすぎて移行が難しい ひとまず これでやっていく