all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Eli Zaretskii <eliz@gnu.org>, Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: daniel.lopez999@gmail.com, 34525@debbugs.gnu.org
Subject: bug#34525: replace-regexp missing some matches
Date: Thu, 28 Feb 2019 10:50:25 +0000	[thread overview]
Message-ID: <20190228105025.GB4686@ACM> (raw)
In-Reply-To: <83zhqhjea1.fsf@gnu.org>

Hello, Eli and Stefan.

On Wed, Feb 27, 2019 at 20:07:50 +0200, Eli Zaretskii wrote:
> > Date: Wed, 27 Feb 2019 17:31:32 +0000
> > Cc: monnier@IRO.UMontreal.CA, daniel.lopez999@gmail.com, 34525@debbugs.gnu.org
> > From: Alan Mackenzie <acm@muc.de>

> > > next_interval and previous_interval are used extensively, so I'm
> > > having hard time believing that they have such a blatant bug.

> > Yes, how come we haven't seen many more consequences?

> > Maybe syntax-table text properties aren't as widely used as all that.

> I actually had the text properties in mind.  They are used all over
> the place.  Faces are a feature that would make any such bugs
> immediately visible.

I think the mechanism with update_interval is only used in syntax.c, and
only for the syntax-table property.

> > I'm guessing this fix will be deemed too unsafe to make it into the
> > emacs-26 release branch.  ;-(

> That goes without saying.

OK.  Progress on the bug seems to have stalled somewhat.  Now that we
understand the cause, one of us needs to decide how to fix it.  I think
we've discussed the following alternatives:

(i) Calculate ->position's in previous_interval and next_interval, as my
  tentative patch already does.
(ii) Calculate the ->position's in update_interval, on moving to
  parents.
(iii) Do away with update_interval, replacing it in syntax.c with
  previous/next_interval in while loops.

At the moment, only (i) has been tried.

Speed-wise, it seems not to make any difference in an optimised GNU
build, though it did appear to be significantly (~4%) slower on an
unoptimised build which scrolls through a C++ file with lots of
templates.  I don't think it's worth the effort to make a systematic
speed comparison between the alternatives.

(iv) Additionally, there is a cleanup wanted, where setting ->position
  in the chain of parents should be moved from update_syntax_table to
  find_interval.

In (i), the convention for ->position would be that it is valid for the
target interval together with all its parents.  In (ii) and (iii), it
would only be valid in the final target intervals found by navigation.
I think this should be explicitly stated in a comment in struct
interval.

So, where do we go from here?  If it were up to me, I would probably
chose (i), simply because it's already been done, but I've no strong
feelings over it.  I'm also willing to implement (ii), or even (iii), if
that is wanted.  In any case, I would ask one of you for a careful code
review of my changes - this stuff is easy to get wrong.

-- 
Alan Mackenzie (Nuremberg, Germany).





  reply	other threads:[~2019-02-28 10:50 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-18  8:28 bug#34525: replace-regexp missing some matches Daniel Lopez
     [not found] ` <handler.34525.B.15504786524313.ack@debbugs.gnu.org>
2019-02-18  8:37   ` bug#34525: Acknowledgement (replace-regexp missing some matches) Daniel Lopez
2019-02-18 15:50 ` bug#34525: replace-regexp missing some matches Eli Zaretskii
2019-02-18 16:46   ` Alan Mackenzie
2019-02-18 21:10   ` Alan Mackenzie
2019-02-20 17:07   ` Alan Mackenzie
     [not found]   ` <20190220170722.GA9655@ACM>
2019-02-20 18:02     ` Eli Zaretskii
2019-02-20 18:58       ` Alan Mackenzie
2019-02-20 19:27         ` Eli Zaretskii
2019-02-20 21:30           ` Alan Mackenzie
     [not found]           ` <20190220213003.GC9655@ACM>
2019-02-21  3:40             ` Eli Zaretskii
2019-02-24 17:37               ` Alan Mackenzie
2019-02-24 17:56                 ` Eli Zaretskii
2019-02-24 21:00                   ` Alan Mackenzie
2019-02-25 20:11                     ` Eli Zaretskii
2019-02-25 20:48                       ` Alan Mackenzie
2019-02-26 13:50                       ` Alan Mackenzie
     [not found]                       ` <20190226135048.GA19653@ACM>
2019-02-26 15:00                         ` Alan Mackenzie
2019-02-26 15:39                           ` Eli Zaretskii
2019-02-26 16:11                             ` Alan Mackenzie
2019-02-26 16:42                               ` Eli Zaretskii
2019-02-26 16:55                                 ` Alan Mackenzie
     [not found]                                 ` <20190226165505.GD19653@ACM>
2019-02-26 17:20                                   ` Eli Zaretskii
2019-02-26 17:23                                     ` Alan Mackenzie
2019-02-26 15:36                         ` Eli Zaretskii
2019-02-26 20:09                         ` Stefan Monnier
     [not found]                         ` <jwv8sy2z5yc.fsf-monnier+emacsbugs@gnu.org>
2019-02-26 21:45                           ` Alan Mackenzie
2019-02-26 22:09                             ` Stefan Monnier
2019-02-27 14:22                           ` Alan Mackenzie
     [not found]                           ` <20190227142251.GB4772@ACM>
2019-02-27 15:08                             ` Alan Mackenzie
     [not found]                             ` <20190227150849.GC4772@ACM>
2019-02-27 15:40                               ` Stefan Monnier
2019-02-27 17:10                                 ` Alan Mackenzie
2019-02-27 16:39                             ` Eli Zaretskii
2019-02-27 17:31                               ` Alan Mackenzie
2019-02-27 17:41                               ` Stefan Monnier
     [not found]                               ` <20190227173132.GG4772@ACM>
2019-02-27 18:07                                 ` Eli Zaretskii
2019-02-28 10:50                                   ` Alan Mackenzie [this message]
2019-02-28 17:41                                     ` Eli Zaretskii
2019-02-28 21:54                                       ` Alan Mackenzie
     [not found]                               ` <jwvpnrdb0xj.fsf-monnier+emacsbugs@gnu.org>
2019-02-27 18:48                                 ` Eli Zaretskii
2019-02-27 20:43                                   ` Alan Mackenzie
2019-02-26 23:00                         ` Stefan Monnier
2019-02-20 21:25         ` Daniel Lopez
2019-02-22 16:26           ` Alan Mackenzie
2019-03-01 14:34           ` Alan Mackenzie
     [not found]           ` <20190301143414.GD5674@ACM>
2019-03-01 17:58             ` Daniel Lopez
2019-03-01 17:42 ` Alan Mackenzie

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=20190228105025.GB4686@ACM \
    --to=acm@muc.de \
    --cc=34525@debbugs.gnu.org \
    --cc=daniel.lopez999@gmail.com \
    --cc=eliz@gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    /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.