unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: David Engster <deng@randomsample.de>
To: Stephen Leake <stephen_leake@stephe-leake.org>
Cc: emacs-devel@gnu.org
Subject: Re: progmodes/project.el and search paths
Date: Wed, 12 Aug 2015 17:36:13 +0200	[thread overview]
Message-ID: <87egj8y0wi.fsf@isaac.fritz.box> (raw)
In-Reply-To: <86tws4wrar.fsf@stephe-leake.org> (Stephen Leake's message of "Wed, 12 Aug 2015 08:49:00 -0500")

Stephen Leake writes:
> David Engster <deng@randomsample.de> writes:
>> This also applies to the most important feature (at least for me):
>> show all definitions of 'foo' that are currently in scope. EDE has no
>> notions of symbols, scope, overloading, methods, etc.
>
> Yes, I'm beginning to realize that. Semantic provides those things. And
> it can use different backends, so it can serve as the Emacs standard
> interface to such things (although I'd want to make significant changes
> to use it for Ada mode).
>
> In that sense, Semantic competes with xref in the same way EDE competes
> with project.el.

There is some overlap, especially in the GUI area for presenting
references. But at least I would be happy to give that up in favor of
xref, since CEDET was always planned to be more on the backend side of
things, and getting the GUI right is nasty, and maintaining it takes a
lot of time I'd rather spend elsewhere. So I'm happy that Dmitry is
working on this (also with maintaining company-mode, which IMO should
become part of core Emacs rather sooner than later).

With respect to project.el, I'm still not sure where this is going.

>> It gets much more complicated when you're not only interested in
>> definitions, but any occurance of a symbol. For instance, you want all
>> places where 'foo' gets called, but not any 'foo', but the method 'foo'
>> from class 'bar' and not from any other class.
>
> Right; that's name resolution; best done by the compiler.

Yeah well, we had that discussion. I hope I find the time to work on
that. Currently, there are more urgent issue, like getting CEDET
mergeable again after the switch to git and the extensive EIEIO
refactoring...

>> All this stuff is highly dependent on the language you're using.
>
> The backend may be, but at the API level, there are some things that all
> object oriented languages support:
>
> - Search for all implementations of this method.
>
>     That's the language used by elisp cl-generic and eieio defclass. I
>     just made this the default behavior for xref-find-definitions.
>     Although that's not tested on eieio classes; I'll add that to my
>     list.
>     
>     In Ada, it's called "functions that override primitive operations".
>
>     In C++, it's "functions that override a virtual function".
>
>     The terminology is different, but the underlying notion of runtime
>     dispatch is the same.
>
>     We might want to customize the menu entry depending on the current
>     programming language.

As always, it is more complicated in C++ (overload vs override,
namespaces, argument dependent lookup, etc.), but currently I don't
worry too much about details. Getting the usual dispatch right would
cover a lot of ground.

> - Search for the parents of this type.
>
>     "Type" is the Ada word; other languages use "class" here.
>
> - Search for all functions that overload this one.
>
>     Ada and C++ (at least) support this.
>     
> - Search for all references to this function.

Yes.

> In C, these searches are simpler; the first three only return one
> result.

Aah, the joys of ANSI C. Our parser is actually pretty good for
that. :-)

