ここからは、テキストモードとオートフィルモードを切り替える部分について説明します19。
;;; Text mode and Auto Fill mode ;; The next two lines put Emacs into Text mode ;; and Auto Fill mode, and are for writers who ;; want to start writing prose rather than code. (setq-default major-mode 'text-mode) (add-hook 'text-mode-hook 'turn-on-auto-fill)
忘れっぽい人間に思い出させる以外のことも行う、この.emacsファイルの前半部分がこちらです!
括弧内の2行のうち1行目は、ファイルが見つかった際にテキストモードを有効にするようEmacsに指示するものですが、そのファイルがCモードなどの別のモードになるべき場合を除きます。
Emacsがファイルを読み込む際、ファイル名に拡張子があればそれを確認します。(拡張子とは、‘.’に続く部分のことです。)ファイルが‘.c’または‘.h’という拡張子で終わっている場合、EmacsはCモードを有効にします。また、Emacsはファイルの最初の非空白行を確認し、その行に‘-*- C -*-’と記載されていれば、Cモードを有効にします。Emacsには、自動的に使用される拡張子と仕様のリストが用意されています。さらに、Emacsは最終ページ付近で、バッファごとのローカル変数リストがあればそれを確認します。
さて、.emacsファイルに戻りましょう。
またこの行ですが、どういう仕組みなんですか?
(setq-default major-mode 'text-mode)
この行は、短いながらも完全なEmacs Lisp式です。
We are already familiar with setq. We use a
similar macro setq-default to set the following
variable, major-mode20, to the subsequent value, which
is text-mode. The single-quote before text-mode tells Emacs to deal directly with the text-mode symbol, not with whatever it might stand for.
See Setting the Value of a Variable,
for a reminder of how setq works. The main point
is that there is no difference between the procedure you use to set a value
in your .emacs file and the procedure you use
anywhere else in Emacs.
次の行はこちらです:
(add-hook 'text-mode-hook 'turn-on-auto-fill)
この行では、add-hook コマンドが変数に turn-on-auto-fill を追加します。
turn-on-auto-fillはプログラムの名前で、ご想像の通り!、オートフィルモードをオンにするものです。
Emacsがテキストモードを有効にするたびに、テキストモードに紐付けられたコマンドが実行されます。そのため、Emacsがテキストモードを有効にするたびに、オートフィルモードも有効になります。
要するに、1行目の記述により、ファイル名の拡張子や最初の非空行、あるいはEmacsに別の動作を指示するローカル変数がない限り、ファイルを編集する際にEmacsがテキストモードになります。
テキストモードでは、その他の操作に加え、構文テーブルが書き手にとって使いやすいように設定されます。テキストモードでは、Emacsはアポストロフィを文字と同様に単語の一部として扱いますが、ピリオドやスペースは単語の一部とはみなしません。そのため、M-f は ‘it's’ へ移動します。一方、Cモードでは、M-f は ‘it's’ の ‘t’ の直後で停止します。
2行目の記述により、Emacsはテキストモードを有効にする際にオートフィルモードも有効にします。オートフィルモードでは、Emacsは幅が広すぎる行を自動的に折り返し、はみ出した部分を次の行に下げます。Emacsは単語の途中ではなく、単語の間で行を折り返します。
オートフィルモードがオフの場合、入力するにつれて行が右へ伸び続けます。truncate-linesの値の設定によっては、入力した単語が画面の右側から消えていくか、あるいは画面上の続きの行として、かなり見苦しく判読しにくい形で表示されます。
さらに、.emacsファイルのこの部分では、Emacsのフィルコマンドに対し、コロンの後にスペースを2つ挿入するように指定しています:
(setq colon-double-space t)
このセクションでは、ライターにより適した設定を提案しています。プログラマーの場合、ファイルの種類に応じて、デフォルトモードが自動的に対応するprog-modeに設定されます。また、基本モードをデフォルトとして維持したい場合でも、全く問題ありません。
ここでは setq-default を使用していますが、これは text-mode がバッファローカルであるためです。setq を使用すると現在のバッファにのみ適用されますが、setq-default
を使用すると新しく作成されたバッファにも適用されます。これはプログラマには推奨されません。