annotate lispref/markers.texi @ 36150:46e59561af4c

Display Vars node renamed Display Custom. Include info there about customizing cursor appearance. Clean up aggressive scrolling. Clarify horizontal scrolling discussion. Fix index entries for line number mode.
author Richard M. Stallman <rms@gnu.org>
date Sat, 17 Feb 2001 16:45:37 +0000
parents d2e5f1b7d8e2
children 469cf4d8b62b
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
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 27187
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
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 @defun make-marker
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
148 This function returns a newly created marker that does not point
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 anywhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 (make-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 @result{} #<marker in no buffer>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 @defun point-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 This function returns a new marker that points to the present position
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 of point in the current buffer. @xref{Point}. For an example, see
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 @code{copy-marker}, below.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 @defun point-min-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 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
167 accessible portion of the buffer. This will be the beginning of the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 buffer unless narrowing is in effect. @xref{Narrowing}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 @defun point-max-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 @cindex end of buffer marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 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
174 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
175 unless narrowing is in effect. @xref{Narrowing}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 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
178 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
179 chapter.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 (point-min-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 @result{} #<marker at 1 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 (point-max-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 @result{} #<marker at 15573 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (narrow-to-region 100 200)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 (point-min-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 @result{} #<marker at 100 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (point-max-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 @result{} #<marker at 200 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
204 @defun copy-marker marker-or-integer insertion-type
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 If passed a marker as its argument, @code{copy-marker} returns a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 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
207 @var{marker-or-integer}. If passed an integer as its argument,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 @code{copy-marker} returns a new marker that points to position
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 @var{marker-or-integer} in the current buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
211 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
212 @var{insertion-type}. @xref{Marker Insertion Types}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
213
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 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
215 new marker that points to the beginning of the current buffer. If
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 passed an integer argument greater than the length of the buffer,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 @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
218 buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
220 @example
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
221 @group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
222 (copy-marker 0)
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
223 @result{} #<marker at 1 in markers.texi>
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
224 @end group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
225
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
226 @group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
227 (copy-marker 20000)
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
228 @result{} #<marker at 7572 in markers.texi>
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
229 @end group
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
230 @end example
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
231
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 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
233 integer.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
234 @end defun
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
235
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
236 Two distinct markers are considered @code{equal} (even though not
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
237 @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
238 if they both point nowhere.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (setq p (point-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 @result{} #<marker at 2139 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (setq q (copy-marker p))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 @result{} #<marker at 2139 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 (eq p q)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 (equal p q)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 @result{} t
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 @node Information from Markers
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 @section Information from Markers
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 This section describes the functions for accessing the components of a
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 marker object.
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 @defun marker-position marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 This function returns the position that @var{marker} points to, or
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 @code{nil} if it points nowhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 @defun marker-buffer marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 This function returns the buffer that @var{marker} points into, or
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 @code{nil} if it points nowhere.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 (setq m (make-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 @result{} #<marker in no buffer>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 (marker-position m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (marker-buffer m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 @result{} nil
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (set-marker m 3770 (current-buffer))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 @result{} #<marker at 3770 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (marker-buffer m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 @result{} #<buffer markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (marker-position m)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 @result{} 3770
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
26181
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
306 @defun buffer-has-markers-at position
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
307 @tindex buffer-has-markers-at
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
308 This function returns @code{t} if one or more markers
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
309 point at position @var{position} in the current buffer.
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
310 @end defun
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
311
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
312 @node Marker Insertion Types
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
313 @section Marker Insertion Types
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
314
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
315 @cindex insertion type of a marker
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
316 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
317 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
318 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
319 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
320 @code{insert-before-markers} ignores markers' insertion types, always
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
321 relocating a marker to point after the inserted text.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
322
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
323 @defun set-marker-insertion-type marker type
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
324 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
325 @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
326 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
327 @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
328 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
329
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
330 @defun marker-insertion-type marker
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
331 This function reports the current insertion type of @var{marker}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
332 @end defun
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
333
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
334 @node Moving Markers
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12098
diff changeset
335 @section Moving Marker Positions
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 This section describes how to change the position of an existing
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 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
339 outside of your program, and, if so, what effects will result from
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 moving it---otherwise, confusing things may happen in other parts of
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 Emacs.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 @defun set-marker marker position &optional buffer
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 This function moves @var{marker} to @var{position}
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 in @var{buffer}. If @var{buffer} is not provided, it defaults to
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 the current buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 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
349 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
350 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
351 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
352 nowhere, then @var{marker} is set to point nowhere.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 The value returned is @var{marker}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (setq m (point-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 @result{} #<marker at 4714 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (set-marker m 55)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 @result{} #<marker at 55 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 (setq b (get-buffer "foo"))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 @result{} #<buffer foo>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 (set-marker m 0 b)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 @result{} #<marker at 1 in foo>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 @defun move-marker marker position &optional buffer
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 This is another name for @code{set-marker}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 @node The Mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 @section The Mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 @cindex mark, the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 @cindex mark ring
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 One special marker in each buffer is designated @dfn{the mark}. It
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 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
387 @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
388 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
389 for their own internal purposes. For example, the @code{replace-regexp}
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 command sets the mark to the value of point before doing any
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 replacements, because this enables the user to move back there
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 conveniently after the replace is finished.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 Many commands are designed so that when called interactively they
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 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
396 a command, don't examine the mark directly; instead, use
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 @code{interactive} with the @samp{r} specification. This provides the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 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
399 interactive call, but permits other Lisp programs to specify arguments
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 explicitly. @xref{Interactive Codes}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 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
403 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
404 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
405 absence of a mark in that buffer.''
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 Once the mark ``exists'' in a buffer, it normally never ceases to
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 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
409 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
410 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
411 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
412 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
413 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
414 Mark mode is enabled).
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 The main motivation for using Transient Mark mode is that this mode
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 also enables highlighting of the region when the mark is active.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 @xref{Display}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 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
421 list of markers containing previous values of the mark. When editing
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 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
423 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
424 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
425 long, adding a new element deletes the last element.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426
26181
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
427 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
428 few particular user-level commands, and is not relevant to Lisp
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
429 programming. So we do not describe it here.
112e1bb0423a Patch by rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25751
diff changeset
430
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 @defun mark &optional force
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 @cindex current buffer mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 This function returns the current buffer's mark position as an integer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 If the mark is inactive, @code{mark} normally signals an error.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 However, if @var{force} is non-@code{nil}, then @code{mark} returns the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 mark position anyway---or @code{nil}, if the mark is not yet set for
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 this buffer.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 @defun mark-marker
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 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
443 that records the mark location inside Emacs, not a copy. Therefore,
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 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
445 Don't do it unless that is the effect you want.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 (setq m (mark-marker))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 @result{} #<marker at 3420 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (set-marker m 100)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 @result{} #<marker at 100 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 @end group
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 (mark-marker)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 @result{} #<marker at 100 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 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 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
463 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
464 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
465 consistent, but rather odd, results.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 @ignore
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 @deffn Command set-mark-command jump
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 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
471 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
472 message @samp{Mark set} is also displayed in the echo area.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 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
475 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
476 is popped off the mark ring.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 This function is @emph{only} intended for interactive use.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 @end deffn
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 @end ignore
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 @defun set-mark position
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 This function sets the mark to @var{position}, and activates the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 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
485
7734
2d4db32cccd5 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7729
diff changeset
486 @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
487 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
488 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
489 @code{mark-ring}. For this reason, most applications should use
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 @code{push-mark} and @code{pop-mark}, not @code{set-mark}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 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
493 purposes. The mark saves a location for the user's convenience. An
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 editing command should not alter the mark unless altering the mark is
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 part of the user-level functionality of the command. (And, in that
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 case, this effect should be documented.) To remember a location for
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 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
498 example:
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 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (let ((beg (point)))
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (forward-line 1)
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (delete-region beg (point))).
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 @c for interactive use only
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 @ignore
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 @deffn Command exchange-point-and-mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 This function exchanges the positions of point and the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 It is intended for interactive use.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 @end deffn
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 @end ignore
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 @defun push-mark &optional position nomsg activate
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 This function sets the current buffer's mark to @var{position}, and
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 pushes a copy of the previous mark onto @code{mark-ring}. If
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 @var{position} is @code{nil}, then the value of point is used.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 @code{push-mark} returns @code{nil}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 The function @code{push-mark} normally @emph{does not} activate the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 mark. To do that, specify @code{t} for the argument @var{activate}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 A @samp{Mark set} message is displayed unless @var{nomsg} is
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 non-@code{nil}.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 @defun pop-mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 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
532 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
533 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
534 deactivates the mark.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 The return value is not meaningful.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 @defopt transient-mark-mode
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 @cindex Transient Mark mode
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
541 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
542 every buffer-modifying primitive sets @code{deactivate-mark}. The
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
543 consequence of this is that commands that modify the buffer normally
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7734
diff changeset
544 make the mark inactive.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 @end defopt
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
547 @defopt mark-even-if-inactive
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
548 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
549 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
550 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
551 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
552 behave as if the mark were still active.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
553 @end defopt
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
554
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 @defvar deactivate-mark
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 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
557 command loop deactivates the mark after the command returns (if
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
558 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
559 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
560 command is finished.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
563 @defun deactivate-mark
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
564 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
565 Otherwise it does nothing.
7729
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
566 @end defun
a1c07008521d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6444
diff changeset
567
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 @defvar mark-active
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 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
570 is always buffer-local in each buffer.
6444
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 @defvar activate-mark-hook
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 @defvarx deactivate-mark-hook
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 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
576 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
577 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
578 possible that the region may have changed.
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
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 @defvar mark-ring
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 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
583 marks of the current buffer, most recent first.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 @example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 @group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 mark-ring
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 @result{} (#<marker at 11050 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 #<marker at 10832 in markers.texi>
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 @dots{})
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 @end group
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 @end example
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 @end defvar
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 @defopt mark-ring-max
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 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
597 more marks than this are pushed onto the @code{mark-ring},
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 @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
599 @end defopt
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 @node The Region
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 @section The Region
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 @cindex region, the
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 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
606 Various functions operate on text delimited by point and the mark, but
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 only those functions specifically related to the region itself are
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 described here.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 @defun region-beginning
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 This function returns the position of the beginning of the region (as
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 an integer). This is the position of either point or the mark,
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 whichever is smaller.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 If the mark does not point anywhere, an error is signaled.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 @defun region-end
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 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
620 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
621 larger.
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 If the mark does not point anywhere, an error is signaled.
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 @end defun
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 Few programs need to use the @code{region-beginning} and
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 @code{region-end} functions. A command designed to operate on a region
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 should normally use @code{interactive} with the @samp{r} specification
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 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
630 programs specify the bounds explicitly as arguments. (@xref{Interactive
9cbdecc5a37d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 Codes}.)