@c =============================================================
@c = 元 翻 訳: 高汐一紀＠電気通信大学
@c = 加筆修正: 大木敦雄＠大塚.筑波大学 = 1998/11/25
@c = 20.4改訂: 大木敦雄＠大塚.筑波大学 = 1999/09/12
@c =============================================================
@c This is part of the Emacs manual.
@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Mark, Killing, Help, Top
@c @chapter The Mark and the Region
@chapter マークとリージョン
@c @cindex mark
@c @cindex setting a mark
@c @cindex region
@cindex マーク
@cindex マークの設定
@cindex リージョン

@c   Many Emacs commands operate on an arbitrary contiguous part of the
@c current buffer.  To specify the text for such a command to operate on,
@c you set @dfn{the mark} at one end of it, and move point to the other
@c end.  The text between point and the mark is called @dfn{the region}.
@c Emacs highlights the region whenever there is one, if you enable
@c Transient Mark mode (@pxref{Transient Mark}).
Emacsの数多くのコマンドは、カレントバッファの任意の連続領域を操作します。
このようなコマンドに操作対象となるテキストを指定するには、
その一方の端に@dfn{マーク}（mark）を置き、
もう一方の端にポイントを移動します。
ポイントとマークに挟まれたテキストを@dfn{リージョン}（region）と呼びます。
暫定マーク（transient-mark）モードをオンにすると、
リージョンが存在すれば
Emacsはつねにそのリージョンを強調表示します
（@pxref{Transient Mark}）。

@c   You can move point or the mark to adjust the boundaries of the region.
@c It doesn't matter which one is set first chronologically, or which one
@c comes earlier in the text.  Once the mark has been set, it remains where
@c you put it until you set it again at another place.  Each Emacs buffer
@c has its own mark, so that when you return to a buffer that had been
@c selected previously, it has the same mark it had before.
リージョンの境界を調整するには、ポイントやマークを移動します。
時間的にどちらを先に設定したとか、
テキスト内でどちらが先にあるかとかは関係ありません。
いったんマークを設定すると、他の箇所に再設定するまで、
その位置情報はそのまま変わりません。
各Emacsバッファには個別にマークがありますから、
以前に選択したバッファへ戻ったときには、
以前と同じままのマークが残っています。

@c   Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
@c @kbd{M-x insert-buffer}, position point and the mark at opposite ends of
@c the inserted text, so that the region contains the text just inserted.
@kbd{C-y}（@code{yank}）や@kbd{M-x insert-buffer}などのテキストを
挿入するコマンドの多くは、挿入したテキストの両端にポイントとマークを置いて、
挿入したテキストがリージョンに含まれるようにします。

@c   Aside from delimiting the region, the mark is also useful for
@c remembering a spot that you may want to go back to.  To make this
@c feature more useful, each buffer remembers 16 previous locations of the
@c mark in the @dfn{mark ring}.
リージョンの境界を定めること以外に、
あとで戻る可能性のある箇所を覚えておくためにもマークを使えます。
この機能をより使いやすくするために、
各バッファでは、それまでに設定した16個のマーク位置を
@dfn{マークリング}（mark ring）に記録しています。

@menu
* Setting Mark::	Commands to set the mark.
* Transient Mark::	How to make Emacs highlight the region--
			  when there is one.
* Using Region::	Summary of ways to operate on contents of the region.
* Marking Objects::	Commands to put region around textual units.
* Mark Ring::   	Previous mark positions saved so you can go back there.
* Global Mark Ring::    Previous mark positions in various buffers.
@end menu

@node Setting Mark, Transient Mark, , Mark
@c @section Setting the Mark
@section マークを設定する

@c   Here are some commands for setting the mark:
マークを設定するコマンドはつぎのとおりです。

