all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Dmitry Antipov <dmantipov@yandex.ru>
Cc: emacs-devel@gnu.org
Subject: Re: [Emacs-diffs] /srv/bzr/emacs/trunk r109512: Inline functions to examine and change buffer overlays.
Date: Wed, 08 Aug 2012 11:45:16 -0400	[thread overview]
Message-ID: <jwvpq71z8xf.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <E1Sz80a-0000RM-Qp@vcs.savannah.gnu.org> (Dmitry Antipov's message of "Wed, 08 Aug 2012 18:47:11 +0400")

Can we pause for a moment?
As I mentioned to you earlier, you should post such patches for review
before installing them.
And explain why you think they're good.
E.g. replacing buffer->overlays_before by "buffer_get_overlays (buffer,
OV_BEFORE)" is far from "obviously good" in my eyes.
If you intend to make those field accesses into something more complex,
then please say so and explain why.  If not, then please stick to
"foo->bar", as agreed for the FGET case.


        Stefan


>>>>> "Dmitry" == Dmitry Antipov <dmantipov@yandex.ru> writes:

> ------------------------------------------------------------
> revno: 109512
> committer: Dmitry Antipov <dmantipov@yandex.ru>
> branch nick: trunk
> timestamp: Wed 2012-08-08 18:47:11 +0400
> message:
>   Inline functions to examine and change buffer overlays.
>   * buffer.c (unchain_both): New function.
>   * buffer.h (buffer_get_overlays, buffer_set_overlays):
>   (buffer_has_overlays): New function.
>   (enum overlay_type): New enum.
>   * alloc.c, buffer.c, editfns.c, fileio.c, indent.c:
>   * insdel.c, intervals.c, print.c, xdisp.c: Adjust users.
> modified:
>   src/ChangeLog
>   src/alloc.c
>   src/buffer.c
>   src/buffer.h
>   src/editfns.c
>   src/fileio.c
>   src/indent.c
>   src/insdel.c
>   src/intervals.c
>   src/print.c
>   src/xdisp.c

> === modified file 'src/ChangeLog'
> --- a/src/ChangeLog	2012-08-08 12:12:40 +0000
> +++ b/src/ChangeLog	2012-08-08 14:47:11 +0000
> @@ -1,5 +1,15 @@
>  2012-08-08  Dmitry Antipov  <dmantipov@yandex.ru>
 
> +	Inline functions to examine and change buffer overlays.
> +	* buffer.c (unchain_both): New function.
> +	* buffer.h (buffer_get_overlays, buffer_set_overlays):
> +	(buffer_has_overlays): New function.
> +	(enum overlay_type): New enum.
> +	* alloc.c, buffer.c, editfns.c, fileio.c, indent.c:
> +	* insdel.c, intervals.c, print.c, xdisp.c: Adjust users.
> +
> +2012-08-08  Dmitry Antipov  <dmantipov@yandex.ru>
> +
>  	Inline functions to examine and change buffer intervals.
>  	* alloc.c (mark_interval_tree): Remove.
>  	(MARK_INTERVAL_TREE): Simplify.

> === modified file 'src/alloc.c'
> --- a/src/alloc.c	2012-08-08 12:12:40 +0000
> +++ b/src/alloc.c	2012-08-08 14:47:11 +0000
> @@ -5831,8 +5831,8 @@
>       a special way just before the sweep phase, and after stripping
>       some of its elements that are not needed any more.  */
 
> -  mark_overlay (buffer->overlays_before);
> -  mark_overlay (buffer->overlays_after);
> +  mark_overlay (buffer_get_overlays (buffer, OV_BEFORE));
> +  mark_overlay (buffer_get_overlays (buffer, OV_AFTER));
 
>    /* If this is an indirect buffer, mark its base buffer.  */
>    if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer))

> === modified file 'src/buffer.c'
> --- a/src/buffer.c	2012-08-08 12:12:40 +0000
> +++ b/src/buffer.c	2012-08-08 14:47:11 +0000
> @@ -474,8 +474,10 @@
 
>    memcpy (to->local_flags, from->local_flags, sizeof to->local_flags);
 
