Emacsは他の多くのアプリケーションと同じようにバッファーのテキストの任意の部分を選択して、そのような選択されたテキスト(selected text)を操作するコマンドを呼び出します。この選択されたテキストのことを、Emacsでは(region)と呼んでいます。リージョンにたいする処理の仕方は、他のプログラムが選択されたテキストを処理する方法と非常に似ていますが重要な違いも存在します。
リージョンとはバッファーのマーク(mark)と現時点のポイント(point)の間にある部分のことです。(たとえばC-SPCコマンドで)どこかにマークをセットして、その後にリージョンの終端としたい場所までポイントを移動することによってリージョンを定義できます(マウスウォッシュリージョンの定義に使うことも可)。
ポイントとマークのどちらが前にあったとしても、リージョンは常にポイントとマークの間にあります。ポイントが動くたびにリージョンは変化します。
テキストのある位置にマークをセットすると、マークがアクティブ(active)になります。マークがアクティブのときは、そのリージョンもアクティブになります。Emacsはアクティブなリージョンの中にあるテキストを、フェイスregion
でハイライト表示します(フェイスのカスタマイズを参照してください)。
バッファーのテキストを変更するコマンドを含む、特定の非移動系コマンド(non-motion commands)の後で、Emacsは自動的にマークを非アクティブ(deactivates)にし、これによりハイライトも解除されます。C-gをタイプすれば、いつでも明示的に非アクティブにすることができます(中止と中断を参照してください)。
操作をアクティブなリージョンのテキストに制限するコマンドが多数あります。たとえば(マッチしたテキストを置換する)M-%コマンドは、通常ならバッファーのアクセス可能な部分全体にたいして機能しますが、リージョンをアクティブにしたときにはそのリージョンだけにたいして機能するのです。
たとえアクティブでなくても、マークは役に立ちます。たとえばマークリングを使えば、前のマーク位置に戻ることができます。更に非アクティブなリージョンであっても効果があるコマンドもいくつかあります(たとえばupcase-region)。C-x C-xのようなコマンドを使えば、そのリージョンを再びアクティブにすることもできます。
インタラクティブなセッションではデフォルトである上記動作は、Transient Markモード(暫定マークモード)という名で知られています。Transient Markモードを無効にすると、Emacsは通常ではリージョンをハイライトしなくなります。Transient Markモードを無効にするを参照してください。
あるバッファーでマークをセットしても、他のバッファーのマークは影響を受けません。アクティブなマークがあるバッファーに戻ったとき、マークは以前と同じ場所にあります。複数のウィンドウで同じバッファーを表示しているとき、これらのウィンドウはそれぞれのポイント位置をもっているので、リージョンも異なります。しかしこれらのウィンドウでは、マークの位置は共通です。複数ウィンドウを参照してください。通常、選択されたウィンドウのリージョンだけがハイライトされます。しかし変数highlight-nonselected-windows
が非nil
の場合、各ウィンドウのリージョンがハイライトされます。
rectangular region(矩形リージョン)という、違う種類のリージョンもあります。矩形領域(Rectangles)を参照してください。