annotate man/xemacs/mark.texi @ 4488:6b0000935adc

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