> -  to->overlays_before = copy_overlays (to, from->overlays_before);
> -  to->overlays_after = copy_overlays (to, from->overlays_after);
> +  buffer_set_overlays
> +    (to, copy_overlays (to, buffer_get_overlays (from, OV_BEFORE)), OV_BEFORE);
> +  buffer_set_overlays
> +    (to, copy_overlays (to, buffer_get_overlays (from, OV_AFTER)), OV_AFTER);
 
>    /* Get (a copy of) the alist of Lisp-level local variables of FROM
>       and install that in TO.  */
> @@ -674,21 +676,22 @@
>  {
>    struct Lisp_Overlay *ov, *next;
 
> -  for (ov = b->overlays_before; ov; ov = next)
> -    {
> -      drop_overlay (b, ov);
> -      next = ov->next;
> -      ov->next = NULL;
> -    }
> -
> -  for (ov = b->overlays_after; ov; ov = next)
> -    {
> -      drop_overlay (b, ov);
> -      next = ov->next;
> -      ov->next = NULL;
> -    }
> -
> -  b->overlays_before = b->overlays_after = NULL;
> +  for (ov = buffer_get_overlays (b, OV_BEFORE); ov; ov = next)
> +    {
> +      drop_overlay (b, ov);
> +      next = ov->next;
> +      ov->next = NULL;
> +    }
> +
> +  for (ov = buffer_get_overlays (b, OV_AFTER); ov; ov = next)
> +    {
> +      drop_overlay (b, ov);
> +      next = ov->next;
> +      ov->next = NULL;
> +    }
> +
> +  buffer_set_overlays (b, NULL, OV_BEFORE);
> +  buffer_set_overlays (b, NULL, OV_AFTER);
>  }
 
