GNU bug report logs -
#57996
28.2; imenu doesn't differentiate overloaded c++ functions
Previous Next
Full log
Message #11 received at 57996 <at> debbugs.gnu.org (full text, mbox):
Hello, Chris and Philip.
On Sun, Oct 02, 2022 at 13:13:16 +0000, Philip Kaludercic wrote:
> "Chris Hecker" <checker <at> 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).
This bug report was last modified 2 years and 250 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.