emacstool has been removed.
[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,
3f548a7c 3@c 2003, 2004, 2005, 2006, 2007, 2008 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.
0665a8b0
CY
45* Shift selection:: Using shifted cursor motion keys.
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
101 You can also set the mark with the mouse (@pxref{Mouse Commands}).
102If you press the left mouse button (@kbd{down-mouse-1}) and drag the
103mouse across a range of text while holding down this button, this sets
104the mark where you first pressed the mouse button and puts point where
105you release it. Alternatively, clicking the right mouse button
106(@kbd{mouse-3}) sets the mark at point and then moves point to where
107you clicked. Using the mouse to mark a region also copies the region
108into the kill ring (@pxref{Kill Ring}).
109
110@cindex shift-selection
111 Finally, you can set the mark by holding down the shift key while
112typing certain cursor motion commands (such as @kbd{S-@key{right}},
113@kbd{S-C-f}, @kbd{S-C-n}, etc.) This is referred to as
114@dfn{shift-selection}. This sets the mark at point before moving
115point, but only if there is no active mark set via shift-selection.
116The mark set by mouse commands and by shift-selection behaves slightly
117differently from the usual mark: any subsequent unshifted cursor
118motion command deactivates it automatically. For details, @xref{Shift
119selection}.
6bf7aab6 120
a8a31aae
CY
121 Whenever the mark is active, you can deactivate it by typing
122@kbd{C-g} (@pxref{Quitting}). The mark is also automatically
123deactivated after certain non-motion commands.
6bf7aab6
DL
124
125@node Marking Objects
126@section Commands to Mark Textual Objects
127
128@cindex marking sections of text
129 Here are the commands for placing point and the mark around a textual
a8a31aae 130object such as a word, list, paragraph or page:
6bf7aab6
DL
131
132@table @kbd
133@item M-@@
0665a8b0
CY
134Set mark after end of next word (@code{mark-word}). This does not
135move point.
6bf7aab6 136@item C-M-@@
0665a8b0
CY
137Set mark after end of following balanced expression
138(@code{mark-sexp}). This does not move point.
6bf7aab6 139@item M-h
a8a31aae
CY
140Move point to the beginning of the current paragraph, and set mark at
141the end (@code{mark-paragraph}).
6bf7aab6 142@item C-M-h
a8a31aae
CY
143Move point to the beginning of the current defun, and set mark at the
144end (@code{mark-defun}).
6bf7aab6 145@item C-x C-p
a8a31aae
CY
146Move point to the beginning of the current page, and set mark at the
147end (@code{mark-page}).
0665a8b0
CY
148@item C-x h
149Move point to the beginning of the buffer, and set mark at the end
150(@code{mark-whole-buffer}).
6bf7aab6
DL
151@end table
152
0665a8b0
CY
153@findex mark-word
154@findex mark-sexp
366c721e
RS
155@kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next
156word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the
157next balanced expression (@pxref{Expressions}). These commands handle
a8a31aae 158arguments just like @kbd{M-f} and @kbd{C-M-f}.
6bf7aab6
DL
159
160@kindex C-x h
161@findex mark-whole-buffer
0665a8b0
CY
162 The other commands in the above list set both point and mark, so as
163to delimit an object in the buffer. @kbd{M-h} (@code{mark-paragraph})
164moves point to the beginning of the paragraph that surrounds or
165follows point, and sets the mark at the end of that paragraph
166(@pxref{Paragraphs}). As a special exception, repeated invocations of
167@kbd{M-h} extend the region to subsequent paragraphs. This is
168convenient for indenting, case-converting, or killing entire
169paragraphs.
170
171 The @kbd{M-h} command accepts prefix arguments. If the argument's
172value is positive, @kbd{M-h} marks that many paragraphs starting with
173the one surrounding point; therefore, @kbd{C-u M-h} is equivalent to
174@kbd{M-h M-h M-h M-h}. If the prefix argument is @minus{}@var{n},
175@kbd{M-h} marks @var{n} paragraphs running back from the one
176surrounding point; in this case, point moves forward to the end of
177that paragraph, and the mark goes at the start of the region.
178
179 Similarly, @kbd{C-M-h} (@code{mark-defun}) sets mark and point
180around major top-level definitions (@pxref{Moving by Defuns}), and
181@kbd{C-x C-p} (@code{mark-page}) does the same for pages
182(@pxref{Pages}). These treat repeated invokations and prefix
183arguments similarly to @code{mark-paragraph}.
a8a31aae 184
6bf7aab6 185 Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire
0665a8b0
CY
186buffer as the region, by putting point at the beginning and the mark
187at the end. (In some programs this is called ``select all.'')
6bf7aab6 188
a8a31aae
CY
189@node Using Region
190@section Operating on the Region
191
192@cindex operations on a marked region
193 Once you have a region, here are some of the ways you can operate on
194it:
195
196@itemize @bullet
197@item
198Kill it with @kbd{C-w} (@pxref{Killing}).
199@item
200Copy it to the kill ring with @kbd{M-w} (@pxref{Yanking}).
201@item
202Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} (@pxref{Case}).
203@item
204Undo changes within it using @kbd{C-u C-/} (@pxref{Undo}).
205@item
206Replace text within it using @kbd{M-%} (@pxref{Query Replace}).
207@item
208Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
209@item
210Fill it as text with @kbd{M-x fill-region} (@pxref{Filling}).
211@item
212Print hardcopy with @kbd{M-x print-region} (@pxref{Printing}).
213@item
214Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
215@item
216Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
217@item
218Save it in a buffer or a file (@pxref{Accumulating Text}).
219@end itemize
220
221 Most commands that operate on the text in the region have the word
222@code{region} in their names.
223
0665a8b0
CY
224 If Delete Selection mode is enabled, some commands delete the region
225when used while the mark is active. @xref{Mouse Commands}.
226
227@node Mark Ring
228@section The Mark Ring
229
230@cindex mark ring
231 Aside from delimiting the region, the mark is also useful for
232remembering spots that you may want to go back to. Each buffer
233remembers 16 previous locations of the mark, in the @dfn{mark ring}.
234Commands that set the mark also push the old mark onto this ring.
235
236@table @kbd
237@item C-@key{SPC} C-@key{SPC}
238Set the mark, pushing it onto the mark ring, without activating it.
239@item C-u C-@key{SPC}
240Move point to where the mark was, and restore the mark from the ring
241of former marks.
242@end table
243
244@kindex C-SPC C-SPC
245 The command C-@key{SPC} C-@key{SPC} is handy when you want to use
246the mark to remember a position to which you may wish to return. It
247pushes the current point onto the mark ring, without activating the
248mark (which would cause Emacs to highlight the region). This is
249actually two consecutive invocations of @kbd{C-@key{SPC}}
250(@code{set-mark-command}); the first @kbd{C-@key{SPC}} sets the mark,
251and the second @kbd{C-@key{SPC}} deactivates it. (When Transient Mark
252mode is off, C-@key{SPC} C-@key{SPC} instead activates Transient Mark
253mode temporarily. @xref{Persistent Mark}.)
254
255@kindex C-u C-SPC
256 To return to a marked position, use @code{set-mark-command} with a
257prefix argument: @kbd{C-u C-@key{SPC}}. This moves point to where the
258mark was, and deactivates the mark if it was active. Each subsequent
259@kbd{C-u C-@key{SPC}} jumps to a prior position stored in the mark
260ring. The positions you move through in this way are not lost; they
261go to the end of the ring.
262
263@vindex set-mark-command-repeat-pop
264 If you set @code{set-mark-command-repeat-pop} to non-@code{nil},
265then immediately after you type @kbd{C-u C-@key{SPC}}, you can type
266@kbd{C-@key{SPC}} instead of @kbd{C-u C-@key{SPC}} to cycle through
267the mark ring. By default, @code{set-mark-command-repeat-pop} is
268@code{nil}.
269
270 Each buffer has its own mark ring. All editing commands use the
271current buffer's mark ring. In particular, @kbd{C-u C-@key{SPC}}
272always stays in the same buffer.
273
274@vindex mark-ring-max
275 The variable @code{mark-ring-max} specifies the maximum number of
276entries to keep in the mark ring. If that many entries exist and
277another one is pushed, the earliest one in the list is discarded. Repeating
278@kbd{C-u C-@key{SPC}} cycles through the positions currently in the
279ring.
280
281@vindex mark-even-if-inactive
282 If the variable @code{mark-even-if-inactive} is @code{nil}, commands
283can only use the mark and the region when it is active. This variable
284is non-@code{nil} by default.
285
286 If you want to move back to the same place over and over, the mark
287ring may not be convenient enough. If so, you can record the position
288in a register for later retrieval (@pxref{RegPos,, Saving Positions in
289Registers}).
290
291@node Global Mark Ring
292@section The Global Mark Ring
293@cindex global mark ring
294
295 In addition to the ordinary mark ring that belongs to each buffer,
296Emacs has a single @dfn{global mark ring}. Each time you set a mark,
297in any buffer, this is recorded in the global mark ring in addition to
298the current buffer's own mark ring.
299
300@kindex C-x C-@key{SPC}
301@findex pop-global-mark
302 The command @kbd{C-x C-@key{SPC}} (@code{pop-global-mark}) jumps to
303the buffer and position of the latest entry in the global ring. It also
304rotates the ring, so that successive uses of @kbd{C-x C-@key{SPC}} take
305you to earlier buffers and mark positions.
306
307@node Shift selection
308@section Shift selection
309@cindex shift-selection
310
311 If you hold down the shift key while typing a cursor motion command,
312this sets the mark before moving point, so that the region extends
313from the original position of point to its new position. This
314feature, newly introduced in Emacs 23, is referred to as
315@dfn{shift-selection}. It is similar to the way text is selected in
316other editors.
317
318 The mark set via shift-selection behaves a little differently from
319what we have described above. Firstly, in addition to the usual ways
320of deactivating the mark (such as changing the buffer text or typing
321@kbd{C-g}), the mark is deactivated by any @emph{unshifted} cursor
322motion command. Secondly, any subsequent @emph{shifted} cursor motion
323command avoids setting the mark anew. Therefore, a series of shifted
324cursor motion commands will continuously extend the region.
325
326 Shift-selection only works if the shifted cursor motion key is not
327already bound to a separate command (@pxref{Customization}). For
328example, if you bind @kbd{S-C-f} to another command, typing
329@kbd{S-C-f} runs that command instead of performing a shift-selected
330version of @kbd{C-f} (@code{forward-char}).
331
332 A mark set via mouse commands behaves the same as a mark set via
333shift-selection (@pxref{Setting Mark}). For example, if you specify a
334region by dragging the mouse, you can continue to extend the region
335using shifted cursor motion commands. In either case, any unshifted
336cursor motion command deactivates the mark.
337
338 To turn off shift-selection, set @code{shift-select-mode} to
339@code{nil}. Doing this does not disable setting the mark via mouse
340commands.
341
a8a31aae
CY
342@node Persistent Mark
343@section Persistent Marks
344@cindex mode, Transient Mark
345@cindex Transient Mark mode
346@cindex highlighting region
347@cindex region highlighting
348@cindex Zmacs mode
349
0665a8b0 350 By default, the region is highlighted whenever it exists, and
a8a31aae
CY
351disappears once you use it or explicitly deactivate the mark. This
352behavior is called Transient Mark mode@footnote{It is also sometimes
353called @dfn{Zmacs mode}, because the Zmacs editor on the MIT Lisp
354Machine handled the mark in a similar way.}.
355
356@findex transient-mark-mode
357 Turning off Transient Mark mode switches Emacs to an alternative
358mode of operation, which was the default prior to Emacs 23. When
359Transient Mark mode is off, the mark is persistent: it is @emph{never}
360deactivated, but can be set to different locations using commands such
361as @kbd{C-@key{SPC}}. After the first time you set the mark in a
362buffer, there is always a region in that buffer. Emacs will not
0665a8b0 363highlight the region, because that would be a nuisance. As a special
a8a31aae
CY
364exception, the region is temporarily highlighted after it is set with
365the mouse.
366
367 To turn off Transient Mark mode, type @kbd{M-x transient-mark-mode}.
368This command toggles the mode; you can use the same command to turn
0665a8b0
CY
369Transient Mark mode on again. You can also turn off Transient Mark
370mode using the menu bar: in the @samp{Options} menu, toggle the
371@samp{Active Region Highlighting} menu item.
a8a31aae
CY
372
373 Here are the details of how Emacs behaves when Transient Mark mode
374is off:
375
376@itemize @bullet
377@item
378Emacs does not show where the mark is located---you have to remember.
379The usual solution to this problem is to set the mark and then use it
380soon, before you forget where it is. Alternatively, you can check the
381location of the mark by using @kbd{C-x C-x}, which exchanges the
382positions of the point and the mark (@pxref{Setting Mark}).
383
384@item
385Many commands that insert text, such as @kbd{C-y} (@code{yank}),
386position point and the mark at opposite ends of the inserted text, so
387that the region consists of the text just inserted. You can tell when
388a command sets the mark because it displays @samp{Mark set} in the
389echo area.
390
391@item
392Many commands that move point long distances, like @kbd{M-<} and
393@kbd{C-s}, first set the mark where point was.
394
395@item
396Some commands that ordinarily operate on the region, if one exists,
397act instead on the entire buffer. For instance, @kbd{C-x u} normally
398reverses changes within the region if one exists; when Transient Mark
399mode is off, it acts on the entire buffer. However, you can type
400@kbd{C-u C-x u} to make it operate on the region. @xref{Undo}. Other
401commands that act this way are identified in their own documentation.
402@end itemize
403
404 While Transient Mark mode is off, you can activate it temporarily
405using @kbd{C-@key{SPC} C-@key{SPC}} or @kbd{C-u C-x C-x}.
406
407@table @kbd
408@item C-@key{SPC} C-@key{SPC}
409@kindex C-@key{SPC} C-@key{SPC}
410Set the mark at point (like plain @kbd{C-@key{SPC}}) and enable
411Transient Mark mode just once, until the mark is deactivated. (This
412is not really a separate command; you are using the @kbd{C-@key{SPC}}
413command twice.)
414
415@item C-u C-x C-x
416@kindex C-u C-x C-x
417Activate the mark without changing it; enable Transient Mark mode just
418once, until the mark is deactivated. (This is the @kbd{C-x C-x}
419command, @code{exchange-point-and-mark}, with a prefix argument.)
420@end table
421
422 These commands set or activate the mark, and enable Transient Mark
423mode only until the mark is deactivated. One reason you may want to
424use them is that some commands operate on the entire buffer instead of
425the region when Transient Mark mode is off. Enabling Transient Mark
426mode momentarily gives you a way to use these commands on the region.
6bf7aab6 427
ab5796a9
MB
428@ignore
429 arch-tag: f35e4d82-911b-4cfc-a3d7-3c87b2abba20
430@end ignore