@c -*-texinfo-*-
@c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
-@c Free Software Foundation, Inc.
+@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2002, 2003,
+@c 2004, 2005 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/markers
@node Markers, Text, Positions, Top
@cindex mark ring
One special marker in each buffer is designated @dfn{the mark}. It
-records a position for the user for the sake of commands such as
-@code{kill-region} and @code{indent-rigidly}. Lisp programs should set
-the mark only to values that have a potential use to the user, and never
-for their own internal purposes. For example, the @code{replace-regexp}
-command sets the mark to the value of point before doing any
-replacements, because this enables the user to move back there
-conveniently after the replace is finished.
-
- Many commands are designed so that when called interactively they
-operate on the text between point and the mark. If you are writing such
-a command, don't examine the mark directly; instead, use
+specifies a position to bound a range of text for commands such as
+@code{kill-region} and @code{indent-rigidly}. Lisp programs should
+set the mark only to values that have a potential use to the user, and
+never for their own internal purposes. For example, the
+@code{replace-regexp} command sets the mark to the value of point
+before doing any replacements, because this enables the user to move
+back there conveniently after the replace is finished.
+
+ Many commands are designed to operate on the text between point and
+the mark when called interactively. If you are writing such a
+command, don't examine the mark directly; instead, use
@code{interactive} with the @samp{r} specification. This provides the
values of point and the mark as arguments to the command in an
interactive call, but permits other Lisp programs to specify arguments
This function returns the current buffer's mark position as an integer.
If Transient Mark mode is enabled, @code{mark-even-if-inactive} is
-@code{nil} and and the mark is inactive, @code{mark} normally signals
+@code{nil} and the mark is inactive, @code{mark} normally signals
an error. However, if @var{force} is non-@code{nil}, then @code{mark}
returns the mark position anyway---or @code{nil}, if the mark is not
yet set for this buffer.
every buffer-modifying primitive sets @code{deactivate-mark}. The
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}.
@end defopt
@defopt mark-even-if-inactive