目次

はじめに

今年のふりかえりってやつをしたいのでとりあえず今年入れた Emacs の設定更新をざっと舐めていく。

とりあえずチェック用のクエリは以下。 https://github.com/mugijiru/.emacs.d/pulls?q=is%3Apr+is%3Amerged+author%3Amugijiru+merged%3A2024-01-01..2025-01-01+sort%3Acreated-asc

なんか161個も PR がある。多いな……。

なお当初は月毎に並べてふりかえろうとしてたけど数があまりにも多くてカテゴリ毎にふりかえる方が良さそうなのでそうする。

Moderinize

古い記述を新しい記述に置き換える作業。地味に大事。あんまりやってないけど。

setq → custom-set-variables

custom-set-variables → setopt

global-set-key → keymap-global-set

global-set-key から keymap-global-set に置き換え

tree-sitter

treesit-auto

今年になってから *-ts-mode デビューした。 treesit-auto を導入すると *-ts-mode が確認されているやつは自動的にインストールしてそれを使うようにしてくれて便利ってことでその対応をしたり

Copilot

copilot.el

昨年から copilot.el を導入しているのでその調整

各モードでの有効化

warning を黙らせる対応

copilot 関係のキーバインド

copilot-chat

Ruby 関係

major-mode

  • https://github.com/mugijiru/.emacs.d/pull/5791
    • ruby-ts-mode を使えるようにするため enh-ruby-mode に使ってるのと同じ hook を追加している
    • のだけどインデントの挙動の問題で結局 enh-ruby-mode を使っている

YARD 周り

erb

リファレンス検索

Ruby 関係のキーバインド調整

Ruby 周りのその他の調整

projectile

コマンドの追加など

projectile-switch-project の調整

projectile 関係のキーバインド調整

lsp-mode

eslint の自動フォーマット

eslint のフォーマットに lsp-format-buffer を使うようにしたり lsp-eslint-fix-all を使うようにしたりしている。うまく動いてくれないって悩んでた。最終的には lsp-eslint-apply-all-fix を使うようにしたみたい

TypeScript 周りの調整

  • https://github.com/mugijiru/.emacs.d/pull/3844
    • 監視対象ファイルが多いぞいって怒られるので無視するディレクトリの指定をしたりインデント設定の調整をしたり
      • 監視対象が多いってのは大体 eslint で怒られてた気がする
    • tsx-ts-mode を入れたばかりで調整が必要な時期だったっぽい
  • https://github.com/mugijiru/.emacs.d/pull/4187
    • ここでも無視するディレクトリを調整している

graphql-lsp

lsp-tailwindcss

TailwindCSS を使うことになったので導入した

lsp-mode 関係のキーバインド調整

起動処理の修正

コード検索

color-moccur & moccur-edit

rg.el

キーバインド調整

org-mode 関係

org-mode 本体周り

バージョン更新騒動

バージョンを 9.7 に上げようとして諦めたという流れがありました。ただ ox-hugo や org-gcal が動かなくなるので今は 9.6 に固定しています

そして orgit が org-mode 9.7 に依存するようになっていたけど orgit をあまり使っていないので、じゃあこいつにいなくなってもらおうという判断で消えてもらってたり

tangle の調整

org-mode 周りのその他の変更

org-agenda

設定の記述分割

init.org で1つのコードブロックに全部書かれていたけどそれだとドキュメント的に微妙だったので分割して書けるようにしていた

custom command の調整

agenda の表示はずっと課題なので度々修正している

org-journal

昨年から org-journal を導入しているのでちょこちょこと調整をしている

Optimize

journal ファイルが増えて来て遅くなったのでそれを解消したりしていた

refile の調整

org-journal ファイルを新しく作った時にそのファイルが refile のターゲットになるようにしている。その日やる予定のタスクなんかは journal ファイルに移動する運用なので、これがないと厳しい。

本来は org-journal の機能で自動的に良い感じにしてくれた気がするけど、 Optimize でそれを無効化しているので自前で適当に対応している。

journal ファイルを org-clock-report の対象になるように調整

これも Optimize の影響で良い感じにならなくなったやつの対応かな org-clock-report の対象にその日の journal ファイルも入れたいので org-agenda-files を良い感じに調整するコマンドを追加した。

コマンドではなく何かの hook で動くとより便利な気がするけどまだそこまでは設定してない

org-roam 連携

org-capture

ぱっとメモを取るのに org-capture は便利でよく使ってるけど使っていると不満が出て来るのでちょこちょこ更新している

capture template の更新

出力内容を増やしたり減らしたりしている。未だに最適な出力が分からない〜

org-protocol-capture-html

org-protocol-capture-html ってのをフォークした上で導入している。

Web ページを org-mode の記述に変換して capture できるやつ。なんだけど活用できてない。ま、うまく変換できないこともあるしね

org-gcal

org-download

org-mode 関係のキーバインド調整

el-get

レシピ修正

自前でレシピを適当に置いているけど、まあまあミスってるので度々修正している。これにミスがあるとパッケージの更新 PR 作成ワークフローがコケてしまったりする

依存関係の調整

時々依存関係に変更があるのでそれに追従している

ブランチ指定漏れ対応

自前のパッケージ自動更新機構の都合上 main ブランチで開発されている場合はそれを指定しないといけなくなっているので、度々その修正をしている

その他のレシピ修正

el-get 関係のキーバインド調整

パッケージ更新

