目次 / 第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 を対話的に実行できるモードです。モードラインに以下のように表示されてもいると思います。
メジャーモードというのは、各バッファに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回終わり。