This commit was generated by cvs2svn to compensate for changes in r5197,
[chise/xemacs-chise.git.1] / info / xemacs.info-5
1 This is Info file ../../info/xemacs.info, produced by Makeinfo version
2 1.68 from the input file xemacs.texi.
3
4 INFO-DIR-SECTION XEmacs Editor
5 START-INFO-DIR-ENTRY
6 * XEmacs: (xemacs).             XEmacs Editor.
7 END-INFO-DIR-ENTRY
8
9    This file documents the XEmacs editor.
10
11    Copyright (C) 1985, 1986, 1988 Richard M. Stallman.  Copyright (C)
12 1991, 1992, 1993, 1994 Lucid, Inc.  Copyright (C) 1993, 1994 Sun
13 Microsystems, Inc.  Copyright (C) 1995 Amdahl Corporation.
14
15    Permission is granted to make and distribute verbatim copies of this
16 manual provided the copyright notice and this permission notice are
17 preserved on all copies.
18
19    Permission is granted to copy and distribute modified versions of
20 this manual under the conditions for verbatim copying, provided also
21 that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
22 General Public License" are included exactly as in the original, and
23 provided that the entire resulting derived work is distributed under the
24 terms of a permission notice identical to this one.
25
26    Permission is granted to copy and distribute translations of this
27 manual into another language, under the above conditions for modified
28 versions, except that the sections entitled "The GNU Manifesto",
29 "Distribution" and "GNU General Public License" may be included in a
30 translation approved by the author instead of in the original English.
31
32 \1f
33 File: xemacs.info,  Node: Appending Kills,  Next: Earlier Kills,  Prev: Kill Ring,  Up: Yanking
34
35 Appending Kills
36 ---------------
37
38    Normally, each kill command pushes a new block onto the kill ring.
39 However, two or more kill commands in a row combine their text into a
40 single entry, so that a single `C-y' yanks it all back. This means you
41 don't have to kill all the text you want to yank in one command; you
42 can kill line after line, or word after word, until you have killed what
43 you want, then get it all back at once using `C-y'. (Thus we join
44 television in leading people to kill thoughtlessly.)
45
46    Commands that kill forward from point add onto the end of the
47 previous killed text.  Commands that kill backward from point add onto
48 the beginning.  This way, any sequence of mixed forward and backward
49 kill commands puts all the killed text into one entry without
50 rearrangement.  Numeric arguments do not break the sequence of
51 appending kills.  For example, suppose the buffer contains:
52
53      This is the first
54      line of sample text
55      and here is the third.
56
57 with point at the beginning of the second line.  If you type `C-k C-u 2
58 M-<DEL> C-k', the first `C-k' kills the text `line of sample text',
59 `C-u 2 M-<DEL>' kills `the first' with the newline that followed it,
60 and the second `C-k' kills the newline after the second line.  The
61 result is that the buffer contains `This is and here is the third.' and
62 a single kill entry contains `the first<RET>line of sample
63 text<RET>'--all the killed text, in its original order.
64
65    If a kill command is separated from the last kill command by other
66 commands (not just numeric arguments), it starts a new entry on the kill
67 ring.  To force a kill command to append, first type the command `C-M-w'
68 (`append-next-kill'). `C-M-w' tells the following command, if it is a
69 kill command, to append the text it kills to the last killed text,
70 instead of starting a new entry.  With `C-M-w', you can kill several
71 separated pieces of text and accumulate them to be yanked back in one
72 place.
73
74 \1f
75 File: xemacs.info,  Node: Earlier Kills,  Prev: Appending Kills,  Up: Yanking
76
77 Yanking Earlier Kills
78 ---------------------
79
80    To recover killed text that is no longer the most recent kill, you
81 need the `Meta-y' (`yank-pop') command.  You can use `M-y' only after a
82 `C-y' or another `M-y'.  It takes the text previously yanked and
83 replaces it with the text from an earlier kill.  To recover the text of
84 the next-to-the-last kill, first use `C-y' to recover the last kill,
85 then `M-y' to replace it with the previous kill.
86
87    You can think in terms of a "last yank" pointer which points at an
88 item in the kill ring.  Each time you kill, the "last yank" pointer
89 moves to the new item at the front of the ring.  `C-y' yanks the item
90 which the "last yank" pointer points to.  `M-y' moves the "last yank"
91 pointer to a different item, and the text in the buffer changes to
92 match.  Enough `M-y' commands can move the pointer to any item in the
93 ring, so you can get any item into the buffer.  Eventually the pointer
94 reaches the end of the ring; the next `M-y' moves it to the first item
95 again.
96
97    Yanking moves the "last yank" pointer around the ring, but does not
98 change the order of the entries in the ring, which always runs from the
99 most recent kill at the front to the oldest one still remembered.
100
101    Use `M-y' with a numeric argument to advance the "last yank" pointer
102 by the specified number of items.  A negative argument moves the
103 pointer toward the front of the ring; from the front of the ring, it
104 moves to the last entry and starts moving forward from there.
105
106    Once the text you are looking for is brought into the buffer, you can
107 stop doing `M-y' commands and the text will stay there. Since the text
108 is just a copy of the kill ring item, editing it in the buffer does not
109 change what's in the ring.  As long you don't kill additional text, the
110 "last yank" pointer remains at the same place in the kill ring:
111 repeating `C-y' will yank another copy of the same old kill.
112
113    If you know how many `M-y' commands it would take to find the text
114 you want, you can yank that text in one step using `C-y' with a numeric
115 argument.  `C-y' with an argument greater than one restores the text
116 the specified number of entries back in the kill ring.  Thus, `C-u 2
117 C-y' gets the next to the last block of killed text.  It is equivalent
118 to `C-y M-y'.  `C-y' with a numeric argument starts counting from the
119 "last yank" pointer, and sets the "last yank" pointer to the entry that
120 it yanks.
121
122    The variable `kill-ring-max' controls the length of the kill ring;
123 no more than that many blocks of killed text are saved.
124
125 \1f
126 File: xemacs.info,  Node: Using X Selections,  Next: Accumulating Text,  Prev: Yanking,  Up: Top
127
128 Using X Selections
129 ==================
130
131    In the X window system, mouse selections provide a simple mechanism
132 for text transfer between different applications.  In a typical X
133 application, you can select text by pressing the left mouse button and
134 dragging the cursor over the text you want to copy.  The text becomes
135 the primary X selection and is highlighted.  The highlighted region is
136 also the Emacs selected region.
137
138    * Since the region is the primary X selection, you can go to a
139      different X application and click the middle mouse button: the
140      text that you selected in the previous application is pasted into
141      the current application.
142
143    * Since the region is the Emacs selected region, you can use all
144      region commands (`C-w, M-w' etc.) as well as the options of the
145      Edit menu to manipulate the selected text.
146
147 * Menu:
148
149 * X Clipboard Selection::       Pasting to the X clipboard.
150 * X Selection Commands::        Other operations on the selection.
151 * X Cut Buffers::               X cut buffers are available for compatibility.
152 * Active Regions::              Using zmacs-style highlighting of the
153                                  selected region.
154
155 \1f
156 File: xemacs.info,  Node: X Clipboard Selection,  Next: X Selection Commands,  Prev: Using X Selections,  Up: Using X Selections
157
158 The Clipboard Selection
159 -----------------------
160
161    There are other kinds of X selections besides the Primary selection;
162 one common one is the Clipboard selection.  Some applications prefer to
163 transfer data using this selection in preference to the Primary.  One
164 can transfer text from the Primary selection to the  Clipboard
165 selection with the Copy command under the Edit menu in the menubar.
166
167    Usually, the clipboard selection is not visible.  However, if you
168 run the `xclipboard' application, the text most recently copied to the
169 clipboard (with the Copy command) is displayed in a window.  Any time
170 new text is thus copied, the `xclipboard' application makes a copy of
171 it and displays it in its window.  The value of the clipboard can
172 survive the lifetime of the running Emacs process.  The `xclipboard'
173 man page provides more details.
174
175    Warning: If you use the `xclipboard' application, remember that it
176 maintains a list of all things that have been pasted to the clipboard
177 (that is, copied with the Copy command).  If you don't manually delete
178 elements from this list by clicking on the Delete button in the
179 `xclipboard' window, the clipboard will eventually consume a lot of
180 memory.
181
182    In summary, some X applications (such as `xterm') allow one to paste
183 text in them from XEmacs in the following way:
184
185    * Drag out a region of text in Emacs with the left mouse button,
186      making that text be the Primary selection.
187
188    * Click the middle button in the other application, pasting the
189      Primary selection.
190
191    With some other applications (notably, the OpenWindows and Motif
192 tools) you must use this method instead:
193
194    * Drag out a region of text in Emacs with the left mouse button,
195      making that text be the Primary selection.
196
197    * Copy the selected text to the Clipboard selection by selecting the
198      Copy menu item from the Edit menu, or by hitting the Copy key on
199      your keyboard.
200
201    * Paste the text in the other application by selecting Paste from its
202      menu, or by hitting the Paste key on your keyboard.
203
204 \1f
205 File: xemacs.info,  Node: X Selection Commands,  Next: X Cut Buffers,  Prev: X Clipboard Selection,  Up: Using X Selections
206
207 Miscellaneous X Selection Commands
208 ----------------------------------
209
210 `M-x x-copy-primary-selection'
211      Copy the primary selection to both the kill ring and the Clipboard.
212
213 `M-x x-insert-selection'
214      Insert the current selection into the buffer at point.
215
216 `M-x x-delete-primary-selection'
217      Deletes the text in the primary selection without copying it to
218      the kill ring or the Clipboard.
219
220 `M-x x-kill-primary-selection'
221      Deletes the text in the primary selection and copies it to both
222      the kill ring and the Clipboard.
223
224 `M-x x-mouse-kill'
225      Kill the text between point and the mouse and copy it to the
226      clipboard and to the cut buffer.
227
228 `M-x x-own-secondary-selection'
229      Make a secondary X selection of the given argument.
230
231 `M-x x-own-selection'
232      Make a primary X selection of the given argument.
233
234 `M-x x-set-point-and-insert-selection'
235      Set point where clicked and insert the primary selection or the
236      cut buffer.
237
238 \1f
239 File: xemacs.info,  Node: X Cut Buffers,  Next: Active Regions,  Prev: X Selection Commands,  Up: Using X Selections
240
241 X Cut Buffers
242 -------------
243
244    X cut buffers are a different, older way of transferring text between
245 applications.  XEmacs supports cut buffers for compatibility with older
246 programs, even though selections are now the preferred way of
247 transferring text.
248
249    X has a concept of applications "owning" selections.  When you select
250 text by clicking and dragging inside an application, the application
251 tells the X server that it owns the selection.  When another
252 application asks the X server for the value of the selection, the X
253 server requests the information from the owner. When you use
254 selections, the selection data is not actually transferred unless
255 someone wants it; the act of making a selection doesn't transfer data.
256 Cut buffers are different: when you "own" a cut buffer, the data is
257 actually transferred to the X server immediately, and survives the
258 lifetime of the application.
259
260    Any time a region of text becomes the primary selection in Emacs,
261 Emacs also copies that text to the cut buffer.  This makes it possible
262 to copy text from an XEmacs buffer and paste it into an older,
263 non-selection-based application (such as Emacs 18).
264
265    Note: Older versions of Emacs could not access the X selections, only
266 the X cut buffers.
267
268 \1f
269 File: xemacs.info,  Node: Active Regions,  Prev: X Cut Buffers,  Up: Using X Selections
270
271 Active Regions
272 --------------
273
274    By default, both the text you select in an Emacs buffer using the
275 click-and-drag mechanism and text you select by setting point and the
276 mark is highlighted. You can use Emacs region commands as well as the
277 Cut and Copy commands on the highlighted region you selected with the
278 mouse.
279
280    If you prefer, you can make a distinction between text selected with
281 the mouse and text selected with point and the mark by setting the
282 variable `zmacs-regions' to `nil'.  In that case:
283
284    * The text selected with the mouse becomes both the X selection and
285      the Emacs selected region. You can use menu-bar commands as well
286      as Emacs region commands on it.
287
288    * The text selected with point and the mark is not highlighted. You
289      can only use Emacs region commands on it, not the menu-bar items.
290
291    Active regions originally come from Zmacs, the Lisp Machine editor.
292 The idea behind them is that commands can only operate on a region when
293 the region is in an "active" state.  Put simply, you can only operate on
294 a region that is highlighted.
295
296    The variable `zmacs-regions' checks whether LISPM-style active
297 regions should be used.  This means that commands that operate on the
298 region (the area between point and the mark) only work while the region
299 is in the active state, which is indicated by highlighting.  Most
300 commands causes the region to not be in the active state; for example,
301 `C-w' only works immediately after activating the region.
302
303    More specifically:
304    * Commands that operate on the region only work if the region is
305      active.
306
307    * Only a very small set of commands causes the region to become
308      active-- those commands whose semantics are to mark an area, such
309      as `mark-defun'.
310
311    * The region is deactivated after each command that is executed,
312      except that motion commands do not change whether the region is
313      active or not.
314
315    `set-mark-command' (`C-SPC') pushes a mark and activates the region.
316 Moving the cursor with normal motion commands (`C-n', `C-p', etc.)
317 will cause the region between point and the recently-pushed mark to be
318 highlighted.  It will remain highlighted until some non-motion command
319 is executed.
320
321    `exchange-point-and-mark' (`C-x C-x') activates the region.  So if
322 you mark a region and execute a command that operates on it, you can
323 reactivate the same region with `C-x C-x' (or perhaps `C-x C-x C-x
324 C-x') to operate on it again.
325
326    Generally, commands that push marks as a means of navigation, such as
327 `beginning-of-buffer' (`M-<') and `end-of-buffer' (`M->'), do not
328 activate the region.  However, commands that push marks as a means of
329 marking an area of text, such as `mark-defun' (`M-C-h'), `mark-word'
330 (`M-@'), and `mark-whole-buffer' (`C-x h'), do activate the region.
331
332    When `zmacs-regions' is `t', there is no distinction between the
333 primary X selection and the active region selected by point and the
334 mark.  To see this, set the mark (<C-SPC>) and move the cursor with any
335 cursor-motion command: the region between point and mark is
336 highlighted, and you can watch it grow and shrink as you move the
337 cursor.
338
339    Any other commands besides cursor-motion commands (such as inserting
340 or deleting text) will cause the region to no longer be active; it will
341 no longer be highlighted, and will no longer be the primary selection.
342 Region can be explicitly deactivated with `C-g'.
343
344    Commands that require a region (such as `C-w') signal an error if
345 the region is not active.  Certain commands cause the region to be in
346 its active state.  The most common ones are `push-mark' (<C-SPC>) and
347 `exchange-point-and-mark' (`C-x C-x').
348
349    When `zmacs-regions' is `t', programs can be non-intrusive on the
350 state of the region by setting the variable `zmacs-region-stays' to a
351 non-`nil' value.  If you are writing a new Emacs command that is
352 conceptually a "motion" command and should not interfere with the
353 current highlightedness of the region, then you may set this variable.
354 It is reset to `nil' after each user command is executed.
355
356    When `zmacs-regions' is `t', programs can make the region between
357 point and mark go into the active (highlighted) state by using the
358 function `zmacs-activate-region'. Only a small number of commands
359 should ever do this.
360
361    When `zmacs-regions' is `t', programs can deactivate the region
362 between point and the mark by using `zmacs-deactivate-region'.  Note:
363 you should not have to call this function; the command loop calls it
364 when appropriate.
365
366 \1f
367 File: xemacs.info,  Node: Accumulating Text,  Next: Rectangles,  Prev: Using X Selections,  Up: Top
368
369 Accumulating Text
370 =================
371
372    Usually you copy or move text by killing it and yanking it, but
373 there are other ways that are useful for copying one block of text in
374 many places, or for copying many scattered blocks of text into one
375 place.
376
377    If you like, you can accumulate blocks of text from scattered
378 locations either into a buffer or into a file.  The relevant commands
379 are described here.  You can also use Emacs registers for storing and
380 accumulating text.  *Note Registers::.
381
382 `M-x append-to-buffer'
383      Append region to contents of specified buffer (`append-to-buffer').
384
385 `M-x prepend-to-buffer'
386      Prepend region to contents of specified buffer.
387
388 `M-x copy-to-buffer'
389      Copy region into specified buffer, deleting that buffer's old
390      contents.
391
392 `M-x insert-buffer'
393      Insert contents of specified buffer into current buffer at point.
394
395 `M-x append-to-file'
396      Append region to the end of the contents of specified file.
397
398    To accumulate text into a buffer, use the command `M-x
399 append-to-buffer', which inserts a copy of the region into the buffer
400 BUFFERNAME, at the location of point in that buffer.  If there is no
401 buffer with the given name, one is created.
402
403    If you append text to a buffer that has been used for editing, the
404 copied text goes to the place where point is.  Point in that buffer is
405 left at the end of the copied text, so successive uses of
406 `append-to-buffer' accumulate the text in the specified buffer in the
407 same order as they were copied.  Strictly speaking, this command does
408 not always append to the text already in the buffer; but if this command
409 is the only command used to alter a buffer, it does always append to the
410 existing text because point is always at the end.
411
412    `M-x prepend-to-buffer' is similar to `append-to-buffer', but point
413 in the other buffer is left before the copied text, so successive
414 prependings add text in reverse order.  `M-x copy-to-buffer' is
415 similar, except that any existing text in the other buffer is deleted,
416 so the buffer is left containing just the text newly copied into it.
417
418    You can retrieve the accumulated text from that buffer with `M-x
419 insert-buffer', which takes BUFFERNAME as an argument.  It inserts a
420 copy of the text in buffer BUFFERNAME into the selected buffer.  You
421 could alternatively select the other buffer for editing, perhaps moving
422 text from it by killing or with `append-to-buffer'.  *Note Buffers::,
423 for background information on buffers.
424
425    Instead of accumulating text within Emacs in a buffer, you can append
426 text directly into a file with `M-x append-to-file', which takes
427 FILE-NAME as an argument.  It adds the text of the region to the end of
428 the specified file.  The file is changed immediately on disk.  This
429 command is normally used with files that are not being visited in
430 Emacs.  Using it on a file that Emacs is visiting can produce confusing
431 results, because the file's text inside Emacs does not change while the
432 file itself changes.
433
434 \1f
435 File: xemacs.info,  Node: Rectangles,  Next: Registers,  Prev: Accumulating Text,  Up: Top
436
437 Rectangles
438 ==========
439
440    The rectangle commands affect rectangular areas of text: all
441 characters between a certain pair of columns, in a certain range of
442 lines.  Commands are provided to kill rectangles, yank killed
443 rectangles, clear them out, or delete them.  Rectangle commands are
444 useful with text in multicolumnar formats, like code with comments at
445 the right, or for changing text into or out of such formats.
446
447    To specify the rectangle a command should work on, put the mark at
448 one corner and point at the opposite corner.  The specified rectangle is
449 called the "region-rectangle" because it is controlled about the same
450 way the region is controlled.  Remember that a given combination of
451 point and mark values can be interpreted either as specifying a region
452 or as specifying a rectangle; it is up to the command that uses them to
453 choose the interpretation.
454
455 `M-x delete-rectangle'
456      Delete the text of the region-rectangle, moving any following text
457      on each line leftward to the left edge of the region-rectangle.
458
459 `M-x kill-rectangle'
460      Similar, but also save the contents of the region-rectangle as the
461      "last killed rectangle".
462
463 `M-x yank-rectangle'
464      Yank the last killed rectangle with its upper left corner at point.
465
466 `M-x open-rectangle'
467      Insert blank space to fill the space of the region-rectangle.  The
468      previous contents of the region-rectangle are pushed rightward.
469
470 `M-x clear-rectangle'
471      Clear the region-rectangle by replacing its contents with spaces.
472
473    The rectangle operations fall into two classes: commands deleting and
474 moving rectangles, and commands for blank rectangles.
475
476    There are two ways to get rid of the text in a rectangle: you can
477 discard the text (delete it) or save it as the "last killed" rectangle.
478 The commands for these two ways are `M-x delete-rectangle' and `M-x
479 kill-rectangle'.  In either case, the portion of each line that falls
480 inside the rectangle's boundaries is deleted, causing following text
481 (if any) on the line to move left.
482
483    Note that "killing" a rectangle is not killing in the usual sense;
484 the rectangle is not stored in the kill ring, but in a special place
485 that only records the most recently killed rectangle (that is, does not
486 append to a killed rectangle).  Different yank commands have to be used
487 and only one rectangle is stored, because yanking a rectangle is quite
488 different from yanking linear text and yank-popping commands are
489 difficult to make sense of.
490
491    Inserting a rectangle is the opposite of deleting one.  You specify
492 where to put the upper left corner by putting point there.  The
493 rectangle's first line is inserted at point, the rectangle's second line
494 is inserted at a point one line vertically down, and so on.  The number
495 of lines affected is determined by the height of the saved rectangle.
496
497    To insert the last killed rectangle, type `M-x yank-rectangle'.
498 This can be used to convert single-column lists into double-column
499 lists; kill the second half of the list as a rectangle and then yank it
500 beside the first line of the list.
501
502    There are two commands for working with blank rectangles: `M-x
503 clear-rectangle' erases existing text, and `M-x open-rectangle' inserts
504 a blank rectangle.  Clearing a rectangle is equivalent to deleting it
505 and then inserting a blank rectangle of the same size.
506
507    Rectangles can also be copied into and out of registers.  *Note
508 Rectangle Registers: RegRect.
509
510 \1f
511 File: xemacs.info,  Node: Registers,  Next: Display,  Prev: Rectangles,  Up: Top
512
513 Registers
514 *********
515
516    Emacs "registers" are places in which you can save text or positions
517 for later use.  Text saved in a register can be copied into the buffer
518 once or many times; a position saved in a register is used by moving
519 point to that position.  Rectangles can also be copied into and out of
520 registers (*note Rectangles::.).
521
522    Each register has a name, which is a single character.  A register
523 can store either a piece of text, a position, or a rectangle, but only
524 one thing at any given time.  Whatever you store in a register remains
525 there until you store something else in that register.
526
527 * Menu:
528
529 * RegPos::    Saving positions in registers.
530 * RegText::   Saving text in registers.
531 * RegRect::   Saving rectangles in registers.
532
533 `M-x view-register <RET> R'
534      Display a description of what register R contains.
535
536    `M-x view-register' reads a register name as an argument and then
537 displays the contents of the specified register.
538
539 \1f
540 File: xemacs.info,  Node: RegPos,  Next: RegText,  Prev: Registers,  Up: Registers
541
542 Saving Positions in Registers
543 =============================
544
545    Saving a position records a spot in a buffer so you can move back
546 there later.  Moving to a saved position re-selects the buffer and
547 moves point to the spot.
548
549 `C-x r SPC R'
550      Save the location of point in register R (`point-to-register').
551
552 `C-x r j R'
553      Jump to the location saved in register R (`register-to-point').
554
555    To save the current location of point in a register, choose a name R
556 and type `C-x r SPC R'.  The register R retains the location thus saved
557 until you store something else in that register.
558
559    The command `C-x r j R' moves point to the location recorded in
560 register R.  The register is not affected; it continues to record the
561 same location.  You can jump to the same position using the same
562 register as often as you want.
563
564 \1f
565 File: xemacs.info,  Node: RegText,  Next: RegRect,  Prev: RegPos,  Up: Registers
566
567 Saving Text in Registers
568 ========================
569
570    When you want to insert a copy of the same piece of text many times,
571 it can be impractical to use the kill ring, since each subsequent kill
572 moves the piece of text further down on the ring.  It becomes hard to
573 keep track of the argument needed to retrieve the same text with `C-y'.
574 An alternative is to store the text in a register with `C-x r s'
575 (`copy-to-register') and then retrieve it with `C-x r g'
576 (`insert-register').
577
578 `C-x r s R'
579      Copy region into register R (`copy-to-register').
580
581 `C-x r g R'
582      Insert text contents of register R (`insert-register').
583
584    `C-x r s R' stores a copy of the text of the region into the
585 register named R.  Given a numeric argument, `C-x r s' deletes the text
586 from the buffer as well.
587
588    `C-x r g R' inserts the text from register R in the buffer.  By
589 default it leaves point before the text and places the mark after it.
590 With a numeric argument, it puts point after the text and the mark
591 before it.
592
593 \1f
594 File: xemacs.info,  Node: RegRect,  Prev: RegText,  Up: Registers
595
596 Saving Rectangles in Registers
597 ==============================
598
599    A register can contain a rectangle instead of lines of text.  The
600 rectangle is represented as a list of strings.  *Note Rectangles::, for
601 basic information on rectangles and how to specify rectangles in a
602 buffer.
603
604 `C-x r r R'
605      Copy the region-rectangle into register
606      R(`copy-rectangle-to-register').  With a numeric argument, delete
607      it as well.
608
609 `C-x r g R'
610      Insert the rectangle stored in register R (if it contains a
611      rectangle) (`insert-register').
612
613    The `C-x r g' command inserts linear text if the register contains
614 that, or inserts a rectangle if the register contains one.
615
616 \1f
617 File: xemacs.info,  Node: Display,  Next: Search,  Prev: Registers,  Up: Top
618
619 Controlling the Display
620 ***********************
621
622    Since only part of a large buffer fits in the window, XEmacs tries
623 to show the part that is likely to be interesting.  The display control
624 commands allow you to specify which part of the text you want to see.
625
626 `C-l'
627      Clear frame and redisplay, scrolling the selected window to center
628      point vertically within it (`recenter').
629
630 `C-v'
631 `pgdn'
632 `next'
633      Scroll forward (a windowful or a specified number of lines)
634      (`scroll-up').  On most X keyboards, you can get this
635      functionality using the key labelled `Page Down', which generates
636      either `next' or `pgdn'.
637
638 `M-v'
639 `pgup'
640 `prior'
641      Scroll backward (`scroll-down').  On most X keyboards, you can get
642      this functionality using the key labelled `Page Up', which
643      generates either `prior' or `pgup'.
644
645 `ARG C-l'
646      Scroll so point is on line ARG (`recenter').
647
648 `C-x <'
649 `C-pgdn'
650 `C-next'
651      Scroll text in current window to the left (`scroll-left').
652
653 `C-x >'
654 `C-pgup'
655 `C-prior'
656      Scroll to the right (`scroll-right').
657
658 `C-x $'
659      Make deeply indented lines invisible (`set-selective-display').
660
661 * Menu:
662
663 * Scrolling::              Moving text up and down in a window.
664 * Horizontal Scrolling::   Moving text left and right in a window.
665 * Selective Display::      Hiding lines with lots of indentation.
666 * Display Vars::           Information on variables for customizing display.
667
668 \1f
669 File: xemacs.info,  Node: Scrolling,  Next: Horizontal Scrolling,  Prev: Display,  Up: Display
670
671 Scrolling
672 =========
673
674    If a buffer contains text that is too large to fit entirely within
675 the window that is displaying the buffer, XEmacs shows a contiguous
676 section of the text.  The section shown always contains point.
677
678    "Scrolling" means moving text up or down in the window so that
679 different parts of the text are visible.  Scrolling forward means that
680 text moves up, and new text appears at the bottom.  Scrolling backward
681 moves text down and new text appears at the top.
682
683    Scrolling happens automatically if you move point past the bottom or
684 top of the window.  You can also explicitly request scrolling with the
685 commands in this section.
686
687 `C-l'
688      Clear frame and redisplay, scrolling the selected window to center
689      point vertically within it (`recenter').
690
691 `C-v'
692 `pgdn'
693 `next'
694      Scroll forward (a windowful or a specified number of lines)
695      (`scroll-up').
696
697 `M-v'
698 `pgup'
699 `prior'
700      Scroll backward (`scroll-down').
701
702 `ARG C-l'
703      Scroll so point is on line ARG (`recenter').
704
705    The most basic scrolling command is `C-l' (`recenter') with no
706 argument.  It clears the entire frame and redisplays all windows.  In
707 addition, it scrolls the selected window so that point is halfway down
708 from the top of the window.
709
710    The scrolling commands `C-v' and `M-v' let you move all the text in
711 the window up or down a few lines.  `C-v' (`scroll-up') with an
712 argument shows you that many more lines at the bottom of the window,
713 moving the text and point up together as `C-l' might.  `C-v' with a
714 negative argument shows you more lines at the top of the window.
715 `Meta-v' (`scroll-down') is like `C-v', but moves in the opposite
716 direction.
717
718    To read the buffer a windowful at a time, use `C-v' with no
719 argument.  `C-v' takes the last two lines at the bottom of the window
720 and puts them at the top, followed by nearly a whole windowful of lines
721 not previously visible.  Point moves to the new top of the window if it
722 was in the text scrolled off the top.  `M-v' with no argument moves
723 backward with similar overlap.  The number of lines of overlap across a
724 `C-v' or `M-v' is controlled by the variable
725 `next-screen-context-lines'; by default, it is two.
726
727    Another way to scroll is using `C-l' with a numeric argument.  `C-l'
728 does not clear the frame when given an argument; it only scrolls the
729 selected window.  With a positive argument N, `C-l' repositions text to
730 put point N lines down from the top.  An argument of zero puts point on
731 the very top line.  Point does not move with respect to the text;
732 rather, the text and point move rigidly on the frame.  `C-l' with a
733 negative argument puts point that many lines from the bottom of the
734 window.  For example, `C-u - 1 C-l' puts point on the bottom line, and
735 `C-u - 5 C-l' puts it five lines from the bottom.  Just `C-u' as
736 argument, as in `C-u C-l', scrolls point to the center of the frame.
737
738    Scrolling happens automatically if point has moved out of the visible
739 portion of the text when it is time to display.  Usually scrolling is
740 done  to put point vertically centered within the window.  However, if
741 the variable `scroll-step' has a non-zero value, an attempt is made to
742 scroll the buffer by that many lines; if that is enough to bring point
743 back into visibility, that is what happens.
744
745    Scrolling happens automatically if point has moved out of the visible
746 portion of the text when it is time to display.  Usually scrolling is
747 done  to put point vertically centered within the window.  However, if
748 the variable `scroll-step' has a non-zero value, an attempt is made to
749 scroll the buffer by that many lines; if that is enough to bring point
750 back into visibility, that is what happens.
751
752    If you set `scroll-step' to a small value because you want to use
753 arrow keys to scroll the screen without recentering, the redisplay
754 preemption will likely make XEmacs keep recentering the screen when
755 scrolling fast, regardless of `scroll-step'.  To prevent this, set
756 `scroll-conservatively' to a small value, which will have the result of
757 overriding the redisplay preemption.
758
759 \1f
760 File: xemacs.info,  Node: Horizontal Scrolling,  Prev: Scrolling,  Up: Display
761
762 Horizontal Scrolling
763 ====================
764
765 `C-x <'
766      Scroll text in current window to the left (`scroll-left').
767
768 `C-x >'
769      Scroll to the right (`scroll-right').
770
771    The text in a window can also be scrolled horizontally.  This means
772 that each line of text is shifted sideways in the window, and one or
773 more characters at the beginning of each line are not displayed at all.
774 When a window has been scrolled horizontally in this way, text lines
775 are truncated rather than continued (*note Continuation Lines::.), with
776 a `$' appearing in the first column when there is text truncated to the
777 left, and in the last column when there is text truncated to the right.
778
779    The command `C-x <' (`scroll-left') scrolls the selected window to
780 the left by N columns with argument N.  With no argument, it scrolls by
781 almost the full width of the window (two columns less, to be precise).
782 `C-x >' (`scroll-right') scrolls similarly to the right.  The window
783 cannot be scrolled any farther to the right once it is displaying
784 normally (with each line starting at the window's left margin);
785 attempting to do so has no effect.
786
787 \1f
788 File: xemacs.info,  Node: Selective Display,  Next: Display Vars,  Prev: Display,  Up: Display
789
790 Selective Display
791 =================
792
793    XEmacs can hide lines indented more than a certain number of columns
794 (you specify how many columns).  This allows you  to get an overview of
795 a part of a program.
796
797    To hide lines, type `C-x $' (`set-selective-display') with a numeric
798 argument N.  (*Note Arguments::, for information on giving the
799 argument.)  Lines with at least N columns of indentation disappear from
800 the screen.  The only indication of their presence are three dots
801 (`...'), which appear at the end of each visible line that is followed
802 by one or more invisible ones.
803
804    The invisible lines are still present in the buffer, and most editing
805 commands see them as usual, so it is very easy to put point in the
806 middle of invisible text.  When this happens, the cursor appears at the
807 end of the previous line, after the three dots.  If point is at the end
808 of the visible line, before the newline that ends it, the cursor
809 appears before the three dots.
810
811    The commands `C-n' and `C-p' move across the invisible lines as if
812 they were not there.
813
814    To make everything visible again, type `C-x $' with no argument.
815
816 \1f
817 File: xemacs.info,  Node: Display Vars,  Prev: Selective Display,  Up: Display
818
819 Variables Controlling Display
820 =============================
821
822    This section contains information for customization only.  Beginning
823 users should skip it.
824
825    When you reenter XEmacs after suspending, XEmacs normally clears the
826 screen and redraws the entire display.  On some terminals with more than
827 one page of memory, it is possible to arrange the termcap entry so that
828 the `ti' and `te' strings (output to the terminal when XEmacs is
829 entered and exited, respectively) switch between pages of memory so as
830 to use one page for XEmacs and another page for other output.  In that
831 case, you might want to set the variable `no-redraw-on-reenter' to
832 non-`nil' so that XEmacs will assume, when resumed, that the screen
833 page it is using still contains what XEmacs last wrote there.
834
835    The variable `echo-keystrokes' controls the echoing of
836 multi-character keys; its value is the number of seconds of pause
837 required to cause echoing to start, or zero, meaning don't echo at all.
838 *Note Echo Area::.
839
840    If the variable `ctl-arrow' is `nil', control characters in the
841 buffer are displayed with octal escape sequences, all except newline and
842 tab.  If its value is `t', then control characters will be printed with
843 an up-arrow, for example `^A'.
844
845    If its value is not `t' and not `nil', then characters whose code is
846 greater than 160 (that is, the space character (32) with its high bit
847 set) will be assumed to be printable, and will be displayed without
848 alteration.  This is the default when running under X Windows, since
849 XEmacs assumes an ISO/8859-1 character set (also known as "Latin1").
850 The `ctl-arrow' variable may also be set to an integer, in which case
851 all characters whose codes are greater than or equal to that value will
852 be assumed to be printable.
853
854    Altering the value of `ctl-arrow' makes it local to the current
855 buffer; until that time, the default value is in effect.  *Note
856 Locals::.
857
858    Normally, a tab character in the buffer is displayed as whitespace
859 which extends to the next display tab stop position, and display tab
860 stops come at intervals equal to eight spaces.  The number of spaces
861 per tab is controlled by the variable `tab-width', which is made local
862 by changing it, just like `ctl-arrow'.  Note that how the tab character
863 in the buffer is displayed has nothing to do with the definition of
864 <TAB> as a command.
865
866    If you set the variable `selective-display-ellipses' to `nil', the
867 three dots at the end of a line that precedes invisible lines do not
868 appear.  There is no visible indication of the invisible lines.  This
869 variable becomes local automatically when set.
870
871 \1f
872 File: xemacs.info,  Node: Search,  Next: Fixit,  Prev: Display,  Up: Top
873
874 Searching and Replacement
875 *************************
876
877    Like other editors, Emacs has commands for searching for occurrences
878 of a string.  The principal search command is unusual in that it is
879 "incremental": it begins to search before you have finished typing the
880 search string.  There are also non-incremental search commands more like
881 those of other editors.
882
883    Besides the usual `replace-string' command that finds all
884 occurrences of one string and replaces them with another, Emacs has a
885 fancy replacement command called `query-replace' which asks
886 interactively which occurrences to replace.
887
888 * Menu:
889
890 * Incremental Search::     Search happens as you type the string.
891 * Non-Incremental Search:: Specify entire string and then search.
892 * Word Search::            Search for sequence of words.
893 * Regexp Search::          Search for match for a regexp.
894 * Regexps::                Syntax of regular expressions.
895 * Search Case::            To ignore case while searching, or not.
896 * Replace::                Search, and replace some or all matches.
897 * Other Repeating Search:: Operating on all matches for some regexp.
898
899 \1f
900 File: xemacs.info,  Node: Incremental Search,  Next: Non-Incremental Search,  Prev: Search,  Up: Search
901
902 Incremental Search
903 ==================
904
905    An incremental search begins searching as soon as you type the first
906 character of the search string.  As you type in the search string, Emacs
907 shows you where the string (as you have typed it so far) is found.
908 When you have typed enough characters to identify the place you want,
909 you can stop.  Depending on what you do next, you may or may not need to
910 terminate the search explicitly with a <RET>.
911
912 `C-s'
913      Incremental search forward (`isearch-forward').
914
915 `C-r'
916      Incremental search backward (`isearch-backward').
917
918    `C-s' starts an incremental search.  `C-s' reads characters from the
919 keyboard and positions the cursor at the first occurrence of the
920 characters that you have typed.  If you type `C-s' and then `F', the
921 cursor moves right after the first `F'.  Type an `O', and see the
922 cursor move to after the first `FO'.  After another `O', the cursor is
923 after the first `FOO' after the place where you started the search.
924 Meanwhile, the search string `FOO' has been echoed in the echo area.
925
926    The echo area display ends with three dots when actual searching is
927 going on.  When search is waiting for more input, the three dots are
928 removed.  (On slow terminals, the three dots are not displayed.)
929
930    If you make a mistake in typing the search string, you can erase
931 characters with <DEL>.  Each <DEL> cancels the last character of the
932 search string.  This does not happen until Emacs is ready to read
933 another input character; first it must either find, or fail to find,
934 the character you want to erase.  If you do not want to wait for this
935 to happen, use `C-g' as described below.
936
937    When you are satisfied with the place you have reached, you can type
938 <RET> (or <C-m>), which stops searching, leaving the cursor where the
939 search brought it.  Any command not specially meaningful in searches
940 also stops the search and is then executed.  Thus, typing `C-a' exits
941 the search and then moves to the beginning of the line.  <RET> is
942 necessary only if the next command you want to type is a printing
943 character, <DEL>, <ESC>, or another control character that is special
944 within searches (`C-q', `C-w', `C-r', `C-s', or `C-y').
945
946    Sometimes you search for `FOO' and find it, but were actually
947 looking for a different occurance of it.  To move to the next occurrence
948 of the search string, type another `C-s'.  Do this as often as
949 necessary.  If you overshoot, you can cancel some `C-s' characters with
950 <DEL>.
951
952    After you exit a search, you can search for the same string again by
953 typing just `C-s C-s': the first `C-s' is the key that invokes
954 incremental search, and the second `C-s' means "search again".
955
956    If the specified string is not found at all, the echo area displays
957 the text `Failing I-Search'.  The cursor is after the place where Emacs
958 found as much of your string as it could.  Thus, if you search for
959 `FOOT', and there is no `FOOT', the cursor may be after the `FOO' in
960 `FOOL'.  At this point there are several things you can do.  If you
961 mistyped the search string, correct it.  If you like the place you have
962 found, you can type <RET> or some other Emacs command to "accept what
963 the search offered".  Or you can type `C-g', which removes from the
964 search string the characters that could not be found (the `T' in
965 `FOOT'), leaving those that were found (the `FOO' in `FOOT').  A second
966 `C-g' at that point cancels the search entirely, returning point to
967 where it was when the search started.
968
969    If a search is failing and you ask to repeat it by typing another
970 `C-s', it starts again from the beginning of the buffer.  Repeating a
971 failing backward search with `C-r' starts again from the end.  This is
972 called "wrapping around".  `Wrapped' appears in the search prompt once
973 this has happened.
974
975    The `C-g' "quit" character does special things during searches; just
976 what it does depends on the status of the search.  If the search has
977 found what you specified and is waiting for input, `C-g' cancels the
978 entire search.  The cursor moves back to where you started the search.
979 If `C-g' is typed when there are characters in the search string that
980 have not been found--because Emacs is still searching for them, or
981 because it has failed to find them--then the search string characters
982 which have not been found are discarded from the search string.  The
983 search is now successful and waiting for more input, so a second `C-g'
984 cancels the entire search.
985
986    To search for a control character such as `C-s' or <DEL> or <ESC>,
987 you must quote it by typing `C-q' first.  This function of `C-q' is
988 analogous to its meaning as an Emacs command: it causes the following
989 character to be treated the way a graphic character would normally be
990 treated in the same context.
991
992    To search backwards, you can use `C-r' instead of `C-s' to start the
993 search; `C-r' is the key that runs the command (`isearch-backward') to
994 search backward.  You can also use `C-r' to change from searching
995 forward to searching backwards.  Do this if a search fails because the
996 place you started was too far down in the file.  Repeated `C-r' keeps
997 looking for more occurrences backwards.  `C-s' starts going forward
998 again.  You can cancel `C-r' in a search with <DEL>.
999
1000    The characters `C-y' and `C-w' can be used in incremental search to
1001 grab text from the buffer into the search string.  This makes it
1002 convenient to search for another occurrence of text at point.  `C-w'
1003 copies the word after point as part of the search string, advancing
1004 point over that word.  Another `C-s' to repeat the search will then
1005 search for a string including that word.  `C-y' is similar to `C-w' but
1006 copies the rest of the current line into the search string.
1007
1008    The characters `M-p' and `M-n' can be used in an incremental search
1009 to recall things which you have searched for in the past.  A list of
1010 the last 16 things you have searched for is retained, and `M-p' and
1011 `M-n' let you cycle through that ring.
1012
1013    The character `M-<TAB>' does completion on the elements in the
1014 search history ring.  For example, if you know that you have recently
1015 searched for the string `POTATOE', you could type `C-s P O M-<TAB>'.
1016 If you had searched for other strings beginning with `PO' then you
1017 would be shown a list of them, and would need to type more to select
1018 one.
1019
1020    You can change any of the special characters in incremental search
1021 via the normal keybinding mechanism: simply add a binding to the
1022 `isearch-mode-map'.  For example, to make the character `C-b' mean
1023 "search backwards" while in isearch-mode, do this:
1024
1025      (define-key isearch-mode-map "\C-b" 'isearch-repeat-backward)
1026
1027    These are the default bindings of isearch-mode:
1028
1029 `DEL'
1030      Delete a character from the incremental search string
1031      (`isearch-delete-char').
1032
1033 `RET'
1034      Exit incremental search (`isearch-exit').
1035
1036 `C-q'
1037      Quote special characters for incremental search
1038      (`isearch-quote-char').
1039
1040 `C-s'
1041      Repeat incremental search forward (`isearch-repeat-forward').
1042
1043 `C-r'
1044      Repeat incremental search backward (`isearch-repeat-backward').
1045
1046 `C-y'
1047      Pull rest of line from buffer into search string
1048      (`isearch-yank-line').
1049
1050 `C-w'
1051      Pull next word from buffer into search string
1052      (`isearch-yank-word').
1053
1054 `C-g'
1055      Cancels input back to what has been found successfully, or aborts
1056      the isearch (`isearch-abort').
1057
1058 `M-p'
1059      Recall the previous element in the isearch history ring
1060      (`isearch-ring-retreat').
1061
1062 `M-n'
1063      Recall the next element in the isearch history ring
1064      (`isearch-ring-advance').
1065
1066 `M-<TAB>'
1067      Do completion on the elements in the isearch history ring
1068      (`isearch-complete').
1069
1070    Any other character which is normally inserted into a buffer when
1071 typed is automatically added to the search string in isearch-mode.
1072
1073 Slow Terminal Incremental Search
1074 --------------------------------
1075
1076    Incremental search on a slow terminal uses a modified style of
1077 display that is designed to take less time.  Instead of redisplaying
1078 the buffer at each place the search gets to, it creates a new
1079 single-line window and uses that to display the line the search has
1080 found.  The single-line window appears as soon as point gets outside of
1081 the text that is already on the screen.
1082
1083    When the search is terminated, the single-line window is removed.
1084 Only at this time the window in which the search was done is
1085 redisplayed to show its new value of point.
1086
1087    The three dots at the end of the search string, normally used to
1088 indicate that searching is going on, are not displayed in slow style
1089 display.
1090
1091    The slow terminal style of display is used when the terminal baud
1092 rate is less than or equal to the value of the variable
1093 `search-slow-speed', initially 1200.
1094
1095    The number of lines to use in slow terminal search display is
1096 controlled by the variable `search-slow-window-lines'.  Its normal
1097 value is 1.
1098
1099 \1f
1100 File: xemacs.info,  Node: Non-Incremental Search,  Next: Word Search,  Prev: Incremental Search,  Up: Search
1101
1102 Non-Incremental Search
1103 ======================
1104
1105    Emacs also has conventional non-incremental search commands, which
1106 require you type the entire search string before searching begins.
1107
1108 `C-s <RET> STRING <RET>'
1109      Search for STRING.
1110
1111 `C-r <RET> STRING <RET>'
1112      Search backward for STRING.
1113
1114    To do a non-incremental search, first type `C-s <RET>' (or `C-s
1115 C-m').  This enters the minibuffer to read the search string.
1116 Terminate the string with <RET> to start the search.  If the string is
1117 not found, the search command gets an error.
1118
1119    By default, `C-s' invokes incremental search, but if you give it an
1120 empty argument, which would otherwise be useless, it invokes
1121 non-incremental search.  Therefore, `C-s <RET>' invokes non-incremental
1122 search.  `C-r <RET>' also works this way.
1123
1124    Forward and backward non-incremental searches are implemented by the
1125 commands `search-forward' and `search-backward'.  You can bind these
1126 commands to keys.  The reason that incremental search is programmed to
1127 invoke them as well is that `C-s <RET>' is the traditional sequence of
1128 characters used in Emacs to invoke non-incremental search.
1129
1130    Non-incremental searches performed using `C-s <RET>' do not call
1131 `search-forward' right away.  They first check if the next character is
1132 `C-w', which requests a word search.  *Note Word Search::.
1133
1134 \1f
1135 File: xemacs.info,  Node: Word Search,  Next: Regexp Search,  Prev: Non-Incremental Search,  Up: Search
1136
1137 Word Search
1138 ===========
1139
1140    Word search looks for a sequence of words without regard to how the
1141 words are separated.  More precisely, you type a string of many words,
1142 using single spaces to separate them, and the string is found even if
1143 there are multiple spaces, newlines or other punctuation between the
1144 words.
1145
1146    Word search is useful in editing documents formatted by text
1147 formatters.  If you edit while looking at the printed, formatted
1148 version, you can't tell where the line breaks are in the source file.
1149 Word search, allows you to search  without having to know the line
1150 breaks.
1151
1152 `C-s <RET> C-w WORDS <RET>'
1153      Search for WORDS, ignoring differences in punctuation.
1154
1155 `C-r <RET> C-w WORDS <RET>'
1156      Search backward for WORDS, ignoring differences in punctuation.
1157
1158    Word search is a special case of non-incremental search.  It is
1159 invoked with `C-s <RET> C-w' followed by the search string, which must
1160 always be terminated with another <RET>.  Being non-incremental, this
1161 search does not start until the argument is terminated.  It works by
1162 constructing a regular expression and searching for that.  *Note Regexp
1163 Search::.
1164
1165    You can do a backward word search with `C-r <RET> C-w'.
1166
1167    Forward and backward word searches are implemented by the commands
1168 `word-search-forward' and `word-search-backward'.  You can bind these
1169 commands to keys.  The reason that incremental search is programmed to
1170 invoke them as well is that `C-s <RET> C-w' is the traditional Emacs
1171 sequence of keys for word search.
1172