annotate man/xemacs/mark.texi @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 0132846995bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 @node Mark, Mouse Selection, Help, Top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 @chapter Selecting Text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 @cindex mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 @cindex region
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 Many Emacs commands operate on an arbitrary contiguous
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 part of the current buffer. You can select text in two ways:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 @itemize @bullet
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 You use special keys to select text by defining a region between point
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 and the mark.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 If you are running XEmacs under X, you can also select text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 with the mouse.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 @end itemize
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 @section The Mark and the Region
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 To specify the text for a command to operate on, set @dfn{the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 mark} at one end of it, and move point to the other end. The text
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 between point and the mark is called @dfn{the region}. You can move
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 point or the mark to adjust the boundaries of the region. It doesn't
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 matter which one is set first chronologically, or which one comes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 earlier in the text.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 Once the mark has been set, it remains until it is set again at
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 another place. The mark remains fixed with respect to the preceding
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 character if text is inserted or deleted in a buffer. Each Emacs
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 buffer has its own mark; when you return to a buffer that had been
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 selected previously, it has the same mark it had before.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 Many commands that insert text, such as @kbd{C-y} (@code{yank}) and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 @kbd{M-x insert-buffer}, position the mark at one end of the inserted
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 text---the opposite end from where point is positioned, so that the region
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 contains the text just inserted.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 Aside from delimiting the region, the mark is useful for marking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 a spot that you may want to go back to. To make this feature more useful,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 Emacs remembers 16 previous locations of the mark in the @code{mark ring}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 @menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 * Setting Mark:: Commands to set the mark.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 * Using Region:: Summary of ways to operate on contents of the region.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 * Marking Objects:: Commands to put region around textual units.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 * Mark Ring:: Previous mark positions saved so you can go back there.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 @end menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 @node Setting Mark, Using Region, Mark, Mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 @subsection Setting the Mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 Here are some commands for setting the mark:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 @c WideCommands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 @item C-@key{SPC}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 Set the mark where point is (@code{set-mark-command}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 @item C-@@
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 The same.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 @item C-x C-x
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 Interchange mark and point (@code{exchange-point-and-mark}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 @item C-<
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 Pushes a mark at the beginning of the buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 @item C->
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 Pushes a mark at the end of the buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 For example, to convert part of the buffer to all
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 upper-case, you can use the @kbd{C-x C-u} (@code{upcase-region})
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 command, which operates on the text in the region. First go to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 beginning of the text you want to capitalize and type @kbd{C-@key{SPC}} to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 put the mark there, then move to the end, and then type @kbd{C-x C-u} to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 capitalize the selected region. You can also set the mark at the end of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74 text, move to the beginning, and then type @kbd{C-x C-u}. Most commands
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 that operate on the text in the region have the word @code{region} in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 their names.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 @kindex C-SPC
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 @findex set-mark-command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 The most common way to set the mark is with the @kbd{C-@key{SPC}}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 command (@code{set-mark-command}). This command sets the mark where
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 point is. You can then move point away, leaving the mark behind. It is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 actually incorrect to speak of the character @kbd{C-@key{SPC}}; there is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 no such character. When you type @key{SPC} while holding down
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 @key{CTRL}, you get the character @kbd{C-@@} on most terminals. This
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 character is actually bound to @code{set-mark-command}. But unless you are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 unlucky enough to have a terminal where typing @kbd{C-@key{SPC}} does
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 not produce @kbd{C-@@}, you should think of this character as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89 @kbd{C-@key{SPC}}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 @kindex C-x C-x
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 @findex exchange-point-and-mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 Since terminals have only one cursor, Emacs cannot show you where the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94 mark is located. Most people use the mark soon after they set it, before
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 they forget where it is. But you can see where the mark is with the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which puts the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 mark where point was and point where the mark was. The extent of the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98 region is unchanged, but the cursor and point are now at the previous
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 location of the mark.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 @kindex C-<
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 @kindex C->
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
103 @findex mark-beginning-of-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
104 @findex mark-end-of-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
105 Another way to set the mark is to push the mark to the beginning of a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
106 buffer while leaving point at its original location. If you supply an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
107 argument to @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
108 @var{n}/10 of the way from the true beginning of the buffer. You can
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
109 also set the mark at the end of a buffer with @kbd{C->}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
110 (@code{mark-end-of-buffer}). It pushes the mark to the end of the buffer,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
111 leaving point alone. Supplying an argument to the command pushes the mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
112 @var{n}/10 of the way from the true end of the buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
113
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
114 If you are using XEmacs under the X window system, you can set
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
115 the variable @code{zmacs-regions} to @code{t}. This makes the current
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
116 region (defined by point and mark) highlight and makes it available as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
117 the X clipboard selection, which means you can use the menu bar items on
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
118 it. @xref{Active Regions} for more information.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
119
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
120 @kbd{C-x C-x} is also useful when you are satisfied with the location of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
121 point but want to move the mark; do @kbd{C-x C-x} to put point there and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
122 then you can move it. A second use of @kbd{C-x C-x}, if necessary, puts
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
123 the mark at the new location with point back at its original location.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
124
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
125 @node Using Region, Marking Objects, Setting Mark, Mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
126 @subsection Operating on the Region
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
127
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
128 Once you have created an active region, you can do many things to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
129 the text in it:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
130 @itemize @bullet
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
131 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
132 Kill it with @kbd{C-w} (@pxref{Killing}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
133 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
134 Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
135 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
136 Save it in a buffer or a file (@pxref{Accumulating Text}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
137 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
138 Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} @*(@pxref{Case}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
139 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
140 Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
141 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
142 Fill it as text with @kbd{M-g} (@pxref{Filling}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
143 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
144 Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
145 @item
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
146 Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
147 @end itemize
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
148
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
149 @node Marking Objects, Mark Ring, Using Region, Mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
150 @subsection Commands to Mark Textual Objects
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
151
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
152 There are commands for placing point and the mark around a textual
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
153 object such as a word, list, paragraph or page.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
154
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
155 @table @kbd
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
156 @item M-@@
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
157 Set mark after end of next word (@code{mark-word}). This command and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
158 the following one do not move point.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
159 @item C-M-@@
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
160 Set mark after end of next Lisp expression (@code{mark-sexp}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
161 @item M-h
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
162 Put region around current paragraph (@code{mark-paragraph}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
163 @item C-M-h
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
164 Put region around current Lisp defun (@code{mark-defun}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
165 @item C-x h
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
166 Put region around entire buffer (@code{mark-whole-buffer}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
167 @item C-x C-p
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
168 Put region around current page (@code{mark-page}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
169 @end table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
170
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
171 @kindex M-@@
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
172 @kindex C-M-@@
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
173 @findex mark-word
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
174 @findex mark-sexp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
175 @kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next word,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
176 while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
177 expression. These characters sometimes save you some typing.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
178
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
179 @kindex M-h
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
180 @kindex C-M-h
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
181 @kindex C-x C-p
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
182 @kindex C-x h
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
183 @findex mark-paragraph
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
184 @findex mark-defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
185 @findex mark-page
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
186 @findex mark-whole-buffer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
187 A number of commands are available that set both point and mark and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
188 thus delimit an object in the buffer. @kbd{M-h} (@code{mark-paragraph})
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
189 moves point to the beginning of the paragraph that surrounds or follows
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
190 point, and puts the mark at the end of that paragraph
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
191 (@pxref{Paragraphs}). You can then indent, case-convert, or kill the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
192 whole paragraph. In the same fashion, @kbd{C-M-h} (@code{mark-defun})
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
193 puts point before and the mark after the current or following defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
194 (@pxref{Defuns}). @kbd{C-x C-p} (@code{mark-page}) puts point before
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
195 the current page (or the next or previous, depending on the argument),
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
196 and mark at the end (@pxref{Pages}). The mark goes after the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
197 terminating page delimiter (to include it), while point goes after the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
198 preceding page delimiter (to exclude it). Finally, @kbd{C-x h}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
199 (@code{mark-whole-buffer}) sets up the entire buffer as the region by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
200 putting point at the beginning and the mark at the end.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
201
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
202 @node Mark Ring,, Marking Objects, Mark
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
203 @subsection The Mark Ring
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
204
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
205 @kindex C-u C-SPC
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
206 @cindex mark ring
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
207 @kindex C-u C-@@
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
208 Aside from delimiting the region, the mark is also useful for marking
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
209 a spot that you may want to go back to. To make this feature more
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
210 useful, Emacs remembers 16 previous locations of the mark in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
211 @dfn{mark ring}. Most commands that set the mark push the old mark onto
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
212 this ring. To return to a marked location, use @kbd{C-u C-@key{SPC}}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
213 (or @kbd{C-u C-@@}); this is the command @code{set-mark-command} given a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
214 numeric argument. The command moves point to where the mark was, and
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
215 restores the mark from the ring of former marks. Repeated use of this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
216 command moves point to all the old marks on the ring, one by one.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
217 The marks you have seen go to the end of the ring, so no marks are lost.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
218
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
219 Each buffer has its own mark ring. All editing commands use the current
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
220 buffer's mark ring. In particular, @kbd{C-u C-@key{SPC}} always stays in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
221 the same buffer.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
222
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
223 Many commands that can move long distances, such as @kbd{M-<}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
224 (@code{beginning-of-buffer}), start by setting the mark and saving the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
225 old mark on the mark ring. This makes it easier for you to move back
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
226 later. Searches set the mark, unless they do not actually move point.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
227 When a command sets the mark, @samp{Mark Set} is printed in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
228 echo area.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
229
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
230 @vindex mark-ring-max
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
231 The variable @code{mark-ring-max} is the maximum number of entries to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
232 keep in the mark ring. If that many entries exist and another entry is
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
233 added, the last entry in the list is discarded. Repeating @kbd{C-u
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
234 C-@key{SPC}} circulates through the entries that are currently in the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
235 ring.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
236
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
237 @vindex mark-ring
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
238 The variable @code{mark-ring} holds the mark ring itself, as a list of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
239 marker objects in the order most recent first. This variable is local
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
240 in every buffer.