オジサン達のための Emacs 環境最新化メモ

Emacs を 30 年も愛用しているオジサン達は、未だに ~/.emacs とか ~/.emacs.el とか使っていたりするので(人の事言えない)、Emacs の環境を最新化して、若い人たちEmacs の事を質問されたときに、
「は?なんでそんな環境古いんすか?w」
なんて言われないようにしましょう。*1

第一段階
まず ~/.emacs.d/init.el に移行しましょう。これは今まで .emacs やら .emacs.el に書いていた設定を init.el にコピペするだけです。簡単でしょう? たぶん package とかは使っていると思うので、全パッケージを棚卸しして、パッケージ群をすべて~/.emacs.d 配下に配置するように再構築したほうが良いです。少し面倒ですが頑張りましょう。

第二弾階
package を卒業して straight に移行します。

;;; package
;; (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
;; (require 'package)
;; (package-initialize)
;; (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))
;; (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;; (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
;; (package-refresh-contents)

package は卒業するのでコメントアウトしてしまいます。Emacs ではリージョン選択して C-c / でバッファモードに合った適切なコメント符号を挿入してくれます。例えば elisp なら「;; 」ですね。賢いぞ Emacs

;;; straight
(defvar bootstrap-version)
(let ((bootstrap-file
       (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-version 5))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

これを init.el に書いて emacs を再起動してください。インストールされているパッケージは straight に移行してくれます。簡単です。

新しくパッケージを導入したい時 その1
今までは

M-x package-install

でパッケージを追加していたと思いますが、これからは

M-x straight-use-package

を使います。

(straight-use-package 'xah-replace-pairs)

straight はインストール済みの場合スキップするので、こんなのを init.el に書いておくと良いです。これは xah-replace-pairs を追加インストールする例です。

(straight-use-package 'popwin)
(straight-use-package 'ivy)
(straight-use-package 'epc)
(straight-use-package 'python-mode)
(straight-use-package 'flycheck)
(straight-use-package 'ddskk)

今までインストールした他のパッケージについても、思い出した時に追記しておくと良いです。すぐに追記する必要は無いですが、次回 Emacs 環境を再構築するとき楽ちんになります。

新しくパッケージを導入したい時 その2
パッケージが gnu や melpa などにアーカイブされている場合は、「その1」の方法で良いのですが、github に登録されているだけのパッケージもあったりします。例えば、今流行りの最新のパッケージなんだけど、まだアーカイブされてない!なんて場合もあったりします。そういう場合、今までの package の方法ではダウンロードして el ファイルをどっかに配置して・・・とか面倒な作業が必要でした。さらにダウンロードした場合、最新版のアップデートは自分管理になってしまいます。これもすごく面倒でやっかいな問題です。

しかし安心してください。 straight ならこれらの問題を簡単に解決します!

(straight-use-package 'use-package)
(use-package chatgpt :straight (:host github :repo "emacs-openai/chatgpt"))

これは emacs から chatgpt を使うパッケージをインストールする例です。straight を使うと、このように github から直接インストールする記述もできます。便利!

ちなみにパッケージのアップデートは自動では行いません。手動作業になります*2
すべてのパッケージを最新版にしたい:

M-x straight-pull-all
M-x straight-rebuild-all

個別にパッケージを最新版にしたい:

M-x straight-pull-package RET <PACKAGE_NAME>
M-x straight-rebuild-package RET <PACKAGE_NAME>

として Emacs を再起動してください。

そして
これで後輩たちに引けを取らない、最新ぽい Emacs 環境に移行できました*3。もう古いなんて言わせないぜ! あとは leaf とかもあるのですが、まだ勉強中なので、ここに書けるほどではありませんwww


それでは。良き Emacs ライフを!

*1:そんな質問してくる後輩は居ないという説もある。いや、後輩は皆 VS CodeEmacs なんて使わないだろ!という説もある(悲しみ) なお、エディタマウントは嫌われるのでやめましょうw 「Emacs はいいぞ―」とか禁句ですwww

*2:更新は手動のほうが良いよね

*3:少なくとも化石みたいな環境からは卒業したw