OPL日本語訳(参考)Emacsを自分流にカスタマイズすればプログラミングやメール、Webブラウジ ング等、最高の環境を手に入れることができます。しかし、Emacsに新しいソ フトウェアを追加したりカスタマイズするためにはelispの基礎知識が必要に なる場面も多く、ソフトウェアの追加を躊躇される方もいらっしゃるようです。
Emacsカスタマイズに必要な最低限のelispの知識や、Emacsの設定ファイル(.emacsファイル)で発生するエラーの対処方法などを中心に解説したいと思います。
世間ではテキストエディタということになっていますが、ただのエディタではありません。
他にもelispアプリケーションをインストールすることもカスタマイズといえるかもしれません。
※Emacsをカスタマイズするのとelispアプリケーションを作るということの境目は特に無いと考えて良いでしょう。(但し作ったアプリケーションを配布しようとすると少し事情が変ってきます。この資料では扱いません)
人それぞれ好みが違うからだと思います。
例えば、「なんで、ここはこう動いてくれんのや!」という場面があるたびにカスタマイズし、違和感がなくなるまで続けていけばいいのです。
要はEmacsを自分の使いやすいものにできればいいのです。 どんな手段があるのでしょうか?
Emacsが始動する時のelispファイルの読み込み順について解説します。これにより、.emacsの位置付けがわかるでしょう。
Emacsは始動時に、startup.elというファイルをロードして実行します。以下はstartup.elでの処理内容です。
※ ここでは GNU Emacs 20.6 の動作を例として挙げています。XEmacs等では少し違うかもしれません。
.emacsはユーザー毎の設定を記述するのを目的としたファイルです。
代表的なS式の表記は
( 関数 引数1 引数2 ... )
のような形式です。
; コメント ; (1 + 2) * 3 を実行する式 (* (+ 1 2) 3)
; シンボルの例 abc this-is-a-symbol
特別なシンボルです。(値を変更することはできません。)
tは真、nilは偽 を表わすのに使われます。(if 等の評価値や 真偽値を返す関数等)
elispアプリケーションでは、機能をon/offする変数に t か nil を入れるようになっているものが多いです。
変数に値をセットする最も一般的な方法です。(lispではシンボルにバインドすると言う)
(setq シンボル 式) ※ 第一引数は評価されません。
; シンボル a に 計算結果をバインドする (setq a (+ 1 2)) ; シンボル this-is-a-symbol に nil を代入する (setq this-is-a-symbol nil)
指定ファイルをロードして評価します。
; t.el をロード・評価します。 (load "t.el")
Emacsに関係するユーザー設定をメニューで変更できるものです。
ほとんどのアプリケーションは この customize を利用して代表的な設定項目を変更できるようになっています。
defcustom関数で作った変数には、(カスタマイズグループ名、設定されるべき値の型、値の取るべき範囲、デフォルトの初期値)などの情報が指定されているため、Emacsはその情報を利用して対話的なインターフェースを作ることができます。
customize機能のトップ画面を生成する
M-x customize
指定カスタマイズグループのトップ画面を生成する
M-x customize-group カスタマイズグループ名
指定キーワードを含む設定項目を抜き出した画面を生成する
M-x customize-apropos キーワード
カスタマイズ変数は必ずしもcustomize機能から対話的に設定しなくても良いのです。setqを使って直接、変数を変更することができます。
但し、注意しなければならないこともあります。
カスタマイズ変数に関連する挙動は次の通りです。
例
(defcustom test-var nil "A variable for test" :type 'boolean :group 'test)
(setq test-var t) (defcustom test-var nil "A variable for test" :type 'boolean :group 'test)
(setq test-var t) (defcustom test-var nil "A variable for test" :type 'boolean :group 'test) (custom-set-variables '(test-var nil))
.emacsを変更しているうちに、括弧の対応が合わなくなってエラーになる等の問題が出てきます。
ここではその場合の対応方法等を解説します。
M-x check-parens
.elcファイルは .elをEmacsでバイトコンパイルしたものなのですが、これはXEmacsとGNU Emacsでフォーマットが 異なります。ですので、.elcファイルを共有しようとするとエラーが出ます。
問題が無いかどうかは以下のようにして調べます。
M-x apel-version
ここまで来ると、かなり高度な話題になります。一応指針だけ書いておきます。
基本的な部分のカスタマイズはそれほど難しくないということが分かっていただけたと思います。
Emacsのカスタマイズは無限です。興味を持ったら以下の資料等でelispを習って次のステップに進みましょう。
Bil Lewis,Dan LaLiberte, Richard Stallman and the GNU Manual Gourp著大木敦雄訳
Emacs Lispリファレンスマニュアル
(株)アスキー
山本和彦著
リスト遊び
(株)アスキー