* bug#29959: cc-mode: wrong indentation in absence of semicolon @ 2018-01-03 6:02 Konstantin Kharlamov 2018-01-13 11:11 ` Konstantin Kharlamov 0 siblings, 1 reply; 7+ messages in thread From: Konstantin Kharlamov @ 2018-01-03 6:02 UTC (permalink / raw) To: 29959 # 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)) ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#29959: cc-mode: wrong indentation in absence of semicolon 2018-01-03 6:02 bug#29959: cc-mode: wrong indentation in absence of semicolon Konstantin Kharlamov @ 2018-01-13 11:11 ` Konstantin Kharlamov 2018-01-13 20:37 ` Alan Mackenzie 0 siblings, 1 reply; 7+ messages in thread From: Konstantin Kharlamov @ 2018-01-13 11:11 UTC (permalink / raw) To: 29959 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)) ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#29959: cc-mode: wrong indentation in absence of semicolon 2018-01-13 11:11 ` Konstantin Kharlamov @ 2018-01-13 20:37 ` Alan Mackenzie 2018-01-18 18:41 ` Alan Mackenzie [not found] ` <20180118184137.GB21934@ACM> 0 siblings, 2 replies; 7+ messages in thread From: Alan Mackenzie @ 2018-01-13 20:37 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 29959 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). ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#29959: cc-mode: wrong indentation in absence of semicolon 2018-01-13 20:37 ` Alan Mackenzie @ 2018-01-18 18:41 ` Alan Mackenzie [not found] ` <20180118184137.GB21934@ACM> 1 sibling, 0 replies; 7+ messages in thread From: Alan Mackenzie @ 2018-01-18 18:41 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 29959 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). ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20180118184137.GB21934@ACM>]
* bug#29959: cc-mode: wrong indentation in absence of semicolon [not found] ` <20180118184137.GB21934@ACM> @ 2018-01-18 19:08 ` Konstantin Kharlamov 2018-01-18 19:19 ` Konstantin Kharlamov 2018-02-08 1:53 ` Noam Postavsky 1 sibling, 1 reply; 7+ messages in thread From: Konstantin Kharlamov @ 2018-01-18 19:08 UTC (permalink / raw) To: Alan Mackenzie; +Cc: 29959 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 > >> [ .... ] > ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#29959: cc-mode: wrong indentation in absence of semicolon 2018-01-18 19:08 ` Konstantin Kharlamov @ 2018-01-18 19:19 ` Konstantin Kharlamov 0 siblings, 0 replies; 7+ messages in thread From: Konstantin Kharlamov @ 2018-01-18 19:19 UTC (permalink / raw) To: Alan Mackenzie; +Cc: 29959 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 >> >>> [ .... ] >> ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#29959: cc-mode: wrong indentation in absence of semicolon [not found] ` <20180118184137.GB21934@ACM> 2018-01-18 19:08 ` Konstantin Kharlamov @ 2018-02-08 1:53 ` Noam Postavsky 1 sibling, 0 replies; 7+ messages in thread From: Noam Postavsky @ 2018-02-08 1:53 UTC (permalink / raw) To: Alan Mackenzie; +Cc: 29959, Konstantin Kharlamov tags 29959 fixed close 29959 quit Alan Mackenzie <acm@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. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-02-08 1:53 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-01-03 6:02 bug#29959: cc-mode: wrong indentation in absence of semicolon Konstantin Kharlamov 2018-01-13 11:11 ` Konstantin Kharlamov 2018-01-13 20:37 ` Alan Mackenzie 2018-01-18 18:41 ` Alan Mackenzie [not found] ` <20180118184137.GB21934@ACM> 2018-01-18 19:08 ` Konstantin Kharlamov 2018-01-18 19:19 ` Konstantin Kharlamov 2018-02-08 1:53 ` Noam Postavsky
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).