[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emac
From: |
Dmitry Gutov |
Subject: |
bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project |
Date: |
Sat, 6 Jun 2020 02:11:37 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 |
Hi!
On 05.06.2020 22:22, Theodor Thornhill wrote:
"Dmitry Gutov" <dgutov@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.
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Juri Linkov, 2020/06/02
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Dmitry Gutov, 2020/06/05
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Theodor Thornhill, 2020/06/05
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project,
Dmitry Gutov <=
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Theodor Thornhill, 2020/06/06
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Dmitry Gutov, 2020/06/06
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Theodor Thornhill, 2020/06/06
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Dmitry Gutov, 2020/06/06
- bug#41572: 28.0.50; [PATCH] Support plain project marked with file .emacs-project, Theodor Thornhill, 2020/06/06