December 30, 2024
Emacs セットアップ (English)¶
最近エディターは、Vim と VSCode に乗り換えていたのだが、やはり Emacs が一番使いやすいと思い直し、再度セットアップを行ったのでメモ書き。
Emacs のビルド¶
Emacs の設定を行う elisp という言語は、後方互換を壊す変更が頻繁に行われる。 なので、自分でビルドする事でバージョンを固定してしまおう。
今回は 29.4 をビルドする。 以下、Debian 12 での手順である。(おそらく Ubuntu 24.04 でも、ほとんど同様にビルドできるはず)
# 必要なパッケージをインストール
$ sudo apt update
$ sudo apt install build-essential pkg-config libgnutls28-dev libtinfo-dev texinfo
# ソースコードを取得
# https://www.gnu.org/software/emacs/download.html の `nearby GNU mirror` から身近なミラーサイトを選ぶ
$ wget https://ftp.gnu.org/gnu/emacs/emacs-29.4.tar.xz
$ tar xvf emacs-29.4.tar.xz
$ cd emacs-29.4
$ ./configure --without-x
$ make
$ sudo make install
straight のセットアップ¶
Emacs のパッケージ管理は、straight というパッケージ管理システムを使うことにする。
詳細は 公式ドキュメント を参照。
以下の内容を ~/.emacs.d/init.el に追記する。
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name
"straight/repos/straight.el/bootstrap.el"
(or (bound-and-true-p straight-base-dir)
user-emacs-directory)))
(bootstrap-version 7))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(setq package-enable-at-startup nil)
Copilot のセットアップ¶
次に、コーディングのためにパッケージ copilot を導入する。 多くのパッケージは straight で管理するだけで十分だが、copilot は nodejs を必要としており、 かつ初期実行に色々と行う必要がある。
nodejs と npm のインストール¶
Debian の nodejs はセキュリティーアップデートがされないため nvm でインストールするのが一般的だが、 今回は簡単のため apt でインストールする。
$ sudo apt install nodejs npm
copilot の設定¶
以下の内容を ~/.emacs.d/init.el に追記する。
(use-package copilot
:straight (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))
:ensure t)
(require 'copilot)
(add-hook 'prog-mode-hook 'copilot-mode)
(define-key copilot-completion-map (kbd "<tab>") 'copilot-accept-completion)
(define-key copilot-completion-map (kbd "TAB") 'copilot-accept-completion)
; (add-to-list 'copilot-major-mode-alist '("enh-ruby" . "ruby"))
最後の行は enh-ruby-mode で copilot を有効にするための設定例である。 まあ、こんな設定が無くとも 'prog-mode-hook に追加してあるので大抵の言語で copilot が有効になるだろう。
copilot-server のインストールとログイン¶
最後に emacs 上で下記の様に実行し copilot-server のインストールとログインを行う。
M-x copilot-install-server
M-x copilot-login
すると emacs の minibuffer に以下の様な文言が表示されるはずだ。 (バージョン等により、多少は異なるかもしれない。)
First copy your one-time code: ABCD-1234. Press Enter to continue.
ここで one-time code をコピーし、 Enter キーを押す。
すると、次に minibuffer に以下の様な文言が表示されるはずだ。
Please open https://github.com/login/device in your browser. Press ENTER if you finish authorizing.
上記 URL をブラウザで開き、 one-time code を入力する。 すると、ログインまで完了するだろう。
なお、login の URL は必ずしも emacs 実行中の PC のブラウザーで開く必要はない。 GUI をインストールしていない開発マシンにも、導入することが可能である。