@c WideCommands
@table @kbd
@item C-@key{SPC}
@c Set the mark where point is (@code{set-mark-command}).
ポイント位置にマークを置く（@code{set-mark-command}）。
@item C-@@
@c The same.
上と同様。
@item C-x C-x
@c Interchange mark and point (@code{exchange-point-and-mark}).
マークとポイントを入れ換える（@code{exchange-point-and-mark}）。
@item Drag-Mouse-1
@c Set point and the mark around the text you drag across.
ドラッグしたテキストの周囲にポイントとマークを設定する。
@item Mouse-3
@c Set the mark where point is, then move point to where you click
@c (@code{mouse-save-then-kill}).
ポイント位置にマークを設定し、クリックした箇所にポイントを移動する
（@code{mouse-save-then-kill}）。
@end table

@c   For example, suppose you wish to convert part of the buffer to
@c upper case, using the @kbd{C-x C-u} (@code{upcase-region}) command,
@c which operates on the text in the region.  You can first go to the
@c beginning of the text to be capitalized, type @kbd{C-@key{SPC}} to put
@c the mark there, move to the end, and then type @kbd{C-x C-u}.  Or, you
@c can set the mark at the end of the text, move to the beginning, and then
@c type @kbd{C-x C-u}.
たとえば、コマンド@kbd{C-x C-u}（@code{upcase-region}）を使って、
バッファのある部分をすべて大文字に変換したいとしましょう。
このコマンドは、リージョン中のテキストに作用します。
まず、大文字に変換したいテキストの先頭に移動し、
@kbd{C-@key{SPC}}と打ってマークを設定します。
続いてテキストの終端に移動して@kbd{C-x C-u}と打ちます。
あるいは、先にテキストの終端にマークを設定して、
テキストの始点に移動してから@kbd{C-x C-u}と打ちます。

@kindex C-SPC
@findex set-mark-command
@c   The most common way to set the mark is with the @kbd{C-@key{SPC}} command
@c (@code{set-mark-command}).  This sets the mark where point is.  Then you
@c can move point away, leaving the mark behind.
マークを設定するもっとも一般的な方法は、
@kbd{C-@key{SPC}}コマンド（@code{set-mark-command}）を使うことです。
このコマンドは、ポイント位置にマークを設定します。
そうすれば、マークを置いたままで、ポイントを移動できます。

@c   There are two ways to set the mark with the mouse.  You can drag mouse
@c button one across a range of text; that puts point where you release the
@c mouse button, and sets the mark at the other end of that range.  Or you
@c can click mouse button three, which sets the mark at point (like
@c @kbd{C-@key{SPC}}) and then moves point (like @kbd{Mouse-1}).  Both of
@c these methods copy the region into the kill ring in addition to setting
@c the mark; that gives behavior consistent with other window-driven
@c applications, but if you don't want to modify the kill ring, you must
@c use keyboard commands to set the mark.  @xref{Mouse Commands}.
マウスを使ったマークの設定方法は2つあります。
テキストのある範囲でマウスボタン1をドラッグします。
マウスボタンを離した位置にポイントが置かれ、
ドラッグを開始した箇所にマークが設定されます。
あるいは、マウスボタン3をクリックします。
これは（@kbd{C-@key{SPC}}と同様に）ポイント位置にマークを設定してから、
ポイントを（@kbd{Mouse-1}のように）移動します。
両者は、マークを設定するだけでなく、リージョンをキルリングにコピーします。
これは、他のウィンドウアプリケーションの動作と一貫性を持たせるためです。
キルリングを変更したくなければ、
キーボードコマンドを使ってマークを設定する必要があります。
@xref{Mouse Commands}。

