bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#65704: 29.1; Most code of `project-ignores' seems to be dead code


From: Dmitry Gutov
Subject: bug#65704: 29.1; Most code of `project-ignores' seems to be dead code
Date: Tue, 5 Sep 2023 17:09:45 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

Hi Damien,

On 05/09/2023 10:58, Damien Cassou wrote:
Hi Dmitry,

Dmitry Gutov<dmitry@gutov.dev>  writes:
Perhaps you have an older version installed somewhere?
I think I experimented a bit too much 😄, thanks for noticing. I
restarted Emacs and am now using project 0.9.8 from elpa. The expression
(project-current) now returns (vc nil "…/client/") in my client/
directory.

I'm still not sure about the relative path in the 3rd element, but if it doesn't cause problems, let's set it aside for now.

Notice the nil in the second position. This means that
`project-files' for 'vc will set nil as backend. As a result, the
optimized `project--vc-list-files' isn't used. This means the files
listed in client/.gitignore are not ignored.

I'm certainly doing something wrong again.

And that... is a geniune bug. ;-(

Or an omission compared to the design I had in my head (mentioned upthread), but at least not a regression compared to the previous behavior or to what people did with adding to project-find-functions.

So I'm not 100% sure about changing that in Emacs 29, but here's a patch, please try it out:

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 29a81c7e151..2eea0ef72e0 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -566,6 +566,12 @@ project-try-vc
                (project--submodule-p root))
(let* ((parent (file-name-directory (directory-file-name root))))
             (setq root (vc-call-backend 'Git 'root parent))))
+        (when (not backend)
+          (let* ((project-vc-extra-root-markers nil)
+                 ;; Avoid submodules scan.
+                 (enable-dir-local-variables nil)
+                 (parent (project-try-vc root)))
+            (and parent (setq backend (nth 1 parent)))))
         (when root
           (setq project (list 'vc backend root))
           ;; FIXME: Cache for a shorter time.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]