From: Dmitry Gutov <dgutov@yandex.ru>
To: Stephen Leake <stephen_leake@stephe-leake.org>
Cc: John Wiegley <jwiegley@gmail.com>, emacs-devel@gnu.org
Subject: Re: project.el semantics
Date: Wed, 11 Nov 2015 02:47:33 +0200 [thread overview]
Message-ID: <56429025.3070008@yandex.ru> (raw)
In-Reply-To: <86h9ktah9x.fsf@stephe-leake.org>
On 11/10/2015 07:36 PM, Stephen Leake wrote:
>> Although again, what will the project dependencies be used for, is
>> still an open question for me.
>
> The general rule is: if we don't have a good use case, don't add code.
So I'm not adding it. Just keeping that possibility in mind, and hence
keeping the word "dependency" free.
>> Another thing you might want to do - replace some term across the
>> project (using M-x project-find-regexp and then M-x
>> xref-query-replace). If we were to show its occurrences in library
>> files as well, that would be a waste of user's and computer's time.
>
> You can't allow for all possible user desires by providing different
> path functions at this level.
Indeed, I can't account for every variation. So I service just the ones
that seem most important to me at this point.
> Instead, there should just be one path, that includes all files that the
> user might want to do anything with. Then, when the user actually
> invokes a function to do something, they can provide a predicate if they
> want a subset of that.
How would they provide the predicate when calling the command
interactively? Especially a predicate that would distinguish between
project roots and library roots.
> You have to rely on common definitions; "dependency" is one (although
> apparently not for you, sigh).
"outside" is definitely a more common word for me than "dependency". *shrug*
> "outside" is a common English word, but "outside the project" is very
> fuzzy.
You're free to suggest another word that means "not inside of any of the
project roots".
>> Since we're discussing project-library-roots here, I'm not sure which
>> improvement you mean. How about simply replacing "the list of
>> directories outside of the project" with "the list of directories
>> outside of the project roots"?
>
> I suggest "not included in" rather than "outside".
That implies the (not (member ...)) semantics, rather than (not
(file-in-directory-p ...)), which is what `project-subtract-directories'
actually does.
And "not member" semantics seems pointless to me here; we might as well
allow project-library-roots to include project-roots element, if the
consumer will have to call `project-combine-directories' on them together.
Having "library roots" entirely outside the project roots, however,
makes a lot of sense to me intuitively: if they're inside, they are a
part of the project anyway. What kind of use would we have for such
elements?
>> Because if we describe it in terms of dependencies, a dependency might
>> be checked out inside a project root subdirectory in certain
>> configurations (maybe with an appropriate .gitignore entry, maybe
>> not). In that case, though, we probably don't want to have
>> project-library-roots include it.
>
> Why not? We allow subdirectories in the same path in general (ie
> `load-path'); that's what project-prune-directories is for.
Note that neither `elisp--xref-find-references', not
`etags--xref-find-references' call `project-prune-directories' (or
`project-combine-directories', as it's called now).
>> We can add "So if the project has dependencies which should be edited
>> together with it, they should go here as well." to the third paragraph
>> of the project-roots docstring.
>
> That would be good.
Would you be able to give an example of a project file that lists
dependencies like that, that "should be edited together" with the
current project? It would fit the manual well.
>> Guess that might go into the manual instead. I've seen someone state
>> that it's okay for the manual to have redundancies.
>
> Ok, please start the manual. That would help a lot.
If you're waiting for me to start, you might have to wait a while. I
haven't written a manual in my life (not in Texinfo, or in English).
If you or someone else add the file with structure outline some
placeholders a la <write XX here>, that would speed the process
considerably.
>> It's a... semantic-symref-tool implementation of it, actually. Which
>> has no relation to Semantic grammars, its tags, or etc.
>
> Ok, so xref-semantic-symref-find-references, or
> xref-symref-find-references.
semantic-symref is a command that displays references in a tree-like UI,
and it uses Semantic on the way to do that. xref-collect-references doesn't.
I don't really know a good name for it.
xref-collect-references-using-any-cedet-indexing-tool-we-can-find?
It's not a user-level command, though, so we can get away with just a
mediocre name.
> But if I normally use global, I want xref to use it. And I know how to
> deal with all those issues. Although some details in the manual would
> help.
Yes, the manual could be the answer.
> I could write a new global xref backend, but it's better to reuse
> existing code.
Does lisp/cedet/cedet-global.el have code that will help us with
implementing "find definitions" using Global?
> Unless you are proposing to rewrite symref to be more consistent with
> xref.
Maybe. Depending on what you exactly mean by that. I'd rather rewrite
the "tools" CEDET code to be more flexible, for different uses.
>> IMO, it's more important to have the distinction between "project
>> roots" and "project library roots" in "find regexp" than in "find
>> references".
>
> But you don't provide any code that allows the user to take advantage of
> that distinction. So it how important can it be?
What code?
We have both project-find-regexp and project-or-libraries-find-regexp
already, and I find the difference between them useful in practice.
> No, I would not expect vc-project to know anything about project files.
>
> I would write a new project backend that knows about some set of project
> files.
Again, how many project backends will that be? One for every distinct
language combination?
Basically, you position eliminates the need for
project-library-roots-function, as it's used now. I think that we should
create a better use for it, and do teach vc-project about library-roots
for different project files, through it.
next prev parent reply other threads:[~2015-11-11 0:47 UTC|newest]
Thread overview: 162+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-15 20:23 find-file-project Stephen Leake
2015-09-15 22:21 ` find-file-project Dmitry Gutov
2015-09-16 2:49 ` find-file-project Stephen Leake
2015-09-16 3:26 ` find-file-project Stephen Leake
2015-09-16 3:34 ` find-file-project Stephen Leake
2015-09-16 3:38 ` find-file-project Dmitry Gutov
2015-09-16 12:56 ` find-file-project Stephen Leake
2015-09-16 14:37 ` find-file-project Dmitry Gutov
2015-09-16 16:41 ` find-file-project Stephen Leake
2015-09-16 16:59 ` find-file-project Stephen Leake
2015-09-16 17:13 ` find-file-project Dmitry Gutov
2015-09-16 17:25 ` find-file-project Dmitry Gutov
2015-09-16 21:01 ` find-file-project Stephen Leake
2015-09-17 17:45 ` find-file-project Dmitry Gutov
2015-09-18 16:08 ` project.el semantics Stephen Leake
2015-09-19 0:17 ` Dmitry Gutov
2015-11-08 1:47 ` Dmitry Gutov
2015-11-08 7:11 ` Stephen Leake
2015-11-08 13:07 ` Dmitry Gutov
2015-11-08 20:11 ` Dmitry Gutov
2015-11-09 9:10 ` Stephen Leake
2015-11-09 13:27 ` Dmitry Gutov
2015-11-09 18:15 ` Stephen Leake
2015-11-10 1:32 ` Dmitry Gutov
2015-11-10 2:40 ` Dmitry Gutov
2015-11-10 17:36 ` Stephen Leake
2015-11-11 0:47 ` Dmitry Gutov [this message]
2015-11-11 10:27 ` Stephen Leake
2015-11-11 13:21 ` Dmitry Gutov
2015-11-11 16:48 ` John Wiegley
2015-11-11 17:03 ` Dmitry Gutov
2015-11-11 17:22 ` John Wiegley
2015-11-11 21:46 ` Dmitry Gutov
2015-11-11 22:30 ` John Wiegley
2015-11-12 2:21 ` Dmitry Gutov
2015-11-12 17:26 ` John Wiegley
2015-11-12 17:53 ` Dmitry Gutov
2015-11-12 18:04 ` Dmitry Gutov
2015-11-12 18:17 ` John Wiegley
2015-11-12 18:26 ` John Mastro
2015-11-12 23:37 ` Dmitry Gutov
2015-11-12 18:50 ` Dmitry Gutov
2015-11-11 22:41 ` Stephen Leake
2015-11-11 22:14 ` Stephen Leake
2015-11-11 23:26 ` Dmitry Gutov
2015-11-12 6:44 ` Stephen Leake
2015-11-12 11:32 ` Dmitry Gutov
2015-11-12 19:28 ` Stephen Leake
2015-11-12 22:04 ` Dmitry Gutov
2015-11-19 2:21 ` Dmitry Gutov
2015-11-20 18:40 ` John Wiegley
2015-11-21 10:03 ` Stephen Leake
2015-11-21 10:10 ` Stephen Leake
2015-11-22 5:18 ` John Wiegley
2015-11-22 5:36 ` Dmitry Gutov
2015-11-22 5:43 ` John Wiegley
2015-11-22 5:58 ` Dmitry Gutov
2015-11-22 16:55 ` John Wiegley
2015-11-22 17:13 ` Dmitry Gutov
2015-11-22 19:54 ` John Wiegley
2015-11-22 21:27 ` John Wiegley
2015-11-23 1:14 ` Dmitry Gutov
2015-11-23 22:04 ` Steinar Bang
2015-11-23 23:17 ` Dmitry Gutov
2015-11-23 7:43 ` Stephen Leake
2015-11-23 12:59 ` Dmitry Gutov
2015-12-16 4:06 ` Dmitry Gutov
2015-12-16 6:52 ` John Wiegley
2015-12-28 4:20 ` Dmitry Gutov
2015-11-22 22:04 ` Stephen Leake
2015-11-22 23:21 ` Dmitry Gutov
2015-11-23 2:06 ` Richard Stallman
2015-11-22 5:32 ` Dmitry Gutov
2015-11-09 22:16 ` John Wiegley
2015-11-10 0:58 ` Dmitry Gutov
2015-11-10 1:07 ` John Wiegley
2015-11-10 1:18 ` Dmitry Gutov
2015-11-10 1:40 ` John Wiegley
2015-11-10 3:23 ` Dmitry Gutov
2015-11-10 6:00 ` John Wiegley
2015-11-10 10:54 ` Dmitry Gutov
2015-11-10 14:21 ` John Wiegley
2015-11-10 23:41 ` Stephen Leake
2015-11-11 0:56 ` Dmitry Gutov
2015-11-11 1:17 ` John Wiegley
2015-11-11 1:31 ` Dmitry Gutov
2015-11-11 9:55 ` Stephen Leake
2015-11-11 13:30 ` Dmitry Gutov
2015-11-12 8:46 ` Steinar Bang
2015-11-12 19:35 ` Stephen Leake
2015-11-11 9:44 ` Stephen Leake
2015-11-11 13:39 ` Dmitry Gutov
2015-11-10 17:38 ` Stephen Leake
2015-11-10 19:47 ` Dmitry Gutov
2015-09-16 4:41 ` find-file-project Dmitry Gutov
2015-09-16 13:04 ` find-file-project Stefan Monnier
2015-09-16 17:01 ` find-file-project Stephen Leake
2015-09-16 13:31 ` find-file-project Stephen Leake
2015-09-16 14:13 ` find-file-project Stephen Leake
2015-09-16 15:05 ` find-file-project Dmitry Gutov
2015-09-16 16:58 ` find-file-project Stephen Leake
2015-09-17 17:15 ` find-file-project Dmitry Gutov
2015-09-18 17:14 ` project.el semantics Stephen Leake
2015-09-19 0:08 ` Dmitry Gutov
2015-09-19 12:07 ` Stephen Leake
2015-09-19 12:40 ` Dmitry Gutov
2015-09-16 17:04 ` find-file-project Dmitry Gutov
2015-09-16 21:11 ` find-file-project Stephen Leake
2015-09-17 17:52 ` find-file-project Dmitry Gutov
2015-09-17 1:26 ` find-file-project Stefan Monnier
2015-09-17 18:09 ` find-file-project Dmitry Gutov
2015-09-18 17:07 ` find-file-project Stefan Monnier
2015-09-18 23:41 ` find-file-project Dmitry Gutov
2015-09-19 4:13 ` find-file-project Stefan Monnier
2016-01-06 1:29 ` find-file-project Dmitry Gutov
2016-01-07 4:52 ` find-file-project Stefan Monnier
2016-01-07 17:09 ` find-file-project Dmitry Gutov
2016-01-07 7:12 ` find-file-project Stephen Leake
2016-01-07 17:55 ` find-file-project Dmitry Gutov
2016-01-07 18:26 ` find-file-project Dmitry Gutov
2016-01-07 19:58 ` find-file-project Stephen Leake
2016-01-07 21:12 ` find-file-project Dmitry Gutov
2016-01-08 19:11 ` find-file-project Stephen Leake
2016-01-08 23:49 ` find-file-project Dmitry Gutov
2016-01-09 12:18 ` find-file-project Stephen Leake
2016-01-09 17:11 ` find-file-project Dmitry Gutov
2016-01-08 1:26 ` find-file-project John Wiegley
2016-01-08 1:38 ` find-file-project Dmitry Gutov
2016-01-08 2:19 ` find-file-project Richard Copley
2016-01-08 11:34 ` find-file-project Dmitry Gutov
2016-01-08 7:39 ` find-file-project Stefan Monnier
2016-01-19 6:15 ` find-file-project Dmitry Gutov
2016-01-19 14:20 ` find-file-project Stefan Monnier
2016-01-20 0:51 ` find-file-project Dmitry Gutov
2016-01-20 1:32 ` find-file-project Stefan Monnier
2016-01-20 1:47 ` find-file-project Dmitry Gutov
2016-01-20 2:25 ` find-file-project Stefan Monnier
2016-01-20 15:40 ` find-file-project Dmitry Gutov
2016-01-20 21:58 ` find-file-project Stefan Monnier
2016-01-20 22:12 ` find-file-project Dmitry Gutov
2016-01-20 22:17 ` find-file-project Drew Adams
2016-01-20 22:26 ` find-file-project Dmitry Gutov
2016-01-20 22:48 ` find-file-project Drew Adams
2016-01-20 22:50 ` find-file-project Dmitry Gutov
2016-01-20 23:09 ` find-file-project Drew Adams
2016-01-20 23:23 ` find-file-project Dmitry Gutov
2016-01-20 23:46 ` find-file-project Drew Adams
2016-01-20 23:51 ` find-file-project Dmitry Gutov
2016-01-21 0:08 ` find-file-project Drew Adams
2016-01-21 0:21 ` find-file-project Dmitry Gutov
2016-01-21 3:03 ` find-file-project Dmitry Gutov
2016-01-21 13:46 ` find-file-project Stefan Monnier
2016-01-17 21:23 ` find-file-project John Wiegley
2016-01-17 21:25 ` find-file-project Dmitry Gutov
2016-01-17 23:07 ` find-file-project John Wiegley
2016-01-18 1:42 ` find-file-project Dmitry Gutov
2015-09-16 7:16 ` find-file-project Eli Zaretskii
2015-09-16 13:06 ` find-file-project Stefan Monnier
2015-09-16 13:40 ` find-file-project Stephen Leake
2015-09-16 14:32 ` find-file-project Eli Zaretskii
2015-09-16 14:57 ` find-file-project Dmitry Gutov
2015-09-16 17:03 ` find-file-project Stephen Leake
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56429025.3070008@yandex.ru \
--to=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=jwiegley@gmail.com \
--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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.