mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 12:21:25 -08:00
Fix vc-default-ignore
* lisp/vc/vc.el: (vc-default-ignore) Treat FILE parameter as relative to DIRECTORY parameter. Construct a file-path relative to directory of ignore file. When removing, use properly anchored regexp. Remove entire line, not just the match (bug#37217).
This commit is contained in:
parent
c99c9ec28c
commit
f144c87f92
1 changed files with 9 additions and 4 deletions
|
|
@ -1417,17 +1417,22 @@ remove from the list of ignored files."
|
|||
|
||||
(defun vc-default-ignore (backend file &optional directory remove)
|
||||
"Ignore FILE under the VCS of DIRECTORY (default is `default-directory').
|
||||
FILE is a file wildcard, relative to the root directory of DIRECTORY.
|
||||
FILE is a wildcard specification, either relative to
|
||||
DIRECTORY or absolute.
|
||||
When called from Lisp code, if DIRECTORY is non-nil, the
|
||||
repository to use will be deduced by DIRECTORY; if REMOVE is
|
||||
non-nil, remove FILE from ignored files.
|
||||
Argument BACKEND is the backend you are using."
|
||||
(let ((ignore
|
||||
(vc-call-backend backend 'find-ignore-file (or directory default-directory)))
|
||||
(pattern (file-relative-name
|
||||
(expand-file-name file) (file-name-directory file))))
|
||||
file-path root-dir pattern)
|
||||
(setq file-path (expand-file-name file directory))
|
||||
(setq root-dir (file-name-directory ignore))
|
||||
(when (not (string= (substring file-path 0 (length root-dir)) root-dir))
|
||||
(error "Ignore spec %s is not below project root %s" file-path root-dir))
|
||||
(setq pattern (substring file-path (length root-dir)))
|
||||
(if remove
|
||||
(vc--remove-regexp pattern ignore)
|
||||
(vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$\\)") ignore)
|
||||
(vc--add-line pattern ignore))))
|
||||
|
||||
(defun vc-default-ignore-completion-table (backend file)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue