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