Hi again Yuan:

I found another indentation issue in if-else conditions without
parenthesis:

if (pid == 0)
   print "hello from the child"
   else
   print "hello from the parent"


The else is not indented properly:

This is the explore output:

(translation_unit
(if_statement if
  condition:
   (parenthesized_expression (
    (binary_expression left: (identifier) operator: == right: (number_literal))
    ))
  consequence:
   (expression_statement
    (concatenated_string (identifier)
     (string_literal " (string_content) ")
     (identifier) (identifier)
     (string_literal " (string_content) "))
    ;)))


Best,
Ergus


On July 25, 2024 9:53:16 AM GMT+02:00, Yuan Fu <casouri@gmail.com> wrote:


On Jul 25, 2024, at 12:29 AM, Eli Zaretskii <eliz@gnu.org> wrote:

Date: Wed, 24 Jul 2024 02:02:33 +0200
From: Ergus via "Bug reports for GNU Emacs,
the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>

When using c++-ts-mode there is an indentation issue apparently related
with namespaces+templates.

c-ts-mode-indent-style 'linux (but with 'gnu also happens)

```
namespace A {

T myfunction1(const char *fname)
{
}

template <class T>
T myfunction2(const char *fname)
{
}

}
```

The myfunction2 may be indented as expected, but it is not.

The explorer shows:

```
(translation_unit
(namespace_definition namespace name: (namespace_identifier)
body:
(declaration_list {
(function_definition type: (primitive_type)
declarator:
(function_declarator declarator: (identifier)
parameters:
(parameter_list (
(parameter_declaration
(type_qualifier const)
type: (primitive_type)
declarator: (pointer_declarator * declarator: (identifier)))
)))
body: (compound_statement { }))
(template_declaration template
parameters:
(template_parameter_list <
(type_parameter_declaration class (type_identifier))
)
(function_definition type: (type_identifier)
declarator:
(function_declarator declarator: (identifier)
parameters:
(parameter_list (
(parameter_declaration
(type_qualifier const)
type: (primitive_type)
declarator: (pointer_declarator * declarator: (identifier)))
)))
body: (compound_statement { })))
})))
```

Yuan, can you take a look, please?

Yeah let me take a look.

Yuan
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.