Next: Using Region, Previous: Setting Mark, Up: Mark
Xウィンドウシステムを使っているのであれば、 Emacsはカレントリージョンを強調表示できます。 ただし、通常はリージョンを強調表示しません。 なぜでしょうか?
実は、もともとのEmacsではリージョンの強調表示をうまくできないのです。 いったんマークを設定してしまうと、 そのバッファ内にはつねにリージョンが存在することになるからです。 リージョンを強調表示し続けても迷惑なだけでしょう。
暫定マーク(transient-mark)モードをオンにすると、 リージョンの強調表示機能をオンにできます。 暫定マーク(transient-mark)モードは、 リージョンが一時的にしか『存続』しない、 通常よりきびしい操作モードです。 ユーザーは、リージョンを使うコマンドごとにリージョンを設定する必要があります。 暫定マーク(transient-mark)モードでは、 ほとんどの期間、リージョンは存在しません。 それゆえ、リージョンが存在するときにリージョンを強調表示しても 邪魔になりません。
暫定マーク(transient-mark)モードをオンにするには、 M-x transient-mark-modeと打ちます。 このコマンドはモードのオン/オフを切り替えますから、 モードをオフにしたいときにはコマンドをもう1度繰り返します。
暫定マーク(transient-mark)モードの詳細を以下に示します。
set-mark-command
)と打つ。
この操作はマークを活性にする。
ポイントを移動するたびに、
強調表示されたリージョンが広がったり狭まったりする。
exchange-point-and-mark
)を実行する。
リージョンの強調表示には、region
フェイスを使います。
このフェイスを変更すれば、リージョンの強調表示方法をカスタマイズできます。
複数のウィンドウで同じバッファを表示しているときには、
それぞれのウィンドウで別の部分を表示できます。
というのは、(マーク位置は共有されるが)
各ウィンドウごとに別々にポイントの値があるからです。
通常、選択されたウィンドウでのみ、
リージョンを強調表示します(see Windows)。
しかし、変数highlight-nonselected-windows
にnil
以外を設定すると、
(暫定マーク(transient-mark)モードがオンであり、かつ、
ウィンドウのバッファのマークが活性である場合に限り)
各ウィンドウでそれぞれのリージョンを強調表示します。
暫定マーク(transient-mark)モードがオフであると、 マークを設定するすべてのコマンドはマークを活性にし、 マークを不活性にするものは何もありません。
暫定マーク(transient-mark)モードにおいて、
変数mark-even-if-inactive
がnil
以外であると、
マークが不活性であってもコマンドはマークやリージョンを利用できます。
通常の暫定マーク(transient-mark)モードと同様に、
リージョンが強調表示されたりされなかったりしますが、
強調表示されていなくてもマークが本当になくなることはありません。
暫定マーク(transient-mark)モードは『zmacsモード』としても知られています。 というのも、MITのLispマシン上で動作していたZmacsエディタが 同じようにマークを扱っていたからです。