-David



  reply	other threads:[~2015-08-12 15:36 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-02 13:52 progmodes/project.el and search paths Eric Ludlam
2015-08-02 17:17 ` Dmitry Gutov
2015-08-03  1:19   ` Eric Ludlam
2015-08-03 16:16     ` Stephen Leake
2015-08-03 22:56       ` Dmitry Gutov
2015-08-08 13:07       ` Nix
2015-08-09  5:18         ` Stephen Leake
2015-08-09 12:17           ` David Engster
2015-08-09 15:55             ` Stephen Leake
2015-08-10 11:29               ` David Engster
2015-08-10 16:43                 ` Stephen Leake
2015-08-12 10:10                   ` David Engster
2015-08-12 13:49                     ` Stephen Leake
2015-08-12 15:36                       ` David Engster [this message]
2015-08-13 11:53                         ` Nix
2015-08-13 12:05                           ` Dmitry Gutov
2015-08-14 11:52                             ` Eric Ludlam
2015-08-14 22:30                               ` Dmitry Gutov
2015-08-15  0:48                                 ` Eric Ludlam
2015-08-15  7:05                                 ` Eli Zaretskii
2015-08-10 17:12             ` Nix
2015-08-03 22:47     ` Dmitry Gutov
2015-08-04 11:52       ` Eric Ludlam
2015-08-04 16:09         ` Dmitry Gutov
2015-08-03 13:49   ` David Engster
2015-08-03 14:09     ` Dmitry Gutov
2015-08-03 14:27       ` David Engster
2015-08-03 15:13         ` Dmitry Gutov
2015-08-03 21:35           ` David Engster
2015-08-03 23:21             ` Dmitry Gutov
2015-08-04  8:15               ` David Engster
2015-08-04 13:43               ` Eli Zaretskii
2015-08-04 18:05                 ` Dmitry Gutov
2015-08-04 18:16                   ` Eli Zaretskii
2015-08-04 18:41                     ` Dmitry Gutov
2015-08-04 19:23                       ` Eli Zaretskii
2015-08-04 19:40                         ` João Távora
2015-08-05  2:52                           ` Eli Zaretskii
2015-08-04 20:15                         ` Dmitry Gutov
2015-08-05  2:49                           ` Eli Zaretskii
2015-08-05  6:18                             ` Stephen Leake
2015-08-05 15:08                               ` Eli Zaretskii
2015-08-05 15:36                                 ` Dmitry Gutov
2015-08-05 16:31                                   ` Eli Zaretskii
2015-08-05 16:45                                   ` David Engster
2015-08-05 22:17                                     ` Dmitry Gutov
2015-08-06  7:56                                     ` Stephen Leake
2015-08-06  7:54                                   ` Stephen Leake
2015-08-05  9:42                             ` Dmitry Gutov
2015-08-05 15:23                               ` Eli Zaretskii
2015-08-05 15:31                                 ` Dmitry Gutov
2015-08-05 16:16                                   ` Eli Zaretskii
2015-08-06  6:44                                     ` Dmitry Gutov
2015-08-06  7:43                               ` Stephen Leake
2015-08-06 10:25                                 ` Dmitry Gutov
2015-08-06 14:27                                   ` Stephen Leake
2015-08-06 23:16                                     ` Dmitry Gutov
2015-08-07 14:10                                       ` Stephen Leake
2015-08-07 14:44                                         ` Dmitry Gutov
2015-08-03 16:35         ` Stephen Leake
2015-08-03 16:45           ` Eli Zaretskii
2015-08-03 21:07             ` Stephen Leake
2015-08-03 21:33               ` David Engster
2015-08-04  2:35               ` Eli Zaretskii
2015-08-03 15:09       ` Eli Zaretskii
2015-08-03 15:16         ` Dmitry Gutov
2015-08-03 15:29           ` Eli Zaretskii
2015-08-03 19:01             ` Dmitry Gutov
2015-08-03 19:19               ` Eli Zaretskii
2015-08-03 21:05                 ` Dmitry Gutov
2015-08-04 11:48         ` Eric Ludlam
2015-08-04 16:20           ` Dmitry Gutov
2015-08-03 16:25     ` Stephen Leake
2015-08-03 21:33     ` Stefan Monnier
2015-08-03 22:15       ` David Engster
2015-08-03 22:50         ` Dmitry Gutov
2015-08-04  7:13         ` Stefan Monnier
2015-08-04  8:13           ` David Engster
2015-08-05 13:42             ` Stefan Monnier
2015-08-06 11:27               ` {Spam?} " Eric Ludlam
2015-08-06 23:10                 ` Stefan Monnier
2015-08-07 11:18                   ` Eric Ludlam
2015-08-07 11:43                     ` David Engster
2015-08-07 12:17                       ` Dmitry Gutov
2015-08-07 12:40                         ` David Engster
2015-08-07 12:54                           ` Dmitry Gutov
2015-08-07 12:08                     ` Alexis
2015-08-04  9:40           ` Stephen Leake
2015-08-04 17:43             ` Dmitry Gutov
2015-08-04 19:49               ` Stephen Leake
2015-08-04 20:03                 ` Dmitry Gutov
2015-08-05  6:02                   ` Stephen Leake
2015-08-05  9:59                     ` Dmitry Gutov
2015-08-06  7:25                       ` Stephen Leake
2015-08-07 14:21                         ` Dmitry Gutov
2015-08-05  1:29   ` Eric Ludlam
2015-08-11 20:01     ` Dmitry Gutov
2015-08-12  0:49       ` Eric Ludlam
2015-08-12  7:25         ` project terminology Stephen Leake
2015-08-12  9:28         ` progmodes/project.el and search paths Dmitry Gutov
2015-12-29  2:00     ` Dmitry Gutov

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=87egj8y0wi.fsf@isaac.fritz.box \
    --to=deng@randomsample.de \
    --cc=emacs-devel@gnu.org \
    --cc=stephen_leake@stephe-leake.org \
    /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).