Next: , Previous: Setting Mark, Up: Mark


7.2 暫定マークモード(transient-markモード)

Xウィンドウシステムを使っているのであれば、 Emacsはカレントリージョンを強調表示できます。 ただし、通常はリージョンを強調表示しません。 なぜでしょうか?

実は、もともとのEmacsではリージョンの強調表示をうまくできないのです。 いったんマークを設定してしまうと、 そのバッファ内にはつねにリージョンが存在することになるからです。 リージョンを強調表示し続けても迷惑なだけでしょう。

暫定マーク(transient-mark)モードをオンにすると、 リージョンの強調表示機能をオンにできます。 暫定マーク(transient-mark)モードは、 リージョンが一時的にしか『存続』しない、 通常よりきびしい操作モードです。 ユーザーは、リージョンを使うコマンドごとにリージョンを設定する必要があります。 暫定マーク(transient-mark)モードでは、 ほとんどの期間、リージョンは存在しません。 それゆえ、リージョンが存在するときにリージョンを強調表示しても 邪魔になりません。

暫定マーク(transient-mark)モードをオンにするには、 M-x transient-mark-modeと打ちます。 このコマンドはモードのオン/オフを切り替えますから、 モードをオフにしたいときにはコマンドをもう1度繰り返します。

暫定マーク(transient-mark)モードの詳細を以下に示します。

リージョンの強調表示には、regionフェイスを使います。 このフェイスを変更すれば、リージョンの強調表示方法をカスタマイズできます。

複数のウィンドウで同じバッファを表示しているときには、 それぞれのウィンドウで別の部分を表示できます。 というのは、(マーク位置は共有されるが) 各ウィンドウごとに別々にポイントの値があるからです。 通常、選択されたウィンドウでのみ、 リージョンを強調表示します(see Windows)。 しかし、変数highlight-nonselected-windowsnil以外を設定すると、 (暫定マーク(transient-mark)モードがオンであり、かつ、 ウィンドウのバッファのマークが活性である場合に限り) 各ウィンドウでそれぞれのリージョンを強調表示します。

暫定マーク(transient-mark)モードがオフであると、 マークを設定するすべてのコマンドはマークを活性にし、 マークを不活性にするものは何もありません。

暫定マーク(transient-mark)モードにおいて、 変数mark-even-if-inactivenil以外であると、 マークが不活性であってもコマンドはマークやリージョンを利用できます。 通常の暫定マーク(transient-mark)モードと同様に、 リージョンが強調表示されたりされなかったりしますが、 強調表示されていなくてもマークが本当になくなることはありません。

暫定マーク(transient-mark)モードは『zmacsモード』としても知られています。 というのも、MITのLispマシン上で動作していたZmacsエディタが 同じようにマークを扱っていたからです。