From: Dmitry Gutov <dgutov@yandex.ru>
To: Juri Linkov <juri@linkov.net>
Cc: Zhu Zihao <cjpeople2013@gmail.com>,
Lars Ingebrigtsen <larsi@gnus.org>,
Theodor Thornhill <theo@thornhill.no>,
41572@debbugs.gnu.org
Subject: bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project
Date: Thu, 7 Oct 2021 16:41:23 +0300 [thread overview]
Message-ID: <966ef00b-fc7a-cd52-5fd8-600842797f65@yandex.ru> (raw)
In-Reply-To: <87wnmppdmr.fsf@mail.linkov.net>
On 07.10.2021 10:17, Juri Linkov wrote:
>>> Maybe a better name would be 'project-directory-ignores'
>>> with the directory-based backend name 'project-directory'?
>>
>> I don't know if it's better. What does "directory" mean? Every backend,
>> every project has directories.
>
> Then maybe the backend could be named 'project-file'
> since a special file defines the project root.
That's a little more meaningful, though too close to 'project-files'.
'project-markered' or 'project-markerfile' would probably be less
ambiguous. But... (*)
>> As mentioned previously, the other option I had considered was 'novc'. Then
>> the variable would be called project-novc-ignores.
>
> "novc" is the worst variant. It's not obvious that it means
> "no-version-control", and also will make no sense when more backends
> will be added.
Might not be obvious, but when you know what 'vc' stands for, 'novc'
should at least be a strong hint. And then you could reach for
documentation.
But indeed it's very short and might make less sense if more backends
are configured.
> Or no more backends are planned, and all other possible
> roots should be handled by the same fallback backend? Or would it be
> possible that more backends could be added in project-find-functions
> after the file-based fallback backend? Then the name "fallback"
> will make no sense if it will not be the last in project-find-functions.
I don't know about the case of adding more backends at the end of
project-find-functions (are there any people who have done this?), but
otherwise, 'fallback' is both an indication that the backend is at the
end, and a strong hint to avoid moving it to the front.
Suppose somebody puts it before 'vc' to use if for a purpose we did not
design it for: make sure that some subproject 'foo' in their monorepo is
considered a separate project. 'foo/Makefile' exists, so they add
"Makefile" to project-fallback-markers, and it kind of seems to work.
But! File listing performance becomes worse: we didn't optimize this
backend for use inside of (e.g.) Git repositories, we don't take
advantage of 'git ls-files'.
More than that, it doesn't honor the ignore instructions from
.gitignore. Whereas, in a lot of cases, it would be helpful (and even
necessary for good performance) to honor them. But on the other hand,
why would a 'project-fallback', or 'project-file', or
'project-markerfile', honor .gitignore contents? Semantically, that
doesn't make much sense. And yet, I'd wager like a half of the users
would implicitly expect it to do so, and another half -- would not.
That's doesn't seem like a great design.
>> This is not a done deal, just what seems the most optimal to me at the
>> moment. But opinions welcome.
>
> Maybe it will help to choose a better name while thinking about
> more possible backends that could be added later.
(*) ...it doesn't seem compatible with being used in arbitrary order
with arbitrary backends.
Perhaps, if we change our mind on the overall design later, we could
create a new backend, with a different name and more complex
implementation logic.
next prev parent reply other threads:[~2021-10-07 13:41 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-28 3:32 bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project Zhu Zihao
2020-05-28 7:42 ` Philip K.
2020-05-28 11:20 ` Zihao Zhu
2020-05-28 12:24 ` Philip K.
2020-06-03 11:04 ` Basil L. Contovounesios
2020-05-28 11:27 ` Zhu Zihao
2020-05-28 12:35 ` Dmitry Gutov
2020-05-28 15:46 ` Zihao Zhu
2020-05-28 19:58 ` Dmitry Gutov
2020-05-29 4:34 ` Zihao Zhu
2020-05-29 7:11 ` Philip K.
2020-05-29 13:58 ` Dmitry Gutov
2020-06-02 23:40 ` Juri Linkov
2020-06-05 19:02 ` Dmitry Gutov
2020-06-05 19:22 ` Theodor Thornhill
2020-06-05 23:11 ` Dmitry Gutov
2020-06-06 8:48 ` Theodor Thornhill
2020-06-06 11:15 ` Dmitry Gutov
2020-06-06 11:53 ` Theodor Thornhill
2020-06-06 12:17 ` Dmitry Gutov
2020-06-06 13:37 ` Theodor Thornhill
2020-07-20 20:55 ` Dmitry Gutov
2020-10-01 3:11 ` Lars Ingebrigtsen
2021-09-25 23:13 ` Dmitry Gutov
2021-09-26 6:38 ` Lars Ingebrigtsen
2021-10-03 18:06 ` Juri Linkov
2021-10-05 2:03 ` Dmitry Gutov
2021-10-05 2:08 ` Dmitry Gutov
2021-10-05 6:52 ` Juri Linkov
2021-10-05 12:42 ` Dmitry Gutov
2021-10-05 16:32 ` Juri Linkov
2021-10-06 7:21 ` Juri Linkov
2021-10-06 16:29 ` Juri Linkov
2021-10-06 21:16 ` Dmitry Gutov
2021-10-06 21:13 ` Dmitry Gutov
2021-10-07 7:17 ` Juri Linkov
2021-10-07 13:41 ` Dmitry Gutov [this message]
2021-10-10 16:47 ` Juri Linkov
2021-10-11 0:40 ` Dmitry Gutov
2021-10-05 14:39 ` Nikolay Kudryavtsev
2021-10-05 15:03 ` Dmitry Gutov
2021-10-05 15:21 ` Nikolay Kudryavtsev
2021-10-05 16:56 ` Dmitry Gutov
2021-10-05 18:19 ` Nikolay Kudryavtsev
2021-10-06 0:11 ` Dmitry Gutov
2021-10-06 14:09 ` Nikolay Kudryavtsev
2021-10-07 2:27 ` Dmitry Gutov
2021-10-07 13:08 ` Nikolay Kudryavtsev
2021-10-08 2:12 ` Dmitry Gutov
2021-10-08 16:24 ` Nikolay Kudryavtsev
2021-10-11 1:57 ` Dmitry Gutov
2021-10-11 18:05 ` Nikolay Kudryavtsev
2021-10-17 2:48 ` Dmitry Gutov
2021-10-17 11:52 ` Nikolay Kudryavtsev
2021-09-26 0:22 ` Dmitry Gutov
2022-11-26 1:49 ` Dmitry Gutov
2022-11-26 7:47 ` Eli Zaretskii
2022-11-26 13:22 ` Dmitry Gutov
2022-11-26 14:27 ` Eli Zaretskii
2022-11-27 1:08 ` Dmitry Gutov
2022-11-27 6:46 ` Eli Zaretskii
2022-11-27 14:10 ` Dmitry Gutov
2022-11-27 14:27 ` Eli Zaretskii
2022-11-27 15:51 ` Dmitry Gutov
2022-11-27 16:43 ` Eli Zaretskii
2022-11-27 21:41 ` Dmitry Gutov
2022-11-28 11:58 ` Eli Zaretskii
2022-11-28 12:30 ` Dmitry Gutov
2022-11-28 13:22 ` Eli Zaretskii
2022-11-28 14:29 ` Dmitry Gutov
2022-11-28 14:49 ` Eli Zaretskii
2022-11-28 15:31 ` Dmitry Gutov
2022-11-28 16:51 ` Eli Zaretskii
2022-11-30 2:26 ` Dmitry Gutov
2022-11-30 13:29 ` Eli Zaretskii
2022-11-30 18:52 ` Dmitry Gutov
2022-11-30 20:32 ` Eli Zaretskii
2022-11-30 20:43 ` Dmitry Gutov
2022-12-01 2:19 ` Dmitry Gutov
2022-12-01 6:02 ` Eli Zaretskii
2022-12-01 15:08 ` Dmitry Gutov
2022-11-26 9:52 ` João Távora
2022-11-26 12:29 ` Dmitry Gutov
2022-11-26 19:23 ` João Távora
2022-11-27 16:09 ` Dmitry Gutov
2022-11-29 9:46 ` João Távora
2022-11-29 18:51 ` Dmitry Gutov
2022-11-29 22:06 ` João Távora
2022-11-30 0:10 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=966ef00b-fc7a-cd52-5fd8-600842797f65@yandex.ru \
--to=dgutov@yandex.ru \
--cc=41572@debbugs.gnu.org \
--cc=cjpeople2013@gmail.com \
--cc=juri@linkov.net \
--cc=larsi@gnus.org \
--cc=theo@thornhill.no \
/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.