[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#36006: electric-pair-mode fails to balance in certain cases
From: |
Gregory Heytings |
Subject: |
bug#36006: electric-pair-mode fails to balance in certain cases |
Date: |
Thu, 27 Aug 2020 19:08:10 +0000 |
User-agent: |
Alpine 2.22 (NEB 394 2020-01-19) |
I don't know if the following information is useful, but on the "<div>"
example given by the OP, the difference between Emacs 26 and 27 is that,
in `electric-pair--balance-info', in the expression
(eq (char-after pos) (electric-pair--with-uncached-syntax (table)
(matching-paren (char-before (scan-sexps (point) 1)))))
the second argument fails with "Unbalanced parentheses" in Emacs 27, which
means that the whole expression fails, whereas in Emacs 26 both arguments
evaluate to 60 and the expression returns t.
Because of that `electric-pair--balance-info' returns ((nil . 60) nil .
60) in Emacs 27, instead of ((t . 60) t) in Emacs 26.
Because of that `electric-pair-skip-if-helps-balance' and
`electric-pair-default-skip-self' return nil in Emacs 27, instead of t in
Emacs 26.
Because of that `electric-pair-post-self-insert-function', called by
`post-self-insert-hook', does not skip the insertion of the right angle
bracket character.
The following snippet evaluates to "60" on both Emacs 26 and 27, so I
don't understand where the "Unbalanced parentheses" error could come from.
----
<div>
(progn
(electric-pair-mode 1)
(html-mode)
(let ((table (syntax-table))) (electric-pair--with-uncached-syntax (table)
(matching-paren (char-before (scan-sexps 0 1))))))
----
Gregory
- bug#36006: electric-pair-mode fails to balance in certain cases,
Gregory Heytings <=