bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#67417: 29.1.50; c-ts-mode syntax issues with no brackets


From: Dmitry Gutov
Subject: bug#67417: 29.1.50; c-ts-mode syntax issues with no brackets
Date: Mon, 27 Nov 2023 04:22:50 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 27/11/2023 03:47, Yuan Fu wrote:
I pushed two commits which should fix the indentation for "break" after "else", and indentation for empty lines after if/else/for/while in general. The fix for the general case doesn't use the parse tree, since the parse tree is often incomplete when you type if (...) and hit return. Instead it uses a plain regexp match to see if the previous line starts with if/else/for/while. This seems like a reasonable heuristic to use before user types more things, at which point more accurate indentation rules would be used, since the parse tree should be more complete then.

Sorry, two counter-examples right away:

Type 'elsewhere();' and RET -> the next line is indented 1 level extra, at least until you type some more and then have the line reindented either with pressing TAB or adding semicolon.

Type 'for (;;) {}' and RET -> same.

The first case is easy to guard against (just check that the next char is either space of opening paren), but the second one less so. OTOH, the second case is likely to have a parse tree without errors, so if we also check for that... the heuristic might work.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]