This patch add support for "plain project" in project.el. Plain project is a kind of project without any VC backend but should be. To mark a directoy as project, put an empty magic file .emacs-project under the directory, and project.el should be responsible for it. ~~~~ From cb0a67cfacf141a8b1955c08c3f459bcac801a39 Mon Sep 17 00:00:00 2001 From: Zhu Zihao Date: Thu, 28 May 2020 11:04:44 +0800 Subject: [PATCH] Support plain project marked with file .emacs-project * lisp/progmodes/project.el (project-try-plain): New function * lisp/progmodes/project.el (project-root): New dispatch variants * lisp/progmodes/project.el (project-find-functions): Add project-try-plain --- lisp/progmodes/project.el | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 88f73e4fb31..4c1810aeb56 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -94,7 +94,7 @@ (require 'cl-generic) -(defvar project-find-functions (list #'project-try-vc) +(defvar project-find-functions (list #'project-try-plain #'project-try-vc) "Special hook to find the project containing a given directory. Each functions on this hook is called in turn with one argument (the directory) and should return either nil to mean @@ -194,6 +194,18 @@ project-files (or dirs (list (project-root project))))) +(defun project-try-plain (dir) + "Return the plain project instance of current DIR. + +A directory with magic file \".emacs-project\" will be recognized as +plain project." + (pcase (locate-dominating-file dir ".emacs-project") + (`nil nil) + (root (cons 'plain root)))) + +(cl-defmethod project-root ((project (head plain))) + (cdr project)) + (defun project--files-in-directory (dir ignores &optional files) (require 'find-dired) (require 'xref) -- 2.26.2