GNU bug report logs -
#29959
cc-mode: wrong indentation in absence of semicolon
Previous Next
Reported by: Konstantin Kharlamov <hi-angel <at> yandex.ru>
Date: Wed, 3 Jan 2018 06:03:02 UTC
Severity: minor
Tags: fixed
Done: Noam Postavsky <npostavs <at> users.sourceforge.net>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 29959 in the body.
You can then email your comments to 29959 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#29959
; Package
emacs
.
(Wed, 03 Jan 2018 06:03:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Konstantin Kharlamov <hi-angel <at> yandex.ru>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Wed, 03 Jan 2018 06:03:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
# Steps to reproduce:
1. Open emacs -Q test.c
2. Write the following:
int main() {
int a,
}
3. put the caret after the comma symbol, and press enter, e.g. to
continue writing variables on the new line.
# Expected:
the new line alignment stands out with regard to the prev. line.
# Actual:
the new line aligned to the beginning of the prev. line.
# Workarounds:
Typing the following text:
int main() {
int a,;
}
…then pressing enter right after the comma works as expected.
------------
In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
of 2017-12-15 built on constantine-N61Ja
Repository revision: 6c301afa70f6eac32ad1ce92412ea3cf6fcdeeca
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Arch Linux
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Configured using:
'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
--localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
--with-sound=alsa --with-xft --with-modules --with-x-toolkit=gtk3
--without-gconf --without-gsettings --without-gpm --without-m17n-flt
--without-imagemagick 'CFLAGS=-flto=2 -march=native -O3 -pipe
-fno-stack-protector -fweb -fno-semantic-interposition
-fmerge-all-constants' 'LDFLAGS=-flto=2 -O3 -march=native -fweb
-fno-semantic-interposition -fmerge-all-constants -floop-nest-optimize
-Wl,--sort-common,-z,relro -fuse-ld=gold''
Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND DBUS NOTIFY ACL GNUTLS LIBXML2 FREETYPE
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES LIBSYSTEMD JSON
LCMS2
Important settings:
value of $LC_CTYPE: ru_RU.UTF-8
value of $LC_TIME: ru_RU.UTF-8
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=none
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
None found.
Features:
(shadow sort mail-extr emacsbug message rmc puny seq byte-opt gv
bytecomp byte-compile cconv cl-loaddefs cl-lib dired dired-loaddefs
format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg
epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils elec-pair time-date
mule-util cyril-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify lcms2
dynamic-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)
Memory information:
((conses 16 95121 11339)
(symbols 48 20190 1)
(miscs 40 48 119)
(strings 32 28421 1060)
(string-bytes 1 750170)
(vectors 16 14089)
(vector-slots 8 494084 10026)
(floats 8 49 212)
(intervals 56 239 0)
(buffers 992 11))
Information forwarded
to
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:
bug#29959
; Package
emacs,cc-mode
.
(Sat, 13 Jan 2018 11:12:02 GMT)
Full text and
rfc822 format available.
Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):
Just tested with current git, the problem is still present.
I am almost sure this is a regression, I don't remember having that
problem before. The real-world consequences are just too annoying for it
to go unnoticed — basically, every time I'm typing variables indentation
just doesn't work. And I also seem to remember a few irrelevant
situations where I was typing conditions with the like results.
On 03.01.2018 09:02, Konstantin Kharlamov wrote:
> # Steps to reproduce:
> 1. Open emacs -Q test.c
> 2. Write the following:
>
> int main() {
> int a,
> }
>
> 3. put the caret after the comma symbol, and press enter, e.g. to
> continue writing variables on the new line.
>
> # Expected:
> the new line alignment stands out with regard to the prev. line.
>
> # Actual:
> the new line aligned to the beginning of the prev. line.
>
> # Workarounds:
> Typing the following text:
>
> int main() {
> int a,;
> }
>
> …then pressing enter right after the comma works as expected.
>
> ------------
>
> In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
> of 2017-12-15 built on constantine-N61Ja
> Repository revision: 6c301afa70f6eac32ad1ce92412ea3cf6fcdeeca
> Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
> System Description: Arch Linux
>
> Recent messages:
> For information about GNU Emacs and the GNU system, type C-h C-a.
>
> Configured using:
> 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
> --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
> --with-sound=alsa --with-xft --with-modules --with-x-toolkit=gtk3
> --without-gconf --without-gsettings --without-gpm --without-m17n-flt
> --without-imagemagick 'CFLAGS=-flto=2 -march=native -O3 -pipe
> -fno-stack-protector -fweb -fno-semantic-interposition
> -fmerge-all-constants' 'LDFLAGS=-flto=2 -O3 -march=native -fweb
> -fno-semantic-interposition -fmerge-all-constants -floop-nest-optimize
> -Wl,--sort-common,-z,relro -fuse-ld=gold''
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG SOUND DBUS NOTIFY ACL GNUTLS LIBXML2 FREETYPE
> LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES LIBSYSTEMD JSON
> LCMS2
>
> Important settings:
> value of $LC_CTYPE: ru_RU.UTF-8
> value of $LC_TIME: ru_RU.UTF-8
> value of $LANG: en_US.UTF-8
> value of $XMODIFIERS: @im=none
> locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
> tooltip-mode: t
> global-eldoc-mode: t
> eldoc-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> tool-bar-mode: t
> menu-bar-mode: t
> file-name-shadow-mode: t
> global-font-lock-mode: t
> font-lock-mode: t
> blink-cursor-mode: t
> auto-composition-mode: t
> auto-encryption-mode: t
> auto-compression-mode: t
> line-number-mode: t
> transient-mark-mode: t
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort mail-extr emacsbug message rmc puny seq byte-opt gv
> bytecomp byte-compile cconv cl-loaddefs cl-lib dired dired-loaddefs
> format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg
> epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
> mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
> rfc2045 ietf-drums mm-util mail-prsvr mail-utils elec-pair time-date
> mule-util cyril-util tooltip eldoc electric uniquify ediff-hook vc-hooks
> lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
> dnd fontset image regexp-opt fringe tabulated-list replace newcomment
> text-mode elisp-mode lisp-mode prog-mode register page menu-bar
> rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
> syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
> utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
> japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
> ethiopic indian cyrillic chinese composite charscript charprop
> case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
> cl-preloaded nadvice loaddefs button faces cus-face macroexp files
> text-properties overlay sha1 md5 base64 format env code-pages mule
> custom widget hashtable-print-readable backquote dbusbind inotify lcms2
> dynamic-setting font-render-setting move-toolbar gtk x-toolkit x
> multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 95121 11339)
> (symbols 48 20190 1)
> (miscs 40 48 119)
> (strings 32 28421 1060)
> (string-bytes 1 750170)
> (vectors 16 14089)
> (vector-slots 8 494084 10026)
> (floats 8 49 212)
> (intervals 56 239 0)
> (buffers 992 11))
Information forwarded
to
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:
bug#29959
; Package
emacs,cc-mode
.
(Sat, 13 Jan 2018 20:44:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 29959 <at> debbugs.gnu.org (full text, mbox):
Hello, Konstantin.
On Sat, Jan 13, 2018 at 14:11:31 +0300, Konstantin Kharlamov wrote:
> Just tested with current git, the problem is still present.
> I am almost sure this is a regression, I don't remember having that
> problem before. The real-world consequences are just too annoying for it
> to go unnoticed — basically, every time I'm typing variables indentation
> just doesn't work. And I also seem to remember a few irrelevant
> situations where I was typing conditions with the like results.
The problem originates in a new feature, C99 compound literals, which was
committed on 2017-11-10. This detects brace blocks (meaning something
like the initialisation of a struct) in the middle of executable code,
but it is clear the test for such a brace block isn't rigorous enough,
since even function blocks are being mistaken for them.
> On 03.01.2018 09:02, Konstantin Kharlamov wrote:
> > # Steps to reproduce:
> > 1. Open emacs -Q test.c
> > 2. Write the following:
> > int main() {
> > int a,
> > }
> > 3. put the caret after the comma symbol, and press enter, e.g. to
> > continue writing variables on the new line.
> > # Expected:
> > the new line alignment stands out with regard to the prev. line.
> > # Actual:
> > the new line aligned to the beginning of the prev. line.
> > # Workarounds:
> > Typing the following text:
> > int main() {
> > int a,;
> > }
> > …then pressing enter right after the comma works as expected.
At the moment, the bug you're seeing is triggered by CC Mode checking for
commas and semicolons in blocks; if the last such delimiter is a comma,
the block is taken as a brace block. So a workaround, for the moment, is
to ensure that you have a semicolon in each block as the last delimiter
there.
I will be working on fixing this bug. Thanks for taking the trouble to
report it.
> > ------------
> > In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
> > of 2017-12-15 built on constantine-N61Ja
> > Repository revision: 6c301afa70f6eac32ad1ce92412ea3cf6fcdeeca
> > Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
> > System Description: Arch Linux
[ .... ]
--
Alan Mackenzie (Nuremberg, Germany).
Information forwarded
to
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:
bug#29959
; Package
emacs,cc-mode
.
(Thu, 18 Jan 2018 18:49:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 29959 <at> debbugs.gnu.org (full text, mbox):
Hello again, Konstantin.
On Sat, Jan 13, 2018 at 20:37:52 +0000, Alan Mackenzie wrote:
> On Sat, Jan 13, 2018 at 14:11:31 +0300, Konstantin Kharlamov wrote:
> > Just tested with current git, the problem is still present.
> > I am almost sure this is a regression, I don't remember having that
> > problem before. The real-world consequences are just too annoying for it
> > to go unnoticed — basically, every time I'm typing variables indentation
> > just doesn't work. And I also seem to remember a few irrelevant
> > situations where I was typing conditions with the like results.
> The problem originates in a new feature, C99 compound literals, which was
> committed on 2017-11-10. This detects brace blocks (meaning something
> like the initialisation of a struct) in the middle of executable code,
> but it is clear the test for such a brace block isn't rigorous enough,
> since even function blocks are being mistaken for them.
The new feature, C99 compound literals, has been removed from the
emacs-26 branch, so as to avoid delaying the relase process for that
branch. The commit has hash 36edb6cb97ce3d53543c87643077d270bb5bdfd1,
and it should apply without problems to the master branch.
It is to be hoped that a more elaborate and more correct solution will
be found soon for the master branch.
> > On 03.01.2018 09:02, Konstantin Kharlamov wrote:
> > > # Steps to reproduce:
> > > 1. Open emacs -Q test.c
> > > 2. Write the following:
> > > int main() {
> > > int a,
> > > }
> > > 3. put the caret after the comma symbol, and press enter, e.g. to
> > > continue writing variables on the new line.
> > > # Expected:
> > > the new line alignment stands out with regard to the prev. line.
> > > # Actual:
> > > the new line aligned to the beginning of the prev. line.
> > > # Workarounds:
> > > Typing the following text:
> > > int main() {
> > > int a,;
> > > }
> > > …then pressing enter right after the comma works as expected.
> > > ------------
> > > In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
> > > of 2017-12-15 built on constantine-N61Ja
> > > Repository revision: 6c301afa70f6eac32ad1ce92412ea3cf6fcdeeca
> > > Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
> > > System Description: Arch Linux
> [ .... ]
--
Alan Mackenzie (Nuremberg, Germany).
Information forwarded
to
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:
bug#29959
; Package
emacs,cc-mode
.
(Thu, 18 Jan 2018 19:09:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 29959 <at> debbugs.gnu.org (full text, mbox):
Cool, thanks, I applied it locally, works for me!
On 18.01.2018 21:41, Alan Mackenzie wrote:
> Hello again, Konstantin.
>
> On Sat, Jan 13, 2018 at 20:37:52 +0000, Alan Mackenzie wrote:
>> On Sat, Jan 13, 2018 at 14:11:31 +0300, Konstantin Kharlamov wrote:
>>> Just tested with current git, the problem is still present.
>
>>> I am almost sure this is a regression, I don't remember having that
>>> problem before. The real-world consequences are just too annoying for it
>>> to go unnoticed — basically, every time I'm typing variables indentation
>>> just doesn't work. And I also seem to remember a few irrelevant
>>> situations where I was typing conditions with the like results.
>
>> The problem originates in a new feature, C99 compound literals, which was
>> committed on 2017-11-10. This detects brace blocks (meaning something
>> like the initialisation of a struct) in the middle of executable code,
>> but it is clear the test for such a brace block isn't rigorous enough,
>> since even function blocks are being mistaken for them.
>
> The new feature, C99 compound literals, has been removed from the
> emacs-26 branch, so as to avoid delaying the relase process for that
> branch. The commit has hash 36edb6cb97ce3d53543c87643077d270bb5bdfd1,
> and it should apply without problems to the master branch.
>
> It is to be hoped that a more elaborate and more correct solution will
> be found soon for the master branch.
>
>>> On 03.01.2018 09:02, Konstantin Kharlamov wrote:
>>>> # Steps to reproduce:
>>>> 1. Open emacs -Q test.c
>>>> 2. Write the following:
>
>>>> int main() {
>>>> int a,
>>>> }
>
>>>> 3. put the caret after the comma symbol, and press enter, e.g. to
>>>> continue writing variables on the new line.
>
>>>> # Expected:
>>>> the new line alignment stands out with regard to the prev. line.
>
>>>> # Actual:
>>>> the new line aligned to the beginning of the prev. line.
>
>>>> # Workarounds:
>>>> Typing the following text:
>
>>>> int main() {
>>>> int a,;
>>>> }
>
>>>> …then pressing enter right after the comma works as expected.
>
>>>> ------------
>
>>>> In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
>>>> of 2017-12-15 built on constantine-N61Ja
>>>> Repository revision: 6c301afa70f6eac32ad1ce92412ea3cf6fcdeeca
>>>> Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
>>>> System Description: Arch Linux
>
>> [ .... ]
>
Information forwarded
to
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:
bug#29959
; Package
emacs,cc-mode
.
(Thu, 18 Jan 2018 19:20:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 29959 <at> debbugs.gnu.org (full text, mbox):
Sorry, I mean, not cool that it doesn't work, but cool there's a workaround.
On side note — though I am not experienced in elisp — I think it'd be
nice to add a comment in the removed code that it's looking for C99
compound literals. Otherwise I personally struggle to understand what's
being looked up there. In fact, whole file doesn't mention sentence "C99
compound literals" anywhere.
On 18.01.2018 22:08, Konstantin Kharlamov wrote:
> Cool, thanks, I applied it locally, works for me!
>
> On 18.01.2018 21:41, Alan Mackenzie wrote:
>> Hello again, Konstantin.
>>
>> On Sat, Jan 13, 2018 at 20:37:52 +0000, Alan Mackenzie wrote:
>>> On Sat, Jan 13, 2018 at 14:11:31 +0300, Konstantin Kharlamov wrote:
>>>> Just tested with current git, the problem is still present.
>>
>>>> I am almost sure this is a regression, I don't remember having that
>>>> problem before. The real-world consequences are just too annoying
>>>> for it
>>>> to go unnoticed — basically, every time I'm typing variables
>>>> indentation
>>>> just doesn't work. And I also seem to remember a few irrelevant
>>>> situations where I was typing conditions with the like results.
>>
>>> The problem originates in a new feature, C99 compound literals, which
>>> was
>>> committed on 2017-11-10. This detects brace blocks (meaning something
>>> like the initialisation of a struct) in the middle of executable code,
>>> but it is clear the test for such a brace block isn't rigorous enough,
>>> since even function blocks are being mistaken for them.
>>
>> The new feature, C99 compound literals, has been removed from the
>> emacs-26 branch, so as to avoid delaying the relase process for that
>> branch. The commit has hash 36edb6cb97ce3d53543c87643077d270bb5bdfd1,
>> and it should apply without problems to the master branch.
>>
>> It is to be hoped that a more elaborate and more correct solution will
>> be found soon for the master branch.
>>
>>>> On 03.01.2018 09:02, Konstantin Kharlamov wrote:
>>>>> # Steps to reproduce:
>>>>> 1. Open emacs -Q test.c
>>>>> 2. Write the following:
>>
>>>>> int main() {
>>>>> int a,
>>>>> }
>>
>>>>> 3. put the caret after the comma symbol, and press enter, e.g. to
>>>>> continue writing variables on the new line.
>>
>>>>> # Expected:
>>>>> the new line alignment stands out with regard to the prev. line.
>>
>>>>> # Actual:
>>>>> the new line aligned to the beginning of the prev. line.
>>
>>>>> # Workarounds:
>>>>> Typing the following text:
>>
>>>>> int main() {
>>>>> int a,;
>>>>> }
>>
>>>>> …then pressing enter right after the comma works as expected.
>>
>>>>> ------------
>>
>>>>> In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>>>>> 3.22.26)
>>>>> of 2017-12-15 built on constantine-N61Ja
>>>>> Repository revision: 6c301afa70f6eac32ad1ce92412ea3cf6fcdeeca
>>>>> Windowing system distributor 'The X.Org Foundation', version
>>>>> 11.0.11906000
>>>>> System Description: Arch Linux
>>
>>> [ .... ]
>>
Information forwarded
to
bug-gnu-emacs <at> gnu.org, bug-cc-mode <at> gnu.org
:
bug#29959
; Package
emacs,cc-mode
.
(Thu, 08 Feb 2018 01:54:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 29959 <at> debbugs.gnu.org (full text, mbox):
tags 29959 fixed
close 29959
quit
Alan Mackenzie <acm <at> muc.de> writes:
> The new feature, C99 compound literals, has been removed from the
> emacs-26 branch, so as to avoid delaying the relase process for that
> branch. The commit has hash 36edb6cb97ce3d53543c87643077d270bb5bdfd1,
> and it should apply without problems to the master branch.
>
> It is to be hoped that a more elaborate and more correct solution will
> be found soon for the master branch.
Seems to be fixed on the master branch too by now.
Added tag(s) fixed.
Request was from
Noam Postavsky <npostavs <at> users.sourceforge.net>
to
control <at> debbugs.gnu.org
.
(Thu, 08 Feb 2018 01:54:02 GMT)
Full text and
rfc822 format available.
bug closed, send any further explanations to
29959 <at> debbugs.gnu.org and Konstantin Kharlamov <hi-angel <at> yandex.ru>
Request was from
Noam Postavsky <npostavs <at> users.sourceforge.net>
to
control <at> debbugs.gnu.org
.
(Thu, 08 Feb 2018 01:54:02 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 08 Mar 2018 12:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 7 years and 109 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.