emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] trunk r116461: Connect electric-indent-mode up with CC


From: Stefan Monnier
Subject: Re: [Emacs-diffs] trunk r116461: Connect electric-indent-mode up with CC Mode. Bug #15478.
Date: Sun, 09 Mar 2014 23:37:36 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

> Thanks for ignoring practically all of my last email.
> That really made my day.

OK, since you insist, see detailed answers below.

>> And as you probably remember, I disagree.
> Yes, I remember well.  Your disagreement consisted of noting that you
> personally like typing tab all the time, rather than having lines of code
> indent automatically.

No, my personal preference has nothing to do with it.  That would affect
my ~/.emacs, not Emacs's own defaults.

>> What is essential for me is that C-mode have the same behavior as other
>> modes.  I.e. obey electric-indent-mode.
> Major modes provide different behaviours, behaviours appropriate to the
> type of text being edited.  That's why we have major modes.

Right.  But I don't see what is so special about the C language that
makes c-electric-flag (aka electric-indent-mode) indispensable in c-mode.

Better don't bother answering: electric-indent-mode is enabled by
default anyway, so there's really no problem here.

The question is really: why do you need to know if electric-indent-mode
was called (and even how many times)?  From what I understand of your
previous answers it is because you want to only obey
electric-indent-mode if the user changed the default.  If so, what is
wrong about testing Emacs's version instead?

AFAIK your only worry is when electric-indent-mode is nil to make sure
that the user really meant it.  But if you test Emacs's version to make
sure it's >24.3, then electric-indent-mode can only be nil if the user
decided so.  So you don't need to know if electric-indent-mode has been
called nor how many times.


        Stefan


> > No, we should only care about "enabled" and "disabled".
> That's a fairly contentious opinion, not backed up by any reasoning.
> Would you care to give your reasons why "default state" is not to be
> cared about?

You know very well:
some major modes have historically setup some keys to electrically
reindent the current line.  And some haven't.  This just reflects
the personal preference of the major mode's author(s).  It also means
that a user who doesn't like this behavior needs to disable it
separately for each and every such major mode (which includes figuring
out how to disable it, which is not standardized either).  And it also
means that a user who does like this behavior will have to tweak the
other major modes.

Hence my introducing electric-indent-mode to standardize the behavior
across modes.  As is too often the case, CC-mode is the only one that
doesn't want to get in line.

> As we have discussed before, it is essential that c-electric-flag be
> enabled by default for CC Mode buffers.  Without it, indentation would
> need to be done manually, e.g. by continual use of the tab key.

Right: when electric-indent-mode is nil, it means that the user wants to
have control over when auto-indentation is performed.  That's not a bug.

On the contrary: it is crucial to stay sane when you're editing code
using an indentation convention that's different from the one supported
by the major mode.

But indeed, electric-indent-mode is enabled by default, because we
recognize that it is overall better to try and maintain indentation
without forcing the user to constantly use TAB.

> Yet c-electric-flag, a buffer local flag, is now inextricably coupled
> to electric-indent-mode, a crude global flag.  A user wishing to
> disable electric-indent-mode for some random buffer will find
> automatic indentation broken in her C Mode buffers.

No, she will find it correctly disabled, according to her wish expressed
by the fact that she disabled electric-indent-mode.

> There is no mechanism provided to users by electric-indent-mode to enable
> it selectively in a buffer.

Alan, please be constructive: you know full well this is untrue.

> Even the undocumented electric-indent-local-mode

The fact that it's not yet documented is irrelevant, since that's
a problem that needs to be addressed anyway (and rather sooner than
later since it's one of the hurdles remaining for the trunk to re-open).

> doesn't work properly, as you admitted recently.

Right, it has some bugs open, and we'll have to fix them for 24.4.

> In the massive confusion and possible protest that will follow in the
> wake of the release of electric-indent-mode, one of your options will be
> to disable the mode by default.

Come on, Alan.  You know me better than that.

And FWIW you've been the strongest voice *against* enabling
electric-indent-mode, oddly enough.

> Would you please give your word, as a gentleman, that whatever
> transpires, after the sequence emacs -Q, C-x C-f foo.c, foo.c's copy
> of c-electric-flag will always be t.

No, I can't, sorry: if it were up to me, c-electric-flag would not even
exist any more.

But I can give you my word that "automatic indentation as a side effect
of normal editing" will be enabled by default in programming modes,
including C-like modes, yes.


        Stefan



reply via email to

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