Emacsには「auto-insert」と呼ばれる仕組みがあり、特定のファイルを新規に作成した際、自動的にテンプレートを挿入することができます。
例えば*.htmlやREADME.mdなど、決まり切った内容を毎回埋める必要があるファイルの場合、その準備が一瞬ですむので大変便利です。
しかし昨日、なぜかこの機能が動作しなくなっている事に気がつきました。MacPortsでインストールした「GNU Emacs 29.1」で発生し、一つのMacではなく複数のMacで同じように急に動かなくなっていたのです。
hookの設定が変わった?
エラーメッセージも特に表示されないため、解決の糸口が見つからなかったのですが、根気よく調べいていたところ次のような情報を発見しました。
add-hook
しているfind-file-not-found-hooks
をfind-file-hook
に変更すれば良いという情報です。記事が書かれた日付が2013年11月10日ということもあり、今回の問題が修正できるとも思えませんでしたが、ダメ元試しに変更してみたところ、再び動作するようになりました。
修正後の設定です:
(require 'autoinsert) (setq auto-insert-directory "~/uconf/emacs/templates") (setq auto-insert-alist (nconc '(("\\.html$" . "template.html") ("\\.js$" . "template.js") ("README\\.md$" . "README.md") ) auto-insert-alist)) (add-hook 'find-file-hooks 'auto-insert)
2024年の今、何故この問題が手元の環境で発生したのか不明ですが、とりあえず解決することはできました。