次のページ 前のページ 目次へ

4. Emacs のカスタマイズ

仮想的に、すべての Emacs のカスタマイズは Lisp コードによって 行われます。Emacs の動作に影響する変数を変更すること、または Emacs に新しい関数を追加することができます (または存在する関数を上書き -- それを置き換えることが -- できます)。

4.1 一時的なカスタマイズ

Emacs のカスタマイズの実験をするときは、その場限りの方法で やりたいでしょう。もしも何かものすごく具合いが悪くなった場合は、 C-x C-c で Emacs を終了して、再び Emacs を実行することが できます。常に反映させたい変更がわかったら、Emacs を起動するごとに影響を与える、自分自身の .emacs ファイルに それを追加できます。これは次の節で説明します。

変数代入

最も簡単なカスタマイズは、Emacs 中で変数の値を変更することによって 成し遂げられます。 このリストコードは次のようになります -

(setq 変数名 新しい値)

変数名 は変数の名前で、新しい値 は変数に与えたい値です (Lisp の言い方では、値に変数を束縛します)。

注釈: 私は簡単のために、ここで多くの部分を もっともらしく説明しています。 Lisp 関数である set そして setq-defaultさえも使う、 私や他の人々を見るかもしれません。 もしも本当に知りたかったら、どんどん Emacs Lisp リファレンスで それらを調べてください。

私の .emacs ファイルから 1 行を見てみましょう。

(setq-default transient-mark-mode t)

変数 transient-mark-mode は、マークしたときに 領域を強調表示するかしないかを管理します。 多くの GUI アプリケーションでは、テキストの範囲を選択するために マウスのクリックやドラッグをした場合、反転または何か他の色で強調表示します。 Emacs は変数 transient-mark-mode を (nil でない値に) 設定することで、同じことをするようになります。

どんな値?

さて、ここで余談を要約しましょう。 多くのプログラミング言語は、真偽値の概念を持っています。 C/C++ では、値が非零であれば真とみなします。 Perl では、非 null または非零の値が真です。 Lisp では、同じ考えを使用しますが、名前とシンボルは異なります。

普通、真は t と、偽 (または null) は nil と記述します。 他の言語のように、やはり、あらゆる非 nil 値は真とみなされます。

transient-mark-mode が何をするかの完全な説明を得るには、 オンラインヘルプを使うことができます。 C-h v または M-x describe-variable を入力して、 それから transient-mark-mode を入力してください。 もしも私のように怠け者であれば、Tab キーを使って変数名を 補完することができます。 変数名の一部を入力して、Tab キーを押してください。 一意に Emacs がそれを識別するのに十分な入力をしていれば、 補完された全体の名前がそこに現れます。

人々がしばしば設定する変数には、他に fill-column があります。 これはワードラップのためのスクリーンの幅を Emacs に知らせます。 (そして auto-fill-mode がこの値を考慮します)。 何か不合理な値を設定するには、次のように入力します -

(setq fill-column 20)

しかし、それだけでは実際には何もしません。 入力した式を 評価する ように Emacs に知らせる必要があります。 実際に評価するためには、ポイント (カーソル) を式の最後に置いて、 それから C-x C-e を入力します。 今の場合は、この入力が関数 eval-last-sexp を呼びます。 それを実行した時、20 (または何か使用した値) がスクリーン 下部のミニバッファにエコーバックされることに気づくでしょう。 それが評価した式からの返り値です。

動作を確認するために、文を一つ二つ入力してみてください。 もしも偶然 auto-fill-mode を有効にしていたならば (多分していないでしょうが)、テキストが 20 カラムまでで折返されるのに 気づくでしょう。 そうでなければ、いくつかの入力をした後、関数 fill-paragraph を呼び出す M-q を入力してください。 実際にワードラップが実行されるでしょう。

ファイル関連

特別な型のファイルを開いた時に自動的に何かをするように、 Emacs を設定できます (特別なファイルのアイコンをクリックした場合に、 GUI が自動的に特定のアプリケーションを起動するのと同じように)。 例えば、私は .txt 拡張子のファイルを開いたときにはいつも、 自動的に text-mode に Emacs が切り替わって欲しいです。 おや、それはすでにできていますね。:-) それでは、``README'' という名前のファイルを開いたときに、 いつも text-mode に入るように Emacs に命令しましょう。

(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))

何だって?

