Emacs 512

Emacsの設定を変更するとき、どんな風に行ないますか? 方法は何通りかあるかと思いますが、もっともエレガントなのは customize を使う方法でしょう。今回は、 customize で覚えておくべき機能を紹介します。

スポンサーリンク

最初に、Customizieを簡単に説明しておきます。俺は設定ファイル(~/.emacs.d/init.elや~/.emacs)で設定する派だ!というかたもおられると思いますので。

Customizeとは

Customizeとは、設定ファイルを直接編集する代りに、設定ダイアログのような役割をもったバッファが開きますので、そこで設定を変更します。変更内容は、Emacsの設定ファイル(init.elや.emacs)へ書き込まれます。(別ファイルにすることも可能)

Emacs本体の設定は当然のこと、追加したパッケージも普通はCustomizeできるように作られています。(作者次第ではありますが)

設定ファイルの直編集と比べて customize のメリットとしては次のようなところでしょう。

  • 設定ファイルの書き間違いのようなことは減る
  • 設定項目にどんな選択肢があるのかわかる
  • 設定項目の内容が説明されている
  • 「ここをカスタマイズして!」というパッケージ製作者の意図がわかる(ソースやドキュメントを読まなくてもある程度わかる)

Customizeに慣れてしまうとネット検索する前にEmacs内で自己解決できる頻度が高くなった気がします。

簡単な使いかた

Windowsの設定ダイアログのように使いたければ、 M-x customize-group から対象のパッケージを選ぶと、関連する設定項目の一覧が表示されます。あまり見やすいものではないのが残念ですね。

僕はいつも M-x customize-option で、補完機能を使いながら、ピンポイントでほしい項目を探しています。

customize の特徴としては、Windowsの設定ダイアログなどにはない、 状態 という考えがあります。設定項目には次の5通りの状態が存在します。

初期状態(STANDARD)

いわゆるデフォルト値

保存済(SAVED and set)

設定ファイルに変更内容が書き込まれている

一時的(SET for current session only)

一時的に変更されているので、Emacsを再起動すると元に戻る

外部で変更(CHANGED outside Customize)

カスタマイズ機能を使わずに変更されている

編集済(EDITED)

編集途中でどこにも反映されていない

Customizeがお手軽でいいなと思うのは、設定を変更したあと、普通にファイル保存のショートカット( C-x C-s )で、「保存済」にできるところです。

C-c C-c を実行すると「一時的」に反映されます。

Emacsに慣れている人なら、よくあるショートカット体系なので、すぐに慣れると思います。

コマンドは種類によって、 customize-facecustomize-option がありますし、 customize-apropos でパターン検索することもできます。

Stateボタンを押下することで項目ごとに状態を変更できます。

  • Save For Future Sessions 「保存済」になる
  • Erase Customization 「初期状態」に戻って設定ファイルも書きかわる
  • Revert This Session's Customization 「一時的」な状態から「保存済」へ戻る

便利なコマンド

さらに覚えておくと便利なコマンドを紹介しておきます。

野良設定を探しだす

customize を使わずに設定を変更している項目は、 M-x customize-rogue で一覧表示できます。

init.el等の設定ファイルで直接変更している項目のなかで、 customize に対応しているものがこれでわかるので、 customize へ移行する場合に参考になります。ただ、自分で変更していないのに、変更したことになっている項目があるのが微妙ですが。

現在のカスタマイズ状態を確認する

M-x customize-saved を実行すると、「保存済」な項目を一覧で表示できます。

現在の一時的なカスタマイズ状態を確認する

M-x customize-unsaved を実行すると、「一時的」な項目を一覧で表示できます。

設定ファイルがスッキリ

customize を使うようになってからは、init.elが以前よりもすっきりしました。

設定ファイルで変更する方法だと、単にコードをハッキングしているだけなのか、製作者の意図に従っているのかあいまいだったのが、 明確になるのもいい感じです。