fnwiya's quine

自分自身を出力するブログ

package.elでパッケージを一括管理&いらないパッケージ削除

パッケージ管理はpackage.el(標準のもの)で行っているのですが、
お試しでパッケージを導入していたらelispフォルダ(packageのインストール先)がかなりごちゃごちゃになってしまって、
もう使っていないものもあったので整理しました。
以下のコードをinit.elに記述して、
elisp以下のファイルを全部消去->emacsの起動で依存パッケージも含めインストールされます。
定期的に綺麗にしてあげると見通しもよくなっていいですね。
ちなみに同じ用途でel-getなどのパッケージ管理方法もありますが、
今のところmelpaにないパッケージの利用はないので標準機能でおこなっています。
そのうち移行するかもしれません。

(require 'package)
(setq package-user-dir "~/.emacs.d/elisp")
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)

(require 'cl)
(defvar installing-package-list
  '(
    ;; package list
    ace-jump-mode
    anzu
    auto-async-byte-compile
    auto-capitalize
    auto-complete
    bind-key
    c-eldoc
    cl
    codic
    easy-kill
    el-get
    exec-path-from-shell
    expand-region
    flycheck
    flyspell
    google-c-style
    google-translate
    helm
    helm-flyspell
    helm-migemo
    helm-projectile
    helm-swoop
    highlight-indentation
    highlight-symbol
    init-loader
    js2-mode
    linum
    magit
    markdown-mode
    migemo
    multi-term
    multiple-cursors
    neotree
    open-junk-file
    package
    popwin
    projectile
    python-mode
    quickrun
    rainbow-delimiters
    rainbow-mode
    recentf
    recentf-ext
    saveplace
    sequential-command
    server
    smartparens
    smartrep
    smooth-scroll
    tabbar
    twittering-mode
    undo-tree
    use-package
    volatile-highlights
    wdired
    web-mode
    wgrep
    yasnippet
    ))
(let ((not-installed (loop for x in installing-package-list
                            when (not (package-installed-p x))
                                                        collect x)))
  (when not-installed
      (package-refresh-contents)
          (dolist (pkg not-installed)
                  (package-install pkg))))