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