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

[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





reply via email to

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