2 @node Mark, Mouse Selection, Help, Top
3 @chapter Selecting Text
7 Many Emacs commands operate on an arbitrary contiguous
8 part of the current buffer. You can select text in two ways:
12 You use special keys to select text by defining a region between point
15 If you are running XEmacs under X, you can also select text
19 @section The Mark and the Region
20 To specify the text for a command to operate on, set @dfn{the
21 mark} at one end of it, and move point to the other end. The text
22 between point and the mark is called @dfn{the region}. You can move
23 point or the mark to adjust the boundaries of the region. It doesn't
24 matter which one is set first chronologically, or which one comes
27 Once the mark has been set, it remains until it is set again at
28 another place. The mark remains fixed with respect to the preceding
29 character if text is inserted or deleted in a buffer. Each Emacs
30 buffer has its own mark; when you return to a buffer that had been
31 selected previously, it has the same mark it had before.
33 Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
34 @kbd{M-x insert-buffer}, position the mark at one end of the inserted
35 text---the opposite end from where point is positioned, so that the region
36 contains the text just inserted.
38 Aside from delimiting the region, the mark is useful for marking
39 a spot that you may want to go back to. To make this feature more useful,
40 Emacs remembers 16 previous locations of the mark in the @code{mark ring}.
43 * Setting Mark:: Commands to set the mark.
44 * Using Region:: Summary of ways to operate on contents of the region.
45 * Marking Objects:: Commands to put region around textual units.
46 * Mark Ring:: Previous mark positions saved so you can go back there.
49 @node Setting Mark, Using Region, Mark, Mark
50 @subsection Setting the Mark
52 Here are some commands for setting the mark:
57 Set the mark where point is (@code{set-mark-command}).
61 Interchange mark and point (@code{exchange-point-and-mark}).
63 Pushes a mark at the beginning of the buffer.
65 Pushes a mark at the end of the buffer.
68 For example, to convert part of the buffer to all
69 upper-case, you can use the @kbd{C-x C-u} (@code{upcase-region})
70 command, which operates on the text in the region. First go to the
71 beginning of the text you want to capitalize and type @kbd{C-@key{SPC}} to
72 put the mark there, then move to the end, and then type @kbd{C-x C-u} to
73 capitalize the selected region. You can also set the mark at the end of the
74 text, move to the beginning, and then type @kbd{C-x C-u}. Most commands
75 that operate on the text in the region have the word @code{region} in
79 @findex set-mark-command
80 The most common way to set the mark is with the @kbd{C-@key{SPC}}
81 command (@code{set-mark-command}). This command sets the mark where
82 point is. You can then move point away, leaving the mark behind. It is
83 actually incorrect to speak of the character @kbd{C-@key{SPC}}; there is
84 no such character. When you type @key{SPC} while holding down
85 @key{CTRL}, you get the character @kbd{C-@@} on most terminals. This
86 character is actually bound to @code{set-mark-command}. But unless you are
87 unlucky enough to have a terminal where typing @kbd{C-@key{SPC}} does
88 not produce @kbd{C-@@}, you should think of this character as
92 @findex exchange-point-and-mark
93 Since terminals have only one cursor, Emacs cannot show you where the
94 mark is located. Most people use the mark soon after they set it, before
95 they forget where it is. But you can see where the mark is with the
96 command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which puts the
97 mark where point was and point where the mark was. The extent of the
98 region is unchanged, but the cursor and point are now at the previous
103 @findex mark-beginning-of-buffer
104 @findex mark-end-of-buffer
105 Another way to set the mark is to push the mark to the beginning of a
106 buffer while leaving point at its original location. If you supply an
107 argument to @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
108 @var{n}/10 of the way from the true beginning of the buffer. You can
109 also set the mark at the end of a buffer with @kbd{C->}
110 (@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer,
111 leaving point alone. Supplying an argument to the command pushes the mark
112 @var{n}/10 of the way from the true end of the buffer.
114 If you are using XEmacs under the X window system, you can set
115 the variable @code{zmacs-regions} to @code{t}. This makes the current
116 region (defined by point and mark) highlight and makes it available as
117 the X clipboard selection, which means you can use the menu bar items on
118 it. @xref{Active Regions}, for more information.
120 @kbd{C-x C-x} is also useful when you are satisfied with the location of
121 point but want to move the mark; do @kbd{C-x C-x} to put point there and
122 then you can move it. A second use of @kbd{C-x C-x}, if necessary, puts
123 the mark at the new location with point back at its original location.
125 @node Using Region, Marking Objects, Setting Mark, Mark
126 @subsection Operating on the Region
128 Once you have created an active region, you can do many things to
132 Kill it with @kbd{C-w} (@pxref{Killing}).
134 Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
136 Save it in a buffer or a file (@pxref{Accumulating Text}).
138 Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} @*(@pxref{Case}).
140 Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
142 Fill it as text with @kbd{M-q} (@pxref{Filling}).
144 Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
146 Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
149 @node Marking Objects, Mark Ring, Using Region, Mark
150 @subsection Commands to Mark Textual Objects
152 There are commands for placing point and the mark around a textual
153 object such as a word, list, paragraph or page.
157 Set mark after end of next word (@code{mark-word}). This command and
158 the following one do not move point.
160 Set mark after end of next Lisp expression (@code{mark-sexp}).
162 Put region around current paragraph (@code{mark-paragraph}).
164 Put region around current Lisp defun (@code{mark-defun}).
166 Put region around entire buffer (@code{mark-whole-buffer}).
168 Put region around current page (@code{mark-page}).
175 @kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next word,
176 while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
177 expression. These characters sometimes save you some typing.
183 @findex mark-paragraph
186 @findex mark-whole-buffer
187 A number of commands are available that set both point and mark and
188 thus delimit an object in the buffer. @kbd{M-h} (@code{mark-paragraph})
189 moves point to the beginning of the paragraph that surrounds or follows
190 point, and puts the mark at the end of that paragraph
191 (@pxref{Paragraphs}). You can then indent, case-convert, or kill the
192 whole paragraph. In the same fashion, @kbd{C-M-h} (@code{mark-defun})
193 puts point before and the mark after the current or following defun
194 (@pxref{Defuns}). @kbd{C-x C-p} (@code{mark-page}) puts point before
195 the current page (or the next or previous, depending on the argument),
196 and mark at the end (@pxref{Pages}). The mark goes after the
197 terminating page delimiter (to include it), while point goes after the
198 preceding page delimiter (to exclude it). Finally, @kbd{C-x h}
199 (@code{mark-whole-buffer}) sets up the entire buffer as the region by
200 putting point at the beginning and the mark at the end.
202 @node Mark Ring,, Marking Objects, Mark
203 @subsection The Mark Ring
208 Aside from delimiting the region, the mark is also useful for marking
209 a spot that you may want to go back to. To make this feature more
210 useful, Emacs remembers 16 previous locations of the mark in the
211 @dfn{mark ring}. Most commands that set the mark push the old mark onto
212 this ring. To return to a marked location, use @kbd{C-u C-@key{SPC}}
213 (or @kbd{C-u C-@@}); this is the command @code{set-mark-command} given a
214 numeric argument. The command moves point to where the mark was, and
215 restores the mark from the ring of former marks. Repeated use of this
216 command moves point to all the old marks on the ring, one by one.
217 The marks you have seen go to the end of the ring, so no marks are lost.
219 Each buffer has its own mark ring. All editing commands use the current
220 buffer's mark ring. In particular, @kbd{C-u C-@key{SPC}} always stays in
223 Many commands that can move long distances, such as @kbd{M-<}
224 (@code{beginning-of-buffer}), start by setting the mark and saving the
225 old mark on the mark ring. This makes it easier for you to move back
226 later. Searches set the mark, unless they do not actually move point.
227 When a command sets the mark, @samp{Mark Set} is printed in the
230 @vindex mark-ring-max
231 The variable @code{mark-ring-max} is the maximum number of entries to
232 keep in the mark ring. If that many entries exist and another entry is
233 added, the last entry in the list is discarded. Repeating @kbd{C-u
234 C-@key{SPC}} circulates through the entries that are currently in the
238 The variable @code{mark-ring} holds the mark ring itself, as a list of
239 marker objects in the order most recent first. This variable is local