diff options
-rw-r--r-- | doc/emacs/maintaining.texi | 3 | ||||
-rw-r--r-- | etc/NEWS | 5 | ||||
-rw-r--r-- | lisp/progmodes/project.el | 16 |
3 files changed, 19 insertions, 5 deletions
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 3ddea0ae588..edc5acbd65d 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1666,6 +1666,9 @@ 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. +Also, the VC Project back-end considers ``untracked'' files by default. +That behavior is controllable with the variable +@code{project-vc-include-untracked}. @menu * Project File Commands:: Commands for handling project files. @@ -1717,6 +1717,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-include-untracked'. +If non-nil, files untracked by a VCS are considered to be part of +the project by a VC project based on that VCS. + --- ** 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 6e0874bfc32..60fbb302f7b 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -382,6 +382,11 @@ you might have to restart Emacs to see the effect." :package-version '(project . "0.2.0") :safe #'booleanp) +(defcustom project-vc-include-untracked t + "When non-nil, the VC project backend includes untracked 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 @@ backend implementation of `project-external-roots'.") (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") + (when project-vc-include-untracked '("-o")))) (when extra-ignores (setq args (append args (cons "--" @@ -565,9 +571,9 @@ backend implementation of `project-external-roots'.") (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" (when project-vc-include-untracked "u")) + "--no-status" + "-0"))) (when extra-ignores (setq args (nconc args (mapcan |