本当に知る必要はない Lisp プログラミングの山に突っ込むことはしませんが (しかし学ぶことに不都合はないでしょう)、 変数 auto-mode-alist がペアのリストを含むことを言わせてください。 各々のペアは正規表現と Emacs のモード名を含んでいます。 開いたファイルが正規表現 (この場合は、文字列 README) にマッチした場合、Emacs は指定したモードを開始します。

上の変な構文は、私たちがペアを実際にもう一個モードリストに 加えようとしているためです。 すでに入っている値は消えない、ということを確認せずに auto-mode-alist を設定したくはないでしょう。

また、.html または .htm で終るファイルを開いたときにいつも Emacs を html-helper-mode に自動的に切り替えたいならば、 自分の .emacs ファイルにこのように追加します -

(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist))

可能性には本当に終りがありません。

4.2 .emacs ファイルの使用

Emacs である程度の時間を過ごし、カスタマイズについての基本的な 考えを持った後には、多分 2, 3 のものを永久に(または少なくとも 考えを変えるまえで) カスタマイズしたままにしたくなるでしょう。 もしも日々の基本的なことに Emacs を使っていると気づいたならば、 時間とともに .emacs ファイルが大きくなっていくことにも 気づくでしょう。 それは、こう動いて欲しいという思い通りに Emacs を動かす方法をあなたが理解したということなので 良いこと です。 多くのソフトウェア製品がそうさせてくれないのは残念なことです。

まだ見当をつけていない場合のために説明すると、 Emacs は、起動する時はいつも、ホームディレクトリの .emacs という名前のファイルを探します。 .emacs ファイルは、自動的に実行させたい、私たちがここで 扱っているカスタマイズを含む Lisp コードを載せるべき場所です。

私の .emacs ファイルから他の例 -

(setq inhibit-startup-message t)

変数 inhibit-startup-message は、Emacs が始まるときに ウェルカムメッセージを表示するかどうかを管理します。 しばらくして、私はそれを見るのに飽きたので (私はヘルプやいろいろなものを見つけ出す方法を知っていたので)、 私はそれをオフにする方法を探すようになりました。

練習として、自分自身の .emacs ファイルを作ることに挑戦して、 その行を追加しましょう。 それから Emacs を終了させて、もう一度起動しましょう。 もう、ウェルカムメッセージを見ることはないでしょう。

しばしば Emacs のモード (またはパッケージ) について読んでいるとき、 その文書は特殊な方法でモードまたはパッケージを働かせようとして、 .emacs ファイルにいくつかのコードを追加することを 勧めてくるでしょう。

The GNU Emacs FAQ (C-h F) は、.emacs ファイルに関連するいくつかの役立つ項目を含んでいます。

4.3 パッケージのカスタマイズ

Emacs の人気が伸びて発展していくうちに、誰かが ``見習いユーザに Emacs をカスタマイズさせる、もっと良い方法が必要だよ'' と言いました。 そして customizeが生まれました。

Customoize は Emacs のカスタマイズ部分のより直感的な方法を 用意しています。 それを試すには、Help メニューの Customize サブメニューを選ぶか、M-x customize を入力するかしてください。

Customize グループは、``Editing'', ``Programming'', ``Files'' など のような論理グループを含みます。 グループのいくつかは、さらにサブグループを含みます。

Customize インタフェースを使って変更を行った場合、Emacs は変更を .emacs ファイルに保存します。 変更を簡単に詳しく調べることが (そして変更することが) できるので、 Customize はいくぶん扱いやすいと言えます。

私は Customize インタフェースを使わないので、 それについてはこれ以上言えません。

4.4 X のウィンドウ表示

お行儀の良い X アプリケーションと同様に、 Emacs は X リソースを尊重します。 それは、xtermnxterm などができるような、初期色、 ジオメトリ、その他の X 特有の属性を管理できることを意味します。

これは、私の ~/.Xdefaults ファイルの関連する部分です -

emacs*Background: DarkSlateGray
emacs*Foreground: Wheat
emacs*pointerColor: Orchid
emacs*cursorColor: Orchid
emacs*bitmapIcon: on
emacs*font: fixed
emacs.geometry: 80x25

X リソースについての詳細は、X のマニュアルページを見てください。

Chris Gray (cgray4@po-box.mcgill.ca) もまた言及しています -

Debian では、~/.Xdefaults は使われていないようです。 しかしながら、Debian の人々は、与えられたものを /etc/X11/Xresources/emacs に置くことができ、 そして彼らは RedHat を使っていた時のきれいな色を利用できます。


次のページ 前のページ 目次へ