自動で毎日 PR が作られるようにしているけど時々うまく動かなかったり、更新したら壊れたりするのでそういう時は手で対応している。

手動パッケージ更新

magit 系のパッケージが texi ファイルで差分を生むようになっていて el-get-update ができなくなっていたのでローカルでごにゃごにゃ対応してるやつ

それ以外にもレシピがおかしくて更新できないパターンもある

自動更新処理の修正

手動更新なんてしたくないので問題が起きた時は修正している。

Revert

その他

CI

CI 上の Emacs の指定変更

CI 周りのその他の調整

init.org の調整

コードとドキュメントの同期

今年の頭まではドキュメントとコードにズレが生じていたのでそのズレを解消するための PR が度々立てられていた。

なんだけど https://github.com/mugijiru/.emacs.d/pull/3915 で差分を検知するための workflow を追加している。というわけでここからはズレが生じないはず。

その他のパッケージ関係

tsx 関係の修正

text-lint

pdf-tools

git-modes

CalibreDB

blamer.el

  • https://github.com/mugijiru/.emacs.d/pull/4282
    • カーソル位置のコミット情報を見られるようにするやつが便利そうなので入れてみている
    • とはいえ実際なんか vc-annotate の方をよく使う気がする……

emojify

smartparens-mode

minimap

company-mode

dmacro.el

dmacro.el は秋フェスで聞いて便利そうだから入れた。けどイマイチ活用できてない。無念。

docker.el

which-function-mode

デフォルトで入ってる which-function-mode って便利そうだなってことで設定してみている。最初はただの minor-mode だと思ってたけど実はこいつ global-minor-mode だったということに気付いて設定を修正したり。

plantuml-mode

nerd-icon-dired

  • https://github.com/mugijiru/.emacs.d/pull/5877
    • dired にアイコン表示をしたくなったので nerd-icon-dired を追加
    • でも dired でファイル追加した時とかのアイコン表示位置がおかしいんだよな〜

Eask

sqlformat

  • https://github.com/mugijiru/.emacs.d/pull/5972
    • SQL を書く仕事をしている時に整形したいなあってことで導入した。
    • また SQL を書く時に存在を思い出せると良いな
    • major-mode-hydra でも定義する?

chatgtp-shell

その他のキーバインド調整

Hydra

key-chord

不要な設定の削除

レビュー対象 PR 抽出用スクリプトの変更

その他の設定

ふりかえり

  • 全体
    • 1年分まとめてふりかえるの大変だったから来年は小まめにやりたいね……!
  • 新しく使い始めたもの
    • copilot-chat が良い感じ
      • chatgtp-shell も気になるけどあまり触れてないな〜
    • rg.el + wgrep
      • ここ最近よく使ってる。便利。
    • tree-sitter
      • TypeScript 系はこれで良さげ。
      • Ruby, YAML はインデントが微妙なので戻したけど
        • tree-sitter がそのあたりも担当するはずなので頑張ればなんとかなるのか……?
  • Ruby 関係
    • 色々更新して良くなった部分もある
    • けど、使ってないのも沢山あるなあ……
      • bunlder.el, ruby-refactor, etc…
      • リファレンス検索も今のところあまり使ってないし
  • projectile
    • Ruby 関係を弄ったついでか結構弄った。良き
    • finder を色々追加しているけど projectile-find-file で間に合う場合そっちを使いがち
      • Dockerfile を開くとかね……
      • counsel-projectile-org-capture は良さそう
  • lsp-mode 周り
    • 面倒なのであまり設定弄りたくないけど度々重くなるので困ってる様子
    • 自動フォーマットもちょくちょく動かなくなるので悩ましい
      • 重くて LSP サーバが反応しないとかもあって切り分けも面倒。
  • org-mode 関係
    • agenda 周りで困ってることがよくわかる。未だに困ってるもんね。
    • org-journal 周りも結局 org-agenda-files への登録系で困ってるからね
    • org-roam はイマイチ活用できてないかも。とはいえ時々メモを入れてるけどね
      • org-capture を調整すると便利なのかも
  • el-get
    • 自動パッケージ更新 PR 作成周りがちょくちょくバグるけど、十分助かってる感じ
  • その他
    • ちょっとだけ Modernize しているの良き
    • ドキュメントとコードがズレない仕組みを入れてるの素晴らしい
    • sqlformat は出番は少ないけど地味に便利。次 SQL 書く時まで忘れないであげてほしい
    • textlint は割と無視しているので要らないかもしれない
    • 選択範囲から GitHub のコード検索に飛べるようにしているのは地味に便利。
      • emacs lisp のコードとかよく調べている
    • blamer.el あんまり要らないかも。vc-annotate 便利。
    • minimap もそう
    • nerd-icons-dired も挙動変なところあるし

来年トライしたいこと

  • tab-bar-mode
    • 便利らしいので気になってきた
  • leaf.el
    • そろそろ設定ファイルの書き方も Modernize したいなって
  • 脱 el-get
    • straight.el とかの方が使い方的には合ってそうな気がして
  • 読書環境の調整
    • pdf-tools とか入れてるけど活用できてない
    • ちゃんと本を読んでメモる習慣を身に付けたい
      • なお昨今は iPhone の読み上げに頼ってるので腰を据えて読書する方針とは相性が悪い模様
    • CalibreDB もちゃんと更新しようね僕……
  • smartparens → puni 移行を検討したい
    • なんなら今年やりたかった