仮想的に、すべての Emacs のカスタマイズは Lisp コードによって 行われます。Emacs の動作に影響する変数を変更すること、または Emacs に新しい関数を追加することができます (または存在する関数を上書き -- それを置き換えることが -- できます)。
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))
可能性には本当に終りがありません。
.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
ファイルに関連するいくつかの役立つ項目を含んでいます。
Emacs の人気が伸びて発展していくうちに、誰かが
``見習いユーザに Emacs をカスタマイズさせる、もっと良い方法が必要だよ''
と言いました。
そして customize
が生まれました。
Customoize は Emacs のカスタマイズ部分のより直感的な方法を
用意しています。
それを試すには、Help
メニューの Customize
サブメニューを選ぶか、M-x customize
を入力するかしてください。
Customize グループは、``Editing'', ``Programming'', ``Files'' など のような論理グループを含みます。 グループのいくつかは、さらにサブグループを含みます。
Customize インタフェースを使って変更を行った場合、Emacs は変更を
.emacs
ファイルに保存します。
変更を簡単に詳しく調べることが (そして変更することが) できるので、
Customize はいくぶん扱いやすいと言えます。
私は Customize インタフェースを使わないので、 それについてはこれ以上言えません。
お行儀の良い X アプリケーションと同様に、
Emacs は X リソースを尊重します。
それは、xterm
、nxterm
などができるような、初期色、
ジオメトリ、その他の 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 を使っていた時のきれいな色を利用できます。