>  /* Reinitialize everything about a buffer except its name and contents
> @@ -716,8 +719,8 @@
b-> auto_save_failure_time = 0;
>    BVAR (b, auto_save_file_name) = Qnil;
>    BVAR (b, read_only) = Qnil;
> -  b->overlays_before = NULL;
> -  b->overlays_after = NULL;
> +  buffer_set_overlays (b, NULL, OV_BEFORE);
> +  buffer_set_overlays (b, NULL, OV_AFTER);
b-> overlay_center = BEG;
>    BVAR (b, mark_active) = Qnil;
>    BVAR (b, point_before_scroll) = Qnil;
> @@ -2602,7 +2605,7 @@
>    ptrdiff_t prev = BEGV;
>    int inhibit_storing = 0;
 
> -  for (tail = current_buffer->overlays_before; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next)
>      {
>        ptrdiff_t startpos, endpos;
 
> @@ -2650,7 +2653,7 @@
>  	next = startpos;
>      }
 
> -  for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next)
>      {
>        ptrdiff_t startpos, endpos;
 
> @@ -2737,7 +2740,7 @@
>    int inhibit_storing = 0;
>    int end_is_Z = end == Z;
 
> -  for (tail = current_buffer->overlays_before; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next)
>      {
>        ptrdiff_t startpos, endpos;
 
> @@ -2784,7 +2787,7 @@
>  	next = startpos;
>      }
 
> -  for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next)
>      {
>        ptrdiff_t startpos, endpos;
 
> @@ -2874,7 +2877,7 @@
>    Lisp_Object overlay;
>    struct Lisp_Overlay *tail;
 
> -  for (tail = current_buffer->overlays_before; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next)
>      {
>        ptrdiff_t endpos;
 
> @@ -2888,7 +2891,7 @@
>  	return 1;
>      }
 
> -  for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next)
>      {
>        ptrdiff_t startpos;
 
> @@ -3089,7 +3092,7 @@
 
>    overlay_heads.used = overlay_heads.bytes = 0;
>    overlay_tails.used = overlay_tails.bytes = 0;
> -  for (ov = current_buffer->overlays_before; ov; ov = ov->next)
> +  for (ov = buffer_get_overlays (NULL, OV_BEFORE); ov; ov = ov->next)
>      {
>        XSETMISC (overlay, ov);
>        eassert (OVERLAYP (overlay));
> @@ -3117,7 +3120,7 @@
>  			       Foverlay_get (overlay, Qpriority),
>  			       endpos - startpos);
>      }
> -  for (ov = current_buffer->overlays_after; ov; ov = ov->next)
> +  for (ov = buffer_get_overlays (NULL, OV_AFTER); ov; ov = ov->next)
>      {
>        XSETMISC (overlay, ov);
>        eassert (OVERLAYP (overlay));
> @@ -3215,7 +3218,7 @@
>       But we use it for symmetry and in case that should cease to be true
>       with some future change.  */
>    prev = NULL;
> -  for (tail = buf->overlays_before; tail; prev = tail, tail = next)
> +  for (tail = buffer_get_overlays (buf, OV_BEFORE); tail; prev = tail, tail = next)
>      {
>        next = tail->next;
>        XSETMISC (overlay, tail);
> @@ -3234,11 +3237,11 @@
>  	  if (prev)
prev-> next = next;
>  	  else
> -	    buf->overlays_before = next;
> +	    buffer_set_overlays (buf, next, OV_BEFORE);
 
>  	  /* Search thru overlays_after for where to put it.  */
>  	  other_prev = NULL;
> -	  for (other = buf->overlays_after; other;
> +	  for (other = buffer_get_overlays (buf, OV_AFTER); other;
>  	       other_prev = other, other = other->next)
>  	    {
>  	      Lisp_Object otherbeg, otheroverlay;
> @@ -3256,7 +3259,7 @@
>  	  if (other_prev)
other_prev-> next = tail;
>  	  else
> -	    buf->overlays_after = tail;
> +	    buffer_set_overlays (buf, tail, OV_AFTER);
>  	  tail = prev;
>  	}
>        else
> @@ -3268,7 +3271,7 @@
 
>    /* See if anything in overlays_after should be in overlays_before.  */
>    prev = NULL;
> -  for (tail = buf->overlays_after; tail; prev = tail, tail = next)
> +  for (tail = buffer_get_overlays (buf, OV_AFTER); tail; prev = tail, tail = next)
>      {
>        next = tail->next;
>        XSETMISC (overlay, tail);
> @@ -3292,11 +3295,11 @@
>  	  if (prev)
prev-> next = next;
>  	  else
> -	    buf->overlays_after = next;
> +	    buffer_set_overlays (buf, next, OV_AFTER);
 
>  	  /* Search thru overlays_before for where to put it.  */
>  	  other_prev = NULL;
> -	  for (other = buf->overlays_before; other;
> +	  for (other = buffer_get_overlays (buf, OV_BEFORE); other;
>  	       other_prev = other, other = other->next)
>  	    {
>  	      Lisp_Object otherend, otheroverlay;
> @@ -3314,7 +3317,7 @@
>  	  if (other_prev)
other_prev-> next = tail;
>  	  else
> -	    buf->overlays_before = tail;
> +	    buffer_set_overlays (buf, tail, OV_BEFORE);
>  	  tail = prev;
>  	}
>      }
> @@ -3367,7 +3370,7 @@
>       assigned.  */
>    struct Lisp_Overlay *beforep = NULL, *afterp = NULL;
>    /* 'Parent', likewise, indicates a cons cell or
> -     current_buffer->overlays_before or overlays_after, depending
> +     before or after overlays list, depending
>       which loop we're in.  */
>    struct Lisp_Overlay *tail, *parent;
>    ptrdiff_t startpos, endpos;
> @@ -3379,7 +3382,7 @@
>       (after_list) if it is, is still uninitialized.  So it's not a bug
>       that before_list isn't initialized, although it may look
>       strange.  */
> -  for (parent = NULL, tail = current_buffer->overlays_before; tail;)
> +  for (parent = NULL, tail = buffer_get_overlays (NULL, OV_BEFORE); tail;)
>      {
>        XSETMISC (overlay, tail);
 
> @@ -3419,7 +3422,7 @@
>  	      beforep = tail;
>  	    }
>  	  if (!parent)
> -	    current_buffer->overlays_before = tail->next;
> +	    buffer_set_overlays (NULL, tail->next, OV_BEFORE);
>  	  else
parent-> next = tail->next;
>  	  tail = tail->next;
> @@ -3427,7 +3430,7 @@
>        else
>  	parent = tail, tail = parent->next;
>      }
> -  for (parent = NULL, tail = current_buffer->overlays_after; tail;)
> +  for (parent = NULL, tail = buffer_get_overlays (NULL, OV_AFTER); tail;)
>      {
>        XSETMISC (overlay, tail);
 
> @@ -3465,7 +3468,7 @@
>  	      beforep = tail;
>  	    }
>  	  if (!parent)
> -	    current_buffer->overlays_after = tail->next;
> +	    buffer_set_overlays (NULL, tail->next, OV_AFTER);
>  	  else
parent-> next = tail->next;
>  	  tail = tail->next;
> @@ -3478,15 +3481,15 @@
>       and let the recenter function make it sane again.  */
>    if (beforep)
>      {
> -      beforep->next = current_buffer->overlays_before;
> -      current_buffer->overlays_before = before_list;
> +      beforep->next = buffer_get_overlays (NULL, OV_BEFORE);
> +      buffer_set_overlays (NULL, before_list, OV_BEFORE);
>      }
>    recenter_overlay_lists (current_buffer, current_buffer->overlay_center);
 
>    if (afterp)
>      {
> -      afterp->next = current_buffer->overlays_after;
> -      current_buffer->overlays_after = after_list;
> +      afterp->next = buffer_get_overlays (NULL, OV_AFTER);
> +      buffer_set_overlays (NULL, after_list, OV_AFTER);
>      }
>    recenter_overlay_lists (current_buffer, current_buffer->overlay_center);
>  }
> @@ -3507,7 +3510,8 @@
>  fix_overlays_before (struct buffer *bp, ptrdiff_t prev, ptrdiff_t pos)
>  {
>    /* If parent is nil, replace overlays_before; otherwise, parent->next.  */
> -  struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair;
> +  struct Lisp_Overlay *tail = buffer_get_overlays (bp, OV_BEFORE);
> +  struct Lisp_Overlay *parent = NULL, *right_pair;
>    Lisp_Object tem;
>    ptrdiff_t end IF_LINT (= 0);
 
> @@ -3562,8 +3566,8 @@
>  	     and link it into the right place.  */
>  	  if (!right_pair)
>  	    {
> -	      found->next = bp->overlays_before;
> -	      bp->overlays_before = found;
> +	      found->next = buffer_get_overlays (bp, OV_BEFORE);
> +	      buffer_set_overlays (bp, found, OV_BEFORE);
>  	    }
>  	  else
>  	    {
> @@ -3639,15 +3643,15 @@
>    end = OVERLAY_END (overlay);
>    if (OVERLAY_POSITION (end) < b->overlay_center)
>      {
> -      if (b->overlays_after)
> -	XOVERLAY (overlay)->next = b->overlays_after;
> -      b->overlays_after = XOVERLAY (overlay);
> +      if (buffer_get_overlays (b, OV_AFTER))
> +	XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_AFTER);
> +      buffer_set_overlays (b, XOVERLAY (overlay), OV_AFTER);
>      }
>    else
>      {
> -      if (b->overlays_before)
> -	XOVERLAY (overlay)->next = b->overlays_before;
> -      b->overlays_before = XOVERLAY (overlay);
> +      if (buffer_get_overlays (b, OV_BEFORE))
> +	XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_BEFORE);
> +      buffer_set_overlays (b, XOVERLAY (overlay), OV_BEFORE);
>      }
 
>    /* This puts it in the right list, and in the right order.  */
> @@ -3705,6 +3709,19 @@
>    return list;
>  }
 
