年末なのでEmacsの設定ファイルを見直しますよ

年末ですね

大掃除の季節なので、普段使っているEmacsの設定ファイルを整理してみました。 ついでに前から気に入らなかった部分を直したり、便利そうなものを追加したので、いくつかピックアップして書いておきます。

全体の設定ファイルはGitHubに置いてあります。

ser1zw/dotfiles - GitHub

設定ファイルを分割してinit-loader.elで読み込み

今までは.emacs.elに設定を全部書いていたのですが、いい加減見通しが悪くなってきたので分割することに。

分割したファイルの読み込みのため、指定したディレクトリ内にある設定ファイルを読み込んでくれる便利ツール init-loader.el(オリジナルに改良を加えたもの) を導入しました。 エラーがあったファイルは無視して他のファイルの設定を続行してくれるのが素敵です。

デフォルトでは起動時にログバッファが表示されてエラーなどの状況がわかるようになっているのですが、毎回表示されるのはさすがにアレなので、エラーがあったときだけ表示するようにしています。

(require 'init-loader)
(setq init-loader-show-log-after-init nil) ; 起動時のログバッファを表示しない
(init-loader-load "~/.emacs.d/config")

(if (not (equal (init-loader-error-log) "")) ; エラーがあったときだけログバッファを表示
    (init-loader-show-log))

package.elでパッケージ管理

Emacs 24から標準搭載されたパッケージ管理システム package.el を使うようにしました。 GNUのだけだとパッケージが少ないのでMELPAとMarmaladeのリポジトリを追加しているのですが、それでも微妙に欲しいパッケージが無かったりするので、そういうのは手動で。

(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))

tabbar.elでタブエディタ化

前からEmacsにもタブが欲しいと思っていたので、この機会に tabbar.el でタブをつけてみました。 さすがにバッファ全部がタブで表示されると邪魔なので、*scratch*バッファ以外の * で始まるバッファはタブに表示しないように設定しています。

(require 'tabbar)
(tabbar-mode 1)

(defun my-tabbar-buffer-list ()
  (delq nil
        (mapcar #'(lambda (b)
                    (cond
                     ;; Always include the current buffer.
                     ((eq (current-buffer) b) b)
                     ((buffer-file-name b) b)
                     ((char-equal ?\  (aref (buffer-name b) 0)) nil)
		     ((equal "*scratch*" (buffer-name b)) b) ; *scratch*バッファは表示する
		     ((char-equal ?* (aref (buffer-name b) 0)) nil) ; それ以外の * で始まるバッファは表示しない
                     ((buffer-live-p b) b)))
                (buffer-list))))
(setq tabbar-buffer-list-function 'my-tabbar-buffer-list)

まとめ

そんなわけで、Emacsの設定ファイルを整理しました。