GNU bug report logs -
#41572
28.0.50; [PATCH] Support plain project marked with file .emacs-project
Previous Next
Reported by: Zhu Zihao <cjpeople2013 <at> gmail.com>
Date: Thu, 28 May 2020 04:46:02 UTC
Severity: normal
Merged with 54228
Found in versions 28.0.50, 29.0.50
Fixed in version 29.1
Done: Dmitry Gutov <dgutov <at> yandex.ru>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi!
On 05.06.2020 22:22, Theodor Thornhill wrote:
> "Dmitry Gutov" <dgutov <at> yandex.ru> writes:
>
>> I like this suggestion better (no "special" files), but would we be able
>> to avoid scope creep? Wouldn't users then expect being able to specify
>> ignored directories in such projects? And then faster indexing (e.g.
>> using caching), compared to the VC backend?
>
> Isn't this already supported?
Not in the "plain" project backend as proposed.
> In a major mode I'm making right now I believe I have covered both options:
Ignoring is covered by the API, yes. How did you cover the caching issue?
Also note that unless your new project backend is "good enough", you
might make the users' experience worse as a result, at least in some
respects.
> (defcustom elm-root-file "elm.json"
> "...")
>
> (defun elm-project-root (dir)
> "Create the cons cell `project-root' needs to discover root."
> (let ((root (locate-dominating-file dir elm-root-file)))
> (when root
> (cons 'elm root))))
>
> (cl-defmethod project-root ((project (head elm)))
> (cdr project))
>
> (cl-defmethod project-ignores ((project (head elm)) dir)
> (append vc-directory-exclusion-list
> ;; This could also be a defcustom ofc
> (list "./elm-stuff/")))
>
> (add-hook 'project-find-functions #'elm-project-root)
The code is good. With probably one exception: if you have a big enough
project, and it's checked into Git, the VC project will be much faster
at indexing files than your project implementation (because
project-files by default uses 'find').
But if you also define a faster project-files override, it should be fine.
Another issue is, well, if the user has a different package that defines
projects installed (maybe Projectile grows project.el integration
someday), or they're simply used to the VC backend, they might be
surprised with some finer details unless you clearly document that your
package does add a new project backend.
This bug report was last modified 2 years and 170 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.