Help us understand the problem. What is going on with this article?

init.elのスリム化を目指す (Part1)

More than 3 years have passed since last update.

はじめに

この記事は.emacs Advent Calendar 2015の20日目の記事です。

Emacsを使い始めたころは、よくわからないこともあってinit.elに設定のすべてを書き入れていましたが、
次第に修正しづらくなり、「ああ、このままだと詰むな」と思い、スリム化を図ることにしました。

何をしたか

スリム化を図るため、下記パッケージを使用しました。

  • package.el
  • init-loader.el

これらの組み合わせは下記でも紹介されていますね。

私はinit.elを以下のように書き換え、前述のパッケージを使うようにしました。

init.el
(defconst hp-inits-dir (concat user-emacs-directory "inits"))
(defvar hp-melpa-url "http://melpa.milkbox.net/packages/")
(defvar hp-marmalade-url "http://marmalade-repo.org/packages/")
(defvar hp-use-package-list
  '(
    ;; 以下に使用するパッケージを記述する
    init-loader
    scala-mode2
    yasnippet
    auto-complete
    foreign-regexp
    web-mode
    js2-mode
    csharp-mode
    cmake-mode
    helm
    ruby-mode
    ruby-additional
    ruby-block
    org-tree-slide
    )
)

;;; パッケージ
(require 'package)
(add-to-list 'package-archives (cons "melpa" hp-melpa-url))
(add-to-list 'package-archives (cons "marmalade" hp-marmalade-url))
(package-initialize)

;;; 未インストールのパッケージを探す
(require 'cl)
(let ((not-installed 
       (loop for x in hp-use-package-list
             when (not (package-installed-p x)) collect x)))
  (when not-installed
    (package-refresh-contents)
    (dolist 
        (pkg not-installed)
        (package-install pkg))))

;;; 各パッケージの設定ファイルはinits以下に置く.init-loaderがそれを読み込む
;;; ファイル命名規則が存在する (例 : 10-hoge.el)
(when (require 'init-loader nil t)
  (setq init-loader-show-log-after-init 'error-only)
  (when (file-directory-p (symbol-value 'hp-inits-dir))
    (init-loader-load hp-inits-dir)))

このアプローチによって、以下の流れを取ることができるようになりました。

  1. git clone http://myrepos.git
  2. Emacsを立ち上げる
  3. 不足しているパッケージを勝手にダウンロードしてくれる
  4. コーヒーを飲み終わったころには、環境が整っている
  5. EmacsでASP.NET 5は最高 (後日、場を改めてご紹介します)

スリム化は何をもたらしたか?

私はこのスリム化を以下のように評価しています。

Pros.

  • ELPAパッケージをgitで管理しなくて良いため、リポジトリサイズを抑えられる
  • リポジトリサイズを抑えられるため、git cloneの所要時間が抑えられる
  • ロジックボードが焼けてMacがぶっ壊れても、別のMacでEmacs環境を容易に復元できる
  • コードが追いやすくなった

Cons.

  • Emacs初回起動時にELPAパッケージをインストールするので、時間がかかる
  • ELPAからパッケージが消えると、このアプローチでは復元できない

まとめ

いかがだったでしょうか。
皆様がご存知の通り、Emacsはスマートフォン、タブレットと同様に生活必需品の1つであります。
本エントリーが読者様のEmacsライフに少しでもお役に立てれば幸いです。

hiroakit
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away