From: "Chris Hecker" <checker@d6.com>
To: "Alan Mackenzie" <acm@muc.de>, "Philip Kaludercic" <philipk@posteo.net>
Cc: 57996@debbugs.gnu.org
Subject: bug#57996: Re[2]: bug#57996: 28.2; imenu doesn't differentiate overloaded c++ functions
Date: Wed, 05 Oct 2022 10:47:06 +0000 [thread overview]
Message-ID: <emd474b896-1b01-4a2a-8d44-d43f17d7634c@checker-blade15> (raw)
In-Reply-To: <Yz1c721Ohisf5909@acm>
[-- Attachment #1: Type: text/plain, Size: 2648 bytes --]
Yeah, I should probably switch to something a little more modern, but
imenu has the advantage of just being there and working most of the time
across all machines and shells and stuff. It definitely gets confused
occasionally (like it doesn't find inline functions in class
declarations) but this overload thing seemed like it might be a simple
fix.
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 guess you could mangle the name to include the line number or match
number...kinda hacky but it'd work...maybe I'll take a look.
Chris
------ Original Message ------
From: "Alan Mackenzie" <acm@muc.de>
To: "Philip Kaludercic" <philipk@posteo.net>
Cc: "Chris Hecker" <checker@d6.com>; 57996@debbugs.gnu.org
Sent: 2022-10-05 03:31:11
Subject: Re: bug#57996: 28.2; imenu doesn't differentiate overloaded c++
functions
>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).
[-- Attachment #2: Type: text/html, Size: 5950 bytes --]
next prev parent reply other threads:[~2022-10-05 10:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-22 4:16 bug#57996: 28.2; imenu doesn't differentiate overloaded c++ functions Chris Hecker
2022-10-02 13:13 ` Philip Kaludercic
2022-10-05 10:31 ` Alan Mackenzie
[not found] ` <Yz1c721Ohisf5909@acm>
2022-10-05 10:47 ` Chris Hecker [this message]
2022-10-05 11:15 ` bug#57996: Re[3]: " Chris Hecker
2022-10-05 13:45 ` bug#57996: Re[4]: " Chris Hecker
2022-10-05 13:58 ` bug#57996: Re[5]: " Chris Hecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=emd474b896-1b01-4a2a-8d44-d43f17d7634c@checker-blade15 \
--to=checker@d6.com \
--cc=57996@debbugs.gnu.org \
--cc=acm@muc.de \
--cc=philipk@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).