📌

2025年に Emacs 入門

2025/01/08に公開

2025年に VSCode でも、 Cursor でも JetBrains でも Vim でもなく、 Emacs に入門するお話。普段から Rebuild.fmvim-jp-radio を聞いていると無性に Emacs を試したくなったのがモチベーションです。

環境

  • M1 MacBook
  • macOS Sequoia 15.2

ゴール

  • Emacs.app がインストールされデスクトップアプリとして利用できる
  • Doom Emacs で設定がいい感じになっている

Emacs とは?

ChatGPT に聞くと Emacs は、単なるエディタを超えて自由にカスタマイズできる作業環境として使われています。 とのこと。Vim だとできなかったあれこれが Emacs Lisp を使えば自由にできるという噂は聞いている程度の知識です。

Doom Emacs

設定を一から少しずつ行うのも良いですが、今回はすでにカスタマイズされた Doom Emacs(巨大な Emacs Lisp)を使うことにします。

Emacs をインストール

まずは Doom Emacs のドキュメント通りに試そうとしましたが、上手くいきませんでした。Native Comp になっていなかったり、シンボリックリンクのパスが違うなどが原因でした。

失敗例:

brew tap railwaycat/emacsmacport
brew install emacs-mac --with-modules
ln -s /usr/local/opt/emacs-mac/Emacs.app /Applications/Emacs.app

こちらの記事を参考にリトライ:

brew install gcc glib libgccjit # native comp 関係
brew tap railwaycat/emacsmacport
brew info emacs-mac
brew install *** # info の Requireded 
brew install emacs-mac --with-glib --with-librsvg --with-native-comp --with-xwidgets

エラーと解決

インストールはできるものの、brew link に関するエラーが発生。

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /opt/homebrew
Could not symlink bin/ebrowse
Target /opt/homebrew/bin/ebrowse
is a symlink belonging to emacs. You can unlink it:
  brew unlink emacs

To force the link and overwrite all conflicting files:
  brew link --overwrite emacs-mac

To list all files that would be deleted:
  brew link --overwrite emacs-mac --dry-run

指示通りに link をし直します。

brew unlink && brew link emacs

シンボリックリンクの作成

link に成功したら、シンボリックリンクを homebrew の bin ディレクトリに作成します。

cp -a /opt/homebrew/opt/emacs-mac/Emacs.app /Applications
ln -fs /opt/homebrew/opt/emacs-mac/Emacs.app/Contents/MacOS/Emacs.sh /opt/homebrew/bin/emacs

エラー発生と再インストール

Emacs.app を起動しようとアイコンをクリックしても起動せず、emacs コマンドを実行してもエラーが発生。

Error using execdir /opt/homebrew/Cellar/emacs-mac/emacs-29.1-mac-10.0/Emacs.app/Contents/MacOS/:
emacs: dlopen(/opt/homebrew/Cellar/emacs-mac/emacs-29.1-mac-10.0/Emacs.app/Contents/MacOS/../native-lisp/29.1-dd487a39/preloaded/register-80045398-5a7974d5.eln, 0x0001): tried: '/opt/homebrew/Cellar/emacs-mac/emacs-29.1-mac-10.0/Emacs.app/Contents/MacOS/../native-lisp/29.1-dd487a39/preloaded/register-80045398-5a7974d5.eln' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/Cellar/emacs-mac/emacs-29.1-mac-10.0/Emacs.app/Contents/MacOS/../native-lisp/29.1-dd487a39/preloaded/register-80045398-5a7974d5.eln' (no such file), '/opt/homebrew/Cellar/emacs-mac/emacs-29.1-mac-10.0/Emacs.app/Contents/MacOS/../native-lisp/29.1-dd487a39/preloaded/register-80045398-5a7974d5.eln' (no such file)

既存の emacs が干渉していると考え、再インストールを実施。

brew uninstall --ignore-dependencies emacs
brew uninstall emacs-mac
brew install emacs-mac --with-glib --with-librsvg --with-native-comp --with-xwidgets

最終的に brew link し直して起動に成功。
起動成功

Doom Emacs のインストール

次に Doom Emacs をインストールします。こちらはドキュメントの通りにすすめます。

git clone https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install

インストール後、設定の同期と更新を行います。

doom sync
doom upgrade

Emacs.app を起動すると Doom Emacs になっているはずです。
Doom Emacs

まとめ

今回は Emacs の導入編として、インストールのみに焦点を当てました。次回があれば Org Mode など便利な機能を試したり、普段の開発で使う Rust や Go の環境を整える予定です。

参考

Discussion