Fix typos.
[bpt/emacs.git] / doc / emacs / mark.texi
CommitLineData
6bf7aab6 1@c This is part of the Emacs manual.
b65d8176 2@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
6ed161e1 3@c 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
6bf7aab6
DL
4@c See file emacs.texi for copying conditions.
5@node Mark, Killing, Help, Top
6@chapter The Mark and the Region
7@cindex mark
8@cindex setting a mark
9@cindex region
10
11 Many Emacs commands operate on an arbitrary contiguous part of the
12current buffer. To specify the text for such a command to operate on,
13you set @dfn{the mark} at one end of it, and move point to the other
14end. The text between point and the mark is called @dfn{the region}.
6bf7aab6 15
0665a8b0
CY
16 If the mark is active, the region always extends between point and
17the mark, no matter which one comes earlier in the text; each time you
18move point, the region changes. Whenever the mark is active, Emacs
19highlights the region. You can customize the appearance of this
20highlighting by changing the @code{region} face (@pxref{Face
21Customization}).
a8a31aae
CY
22
23 The region persists only until you use it. The mark is
24automatically @dfn{deactivated} after certain non-motion commands,
25including any command that changes the text in the buffer. You can
26also explicitly deactivate the mark at any time, by typing @kbd{C-g}
27(@pxref{Quitting}).
28
29@vindex highlight-nonselected-windows
0665a8b0
CY
30 Setting the mark in one buffer has no effect on the marks in other
31buffers. When you return to a buffer with an active mark, the mark is
32at the same place as before. When multiple windows show the same
33buffer, they can have different values of point, and thus different
34regions, but they all share one common mark position. @xref{Windows}.
35Ordinarily, only the selected window highlights its region; however,
36if the variable @code{highlight-nonselected-windows} is
37non-@code{nil}, each window highlights its own region.
6bf7aab6
DL
38
39@menu
40* Setting Mark:: Commands to set the mark.
6bf7aab6 41* Marking Objects:: Commands to put region around textual units.
a8a31aae 42* Using Region:: Summary of ways to operate on contents of the region.
6bf7aab6
DL
43* Mark Ring:: Previous mark positions saved so you can go back there.
44* Global Mark Ring:: Previous mark positions in various buffers.
13abd5e3 45* Shift Selection:: Using shifted cursor motion keys.
0665a8b0 46* Persistent Mark:: Keeping the mark active all the time.
6bf7aab6
DL
47@end menu
48
49@node Setting Mark
50@section Setting the Mark
51
52 Here are some commands for setting the mark:
53
6bf7aab6
DL
54@table @kbd
55@item C-@key{SPC}
0665a8b0 56Set the mark at point (@code{set-mark-command}).
6bf7aab6
DL
57@item C-@@
58The same.
59@item C-x C-x
0665a8b0 60Set the mark at point, and move point where the mark was
a8a31aae 61(@code{exchange-point-and-mark}).
6bf7aab6
DL
62@item Drag-Mouse-1
63Set point and the mark around the text you drag across.
64@item Mouse-3
0665a8b0 65Set the mark at point, then move point to where you click
6bf7aab6 66(@code{mouse-save-then-kill}).
0665a8b0
CY
67@item @samp{Shifted motion keys}
68Set the mark at point if the mark is inactive, then move point.
6bf7aab6
DL
69@end table
70
6bf7aab6 71@kindex C-SPC
0665a8b0 72@kindex C-@@
6bf7aab6 73@findex set-mark-command
a8a31aae 74 The most common way to set the mark is with @kbd{C-@key{SPC}}
0665a8b0
CY
75(@code{set-mark-command}), which sets the mark where point
76is@footnote{There is no @kbd{C-@key{SPC}} character in
77@acronym{ASCII}; usually, typing @kbd{C-@key{SPC}} on a text terminal
78gives the character @kbd{C-@@}. This key is also bound to
79@code{set-mark-command}, so unless you are unlucky enough to have an
80text terminal that behaves differently, you might as well think of
81@kbd{C-@@} as @kbd{C-@key{SPC}}.}. You can then move point away,
82leaving the mark behind.
a8a31aae
CY
83
84 For example, suppose you wish to convert part of the buffer to upper
0665a8b0
CY
85case. To accomplish this, go to the beginning of the desired text,
86type @kbd{C-@key{SPC}}, and move point until the desired portion of
87text is highlighted. Now type @kbd{C-x C-u} (@code{upcase-region}).
88This converts the text in the region to upper case, and then
89deactivates the mark.
6bf7aab6
DL
90
91@kindex C-x C-x
92@findex exchange-point-and-mark
0665a8b0
CY
93 The command @kbd{C-x C-x} (@code{exchange-point-and-mark}) exchanges
94the positions of point and the mark, keeping the region unchanged. If
95no mark is active, Emacs first reactivates the mark wherever it was
96last set. @kbd{C-x C-x} is useful when you are satisfied with the
97position of point but want to move the other end of the region (where
98the mark is). Using @kbd{C-x C-x} a second time, if necessary, puts
99the mark at the new position with point back at its original position.
100
13abd5e3
CY
101 You can also set the mark with the mouse. If you press the left
102mouse button (@kbd{down-mouse-1}) and drag the mouse across a range of
103text while holding down this button, this sets the mark where you
104first pressed the mouse button and puts point where you release it.
105Alternatively, clicking the right mouse button (@kbd{mouse-3}) sets
106the mark at point and then moves point to where you clicked. Using
107the mouse to mark a region also copies the region into the kill ring
108(@pxref{Kill Ring}). @xref{Mouse Commands}, for a more detailed
109description of these mouse commands.
0665a8b0
CY
110
111@cindex shift-selection
112 Finally, you can set the mark by holding down the shift key while
113typing certain cursor motion commands (such as @kbd{S-@key{right}},
114@kbd{S-C-f}, @kbd{S-C-n}, etc.) This is referred to as
115@dfn{shift-selection}. This sets the mark at point before moving
116point, but only if there is no active mark set via shift-selection.
117The mark set by mouse commands and by shift-selection behaves slightly
118differently from the usual mark: any subsequent unshifted cursor
119motion command deactivates it automatically. For details, @xref{Shift
13abd5e3 120Selection}.
6bf7aab6 121
a8a31aae
CY
122 Whenever the mark is active, you can deactivate it by typing
123@kbd{C-g} (@pxref{Quitting}). The mark is also automatically
124deactivated after certain non-motion commands.
6bf7aab6
DL
125
126@node Marking Objects
127@section Commands to Mark Textual Objects
128
129@cindex marking sections of text
130 Here are the commands for placing point and the mark around a textual
a8a31aae 131object such as a word, list, paragraph or page:
6bf7aab6
DL
132
133@table @kbd
134@item M-@@
0665a8b0
CY
135Set mark after end of next word (@code{mark-word}). This does not
136move point.
6bf7aab6 137@item C-M-@@
0665a8b0
CY
138Set mark after end of following balanced expression
139(@code{mark-sexp}). This does not move point.
6bf7aab6 140@item M-h
a8a31aae
CY
141Move point to the beginning of the current paragraph, and set mark at
142the end (@code{mark-paragraph}).
6bf7aab6 143@item C-M-h
a8a31aae
CY
144Move point to the beginning of the current defun, and set mark at the
145end (@code{mark-defun}).
6bf7aab6 146@item C-x C-p
a8a31aae
CY
147Move point to the beginning of the current page, and set mark at the
148end (@code{mark-page}).
0665a8b0
CY
149@item C-x h
150Move point to the beginning of the buffer, and set mark at the end
151(@code{mark-whole-buffer}).
6bf7aab6
DL
152@end table
153
0665a8b0
CY
154@findex mark-word
155@findex mark-sexp
366c721e
RS
156@kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next
157word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the
158next balanced expression (@pxref{Expressions}). These commands handle
a8a31aae 159arguments just like @kbd{M-f} and @kbd{C-M-f}.
6bf7aab6
DL
160
161@kindex C-x h
162@findex mark-whole-buffer
0665a8b0
CY
163 The other commands in the above list set both point and mark, so as
164to delimit an object in the buffer. @kbd{M-h} (@code{mark-paragraph})
165moves point to the beginning of the paragraph that surrounds or
166follows point, and sets the mark at the end of that paragraph
167(@pxref{Paragraphs}). As a special exception, repeated invocations of
168@kbd{M-h} extend the region to subsequent paragraphs. This is
169convenient for indenting, case-converting, or killing entire
170paragraphs.
171
172 The @kbd{M-h} command accepts prefix arguments. If the argument's
173value is positive, @kbd{M-h} marks that many paragraphs starting with
174the one surrounding point; therefore, @kbd{C-u M-h} is equivalent to
175@kbd{M-h M-h M-h M-h}. If the prefix argument is @minus{}@var{n},
176@kbd{M-h} marks @var{n} paragraphs running back from the one
177surrounding point; in this case, point moves forward to the end of
178that paragraph, and the mark goes at the start of the region.
179
180 Similarly, @kbd{C-M-h} (@code{mark-defun}) sets mark and point
181around major top-level definitions (@pxref{Moving by Defuns}), and
182@kbd{C-x C-p} (@code{mark-page}) does the same for pages
a8ce3d17 183(@pxref{Pages}). These treat repeated invocations and prefix
0665a8b0 184arguments similarly to @code{mark-paragraph}.
a8a31aae 185
6bf7aab6 186 Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire
0665a8b0
CY
187buffer as the region, by putting point at the beginning and the mark
188at the end. (In some programs this is called ``select all.'')
6bf7aab6 189
a8a31aae
CY
190@node Using Region
191@section Operating on the Region
192
193@cindex operations on a marked region
194 Once you have a region, here are some of the ways you can operate on
195it:
196
197@itemize @bullet
198@item
199Kill it with @kbd{C-w} (@pxref{Killing}).
200@item
201Copy it to the kill ring with @kbd{M-w} (@pxref{Yanking}).
202@item
203Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} (@pxref{Case}).
204@item
205Undo changes within it using @kbd{C-u C-/} (@pxref{Undo}).
206@item
207Replace text within it using @kbd{M-%} (@pxref{Query Replace}).
208@item
209Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
210@item
211Fill it as text with @kbd{M-x fill-region} (@pxref{Filling}).
212@item
213Print hardcopy with @kbd{M-x print-region} (@pxref{Printing}).
214@item
215Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
216@item
217Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
218@item
219Save it in a buffer or a file (@pxref{Accumulating Text}).
220@end itemize
221
222 Most commands that operate on the text in the region have the word
223@code{region} in their names.
224
d01c3d68
CY
225 Some commands have a default behavior when the region is inactive,
226but operate on the text in the region if the region is active. For
227example, @kbd{M-$} (@code{ispell-word}) normally checks the spelling
228of the word at point, but it checks the text in the region if the
229region is active (@pxref{Spelling}). Normally, such commands use
230their default behavior if the region is empty (i.e., if mark and point
231are at the same position). If you want them to operate on the empty
232region, change the variable @code{use-empty-active-region} to
233@code{t}.
234
1e680ac9
CY
235@cindex Delete Selection mode
236@cindex mode, Delete Selection
237@findex delete-selection-mode
238 If you enable Delete Selection mode, a minor mode, then inserting
239text while the region is active causes the selected text to be deleted
240first. This also deactivates the mark. Many graphical applications
241follow this convention, but Emacs does not. To toggle Delete
242Selection mode on or off, type @kbd{M-x delete-selection-mode}.
243Another effect of this mode is that some keys, such as @key{DEL} and
244@kbd{C-d}, always kill the region if one exists.
245
0665a8b0
CY
246@node Mark Ring
247@section The Mark Ring
248
249@cindex mark ring
250 Aside from delimiting the region, the mark is also useful for
251remembering spots that you may want to go back to. Each buffer
252remembers 16 previous locations of the mark, in the @dfn{mark ring}.
253Commands that set the mark also push the old mark onto this ring.
254
255@table @kbd
256@item C-@key{SPC} C-@key{SPC}
257Set the mark, pushing it onto the mark ring, without activating it.
258@item C-u C-@key{SPC}
259Move point to where the mark was, and restore the mark from the ring
260of former marks.
261@end table
262
263@kindex C-SPC C-SPC
264 The command C-@key{SPC} C-@key{SPC} is handy when you want to use
265the mark to remember a position to which you may wish to return. It
266pushes the current point onto the mark ring, without activating the
267mark (which would cause Emacs to highlight the region). This is
268actually two consecutive invocations of @kbd{C-@key{SPC}}
269(@code{set-mark-command}); the first @kbd{C-@key{SPC}} sets the mark,
270and the second @kbd{C-@key{SPC}} deactivates it. (When Transient Mark
271mode is off, C-@key{SPC} C-@key{SPC} instead activates Transient Mark
272mode temporarily. @xref{Persistent Mark}.)
273
274@kindex C-u C-SPC
275 To return to a marked position, use @code{set-mark-command} with a
276prefix argument: @kbd{C-u C-@key{SPC}}. This moves point to where the
277mark was, and deactivates the mark if it was active. Each subsequent
278@kbd{C-u C-@key{SPC}} jumps to a prior position stored in the mark
279ring. The positions you move through in this way are not lost; they
280go to the end of the ring.
281
282@vindex set-mark-command-repeat-pop
283 If you set @code{set-mark-command-repeat-pop} to non-@code{nil},
284then immediately after you type @kbd{C-u C-@key{SPC}}, you can type
285@kbd{C-@key{SPC}} instead of @kbd{C-u C-@key{SPC}} to cycle through
286the mark ring. By default, @code{set-mark-command-repeat-pop} is
287@code{nil}.
288
289 Each buffer has its own mark ring. All editing commands use the
290current buffer's mark ring. In particular, @kbd{C-u C-@key{SPC}}
291always stays in the same buffer.
292
293@vindex mark-ring-max
294 The variable @code{mark-ring-max} specifies the maximum number of
295entries to keep in the mark ring. If that many entries exist and
296another one is pushed, the earliest one in the list is discarded. Repeating
297@kbd{C-u C-@key{SPC}} cycles through the positions currently in the
298ring.
299
300@vindex mark-even-if-inactive
301 If the variable @code{mark-even-if-inactive} is @code{nil}, commands
302can only use the mark and the region when it is active. This variable
303is non-@code{nil} by default.
304
305 If you want to move back to the same place over and over, the mark
306ring may not be convenient enough. If so, you can record the position
307in a register for later retrieval (@pxref{RegPos,, Saving Positions in
308Registers}).
309
310@node Global Mark Ring
311@section The Global Mark Ring
312@cindex global mark ring
313
314 In addition to the ordinary mark ring that belongs to each buffer,
315Emacs has a single @dfn{global mark ring}. Each time you set a mark,
316in any buffer, this is recorded in the global mark ring in addition to
317the current buffer's own mark ring.
318
319@kindex C-x C-@key{SPC}
320@findex pop-global-mark
321 The command @kbd{C-x C-@key{SPC}} (@code{pop-global-mark}) jumps to
322the buffer and position of the latest entry in the global ring. It also
323rotates the ring, so that successive uses of @kbd{C-x C-@key{SPC}} take
324you to earlier buffers and mark positions.
325
13abd5e3
CY
326@node Shift Selection
327@section Shift Selection
0665a8b0
CY
328@cindex shift-selection
329
330 If you hold down the shift key while typing a cursor motion command,
331this sets the mark before moving point, so that the region extends
332from the original position of point to its new position. This
333feature, newly introduced in Emacs 23, is referred to as
334@dfn{shift-selection}. It is similar to the way text is selected in
335other editors.
336
337 The mark set via shift-selection behaves a little differently from
338what we have described above. Firstly, in addition to the usual ways
339of deactivating the mark (such as changing the buffer text or typing
340@kbd{C-g}), the mark is deactivated by any @emph{unshifted} cursor
341motion command. Secondly, any subsequent @emph{shifted} cursor motion
342command avoids setting the mark anew. Therefore, a series of shifted
343cursor motion commands will continuously extend the region.
344
345 Shift-selection only works if the shifted cursor motion key is not
346already bound to a separate command (@pxref{Customization}). For
347example, if you bind @kbd{S-C-f} to another command, typing
348@kbd{S-C-f} runs that command instead of performing a shift-selected
349version of @kbd{C-f} (@code{forward-char}).
350
351 A mark set via mouse commands behaves the same as a mark set via
352shift-selection (@pxref{Setting Mark}). For example, if you specify a
353region by dragging the mouse, you can continue to extend the region
354using shifted cursor motion commands. In either case, any unshifted
355cursor motion command deactivates the mark.
356
357 To turn off shift-selection, set @code{shift-select-mode} to
358@code{nil}. Doing this does not disable setting the mark via mouse
359commands.
360
a8a31aae
CY
361@node Persistent Mark
362@section Persistent Marks
363@cindex mode, Transient Mark
364@cindex Transient Mark mode
365@cindex highlighting region
366@cindex region highlighting
367@cindex Zmacs mode
368
0665a8b0 369 By default, the region is highlighted whenever it exists, and
a8a31aae
CY
370disappears once you use it or explicitly deactivate the mark. This
371behavior is called Transient Mark mode@footnote{It is also sometimes
372called @dfn{Zmacs mode}, because the Zmacs editor on the MIT Lisp
373Machine handled the mark in a similar way.}.
374
375@findex transient-mark-mode
376 Turning off Transient Mark mode switches Emacs to an alternative
377mode of operation, which was the default prior to Emacs 23. When
378Transient Mark mode is off, the mark is persistent: it is @emph{never}
379deactivated, but can be set to different locations using commands such
380as @kbd{C-@key{SPC}}. After the first time you set the mark in a
381buffer, there is always a region in that buffer. Emacs will not
0665a8b0 382highlight the region, because that would be a nuisance. As a special
a8a31aae
CY
383exception, the region is temporarily highlighted after it is set with
384the mouse.
385
386 To turn off Transient Mark mode, type @kbd{M-x transient-mark-mode}.
387This command toggles the mode; you can use the same command to turn
0665a8b0
CY
388Transient Mark mode on again. You can also turn off Transient Mark
389mode using the menu bar: in the @samp{Options} menu, toggle the
390@samp{Active Region Highlighting} menu item.
a8a31aae
CY
391
392 Here are the details of how Emacs behaves when Transient Mark mode
393is off:
394
395@itemize @bullet
396@item
397Emacs does not show where the mark is located---you have to remember.
398The usual solution to this problem is to set the mark and then use it
399soon, before you forget where it is. Alternatively, you can check the
400location of the mark by using @kbd{C-x C-x}, which exchanges the
401positions of the point and the mark (@pxref{Setting Mark}).
402
403@item
404Many commands that insert text, such as @kbd{C-y} (@code{yank}),
405position point and the mark at opposite ends of the inserted text, so
406that the region consists of the text just inserted. You can tell when
407a command sets the mark because it displays @samp{Mark set} in the
408echo area.
409
410@item
411Many commands that move point long distances, like @kbd{M-<} and
412@kbd{C-s}, first set the mark where point was.
413
414@item
415Some commands that ordinarily operate on the region, if one exists,
416act instead on the entire buffer. For instance, @kbd{C-x u} normally
417reverses changes within the region if one exists; when Transient Mark
418mode is off, it acts on the entire buffer. However, you can type
419@kbd{C-u C-x u} to make it operate on the region. @xref{Undo}. Other
420commands that act this way are identified in their own documentation.
421@end itemize
422
423 While Transient Mark mode is off, you can activate it temporarily
424using @kbd{C-@key{SPC} C-@key{SPC}} or @kbd{C-u C-x C-x}.
425
426@table @kbd
427@item C-@key{SPC} C-@key{SPC}
428@kindex C-@key{SPC} C-@key{SPC}
429Set the mark at point (like plain @kbd{C-@key{SPC}}) and enable
430Transient Mark mode just once, until the mark is deactivated. (This
431is not really a separate command; you are using the @kbd{C-@key{SPC}}
432command twice.)
433
434@item C-u C-x C-x
435@kindex C-u C-x C-x
436Activate the mark without changing it; enable Transient Mark mode just
437once, until the mark is deactivated. (This is the @kbd{C-x C-x}
438command, @code{exchange-point-and-mark}, with a prefix argument.)
439@end table
440
441 These commands set or activate the mark, and enable Transient Mark
442mode only until the mark is deactivated. One reason you may want to
443use them is that some commands operate on the entire buffer instead of
444the region when Transient Mark mode is off. Enabling Transient Mark
445mode momentarily gives you a way to use these commands on the region.
6bf7aab6 446
ab5796a9
MB
447@ignore
448 arch-tag: f35e4d82-911b-4cfc-a3d7-3c87b2abba20
449@end ignore