> +/* Remove OVERLAY from both overlay lists of B.  */
> +
> +static void
> +unchain_both (struct buffer *b, Lisp_Object overlay)
> +{
> +  struct Lisp_Overlay *ov = XOVERLAY (overlay);
> +
> +  buffer_set_overlays 
> +    (b, unchain_overlay (buffer_get_overlays (b, OV_BEFORE), ov), OV_BEFORE);
> +  buffer_set_overlays
> +    (b, unchain_overlay (buffer_get_overlays (b, OV_AFTER), ov), OV_AFTER);
> +}
> +
>  DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0,
>         doc: /* Set the endpoints of OVERLAY to BEG and END in BUFFER.
>  If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.
> @@ -3755,10 +3772,7 @@
>        o_beg = OVERLAY_POSITION (OVERLAY_START (overlay));
>        o_end = OVERLAY_POSITION (OVERLAY_END (overlay));
 
> -      ob->overlays_before =
> -        unchain_overlay (ob->overlays_before, XOVERLAY (overlay));
> -      ob->overlays_after =
> -        unchain_overlay (ob->overlays_after, XOVERLAY (overlay));
> +      unchain_both (ob, overlay);
>        eassert (XOVERLAY (overlay)->next == NULL);
>      }
 
> @@ -3799,13 +3813,13 @@
>       wrong list.  */
>    if (n_end < b->overlay_center)
>      {
> -      XOVERLAY (overlay)->next = b->overlays_after;
> -      b->overlays_after = XOVERLAY (overlay);
> +      XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_AFTER);
> +      buffer_set_overlays (b, XOVERLAY (overlay), OV_AFTER);
>      }
>    else
>      {
> -      XOVERLAY (overlay)->next = b->overlays_before;
> -      b->overlays_before = XOVERLAY (overlay);
> +      XOVERLAY (overlay)->next = buffer_get_overlays (b, OV_BEFORE);
> +      buffer_set_overlays (b, XOVERLAY (overlay), OV_BEFORE);
>      }
 
