Subject: Re: bug#60397: 29.0.60; c++-ts-mode could report better defun names

From: Yuan Fu <[email-masked]>
Date: Sat, 7 Jan 2023 16:06:18 -0800

Knut Anders Hatlen <[email-masked]> writes:

> The defun names reported by c++-ts-mode could still need a couple of
> improvements:
>
> 1) In a buffer with c++-ts-mode and which-function-mode enabled, and
> this content:
>
> struct S {
>   int f1(int x) {
>     return x + 1;
>   }
>   int g1(int x);
> };
>
> int S::g1(int x) {
>   return x + 1;
> }
>
> Inside the inline f1 function definition, which-function-mode shows
> "S.f1". But inside the out-of-line g1 function definition, it shows
> "n/a" instead of "S.g1". (Not limited to structs. Classes have the same
> problem.)

Now the second function is displayed as S::g1.

> 2) Namespaces are not handled. Given this content:
>
> namespace n {
> int f1(int x) {
>   return x + 1;
> }
> }
>
> namespace {
> int f2(int x) {
>   return x + 1;
> }
> }
>
> Inside the f1 and f2 function bodies, which-function-mode shows "f1" and
> "f2", respectively. It would be better if it showed "n.f1" for the
> former, and perhaps something like "(anonymous).f2" for the latter.

Now the first function is shown as n.f1, the second is shown as f2.
Making it (anonymous).f2 isn’t necessarily better than f2 IMO, and
requires some non-trivial change to the current code, so I didn’t do it.

Yuan