@kindex C-x C-x
@findex exchange-point-and-mark
@c   Ordinary terminals have only one cursor, so there is no way for Emacs
@c to show you where the mark is located.  You have to remember.  The usual
@c solution to this problem is to set the mark and then use it soon, before
@c you forget where it is.  Alternatively, you can see where the mark is
@c with the command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which
@c puts the mark where point was and point where the mark was.  The extent
@c of the region is unchanged, but the cursor and point are now at the
@c previous position of the mark.  In Transient Mark mode, this command
@c reactivates the mark.
普通の端末にはカーソルは1つしかありませんから、
Emacsにはマークを置いた位置を表示する術はありません。
ユーザーがその位置を覚えておく必要があります。
この問題に対する通常の解決方法は、マークを設定したら、
忘れてしまうまえにただちにそれを利用することです。
あるいは、@kbd{C-x C-x}（@code{exchange-point-and-mark}）コマンドを使って、
マーク位置を確認します。
このコマンドは、ポイント位置にマークを置き、
マークのあった位置にポイントを置きます。
リージョンの範囲は変わらずに、
カーソルとポイントは以前マークのあった箇所に移動します。
暫定マーク（transient-mark）モードでは、
このコマンドはマークを再度活性にします。

@c   @kbd{C-x C-x} is also useful when you are satisfied with the position
@c of point but want to move the other end of the region (where the mark
@c is); do @kbd{C-x C-x} to put point at that end of the region, and then
@c move it.  A second use of @kbd{C-x C-x}, if necessary, puts the mark at
@c the new position with point back at its original position.
ポイント位置を変えずに、
リージョンのもう一方の端（マークの位置）を移動させたい場合にも、
@kbd{C-x C-x}は便利な方法です。
まず、@kbd{C-x C-x}でポイントをリージョンの一方の端に移して、
その端を移動します。
必要ならば、もう1度@kbd{C-x C-x}を使って新しい位置にマークを置き、
ポイントをもとの位置に戻します。

@kindex C-@@
@c   There is no such character as @kbd{C-@key{SPC}} in ASCII; when you
@c type @key{SPC} while holding down @key{CTRL}, what you get on most
@c ordinary terminals is the character @kbd{C-@@}.  This key is actually
@c bound to @code{set-mark-command}.  But unless you are unlucky enough to
@c have a terminal where typing @kbd{C-@key{SPC}} does not produce
@c @kbd{C-@@}, you might as well think of this character as
@c @kbd{C-@key{SPC}}.  Under X, @kbd{C-@key{SPC}} is actually a distinct
@c character, but its binding is still @code{set-mark-command}.
ASCIIには、@kbd{C-@key{SPC}}という文字は存在しません。
@key{CTRL}を押し下げながら@key{SPC}を打つと、
ほとんどの普通の端末では文字@kbd{C-@@}になります。
このキーは、実際に@code{set-mark-command}にバインドしてあります。
ただし、幸運にも@kbd{C-@key{SPC}}で@kbd{C-@@}を送出する端末を
使っているのであれば、
@kbd{C-@@}を@kbd{C-@key{SPC}}とみなしてかまいません。
Xウィンドウシステムでは、@kbd{C-@key{SPC}}は実際には
別の文字として認識されますが、
そのバインドはやはり@code{set-mark-command}です。

@node Transient Mark, Using Region, Setting Mark, Mark
@c @section Transient Mark Mode
@section 暫定マークモード（transient-markモード）
@c @cindex mode, Transient Mark
@c @cindex Transient Mark mode
@c @cindex highlighting region
@c @cindex region highlighting
@cindex モード、Transient Mark
@cindex 暫定マークモード（Transient Mark mode）
@cindex 強調表示、リージョン
@cindex リージョンの強調表示

@c   Emacs can highlight the current region, using X Windows.  But normally
@c it does not.  Why not?
Xウィンドウシステムを使っているのであれば、
Emacsはカレントリージョンを強調表示できます。
ただし、通常はリージョンを強調表示しません。
なぜでしょうか？

@c   Highlighting the region doesn't work well ordinarily in Emacs, because
@c once you have set a mark, there is @emph{always} a region (in that
@c buffer).  And highlighting the region all the time would be a nuisance.
実は、もともとのEmacsではリージョンの強調表示をうまくできないのです。
いったんマークを設定してしまうと、
そのバッファ内には@emph{つねに}リージョンが存在することになるからです。
リージョンを強調表示し続けても迷惑なだけでしょう。

