changeset 98752:1d0213f6230f

(The Mark): Document the `lambda' and `(only . OLD)' values of transient-mark-mode. Document handle-shift-selection.
author Eli Zaretskii <eliz@gnu.org>
date Wed, 15 Oct 2008 16:48:06 +0000
parents a0e705c1e7f7
children d01b4fcceb54
files doc/lispref/markers.texi
diffstat 1 files changed, 23 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/doc/lispref/markers.texi	Wed Oct 15 16:47:35 2008 +0000
+++ b/doc/lispref/markers.texi	Wed Oct 15 16:48:06 2008 +0000
@@ -555,11 +555,15 @@
 consequence of this is that commands that modify the buffer normally
 make the mark inactive.
 
-Lisp programs can set @code{transient-mark-mode} to @code{only} to
-enable Transient Mark mode for the following command only.  During
-that following command, the value of @code{transient-mark-mode} is
-@code{identity}.  If it is still @code{identity} at the end of the
-command, it changes to @code{nil}.
+Lisp programs can set @code{transient-mark-mode} to non-@code{nil},
+non-@code{t} values to enable Transient Mark mode temporarily.  If the
+value is @code{lambda}, Transient Mark Mode is automatically turned
+off after any action, such as buffer modification, that would normally
+deactivate the mark.  If the value is @w{@code{(only . @var{oldval})}},
+then @code{transient-mark-mode} is set to the value @var{oldval} after
+any subsequent command that moves point and is not shift-translated
+(@pxref{Key Sequence Input, shift-translation}), or after any other
+action that would normally deactivate the mark.
 @end defopt
 
 @defopt mark-even-if-inactive
@@ -626,6 +630,20 @@
 @code{push-mark} discards an old mark when it adds a new one.
 @end defopt
 
+@defun handle-shift-selection &optional deactivate
+This function checks whether the current command was invoked via shift
+translation (@pxref{Key Sequence Input, shift-translation}), and if
+so, sets the mark and temporarily activates the region, unless the
+region is already temporarily activated in this way.  If the command
+was invoked without shift translation, or if the optional argument
+@var{deactivate} is non-nil, the function deactivates the mark.  This
+function is called whenever a command with a @samp{^} character in its
+@code{interactive} spec (@pxref{Interactive Codes, ^}) is invoked
+while @code{shift-select-mode} (@pxref{Shift Selection,,, emacs, The
+GNU Emacs Manual}) is non-@code{nil}.
+
+@end defun
+
 @node The Region
 @section The Region
 @cindex region (between point and mark)