>    /* This puts it in the right list, and in the right order.  */
> @@ -3831,10 +3845,7 @@
>    b = XBUFFER (buffer);
>    specbind (Qinhibit_quit, Qt);
 
> -  b->overlays_before
> -    = unchain_overlay (b->overlays_before, XOVERLAY (overlay));
> -  b->overlays_after
> -    = unchain_overlay (b->overlays_after, XOVERLAY (overlay));
> +  unchain_both (b, overlay);
>    eassert (XOVERLAY (overlay)->next == NULL);
 
>    drop_overlay (b, XOVERLAY (overlay));
> @@ -4033,16 +4044,19 @@
>  {
>    struct Lisp_Overlay *ol;
>    Lisp_Object before = Qnil, after = Qnil, tmp;
> -  for (ol = current_buffer->overlays_before; ol; ol = ol->next)
> +
> +  for (ol = buffer_get_overlays (NULL, OV_BEFORE); ol; ol = ol->next)
>      {
>        XSETMISC (tmp, ol);
>        before = Fcons (tmp, before);
>      }
> -  for (ol = current_buffer->overlays_after; ol; ol = ol->next)
> +
> +  for (ol = buffer_get_overlays (NULL, OV_AFTER); ol; ol = ol->next)
>      {
>        XSETMISC (tmp, ol);
>        after = Fcons (tmp, after);
>      }
> +
>    return Fcons (Fnreverse (before), Fnreverse (after));
>  }
 
> @@ -4182,7 +4196,7 @@
>        /* We are being called before a change.
>  	 Scan the overlays to find the functions to call.  */
>        last_overlay_modification_hooks_used = 0;
> -      for (tail = current_buffer->overlays_before; tail; tail = tail->next)
> +      for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next)
>  	{
>  	  ptrdiff_t startpos, endpos;
>  	  Lisp_Object ostart, oend;
> @@ -4219,7 +4233,7 @@
>  	    }
>  	}
 
> -      for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> +      for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next)
>  	{
>  	  ptrdiff_t startpos, endpos;
>  	  Lisp_Object ostart, oend;
> @@ -4311,7 +4325,7 @@
 
>    hit_list = Qnil;
>    if (pos <= current_buffer->overlay_center)
> -    for (tail = current_buffer->overlays_before; tail; tail = tail->next)
> +    for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next)
>        {
>  	ptrdiff_t endpos;
>  	XSETMISC (overlay, tail);
> @@ -4323,7 +4337,7 @@
>  	  hit_list = Fcons (overlay, hit_list);
>        }
>    else
> -    for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> +    for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next)
>        {
>  	ptrdiff_t startpos;
>  	XSETMISC (overlay, tail);

> === modified file 'src/buffer.h'
> --- a/src/buffer.h	2012-08-08 12:12:40 +0000
> +++ b/src/buffer.h	2012-08-08 14:47:11 +0000
> @@ -945,6 +945,52 @@
>        }									\
>    } while (0)
 