@c   You can turn on region highlighting by enabling Transient Mark mode.
@c This is a more rigid mode of operation in which the region ``lasts''
@c only temporarily, so you must set up a region for each command that uses
@c one.  In Transient Mark mode, most of the time there is no region;
@c therefore, highlighting the region when it exists is convenient.
暫定マーク（transient-mark）モードをオンにすると、
リージョンの強調表示機能をオンにできます。
暫定マーク（transient-mark）モードは、
リージョンが一時的にしか『存続』しない、
通常よりきびしい操作モードです。
ユーザーは、リージョンを使うコマンドごとにリージョンを設定する必要があります。
暫定マーク（transient-mark）モードでは、
ほとんどの期間、リージョンは存在しません。
それゆえ、リージョンが存在するときにリージョンを強調表示しても
邪魔になりません。

@findex transient-mark-mode
@c   To enable Transient Mark mode, type @kbd{M-x transient-mark-mode}.
@c This command toggles the mode, so you can repeat the command to turn off
@c the mode.
暫定マーク（transient-mark）モードをオンにするには、
@kbd{M-x transient-mark-mode}と打ちます。
このコマンドはモードのオン／オフを切り替えますから、
モードをオフにしたいときにはコマンドをもう1度繰り返します。

@c   Here are the details of Transient Mark mode:
暫定マーク（transient-mark）モードの詳細を以下に示します。

@itemize @bullet
@item
@c To set the mark, type @kbd{C-@key{SPC}} (@code{set-mark-command}).
@c This makes the mark active; as you move point, you will see the region
@c highlighting grow and shrink.
マークを設定するには、@kbd{C-@key{SPC}}（@code{set-mark-command}）と打つ。
この操作はマークを活性にする。
ポイントを移動するたびに、
強調表示されたリージョンが広がったり狭まったりする。

@item 
@c The mouse commands for specifying the mark also make it active.  So do
@c keyboard commands whose purpose is to specify a region, including
@c @kbd{M-@@}, @kbd{C-M-@@}, @kbd{M-h}, @kbd{C-M-h}, @kbd{C-x C-p}, and
@c @kbd{C-x h}.
マークを設定するマウスコマンドも、マークを活性にする。
@kbd{M-@@}、@kbd{C-M-@@}、@kbd{M-h}、@kbd{C-M-h}、
@kbd{C-x C-p}、@kbd{C-x h}などのリージョンを設定するための
キーボードコマンドもマークを活性にする。

@item
@c When the mark is active, you can execute commands that operate on the
@c region, such as killing, indenting, or writing to a file.
マークが活性ならば、キル、字下げ、ファイルへの書き出しなどの
リージョンを操作するコマンドを実行できる。

@item
@c Any change to the buffer, such as inserting or deleting a character,
@c deactivates the mark.  This means any subsequent command that operates
@c on a region will get an error and refuse to operate.  You can make the
@c region active again by typing @kbd{C-x C-x}.
文字の挿入や削除といったバッファに対する変更は、マークを不活性にする。
つまり、これ以降にリージョンを操作するコマンドを実行するとエラーとなり、
実行は拒否される。
リージョンを再度活性にするには、@kbd{C-x C-x}と打つ。

@item
@c Commands like @kbd{M->} and @kbd{C-s} that ``leave the mark behind'' in
@c addition to some other primary purpose do not activate the new mark.
@c You can activate the new region by executing @kbd{C-x C-x}
@c (@code{exchange-point-and-mark}).
@kbd{M->}や@kbd{C-s}のような、本来の目的を達成したあとに『マークを残す』
種類のコマンドは、新しいマークを活性にしない。
このような新しいリージョンを活性にするには、
@kbd{C-x C-x}（@code{exchange-point-and-mark}）を実行する。

