diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/xemacs/mark.texi	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,240 @@
+
+@node Mark, Mouse Selection, Help, Top
+@chapter Selecting Text
+@cindex mark
+@cindex region
+
+  Many Emacs commands operate on an arbitrary contiguous
+part of the current buffer. You can select text in two ways:
+
+@itemize @bullet
+@item
+You use special keys to select text by defining a region between point
+and the mark. 
+@item
+If you are running XEmacs under X, you can also select text
+with the mouse. 
+@end itemize
+
+@section The Mark and the Region
+ To specify the text for a command to operate on, set @dfn{the
+mark} at one end of it, and move point to the other end.  The text
+between point and the mark is called @dfn{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 @kbd{C-y} (@code{yank}) and
+@kbd{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 @code{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.
+@end menu
+
+@node Setting Mark, Using Region, Mark, Mark
+@subsection Setting the Mark
+
+  Here are some commands for setting the mark:
+
+@c WideCommands
+@table @kbd
+@item C-@key{SPC}
+Set the mark where point is (@code{set-mark-command}).
+@item C-@@
+The same.
+@item C-x C-x
+Interchange mark and point (@code{exchange-point-and-mark}).
+@item C-<
+Pushes a mark at the beginning of the buffer.
+@item C->
+Pushes a mark at the end of the buffer.
+@end table
+
+  For example, to convert part of the buffer to all
+upper-case, you can use the @kbd{C-x C-u} (@code{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 @kbd{C-@key{SPC}} to
+put the mark there, then move to the end, and then type @kbd{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 @kbd{C-x C-u}.  Most commands
+that operate on the text in the region have the word @code{region} in
+their names.
+
+@kindex C-SPC
+@findex set-mark-command
+  The most common way to set the mark is with the @kbd{C-@key{SPC}}
+command (@code{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 @kbd{C-@key{SPC}}; there is
+no such character.  When you type @key{SPC} while holding down
+@key{CTRL}, you get the character @kbd{C-@@} on most terminals. This
+character is actually bound to @code{set-mark-command}.  But unless you are
+unlucky enough to have a terminal where typing @kbd{C-@key{SPC}} does
+not produce @kbd{C-@@}, you should think of this character as
+@kbd{C-@key{SPC}}.
+
+@kindex C-x C-x
+@findex exchange-point-and-mark
+  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 @kbd{C-x C-x} (@code{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. 
+
+@kindex C-<
+@kindex C->
+@findex mark-beginning-of-buffer
+@findex mark-end-of-buffer
+ 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 @kbd{C-<} (@code{mark-beginning-of-buffer}), the mark is pushed
+@var{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 @kbd{C->}
+(@code{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
+@var{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 @code{zmacs-regions} to @code{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.  @xref{Active Regions} for more information.
+ 
+  @kbd{C-x C-x} is also useful when you are satisfied with the location of
+point but want to move the mark; do @kbd{C-x C-x} to put point there and
+then you can move it.  A second use of @kbd{C-x C-x}, if necessary, puts
+the mark at the new location with point back at its original location.
+
+@node Using Region, Marking Objects, Setting Mark, Mark
+@subsection Operating on the Region
+
+  Once you have created an active region, you can do many things to
+the text in it:
+@itemize @bullet
+@item
+Kill it with @kbd{C-w} (@pxref{Killing}).
+@item
+Save it in a register with @kbd{C-x r s} (@pxref{Registers}).
+@item
+Save it in a buffer or a file (@pxref{Accumulating Text}).
+@item
+Convert case with @kbd{C-x C-l} or @kbd{C-x C-u} @*(@pxref{Case}).
+@item
+Evaluate it as Lisp code with @kbd{M-x eval-region} (@pxref{Lisp Eval}).
+@item
+Fill it as text with @kbd{M-g} (@pxref{Filling}).
+@item
+Print hardcopy with @kbd{M-x print-region} (@pxref{Hardcopy}).
+@item
+Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\} (@pxref{Indentation}).
+@end itemize
+
+@node Marking Objects, Mark Ring, Using Region, Mark
+@subsection 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.
+ 
+@table @kbd
+@item M-@@
+Set mark after end of next word (@code{mark-word}).  This command and
+the following one do not move point.
+@item C-M-@@
+Set mark after end of next Lisp expression (@code{mark-sexp}).
+@item M-h
+Put region around current paragraph (@code{mark-paragraph}).
+@item C-M-h
+Put region around current Lisp defun (@code{mark-defun}).
+@item C-x h
+Put region around entire buffer (@code{mark-whole-buffer}).
+@item C-x C-p
+Put region around current page (@code{mark-page}).
+@end table
+
+@kindex M-@@
+@kindex C-M-@@
+@findex mark-word
+@findex mark-sexp
+@kbd{M-@@} (@code{mark-word}) puts the mark at the end of the next word,
+while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next Lisp
+expression. These characters sometimes save you some typing.
+
+@kindex M-h
+@kindex C-M-h
+@kindex C-x C-p
+@kindex C-x h
+@findex mark-paragraph
+@findex mark-defun
+@findex mark-page
+@findex mark-whole-buffer
+   A number of commands are available that set both point and mark and
+thus delimit an object in the buffer.  @kbd{M-h} (@code{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
+(@pxref{Paragraphs}).  You can then indent, case-convert, or kill the
+whole paragraph.  In the same fashion, @kbd{C-M-h} (@code{mark-defun})
+puts point before and the mark after the current or following defun
+(@pxref{Defuns}).  @kbd{C-x C-p} (@code{mark-page}) puts point before
+the current page (or the next or previous, depending on the argument),
+and mark at the end (@pxref{Pages}).  The mark goes after the
+terminating page delimiter (to include it), while point goes after the
+preceding page delimiter (to exclude it).  Finally, @kbd{C-x h}
+(@code{mark-whole-buffer}) sets up the entire buffer as the region by
+putting point at the beginning and the mark at the end.
+
+@node Mark Ring,, Marking Objects, Mark
+@subsection The Mark Ring
+
+@kindex C-u C-SPC
+@cindex mark ring
+@kindex C-u C-@@
+  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
+@dfn{mark ring}.  Most commands that set the mark push the old mark onto
+this ring.  To return to a marked location, use @kbd{C-u C-@key{SPC}}
+(or @kbd{C-u C-@@}); this is the command @code{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, @kbd{C-u C-@key{SPC}} always stays in
+the same buffer.
+
+  Many commands that can move long distances, such as @kbd{M-<}
+(@code{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, @samp{Mark Set} is printed in the
+echo area.
+
+@vindex mark-ring-max
+  The variable @code{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 @kbd{C-u
+C-@key{SPC}} circulates through the entries that are currently in the
+ring.
+
+@vindex mark-ring
+  The variable @code{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.