GNU bug report logs - #67357
[PATCH] Fix c-ts-mode block indent when first-siblings are comments

Previous Next

Package: emacs;

Reported by: Noah Peart <noah.v.peart <at> gmail.com>

Date: Wed, 22 Nov 2023 01:52:02 UTC

Severity: normal

Tags: patch

Done: Yuan Fu <casouri <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #29 received at 67357 <at> debbugs.gnu.org (full text, mbox):

From: Noah Peart <noah.v.peart <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: dmitry <at> gutov.dev, casouri <at> gmail.com, 67357 <at> debbugs.gnu.org
Subject: Re: bug#67357: [PATCH] Fix c-ts-mode block indent when first-siblings
 are comments
Date: Fri, 24 Nov 2023 06:45:24 -0800
[Message part 1 (text/plain, inline)]
I did notice an issue with testing solutions in
`c-ts-mode-resources/indent.erts`.
In cases where no indentation is applied (eg. comment is first-sibling) or
there
is no matching rule (eg. else_clause), the test case can still pass since
the test cases are written with the proper indentation already.  So, despite
no indentation being applied, the result still matches the expected result.

On Fri, Nov 24, 2023 at 6:35 AM Noah Peart <noah.v.peart <at> gmail.com> wrote:

> > I'm sorry I insist on a complete recipe with all the details
>
> Ok, lemme try again :)
>
> To reproduce the indentation bugs for unbracketed `else_clause`, and
> do-while:
> 1. open a buffer and insert the following:
>
>     int main() {
>       if (true)
>         puts("Hello");
>       else
>                     puts("No matched rule!"); // 1
>       do
>         puts("Hello");
>                     while (indented_as_part_of_block);  // 2
>     }
>
> 2. call `M-x example-setup` to configure `c-ts-mode`
> 3. `M-x indent-region` to indent the whole buffer
> You should see that the line with comment `1` has not been
> indented, and the line with comment `2` has been indented to the
> same level as the previous line.
>
> To reproduce the indentation bugs when comments are the first
> siblings:
> 1. open a buffer and insert:
>
>     int main() {
>       while (true) { /* foo */
>                           if (true) { // 1
>                           puts ("Hello"); // 2
>        }
>       }
>     }
>
> 2. call `M-x example-setup` to configure `c-ts-mode`
> 3. `M-x indent-region` to indent the whole buffer
>
> You should see that the lines with comments `1` and `2` have
> not been indented at all.
>
> On Fri, Nov 24, 2023 at 6:07 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
>
>> > From: Noah Peart <noah.v.peart <at> gmail.com>
>> > Date: Fri, 24 Nov 2023 05:47:34 -0800
>> > Cc: Eli Zaretskii <eliz <at> gnu.org>, casouri <at> gmail.com,
>> 67357 <at> debbugs.gnu.org
>> >
>> > Sorry for the confusion: to setup the `c-ts-mode` buffers to reproduce
>> bugs,
>> > run the following to configure `c-ts-mode` with `linux` style:
>> >
>> >     (defun example-setup ()
>> >       (interactive)
>> >       (c-ts-mode)
>> >       (setq-local indent-tabs-mode nil)
>> >       (setq-local c-ts-mode-indent-offset 2)
>> >       (c-ts-mode-set-style 'linux))
>>
>> Thanks, but what to do after (or before?) the above, to actually
>> reproduce the problem?
>>
>> I'm sorry I insist on a complete recipe with all the details, but IME
>> without having such a recipe, it is all too easy to create
>> misunderstandings about the problem, and harder to test solutions.
>>
>
[Message part 2 (text/html, inline)]

This bug report was last modified 1 year and 196 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.