From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: philipk@posteo.net, rudi@constantly.at, eric@ericabrahamsen.net,
cjpeople2013@gmail.com, theo@thornhill.no, mardani29@yahoo.es,
joaotavora@gmail.com, manuel.uberti@inventati.org,
juri@linkov.net, salutis@me.com, arstoffel@gmail.com,
41572@debbugs.gnu.org
Subject: bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project
Date: Wed, 30 Nov 2022 22:43:59 +0200 [thread overview]
Message-ID: <70b78ec2-c74a-b4fc-a928-bbc1f2c567d5@yandex.ru> (raw)
In-Reply-To: <83wn7ci3ok.fsf@gnu.org>
On 30/11/2022 22:32, Eli Zaretskii wrote:
>> Date: Wed, 30 Nov 2022 20:52:32 +0200
>> Cc: philipk@posteo.net, rudi@constantly.at, eric@ericabrahamsen.net,
>> cjpeople2013@gmail.com, theo@thornhill.no, mardani29@yahoo.es,
>> joaotavora@gmail.com, manuel.uberti@inventati.org, juri@linkov.net,
>> salutis@me.com, arstoffel@gmail.com, 41572@debbugs.gnu.org
>> From: Dmitry Gutov <dgutov@yandex.ru>
>>
>>>> Eli, what do you think about this feature
>>>> (project-vc-extra-root-markers) for emacs-29?
>>> Where can I see the code that you are proposing?
>>
>> Here you go, I also added some documentation updates and 2 tests.
>
> Thanks. But I don't see any tests...
Sorry, missed them in this patch. They don't really need an advance
review, though, so just see them later.
>> +;; If the repository is using any other VCS than Git or Hg, the file
>> +;; listing uses the default mechanism based on 'find'.
>
> Instead of a literal 'find', this should probably say something like
>
> If the repository is using any other VCS than Git or Hg, the file
> listing uses the default mechanism based on the program specified by
> `find-program'.
Sure, thanks.
>> (defun project-try-vc (dir)
>> + (defvar vc-svn-admin-directory)
>> + (require 'vc-svn)
>> + ;; FIXME: Learn to invalidate when the value of
>> + ;; `project-vc-merge-submodules' or `project-vc-extra-root-markers'
>> + ;; changes.
>> (or (vc-file-getprop dir 'project-vc)
>> - (let* ((backend (ignore-errors (vc-responsible-backend dir)))
>> + (let* ((backend-markers-alist `((Git . ".git")
>> + (Hg . ".hg")
>> + (Bzr . ".bzr")
>> + (SVN . ,vc-svn-admin-directory)
>> + (DARCS . "_darcs")
>> + (Fossil . ".fslckout")))
>> + (backend-markers
>> + (delete
>> + nil
>> + (mapcar
>> + (lambda (b) (assoc-default b backend-markers-alist))
>> + vc-handled-backends)))
>> + (marker-re
>> + (mapconcat
>> + (lambda (m) (format "\\(%s\\)" (wildcard-to-regexp m)))
>> + (append backend-markers project-vc-extra-root-markers)
>> + "\\|"))
>> + (locate-dominating-stop-dir-regexp
>> + (or vc-ignore-dir-regexp locate-dominating-stop-dir-regexp))
>> + last-matches
>> (root
>> - (pcase backend
>> - ('Git
>> - ;; Don't stop at submodule boundary.
>> - (or (vc-file-getprop dir 'project-git-root)
>> - (let ((root (vc-call-backend backend 'root dir)))
>> - (vc-file-setprop
>> - dir 'project-git-root
>> - (if (and
>> - ;; FIXME: Invalidate the cache when the value
>> - ;; of this variable changes.
>> - project-vc-merge-submodules
>> - (project--submodule-p root))
>> - (let* ((parent (file-name-directory
>> - (directory-file-name root))))
>> - (vc-call-backend backend 'root parent))
>> - root)))))
>> - ('nil nil)
>> - (_ (ignore-errors (vc-call-backend backend 'root dir)))))
>> + (locate-dominating-file
>> + dir
>> + (lambda (d)
>> + (setq last-matches (directory-files d nil marker-re t 100)))))
>> + (backend
>> + (cl-find-if
>> + (lambda (b)
>> + (member (assoc-default b backend-markers-alist)
>> + last-matches))
>> + vc-handled-backends))
>> project)
>> + (when (and
>> + (eq backend 'Git)
>> + project-vc-merge-submodules
>> + (project--submodule-p root))
>> + (let* ((parent (file-name-directory (directory-file-name root))))
>> + (setq root (vc-call-backend 'Git 'root parent))))
>> (when root
>> (setq project (list 'vc backend root))
>> ;; FIXME: Cache for a shorter time.
>
> This is a significant change of the implementation of a public API. Isn't
> it risky to make such changes on the release branch?
>
> But if you are okay with that, it's fine by me.
A little bit, yeah. But I've done some dogfooding, and we have a couple
of months before the release, right?
next prev parent reply other threads:[~2022-11-30 20:43 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
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 [this message]
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=70b78ec2-c74a-b4fc-a928-bbc1f2c567d5@yandex.ru \
--to=dgutov@yandex.ru \
--cc=41572@debbugs.gnu.org \
--cc=arstoffel@gmail.com \
--cc=cjpeople2013@gmail.com \
--cc=eliz@gnu.org \
--cc=eric@ericabrahamsen.net \
--cc=joaotavora@gmail.com \
--cc=juri@linkov.net \
--cc=manuel.uberti@inventati.org \
--cc=mardani29@yahoo.es \
--cc=philipk@posteo.net \
--cc=rudi@constantly.at \
--cc=salutis@me.com \
--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.