brew update で困らないErlang Emacs mode のパスの通し方


概要

Erlang のバージョン変更に強いErlang Emacs mode のパスの通し方を紹介します。
対象読者は、Mac でHomebrew を使ってErlang をインストールした人です。

動機

Homebrew でErlang をインストールした場合、以下のようにパスを通せます。

~/.emacs.d/init.el
(setq load-path (cons "/usr/local/Cellar/erlang/23.1.1/lib/erlang/lib/tools-3.4.1/emacs" load-path))
(setq erlang-root-dir "/usr/local/Cellar/erlang/23.1.1/lib/erlang")
(setq exec-path (cons "/usr/local/Cellar/erlang/23.1.1/lib/erlang/bin" exec-path))
(require 'erlang-start)

しかし、この方法ではErlang のバージョンが変更されるたびにパスを修正する必要があり、非常に面倒です。
ある日Emacs を起動すると突然エラーが表示されたりして、Homebrew を触るのが億劫にすらなってきます。

解決法

以下のようにパスを通します。cl-lib ライブラリのロードをお忘れなく。

~/.emacs.d/init.el
(require 'cl-lib)

(let ((version (car (directory-files "/usr/local/Cellar/erlang" t "" t))))
  (let ((root (concat version "/lib/erlang")))
    (let ((tools (car (directory-files (concat root "/lib") t "^tools"))))
      (setq load-path (cons (concat tools "/emacs") load-path))
      (setq erlang-root-dir root)
      (setq exec-path (cons (concat root "/bin") exec-path))
      (require `erlang-start))))

Erlang のバージョン変更に伴って変更されるディレクトリ名だけを探索しているので、それなりの実行速度で処理してくれます。

PC環境

  • Homebrew 2.5.10
  • Erlang/OTP 23
  • GNU Emacs 27.1

参考文献

The Erlang mode for Emacs