@item
@c @kbd{C-s} when the mark is active does not alter the mark.
マークが活性であるときには、@kbd{C-s}はマークを変更しない。

@item
@c Quitting with @kbd{C-g} deactivates the mark.
@kbd{C-g}で中断すると、マークを不活性にする。
@end itemize

@c   Highlighting of the region uses the @code{region} face; you can
@c customize how the region is highlighted by changing this face.
@c @xref{Face Customization}.
リージョンの強調表示には、@code{region}フェイスを使います。
このフェイスを変更すれば、リージョンの強調表示方法をカスタマイズできます。

@vindex highlight-nonselected-windows
@c   When multiple windows show the same buffer, they can have different
@c regions, because they can have different values of point (though they
@c all share one common mark position).  Ordinarily, only the selected
@c window highlights its region (@pxref{Windows}).  However, if the
@c variable @code{highlight-nonselected-windows} is non-@code{nil}, then
@c each window highlights its own region (provided that Transient Mark mode
@c is enabled and the window's buffer's mark is active).
複数のウィンドウで同じバッファを表示しているときには、
それぞれのウィンドウで別の部分を表示できます。
というのは、（マーク位置は共有されるが）
各ウィンドウごとに別々にポイントの値があるからです。
通常、選択されたウィンドウでのみ、
リージョンを強調表示します（@pxref{Windows}）。
しかし、変数@code{highlight-nonselected-windows}に@code{nil}以外を設定すると、
（暫定マーク（transient-mark）モードがオンであり、かつ、
ウィンドウのバッファのマークが活性である場合に限り）
各ウィンドウでそれぞれのリージョンを強調表示します。

@c   When Transient Mark mode is not enabled, every command that sets the
@c mark also activates it, and nothing ever deactivates it.
暫定マーク（transient-mark）モードがオフであると、
マークを設定するすべてのコマンドはマークを活性にし、
マークを不活性にするものは何もありません。

@vindex mark-even-if-inactive
@c   If the variable @code{mark-even-if-inactive} is non-@code{nil} in
@c Transient Mark mode, then commands can use the mark and the region
@c even when it is inactive.  Region highlighting appears and disappears 
@c just as it normally does in Transient Mark mode, but the mark doesn't
@c really go away when the highlighting disappears.
暫定マーク（transient-mark）モードにおいて、
変数@code{mark-even-if-inactive}が@code{nil}以外であると、
マークが不活性であってもコマンドはマークやリージョンを利用できます。
通常の暫定マーク（transient-mark）モードと同様に、
リージョンが強調表示されたりされなかったりしますが、
強調表示されていなくてもマークが本当になくなることはありません。

@c @cindex Zmacs mode
@cindex zmacsモード
@c   Transient Mark mode is also sometimes known as ``Zmacs mode''
@c because the Zmacs editor on the MIT Lisp Machine handled the mark in a
@c similar way.
暫定マーク（transient-mark）モードは『zmacsモード』としても知られています。
というのも、MITのLispマシン上で動作していたZmacsエディタが
同じようにマークを扱っていたからです。

@node Using Region, Marking Objects, Transient Mark, Mark
@c @section Operating on the Region
@section リージョンに対する操作

@c @cindex operations on a marked region
@cindex マーク付けしたリージョンに対する操作
@c   Once you have a region and the mark is active, here are some of the
@c ways you can operate on the region:
いったんリージョンを設定しマークを活性にすれば、
以下のようにリージョンを操作できます。

