最近チームの同僚がScalaのコードベースにscalafmtでフォーマッタをかけてくれて、ソースコードの見通しがとても良くなった。 VSCodeはセーブ時に自動的にLSP経由でコードフォーマットを呼び出す機能(format-on-save)を持っているのだが、コードベース全体がフォーマットされたことで、この設定を有効化できるようになった。 とてもありがたい。 ところでEmacsにもLSPプラグインがあるので、LSP経由でのフォーマット機能は存在するのだが、セーブ時に自動的にフォーマットする機能はないようだ。 そこで、セーブ時に自動的にフォーマッタをLSP経由で呼び出してくれる機能をEmacs Lispで書いた。ディレクトリ・モード単位で有効・無効の設定が可能な設計にした。 コード まずは、以下のコードを.emacsなどに置く。 (defvar project/format-on-save