>From e1562448ca0d95188c4dc9712c8aa4575a5a3bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Syn=C3=A1=C4=8Dek?= Date: Wed, 25 May 2022 10:53:55 +0200 Subject: [PATCH] Add new user option project-vc-find-tracked-only * doc/emacs/maintaining.texi (Projects): Document it. * lisp/progmodes/project.el (project--vc-list-files): Use it. --- doc/emacs/maintaining.texi | 6 ++++-- etc/NEWS | 5 +++++ lisp/progmodes/project.el | 16 +++++++++++----- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 3ddea0ae58..c33b649490 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1664,8 +1664,10 @@ Projects support additional types of projects. Which files do or don't belong to a project is also determined by -the project back-end. For example, the VC back-end doesn't consider -``ignored'' files (@pxref{VC Ignore}) to be part of the project. +the project back-end. For example, the VC back-end only considers +``ignored'' files (@pxref{VC Ignore}) to be part of the project if +the value of the variable @code{project-vc-find-tracked-only} is +non-nil. @menu * Project File Commands:: Commands for handling project files. diff --git a/etc/NEWS b/etc/NEWS index 857f300384..abae05749c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1678,6 +1678,11 @@ Enabling this minor mode turns on hiding header material, like 'elide-head' does; disabling it shows the header. The commands 'elide-head' and 'elide-head-show' are now obsolete. ++++ +*** New user option 'project-vc-find-tracked-only'. +If set to non-nil, 'project-find-file' only considers tracked, that is +not ignored, files. + --- ** The autoarg.el library is now marked obsolete. This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 6c50135358..836d6a1574 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -382,6 +382,11 @@ project-vc-merge-submodules :package-version '(project . "0.2.0") :safe #'booleanp) +(defcustom project-vc-find-tracked-only nil + "Non-nil makes `project-find-file' consider only tracked files." + :type 'boolean + :safe #'booleanp) + ;; FIXME: Using the current approach, major modes are supposed to set ;; this variable to a buffer-local value. So we don't have access to ;; the "external roots" of language A from buffers of language B, which @@ -512,8 +517,9 @@ project--vc-list-files (args '("-z")) (vc-git-use-literal-pathspecs nil) files) - ;; Include unregistered. - (setq args (append args '("-c" "-o" "--exclude-standard"))) + (setq args (append args + '("-c" "--exclude-standard") + (unless project-vc-find-tracked-only '("-o")))) (when extra-ignores (setq args (append args (cons "--" @@ -565,9 +571,9 @@ project--vc-list-files (delete-consecutive-dups files))) (`Hg (let ((default-directory (expand-file-name (file-name-as-directory dir))) - args) - ;; Include unregistered. - (setq args (nconc args '("-mcardu" "--no-status" "-0"))) + (args (list (concat "-mcard" (unless project-vc-find-tracked-only "u")) + "--no-status" + "-0"))) (when extra-ignores (setq args (nconc args (mapcan -- 2.36.1