X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fmarker.c;h=5ed6c4d7a0535c978d6c7b565ed8b4566a2e2ec9;hb=02276b8e7e7b7e647493d52f77beb00d64951836;hp=88ef60b9762b11aacd6310e32af1463adf94f593;hpb=669565bfdc5d704dfb1d5ac1a0ec01fb3615a1ae;p=chise%2Fxemacs-chise.git- diff --git a/src/marker.c b/src/marker.c index 88ef60b..5ed6c4d 100644 --- a/src/marker.c +++ b/src/marker.c @@ -75,16 +75,15 @@ print_marker (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) } static int -marker_equal (Lisp_Object o1, Lisp_Object o2, int depth) +marker_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) { - struct buffer *b1 = XMARKER (o1)->buffer; - if (b1 != XMARKER (o2)->buffer) - return (0); - else if (!b1) - /* All markers pointing nowhere are equal */ - return (1); - else - return ((XMARKER (o1)->memind == XMARKER (o2)->memind)); + struct Lisp_Marker *marker1 = XMARKER (obj1); + struct Lisp_Marker *marker2 = XMARKER (obj2); + + return ((marker1->buffer == marker2->buffer) && + (marker1->memind == marker2->memind || + /* All markers pointing nowhere are equal */ + !marker1->buffer)); } static unsigned long @@ -96,9 +95,14 @@ marker_hash (Lisp_Object obj, int depth) return hash; } +static const struct lrecord_description marker_description[] = { + { XD_LISP_OBJECT, offsetof(struct Lisp_Marker, next), 3 }, + { XD_END } +}; + DEFINE_BASIC_LRECORD_IMPLEMENTATION ("marker", marker, mark_marker, print_marker, 0, - marker_equal, marker_hash, + marker_equal, marker_hash, marker_description, struct Lisp_Marker); /* Operations on markers. */ @@ -180,7 +184,7 @@ set_marker_internal (Lisp_Object marker, Lisp_Object pos, Lisp_Object buffer, (MARKERP (pos) && !XMARKER (pos)->buffer)) { if (point_p) - signal_simple_error ("can't make point-marker point nowhere", + signal_simple_error ("Can't make point-marker point nowhere", marker); if (XMARKER (marker)->buffer) unchain_marker (marker); @@ -199,7 +203,7 @@ set_marker_internal (Lisp_Object marker, Lisp_Object pos, Lisp_Object buffer, { if (point_p) signal_simple_error - ("can't move point-marker in a killed buffer", marker); + ("Can't move point-marker in a killed buffer", marker); if (XMARKER (marker)->buffer) unchain_marker (marker); return marker; @@ -237,7 +241,7 @@ set_marker_internal (Lisp_Object marker, Lisp_Object pos, Lisp_Object buffer, if (m->buffer != b) { if (point_p) - signal_simple_error ("can't change buffer of point-marker", marker); + signal_simple_error ("Can't change buffer of point-marker", marker); if (m->buffer != 0) unchain_marker (marker); m->buffer = b;