]> git.eshelyaron.com Git - emacs.git/commitdiff
vc-dir-ignore: More accurately choose base directory
authorDmitry Gutov <dgutov@yandex.ru>
Mon, 24 Feb 2020 23:03:28 +0000 (01:03 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 24 Feb 2020 23:03:42 +0000 (01:03 +0200)
* lisp/vc/vc-dir.el:
(vc-dir-ignore): Use it (bug#37189).

* lisp/vc/vc.el:
(vc--ignore-base-dir): Extract from vc-ignore.

lisp/vc/vc-dir.el
lisp/vc/vc.el

index e5c5e16a17a0767f77c12df523d9b6740924033c..38b4937e8544932eabb732682a4a53714520c7f7 100644 (file)
@@ -879,9 +879,10 @@ If a prefix argument is given, ignore all marked files."
           (vc-ignore (vc-dir-fileinfo->name filearg))
           t))
        vc-ewoc)
-    (vc-ignore
-     (file-relative-name (vc-dir-current-file))
-     default-directory)))
+    (let ((rel-dir (vc--ignore-base-dir)))
+      (vc-ignore
+       (file-relative-name (vc-dir-current-file) rel-dir)
+       rel-dir))))
 
 (defun vc-dir-current-file ()
   (let ((node (ewoc-locate vc-ewoc)))
index 53491dd1b048afc61718c2528ea2cf6e1ac86b63..fe666413168174dcf2fc3fe3ded6b53fb8bbd9ef 100644 (file)
@@ -1406,14 +1406,7 @@ When called interactively, prompt for a FILE to ignore, unless a
 prefix argument is given, in which case prompt for a file FILE to
 remove from the list of ignored files."
   (interactive
-   (let* ((backend (vc-responsible-backend default-directory))
-          (rel-dir
-           (condition-case nil
-               (file-name-directory
-                (vc-call-backend backend 'find-ignore-file
-                                 default-directory))
-             (vc-not-supported
-              default-directory)))
+   (let* ((rel-dir (vc--ignore-base-dir))
           (file (read-file-name "File to ignore: ")))
      (when (and (file-name-absolute-p file)
                 (file-in-directory-p file rel-dir))
@@ -1426,6 +1419,15 @@ remove from the list of ignored files."
                       (error "Unknown backend"))))
     (vc-call-backend backend 'ignore file directory remove)))
 
+(defun vc--ignore-base-dir ()
+  (let ((backend (vc-responsible-backend default-directory)))
+    (condition-case nil
+        (file-name-directory
+         (vc-call-backend backend 'find-ignore-file
+                          default-directory))
+      (vc-not-supported
+       default-directory))))
+
 (defun vc-default-ignore (backend file &optional directory remove)
   "Ignore FILE under DIRECTORY (default is `default-directory').
 FILE is a wildcard specification relative to DIRECTORY.