@itemize @bullet
@item
@c Kill it with @kbd{C-w} (@pxref{Killing}).
@kbd{C-w}コマンドでキルする（@pxref{Killing}）。
@item
@c Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
@kbd{C-x r s}でレジスタに保存する（@pxref{Registers}）。
@item
@c Save it in a buffer or a file (@pxref{Accumulating Text}).
バッファやファイルに保存する（@pxref{Accumulating Text}）。
@item
@c Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} (@pxref{Case}).
@kbd{C-x C-l}や@kbd{C-x C-u}で大文字小文字を変換する（@pxref{Case}）。
@item
@c Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
@kbd{C-x @key{TAB}}や@kbd{C-M-\}で字下げする（@pxref{Indentation}）。
@item
@c Fill it as text with @kbd{M-x fill-region} (@pxref{Filling}).
@kbd{M-x fill-region}でテキストを詰め込む（@pxref{Filling}）。
@item
@c Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
@kbd{M-x print-region}でハードコピーを印刷する（@pxref{Hardcopy}）。
@item
@c Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
@kbd{M-x eval-region}でLispコードとして評価する（@pxref{Lisp Eval}）。
@end itemize

@c   Most commands that operate on the text in the
@c region have the word @code{region} in their names.
リージョン内のテキストを操作するコマンドの多くは、
その名前に@code{region}という単語を含みます。

@node Marking Objects, Mark Ring, Using Region, Mark
@c @section Commands to Mark Textual Objects
@section テキストオブジェクトをマークするコマンド

@c @cindex marking sections of text
@cindex テキストの一部をマーク付けする
@c   Here are the commands for placing point and the mark around a textual
@c object such as a word, list, paragraph or page.
単語、リスト、段落、ページといったテキストのまとまりに
ポイントやマークを置くコマンドがあります。

@table @kbd
@item M-@@
@c Set mark after end of next word (@code{mark-word}).  This command and
@c the following one do not move point.
つぎの語の末尾にマークを設定する（@code{mark-word}）。
このコマンドとつぎのコマンドはポイントを移動しない。
@item C-M-@@
@c Set mark after end of next Lisp expression (@code{mark-sexp}).
つぎのLisp式の末尾にマークを設定する（@code{mark-sexp}）。
@item M-h
@c Put region around current paragraph (@code{mark-paragraph}).
現在の段落を囲むリージョンを設定する（@code{mark-paragraph}）。
@item C-M-h
@c Put region around current Lisp defun (@code{mark-defun}).
現在のLisp関数定義（defun）を囲むリージョンを設定する（@code{mark-defun}）。
@item C-x h
@c Put region around entire buffer (@code{mark-whole-buffer}).
バッファ全体をリージョンとする（@code{mark-whole-buffer}）。
@item C-x C-p
@c Put region around current page (@code{mark-page}).
現在のページを囲むリージョンを設定する（@code{mark-page}）。
@end table

@c @kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next word,
@c while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
@c expression.  These commands handle arguments just like @kbd{M-f} and
@c @kbd{C-M-f}.
@kbd{M-@@}（@code{mark-word}）がつぎの語の末尾にマークを設定するのに対し、
@kbd{C-M-@@}（@code{mark-sexp}）はつぎのLisp式の末尾にマークを設定します。
これらのコマンドは、@kbd{M-f}や@kbd{C-M-f}と同様に引数を扱います。

@kindex C-x h
@findex mark-whole-buffer
@c    Other commands set both point and mark, to delimit an object in the
@c buffer.  For example, @kbd{M-h} (@code{mark-paragraph}) moves point to
@c the beginning of the paragraph that surrounds or follows point, and puts
@c the mark at the end of that paragraph (@pxref{Paragraphs}).  It prepares
@c the region so you can indent, case-convert, or kill a whole paragraph.
その他のコマンドは、ポイントとマークの両方を設定して、
バッファ内で対象物を区切ります。
たとえば、@kbd{M-h}（@code{mark-paragraph}）は、
ポイントを囲むあるいはポイントに続く段落の先頭にポイントを移動し、
その段落の末尾にマークを置きます（@pxref{Paragraphs}）。
このようにリージョンを設定するので、
段落全体を字下げしたり、大文字小文字を変換したり、キルしたりできます。