> +enum overlay_type
> +{
> +  OV_BEFORE,
> +  OV_AFTER
> +};
> +
> +/* Get overlay list of type T and belonging to B.  */
> +
> +BUFFER_INLINE struct Lisp_Overlay *
> +buffer_get_overlays (struct buffer *b, enum overlay_type t)
> +{
> +  if (!b)
> +    b = current_buffer;
> +  if (t == OV_BEFORE)
> +    return b->overlays_before;
> +  else if (t == OV_AFTER)
> +    return b->overlays_after;
> +  else
> +    abort ();
> +}
> +
> +/* Set overlay list of type T as belonging to B.  */
> +
> +BUFFER_INLINE void
> +buffer_set_overlays (struct buffer *b, struct Lisp_Overlay *o,
> +		     enum overlay_type t)
> +{
> +  if (!b)
> +    b = current_buffer;
> +  if (t == OV_BEFORE)
> +    b->overlays_before = o;
> +  else if (t == OV_AFTER)
> +    b->overlays_after = o;
> +  else
> +    abort ();
> +}
> +
> +/* Non-zero if current buffer has overlays.  */
> +
> +BUFFER_INLINE int
> +buffer_has_overlays (void)
> +{
> +  return buffer_get_overlays (current_buffer, OV_BEFORE)
> +    || buffer_get_overlays (current_buffer, OV_AFTER);
> +}
> +
>  extern Lisp_Object Qbefore_change_functions;
>  extern Lisp_Object Qafter_change_functions;
>  extern Lisp_Object Qfirst_change_hook;

> === modified file 'src/editfns.c'
> --- a/src/editfns.c	2012-08-08 12:12:40 +0000
> +++ b/src/editfns.c	2012-08-08 14:47:11 +0000
> @@ -310,7 +310,7 @@
>    ptrdiff_t startpos, endpos;
>    ptrdiff_t idx = 0;
 
> -  for (tail = current_buffer->overlays_before; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_BEFORE); tail; tail = tail->next)
>      {
>        XSETMISC (overlay, tail);
 
> @@ -329,7 +329,7 @@
>  	}
>      }
 
> -  for (tail = current_buffer->overlays_after; tail; tail = tail->next)
> +  for (tail = buffer_get_overlays (NULL, OV_AFTER); tail; tail = tail->next)
>      {
>        XSETMISC (overlay, tail);
 

> === modified file 'src/fileio.c'
> --- a/src/fileio.c	2012-08-08 12:12:40 +0000
> +++ b/src/fileio.c	2012-08-08 14:47:11 +0000
> @@ -3490,8 +3490,8 @@
>  		  BVAR (buf, read_only) = Qnil;
>  		  BVAR (buf, filename) = Qnil;
>  		  BVAR (buf, undo_list) = Qt;
> -		  eassert (buf->overlays_before == NULL);
> -		  eassert (buf->overlays_after == NULL);
> +		  eassert (buffer_get_overlays (buf, OV_BEFORE) == NULL);
> +		  eassert (buffer_get_overlays (buf, OV_AFTER) == NULL);
 
>  		  set_buffer_internal (buf);
>  		  Ferase_buffer ();

> === modified file 'src/indent.c'
> --- a/src/indent.c	2012-08-08 12:12:40 +0000
> +++ b/src/indent.c	2012-08-08 14:47:11 +0000
> @@ -337,8 +337,7 @@
>    /* If the buffer has overlays, text properties,
>       or multibyte characters, use a more general algorithm.  */
>    if (buffer_get_intervals (current_buffer)
> -      || current_buffer->overlays_before
> -      || current_buffer->overlays_after
> +      || buffer_has_overlays ()
>        || Z != Z_BYTE)
>      return current_column_1 ();
 

> === modified file 'src/insdel.c'
> --- a/src/insdel.c	2012-08-08 12:12:40 +0000
> +++ b/src/insdel.c	2012-08-08 14:47:11 +0000
> @@ -1993,7 +1993,7 @@
>        XSETCDR (rvoe_arg, Qt);
>      }
 
