From: Josh <josh@foxtail.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 15478@debbugs.gnu.org, Alan Mackenzie <acm@muc.de>
Subject: bug#15478: cc-mode does not obey electric-indent-mode
Date: Fri, 4 Oct 2013 14:21:22 -0700 [thread overview]
Message-ID: <CANdFEAHyA8KE7WKoczyG47_JLxDDw-tw2D8=YCos2ZEZ0J8h6A@mail.gmail.com> (raw)
In-Reply-To: <jwva9iqv4dn.fsf-monnier+emacsbugs@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 2291 bytes --]
On Thu, Oct 3, 2013 at 7:32 AM, Stefan Monnier <monnier@iro.umontreal.ca>
wrote:
> > What I'm suggesting is some sort of hook so that electric-indent-mode
> > (and electric-layout-mode, too, I suppose) invokes the "electric
> > engine" in CC Mode rather than trying to do the electric
> > indentation itself.
> Sounds OK.
Unless I'm misunderstanding, the indentation hook you're describing
seems very close to `electric-indent-functions':
electric-indent-functions is a variable defined in `electric.el'.
Its value is nil
This variable may be risky if used as a file-local variable.
Documentation:
Special hook run to decide whether to auto-indent.
Each function is called with one argument (the inserted char), with
point right after that char, and it should return t to cause
indentation,
`no-indent' to prevent indentation or nil to let other functions decide.
Is there a reason why CC Mode couldn't supply a function here that
would perform appropriate indentation and then return `no-indent' to
stop traversal of electric-indent-functions?
Delegation of newline insertion decisions is similarly already supported
via `electric-layout-rules':
electric-layout-rules
electric-layout-rules is a variable defined in `electric.el'.
Its value is nil
Documentation:
List of rules saying where to automatically insert newlines.
Each rule has the form (CHAR . WHERE) where CHAR is the char
that was just inserted and WHERE specifies where to insert newlines
and can be: nil, `before', `after', `around', or a function of no
arguments that returns one of those symbols.
If either or both of these delegation mechanisms are insufficient to
satisfy CC Mode's requirements, it would be interesting to hear how they
fall short.
Although I agree with your earlier point that major modes are best
suited to make decisions about /how/ to perform electric behavior for
their specific domains, which also seems to be borne out by the existing
delegation support, I've seen no justification for a major mode deciding
to disregard (!) my configuration of /whether/ to perform it at all. I
read
the electric-*-mode docstrings describing the exact behavior in
question and I disabled it. That should be the end of the story.
Josh
[-- Attachment #2: Type: text/html, Size: 2657 bytes --]
next prev parent reply other threads:[~2013-10-04 21:21 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-28 18:10 bug#15478: cc-mode does not obey electric-indent-mode Stefan Monnier
2013-09-28 20:11 ` Alan Mackenzie
2013-09-29 3:02 ` Stefan Monnier
2013-09-29 9:10 ` Alan Mackenzie
2013-09-30 18:23 ` Stefan Monnier
2013-10-02 20:07 ` Alan Mackenzie
2013-10-03 1:50 ` Stefan Monnier
2013-10-03 2:46 ` Daniel Colascione
2013-10-03 4:10 ` Stefan Monnier
2013-10-03 4:13 ` Daniel Colascione
2013-10-03 4:50 ` Stefan Monnier
2013-10-03 5:56 ` Andreas Röhler
2013-10-03 6:31 ` Daniel Colascione
2013-10-03 15:52 ` Eli Zaretskii
2013-10-03 13:15 ` Dmitry Gutov
2013-10-03 15:04 ` Stefan Monnier
2013-10-03 17:40 ` Andreas Röhler
2013-10-03 9:45 ` Alan Mackenzie
2013-10-03 14:02 ` Stefan Monnier
2013-10-03 17:45 ` Andreas Röhler
2013-10-03 10:56 ` Alan Mackenzie
2013-10-03 14:32 ` Stefan Monnier
2013-10-04 21:21 ` Josh [this message]
2013-10-05 16:50 ` Alan Mackenzie
2013-10-06 17:45 ` Josh
2013-10-07 13:11 ` Alan Mackenzie
2013-10-07 21:23 ` Josh
2013-10-09 17:55 ` Alan Mackenzie
2013-10-03 11:54 ` Alan Mackenzie
2013-10-03 17:43 ` Andreas Röhler
2013-10-05 17:06 ` Alan Mackenzie
2013-10-06 1:10 ` Stefan Monnier
2013-10-06 2:55 ` Eli Zaretskii
2013-10-06 5:04 ` Josh
2013-10-07 9:39 ` Alan Mackenzie
[not found] ` <20131007093859.GA3859@acm.acm>
2013-10-07 16:05 ` Eli Zaretskii
2013-10-07 21:17 ` Josh
2013-10-08 6:49 ` Eli Zaretskii
2013-10-08 15:59 ` Josh
2013-10-09 17:32 ` Alan Mackenzie
[not found] ` <20131009173206.GA2610@acm.acm>
2013-10-10 19:11 ` Josh
2013-10-06 17:01 ` Stefan Monnier
2013-10-12 14:54 ` bug#15596: Let's improve the default workings of electric-indent-mode Alan Mackenzie
2013-10-12 16:35 ` Stefan Monnier
2013-10-13 12:36 ` Alan Mackenzie
2013-10-14 2:16 ` Stefan Monnier
2013-10-07 10:30 ` bug#15478: cc-mode does not obey electric-indent-mode Alan Mackenzie
[not found] ` <20131007103041.GB3859@acm.acm>
2013-10-07 16:14 ` Stefan Monnier
2013-10-07 20:37 ` Alan Mackenzie
[not found] ` <20131007203738.GA3099@acm.acm>
2013-10-07 23:08 ` Stefan Monnier
2013-10-05 17:08 ` Alan Mackenzie
2014-02-17 19:02 ` Alan Mackenzie
[not found] ` <20140217190249.GB4173@acm.acm>
2014-02-18 0:04 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CANdFEAHyA8KE7WKoczyG47_JLxDDw-tw2D8=YCos2ZEZ0J8h6A@mail.gmail.com' \
--to=josh@foxtail.org \
--cc=15478@debbugs.gnu.org \
--cc=acm@muc.de \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.