GNU bug report logs -
#66155
'electric-pair-inhibit-if-helps-balance' has side-effects
Previous Next
Full log
Message #8 received at 66155 <at> debbugs.gnu.org (full text, mbox):
Akib Azmain Turja <akib <at> disroot.org> writes:
> With the default configuration (which uses
> 'electric-pair-inhibit-if-helps-balance'), inserting parens at the end
> of a Tempel field doesn't extend the field.
>
> I think the modify+undo magic in electric-pair-inhibit-if-helps-balance
> moves markers.
>
> The following is the solution that works for me atleast; it uses insert
> to insert back the character, and let-bind buffer-undo-list to not
> clobber the undo list.
>
> (defun *electric-pair-inhibit-if-helps-balance (char)
> "Return non-nil if auto-pairing of CHAR would hurt parens' balance.
>
> Works by first removing the character from the buffer, then doing
> some list calculations, finally restoring the situation as if nothing
> happened."
> (pcase (electric-pair-syntax-info char)
> (`(,syntax ,pair ,_ ,s-or-c)
> (let ((buffer-undo-list t))
> ;; Don't use `delete-char'; that may modify the head of the
> ;; undo list.
> (delete-region (point) (1- (point)))
> (let ((ret
> (cond
> ((eq ?\( syntax)
> (let* ((pair-data
> (electric-pair--balance-info 1 s-or-c))
> (outermost (cdr pair-data)))
> (cond ((car outermost)
> nil)
> (t
> (eq (cdr outermost) pair)))))
> ((eq syntax ?\")
> (electric-pair--unbalanced-strings-p char)))))
> (insert (string char))
> ret)))))
Could you please send the patch as an attachment instead? We prefer
that patches are created with a command like `git format-patch -1'.
Please also include:
- The bug number of this bug in the commit message, like so: Bug#66155
- A ChangeLog entry, as described in the file CONTRIBUTE.
That would make it easier for us to review and hopefully install
this patch. Thanks in advance.
This bug report was last modified 1 year and 316 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.