> -  if (current_buffer->overlays_before || current_buffer->overlays_after)
> +  if (buffer_has_overlays ())
>      {
>        PRESERVE_VALUE;
>        report_overlay_modification (FETCH_START, FETCH_END, 0,
> @@ -2029,8 +2029,7 @@
>       just record the args that we were going to use.  */
>    if (! NILP (Vcombine_after_change_calls)
>        && NILP (Vbefore_change_functions)
> -      && !current_buffer->overlays_before
> -      && !current_buffer->overlays_after)
> +      && !buffer_has_overlays ())
>      {
>        Lisp_Object elt;
 
> @@ -2072,7 +2071,7 @@
>        XSETCDR (rvoe_arg, Qt);
>      }
 
> -  if (current_buffer->overlays_before || current_buffer->overlays_after)
> +  if (buffer_has_overlays ())
>      report_overlay_modification (make_number (charpos),
>  				 make_number (charpos + lenins),
>  				 1,

> === modified file 'src/intervals.c'
> --- a/src/intervals.c	2012-08-08 12:12:40 +0000
> +++ b/src/intervals.c	2012-08-08 14:47:11 +0000
> @@ -1870,8 +1870,7 @@
>       whether or not there are intervals in the buffer.  */
>    eassert (charpos <= ZV && charpos >= BEGV);
 
> -  have_overlays = (current_buffer->overlays_before
> -		   || current_buffer->overlays_after);
> +  have_overlays = buffer_has_overlays ();
 
>    /* If we have no text properties and overlays,
>       then we can do it quickly.  */

> === modified file 'src/print.c'
> --- a/src/print.c	2012-08-08 10:23:04 +0000
> +++ b/src/print.c	2012-08-08 14:47:11 +0000
> @@ -498,8 +498,8 @@
>    BVAR (current_buffer, read_only) = Qnil;
>    BVAR (current_buffer, filename) = Qnil;
>    BVAR (current_buffer, undo_list) = Qt;
> -  eassert (current_buffer->overlays_before == NULL);
> -  eassert (current_buffer->overlays_after == NULL);
> +  eassert (buffer_get_overlays (NULL, OV_BEFORE) == NULL);
> +  eassert (buffer_get_overlays (NULL, OV_AFTER) == NULL);
>    BVAR (current_buffer, enable_multibyte_characters)
>      = BVAR (&buffer_defaults, enable_multibyte_characters);
>    specbind (Qinhibit_read_only, Qt);

> === modified file 'src/xdisp.c'
> --- a/src/xdisp.c	2012-08-08 06:11:29 +0000
> +++ b/src/xdisp.c	2012-08-08 14:47:11 +0000
> @@ -5445,7 +5445,7 @@
>    while (0)
 
>    /* Process overlay before the overlay center.  */
> -  for (ov = current_buffer->overlays_before; ov; ov = ov->next)
> +  for (ov = buffer_get_overlays (NULL, OV_BEFORE); ov; ov = ov->next)
>      {
>        XSETMISC (overlay, ov);
>        eassert (OVERLAYP (overlay));
> @@ -5485,7 +5485,7 @@
>      }
 
>    /* Process overlays after the overlay center.  */
> -  for (ov = current_buffer->overlays_after; ov; ov = ov->next)
> +  for (ov = buffer_get_overlays (NULL, OV_AFTER); ov; ov = ov->next)
>      {
>        XSETMISC (overlay, ov);
>        eassert (OVERLAYP (overlay));


> _______________________________________________
> Emacs-diffs mailing list
> Emacs-diffs@gnu.org
> https://lists.gnu.org/mailman/listinfo/emacs-diffs



       reply	other threads:[~2012-08-08 15:45 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1Sz80a-0000RM-Qp@vcs.savannah.gnu.org>
2012-08-08 15:45 ` Stefan Monnier [this message]
2012-08-08 16:26   ` [Emacs-diffs] /srv/bzr/emacs/trunk r109512: Inline functions to examine and change buffer overlays Dmitry Antipov
2012-08-08 18:05     ` Stefan Monnier
2012-08-08 18:16       ` Eli Zaretskii
2012-08-08 19:47         ` Stefan Monnier
2012-08-08 20:44           ` Eli Zaretskii
2012-08-09  3:53             ` Markers/intervals/overlays + trees Dmitry Antipov
2012-08-09 16:15               ` Eli Zaretskii
2012-08-09 17:16               ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvpq71z8xf.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=dmantipov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.