概要
emacs の設定ファイルである el ファイルをフォーマットする方法を紹介します
環境
- macOS 15.3.2
- emacs 30.1
- python 3.12.9
インストール
- package-list-packages
- elisp-autofmt -> x -> y
フォーマット実行
- M-x elisp-autofmt-buffer
emacs を実行しているパスで python コマンドが使えないとダメなので注意しましょう
トラブルシューティング
実行時に
elisp-autofmt: error output
Note, built-in variable ‘image-scaling-factor’ not bound
となる場合は再度 elisp-autofmt-buffer
を実行すればエラーが解消されます
自動起動
(add-hook 'emacs-lisp-mode-hook 'elisp-autofmt-mode)
(add-hook 'lisp-mode-hook 'elisp-autofmt-mode)
これで el ファイル保存時に自動でフォーマットしてくれます
うまく保存時にフォーマットしてくれない場合は以下でも OK です
(add-hook 'before-save-hook 'elisp-autofmt-buffer)
CLI で実行
emacs が必要ですが CLI からも実行できます
https://codeberg.org/ideasman42/emacs-elisp-autofmt/src/branch/main/elisp-autofmt-cmd.py を使っても OK です
for file_name in `git ls-files files | egrep -e 'el|emacs'`
do
emacs --batch $file_name -l ~/.emacs.d/elpa/elisp-autofmt-*/elisp-autofmt.el --eval "
(progn
(let ((use-stdout nil))
(dolist (buf (buffer-list))
(with-current-buffer buf
(when (buffer-file-name)
(setq buffer-undo-list t) ;; Disable undo.
(if use-stdout
(progn
(elisp-autofmt-buffer)
(princ (buffer-substring-no-properties (point-min) (point-max))))
(princ buffer-file-name)
(princ \"\n\")
(elisp-autofmt-buffer-to-file)))))))"
done
こちらも実行するパスに python が必要になるので注意しましょう
最後に
elisp-autofmt をインストールして elisp ファイルの自動フォーマットをしてみました
次回は CI を組み込んで lint してみたいと思います
0 件のコメント:
コメントを投稿