このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

Emacsパッケージマネージャーと設定

~/.emacs.d/もinit.elもグチャグチャ。なんとかせねば。

まず、パッケージマネージャー。標準のpackage.elとauto-installとel-getと3つある(Caskは使わない)。どうしたものか? 次のようにすることにした。

  • el-getありきとして、el-getのブートストラップは、http://d.hatena.ne.jp/tarao/20150221/1424518030#tips-isolated-setup に従ってやる。
  • (add-to-list 'load-path (locate-user-emacs-file "el-get/el-get")) これだけは必要となるが、あとは el-get/* にパッケージが入り、ロードパスも通るので、add-to-list 'load-path は不要となるはず。
  • initの設定記述を簡単にするために、bind-keyとuse-packageを使う。(require 'bind-key) (require 'use-package) が必要。これ以降は requireは不要となる。bind-keyとuse-packageがないなら、ここでエラーとなる。bind-key, use-packageの自動インストールも出来るが、とりあえずそれはいいとする。

ここまでのブートストラッピングは:

;; 最初だけ、ロードパス設定が必要。
(add-to-list 'load-path (locate-user-emacs-file "el-get/el-get")) ; これは必要
;; el-getの導入、なければ持って来てインストールする。
;; el-get自体が、el-get管理下になる。
(unless (require 'el-get nil 'noerror)
  ;; githubから.elファイルを取ってきて評価する。
  (with-current-buffer
      (url-retrieve-synchronously
       "https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el")
    (goto-char (point-max))
    (eval-print-last-sexp)))
(el-get 'sync) ; インストールを直列・同期的に実行するように指定

;; use-package を使えるようにする。
(require 'bind-key)
(require 'use-package)

ここから先はuse-package構文で書く。

;; auto-install
(use-package auto-install
  :config
  (auto-install-update-emacswiki-package-name t)
  (auto-install-compatibility-setup)
)
;; package.el
(use-package package
  :config
  ;; Add package-archives
  (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
  (add-to-list 'package-archives '("tromey" . "http://tromey.com/elpa/") t)
  (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
  ;; Initialize
  (package-initialize)
)

ProofGeneralやESSがuse-packageで書けるかどうかは分からないが、そういうのは例外でもしょうがないだろう。