annotate man/mark.texi @ 70352:f98b5ff9f3ce

(isearch-update-ring): Take history-delete-duplicates into consideration. Replace one arm ifs with whens.
author Dan Nicolaescu <dann@ics.uci.edu>
date Wed, 03 May 2006 21:36:20 +0000
parents dc2d5a6655a3
children d8c9fc01d95e c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
64890
3723093a21fd Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 63005
diff changeset
2 @c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002,
68639
dc2d5a6655a3 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 68512
diff changeset
3 @c 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @c See file emacs.texi for copying conditions.
Dave Love <fx@gnu.org>
parents:
diff changeset
5 @node Mark, Killing, Help, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
6 @chapter The Mark and the Region
Dave Love <fx@gnu.org>
parents:
diff changeset
7 @cindex mark
Dave Love <fx@gnu.org>
parents:
diff changeset
8 @cindex setting a mark
Dave Love <fx@gnu.org>
parents:
diff changeset
9 @cindex region
Dave Love <fx@gnu.org>
parents:
diff changeset
10
Dave Love <fx@gnu.org>
parents:
diff changeset
11 Many Emacs commands operate on an arbitrary contiguous part of the
Dave Love <fx@gnu.org>
parents:
diff changeset
12 current buffer. To specify the text for such a command to operate on,
Dave Love <fx@gnu.org>
parents:
diff changeset
13 you set @dfn{the mark} at one end of it, and move point to the other
Dave Love <fx@gnu.org>
parents:
diff changeset
14 end. The text between point and the mark is called @dfn{the region}.
Dave Love <fx@gnu.org>
parents:
diff changeset
15 Emacs highlights the region whenever there is one, if you enable
Dave Love <fx@gnu.org>
parents:
diff changeset
16 Transient Mark mode (@pxref{Transient Mark}).
Dave Love <fx@gnu.org>
parents:
diff changeset
17
38411
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
18 Certain Emacs commands set the mark; other editing commands do not
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
19 affect it, so the mark remains where you set it last. Each Emacs
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
20 buffer has its own mark, and setting the mark in one buffer has no
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
21 effect on other buffers' marks. When you return to a buffer that was
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
22 current earlier, its mark is at the same place as before.
38411
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
23
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
24 The ends of the region are always point and the mark. It doesn't
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
25 matter which of them was put in its current place first, or which one
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
26 comes earlier in the text---the region starts from point or the mark
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
27 (whichever comes first), and ends at point or the mark (whichever
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
28 comes last). Every time you move point, or set the mark in a new
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
29 place, the region changes.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
30
Dave Love <fx@gnu.org>
parents:
diff changeset
31 Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
38411
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
32 @kbd{M-x insert-buffer}, position point and the mark at opposite ends
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
33 of the inserted text, so that the region consists of the text just
2fc02d49a9a4 Clarify initial discussion.
Richard M. Stallman <rms@gnu.org>
parents: 38208
diff changeset
34 inserted.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
35
Dave Love <fx@gnu.org>
parents:
diff changeset
36 Aside from delimiting the region, the mark is also useful for
Dave Love <fx@gnu.org>
parents:
diff changeset
37 remembering a spot that you may want to go back to. To make this
Dave Love <fx@gnu.org>
parents:
diff changeset
38 feature more useful, each buffer remembers 16 previous locations of the
Dave Love <fx@gnu.org>
parents:
diff changeset
39 mark in the @dfn{mark ring}.
Dave Love <fx@gnu.org>
parents:
diff changeset
40
Dave Love <fx@gnu.org>
parents:
diff changeset
41 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
42 * Setting Mark:: Commands to set the mark.
Dave Love <fx@gnu.org>
parents:
diff changeset
43 * Transient Mark:: How to make Emacs highlight the region--
Dave Love <fx@gnu.org>
parents:
diff changeset
44 when there is one.
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
45 * Momentary Mark:: Enabling Transient Mark mode momentarily.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
46 * Using Region:: Summary of ways to operate on contents of the region.
Dave Love <fx@gnu.org>
parents:
diff changeset
47 * Marking Objects:: Commands to put region around textual units.
Dave Love <fx@gnu.org>
parents:
diff changeset
48 * Mark Ring:: Previous mark positions saved so you can go back there.
Dave Love <fx@gnu.org>
parents:
diff changeset
49 * Global Mark Ring:: Previous mark positions in various buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
50 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
51
Dave Love <fx@gnu.org>
parents:
diff changeset
52 @node Setting Mark
Dave Love <fx@gnu.org>
parents:
diff changeset
53 @section Setting the Mark
Dave Love <fx@gnu.org>
parents:
diff changeset
54
Dave Love <fx@gnu.org>
parents:
diff changeset
55 Here are some commands for setting the mark:
Dave Love <fx@gnu.org>
parents:
diff changeset
56
Dave Love <fx@gnu.org>
parents:
diff changeset
57 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
58 @item C-@key{SPC}
Dave Love <fx@gnu.org>
parents:
diff changeset
59 Set the mark where point is (@code{set-mark-command}).
Dave Love <fx@gnu.org>
parents:
diff changeset
60 @item C-@@
Dave Love <fx@gnu.org>
parents:
diff changeset
61 The same.
Dave Love <fx@gnu.org>
parents:
diff changeset
62 @item C-x C-x
Dave Love <fx@gnu.org>
parents:
diff changeset
63 Interchange mark and point (@code{exchange-point-and-mark}).
Dave Love <fx@gnu.org>
parents:
diff changeset
64 @item Drag-Mouse-1
Dave Love <fx@gnu.org>
parents:
diff changeset
65 Set point and the mark around the text you drag across.
Dave Love <fx@gnu.org>
parents:
diff changeset
66 @item Mouse-3
Dave Love <fx@gnu.org>
parents:
diff changeset
67 Set the mark where point is, then move point to where you click
Dave Love <fx@gnu.org>
parents:
diff changeset
68 (@code{mouse-save-then-kill}).
Dave Love <fx@gnu.org>
parents:
diff changeset
69 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
70
Dave Love <fx@gnu.org>
parents:
diff changeset
71 For example, suppose you wish to convert part of the buffer to
Dave Love <fx@gnu.org>
parents:
diff changeset
72 upper case, using the @kbd{C-x C-u} (@code{upcase-region}) command,
Dave Love <fx@gnu.org>
parents:
diff changeset
73 which operates on the text in the region. You can first go to the
Dave Love <fx@gnu.org>
parents:
diff changeset
74 beginning of the text to be capitalized, type @kbd{C-@key{SPC}} to put
Dave Love <fx@gnu.org>
parents:
diff changeset
75 the mark there, move to the end, and then type @kbd{C-x C-u}. Or, you
Dave Love <fx@gnu.org>
parents:
diff changeset
76 can set the mark at the end of the text, move to the beginning, and then
Dave Love <fx@gnu.org>
parents:
diff changeset
77 type @kbd{C-x C-u}.
Dave Love <fx@gnu.org>
parents:
diff changeset
78
Dave Love <fx@gnu.org>
parents:
diff changeset
79 @kindex C-SPC
Dave Love <fx@gnu.org>
parents:
diff changeset
80 @findex set-mark-command
Dave Love <fx@gnu.org>
parents:
diff changeset
81 The most common way to set the mark is with the @kbd{C-@key{SPC}} command
Dave Love <fx@gnu.org>
parents:
diff changeset
82 (@code{set-mark-command}). This sets the mark where point is. Then you
Dave Love <fx@gnu.org>
parents:
diff changeset
83 can move point away, leaving the mark behind.
Dave Love <fx@gnu.org>
parents:
diff changeset
84
Dave Love <fx@gnu.org>
parents:
diff changeset
85 There are two ways to set the mark with the mouse. You can drag mouse
Dave Love <fx@gnu.org>
parents:
diff changeset
86 button one across a range of text; that puts point where you release the
Dave Love <fx@gnu.org>
parents:
diff changeset
87 mouse button, and sets the mark at the other end of that range. Or you
Dave Love <fx@gnu.org>
parents:
diff changeset
88 can click mouse button three, which sets the mark at point (like
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
89 @kbd{C-@key{SPC}}) and then moves point where you clicked (like
68512
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
90 @kbd{Mouse-1}).
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
91
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
92 Using the mouse to mark a region copies the region into the kill
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
93 ring in addition to setting the mark; that gives behavior consistent
68512
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
94 with other window-driven applications. If you don't want to modify
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
95 the kill ring, you must use keyboard commands to set the mark.
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
96 @xref{Mouse Commands}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
97
Dave Love <fx@gnu.org>
parents:
diff changeset
98 @kindex C-x C-x
Dave Love <fx@gnu.org>
parents:
diff changeset
99 @findex exchange-point-and-mark
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
100 When Emacs was developed, terminals had only one cursor, so Emacs
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
101 does not show where the mark is located--you have to remember. If you
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
102 enable Transient Mark mode (see below), then the region is highlighted
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
103 when it is active; you can tell mark is at the other end of the
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
104 highlighted region. But this only applies when the mark is active.
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
105
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
106 The usual solution to this problem is to set the mark and then use
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
107 it soon, before you forget where it is. Alternatively, you can see
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
108 where the mark is with the command @kbd{C-x C-x}
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
109 (@code{exchange-point-and-mark}) which puts the mark where point was
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
110 and point where the mark was. The extent of the region is unchanged,
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
111 but the cursor and point are now at the previous position of the mark.
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
112 In Transient Mark mode, this command also reactivates the mark.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
113
Dave Love <fx@gnu.org>
parents:
diff changeset
114 @kbd{C-x C-x} is also useful when you are satisfied with the position
Dave Love <fx@gnu.org>
parents:
diff changeset
115 of point but want to move the other end of the region (where the mark
Dave Love <fx@gnu.org>
parents:
diff changeset
116 is); do @kbd{C-x C-x} to put point at that end of the region, and then
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
117 move it. Using @kbd{C-x C-x} a second time, if necessary, puts the mark at
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
118 the new position with point back at its original position.
Dave Love <fx@gnu.org>
parents:
diff changeset
119
36359
33c7ddaf02c6 (Setting Mark): Add a cross-reference to the section which describes
Eli Zaretskii <eliz@gnu.org>
parents: 36165
diff changeset
120 For more facilities that allow you to go to previously set marks, see
33c7ddaf02c6 (Setting Mark): Add a cross-reference to the section which describes
Eli Zaretskii <eliz@gnu.org>
parents: 36165
diff changeset
121 @ref{Mark Ring}.
33c7ddaf02c6 (Setting Mark): Add a cross-reference to the section which describes
Eli Zaretskii <eliz@gnu.org>
parents: 36165
diff changeset
122
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
123 @kindex C-@@
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
124 There is no such character as @kbd{C-@key{SPC}} in @acronym{ASCII};
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
125 when you type @key{SPC} while holding down @key{CTRL} on a text
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
126 terminal, what you get is the character @kbd{C-@@}. This key is also
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
127 bound to @code{set-mark-command}--so unless you are unlucky enough to
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
128 have a text terminal where typing @kbd{C-@key{SPC}} does not produce
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
129 @kbd{C-@@}, you might as well think of this character as
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
130 @kbd{C-@key{SPC}}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
131
Dave Love <fx@gnu.org>
parents:
diff changeset
132 @node Transient Mark
Dave Love <fx@gnu.org>
parents:
diff changeset
133 @section Transient Mark Mode
Dave Love <fx@gnu.org>
parents:
diff changeset
134 @cindex mode, Transient Mark
Dave Love <fx@gnu.org>
parents:
diff changeset
135 @cindex Transient Mark mode
Dave Love <fx@gnu.org>
parents:
diff changeset
136 @cindex highlighting region
Dave Love <fx@gnu.org>
parents:
diff changeset
137 @cindex region highlighting
Dave Love <fx@gnu.org>
parents:
diff changeset
138
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
139 On a terminal that supports colors, Emacs has the ability to
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
140 highlight the current region. But normally it does not. Why not?
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
141
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
142 Once you have set the mark in a buffer, there is @emph{always} a
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
143 region in that buffer. This is because every command that sets the
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
144 mark also activates it, and nothing ever deactivates it. Highlighting
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
145 the region all the time would be a nuisance. So normally Emacs
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
146 highlights the region only immediately after you have selected one
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
147 with the mouse.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
148
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
149 If you want region highlighting, you can use Transient Mark mode.
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
150 This is a more rigid mode of operation in which the region always
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
151 ``lasts'' only until you use it; you explicitly must set up a region
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
152 for each command that uses one. In Transient Mark mode, most of the
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
153 time there is no region; therefore, highlighting the region when it
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
154 exists is useful and not annoying. When Transient Mark mode is
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
155 enabled, Emacs always highlights the region whenever there is a
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
156 region.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
157
Dave Love <fx@gnu.org>
parents:
diff changeset
158 @findex transient-mark-mode
Dave Love <fx@gnu.org>
parents:
diff changeset
159 To enable Transient Mark mode, type @kbd{M-x transient-mark-mode}.
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
160 This command toggles the mode; you can use the same command to turn
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
161 the mode off again.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
162
Dave Love <fx@gnu.org>
parents:
diff changeset
163 Here are the details of Transient Mark mode:
Dave Love <fx@gnu.org>
parents:
diff changeset
164
Dave Love <fx@gnu.org>
parents:
diff changeset
165 @itemize @bullet
Dave Love <fx@gnu.org>
parents:
diff changeset
166 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
167 To set the mark, type @kbd{C-@key{SPC}} (@code{set-mark-command}).
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
168 This makes the mark active and thus begins highlighting of the region.
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
169 As you move point, you will see the highlighted region grow and
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
170 shrink.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
171
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46237
diff changeset
172 @item
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
173 The mouse commands for specifying the mark also make it active. So do
Dave Love <fx@gnu.org>
parents:
diff changeset
174 keyboard commands whose purpose is to specify a region, including
Dave Love <fx@gnu.org>
parents:
diff changeset
175 @kbd{M-@@}, @kbd{C-M-@@}, @kbd{M-h}, @kbd{C-M-h}, @kbd{C-x C-p}, and
Dave Love <fx@gnu.org>
parents:
diff changeset
176 @kbd{C-x h}.
Dave Love <fx@gnu.org>
parents:
diff changeset
177
Dave Love <fx@gnu.org>
parents:
diff changeset
178 @item
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
179 You can tell that the mark is active because the region is highlighted.
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
180
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
181 @item
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
182 When the mark is active, you can execute commands that operate on the
Dave Love <fx@gnu.org>
parents:
diff changeset
183 region, such as killing, indenting, or writing to a file.
Dave Love <fx@gnu.org>
parents:
diff changeset
184
Dave Love <fx@gnu.org>
parents:
diff changeset
185 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
186 Any change to the buffer, such as inserting or deleting a character,
Dave Love <fx@gnu.org>
parents:
diff changeset
187 deactivates the mark. This means any subsequent command that operates
Dave Love <fx@gnu.org>
parents:
diff changeset
188 on a region will get an error and refuse to operate. You can make the
Dave Love <fx@gnu.org>
parents:
diff changeset
189 region active again by typing @kbd{C-x C-x}.
Dave Love <fx@gnu.org>
parents:
diff changeset
190
Dave Love <fx@gnu.org>
parents:
diff changeset
191 @item
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
192 If Delete Selection mode is also enabled, some commands delete the
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
193 region when used while the mark is active. @xref{Graphical Kill}.
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
194
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
195 @item
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
196 Quitting with @kbd{C-g} deactivates the mark.
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
197
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
198 @item
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
199 Commands like @kbd{M->} and @kbd{C-s}, that ``leave the mark behind'' in
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
200 addition to some other primary purpose, do not activate the new mark.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
201 You can activate the new region by executing @kbd{C-x C-x}
Dave Love <fx@gnu.org>
parents:
diff changeset
202 (@code{exchange-point-and-mark}).
Dave Love <fx@gnu.org>
parents:
diff changeset
203
Dave Love <fx@gnu.org>
parents:
diff changeset
204 @item
58974
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
205 Commands that normally set the mark before moving long distances (like
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
206 @kbd{M-<} and @kbd{C-s}) do not alter the mark in Transient Mark mode
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
207 when the mark is active.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
208
Dave Love <fx@gnu.org>
parents:
diff changeset
209 @item
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
210 Some commands operate on the region if a region is active. For
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
211 instance, @kbd{C-x u} in Transient Mark mode operates on the region,
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
212 when there is a region. (Outside Transient Mark mode, you must type
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
213 @kbd{C-u C-x u} if you want it to operate on the region.)
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
214 @xref{Undo}. Other commands that act this way are identified in their
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
215 own documentation.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
216 @end itemize
Dave Love <fx@gnu.org>
parents:
diff changeset
217
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
218 The highlighting of the region uses the @code{region} face; you can
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
219 customize the appearance of the highlighted region by changing this
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
220 face. @xref{Face Customization}.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
221
Dave Love <fx@gnu.org>
parents:
diff changeset
222 @vindex highlight-nonselected-windows
Dave Love <fx@gnu.org>
parents:
diff changeset
223 When multiple windows show the same buffer, they can have different
Dave Love <fx@gnu.org>
parents:
diff changeset
224 regions, because they can have different values of point (though they
Dave Love <fx@gnu.org>
parents:
diff changeset
225 all share one common mark position). Ordinarily, only the selected
Dave Love <fx@gnu.org>
parents:
diff changeset
226 window highlights its region (@pxref{Windows}). However, if the
Dave Love <fx@gnu.org>
parents:
diff changeset
227 variable @code{highlight-nonselected-windows} is non-@code{nil}, then
Dave Love <fx@gnu.org>
parents:
diff changeset
228 each window highlights its own region (provided that Transient Mark mode
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
229 is enabled and the mark in the window's buffer is active).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
230
Dave Love <fx@gnu.org>
parents:
diff changeset
231 @vindex mark-even-if-inactive
Dave Love <fx@gnu.org>
parents:
diff changeset
232 If the variable @code{mark-even-if-inactive} is non-@code{nil} in
Dave Love <fx@gnu.org>
parents:
diff changeset
233 Transient Mark mode, then commands can use the mark and the region
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
234 even when it is inactive. Region highlighting appears and disappears
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
235 just as it normally does in Transient Mark mode, but the mark doesn't
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
236 really go away when the highlighting disappears, so you can still use
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
237 region commands.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
238
Dave Love <fx@gnu.org>
parents:
diff changeset
239 @cindex Zmacs mode
Dave Love <fx@gnu.org>
parents:
diff changeset
240 Transient Mark mode is also sometimes known as ``Zmacs mode''
Dave Love <fx@gnu.org>
parents:
diff changeset
241 because the Zmacs editor on the MIT Lisp Machine handled the mark in a
Dave Love <fx@gnu.org>
parents:
diff changeset
242 similar way.
Dave Love <fx@gnu.org>
parents:
diff changeset
243
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
244 @node Momentary Mark
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
245 @section Using Transient Mark Mode Momentarily
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
246
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
247 If you don't like Transient Mark mode in general, you might still
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
248 want to use it once in a while. To do this, type @kbd{C-@key{SPC}
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
249 C-@key{SPC}} or @kbd{C-u C-x C-x}. These commands set or activate the
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
250 mark, and enable Transient Mark mode only until the mark is
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
251 deactivated.
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
252
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
253 @table @kbd
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
254 @item C-@key{SPC} C-@key{SPC}
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
255 @kindex C-@key{SPC} C-@key{SPC}
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
256 Set the mark at point (like plain @kbd{C-@key{SPC}}), and enable
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
257 Transient Mark mode just once until the mark is deactivated. (This is
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
258 not really a separate command; you are using the @kbd{C-@key{SPC}}
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
259 command twice.)
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
260
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
261 @item C-u C-x C-x
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
262 @kindex C-u C-x C-x
56691
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
263 Activate the mark without changing it; enable Transient Mark mode just
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
264 once, until the mark is deactivated. (This is the @kbd{C-x C-x}
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
265 command, @code{exchange-point-and-mark}, with a prefix argument.)
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
266 @end table
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
267
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
268 One of the secondary features of Transient Mark mode is that certain
56691
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
269 commands operate only on the region, when there is an active region.
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
270 If you don't use Transient Mark mode, the region once set never
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
271 becomes inactive, so there is no way for these commands to make such a
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
272 distinction. Enabling Transient Mark mode momentarily gives you a way
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
273 to use these commands on the region.
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
274
56691
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
275 Momentary use of Transient Mark mode is also a way to highlight the
378fee0ad45e (Momentary Mark): Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 52979
diff changeset
276 region for the time being.
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
277
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
278 @node Using Region
Dave Love <fx@gnu.org>
parents:
diff changeset
279 @section Operating on the Region
Dave Love <fx@gnu.org>
parents:
diff changeset
280
Dave Love <fx@gnu.org>
parents:
diff changeset
281 @cindex operations on a marked region
Dave Love <fx@gnu.org>
parents:
diff changeset
282 Once you have a region and the mark is active, here are some of the
Dave Love <fx@gnu.org>
parents:
diff changeset
283 ways you can operate on the region:
Dave Love <fx@gnu.org>
parents:
diff changeset
284
Dave Love <fx@gnu.org>
parents:
diff changeset
285 @itemize @bullet
Dave Love <fx@gnu.org>
parents:
diff changeset
286 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
287 Kill it with @kbd{C-w} (@pxref{Killing}).
Dave Love <fx@gnu.org>
parents:
diff changeset
288 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
289 Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
Dave Love <fx@gnu.org>
parents:
diff changeset
290 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
291 Save it in a buffer or a file (@pxref{Accumulating Text}).
Dave Love <fx@gnu.org>
parents:
diff changeset
292 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
293 Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} (@pxref{Case}).
Dave Love <fx@gnu.org>
parents:
diff changeset
294 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
295 Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
Dave Love <fx@gnu.org>
parents:
diff changeset
296 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
297 Fill it as text with @kbd{M-x fill-region} (@pxref{Filling}).
Dave Love <fx@gnu.org>
parents:
diff changeset
298 @item
63005
e4c68c19a6bc (Using Region): Change Hardcopy xref to Printing.
Eli Zaretskii <eliz@gnu.org>
parents: 60244
diff changeset
299 Print hardcopy with @kbd{M-x print-region} (@pxref{Printing}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
300 @item
Dave Love <fx@gnu.org>
parents:
diff changeset
301 Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
68457
f54ada46e59e (Selective Undo): New node, text moved from basic.texi.
Richard M. Stallman <rms@gnu.org>
parents: 66688
diff changeset
302 @item
68512
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
303 Undo changes within it using @kbd{C-u C-x u} (@pxref{Undo}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
304 @end itemize
Dave Love <fx@gnu.org>
parents:
diff changeset
305
38482
c8c4805bde95 Minor changes from Richard Stallman.
Eli Zaretskii <eliz@gnu.org>
parents: 38461
diff changeset
306 Most commands that operate on the text in the region have the word
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
307 @code{region} in their names.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
308
Dave Love <fx@gnu.org>
parents:
diff changeset
309 @node Marking Objects
Dave Love <fx@gnu.org>
parents:
diff changeset
310 @section Commands to Mark Textual Objects
Dave Love <fx@gnu.org>
parents:
diff changeset
311
Dave Love <fx@gnu.org>
parents:
diff changeset
312 @cindex marking sections of text
Dave Love <fx@gnu.org>
parents:
diff changeset
313 Here are the commands for placing point and the mark around a textual
Dave Love <fx@gnu.org>
parents:
diff changeset
314 object such as a word, list, paragraph or page.
Dave Love <fx@gnu.org>
parents:
diff changeset
315
Dave Love <fx@gnu.org>
parents:
diff changeset
316 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
317 @item M-@@
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
318 Set mark after end of next word (@code{mark-word}). This command and
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
319 the following one do not move point.
Dave Love <fx@gnu.org>
parents:
diff changeset
320 @item C-M-@@
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
321 Set mark after end of following balanced expression (@code{mark-sexp}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
322 @item M-h
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
323 Put region around current paragraph (@code{mark-paragraph}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
324 @item C-M-h
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
325 Put region around current defun (@code{mark-defun}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
326 @item C-x h
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
327 Put region around the entire buffer (@code{mark-whole-buffer}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
328 @item C-x C-p
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
329 Put region around current page (@code{mark-page}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
330 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
331
38207
e24d77a5adf1 Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents: 37316
diff changeset
332 @kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next
e24d77a5adf1 Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents: 37316
diff changeset
333 word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the
e24d77a5adf1 Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents: 37316
diff changeset
334 next balanced expression (@pxref{Expressions}). These commands handle
43301
898b4b31410f * lisp/simple.el (mark-word): Mark more if repeated.
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 41795
diff changeset
335 arguments just like @kbd{M-f} and @kbd{C-M-f}. If you repeat these
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
336 commands, that extends the region. For example, you can type either
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
337 @kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words. This
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
338 command also extends the region when the mark is active in Transient
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
339 Mark mode, regardless of the last command.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
340
Dave Love <fx@gnu.org>
parents:
diff changeset
341 @kindex C-x h
Dave Love <fx@gnu.org>
parents:
diff changeset
342 @findex mark-whole-buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
343 Other commands set both point and mark, to delimit an object in the
Dave Love <fx@gnu.org>
parents:
diff changeset
344 buffer. For example, @kbd{M-h} (@code{mark-paragraph}) moves point to
41748
0302528bddbc Fix wording of the last change.
Eli Zaretskii <eliz@gnu.org>
parents: 41743
diff changeset
345 the beginning of the paragraph that surrounds or follows point, and
0302528bddbc Fix wording of the last change.
Eli Zaretskii <eliz@gnu.org>
parents: 41743
diff changeset
346 puts the mark at the end of that paragraph (@pxref{Paragraphs}). It
0302528bddbc Fix wording of the last change.
Eli Zaretskii <eliz@gnu.org>
parents: 41743
diff changeset
347 prepares the region so you can indent, case-convert, or kill a whole
0302528bddbc Fix wording of the last change.
Eli Zaretskii <eliz@gnu.org>
parents: 41743
diff changeset
348 paragraph. With prefix argument, if the argument's value is positive,
41795
48c74a2caa77 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 41748
diff changeset
349 @kbd{M-h} marks that many paragraphs starting with the one surrounding
48c74a2caa77 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 41748
diff changeset
350 point. If the prefix argument is @minus{}@var{n}, @kbd{M-h} also
48c74a2caa77 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 41748
diff changeset
351 marks @var{n} paragraphs, running back form the one surrounding point.
48c74a2caa77 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 41748
diff changeset
352 In that last case, point moves forward to the end of that paragraph,
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
353 and the mark goes at the start of the region. Repeating the @kbd{M-h}
68512
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
354 command extends the region to subsequent paragraphs.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
355
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
356 @kbd{C-M-h} (@code{mark-defun}) similarly puts point before, and the
38786
4d3fd773cd30 Minor cleanups.
Richard M. Stallman <rms@gnu.org>
parents: 38490
diff changeset
357 mark after, the current (or following) major top-level definition, or
68512
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
358 defun (@pxref{Moving by Defuns}). Repeating @kbd{C-M-h} extends
7d8049c045c4 Minor clarifications.
Richard M. Stallman <rms@gnu.org>
parents: 68457
diff changeset
359 the region to subsequent defuns.
60244
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
360
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
361 @kbd{C-x C-p} (@code{mark-page}) puts point before the current page,
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
362 and mark at the end (@pxref{Pages}). The mark goes after the
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
363 terminating page delimiter (to include it in the region), while point
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
364 goes after the preceding page delimiter (to exclude it). A numeric
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
365 argument specifies a later page (if positive) or an earlier page (if
1f085a397379 (Setting Mark): Clarify info about displaying mark.
Richard M. Stallman <rms@gnu.org>
parents: 58974
diff changeset
366 negative) instead of the current page.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
367
Dave Love <fx@gnu.org>
parents:
diff changeset
368 Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire
Dave Love <fx@gnu.org>
parents:
diff changeset
369 buffer as the region, by putting point at the beginning and the mark at
Dave Love <fx@gnu.org>
parents:
diff changeset
370 the end.
Dave Love <fx@gnu.org>
parents:
diff changeset
371
Dave Love <fx@gnu.org>
parents:
diff changeset
372 In Transient Mark mode, all of these commands activate the mark.
Dave Love <fx@gnu.org>
parents:
diff changeset
373
Dave Love <fx@gnu.org>
parents:
diff changeset
374 @node Mark Ring
Dave Love <fx@gnu.org>
parents:
diff changeset
375 @section The Mark Ring
Dave Love <fx@gnu.org>
parents:
diff changeset
376
Dave Love <fx@gnu.org>
parents:
diff changeset
377 @kindex C-u C-SPC
Dave Love <fx@gnu.org>
parents:
diff changeset
378 @cindex mark ring
Dave Love <fx@gnu.org>
parents:
diff changeset
379 @kindex C-u C-@@
Dave Love <fx@gnu.org>
parents:
diff changeset
380 Aside from delimiting the region, the mark is also useful for
Dave Love <fx@gnu.org>
parents:
diff changeset
381 remembering a spot that you may want to go back to. To make this
Dave Love <fx@gnu.org>
parents:
diff changeset
382 feature more useful, each buffer remembers 16 previous locations of the
Dave Love <fx@gnu.org>
parents:
diff changeset
383 mark, in the @dfn{mark ring}. Commands that set the mark also push the
Dave Love <fx@gnu.org>
parents:
diff changeset
384 old mark onto this ring. To return to a marked location, use @kbd{C-u
38490
1518ad710658 Fix last changes.
Eli Zaretskii <eliz@gnu.org>
parents: 38482
diff changeset
385 C-@key{SPC}} (or @kbd{C-u C-@@}); this is the command
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
386 @code{set-mark-command} given a numeric argument. It moves point to
Dave Love <fx@gnu.org>
parents:
diff changeset
387 where the mark was, and restores the mark from the ring of former
46237
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
388 marks.
46b0c6f318b5 New node Momentary Mark.
Richard M. Stallman <rms@gnu.org>
parents: 43301
diff changeset
389
66672
9c71dbde648a (Mark Ring): Mention set-mark-command-repeat-pop.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
390 @vindex set-mark-command-repeat-pop
9c71dbde648a (Mark Ring): Mention set-mark-command-repeat-pop.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
391 If you set @code{set-mark-command-repeat-pop} to non-@code{nil},
66688
4f7af488adb0 (Mark Ring): Fix typo.
Romain Francoise <romain@orebokech.com>
parents: 66672
diff changeset
392 then when you repeat the character @kbd{C-@key{SPC}} after typing
66672
9c71dbde648a (Mark Ring): Mention set-mark-command-repeat-pop.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
393 @kbd{C-u C-@key{SPC}}, each repetition moves point to a previous mark
9c71dbde648a (Mark Ring): Mention set-mark-command-repeat-pop.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
394 position from the ring. The mark positions you move through in this
9c71dbde648a (Mark Ring): Mention set-mark-command-repeat-pop.
Richard M. Stallman <rms@gnu.org>
parents: 64890
diff changeset
395 way are not lost; they go to the end of the ring.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
396
Dave Love <fx@gnu.org>
parents:
diff changeset
397 Each buffer has its own mark ring. All editing commands use the current
Dave Love <fx@gnu.org>
parents:
diff changeset
398 buffer's mark ring. In particular, @kbd{C-u C-@key{SPC}} always stays in
Dave Love <fx@gnu.org>
parents:
diff changeset
399 the same buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
400
Dave Love <fx@gnu.org>
parents:
diff changeset
401 Many commands that can move long distances, such as @kbd{M-<}
Dave Love <fx@gnu.org>
parents:
diff changeset
402 (@code{beginning-of-buffer}), start by setting the mark and saving the
Dave Love <fx@gnu.org>
parents:
diff changeset
403 old mark on the mark ring. This is to make it easier for you to move
58974
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
404 back later. Searches set the mark if they move point. However, in
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
405 Transient Mark mode, these commands do not set the mark when the mark
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
406 is already active. You can tell when a command sets the mark because
f23a14da8463 (Transient Mark, Mark Ring): M-< and other
Juri Linkov <juri@jurta.org>
parents: 58920
diff changeset
407 it displays @samp{Mark set} in the echo area.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
408
Dave Love <fx@gnu.org>
parents:
diff changeset
409 If you want to move back to the same place over and over, the mark
Dave Love <fx@gnu.org>
parents:
diff changeset
410 ring may not be convenient enough. If so, you can record the position
37316
171ad460e884 Correct case of "Mark set" message.
Richard M. Stallman <rms@gnu.org>
parents: 36359
diff changeset
411 in a register for later retrieval (@pxref{RegPos,, Saving Positions in
171ad460e884 Correct case of "Mark set" message.
Richard M. Stallman <rms@gnu.org>
parents: 36359
diff changeset
412 Registers}).
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
413
Dave Love <fx@gnu.org>
parents:
diff changeset
414 @vindex mark-ring-max
Dave Love <fx@gnu.org>
parents:
diff changeset
415 The variable @code{mark-ring-max} specifies the maximum number of
Dave Love <fx@gnu.org>
parents:
diff changeset
416 entries to keep in the mark ring. If that many entries exist and
38461
23f63206a867 Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents: 38411
diff changeset
417 another one is pushed, the earliest one in the list is discarded. Repeating
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
418 @kbd{C-u C-@key{SPC}} cycles through the positions currently in the
Dave Love <fx@gnu.org>
parents:
diff changeset
419 ring.
Dave Love <fx@gnu.org>
parents:
diff changeset
420
Dave Love <fx@gnu.org>
parents:
diff changeset
421 @vindex mark-ring
Dave Love <fx@gnu.org>
parents:
diff changeset
422 The variable @code{mark-ring} holds the mark ring itself, as a list of
Dave Love <fx@gnu.org>
parents:
diff changeset
423 marker objects, with the most recent first. This variable is local in
Dave Love <fx@gnu.org>
parents:
diff changeset
424 every buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
425
Dave Love <fx@gnu.org>
parents:
diff changeset
426 @node Global Mark Ring
Dave Love <fx@gnu.org>
parents:
diff changeset
427 @section The Global Mark Ring
Dave Love <fx@gnu.org>
parents:
diff changeset
428 @cindex global mark ring
Dave Love <fx@gnu.org>
parents:
diff changeset
429
Dave Love <fx@gnu.org>
parents:
diff changeset
430 In addition to the ordinary mark ring that belongs to each buffer,
Dave Love <fx@gnu.org>
parents:
diff changeset
431 Emacs has a single @dfn{global mark ring}. It records a sequence of
Dave Love <fx@gnu.org>
parents:
diff changeset
432 buffers in which you have recently set the mark, so you can go back
Dave Love <fx@gnu.org>
parents:
diff changeset
433 to those buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
434
Dave Love <fx@gnu.org>
parents:
diff changeset
435 Setting the mark always makes an entry on the current buffer's mark
Dave Love <fx@gnu.org>
parents:
diff changeset
436 ring. If you have switched buffers since the previous mark setting, the
Dave Love <fx@gnu.org>
parents:
diff changeset
437 new mark position makes an entry on the global mark ring also. The
Dave Love <fx@gnu.org>
parents:
diff changeset
438 result is that the global mark ring records a sequence of buffers that
Dave Love <fx@gnu.org>
parents:
diff changeset
439 you have been in, and, for each buffer, a place where you set the mark.
Dave Love <fx@gnu.org>
parents:
diff changeset
440
Dave Love <fx@gnu.org>
parents:
diff changeset
441 @kindex C-x C-@key{SPC}
Dave Love <fx@gnu.org>
parents:
diff changeset
442 @findex pop-global-mark
Dave Love <fx@gnu.org>
parents:
diff changeset
443 The command @kbd{C-x C-@key{SPC}} (@code{pop-global-mark}) jumps to
Dave Love <fx@gnu.org>
parents:
diff changeset
444 the buffer and position of the latest entry in the global ring. It also
Dave Love <fx@gnu.org>
parents:
diff changeset
445 rotates the ring, so that successive uses of @kbd{C-x C-@key{SPC}} take
Dave Love <fx@gnu.org>
parents:
diff changeset
446 you to earlier and earlier buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
447
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
448 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
449 arch-tag: f35e4d82-911b-4cfc-a3d7-3c87b2abba20
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
450 @end ignore