@c   @kbd{C-M-h} (@code{mark-defun}) similarly puts point before and the
@c mark after the current or following defun (@pxref{Defuns}).  @kbd{C-x
@c C-p} (@code{mark-page}) puts point before the current page, and mark at
@c the end (@pxref{Pages}).  The mark goes after the terminating page
@c delimiter (to include it), while point goes after the preceding page
@c delimiter (to exclude it).  A numeric argument specifies a later page
@c (if positive) or an earlier page (if negative) instead of the current
@c page.
@kbd{C-M-h}（@code{mark-defun}）も同様に、
現在の関数定義や後続の関数定義の先頭にポイントを置き、
その末尾にマークを置きます（@pxref{Defuns}）。
@kbd{C-x C-p}（@code{mark-page}）は、
現在のページの先頭にポイントを置き、
その末尾にマークを置きます（@code{mark-page}）。
マークはページ区切りの直後に設定され（リージョンに含まれる）、
一方、ポイントはページ区切りの直後に置かれます（リージョンに含まれない）。
数引数で、現在のページのかわりに（正ならば）後続のページや、
（負ならば）先行するページを指定できます。

@c   Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire
@c buffer as the region, by putting point at the beginning and the mark at
@c the end.
最後に紹介する@kbd{C-x h}（@code{mark-whole-buffer}）は、
バッファ全体にリージョンを設定します。
つまり、ポイントをバッファの先頭に置き、
マークをバッファの末尾に置きます。

@c   In Transient Mark mode, all of these commands activate the mark.
暫定マーク（transient-mark）モードでは、
これらのコマンドはすべて、マークを活性にします。

@node Mark Ring, Global Mark Ring, Marking Objects, Mark
@c @section The Mark Ring
@section マークリング

@kindex C-u C-SPC
@c @cindex mark ring
@cindex マークリング
@kindex C-u C-@@
@c   Aside from delimiting the region, the mark is also useful for
@c remembering a spot that you may want to go back to.  To make this
@c feature more useful, each buffer remembers 16 previous locations of the
@c mark, in the @dfn{mark ring}.  Commands that set the mark also push the
@c old mark onto this ring.  To return to a marked location, use @kbd{C-u
@c C-@key{SPC}} (or @kbd{C-u C-@@}); this is the command
@c @code{set-mark-command} given a numeric argument.  It moves point to
@c where the mark was, and restores the mark from the ring of former
@c marks.  Thus, repeated use of this command moves point to all of the old
@c marks on the ring, one by one.  The mark positions you move through in
@c this way are not lost; they go to the end of the ring.
マークには、リージョンを区切る以外にも、
あとで戻る可能性のある箇所を記録するという便利な使い方があります。
この機能をより便利にするために、
各バッファでは以前の16箇所のマーク位置を
@dfn{マークリング}（mark ring）に記録しています。
マークを設定するコマンドは、古いマークをこのマークリングに入れます。
マークを設定していた箇所に戻るには、
@kbd{C-u C-@key{SPC}}（または@kbd{C-u C-@@}）を使います。
これは、@code{set-mark-command}コマンドに数引数を指定したものです。
このコマンドは、マークがあった箇所にポイントを移動し、
それ以前のマークを収めたマークリングからマークを復元します。
したがって、このコマンドを繰り返すと、
マークリング上にある過去のマークのすべてを1つ1つ遡って移動できます。
このように辿ったマーク位置は、マークリングのうしろに付け加えられるので、
なくなってしまうことはありません。

@c   Each buffer has its own mark ring.  All editing commands use the current
@c buffer's mark ring.  In particular, @kbd{C-u C-@key{SPC}} always stays in
@c the same buffer.
各バッファには独自のマークリングがあります。
すべての編集コマンドは、カレントバッファのマークリングを使います。
特に、@kbd{C-u C-@key{SPC}}は、つねに同じバッファに留まります。

