Subject: bug#33794: 26.1; electric-pair-mode breaks auto-newline minor mode of cc-mode

From: João Távora <[email-masked]>
Date: Sat, 22 Dec 2018 10:02:07 +0000

Beatrix Klebe <[email-masked]> writes:

> I didn’t intend to kick the hornet’s nest of ideological factions

You kinda did, but it's in their nature to be kicked.

> here, I was honestly just wondering if this was actually expected
> behavior of these two modes together and if not if the fix was
> trivial. The answer seems to be that it is indeed a bug and the fix is
> non-trivial,

All correct.

> and furthermore while I appreciate attempts to hotfix it, those are
> not solutions of the quality I was expecting

 Can you specify what is missing in terms of quality? 

> , (I encountered those already while doing my own research before I
> filed this bug report and I found them unsatisfactory both then and
> now) and furthermore I feel like I should be open in stating that I
> feel somewhat condescended to.

I'm very sorry about that, it was never my intention (please read
below).

> I know what c-toggle-auto-newline is, I also know that functions
> prefixed with “toggle” are functions that toggle a mode or setting
> internally, in this case a minor mode called auto-newline
> (https://www.gnu.org/software/emacs/manual/html_node/ccmode/Auto_002dnewlines.html)

After following the link you gave me: I see the misunderstanding.  You
see, even though CC-mode's manual says "auto-newline" is a minor mode,
it's not.  It's just a variation on the major-mode's behaviour (in fact
the CC-mode manual clarifies it here[1] as a "minor-mode-like feature",
but the misunderstanding remained). There's no M-x auto-newline-mode to
be invoked and no (define-minor-mode auto-newline-mode...) to be found
in the code.  Mentions to this as a minor mode are only found in the
manual (a documentation bug, in my opinion).

So this is why I was so specific with M-x c-toggle-auto-newline,
becausen that's the actual command that someone who doesn't use it needs
to turn on that pseudo-minor-mode: Without it, I couldn't observe the
behaviour that you reported. With it, you couldn't experience the
solution I was giving you.

> I was about five minutes away from diving into the source of these two
> packages to fix it myself, as I have spent probably 10 hours
> reasearching this problem at this point. I’m sorry if I misunderstood
> something, I was mainly looking for clarification that what I was
> experiencing was a bug, and it is beginning to seem like there is none
> to be had here.

OK I'll clarify: There is a bug: there are two diverging views on how to
fix it because there are diverging views about where it lies in Emacs:

* The only available fix so far (mine) is still experimental.  I would
  appreciate your feedback but it's perfectly OK to go spend your time
  elsewhere because there's a risk that it won't make it in the end.

  In this fix, I'm not targetting Alan's code: I am extending an
  existing, separate feature that could render some of CC-mode's
  functionality, specifically the peudo auto-newline-mode, obsolete.

* The other fix isn't available yet, in experimental or final form.
  Presumably it would target electric-pair-mode.  If Alan, you, or
  someone else wants to work on it, that's quite alright, but beware
  that electric-pair-mode must work for all major modes (including
  things like minibuffers and REPLs), not just CC-mode.

Regards,
João

[1]: https://www.gnu.org/software/emacs/manual/html_node/ccmode/Minor-Modes.html#Minor-Modes

>
> On Fri, Dec 21, 2018 at 10:22 PM João Távora <[email-masked]> wrote:
>
>  Alan Mackenzie <[email-masked]> writes:
>
>  > Hello, Beatrix.
>  >
>  > As maintainer of CC Mode, I earnestly recommend you NOT to follow João's
>  > suggestion.  It will not work, and will waste your time.
>
>  What, exactly, will not work?
>
>  > Even if it appears to work, you will end up picking out bugs for an
>  > indeterminate period.
>
>  What bugs?  If you know of any, it would be good to report them, right?
>
>  > Basically, electric-pair-mode as it is currently built is incompatible
>  > with CC Mode, as I have pointed out here, albeit somewhat
>  > undiplomatically.
>  >
>  > I suggest you do nothing until tempers amongst Emacs developers have
>  > cooled down, and hopefully a genuine solution to the bug has been worked
>  > out and implemented.
>
>  If you don't like electric-layout-mode, don't use it.  I'm trying to
>  develop an alternative to c-toggle-auto-newline within the
>  electric-*-mode frame.  It's an experiment which I don't even know if
>  Stefan will agree to, but it seems to work.  If Beatrix wants to
>  cooperate, why shouldn't she?
>
>  I'm not asking you to nuke c-toggle-auto-newline or anything, but should
>  we all be forced to use it?  I don't think it's sensible in a free
>  software project, Alan (and my temper is quite cool when saying this
>  :-))
>
>  Again, I said I don't have anything against making eletric-pair-mode
>  compatible with c-toggle-auto-newline if someone comes up with a good
>  solution that doesn't break e-p-m for other modes.  I will not invest
>  time in looking into that solution, but you or someone else may, of
>  course.
>
>  In the meantime let people explore alternatives, right?
>
>  João