From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: philip@warpmail.net, theo@thornhill.no, emacs-devel@gnu.org
Subject: Re: master 1e3b0f2: Improve doc strings of project.el
Date: Sun, 28 Jun 2020 03:56:29 +0300 [thread overview]
Message-ID: <5542db0c-cc0d-2743-87ae-7728a0cc94bb@yandex.ru> (raw)
In-Reply-To: <83a70wv4mj.fsf@gnu.org>
Hi Eli,
Thanks for these examples. Commends below.
On 21.06.2020 18:08, Eli Zaretskii wrote:
>> And project-switch-to-buffer should work with all kinds of projects.
>>
>> Yes. And one such kind is an ad-hoc collection of files and buffers,
>> where only the user knows which ones he/she is interested in and which
>> ones he/she isn't. Every IDE I saw supports something like that, so
>> we should do that as well, IMO.
>>
>> I'm curious about those "every IDE". I don't recall such a feature in ones I tried. Perhaps I just didn't use it, of course.
> Few examples below:
>
> Code::Blocks:
> https://www.cs.odu.edu/~zeil/FAQs/Public/newIDEProject/index.html#creating-a-project-from-existing-code
Going by "Navigate to the directory where you already have your code.",
it seems to expect that all project code resides in the directory the
user specifies. Although, for some reason or other, it decides to
default to not listing existing source code in there in the "sources"
section. Perhaps that has to do with build configuration.
Note A: Being able to tell "source files" from the rest of the project
files is a concern that we haven't looked into yet (nor into its
applications). In the default backend, though, I would like to have it
work automatically as well (probably by having a configurable list of
globs/file extensions/etc).
Note B: If you only meant this as an illustration of including certain
files in the directory, this setup should be supportable when we add
support for whitelisting entries (as opposed to just blacklisting ones,
through in project-ignores). That would still require all files to be
contained inside the directory that is designated as "project root
directory".
> Visual Studio:
> https://docs.microsoft.com/en-us/visualstudio/ide/creating-solutions-and-projects?view=vs-2019
> Look under "Create a project from existing code files", "Add files
> to a solution", "Create empty solutions"
"Create a project from existing code files" actually makes VS pick up
all the source files in the chosen directory, from what I can tell. In
that, it's closer to our project-vc backend than to Code::Blocks.
"Add files to a solution" talks about having a file that "applies to
multiple projects". Which talks about a case of spreading the current
work contents across multiple root directories. Which is what its
"solutions" are.
As far as how to support a notion similar to solutions best, I'm not
sure. Perhaps it indeed would be a separate thing (package/feature/etc),
with a file-based configuration, that points at projects included in it.
That way, project-vc backend (and others) could be reused for included
projects. And we could have solution-level commands (e.g.
solution-find-file, which scans across all included projects). I don't
understand the level of demand for this among our users, and as such,
the necessary features.
We're not at the level of complexity that Visual Studio has (WRT build
configurations support, etc), and most other text editors I know don't
have this feature, so perhaps it's a bit premature. The good news here,
however, is that implementing solutions as a separate feature on top of
project.el should be relatively simple. And people are welcome to
experiment.
> QNX:
> https://www.qnx.com/developers/docs/6.4.1/ide_en/user_guide/tutorials.html
It seems to describe a situation similar to MS VS, except "solutions"
are called "workspaces" here.
Otherwise, you don't select individual files inside a project to be added.
> Netbeans:
> https://netbeans.apache.org/kb/docs/cnd/quickstart.html#_adding_existing_files_to_your_project
"Creating a Project With Existing Sources" seems to import all source
files within a project directory automatically.
I wonder what "Adding Existing Files to Your Project" does. Perhaps it
copies files from elsewhere into the project directory, if it's not
there yet.
> TI's Code Composer:
> http://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_project-management.html#adding-or-linking-source-files-to-project
The "physically copied" case is obvious.
Regarding "When you link a file/folder to a project ...", does it create
a symlink, maybe? That wouldn't require a configuration change.
To sum up, what I saw here is mostly what I'm already used to anyway: a
project is basically a directory with some files in it (the set is
generally based on the principle of exclusion, but some subviews can be
based on inclusion/whitelist as well), and not an arbitrary set of files
from random places on disk.
Not to discourage alternative workflows, but this is the concept we
should work on supporting well first.
I should also note that these other editors have no concept of
"buffers", and thus no way to configure their inclusion of exclusion.
Thus, any entity that might correspond to our non-file-visiting buffers
(such as a search window, or a compilation output window) is likely
implicitly considered to just be part of the current project or
solution. Please feel free to correct me here.
(To be continued, to address the rest of the email.)
next prev parent reply other threads:[~2020-06-28 0:56 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20200619075401.21856.16524@vcs0.savannah.gnu.org>
[not found] ` <20200619075402.CE1D220A27@vcs0.savannah.gnu.org>
2020-06-19 11:01 ` master 1e3b0f2: Improve doc strings of project.el Dmitry Gutov
2020-06-19 11:24 ` Eli Zaretskii
2020-06-19 11:37 ` Basil L. Contovounesios
2020-06-19 11:50 ` Eli Zaretskii
2020-06-19 12:30 ` Dmitry Gutov
2020-06-19 12:44 ` Eli Zaretskii
2020-06-19 12:54 ` Dmitry Gutov
2020-06-19 13:27 ` Philip K.
2020-06-19 13:34 ` Dmitry Gutov
2020-06-19 14:11 ` Eli Zaretskii
2020-06-19 14:18 ` Dmitry Gutov
2020-06-19 14:24 ` Eli Zaretskii
2020-06-19 14:41 ` Philip K.
2020-06-20 7:22 ` Eli Zaretskii
2020-06-19 14:25 ` Theodor Thornhill
2020-06-19 14:37 ` Eli Zaretskii
2020-06-19 14:49 ` Dmitry Gutov
2020-06-19 15:11 ` Eli Zaretskii
2020-06-19 18:33 ` Dmitry Gutov
2020-06-19 19:01 ` Eli Zaretskii
2020-06-19 19:28 ` Dmitry Gutov
2020-06-20 6:43 ` Eli Zaretskii
2020-06-20 7:43 ` Theodor Thornhill
2020-06-20 8:55 ` Eli Zaretskii
2020-06-20 9:29 ` Theodor Thornhill
2020-06-20 10:07 ` Eli Zaretskii
2020-06-20 10:19 ` Theodor Thornhill
2020-06-20 11:37 ` Dmitry Gutov
2020-06-20 11:35 ` Dmitry Gutov
2020-06-20 12:32 ` Eli Zaretskii
2020-06-20 22:21 ` Dmitry Gutov
2020-06-20 11:29 ` Dmitry Gutov
2020-06-20 11:46 ` Kévin Le Gouguec
2020-06-20 11:57 ` Dmitry Gutov
2020-06-20 12:37 ` Eli Zaretskii
2020-06-20 21:18 ` Dmitry Gutov
2020-06-20 12:25 ` Eli Zaretskii
2020-06-20 23:17 ` Dmitry Gutov
2020-06-20 11:25 ` Dmitry Gutov
2020-06-20 12:12 ` Eli Zaretskii
2020-06-20 12:30 ` Basil L. Contovounesios
2020-06-20 12:42 ` Eli Zaretskii
2020-06-20 23:11 ` Dmitry Gutov
2020-06-21 15:08 ` Eli Zaretskii
2020-06-21 22:24 ` Juri Linkov
2020-06-22 2:27 ` Eli Zaretskii
2020-06-28 0:56 ` Dmitry Gutov [this message]
2020-06-28 14:28 ` Eli Zaretskii
2020-06-28 22:35 ` Dmitry Gutov
2020-06-29 14:50 ` Eli Zaretskii
2020-06-29 15:07 ` Stephen Leake
2020-06-29 22:35 ` Juri Linkov
2020-07-01 22:02 ` Dmitry Gutov
2020-07-01 22:07 ` Dmitry Gutov
2020-07-01 22:57 ` Dmitry Gutov
2020-07-04 7:15 ` Eli Zaretskii
2020-07-04 22:22 ` Dmitry Gutov
2020-07-05 14:26 ` Eli Zaretskii
2020-07-05 19:45 ` Dmitry Gutov
2020-07-07 15:04 ` Eli Zaretskii
2020-07-07 15:23 ` Dmitry Gutov
2020-07-10 14:27 ` Eli Zaretskii
2020-07-10 14:57 ` Dmitry Gutov
2020-07-10 18:14 ` Eli Zaretskii
2020-07-10 19:36 ` Dmitry Gutov
2020-07-11 6:58 ` Eli Zaretskii
2020-07-11 11:29 ` Dmitry Gutov
2020-07-11 12:35 ` Eli Zaretskii
2020-07-12 0:48 ` Dmitry Gutov
2020-07-12 14:00 ` Eli Zaretskii
2020-07-12 14:16 ` Dmitry Gutov
2020-07-12 14:47 ` Eli Zaretskii
2020-07-12 15:08 ` Dmitry Gutov
2020-07-12 15:36 ` Eli Zaretskii
2020-07-12 16:17 ` Eli Zaretskii
2020-07-13 1:51 ` Dmitry Gutov
2020-07-13 4:40 ` Eli Zaretskii
2020-07-13 7:11 ` Gregory Heytings via Emacs development discussions.
2020-07-13 7:21 ` Eli Zaretskii
2020-07-13 7:52 ` Gregory Heytings via Emacs development discussions.
2020-07-13 8:53 ` Eli Zaretskii
2020-07-13 18:26 ` Dmitry Gutov
2020-07-13 7:58 ` tomas
2020-07-17 10:27 ` Dmitry Gutov
2020-07-17 15:27 ` tomas
2020-07-18 0:55 ` Dmitry Gutov
2020-07-18 9:05 ` tomas
2020-07-18 10:10 ` Eli Zaretskii
2020-07-18 11:58 ` Dmitry Gutov
2020-07-18 19:14 ` Dmitry Gutov
2020-07-19 2:27 ` Richard Stallman
2020-07-19 21:59 ` Dmitry Gutov
2020-07-20 2:44 ` Richard Stallman
2020-07-13 19:51 ` Dmitry Gutov
2020-07-16 16:34 ` Eli Zaretskii
2020-07-16 18:55 ` Dmitry Gutov
2020-07-16 19:57 ` Eli Zaretskii
2020-07-16 21:02 ` Dmitry Gutov
2020-07-17 1:07 ` Richard Stallman
2020-07-17 1:30 ` Dmitry Gutov
2020-07-16 18:56 ` Dmitry Gutov
2020-07-16 19:59 ` Eli Zaretskii
2020-07-16 20:53 ` Dmitry Gutov
2020-07-13 2:51 ` Richard Stallman
2020-07-13 10:47 ` Dmitry Gutov
2020-07-13 13:00 ` Eli Zaretskii
2020-07-13 15:24 ` Dmitry Gutov
2020-07-13 16:30 ` Eli Zaretskii
2020-07-13 19:01 ` Dmitry Gutov
2020-07-13 19:41 ` Eli Zaretskii
2020-07-13 21:39 ` Dmitry Gutov
2020-07-11 12:59 ` Michael Albinus
2020-07-12 14:49 ` Dmitry Gutov
2020-07-12 17:19 ` Michael Albinus
2020-06-28 22:14 ` Dmitry Gutov
2020-06-29 14:32 ` Eli Zaretskii
2020-06-19 15:02 ` Dmitry Gutov
2020-06-19 15:13 ` Eli Zaretskii
2020-06-19 18:23 ` Dmitry Gutov
2020-06-19 18:44 ` Eli Zaretskii
2020-06-19 18:49 ` Dmitry Gutov
2020-06-19 19:07 ` Eli Zaretskii
2020-06-19 15:02 ` Theodor Thornhill via Emacs development discussions.
2020-06-19 15:19 ` Eli Zaretskii
2020-06-19 15:39 ` Theodor Thornhill
2020-06-19 17:11 ` Eli Zaretskii
2020-06-19 17:46 ` Theodor Thornhill
2020-06-19 18:03 ` Eli Zaretskii
2020-06-19 18:19 ` Dmitry Gutov
2020-06-19 18:36 ` Eli Zaretskii
2020-06-19 18:49 ` Dmitry Gutov
2020-06-19 18:22 ` Theodor Thornhill
2020-06-19 18:41 ` Eli Zaretskii
2020-06-19 18:57 ` Theodor Thornhill
2020-06-19 19:10 ` Dmitry Gutov
2020-06-19 20:08 ` theo
2020-06-19 19:04 ` Dmitry Gutov
2020-06-19 19:12 ` Eli Zaretskii
2020-06-19 19:33 ` Dmitry Gutov
2020-06-20 7:20 ` Eli Zaretskii
2020-06-20 11:41 ` Dmitry Gutov
2020-06-20 12:36 ` Eli Zaretskii
2020-06-20 21:58 ` Dmitry Gutov
2020-06-19 18:21 ` Dmitry Gutov
2020-06-19 18:30 ` Theodor Thornhill
2020-06-19 14:07 ` Eli Zaretskii
2020-06-19 14:23 ` Dmitry Gutov
2020-06-19 14:28 ` Eli Zaretskii
[not found] <<87bllfqj82.fsf@warpmail.net>
[not found] ` <<83o8pfxhzq.fsf@gnu.org>
[not found] ` <<I2nnldrvYQuQLpqgZyK7owqcMuP8kMtAdgkVXzq66i2hg6TgDaYFJe4RMj19j0J9Z1WqR9_vbifeegWNOLS3BBv-R34nJLuXYurqIVrefNE=@thornhill.no>
[not found] ` <<83imfnxgt3.fsf@gnu.org>
[not found] ` <<626efe11-0f9c-081b-11dd-0d61cee8168d@yandex.ru>
[not found] ` <<83h7v7xf7w.fsf@gnu.org>
[not found] ` <<b7f4a9ba-4320-b7b2-e150-74d667943ecd@yandex.ru>
[not found] ` <<831rmayj55.fsf@gnu.org>
[not found] ` <<6dc2c2ac-8e17-f044-dc78-8c109f936ad2@yandex.ru>
[not found] ` <<83wo42w83e.fsf@gnu.org>
[not found] ` <<6762abf5-71c1-aa54-1bac-d4c90c20870b@yandex.ru>
[not found] ` <<831rmavsuq.fsf@gnu.org>
2020-06-20 22:55 ` Drew Adams
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=5542db0c-cc0d-2743-87ae-7728a0cc94bb@yandex.ru \
--to=dgutov@yandex.ru \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=philip@warpmail.net \
--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 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).