[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#57996: 28.2; imenu doesn't differentiate overloaded c++ functions
From: |
Alan Mackenzie |
Subject: |
bug#57996: 28.2; imenu doesn't differentiate overloaded c++ functions |
Date: |
Wed, 5 Oct 2022 10:31:11 +0000 |
Hello, Chris and Philip.
On Sun, Oct 02, 2022 at 13:13:16 +0000, Philip Kaludercic wrote:
> "Chris Hecker" <checker@d6.com> writes:
> > With this dumb c++ file:
> > ----
> > int Function( int n ) {
> > return n;
> > }
> > int Function( float v ) {
> > return (int)(v + 0.5);
> > }
> > ----
> > Hitting imenu only gives a single Function entry. It should probably
> > give two, maybe with a line number after them like "Function(123)" or
> > whatever. Currently there's no way to get to the second Function from
> > imenu.
imenu is old and rather simplistic. It parses a buffer, then stores the
results in an association list. It then uses the function assoc on that
list to get "the" match. What we could do with is a function which gets
_all_ the matches from an alist, and I've asked on emacs-devel about
this.
> Note that this is not the case when using Eglot and a LSP server like
> clangd.
Much more modern!
> I've CC'ed Alan to see if he knows how this could be done by c++-mode
> itself.
I'm pretty sure it couldn't be. I think it would involve enhancing
imenu. The scanning interface to imenu allows just function names to be
collected. It doesn't allow anything extra (such as a line number) to
be included into the alist.
I've looked at problems with imenu in C++ Mode before, but got bogged
down without coming up with a workable solution. There the problem was
identically named methods in different classes, or something like that.
So, maybe we can enhance imenu. But not for Emacs 29.
--
Alan Mackenzie (Nuremberg, Germany).