はじめに
こんにちは、Arch Linuxをメインマシンにしてから毎日盆栽の手入れのように設定ファイルを弄くりましているものです。今日はEmacsのパッケージ管理を結局 use-package にしましたという話です。
アンケートを取ってみた
Emacsのパッケージ管理何使ってますか?
— Yoshifumi Yamaguchi (@ymotongpoo) 2017年11月9日
なんの気なしにアンケートを取ってみたら100人以上の方にご回答頂きました。ありがとうございました。結構 package.el だけの人っていうのは多いなあという印象でした。
なんでuse-packageも使うようにしたか
次のような考え方が前提にありました。
- 外部コマンドに依存したくない
- 依存パッケージの管理を別ファイルで行いたくない
- init.elで管理対象の拡張は領域ごとに分けておきたい
1つめの条件でCaskが消えました。2つめの条件でel-getは若干対象外としました。 package.elだけの場合、custom変数が保存される、ということだったけど、複数台のマシンで共有してたら中身がところどころ抜けてしまい、あまり信頼できない状態になってしまったのでやめました。
use-packageの設定
まず init.el は、とりあえず use-package.el が入ってなかったらインストールして、あとは必要に応じて use-package
で拡張を呼び出しています。 :ensure t
によって自動でインストールされるのは便利ですね。
(require 'package) ;; Added by Package.el. This must come before configurations of ;; installed packages. Don't delete this line. If you don't want it, ;; just comment it out by adding a semicolon to the start of the line. ;; You may delete these explanatory comments. (package-initialize) ;;;;; add melpa and orgmode for packages (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/"))) (unless package-archive-contents (package-refresh-contents)) ;;;;; ensure to use use-package (when (not (package-installed-p 'use-package)) (package-install 'use-package)) (require 'use-package) ;;;;; init-loader (use-package init-loader :ensure t :config (init-loader-load "~/.emacs.d/inits"))
しばらくはこんな感じでやってこうと思います。いまのところ野良拡張の必要に迫られることなく使ってるけど、もし必要になったら、そのときは el-get の利用を考えます。