目次 / 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回

本項は、いろいろな設定を .emacs にコピペし始めたあたりで読むと良いと思います。コピペ房から脱却しましょう。

.emacs で多い設定の一つに

(setq message-log-max 256)

などといった setq 文があると思います。上記例では、message-log-max という変数に 256 という値を代入しています。(message-log-max は、*Messages* バッファに保存される最大行数を格納する変数です。)

では設定しないと、message-log-max にはどのような値が入っているのでしょう? *scratch* バッファを使うと簡単に調べられます。

message-log-max を *scratch* バッファにコピペし、message-log-max の後ろで Ctrl-j してみてください。前述の設定をしないと 100 が、設定をすると 256 が出力されると思います。

message-log-max
;; =>100

※ 変数のヘルプからも、現在の値を確認できます。

F1 v message-log-max [Enter]

実は上の方法は単に変数の値を調べているのではなく、変数を評価しています。

もっと正確に言うと、message-log-max というシンボルを評価しています。評価の結果(戻り値)が 100 というわけです。シンボルは S 式の最小単位です。S 式が分からなければ、単に「式」と読み替えていただいて構いません。

さて、もっとも典型的な S 式は前述のような (setq message-log-max 256) です。これも *scratch* バッファで評価できます。

(setq message-log-max 256)
;; =>256

評価すると、変数 message-log-max には 256 が代入されます。Emacs Lisp では S 式は必ず値を返すので、256 が出力されます。

では、なぜ *scratch* バッファでは、このようなことが出来ると思いますか?

それは *scratch* バッファのメジャーモードが lisp-interaction-mode だからです。これは Emacs Lisp を対話的に実行できるモードです。モードラインに以下のように表示されてもいると思います。

scratch

メジャーモードというのは、各バッファに1つだけ設定でき、且つ必ず設定されているモードです。各バッファのメジャーモードは、変数 major-mode を評価すると分かります。

もうひとつ。emacs-version という変数があります。Emacs のバージョンが文字列として格納されています。

emacs-version
;; =>"23.1.50.1"

実は emacs-version という関数もあります。関数は以下のように評価します。

(emacs-version)
;; =>"GNU Emacs 23.1.50.1 (i686-pc-linux-gnu, GTK+ Version 2.16.1)
;; of 2009-06-26 on vergil"

まとめ。

  • かっこがない時は変数を評価している。
  • かっこがある時は関数を評価している。

以上を知っていれば、.emacs に設定を追加した後 Emacs を再起動することが少なくなるはずです。気軽に色々設定してみましょう!!

そうそう、*scratch* バッファでは簡単な計算も出来ます。+* という関数を使います。

(+ 1 2)          ;;; 1 + 2
;; =>3

(* (+ 1 2) 5)    ;;; (1 + 2) * 5
;; =>15

最後に *scratch* バッファ以外で評価する方法もご紹介します。

方法1
Meta-: した後、ミニバッファに評価したい S 式を書き、Enter する。

方法2
評価したい S 式の直後で Ctrl-x Ctrl-e する。評価結果がミニバッファに表示される。Ctrl-u Ctrl-x Ctrl-e すると、評価結果がカーソル下に挿入される。

方法3
Ctrl-space でマークセットし評価の先頭地点とする。次に、評価したい最終地点までカーソルを移動する。M-x eval-region すると、その範囲を評価できる。

第3回終わり。

目次 / 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回