GNU bug report logs - #16981
24.3.50; electric-pair-delete-adjacent-pairs broken in c-mode, python-mode, maybe-others

Previous Next

Package: emacs;

Reported by: joaotavora <at> gmail.com (João Távora)

Date: Mon, 10 Mar 2014 19:49:01 UTC

Severity: normal

Found in version 24.3.50

Done: joaotavora <at> gmail.com (João Távora)

Bug is archived. No further changes may be made.

Full log


Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: gnu-emacs-bug <at> moderators.isc.org
Subject: Re: bug#16981: 24.3.50;
 electric-pair-delete-adjacent-pairs broken in c-mode,
 python-mode,	maybe-others
Date: Thu, 13 Mar 2014 22:04:33 +0000 (UTC)
Jo?o T?vora <joaotavora <at> gmail.com> wrote:
> This variable, t by default, acts when `electric-pair-mode' is enabled.

> It doesn't work in c-mode, python-mode and maybe other modes in
> emacs. In also doesn't work in other modes outside of emacs, such as
> markdown-mode.el [1]

> All these modes rebind the backspace key to a command that does some
> mode-specific action, then calls `backward-delete-char-untabify'.

> elec-pair.el does mostly the same through remapping in its
> `electric-pair-mode-map' but this binding is overriden by the
> major-mode's.

There's something funny going on here.  A minor mode's keymap should
normally take precedence over the major mode's keymap.  (See the page 
"Searching Keymaps" in the Elisp manual.)  So why is electric-pair-mode's
keymap being overridden by CC Mode's here?

> elec-pair.el remaps two other commands similarly. Here's the value of
> electric-pair-mode-map

>    (keymap
>     (remap keymap
>            (delete-backward-char . electric-pair-backward-delete-char)
>            (backward-delete-char . electric-pair-backward-delete-char)
>            (backward-delete-char-untabify
>               . electric-pair-backward-delete-char-untabify)))


> Perhaps a hook in `backward-delete-char' is in order. Or the other major
> modes can find other ways to overload the backspace key.

I would say it's legitimate for a major mode to bind the backspace key, but
it's more questionable for a minor mode to do the same.  Perhaps the minor
mode really ought to use defadvice rather than rebinding the key.

> Thanks,
> Jo?o

> [1]: http://jblevins.org/git/markdown-mode.git/plain/markdown-mode.el

-- 
Alan Mackenzie (Nuremberg, Germany).





This bug report was last modified 11 years and 47 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.