oxfmtとApheleiaでEmacsの保存時整形を実現したときのメモです。
JavaScript/TypeScriptの開発で、Prettierの「Format on Save(保存時整形)」はもはや必須だと思っています。
今回は、Rust製のフォーマッタ「oxfmt」をEmacsに導入した設定を紹介します。
oxfmtとは?
oxfmtは、Oxcプロジェクトが開発しているPrettier互換のフォーマッタです。
公式ベンチマークでは、特定条件下で Prettier より大幅に高速な結果が示されており、保存時整形の体感待ち時間を大きく減らせると思われます。
Our benchmarks show Oxfmt to be approximately 30x faster than Prettier and 2x faster than Biome.
ツールのインストール
oxfmtをグローバルにインストールします。
npm install -g oxfmtEmacs側の設定
apheleiaを使いました。apheleiaにはoxfmtのformatter定義が標準で用意されているので、設定ファイルに以下のように書きます。
(use-package apheleia
:ensure t
:config
(apheleia-global-mode +1)
;; typescript-ts-mode など、使っている各モードにoxfmtを割り当て
(setf (alist-get 'typescript-ts-mode apheleia-mode-alist) 'oxfmt)
(setf (alist-get 'tsx-ts-mode apheleia-mode-alist) 'oxfmt)
(setf (alist-get 'js-mode apheleia-mode-alist) 'oxfmt)
(setf (alist-get 'js-json-mode apheleia-mode-alist) 'oxfmt))私はTypeScript/TSX中心なので上のモードだけ割り当てましたが、必要に応じて追加してください。
まとめ
使ってみた感想としては、Prettier互換なので設定移行のストレスが少なく、速度も速いので、非常におすすめです。