9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.emacsAdvent Calendar 2015

Day 20

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

Last updated at Posted at 2015-12-20

はじめに

この記事は.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ライフに少しでもお役に立てれば幸いです。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?