emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] /srv/bzr/emacs/trunk r109512: Inline functions to exam


From: Stefan Monnier
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
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)

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 <address@hidden> writes:

> ------------------------------------------------------------
> revno: 109512
> committer: Dmitry Antipov <address@hidden>
> 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  <address@hidden>
 
> +     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  <address@hidden>
> +
>       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
> address@hidden
> https://lists.gnu.org/mailman/listinfo/emacs-diffs



reply via email to

[Prev in Thread] Current Thread [Next in Thread]