@c   Many commands that can move long distances, such as @kbd{M-<}
@c (@code{beginning-of-buffer}), start by setting the mark and saving the
@c old mark on the mark ring.  This is to make it easier for you to move
@c back later.  Searches set the mark if they move point.  You can tell
@c when a command sets the mark because it displays @samp{Mark Set} in the
@c echo area.
@kbd{M-<}（@code{beginning-of-buffer}）のような長距離を
移動するコマンドの多くは、まずマークを設定して、
古いマークをマークリングに保存してから動作を開始します。
このようにして、あとで簡単に戻れるようにしておきます。
探索コマンドは、ポイントを移動するときにはマークを設定します。
コマンドがマークを設定したかどうかは、
エコー領域に@samp{Mark Set}と表示されるのでわかります。

@c   If you want to move back to the same place over and over, the mark
@c ring may not be convenient enough.  If so, you can record the position
@c in a register for later retrieval (@pxref{RegPos}).
何度も同じ場所に戻りたい場合には、マークリングでは不十分でしょう。
このような場合には、あとで使うために位置情報をレジスタに記録できます
（@pxref{RegPos}）。

@vindex mark-ring-max
@c   The variable @code{mark-ring-max} specifies the maximum number of
@c entries to keep in the mark ring.  If that many entries exist and
@c another one is pushed, the last one in the list is discarded.  Repeating
@c @kbd{C-u C-@key{SPC}} cycles through the positions currently in the
@c ring.
変数@code{mark-ring-max}は、マークリングに保存する最大項目数を指定します。
すでに多くの項目が存在していて、さらにもう1つ押し込むときには、
リスト内の最古の項目を捨てます。
@kbd{C-u C-@key{SPC}}を繰り返し実行すると、
いまマークリングに入っている位置を巡回することになります。

@vindex mark-ring
@c   The variable @code{mark-ring} holds the mark ring itself, as a list of
@c marker objects, with the most recent first.  This variable is local in
@c every buffer.
変数@code{mark-ring}は、最新のマーカオブジェクトを先頭にして、
マーカオブジェクトのリストとしてマークリングを保持します。
この変数は各バッファにローカルです。

@node Global Mark Ring,  , Mark Ring, Mark
@c @section The Global Mark Ring
@section グローバルマークリング
@c @cindex global mark ring
@cindex グローバルマークリング

@c   In addition to the ordinary mark ring that belongs to each buffer,
@c Emacs has a single @dfn{global mark ring}.  It records a sequence of
@c buffers in which you have recently set the mark, so you can go back
@c to those buffers.
個々のバッファごとの普通のマークリングに加えて、
Emacsには@dfn{グローバルマークリング}（global mark ring）が1つあります。
グローバルマークリングは、最近マークを設定したバッファの系列を記録しますから、
それらのバッファに戻ることができます。

@c   Setting the mark always makes an entry on the current buffer's mark
@c ring.  If you have switched buffers since the previous mark setting, the
@c new mark position makes an entry on the global mark ring also.  The
@c result is that the global mark ring records a sequence of buffers that
@c you have been in, and, for each buffer, a place where you set the mark.
マークを設定すると、つねにカレントバッファのマークリングに項目を作ります。
マークを設定した以降にバッファを切り替えていると、
新しくマークを設定するとグローバルマークリングにも項目を作成します。
その結果、グローバルマークリングには訪れていたバッファの系列が記録され、
各バッファではマークを設定した箇所が記録されます。

@kindex C-x C-@key{SPC}
@findex pop-global-mark
@c   The command @kbd{C-x C-@key{SPC}} (@code{pop-global-mark}) jumps to
@c the buffer and position of the latest entry in the global ring.  It also
@c rotates the ring, so that successive uses of @kbd{C-x C-@key{SPC}} take
@c you to earlier and earlier buffers.
コマンド@kbd{C-x C-@key{SPC}}（@code{pop-global-mark}）は、
グローバルマークリングの最新の項目が示すバッファの位置に移動します。
グローバルマークリングも巡回されるので、
@kbd{C-x C-@key{SPC}}を繰り返し使用すると、
1つずつまえのバッファに移動できます。

