emacs-devel
[Top][All Lists]
Advanced

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

Re: Unbalanced change hooks (part 1)


From: Eli Zaretskii
Subject: Re: Unbalanced change hooks (part 1)
Date: Tue, 02 Aug 2016 05:34:22 +0300

> From: Richard Copley <address@hidden>
> Date: Mon, 1 Aug 2016 21:13:01 +0100
> Cc: Óscar Fuentes <address@hidden>,
>       Emacs Development <address@hidden>
> 
> > diff --git a/src/fileio.c b/src/fileio.c
> > index b1f9d3c..0431cbc 100644
> > --- a/src/fileio.c
> > +++ b/src/fileio.c
> > @@ -3440,6 +3440,7 @@ by calling `format-decode', which see.  */)
> >    /* SAME_AT_END_CHARPOS counts characters, because
> >       restore_window_points needs the old character count.  */
> >    ptrdiff_t same_at_end_charpos = ZV;
> > +  bool run_change_hooks;
> >
> >    if (current_buffer->base_buffer && ! NILP (visit))
> >      error ("Cannot do file visiting in an indirect buffer");
> > @@ -4077,7 +4078,9 @@ by calling `format-decode', which see.  */)
> >      /* For a special file, all we can do is guess.  */
> >      total = READ_BUF_SIZE;
> >
> > -  if (NILP (visit) && total > 0)
> > +  run_change_hooks = ((NILP (visit) || !NILP (replace))
> > +                      && total > 0);
> > +  if (run_change_hooks)
> >      {
> >        if (!NILP (BVAR (current_buffer, file_truename))
> >           /* Make binding buffer-file-name to nil effective.  */
> > @@ -4313,8 +4316,7 @@ by calling `format-decode', which see.  */)
> >    /* Call after-change hooks for the inserted text, aside from the case
> >       of normal visiting (not with REPLACE), which is done in a new buffer
> >       "before" the buffer is changed.  */
> > -  if (inserted > 0 && total > 0
> > -      && (NILP (visit) || !NILP (replace)))
> > +  if (run_change_hooks)
> >      {
> >        signal_after_change (PT, 0, inserted);
> >        update_compositions (PT, PT, CHECK_BORDER);
> >
> >
> > Unfortunately, this amendment, by itself, doesn't fix #240[79]4, since
> > there are other causes for the change hooks being improperly invoked.
> >
> > --
> > Alan Mackenzie (Nuremberg, Germany).
> 
> LGTM. It's hard to imagine anyone relying on the before-change hooks
> _not_ being run, so it should be safe, at least, to make this change.

That code is almost never run when REPLACE is non-nil, so doing that
won't help.  See an earlier message that explained why.



reply via email to

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