[2014-11-03-1] に package.el から Cask に乗り換え、
[2015-06-17-1] に Cask から El-Get に乗り換えましたが、
結局 package.el に戻ってきました。

理由は M-x el-get-update(-all) の更新がうまくいかず、エラーにな
り、~/.emacs.d/el-get や ~/.emacs.d/elpa を全削除して入れなおすこ
とがよくあったからです。最近は面倒になりアップデートもしなくなりま
した…。

package.el でインストールするパッケージも init.el に書いてしまえば、
何をインストールしたか分かります。なにより Emacs デフォルトの機能
なので安心感があります(私はライトなデフォルト厨)。

バージョンロック出来ない問題は、アップデート前に ~/.emacs.d/elpa
をバックアップすれば良いでしょう…。Time Machine もありますし…。

変更前と後の init.el はこちら。

◆変更前

;; See http://d.hatena.ne.jp/tarao/20150221/1424518030

(add-to-list 'load-path (locate-user-emacs-file "el-get/el-get"))

(unless (require 'el-get nil 'noerror)
  (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)))

;; lock the pacakge versions
(el-get-bundle tarao/el-get-lock)
(el-get-lock)

(el-get-bundle ajtulloch/mkdown.el :name mkdown)
(el-get-bundle ataka/blgrep)
(el-get-bundle ataka/clmemo)
(el-get-bundle auto-complete)
(el-get-bundle coffee-mode)
(el-get-bundle dockerfile-mode)
(el-get-bundle elpa:eldoc-extension)
(el-get-bundle elpa:git-dwim)
(el-get-bundle elpa:hl-line+)
(el-get-bundle elpa:sequential-command)
(el-get-bundle elscreen)
(el-get-bundle flycheck/flycheck :depends (dash pkg-info let-alist cl-lib))
(el-get-bundle go-autocomplete)
(el-get-bundle go-eldoc)
(el-get-bundle go-mode)
(el-get-bundle haml-mode)
(el-get-bundle helm)
(el-get-bundle helm-descbinds)
(el-get-bundle helm-ghq)
(el-get-bundle helm-migemo)
(el-get-bundle highlight-symbol)
(el-get-bundle keyfreq)
(el-get-bundle markdown-mode)
(el-get-bundle masutaka/egg :branch "freeze-time")
(el-get-bundle masutaka/emacs-helm-bundle-show :name helm-bundle-show)
(el-get-bundle masutaka/emacs-helm-hatena-bookmark :name helm-hatena-bookmark)
(el-get-bundle migemo)
(el-get-bundle mori-dev/scratch-log)
(el-get-bundle navi2ch)
(el-get-bundle nginx-mode)
(el-get-bundle open-junk-file)
(el-get-bundle org-tree-slide)
(el-get-bundle osener/github-browse-file)
(el-get-bundle php-mode)
(el-get-bundle quickrun)
(el-get-bundle rspec-mode)
(el-get-bundle savekill)
(el-get-bundle terraform-mode)
(el-get-bundle web-mode)
(el-get-bundle wgrep)
(el-get-bundle yaml-mode)

◆変更後

(require 'package)

;; Emacs JP を始めとして、package-archives の後ろに追加する例が多いので従った。
;; http://emacs-jp.github.io/packages/package-management/package-el.html
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)

;; init.el で package-install() せず、M-x package-list-packages から
;; インストールする場合、これらは不要。package-install() が良しなに
;; 初期化してくれるため。
(package-initialize)
(package-refresh-contents)

;; すでにインストール済みかを package-installed-p() でチェックする
;; 必要はない。package-install() から呼ばれる
;; package-compute-transaction() でチェックしているため。
(package-install 'mkdown)
(package-install 'coffee-mode)
(package-install 'blgrep)
(package-install 'clmemo)
(package-install 'auto-complete)
(package-install 'coffee-mode)
(package-install 'dockerfile-mode)
(package-install 'eldoc-extension)
(package-install 'git-dwim)
(package-install 'hl-line+)
(package-install 'sequential-command)
(package-install 'elscreen)
(package-install 'flycheck)
(package-install 'go-autocomplete)
(package-install 'go-eldoc)
(package-install 'go-mode)
(package-install 'haml-mode)
(package-install 'helm)
(package-install 'helm-descbinds)
(package-install 'helm-ghq)
(package-install 'helm-migemo)
(package-install 'highlight-symbol)
(package-install 'keyfreq)
(package-install 'markdown-mode)
(package-install 'egg)
(package-install 'helm-bundle-show)
(package-install 'helm-hatena-bookmark)
(package-install 'migemo)
(package-install 'scratch-log)
(package-install 'navi2ch)
(package-install 'nginx-mode)
(package-install 'open-junk-file)
(package-install 'org-tree-slide)
(package-install 'github-browse-file)
(package-install 'php-mode)
(package-install 'quickrun)
(package-install 'rspec-mode)
(package-install 'savekill)
(package-install 'terraform-mode)
(package-install 'web-mode)
(package-install 'wgrep)
(package-install 'yaml-mode)

ほとんど同じものが入りますが、egg だけソースが変わっています。

新しいバージョンの egg が気に入らなかったので、
https://github.com/masutaka/egg/tree/freeze-time を使っていました
が、これだけ git submodule 使うのも気持ち悪いので、諦めて MELPA
の egg
を使うことにしました。

私の init.el です。都度更新されます。ホーム からも辿れます。
https://gist.github.com/masutaka/8177244