HazardyKnusperkeks wrote:

> > > I struggle with changes that encourage people to not be fully 
> > > clang-formatted, I would prefer to ask why we need this feature, can we 
> > > have some examples of where this would be used?
> > 
> > 
> > This makes it so only one line isn't formatted instead of the current 
> > solution which is 2 lines unformatted. Additionally, if you start writing 
> > code in between the unformatted region you inherit the unformatted scope. 
> > Being able to disable the formatter for only a single line means the 
> > formatter will be disabled for the shortest amount of code possible.
> 
> I understand what is can be used for, I'm asking why its needed? I don't 
> understand why people are needing to unformat just one line, what is broken?
> 
> The implementation IMHO just complicates the code (I much prefer the 
> isClangFormatOn() function than the parseXXXX())
> 
> I don't even deny it might be a nice to have, my concern is why do we 
> continue to appease the people who don't want to use clang-format warts and 
> all. I would prefer we put the effort into fixing the formatting issues which 
> mean people are having to use this rather than marking hundreds of lines as 
> // clang-format off.
> 
> Rather than complicating the code with a myriad of rules that effectively 
> give half a dozen ways of doing the same thing. To me the current // 
> clang-format off/on is enough, for everything else log an issue, or better 
> still submit a pull request.

I think there are multiple reasons to disable formatting for a range, and be 
the range only one line. A nice multiline example I stumbled upon is:
``` c++
    Tree<char> tree[]
    {
                                    {'D', tree + 1, tree + 2},
        //                            │
        //            ┌───────────────┴────────────────┐
        //            │                                │
                    {'B', tree + 3, tree + 4},       {'F', tree + 5, tree + 6},
        //            │                                │
        //  ┌─────────┴─────────────┐      ┌───────────┴─────────────┐
        //  │                       │      │                         │
          {'A'},                  {'C'}, {'E'},                    {'G'}
    };
```
(Kindly borrowed from https://en.cppreference.com/w/cpp/coroutine/generator)
We will never be able to format something like this with clang-format.

I myself have a few places where automatic formatting would be possible, but 
kind of hard, they all have to do with some aligning.

And https://github.com/llvm/llvm-project/issues/54334#issuecomment-2531049984 
makes a good example on why only one line disabling would be desired.

Also this would bring us in par with clang-tidy which has `NOLINT` and 
`NOLINTNEXTLINE`.

https://github.com/llvm/llvm-project/pull/118566
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to