1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-15 09:47:20 +00:00

Add a second argument to project-ignores

* lisp/progmodes/project.el (project-ignores): Add a second
argument DIR.

* lisp/progmodes/project.el (project-ignores): Only include the VC
ignores if DIR is the VC root.

* lisp/progmodes/xref.el (xref-find-regexp): Update accordingly.
This commit is contained in:
Dmitry Gutov 2015-08-02 01:01:28 +03:00
parent 08d65696c9
commit 543bb9bc20
3 changed files with 18 additions and 14 deletions

View File

@ -655,7 +655,6 @@ It can be quoted, or be inside a quoted form."
(declare-function project-search-path "project")
(declare-function project-current "project")
(declare-function project-prune-directories "project")
(defun elisp--xref-find-references (symbol)
(cl-mapcan

View File

@ -78,10 +78,12 @@ It should include the current project root, as well as the roots
of any other currently open projects, if they're meant to be
edited together. The directory names should be absolute.")
(cl-defgeneric project-ignores (_project)
"Return the list of glob patterns that match ignored files.
(cl-defgeneric project-ignores (_project _dir)
"Return the list of glob patterns to ignore inside DIR.
Patterns can match both regular files and directories.
To root an entry, start it with `./'. To match directories only,
end it with `/'."
end it with `/'. DIR must be either one of `project-roots', or
an element of `project-search-path'."
(require 'grep)
(defvar grep-find-ignored-files)
(nconc
@ -100,16 +102,18 @@ end it with `/'."
(cl-defmethod project-roots ((project (head vc)))
(list (cdr project)))
(cl-defmethod project-ignores ((project (head vc)))
(cl-defmethod project-ignores ((project (head vc)) dir)
(nconc
(let* ((dir (cdr project))
(backend (vc-responsible-backend dir)))
(mapcar
(lambda (entry)
(if (string-match "\\`/" entry)
(replace-match "./" t t entry)
entry))
(vc-call-backend backend 'ignore-completion-table dir)))
(let* ((root (cdr project))
backend)
(when (file-equal-p dir root)
(setq backend (vc-responsible-backend root))
(mapcar
(lambda (entry)
(if (string-match "\\`/" entry)
(replace-match "./" t t entry)
entry))
(vc-call-backend backend 'ignore-completion-table root))))
(cl-call-next-method)))
(defun project-ask-user (dir)

View File

@ -791,7 +791,8 @@ to search in, and the file name pattern to search for."
(lambda (_kind regexp)
(cl-mapcan
(lambda (dir)
(xref-collect-matches regexp files dir (project-ignores proj)))
(xref-collect-matches regexp files dir
(project-ignores proj dir)))
dirs))))
(xref--show-xrefs regexp 'matches regexp nil)))