Mercurial > hg > xemacs-beta
comparison src/marker.c @ 380:8626e4521993 r21-2-5
Import from CVS: tag r21-2-5
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:07:10 +0200 |
parents | 6240c7796c7a |
children | 74fd4e045ea6 |
comparison
equal
deleted
inserted
replaced
379:76b7d63099ad | 380:8626e4521993 |
---|---|
73 sprintf (buf, " 0x%lx>", (long) marker); | 73 sprintf (buf, " 0x%lx>", (long) marker); |
74 write_c_string (buf, printcharfun); | 74 write_c_string (buf, printcharfun); |
75 } | 75 } |
76 | 76 |
77 static int | 77 static int |
78 marker_equal (Lisp_Object o1, Lisp_Object o2, int depth) | 78 marker_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) |
79 { | 79 { |
80 struct buffer *b1 = XMARKER (o1)->buffer; | 80 struct Lisp_Marker *marker1 = XMARKER (obj1); |
81 if (b1 != XMARKER (o2)->buffer) | 81 struct Lisp_Marker *marker2 = XMARKER (obj2); |
82 return (0); | 82 |
83 else if (!b1) | 83 return ((marker1->buffer == marker2->buffer) && |
84 /* All markers pointing nowhere are equal */ | 84 (marker1->memind == marker2->memind || |
85 return (1); | 85 /* All markers pointing nowhere are equal */ |
86 else | 86 !marker1->buffer)); |
87 return ((XMARKER (o1)->memind == XMARKER (o2)->memind)); | |
88 } | 87 } |
89 | 88 |
90 static unsigned long | 89 static unsigned long |
91 marker_hash (Lisp_Object obj, int depth) | 90 marker_hash (Lisp_Object obj, int depth) |
92 { | 91 { |
178 make this marker point nowhere. */ | 177 make this marker point nowhere. */ |
179 if (NILP (pos) || | 178 if (NILP (pos) || |
180 (MARKERP (pos) && !XMARKER (pos)->buffer)) | 179 (MARKERP (pos) && !XMARKER (pos)->buffer)) |
181 { | 180 { |
182 if (point_p) | 181 if (point_p) |
183 signal_simple_error ("can't make point-marker point nowhere", | 182 signal_simple_error ("Can't make point-marker point nowhere", |
184 marker); | 183 marker); |
185 if (XMARKER (marker)->buffer) | 184 if (XMARKER (marker)->buffer) |
186 unchain_marker (marker); | 185 unchain_marker (marker); |
187 return marker; | 186 return marker; |
188 } | 187 } |
197 /* If buffer is dead, set marker to point nowhere. */ | 196 /* If buffer is dead, set marker to point nowhere. */ |
198 if (!BUFFER_LIVE_P (XBUFFER (buffer))) | 197 if (!BUFFER_LIVE_P (XBUFFER (buffer))) |
199 { | 198 { |
200 if (point_p) | 199 if (point_p) |
201 signal_simple_error | 200 signal_simple_error |
202 ("can't move point-marker in a killed buffer", marker); | 201 ("Can't move point-marker in a killed buffer", marker); |
203 if (XMARKER (marker)->buffer) | 202 if (XMARKER (marker)->buffer) |
204 unchain_marker (marker); | 203 unchain_marker (marker); |
205 return marker; | 204 return marker; |
206 } | 205 } |
207 } | 206 } |
235 } | 234 } |
236 | 235 |
237 if (m->buffer != b) | 236 if (m->buffer != b) |
238 { | 237 { |
239 if (point_p) | 238 if (point_p) |
240 signal_simple_error ("can't change buffer of point-marker", marker); | 239 signal_simple_error ("Can't change buffer of point-marker", marker); |
241 if (m->buffer != 0) | 240 if (m->buffer != 0) |
242 unchain_marker (marker); | 241 unchain_marker (marker); |
243 m->buffer = b; | 242 m->buffer = b; |
244 marker_next (m) = BUF_MARKERS (b); | 243 marker_next (m) = BUF_MARKERS (b); |
245 marker_prev (m) = 0; | 244 marker_prev (m) = 0; |