annotate lispref/markers.texi @ 53059:0aa1869956b7

*** empty log message ***
author Thien-Thi Nguyen <ttn@gnuvola.org>
date Fri, 14 Nov 2003 16:23:12 +0000
parents 8383c6d510e2
children b0b3d8b864b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
27189
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 27187
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46339
diff changeset
4 @c Free Software Foundation, Inc.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @c See the file elisp.texi for copying conditions.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @setfilename ../info/markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 @node Markers, Text, Positions, Top
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @chapter Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @cindex markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 A @dfn{marker} is a Lisp object used to specify a position in a buffer
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 relative to the surrounding text. A marker changes its offset from the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 beginning of the buffer automatically whenever text is inserted or
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 deleted, so that it stays with the two characters on either side of it.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 @menu
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 * Overview of Markers:: The components of a marker, and how it relocates.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 * Predicates on Markers:: Testing whether an object is a marker.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 * Creating Markers:: Making empty markers or markers at certain places.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 * Information from Markers:: Finding the marker's buffer or character position.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
21 * Marker Insertion Types:: Two ways a marker can relocate when you
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
22 insert where it points.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
23 * Moving Markers:: Moving the marker to a new buffer or position.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 * The Mark:: How ``the mark'' is implemented with a marker.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 * The Region:: How to access ``the region''.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 @end menu
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 @node Overview of Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 @section Overview of Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 A marker specifies a buffer and a position in that buffer. The marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 can be used to represent a position in the functions that require one,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 just as an integer could be used. @xref{Positions}, for a complete
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 description of positions.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 A marker has two attributes: the marker position, and the marker
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
37 buffer. The marker position is an integer that is equivalent (at a
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 given time) to the marker as a position in that buffer. But the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 marker's position value can change often during the life of the marker.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 Insertion and deletion of text in the buffer relocate the marker. The
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 idea is that a marker positioned between two characters remains between
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 those two characters despite insertion and deletion elsewhere in the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 buffer. Relocation changes the integer equivalent of the marker.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 @cindex marker relocation
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 Deleting text around a marker's position leaves the marker between the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 characters immediately before and after the deleted text. Inserting
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
48 text at the position of a marker normally leaves the marker either in
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
49 front of or after the new text, depending on the marker's @dfn{insertion
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
50 type} (@pxref{Marker Insertion Types})---unless the insertion is done
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
51 with @code{insert-before-markers} (@pxref{Insertion}).
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 @cindex marker garbage collection
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 Insertion and deletion in a buffer must check all the markers and
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 relocate them if necessary. This slows processing in a buffer with a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 large number of markers. For this reason, it is a good idea to make a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 marker point nowhere if you are sure you don't need it any more.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 Unreferenced markers are garbage collected eventually, but until then
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 will continue to use time if they do point somewhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 @cindex markers as numbers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 Because it is common to perform arithmetic operations on a marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 position, most of the arithmetic operations (including @code{+} and
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 @code{-}) accept markers as arguments. In such cases, the marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 stands for its current position.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 Here are examples of creating markers, setting markers, and moving point
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 to markers:
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; @r{Make a new marker that initially does not point anywhere:}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 (setq m1 (make-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 @result{} #<marker in no buffer>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;; @r{Set @code{m1} to point between the 99th and 100th characters}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;; @r{in the current buffer:}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 (set-marker m1 100)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 @result{} #<marker at 100 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;; @r{Now insert one character at the beginning of the buffer:}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 (goto-char (point-min))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 @result{} 1
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 (insert "Q")
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; @r{@code{m1} is updated appropriately.}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 m1
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 @result{} #<marker at 101 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 ;; @r{Two markers that point to the same position}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;; @r{are not @code{eq}, but they are @code{equal}.}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 (setq m2 (copy-marker m1))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 @result{} #<marker at 101 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 (eq m1 m2)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 (equal m1 m2)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 @result{} t
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 ;; @r{When you are finished using a marker, make it point nowhere.}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 (set-marker m1 nil)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 @result{} #<marker in no buffer>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 @node Predicates on Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 @section Predicates on Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 You can test an object to see whether it is a marker, or whether it is
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 either an integer or a marker. The latter test is useful in connection
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 with the arithmetic functions that work with both markers and integers.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 @defun markerp object
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 This function returns @code{t} if @var{object} is a marker, @code{nil}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 otherwise. Note that integers are not markers, even though many
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 functions will accept either a marker or an integer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 @defun integer-or-marker-p object
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 This function returns @code{t} if @var{object} is an integer or a marker,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 @code{nil} otherwise.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 @defun number-or-marker-p object
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
135 This function returns @code{t} if @var{object} is a number (either
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
136 integer or floating point) or a marker, @code{nil} otherwise.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 @node Creating Markers
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
140 @section Functions that Create Markers
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 When you create a new marker, you can make it point nowhere, or point
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 to the present position of point, or to the beginning or end of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 accessible portion of the buffer, or to the same place as another given
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 marker.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
53036
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
147 The next four functions all return markers with insertion type
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
148 @code{nil}. @xref{Marker Insertion Types}.
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
149
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 @defun make-marker
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
151 This function returns a newly created marker that does not point
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 anywhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 (make-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 @result{} #<marker in no buffer>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 @defun point-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 This function returns a new marker that points to the present position
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 of point in the current buffer. @xref{Point}. For an example, see
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 @code{copy-marker}, below.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 @defun point-min-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 This function returns a new marker that points to the beginning of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 accessible portion of the buffer. This will be the beginning of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 buffer unless narrowing is in effect. @xref{Narrowing}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 @defun point-max-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 @cindex end of buffer marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 This function returns a new marker that points to the end of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 accessible portion of the buffer. This will be the end of the buffer
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 unless narrowing is in effect. @xref{Narrowing}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 Here are examples of this function and @code{point-min-marker}, shown in
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 a buffer containing a version of the source file for the text of this
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 chapter.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 (point-min-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 @result{} #<marker at 1 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 (point-max-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @result{} #<marker at 15573 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (narrow-to-region 100 200)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 (point-min-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 @result{} #<marker at 100 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (point-max-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 @result{} #<marker at 200 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206
53036
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
207 @defun copy-marker marker-or-integer &optional insertion-type
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 If passed a marker as its argument, @code{copy-marker} returns a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 new marker that points to the same place and the same buffer as does
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 @var{marker-or-integer}. If passed an integer as its argument,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 @code{copy-marker} returns a new marker that points to position
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 @var{marker-or-integer} in the current buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
214 The new marker's insertion type is specified by the argument
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
215 @var{insertion-type}. @xref{Marker Insertion Types}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
216
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 If passed an integer argument less than 1, @code{copy-marker} returns a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 new marker that points to the beginning of the current buffer. If
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 passed an integer argument greater than the length of the buffer,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 @code{copy-marker} returns a new marker that points to the end of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
223 @example
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
224 @group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
225 (copy-marker 0)
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
226 @result{} #<marker at 1 in markers.texi>
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
227 @end group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
228
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
229 @group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
230 (copy-marker 20000)
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
231 @result{} #<marker at 7572 in markers.texi>
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
232 @end group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
233 @end example
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
234
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 An error is signaled if @var{marker} is neither a marker nor an
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 integer.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
237 @end defun
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
238
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
239 Two distinct markers are considered @code{equal} (even though not
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
240 @code{eq}) to each other if they have the same position and buffer, or
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
241 if they both point nowhere.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (setq p (point-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 @result{} #<marker at 2139 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 (setq q (copy-marker p))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 @result{} #<marker at 2139 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (eq p q)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 (equal p q)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 @result{} t
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 @node Information from Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 @section Information from Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 This section describes the functions for accessing the components of a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 marker object.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 @defun marker-position marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 This function returns the position that @var{marker} points to, or
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 @code{nil} if it points nowhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 @defun marker-buffer marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 This function returns the buffer that @var{marker} points into, or
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 @code{nil} if it points nowhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (setq m (make-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 @result{} #<marker in no buffer>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 (marker-position m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 (marker-buffer m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (set-marker m 3770 (current-buffer))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 @result{} #<marker at 3770 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (marker-buffer m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 @result{} #<buffer markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (marker-position m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 @result{} 3770
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
26181
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
309 @defun buffer-has-markers-at position
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
310 @tindex buffer-has-markers-at
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
311 This function returns @code{t} if one or more markers
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
312 point at position @var{position} in the current buffer.
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
313 @end defun
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
314
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
315 @node Marker Insertion Types
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
316 @section Marker Insertion Types
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
317
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
318 @cindex insertion type of a marker
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
319 When you insert text directly at the place where a marker points,
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
320 there are two possible ways to relocate that marker: it can point before
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
321 the inserted text, or point after it. You can specify which one a given
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
322 marker should do by setting its @dfn{insertion type}. Note that use of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
323 @code{insert-before-markers} ignores markers' insertion types, always
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
324 relocating a marker to point after the inserted text.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
325
53036
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
326 Most functions that create markers, without explicitly specifying an
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
327 insertion type, create them with insertion type @code{nil}. Also, the
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
328 mark has, by default, insertion type @code{nil}.
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
329
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
330 @defun set-marker-insertion-type marker type
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
331 This function sets the insertion type of marker @var{marker} to
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
332 @var{type}. If @var{type} is @code{t}, @var{marker} will advance when
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
333 text is inserted at its position. If @var{type} is @code{nil},
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
334 @var{marker} does not advance when text is inserted there.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
335 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
336
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
337 @defun marker-insertion-type marker
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
338 This function reports the current insertion type of @var{marker}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
339 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
340
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
341 @node Moving Markers
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
342 @section Moving Marker Positions
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 This section describes how to change the position of an existing
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 marker. When you do this, be sure you know whether the marker is used
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 outside of your program, and, if so, what effects will result from
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 moving it---otherwise, confusing things may happen in other parts of
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 Emacs.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 @defun set-marker marker position &optional buffer
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 This function moves @var{marker} to @var{position}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 in @var{buffer}. If @var{buffer} is not provided, it defaults to
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 the current buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 If @var{position} is less than 1, @code{set-marker} moves @var{marker}
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
356 to the beginning of the buffer. If @var{position} is greater than the
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
357 size of the buffer, @code{set-marker} moves marker to the end of the
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
358 buffer. If @var{position} is @code{nil} or a marker that points
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
359 nowhere, then @var{marker} is set to point nowhere.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 The value returned is @var{marker}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (setq m (point-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 @result{} #<marker at 4714 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 (set-marker m 55)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 @result{} #<marker at 55 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (setq b (get-buffer "foo"))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 @result{} #<buffer foo>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 (set-marker m 0 b)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 @result{} #<marker at 1 in foo>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 @defun move-marker marker position &optional buffer
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 This is another name for @code{set-marker}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 @node The Mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 @section The Mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 @cindex mark, the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 @cindex mark ring
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 One special marker in each buffer is designated @dfn{the mark}. It
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 records a position for the user for the sake of commands such as
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
394 @code{kill-region} and @code{indent-rigidly}. Lisp programs should set
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
395 the mark only to values that have a potential use to the user, and never
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
396 for their own internal purposes. For example, the @code{replace-regexp}
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 command sets the mark to the value of point before doing any
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 replacements, because this enables the user to move back there
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 conveniently after the replace is finished.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 Many commands are designed so that when called interactively they
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 operate on the text between point and the mark. If you are writing such
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 a command, don't examine the mark directly; instead, use
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 @code{interactive} with the @samp{r} specification. This provides the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 values of point and the mark as arguments to the command in an
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 interactive call, but permits other Lisp programs to specify arguments
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 explicitly. @xref{Interactive Codes}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 Each buffer has its own value of the mark that is independent of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 value of the mark in other buffers. When a buffer is created, the mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 exists but does not point anywhere. We consider this state as ``the
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
412 absence of a mark in that buffer.''
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 Once the mark ``exists'' in a buffer, it normally never ceases to
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 exist. However, it may become @dfn{inactive}, if Transient Mark mode is
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
416 enabled. The variable @code{mark-active}, which is always buffer-local
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
417 in all buffers, indicates whether the mark is active: non-@code{nil}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
418 means yes. A command can request deactivation of the mark upon return
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
419 to the editor command loop by setting @code{deactivate-mark} to a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
420 non-@code{nil} value (but this causes deactivation only if Transient
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
421 Mark mode is enabled).
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 The main motivation for using Transient Mark mode is that this mode
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 also enables highlighting of the region when the mark is active.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 @xref{Display}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 In addition to the mark, each buffer has a @dfn{mark ring} which is a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 list of markers containing previous values of the mark. When editing
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 commands change the mark, they should normally save the old value of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 mark on the mark ring. The variable @code{mark-ring-max} specifies the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 maximum number of entries in the mark ring; once the list becomes this
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 long, adding a new element deletes the last element.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433
26181
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
434 There is also a separate global mark ring, but that is used only in a
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
435 few particular user-level commands, and is not relevant to Lisp
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
436 programming. So we do not describe it here.
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
437
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 @defun mark &optional force
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 @cindex current buffer mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 This function returns the current buffer's mark position as an integer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441
53036
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
442 If Transient Mark mode is enabled, @code{mark-even-if-inactive} is
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
443 @code{nil} and and the mark is inactive, @code{mark} normally signals
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
444 an error. However, if @var{force} is non-@code{nil}, then @code{mark}
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
445 returns the mark position anyway---or @code{nil}, if the mark is not
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
446 yet set for this buffer.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 @defun mark-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 This function returns the current buffer's mark. This is the very marker
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
451 that records the mark location inside Emacs, not a copy. Therefore,
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 changing this marker's position will directly affect the position of the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 Don't do it unless that is the effect you want.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (setq m (mark-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 @result{} #<marker at 3420 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (set-marker m 100)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 @result{} #<marker at 100 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (mark-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 @result{} #<marker at 100 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 Like any marker, this marker can be set to point at any buffer you like.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 We don't recommend that you make it point at any buffer other than the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 one of which it is the mark. If you do, it will yield perfectly
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 consistent, but rather odd, results.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 @ignore
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 @deffn Command set-mark-command jump
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 If @var{jump} is @code{nil}, this command sets the mark to the value
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 of point and pushes the previous value of the mark on the mark ring. The
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 message @samp{Mark set} is also displayed in the echo area.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 If @var{jump} is not @code{nil}, this command sets point to the value
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 of the mark, and sets the mark to the previous saved mark value, which
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 is popped off the mark ring.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 This function is @emph{only} intended for interactive use.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 @end deffn
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 @end ignore
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 @defun set-mark position
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 This function sets the mark to @var{position}, and activates the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 The old value of the mark is @emph{not} pushed onto the mark ring.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493
7734
2d4db32cccd5 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7729
diff changeset
494 @strong{Please note:} Use this function only if you want the user to
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 see that the mark has moved, and you want the previous mark position to
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 be lost. Normally, when a new mark is set, the old one should go on the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 @code{mark-ring}. For this reason, most applications should use
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 @code{push-mark} and @code{pop-mark}, not @code{set-mark}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 Novice Emacs Lisp programmers often try to use the mark for the wrong
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 purposes. The mark saves a location for the user's convenience. An
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 editing command should not alter the mark unless altering the mark is
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 part of the user-level functionality of the command. (And, in that
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 case, this effect should be documented.) To remember a location for
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 internal use in the Lisp program, store it in a Lisp variable. For
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 example:
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 (let ((beg (point)))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 (forward-line 1)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (delete-region beg (point))).
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 @c for interactive use only
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 @ignore
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 @deffn Command exchange-point-and-mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 This function exchanges the positions of point and the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 It is intended for interactive use.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 @end deffn
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 @end ignore
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 @defun push-mark &optional position nomsg activate
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 This function sets the current buffer's mark to @var{position}, and
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 pushes a copy of the previous mark onto @code{mark-ring}. If
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 @var{position} is @code{nil}, then the value of point is used.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 @code{push-mark} returns @code{nil}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 The function @code{push-mark} normally @emph{does not} activate the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 mark. To do that, specify @code{t} for the argument @var{activate}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 A @samp{Mark set} message is displayed unless @var{nomsg} is
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 non-@code{nil}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 @defun pop-mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 This function pops off the top element of @code{mark-ring} and makes
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 that mark become the buffer's actual mark. This does not move point in
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 the buffer, and it does nothing if @code{mark-ring} is empty. It
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 deactivates the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 The return value is not meaningful.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 @defopt transient-mark-mode
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 @cindex Transient Mark mode
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
549 This variable if non-@code{nil} enables Transient Mark mode, in which
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
550 every buffer-modifying primitive sets @code{deactivate-mark}. The
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
551 consequence of this is that commands that modify the buffer normally
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
552 make the mark inactive.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 @end defopt
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
555 @defopt mark-even-if-inactive
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
556 If this is non-@code{nil}, Lisp programs and the Emacs user can use the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
557 mark even when it is inactive. This option affects the behavior of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
558 Transient Mark mode. When the option is non-@code{nil}, deactivation of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
559 the mark turns off region highlighting, but commands that use the mark
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
560 behave as if the mark were still active.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
561 @end defopt
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
562
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 @defvar deactivate-mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 If an editor command sets this variable non-@code{nil}, then the editor
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
565 command loop deactivates the mark after the command returns (if
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
566 Transient Mark mode is enabled). All the primitives that change the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
567 buffer set @code{deactivate-mark}, to deactivate the mark when the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
568 command is finished.
46339
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
569
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
570 To write Lisp code that modifies the buffer without causing
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
571 deactivation of the mark at the end of the command, bind
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
572 @code{deactivate-mark} to @code{nil} around the code that does the
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
573 modification. For example:
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
574
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
575 @example
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
576 (let (deactivate-mark)
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
577 (insert " "))
469cf4d8b62b Document binding `deactivate-mark' around something that modifies the
Richard M. Stallman <rms@gnu.org>
parents: 27189
diff changeset
578 @end example
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
581 @defun deactivate-mark
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
582 This function deactivates the mark, if Transient Mark mode is enabled.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
583 Otherwise it does nothing.
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
584 @end defun
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
585
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 @defvar mark-active
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 The mark is active when this variable is non-@code{nil}. This variable
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
588 is always buffer-local in each buffer.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 @defvar activate-mark-hook
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 @defvarx deactivate-mark-hook
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 These normal hooks are run, respectively, when the mark becomes active
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
594 and when it becomes inactive. The hook @code{activate-mark-hook} is
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
595 also run at the end of a command if the mark is active and it is
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
596 possible that the region may have changed.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 @defvar mark-ring
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 The value of this buffer-local variable is the list of saved former
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 marks of the current buffer, most recent first.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 mark-ring
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46339
diff changeset
606 @result{} (#<marker at 11050 in markers.texi>
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 #<marker at 10832 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 @dots{})
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 @defopt mark-ring-max
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 The value of this variable is the maximum size of @code{mark-ring}. If
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 more marks than this are pushed onto the @code{mark-ring},
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 @code{push-mark} discards an old mark when it adds a new one.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 @end defopt
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 @node The Region
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 @section The Region
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 @cindex region, the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 The text between point and the mark is known as @dfn{the region}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 Various functions operate on text delimited by point and the mark, but
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 only those functions specifically related to the region itself are
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 described here.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627
53036
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
628 The next two functions signal an error if the mark does not point
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
629 anywhere. If Transient Mark mode is enabled and
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
630 @code{mark-even-if-inactive} is @code{nil}, they also signal an error
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
631 if the mark is inactive.
8383c6d510e2 (Creating Markers): Specify insertion type of created markers. Add
Luc Teirlinck <teirllm@auburn.edu>
parents: 52401
diff changeset
632
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 @defun region-beginning
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 This function returns the position of the beginning of the region (as
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 an integer). This is the position of either point or the mark,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 whichever is smaller.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 @defun region-end
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 This function returns the position of the end of the region (as an
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 integer). This is the position of either point or the mark, whichever is
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 larger.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 Few programs need to use the @code{region-beginning} and
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 @code{region-end} functions. A command designed to operate on a region
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 should normally use @code{interactive} with the @samp{r} specification
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 to find the beginning and end of the region. This lets other Lisp
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 programs specify the bounds explicitly as arguments. (@xref{Interactive
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 Codes}.)
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
651
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
652 @ignore
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
653 arch-tag: b1ba2e7a-a0f3-4c5e-875c-7d8e22d73299
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
654 @end ignore