YAMAGUCHI::weblog

噛み付き地蔵に憧れて、この神の世界にやってきました。マドンナみたいな男の子、コッペです。

package.el + use-package で落ち着いた

はじめに

こんにちは、Arch Linuxをメインマシンにしてから毎日盆栽の手入れのように設定ファイルを弄くりましているものです。今日はEmacsのパッケージ管理を結局 use-package にしましたという話です。

アンケートを取ってみた

なんの気なしにアンケートを取ってみたら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 の利用を考えます。