From: Noam Postavsky <npostavs@gmail.com>
To: "João Távora" <joaotavora@gmail.com>
Cc: Alan Mackenzie <acm@muc.de>,
Stefan Monnier <monnier@iro.umontreal.ca>,
35254@debbugs.gnu.org, Dima Kogan <dima@secretsauce.net>
Subject: bug#35254: 27.0.50; cc-mode/electric-pair-mode/electric-layout-mode: bad trailing whitespace behavior in cc-mode
Date: Mon, 13 May 2019 19:38:48 -0400 [thread overview]
Message-ID: <87a7fphqlz.fsf@gmail.com> (raw)
In-Reply-To: <CALDnm50hwdwXd6_e23OdN8NRtgfRjXNNq7Q=VR4W4us=J+BJ5w@mail.gmail.com> ("João Távora"'s message of "Mon, 13 May 2019 23:39:33 +0100")
João Távora <joaotavora@gmail.com> writes:
>> > Electric indent mode's post-self-insert hook entry has 3 effects:
>>
>> > 1. Indent the previous line.
>> > 2. Remove trailing whitespace from the previous line.
>> > 3. Indent the current line (when at beginning of line).
>>
>> > The change from 2019-01-22 "electric-layout-mode kicks in before
>> > electric-pair-mode", makes 'electric-indent-inhibit' inhibit 1 and 2,
>> > whereas before then it inhibited only 1. While cc mode provides its
>> > own electric commands and therefore sets 'electric-indent-inhibit', it
>> > doesn't implement an electric newline command. So if only one of
>> > effects 2 and 3 from Electric indent mode occur, then hitting RET will
>> > leave trailing whitespace.
>>
>> I interpret the problem a little differently.
>> electric-indent-post-self-insert-function, when electric-indent-inhibit
>> is set, is inhibiting actions which are not really part of electric
>> indentation, in particular action 2 (above). This is the heart of the
>> bug. The following patch fixes the bug. It would need tidying up before
>> being committed:
>>
>>
>>
>> diff --git a/lisp/electric.el b/lisp/electric.el
>> index 07da2f1d9e..15a42930c1 100644
>> --- a/lisp/electric.el
>> +++ b/lisp/electric.el
>> @@ -282,9 +282,15 @@ electric-indent-post-self-insert-function
>> (condition-case-unless-debug ()
>> (indent-according-to-mode)
>> (error (throw 'indent-error nil)))
>> - ;; The goal here will be to remove the trailing
>> - ;; whitespace after reindentation of the previous line
>> - ;; because that may have (re)introduced it.
>> + )
>> + (unless (memq indent-line-function
>> + electric-indent-functions-without-reindent)
>> + ;; The goal here will be to remove the indentation
>> + ;; whitespace from an otherwise blank line after
>> + ;; typing <CR> twice in succession. Also to remove
>> + ;; trailing whitespace after reindentation of the
>> + ;; previous line because that may have
>> + ;; (re)introduced it.
>> (goto-char before)
>> ;; We were at EOL in marker `before' before the call
>> ;; to `indent-according-to-mode' but after we may
>>
>>
>> João and Noam, what're your views on this proposed patch?
> 1. Does it fix the reported problem (assuming it is a problem, and not
> an otherwise potentially desirable change in behaviour)?
It does fix the problem.
> 2. Do any of you have suspicions that it might introduce problems
> elsewhere?
I'm unsure. It seems to be undoing a small part of [fd94312443]
2019-01-22 "electric-layout-mode kicks in before electric-pair-mode", so
I guess it might rebreak whatever that commit is fixing. But I don't
quite understand what that commit is fixing (in particular, where the
commit message says "which can be a problem in some modes", which modes
are those? What is "a problem"?).
> 3. Does it pass the automated test suite?
No, it breaks 3 tests in tests/lisp/electric.el:
3 unexpected results:
FAILED electric-layout-int-main-kernel-style
FAILED electric-layout-plainer-c-mode-use-c-style
FAILED electric-modes-int-main-allman-style
In each case, the reason for failure is that the expected result has
trailing whitespace that the actual result misses. I guess
electric-layout does want to put trailing whitespace in certain cases?
next prev parent reply other threads:[~2019-05-13 23:38 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-13 6:32 bug#35254: 27.0.50; cc-mode/electric-pair-mode/electric-layout-mode: bad trailing whitespace behavior in cc-mode Dima Kogan
2019-05-11 3:12 ` Noam Postavsky
2019-05-11 12:05 ` Alan Mackenzie
[not found] ` <20190511120524.GA15991@ACM>
2019-05-11 14:06 ` Noam Postavsky
2019-05-11 16:19 ` Alan Mackenzie
2019-05-11 19:34 ` Basil L. Contovounesios
2019-05-12 16:14 ` Alan Mackenzie
2019-05-12 21:45 ` Basil L. Contovounesios
2019-05-13 10:14 ` Alan Mackenzie
[not found] ` <20190513101448.GA5525@ACM>
2019-05-13 12:49 ` Basil L. Contovounesios
2019-05-12 15:12 ` Alan Mackenzie
2019-05-12 18:42 ` Noam Postavsky
2019-05-13 19:53 ` Alan Mackenzie
[not found] ` <20190513195323.GB5525@ACM>
2019-05-13 22:39 ` João Távora
2019-05-13 23:38 ` Noam Postavsky [this message]
2019-05-14 1:20 ` João Távora
2019-05-14 1:28 ` Stefan Monnier
2019-05-14 1:56 ` Noam Postavsky
2019-05-14 8:38 ` Alan Mackenzie
2019-05-13 23:32 ` Stefan Monnier
[not found] ` <jwvimue9bzj.fsf-monnier+emacs@gnu.org>
2019-05-13 23:45 ` Noam Postavsky
2019-05-14 1:26 ` Stefan Monnier
2019-05-14 9:27 ` Alan Mackenzie
2019-05-14 9:34 ` Alan Mackenzie
[not found] ` <20190514092735.GB4231@ACM>
2019-05-14 10:34 ` João Távora
2019-05-15 10:03 ` Alan Mackenzie
2019-05-15 11:27 ` João Távora
2019-05-15 13:19 ` Stefan Monnier
2019-05-15 13:55 ` João Távora
2019-05-15 14:03 ` João Távora
2019-07-01 12:24 ` João Távora
2019-07-01 13:34 ` Alan Mackenzie
[not found] ` <20190701133427.GA23312@ACM>
2019-07-06 16:24 ` Noam Postavsky
2019-07-06 22:24 ` João Távora
2019-07-06 22:50 ` Noam Postavsky
2019-07-06 22:33 ` João Távora
[not found] ` <20190514093415.GC4231@ACM>
2019-05-14 15:38 ` 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=87a7fphqlz.fsf@gmail.com \
--to=npostavs@gmail.com \
--cc=35254@debbugs.gnu.org \
--cc=acm@muc.de \
--cc=dima@secretsauce.net \
--cc=joaotavora@gmail.com \
--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.