GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/eintr/Text-and-Auto_002dfill.html ・ emacs-doc.conao3.com

16.4 テキストおよび自動入力モード

ここからは、テキストモードとオートフィルモードを切り替える部分について説明します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)

脚注

(19)

このセクションでは、ライターにより適した設定を提案しています。プログラマーの場合、ファイルの種類に応じて、デフォルトモードが自動的に対応するprog-modeに設定されます。また、基本モードをデフォルトとして維持したい場合でも、全く問題ありません。

(20)

ここでは setq-default を使用していますが、これは text-mode がバッファローカルであるためです。setq を使用すると現在のバッファにのみ適用されますが、setq-default を使用すると新しく作成されたバッファにも適用されます。これはプログラマには推奨されません。