macOSやLinux、WindowsのWSLやChromeOSまで。unix系OSのパッケージ管理システムが動作する環境では、Emacsをソースからmakeして使うことがほとんどなくなった。その結果、使う環境によってEmacsのバージョンが異なる場合がある。
新しい環境を作ったときは、初期化ファイルなどが含まれる .emacs.d フォルダを既存環境から新しい方にまるごとコピペしたりもするが、Emacsのバージョンが既存環境よりも古くなる場合(既存Mac・新規Ubuntu等)がある。そうすると、Emacsの起動時にMessageバッファに以下のような警告が表示される。
Source file ‘/home/user/.emacs.d/elpa/bind-key-20210210.1609/bind-key.el’ newer than byte-compiled file
.emacs.d フォルダ配下にバイトコンパイルしたファイル(各種パッケージのもの)が古いぞ、といった状況。目に見える実害はないけど、気持ち悪い。
であれば、新しいEmacsでバイトコンパイルしなおせばよかろう。けど、.emacs.d フォルダ配下にある el ファイルを一括でバイトコンパイルする方法は?
簡単でした。そう、Emacsならね。
How to rebuild ELPA packages after upgrade of Emacs
https://stackoverflow.com/questions/24725778/how-to-rebuild-elpa-packages-after-upgrade-of-emacs
安定の stackoverflow。最近は機械翻訳のノイズサイトが多くて、本家にたどり着きにくくなっているのが玉にキズ。(Chrome/Firefoxなら拡張機能で幸せになる方法はある)
M-: (byte-recompile-directory package-user-dir nil 'force)
package-user-dir(~/.emacs.d/elpa とか)配下にある el ファイルを一括でバイトコンパイルする、というコマンドを実行するというもの。
あぁ幸せ。