@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 Free Software Foundation, Inc.
@c See the file elisp.texi for copying conditions.
@setfilename ../info/markers
@node Markers, Text, Positions, Top
@node Overview of Markers
@section Overview of Markers
- A marker specifies a buffer and a position in that buffer. The marker
-can be used to represent a position in the functions that require one,
-just as an integer could be used. @xref{Positions}, for a complete
-description of positions.
+ A marker specifies a buffer and a position in that buffer. The
+marker can be used to represent a position in the functions that
+require one, just as an integer could be used. In that case, the
+marker's buffer is normally ignored. Of course, a marker used in this
+way usually points to a position in the buffer that the function
+operates on, but that is entirely the programmer's responsibility.
+@xref{Positions}, for a complete description of positions.
A marker has two attributes: the marker position, and the marker
buffer. The marker position is an integer that is equivalent (at a
accessible portion of the buffer, or to the same place as another given
marker.
+The next four functions all return markers with insertion type
+@code{nil}. @xref{Marker Insertion Types}.
+
@defun make-marker
This function returns a newly created marker that does not point
anywhere.
@end example
@end defun
-@defun copy-marker marker-or-integer insertion-type
+@defun copy-marker marker-or-integer &optional insertion-type
If passed a marker as its argument, @code{copy-marker} returns a
new marker that points to the same place and the same buffer as does
@var{marker-or-integer}. If passed an integer as its argument,
This function reports the current insertion type of @var{marker}.
@end defun
+Most functions that create markers, without an argument allowing to
+specify the insertion type, create them with insertion type
+@code{nil}. Also, the mark has, by default, insertion type
+@code{nil}.
+
@node Moving Markers
@section Moving Marker Positions
@cindex current buffer mark
This function returns the current buffer's mark position as an integer.
-If 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.
+If Transient Mark mode is enabled, @code{mark-even-if-inactive} is
+@code{nil} and 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.
@end defun
@defun mark-marker
@example
@group
mark-ring
-@result{} (#<marker at 11050 in markers.texi>
+@result{} (#<marker at 11050 in markers.texi>
#<marker at 10832 in markers.texi>
@dots{})
@end group
only those functions specifically related to the region itself are
described here.
+The next two functions signal an error if the mark does not point
+anywhere. If Transient Mark mode is enabled and
+@code{mark-even-if-inactive} is @code{nil}, they also signal an error
+if the mark is inactive.
+
@defun region-beginning
This function returns the position of the beginning of the region (as
an integer). This is the position of either point or the mark,
whichever is smaller.
-
-If the mark does not point anywhere, an error is signaled.
@end defun
@defun region-end
This function returns the position of the end of the region (as an
integer). This is the position of either point or the mark, whichever is
larger.
-
-If the mark does not point anywhere, an error is signaled.
@end defun
Few programs need to use the @code{region-beginning} and
to find the beginning and end of the region. This lets other Lisp
programs specify the bounds explicitly as arguments. (@xref{Interactive
Codes}.)
+
+@ignore
+ arch-tag: b1ba2e7a-a0f3-4c5e-875c-7d8e22d73299
+@end ignore