all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
To: Dmitry Gutov <dgutov@yandex.ru>, Lars Ingebrigtsen <larsi@gnus.org>
Cc: Zhu Zihao <cjpeople2013@gmail.com>,
	Theodor Thornhill <theo@thornhill.no>,
	41572@debbugs.gnu.org, Juri Linkov <juri@linkov.net>
Subject: bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project
Date: Wed, 6 Oct 2021 17:09:28 +0300	[thread overview]
Message-ID: <7814d113-5366-8614-8f5b-699800c303eb@gmail.com> (raw)
In-Reply-To: <ac719eee-acf5-7bdf-5512-ea5881e84bfc@yandex.ru>

> But when we go up a directory, "./project/". And when asked to list 
> its files, how do we avoid including "./project/foo/a" in that list? 
> It would make sense to exclude any nested projects, right?
Not necessarily. It may be a useful thing to do for some projects, but 
it does not follow from anything that it should be the only or the 
default option. The correct solution here is IMHO implementing some kind 
of .project-settings.el file in which you can set hide-nested-project-files.

> Setting project-find-functions in a major mode is a questionable thing 
> to do, because then you end up with Emacs where files in the same 
> directory belong to different projects.
I'm not talking about setting it locally in the mode, more about modes 
providing such functions on load. That's another important question. 
More backends are more functions to test, so it's reasonable to add 
backends only when they're needed. I may avoid programming in language X 
from some months so no reason to keep that backed on, but when I start 
editing a file in that language, the major mode loads and so should the 
backend.

> If there is a next backend which indicates the same root, why do we 
> need the first one? 
We don't know what the next backend in line indicates. Nor do we care 
about it since the current one already gives us something. We just try 
to find backends until we find one in the order of priority and then stop.

> Suppose I call project-find-file, meaning to jump to another file in 
> the same Git repository. And instead I am shown only a list of files 
> in the current subdirectory because it contains, say, a Makefile. Is 
> that a good idea to enact this kind of behavior automatically? 
If a user believes that it looks like a duck, it should squeak like one. 
Sure you personally may want to suppress some possible project backends 
from firing, but someone may want the opposite.

I want to remind you of this recent-ish thread on HGE:

https://lists.gnu.org/archive/html/help-gnu-emacs/2021-09/msg00045.html

Lets take the maven example presented there. We have a project 
containing modules. The user wants to compile both independently. We can 
write two different compilation commands, one that works on the project 
and one that works on the module. Or we can just have a single command, 
since the compilation process is not different in any way for both. Then 
we can give that command some prefix that would make it work not on the 
project itself but on the root project of that project.

The Makefile example is your strongest argument here, but we can define 
find functions for it recursively. That is until you find a Makefile 
that does not have a dominating Makefile of it's own. And if all else 
fails you can just use the proposed plain project mark.

> What user-level commands are going to benefit from this setup?
It seems that we somewhat differ in our priorities for project 
treatment. You seem to prioritize the logical grouping of files for 
editing operations, while I prioritize "actionability". If a certain 
directory has a set of unique actions that can be performed on it, then 
it's a project for me. And while your observation that such emphasis on 
actionability may result in worse logical grouping is broadly true, it 
is not necessarily true that a blind reliance on VC backend would result 
in proper logical grouping. Sure, that would be true for most projects, 
but oftentimes you have multiple independent, but related projects 
sharing the same repository.






  reply	other threads:[~2021-10-06 14:09 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
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 [this message]
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=7814d113-5366-8614-8f5b-699800c303eb@gmail.com \
    --to=nikolay.kudryavtsev@gmail.com \
    --cc=41572@debbugs.gnu.org \
    --cc=cjpeople2013@gmail.com \
    --cc=dgutov@yandex.ru \
    --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.