Subject: bug#66152: 30.0.50; Missing indent rules in c-ts-mode

From: Eli Zaretskii <[email-masked]>
Date: Fri, 29 Sep 2023 10:17:29 +0300

> Date: Tue, 26 Sep 2023 14:29:07 +0200
> From: Augustin Chéneau (BTuin) <[email-masked]>
> 
> I found some more issues.
> 
> First, there is no rule for an element in an else clause:
> 
> 
> if (true)
>    do_something();
> else
> do_something_else();
> 
> 
> "do_something_else" is not indented.
> 
> There is also something weird with the bsd indent style.  It indents 
> do_something and do_something_else to parent-bol with 0 offset, so the 
> result is:
> 
> if (true)
> do_something();
> else
> do_something_else();
> 
> 
> It is very different from the bsd style from c-mode, which produces this:
> 
> if (true)
> 	do_something();
> else
> 	do_something_else();
> 
> By looking at random files from OpenBSD, they do indent their 
> expressions inside if and else:
> 
> <https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/net/bsd-comp.c?rev=1.17&content-type=text/plain>
> (lines 277, 484, and 527)
> 
> 
> 
> Also there is a second patch which tries to handle specific types of 
> comments.  I don't know how popular it is, but some people use these 
> kind of comments:
> 
> /*---------.
> | %param.  |
> `---------*/
> 
> Here we want the vertical bar ("|") to be indented at the same column as 
> the first "/".
> 
> Currently the result is this:
> 
> /*---------.
>    | %param.  |
>    `---------*/
> 
> This patch is a just proof of concept.  If this new behavior is indeed 
> wanted, I would clean it up and adapt other modes.

Yuan, any comments?  If the first patch looks good to you, I'd like to
install it on the release branch.