diff src/buffer.c @ 2791:4f234fbfb02c

* buffer.c (Fmove_overlay): If the overlay is in no buffer and the BUFFER argument has been omitted, put it in the current buffer, for symmetry with move-marker. * buffer.c (Fdelete_overlay): Make the overlay's markers point nowhere, not at 1. Do this after calling redisplay_region, so that code knows what section has changed.
author Jim Blandy <jimb@redhat.com>
date Fri, 14 May 1993 22:57:10 +0000
parents 995c6e665599
children 8c43cc245dd2
line wrap: on
line diff
--- a/src/buffer.c	Fri May 14 22:11:17 1993 +0000
+++ b/src/buffer.c	Fri May 14 22:57:10 1993 +0000
@@ -1506,7 +1506,9 @@
 
 DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0,
   "Set the endpoints of OVERLAY to BEG and END in BUFFER.\n\
-If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.")
+If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.\n\
+If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current\n\
+buffer.")
   (overlay, beg, end, buffer)
      Lisp_Object overlay, beg, end, buffer;
 {
@@ -1515,6 +1517,8 @@
   CHECK_OVERLAY (overlay, 0);
   if (NILP (buffer))
     buffer = Fmarker_buffer (OVERLAY_START (overlay));
+  if (NILP (buffer))
+    XSET (buffer, Lisp_Buffer, current_buffer);
   CHECK_BUFFER (buffer, 3);
   CHECK_NUMBER_COERCE_MARKER (beg, 1);
   CHECK_NUMBER_COERCE_MARKER (end, 1);
@@ -1581,13 +1585,13 @@
   b->overlays_before = Fdelq (overlay, b->overlays_before);
   b->overlays_after  = Fdelq (overlay, b->overlays_after);
 
-  Fset_marker (OVERLAY_START (overlay), 1, Qnil);
-  Fset_marker (OVERLAY_END   (overlay), 1, Qnil);
-
   redisplay_region (b,
 		    OVERLAY_POSITION (OVERLAY_START (overlay)),
 		    OVERLAY_POSITION (OVERLAY_END   (overlay)));
 
+  Fset_marker (OVERLAY_START (overlay), Qnil, Qnil);
+  Fset_marker (OVERLAY_END   (overlay), Qnil, Qnil);
+
   return Qnil;
 }