GNU bug report logs -
#62841
CC Mode 5.35.2 (Group); Template indentation problems
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 62841 in the body.
You can then email your comments to 62841 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-cc-mode <at> gnu.org
:
bug#62841
; Package
cc-mode
.
(Fri, 14 Apr 2023 18:19:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Michael Welsh Duggan <mwd <at> md5i.com>
:
New bug report received and forwarded. Copy sent to
bug-cc-mode <at> gnu.org
.
(Fri, 14 Apr 2023 18:19:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Package: cc-mode
Package: cc-mode
Load the included file, bar.cpp:
[bar.cpp (text/x-c\+\+src, attachment)]
[Message part 3 (text/plain, inline)]
For example:
emacs -Q /tmp/bar.cpp
Type:
C-x h C-M-\
First, note that std::variant is not indented with respect to std::pair.
Next, delete and re-insert the final angle bracket on the line that
reads:
std::pair<ipfix::InfoElementID,std::vector<T>>,
Note the re-indention.
template <typename T>
using value_variant=3D
std::pair<
std::variant<
ipfix::octetArray_t,
ipfix::unsigned8_t,
ipfix::unsigned16_t,
ipfix::unsigned32_t,
ipfix::unsigned64_t,
ipfix::signed8_t,
ipfix::signed16_t,
ipfix::signed32_t,
ipfix::signed64_t,
ipfix::float32_t,
ipfix::float64_t,
ipfix::boolean_t,
ipfix::macAddress_t,
ipfix::string_t,
ipfix::dateTimeSeconds_t,
ipfix::dateTimeMilliseconds_t,
ipfix::dateTimeMicroseconds_t,
ipfix::dateTimeNanoseconds_t,
ipfix::ipv4Address_t,
ipfix::ipv6Address_t,
std::pair<ipfix::InfoElementID,std::vector<T>>,
std::pair<ipfix::TemplateID,std::vector<std::vector<T>>>,
std::pair<std::vector<
std::pair<
ipfix::TemplateID,
std::vector<std::vector<T>>>>>>,
ipfix::length_t>;
Then, try C-x h C-M-\ again. Note another reindentation.
template <typename T>
using value_variant=3D
std::pair<
std::variant<
ipfix::octetArray_t,
ipfix::unsigned8_t,
ipfix::unsigned16_t,
ipfix::unsigned32_t,
ipfix::unsigned64_t,
ipfix::signed8_t,
ipfix::signed16_t,
ipfix::signed32_t,
ipfix::signed64_t,
ipfix::float32_t,
ipfix::float64_t,
ipfix::boolean_t,
ipfix::macAddress_t,
ipfix::string_t,
ipfix::dateTimeSeconds_t,
ipfix::dateTimeMilliseconds_t,
ipfix::dateTimeMicroseconds_t,
ipfix::dateTimeNanoseconds_t,
ipfix::ipv4Address_t,
ipfix::ipv6Address_t,
std::pair<ipfix::InfoElementID,std::vector<T>>,
std::pair<ipfix::TemplateID,std::vector<std::vector<T>>>,
std::pair<std::vector<
std::pair<
ipfix::TemplateID,
std::vector<std::vector<T>>>>>>,
ipfix::length_t>;
Type C-x h C-M-\ again. Another re-indentation. This
one is stable, but incorrect.
template <typename T>
using value_variant=3D
std::pair<
std::variant<
ipfix::octetArray_t,
ipfix::unsigned8_t,
ipfix::unsigned16_t,
ipfix::unsigned32_t,
ipfix::unsigned64_t,
ipfix::signed8_t,
ipfix::signed16_t,
ipfix::signed32_t,
ipfix::signed64_t,
ipfix::float32_t,
ipfix::float64_t,
ipfix::boolean_t,
ipfix::macAddress_t,
ipfix::string_t,
ipfix::dateTimeSeconds_t,
ipfix::dateTimeMilliseconds_t,
ipfix::dateTimeMicroseconds_t,
ipfix::dateTimeNanoseconds_t,
ipfix::ipv4Address_t,
ipfix::ipv6Address_t,
std::pair<ipfix::InfoElementID,std::vector<T>>,
std::pair<ipfix::TemplateID,std::vector<std::vector<T>>>,
std::pair<std::vector<
std::pair<
ipfix::TemplateID,
std::vector<std::vector<T>>>>>>,
ipfix::length_t>;
Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo =
version 1.16.0)
of 2023-04-14
Package: CC Mode 5.35.2 (C++//l)
Buffer Style: gnu
c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-st=
ring-delim gen-comment-delim syntax-properties category-properties 1-bit)
current state:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
(setq
c-basic-offset 2
c-comment-only-line-offset '(0 . 0)
c-indent-comment-alist '((anchored-comment column . 0) (end-block space . =
1)
(cpp-end-block space . 2))
c-indent-comments-syntactically-p nil
c-block-comment-prefix ""
c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (awk-mode . "#+")
(other . "//+\\|\\**"))
c-doc-comment-style '((java-mode . javadoc) (pike-mode . autodoc)
(c-mode . gtkdoc) (c++-mode . gtkdoc))
c-cleanup-list '(scope-operator)
c-hanging-braces-alist '((substatement-open before after)
(arglist-cont-nonempty))
c-hanging-colons-alist nil
c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist)
c-backslash-column 48
c-backslash-max-column 72
c-special-indent-hook '(t c-gnu-impose-minimum)
c-label-minimum-indentation 1
c-offsets-alist '((inexpr-class . +)
(inexpr-statement . +)
(lambda-intro-cont . +)
(inlambda . 0)
(template-args-cont c-lineup-template-args +)
(incomposition . +)
(inmodule . +)
(innamespace . +)
(inextern-lang . +)
(composition-close . 0)
(module-close . 0)
(namespace-close . 0)
(extern-lang-close . 0)
(composition-open . 0)
(module-open . 0)
(namespace-open . 0)
(extern-lang-open . 0)
(objc-method-call-cont
c-lineup-ObjC-method-call-colons
c-lineup-ObjC-method-call
+
)
(objc-method-args-cont . c-lineup-ObjC-method-args)
(objc-method-intro . [0])
(friend . 0)
(cpp-define-intro c-lineup-cpp-define +)
(cpp-macro-cont . +)
(cpp-macro . [0])
(inclass . +)
(stream-op . c-lineup-streamop)
(arglist-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist
)
(arglist-cont c-lineup-gcc-asm-reg 0)
(comment-intro
c-lineup-knr-region-comment
c-lineup-comment
)
(catch-clause . 0)
(else-clause . 0)
(do-while-closure . 0)
(access-label . -)
(case-label . 0)
(substatement . +)
(statement-case-intro . +)
(statement . 0)
(brace-entry-open . 0)
(brace-list-entry . 0)
(brace-list-close . 0)
(block-close . 0)
(block-open . 0)
(inher-cont . c-lineup-multi-inher)
(inher-intro . +)
(member-init-cont . c-lineup-multi-inher)
(member-init-intro . +)
(annotation-var-cont . +)
(annotation-top-cont . 0)
(constraint-cont . +)
(topmost-intro . 0)
(knr-argdecl . 0)
(func-decl-cont . +)
(inline-close . 0)
(class-close . 0)
(class-open . 0)
(defun-block-intro . +)
(defun-close . 0)
(defun-open . 0)
(c . c-lineup-C-comments)
(string . c-lineup-dont-change)
(topmost-intro-cont
first
c-lineup-topmost-intro-cont
c-lineup-gnu-DEFUN-intro-cont
)
(brace-list-intro
first
c-lineup-2nd-brace-entry-in-arglist
c-lineup-class-decl-init-+
+
)
(brace-list-open . +)
(inline-open . 0)
(arglist-close . c-lineup-arglist)
(arglist-intro . c-lineup-arglist-intro-after-paren)
(statement-cont . +)
(statement-case-open . +)
(label . 0)
(substatement-label . 0)
(substatement-open . +)
(knr-argdecl-intro . 5)
(statement-block-intro . +)
)
c-buffer-is-cc-mode 'c++-mode
c-tab-always-indent t
c-syntactic-indentation t
c-syntactic-indentation-in-macros t
c-ignore-auto-fill '(string cpp code)
c-auto-align-backslashes t
c-backspace-function 'backward-delete-char-untabify
c-delete-function 'delete-char
c-electric-pound-behavior nil
c-default-style '((java-mode . "java") (awk-mode . "awk") (other . "gnu"))
c-enable-xemacs-performance-kludge-p nil
c-old-style-variable-behavior nil
defun-prompt-regexp nil
tab-width 8
comment-column 32
parse-sexp-ignore-comments t
parse-sexp-lookup-properties t
auto-fill-function nil
comment-multi-line t
comment-start-skip "\\(?://+\\|/\\*+\\)\\s *"
fill-prefix nil
fill-column 70
paragraph-start "[ ]*\\(//+\\|\\**\\)[ ]*$\\|^\f"
adaptive-fill-mode t
adaptive-fill-regexp "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([-=E2=80=93!|#%=
;>*=C2=B7=E2=80=A2=E2=80=A3=E2=81=83=E2=97=A6]+[ ]*\\)*\\)"
)
--
Michael Welsh Duggan
(md5i <at> md5i.com)
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#62841
; Package
cc-mode
.
(Sun, 23 Apr 2023 13:45:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 62841 <at> debbugs.gnu.org (full text, mbox):
Hello, Michael.
Thanks for the bug report.
On Fri, Apr 14, 2023 at 14:18:16 -0400, Michael Welsh Duggan wrote:
> Package: cc-mode
> Package: cc-mode
> Load the included file, bar.cpp:
> template <typename T>
> using value_variant=
> std::pair<
> std::variant<
> ipfix::octetArray_t,
> ipfix::unsigned8_t,
> ipfix::unsigned16_t,
> ipfix::unsigned32_t,
> ipfix::unsigned64_t,
> ipfix::signed8_t,
> ipfix::signed16_t,
> ipfix::signed32_t,
> ipfix::signed64_t,
> ipfix::float32_t,
> ipfix::float64_t,
> ipfix::boolean_t,
> ipfix::macAddress_t,
> ipfix::string_t,
> ipfix::dateTimeSeconds_t,
> ipfix::dateTimeMilliseconds_t,
> ipfix::dateTimeMicroseconds_t,
> ipfix::dateTimeNanoseconds_t,
> ipfix::ipv4Address_t,
> ipfix::ipv6Address_t,
> std::pair<ipfix::InfoElementID,std::vector<T>>,
> std::pair<ipfix::TemplateID,std::vector<std::vector<T>>>,
> std::pair<std::vector<
> std::pair<
> ipfix::TemplateID,
> std::vector<std::vector<T>>>>>>,
> ipfix::length_t>;
> For example:
> emacs -Q /tmp/bar.cpp
> Type:
> C-x h C-M-\
> First, note that std::variant is not indented with respect to std::pair.
There are actually two distinct bugs in play, here. Up till now I've
been concentrating on the second one ....
> Next, delete and re-insert the final angle bracket on the line that
> reads:
> std::pair<ipfix::InfoElementID,std::vector<T>>,
> Note the re-indention.
[ .... ]
> Then, try C-x h C-M-\ again. Note another reindentation.
[ .... ]
> Type C-x h C-M-\ again. Another re-indentation. This
> one is stable, but incorrect.
[ .... ]
At the base of these errors is a failure to apply the syntax-table text
properties consistently to the <s and >s. I'm quite some way through
fixing this, but it will be a few days yet before I'll have a working
fix.
Just as a matter of interest, the sort of thing which I'm looking at is
things like an open string such as:
" std::vector<std::vector<T>>>>>>,
, which then gets terminated, such as:
" " std::vector<std::vector<T>>>>>>,
.. The angle brackets which were in a string no longer are, so need to
have the properties applied to them and their partners. But this is
some way distant from the buffer change region.
> Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo =
> version 1.16.0)
> of 2023-04-14
> Package: CC Mode 5.35.2 (C++//l)
> Buffer Style: gnu
> c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-st=
> ring-delim gen-comment-delim syntax-properties category-properties 1-bit)
[ .... ]
> --
> Michael Welsh Duggan
> (md5i <at> md5i.com)
--
Alan Mackenzie (Nuremberg, Germany).
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#62841
; Package
cc-mode
.
(Wed, 17 May 2023 16:15:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 62841 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hello, Michael.
On Sun, Apr 23, 2023 at 13:44:29 +0000, Alan Mackenzie wrote:
> Thanks for the bug report.
> On Fri, Apr 14, 2023 at 14:18:16 -0400, Michael Welsh Duggan wrote:
> > Package: cc-mode
> > Package: cc-mode
> > Load the included file, bar.cpp:
> > template <typename T>
> > using value_variant=
> > std::pair<
> > std::variant<
> > ipfix::octetArray_t,
> > ipfix::unsigned8_t,
> > ipfix::unsigned16_t,
> > ipfix::unsigned32_t,
> > ipfix::unsigned64_t,
> > ipfix::signed8_t,
> > ipfix::signed16_t,
> > ipfix::signed32_t,
> > ipfix::signed64_t,
> > ipfix::float32_t,
> > ipfix::float64_t,
> > ipfix::boolean_t,
> > ipfix::macAddress_t,
> > ipfix::string_t,
> > ipfix::dateTimeSeconds_t,
> > ipfix::dateTimeMilliseconds_t,
> > ipfix::dateTimeMicroseconds_t,
> > ipfix::dateTimeNanoseconds_t,
> > ipfix::ipv4Address_t,
> > ipfix::ipv6Address_t,
> > std::pair<ipfix::InfoElementID,std::vector<T>>,
> > std::pair<ipfix::TemplateID,std::vector<std::vector<T>>>,
> > std::pair<std::vector<
> > std::pair<
> > ipfix::TemplateID,
> > std::vector<std::vector<T>>>>>>,
> > ipfix::length_t>;
> > For example:
> > emacs -Q /tmp/bar.cpp
> > Type:
> > C-x h C-M-\
> > First, note that std::variant is not indented with respect to std::pair.
I have amended the indentation logic, by introducing a new line-up
function, so this should be fixed, now.
> There are actually two distinct bugs in play, here. Up till now I've
> been concentrating on the second one ....
> > Next, delete and re-insert the final angle bracket on the line that
> > reads:
> > std::pair<ipfix::InfoElementID,std::vector<T>>,
> > Note the re-indention.
This, together with the other indentation problems, I hope are fixed,
too.
[ .... ]
Would you please test the enclosed patch, which should apply cleanly to
the Emacs master branch. And then let me know whether there are any
problems with it. Thanks!
Just, there might be unfound interactions between the template markers
and raw strings, but I hope not.
> > Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo =
> > version 1.16.0)
> > of 2023-04-14
> > Package: CC Mode 5.35.2 (C++//l)
> > Buffer Style: gnu
> > c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-st=
> > ring-delim gen-comment-delim syntax-properties category-properties 1-bit)
> > --
> > Michael Welsh Duggan
> > (md5i <at> md5i.com)
--
Alan Mackenzie (Nuremberg, Germany).
[diff.20230517.diff (text/plain, attachment)]
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#62841
; Package
cc-mode
.
(Thu, 08 Jun 2023 17:40:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 62841 <at> debbugs.gnu.org (full text, mbox):
Alan Mackenzie <acm <at> muc.de> writes:
> Hello, Michael.
>
> On Sun, Apr 23, 2023 at 13:44:29 +0000, Alan Mackenzie wrote:
>> Thanks for the bug report.
>
>> On Fri, Apr 14, 2023 at 14:18:16 -0400, Michael Welsh Duggan wrote:
>> > Package: cc-mode
>
>> > Package: cc-mode
>
>> > Load the included file, bar.cpp:
>
>
>> > template <typename T>
>> > using value_variant=
>> > std::pair<
>> > std::variant<
>> > ipfix::octetArray_t,
>> > ipfix::unsigned8_t,
>> > ipfix::unsigned16_t,
>> > ipfix::unsigned32_t,
>> > ipfix::unsigned64_t,
>> > ipfix::signed8_t,
>> > ipfix::signed16_t,
>> > ipfix::signed32_t,
>> > ipfix::signed64_t,
>> > ipfix::float32_t,
>> > ipfix::float64_t,
>> > ipfix::boolean_t,
>> > ipfix::macAddress_t,
>> > ipfix::string_t,
>> > ipfix::dateTimeSeconds_t,
>> > ipfix::dateTimeMilliseconds_t,
>> > ipfix::dateTimeMicroseconds_t,
>> > ipfix::dateTimeNanoseconds_t,
>> > ipfix::ipv4Address_t,
>> > ipfix::ipv6Address_t,
>> > std::pair<ipfix::InfoElementID,std::vector<T>>,
>> > std::pair<ipfix::TemplateID,std::vector<std::vector<T>>>,
>> > std::pair<std::vector<
>> > std::pair<
>> > ipfix::TemplateID,
>> > std::vector<std::vector<T>>>>>>,
>> > ipfix::length_t>;
>
>
>> > For example:
>
>> > emacs -Q /tmp/bar.cpp
>
>> > Type:
>> > C-x h C-M-\
>
>> > First, note that std::variant is not indented with respect to std::pair.
>
> I have amended the indentation logic, by introducing a new line-up
> function, so this should be fixed, now.
>
>> There are actually two distinct bugs in play, here. Up till now I've
>> been concentrating on the second one ....
>
>> > Next, delete and re-insert the final angle bracket on the line that
>> > reads:
>
>> > std::pair<ipfix::InfoElementID,std::vector<T>>,
>
>> > Note the re-indention.
>
> This, together with the other indentation problems, I hope are fixed,
> too.
>
> [ .... ]
>
> Would you please test the enclosed patch, which should apply cleanly to
> the Emacs master branch. And then let me know whether there are any
> problems with it. Thanks!
>
> Just, there might be unfound interactions between the template markers
> and raw strings, but I hope not.
>
>> > Emacs : GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo =
>> > version 1.16.0)
>> > of 2023-04-14
>> > Package: CC Mode 5.35.2 (C++//l)
>> > Buffer Style: gnu
>> > c-emacs-features: (pps-extended-state col-0-paren posix-char-classes gen-st=
>> > ring-delim gen-comment-delim syntax-properties category-properties 1-bit)
Sorry it took me so long to get around to testing this. This is *much*
better. I haven't run into any problems so far; you can be sure I will
report again if I do. Thanks!
--
Michael Welsh Duggan
(md5i <at> md5i.com)
Reply sent
to
Alan Mackenzie <acm <at> muc.de>
:
You have taken responsibility.
(Wed, 21 Jun 2023 15:50:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Michael Welsh Duggan <mwd <at> md5i.com>
:
bug acknowledged by developer.
(Wed, 21 Jun 2023 15:50:02 GMT)
Full text and
rfc822 format available.
Message #19 received at 62841-done <at> debbugs.gnu.org (full text, mbox):
Hello, Michael.
On Thu, Jun 08, 2023 at 13:39:41 -0400, Michael Welsh Duggan wrote:
> Alan Mackenzie <acm <at> muc.de> writes:
[ .... ]
> Sorry it took me so long to get around to testing this. This is *much*
> better. I haven't run into any problems so far; you can be sure I will
> report again if I do. Thanks!
Thank you!
And for my part, sorry it's taken me so long to commit it - it's been a
busy fortnight. But I have now committed the fix to CC Mode and the
Emacs master branch.
I'm closing the bug with this post.
> --
> Michael Welsh Duggan
> (md5i <at> md5i.com)
--
Alan Mackenzie (Nuremberg, Germany).
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#62841
; Package
cc-mode
.
(Sun, 25 Jun 2023 15:16:02 GMT)
Full text and
rfc822 format available.
Message #22 received at 62841 <at> debbugs.gnu.org (full text, mbox):
Hello, Michael.
On Wed, Jun 21, 2023 at 15:49:01 +0000, Alan Mackenzie wrote:
> On Thu, Jun 08, 2023 at 13:39:41 -0400, Michael Welsh Duggan wrote:
> > Alan Mackenzie <acm <at> muc.de> writes:
[ .... ]
> I'm closing the bug with this post.
I found a further problem with this bug. If on the second last line of
your test file (the one ending with ">>>>>>,", you comment out the last
three >s with a block comment, by typing in /, *, *, / one character at
a time, this leaves the > on the last line unmarked as a template
closer.
This was caused by wrongly scanning text starting between the two
characters of the comment delimiters.
I've just committed a fix to the Emacs master branch which should fix
this.
> > --
> > Michael Welsh Duggan
> > (md5i <at> md5i.com)
--
Alan Mackenzie (Nuremberg, Germany).
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Mon, 24 Jul 2023 11:24:08 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 291 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.