-The Mark and the Region
-=======================
-
- To specify the text for a command to operate on, set "the mark" at
-one end of it, and move point to the other end. The text between point
-and the mark is called "the region". You can move point or the mark to
-adjust the boundaries of the region. It doesn't matter which one is
-set first chronologically, or which one comes earlier in the text.
-
- Once the mark has been set, it remains until it is set again at
-another place. The mark remains fixed with respect to the preceding
-character if text is inserted or deleted in a buffer. Each Emacs
-buffer has its own mark; when you return to a buffer that had been
-selected previously, it has the same mark it had before.
-
- Many commands that insert text, such as `C-y' (`yank') and `M-x
-insert-buffer', position the mark at one end of the inserted text--the
-opposite end from where point is positioned, so that the region
-contains the text just inserted.
-
- Aside from delimiting the region, the mark is useful for marking a
-spot that you may want to go back to. To make this feature more useful,
-Emacs remembers 16 previous locations of the mark in the `mark ring'.
-
-* Menu:
-
-* Setting Mark:: Commands to set the mark.
-* Using Region:: Summary of ways to operate on contents of the region.
-* Marking Objects:: Commands to put region around textual units.
-* Mark Ring:: Previous mark positions saved so you can go back there.
-
-\1f
-File: xemacs.info, Node: Setting Mark, Next: Using Region, Prev: Mark, Up: Mark
-
-Setting the Mark
-----------------
-
- Here are some commands for setting the mark:
-
-`C-<SPC>'
- Set the mark where point is (`set-mark-command').
-
-`C-@'
- The same.
-
-`C-x C-x'
- Interchange mark and point (`exchange-point-and-mark').
-
-`C-<'
- Pushes a mark at the beginning of the buffer.
-
-`C->'
- Pushes a mark at the end of the buffer.
-
- For example, to convert part of the buffer to all upper-case, you
-can use the `C-x C-u' (`upcase-region') command, which operates on the
-text in the region. First go to the beginning of the text you want to
-capitalize and type `C-<SPC>' to put the mark there, then move to the
-end, and then type `C-x C-u' to capitalize the selected region. You
-can also set the mark at the end of the text, move to the beginning,
-and then type `C-x C-u'. Most commands that operate on the text in the
-region have the word `region' in their names.
-
- The most common way to set the mark is with the `C-<SPC>' command
-(`set-mark-command'). This command sets the mark where point is. You
-can then move point away, leaving the mark behind. It is actually
-incorrect to speak of the character `C-<SPC>'; there is no such
-character. When you type <SPC> while holding down <CTRL>, you get the
-character `C-@' on most terminals. This character is actually bound to
-`set-mark-command'. But unless you are unlucky enough to have a
-terminal where typing `C-<SPC>' does not produce `C-@', you should
-think of this character as `C-<SPC>'.
-
- Since terminals have only one cursor, Emacs cannot show you where the
-mark is located. Most people use the mark soon after they set it, before
-they forget where it is. But you can see where the mark is with the
-command `C-x C-x' (`exchange-point-and-mark') which puts the mark where
-point was and point where the mark was. The extent of the region is
-unchanged, but the cursor and point are now at the previous location of
-the mark.
-
- Another way to set the mark is to push the mark to the beginning of a
-buffer while leaving point at its original location. If you supply an
-argument to `C-<' (`mark-beginning-of-buffer'), the mark is pushed N/10
-of the way from the true beginning of the buffer. You can also set the
-mark at the end of a buffer with `C->' (`mark-end-of-buffer'). It
-pushes the mark to the end of the buffer, leaving point alone.
-Supplying an argument to the command pushes the mark N/10 of the way
-from the true end of the buffer.
-
- If you are using XEmacs under the X window system, you can set the
-variable `zmacs-regions' to `t'. This makes the current region (defined
-by point and mark) highlight and makes it available as the X clipboard
-selection, which means you can use the menu bar items on it. *Note
-Active Regions::, for more information.
-
- `C-x C-x' is also useful when you are satisfied with the location of
-point but want to move the mark; do `C-x C-x' to put point there and
-then you can move it. A second use of `C-x C-x', if necessary, puts
-the mark at the new location with point back at its original location.
-
-\1f
-File: xemacs.info, Node: Using Region, Next: Marking Objects, Prev: Setting Mark, Up: Mark
-
-Operating on the Region
------------------------
-
- Once you have created an active region, you can do many things to
-the text in it:
- * Kill it with `C-w' (*note Killing::.).
-
- * Save it in a register with `C-x r s' (*note Registers::.).
-
- * Save it in a buffer or a file (*note Accumulating Text::.).
-
- * Convert case with `C-x C-l' or `C-x C-u'
- (*note Case::.).
-
- * Evaluate it as Lisp code with `M-x eval-region' (*note Lisp
- Eval::.).
-
- * Fill it as text with `M-q' (*note Filling::.).
-
- * Print hardcopy with `M-x print-region' (*note Hardcopy::.).
-
- * Indent it with `C-x <TAB>' or `C-M-\' (*note Indentation::.).
-
-\1f
-File: xemacs.info, Node: Marking Objects, Next: Mark Ring, Prev: Using Region, Up: Mark
-
-Commands to Mark Textual Objects
---------------------------------
-
- There are commands for placing point and the mark around a textual
-object such as a word, list, paragraph or page.
-
-`M-@'
- Set mark after end of next word (`mark-word'). This command and
- the following one do not move point.
-
-`C-M-@'
- Set mark after end of next Lisp expression (`mark-sexp').
-
-`M-h'
- Put region around current paragraph (`mark-paragraph').
-
-`C-M-h'
- Put region around current Lisp defun (`mark-defun').
-
-`C-x h'
- Put region around entire buffer (`mark-whole-buffer').
-
-`C-x C-p'
- Put region around current page (`mark-page').
-
- `M-@' (`mark-word') puts the mark at the end of the next word, while
-`C-M-@' (`mark-sexp') puts it at the end of the next Lisp expression.
-These characters sometimes save you some typing.
-
- A number of commands are available that set both point and mark and
-thus delimit an object in the buffer. `M-h' (`mark-paragraph') moves
-point to the beginning of the paragraph that surrounds or follows
-point, and puts the mark at the end of that paragraph (*note
-Paragraphs::.). You can then indent, case-convert, or kill the whole
-paragraph. In the same fashion, `C-M-h' (`mark-defun') puts point
-before and the mark after the current or following defun (*note
-Defuns::.). `C-x C-p' (`mark-page') puts point before the current page
-(or the next or previous, depending on the argument), and mark at the
-end (*note Pages::.). The mark goes after the terminating page
-delimiter (to include it), while point goes after the preceding page
-delimiter (to exclude it). Finally, `C-x h' (`mark-whole-buffer') sets
-up the entire buffer as the region by putting point at the beginning
-and the mark at the end.
-
-\1f
-File: xemacs.info, Node: Mark Ring, Prev: Marking Objects, Up: Mark
-
-The Mark Ring
--------------
-
- Aside from delimiting the region, the mark is also useful for marking
-a spot that you may want to go back to. To make this feature more
-useful, Emacs remembers 16 previous locations of the mark in the "mark
-ring". Most commands that set the mark push the old mark onto this
-ring. To return to a marked location, use `C-u C-<SPC>' (or `C-u
-C-@'); this is the command `set-mark-command' given a numeric argument.
-The command moves point to where the mark was, and restores the mark
-from the ring of former marks. Repeated use of this command moves point
-to all the old marks on the ring, one by one. The marks you have seen
-go to the end of the ring, so no marks are lost.
-
- Each buffer has its own mark ring. All editing commands use the
-current buffer's mark ring. In particular, `C-u C-<SPC>' always stays
-in the same buffer.
-
- Many commands that can move long distances, such as `M-<'
-(`beginning-of-buffer'), start by setting the mark and saving the old
-mark on the mark ring. This makes it easier for you to move back
-later. Searches set the mark, unless they do not actually move point.
-When a command sets the mark, `Mark Set' is printed in the echo area.
-
- The variable `mark-ring-max' is the maximum number of entries to
-keep in the mark ring. If that many entries exist and another entry is
-added, the last entry in the list is discarded. Repeating `C-u
-C-<SPC>' circulates through the entries that are currently in the ring.
-
- The variable `mark-ring' holds the mark ring itself, as a list of
-marker objects in the order most recent first. This variable is local
-in every buffer.
-
-\1f
-File: xemacs.info, Node: Mouse Selection, Next: Additional Mouse Operations, Prev: Mark, Up: Top
-
-Selecting Text with the Mouse
-=============================
-
- If you are using XEmacs under X, you can use the mouse pointer to
-select text. (The normal mouse pointer is an I-beam, the same pointer
-that `xterm' uses.)
-
- The glyph variable `text-pointer-glyph' controls the shape of the
-mouse pointer when over text. You can also control the shape of the
-mouse pointer when over nontext using `nontext-pointer-glyph', and the
-shape of the mouse pointer when over the modeline using
-`modeline-pointer-glyph'. (Remember, you should use `set-glyph-image',
-not `setq', to set one of these variables.)
-
- If you want to get fancy, you can set the foreground and background
-colors of the mouse pointer by setting the `pointer' face.
-
- There are two ways to select a region of text with the mouse:
-
- To select a word in text, double-click with the left mouse button
-while the mouse cursor is over the word. The word is highlighted when
-selected. On monochrome monitors, a stippled background indicates that a
-region of text has been highlighted. On color monitors, a color
-background indicates highlighted text. You can triple-click to select
-whole lines.
-
- To select an arbitrary region of text:
-
- 1. Move the mouse cursor over the character at the beginning of the
- region of text you want to select.
-
- 2. Press and hold the left mouse button.
-
- 3. While holding the left mouse button down, drag the cursor to the
- character at the end of the region of text you want to select.
-
- 4. Release the left mouse button.
- The selected region of text is highlighted.
-
- Once a region of text is selected, it becomes the primary X selection
-(*note Using X Selections::.) as well as the Emacs selected region. You
-can paste it into other X applications and use the options from the
-Edit pull-down menu on it. Since it is also the Emacs region, you can
-use Emacs region commands on it.
-
-\1f
-File: xemacs.info, Node: Additional Mouse Operations, Next: Killing, Prev: Mouse Selection, Up: Top
-
-Additional Mouse Operations
-===========================
-
- XEmacs also provides the following mouse functions. Most of these
-are not bound to mouse gestures by default, but they are provided for
-your customization pleasure. For example, if you wanted `shift-left'
-(that is, holding down the <Shift> key and clicking the left mouse
-button) to delete the character at which you are pointing, then you
-could do this:
-
- (global-set-key '(shift button1) 'mouse-del-char)
-
-`mouse-del-char'
- Delete the character pointed to by the mouse.
-
-`mouse-delete-window'
- Delete the Emacs window that the mouse is on.
-
-`mouse-keep-one-window'
- Select the Emacs window that the mouse is on, then delete all other
- windows on this frame.
-
-`mouse-kill-line'
- Kill the line pointed to by the mouse.
-
-`mouse-line-length'
- Print the length of the line indicated by the pointer.
-
-`mouse-scroll'
- Scroll point to the mouse position.
-
-`mouse-select'
- Select the Emacs window the mouse is on.
-
-`mouse-select-and-split'
- Select the Emacs window mouse is on, then split it vertically in
- half.
-
-`mouse-set-mark'
- Select the Emacs window the mouse is on and set the mark at the
- mouse position. Display the cursor at that position for a second.
-
-`mouse-set-point'
- Select the Emacs window that the mouse is on and move point to the
- mouse position.
-
-`mouse-track'
- Make a selection with the mouse. This is the default binding of
- the left mouse button (<button1>).
-
-`mouse-track-adjust'
- Extend the existing selection. This is the default binding of
- <Shift-button1>.
-
-`mouse-track-and-copy-to-cutbuffer'
- Make a selection like `mouse-track', but also copy it to the cut
- buffer.
-
-`mouse-track-delete-and-insert'
- Make a selection with the mouse and insert it at point. This is
- the default binding of <control-shift-button1>.
-
-`mouse-track-insert'
- Make a selection with the mouse and insert it at point. This is
- the default binding of <control-button1>.
-
-`mouse-window-to-region'
- Narrow a window to the region between the cursor and the mouse
- pointer.
-
- The `M-x mouse-track' command should be bound to a mouse button. If
-you click-and-drag, the selection is set to the region between the
-point of the initial click and the point at which you release the
-button. These positions do not need to be ordered.
-
- If you click-and-release without moving the mouse, the point is
-moved, and the selection is disowned (there will be no selection
-owner.) The mark will be set to the previous position of point.
-
- If you double-click, the selection will extend by symbols instead of
-by characters. If you triple-click, the selection will extend by lines.
-
- If you drag the mouse off the top or bottom of the window, you can
-select pieces of text that are larger than the visible part of the
-buffer; the buffer will scroll as necessary.
-
- The selected text becomes the current X selection, and is also
-copied to the top of the kill ring. Point will be left at the position
-at which you released the button and the mark will be left at the
-initial click position. Bind a mouse click to
-`mouse-track-and-copy-to-cutbuffer' to copy selections to the cut
-buffer. (See also the `mouse-track-adjust' command, on
-`Shift-button1'.)
-
- The `M-x mouse-track-adjust' command should be bound to a mouse
-button. The selection will be enlarged or shrunk so that the point of
-the mouse click is one of its endpoints. This is only meaningful after
-the `mouse-track' command (<button1>) has been executed.
-
- The `M-x mouse-track-delete-and-insert' command is exactly the same
-as the `mouse-track' command on <button1>, except that point is not
-moved; the selected text is immediately inserted after being selected;
-and the text of the selection is deleted.
-
- The `M-x mouse-track-insert' command is exactly the same as the
-`mouse-track' command on <button1>, except that point is not moved; the
-selected text is immediately inserted after being selected; and the
-selection is immediately disowned afterwards.
-
-\1f
-File: xemacs.info, Node: Killing, Next: Yanking, Prev: Additional Mouse Operations, Up: Top
-
-Deletion and Killing
-====================
-
- Most commands that erase text from the buffer save it. You can get
-the text back if you change your mind, or you can move or copy it to
-other parts of the buffer. Commands which erase text and save it in the
-kill ring are known as "kill" commands. Some other commands erase text
-but do not save it; they are known as "delete" commands. (This
-distinction is made only for erasing text in the buffer.)
-
- The commands' names and individual descriptions use the words `kill'
-and `delete' to indicate what they do. If you perform a kill or delete
-command by mistake, use the `C-x u' (`undo') command to undo it (*note
-Undo::.). The delete commands include `C-d' (`delete-char') and <DEL>
-(`delete-backward-char'), which delete only one character at a time,
-and those commands that delete only spaces or newlines. Commands that
-can destroy significant amounts of nontrivial data usually kill.
-
-Deletion
---------
-
-`C-d'
- Delete next character (`delete-char').
-
-`<DEL>'
- Delete previous character (`delete-backward-char').
-
-`M-\'
- Delete spaces and tabs around point (`delete-horizontal-space').
-
-`M-<SPC>'
- Delete spaces and tabs around point, leaving one space
- (`just-one-space').
-
-`C-x C-o'
- Delete blank lines around the current line (`delete-blank-lines').
-
-`M-^'
- Join two lines by deleting the intervening newline, and any
- indentation following it (`delete-indentation').
-
- The most basic delete commands are `C-d' (`delete-char') and <DEL>
-(`delete-backward-char'). `C-d' deletes the character after point, the
-one the cursor is "on top of". Point doesn't move. <DEL> deletes the
-character before the cursor, and moves point back. You can delete
-newlines like any other characters in the buffer; deleting a newline
-joins two lines. Actually, `C-d' and <DEL> aren't always delete
-commands; if you give them an argument, they kill instead, since they
-can erase more than one character this way.
-
- The other delete commands delete only formatting characters: spaces,
-tabs and newlines. `M-\' (`delete-horizontal-space') deletes all
-spaces and tab characters before and after point. `M-<SPC>'
-(`just-one-space') does the same but leaves a single space after point,
-regardless of the number of spaces that existed previously (even zero).
-
- `C-x C-o' (`delete-blank-lines') deletes all blank lines after the
-current line. If the current line is blank, it deletes all blank lines
-preceding the current line as well as leaving one blank line, the
-current line. `M-^' (`delete-indentation') joins the current line and
-the previous line, or, if given an argument, joins the current line and
-the next line by deleting a newline and all surrounding spaces, possibly
-leaving a single space. *Note M-^: Indentation.
-
-Killing by Lines
-----------------
-
-`C-k'
- Kill rest of line or one or more lines (`kill-line').
-
- The simplest kill command is `C-k'. If given at the beginning of a
-line, it kills all the text on the line, leaving the line blank. If
-given on a blank line, the blank line disappears. As a consequence, a
-line disappears completely if you go to the front of a non-blank line
-and type `C-k' twice.
-
- More generally, `C-k' kills from point up to the end of the line,
-unless it is at the end of a line. In that case, it kills the newline
-following the line, thus merging the next line into the current one.
-Emacs ignores invisible spaces and tabs at the end of the line when
-deciding which case applies: if point appears to be at the end of the
-line, you can be sure the newline will be killed.
-
- If you give `C-k' a positive argument, it kills that many lines and
-the newlines that follow them (however, text on the current line before
-point is not killed). With a negative argument, `C-k' kills back to a
-number of line beginnings. An argument of -2 means kill back to the
-second line beginning. If point is at the beginning of a line, that
-line beginning doesn't count, so `C-u - 2 C-k' with point at the front
-of a line kills the two previous lines.
-
- `C-k' with an argument of zero kills all the text before point on the
-current line.
-
-Other Kill Commands
--------------------
-
-`C-w'
- Kill region (from point to the mark) (`kill-region'). *Note
- Words::.
-
-`M-d'
- Kill word (`kill-word').
-
-`M-<DEL>'
- Kill word backwards (`backward-kill-word').
-
-`C-x <DEL>'
- Kill back to beginning of sentence (`backward-kill-sentence').
- *Note Sentences::.
-
-`M-k'
- Kill to end of sentence (`kill-sentence').
-
-`C-M-k'
- Kill sexp (`kill-sexp'). *Note Lists::.
-
-`M-z CHAR'
- Kill up to next occurrence of CHAR (`zap-to-char').
-
- `C-w' (`kill-region') is a very general kill command; it kills
-everything between point and the mark. You can use this command to kill
-any contiguous sequence of characters by first setting the mark at one
-end of a sequence of characters, then going to the other end and typing
-`C-w'.
-
- A convenient way of killing is combined with searching: `M-z'
-(`zap-to-char') reads a character and kills from point up to (but not
-including) the next occurrence of that character in the buffer. If
-there is no next occurrence, killing goes to the end of the buffer. A
-numeric argument acts as a repeat count. A negative argument means to
-search backward and kill text before point.
-
- Other syntactic units can be killed: words, with `M-<DEL>' and `M-d'
-(*note Words::.); sexps, with `C-M-k' (*note Lists::.); and sentences,
-with `C-x <DEL>' and `M-k' (*note Sentences::.).
-
-\1f
-File: xemacs.info, Node: Yanking, Next: Using X Selections, Prev: Killing, Up: Top
-
-Yanking
-=======
-
- "Yanking" means getting back text which was killed. Some systems
-call this "pasting". The usual way to move or copy text is to kill it
-and then yank it one or more times.
-
-`C-y'
- Yank last killed text (`yank').
-
-`M-y'
- Replace re-inserted killed text with the previously killed text
- (`yank-pop').
-
-`M-w'
- Save region as last killed text without actually killing it
- (`copy-region-as-kill').
-
-`C-M-w'
- Append next kill to last batch of killed text (`append-next-kill').
-
-* Menu:
-
-* Kill Ring:: Where killed text is stored. Basic yanking.
-* Appending Kills:: Several kills in a row all yank together.
-* Earlier Kills:: Yanking something killed some time ago.
-
-\1f
-File: xemacs.info, Node: Kill Ring, Next: Appending Kills, Prev: Yanking, Up: Yanking
-
-The Kill Ring
--------------
-
- All killed text is recorded in the "kill ring", a list of blocks of
-text that have been killed. There is only one kill ring, used in all
-buffers, so you can kill text in one buffer and yank it in another
-buffer. This is the usual way to move text from one file to another.
-(*Note Accumulating Text::, for some other ways.)
-
- If you have two separate Emacs processes, you cannot use the kill
-ring to move text. If you are using XEmacs under X, however, you can
-use the X selection mechanism to move text from one to another.
-
- If you are using XEmacs under X and have one Emacs process with
-multiple frames, they do share the same kill ring. You can kill or
-copy text in one Emacs frame, then yank it in the other frame belonging
-to the same process.
-
- The command `C-y' (`yank') reinserts the text of the most recent
-kill. It leaves the cursor at the end of the text and sets the mark at
-the beginning of the text. *Note Mark::.
-
- `C-u C-y' yanks the text, leaves the cursor in front of the text,
-and sets the mark after it, if the argument is with just a `C-u'. Any
-other argument, including `C-u' and digits, has different results,
-described below, under "Yanking Earlier Kills".
-
- To copy a block of text, you can also use `M-w'
-(`copy-region-as-kill'), which copies the region into the kill ring
-without removing it from the buffer. `M-w' is similar to `C-w' followed
-by `C-y' but does not mark the buffer as "modified" and does not
-actually cut anything.