[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#59686: 30.0.50; tree-sitter indentation in some loops and conditiona
From: |
Theodor Thornhill |
Subject: |
bug#59686: 30.0.50; tree-sitter indentation in some loops and conditional statements is wrong |
Date: |
Fri, 02 Dec 2022 06:42:03 +0100 |
On 2 December 2022 06:13:42 CET, Yuan Fu <casouri@gmail.com> wrote:
>
>Bruce Stephens <bruce.stephens@isode.com> writes:
>
>> With the following file I would expect foo(i) to be indented to just two
>> indents (like the first one), but they are not. Similarly for many other
>> compound statements where the opening spans more than one line.
>>
>> // -*- c-ts -*-
>> int main() {
>> for (int i=0; i<10; ++i) {
>> foo(i);
>> }
>>
>> for (int i=0;
>> i<10;
>> ++i) {
>> foo(i);
>> }
>> }
>
>I see, that’s because the indent rule finds the BOL of the line where
>the "{" is on, and indents from there. Theo, WDYT? Does indent style
>fix this, or we should change the indent rules?
>
>Yuan
I've seen this issue myself, and have tried several combinations to fix it. It
is trivial to fix this particular case, but because compound_statement is used
everywhere problems will pop up other places. The fix here would be some
grand-parent-bol function, but if my memory serves that would mess up the else
in an if else. I'm happy to see this fixed, but just remember that it's not
_super_ trivial.
Other languages exhibit similar issues, but with other constructs.
Lastly, I _did_ fix most of these, but that required using query as the matcher
in simple-indent-rules, which made indenting slower, and I needed one rule for
almost every construct in a language.
I'm sure she fix can be simple, but I'm a little blind to it right now. My eyes
are bleeding tree-sitter nodes at the moment, so I might not see clearly :P