GNU bug report logs -
#49518
28.0.50; electric-pair-mode skip-self fails for single-quotes in python-mode
Previous Next
Reported by: Jim Porter <jporterbugs <at> gmail.com>
Date: Sun, 11 Jul 2021 01:33:01 UTC
Severity: normal
Found in version 28.0.50
Done: João Távora <joaotavora <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #17 received at 49518 <at> debbugs.gnu.org (full text, mbox):
(CCing João since he wanted to hear about `electric-pair-mode' issues[1].)
On 9/18/2021 5:55 AM, Daniel Fleischer wrote:
> Jim Porter [2021-07-11 Sun 10:34] wrote:
>
>> That's true, and I've been working on a patch to make that behavior
>> more robust. The code for that is in
>> `python-electric-pair-string-delimiter', but I think an improved
>> implementation of that would depend on how this bug is fixed. I have a
>> local patch that works for me, but it depends on the other
>> electric-pair settings I use, so it couldn't merge as-is.
>
> As I'm also bothered by this, is there some resolution?
>
> BTW, my solution is hooking this code in 'inferior-python-mode':
>
> (setq-local electric-pair-pairs
> (append electric-pair-pairs '((?' . ?'))))
This isn't the right fix in general, but maybe it will help you. It
works for me because I turn off `electric-pair-mode' inside comments and
strings, but with the default configuration, it will pair single-quotes
inside double-quoted strings (i.e. you won't be able to type an
apostrophe). There's probably a more robust solution, but I haven't had
time to investigate further...
----------------------------------------
(defun user--python-electric-pair-string-delimiter ()
(when (and electric-pair-mode
(memq last-command-event '(?\" ?'))
(let ((count 0))
(while (eq (char-before (- (point) count))
last-command-event)
(cl-incf count))
(= count 3)))
(save-excursion (insert (make-string 3 last-command-event)))))
(defun user--electric-pair-python-hook ()
(setq-local electric-pair-text-syntax-table python-mode-syntax-table))
(advice-add #'python-electric-pair-string-delimiter
:override #'user--python-electric-pair-string-delimiter)
(add-hook 'python-mode-hook #'user--electric-pair-python-hook)
----------------------------------------
[1] https://lists.gnu.org/archive/html/emacs-devel/2021-09/msg01313.html
This bug report was last modified 3 years and 246 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.