bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#49629: 27.2; electric-pair-mode doesn't work for angle brackets in H


From: Allen Li
Subject: bug#49629: 27.2; electric-pair-mode doesn't work for angle brackets in HTML file
Date: Sun, 26 Jun 2022 02:38:28 -0700

I *think* I've fixed this, but it's complicated.  Also I could be completely wrong.  For what it's worth, I can reproduce the bug without the patch and cannot with the patch, which see attached.

`electric-pair--with-uncached-syntax` hides `syntax-propertize-function`, and `mhtml-mode` uses `syntax-propertize-function`. AFAIU, let-binding  `syntax-propertize-function` may or may not clear the cached syntax applied by said function, leading to the current heisenbug.

If this sounds sensible, then a slightly different patch is needed, because `electric-pair--with-uncached-syntax` is used in some contexts where hiding `syntax-propertize-function` is the correct behavior.

See second attached patch for an attempt at this approach.

+Noam Postavsky since they added `electric-pair--with-uncached-syntax`

On Sun, Jun 26, 2022 at 1:41 AM Allen Li <darkfeline@felesatra.moe> wrote:
On Thu, Dec 9, 2021 at 2:31 AM Allen Li <darkfeline@felesatra.moe> wrote:
I have bisected this regression to 7fff418edf56244a1fcf54718523aa9b5cb3a854

I will cc Stefan on the miniscule chance he still remembers anything about this and can save me time.
Otherwise, I will see if I can pinpoint the regression (or if I messed up the bisect).

Posting an update (or non-update) on this.  This regression did seem to be introduced by 7fff418edf56244a1fcf54718523aa9b5cb3a854, however I'm pretty sure there's nothing wrong with the commit itself, it's just that jiggling the code around made this regression reliably occur.
 

Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date:   Fri Nov 29 11:51:48 2019 -0500
    * lisp/textmodes/mhtml-mode.el: Fix bug#38372
   
    The `sgml-syntax-propertize-rules` rely on the `sgml--syntax-propertize-ppss`
    setup by `sgml-syntax-propertize` so it is not correct/safe to use
    them directly like html used to do.
   
    Change `sgml-syntax-propertize` so it can be used by mhtml,
    and then adjust mhtml-mode accordingly.
   
    * lisp/textmodes/mhtml-mode.el: Remove redundant `eval-and-compile`.
    Only require cl-lib at compile-time.
    (mhtml--syntax-propertize): New const, extracted from mhtml-syntax-propertize.
    (mhtml-syntax-propertize): Use `sgml-syntax-propertize`.
   
    * lisp/textmodes/sgml-mode.el (sgml--syntax-propertize): New const,
    extracted from sgml-syntax-propertize.
    (sgml-syntax-propertize): Add optional `rules-function` arg.
 lisp/textmodes/mhtml-mode.el | 44 ++++++++++++++++++++------------------------
 lisp/textmodes/sgml-mode.el  | 13 ++++++++-----
 2 files changed, 28 insertions(+), 29 deletions(-)

On Sun, Aug 1, 2021 at 10:41 AM Lars Ingebrigtsen <larsi@gnus.org> wrote:
Allen Li <darkfeline@felesatra.moe> writes:

> Thus, I resorted to actually trying to understand the code.

Darn, I hate it when that happens.

> I've tracked down the bug to unexpected behavior from the `scan-sexps`
> call in this part of `electric-pair--balance-info`:

I can reproduce exactly what you're seeing -- when edebugging, the
problem goes away, etc.

I put a

              (redisplay t)

into the function, and that also made the problem go away, but that's as
far as I've gotten so far.  So the problem does indeed seem to be
something related to a cache/table somewhere not having been updated...

--
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no

Attachment: 0001-Fix-regression.patch
Description: Text Data

Attachment: 0001-elec-pair-Fix-bug-incorrectly-hiding-syntax-properti.patch
Description: Text Data


reply via email to

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