GNU bug report logs -
#62386
CC Mode 5.35.2 (C++//l); C++ concept indentation
Previous Next
Full log
Message #29 received at 62386 <at> debbugs.gnu.org (full text, mbox):
Hello, Michael.
Sorry for the delay, it's been a bit of a rough week, here.
On Fri, Apr 07, 2023 at 12:00:13 -0400, Michael Welsh Duggan wrote:
> Alan Mackenzie <acm <at> muc.de> writes:
[ .... ]
> Much, much better!
Thanks for the testing.
> I have only one niggling nit left, and this one doesn't bother me
> nearly as much as the others. The nit is that opening parentheses
> don't seem to open up a new indention context anymore. (That's my
> internal mental terminology, not necessary what it used by cc-mode.)
> Before:
> template <typename T>
> requires (OctetLike<T>
> || (std::rank_v<T> == 1 && std::extent_v<T> == 0
> && OctetLike<std::remove_extent_t<T>>))
> Chunk(std::shared_ptr<T> const & p, length_t size)
> : data_{p, octet_cast(p.get())},
> size_{size}
> {}
> After:
> template <typename T>
> requires (OctetLike<T>
> || (std::rank_v<T> == 1 && std::extent_v<T> == 0
> && OctetLike<std::remove_extent_t<T>>))
> Chunk(std::shared_ptr<T> const & p, length_t size)
> : data_{p, octet_cast(p.get())},
> size_{size}
> {}
This is a difficult one. Aligning the || under OctetLike causes problems
when the parenthesis is already far to the right, for example if requires
is on the same line as template. Then everything will be indented too
far to the right. This dilemma has come up at least twice before.
I think what's worse is the lack of further indentation of the && line.
I don't know what to do about that, at the moment.
I'm also a little bit worried about the "virtual semicolon" detection on
some more complicated requires constructs.
Anyhow, I think I'll commit what I've got, and leave these doubts to be
cleared up later.
> --
> Michael Welsh Duggan
> (md5i <at> md5i.com)
--
Alan Mackenzie (Nuremberg, Germany).
This bug report was last modified 2 years and 34 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.