emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master d3256dc 2/2: Rename vc-dir-delete-files-no-vc to vc


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] master d3256dc 2/2: Rename vc-dir-delete-files-no-vc to vc-dir-clean-files
Date: Sun, 14 Jul 2019 08:25:53 -0400 (EDT)

branch: master
commit d3256dc78a464117c4fef98b572611370482763a
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Rename vc-dir-delete-files-no-vc to vc-dir-clean-files
    
    * doc/emacs/maintaining.texi (VC Directory Commands): Adjust
    command name.
    
    * lisp/vc/vc-dir.el (vc-dir-clean-files): Rename from
    vc-dir-delete-files-no-vc, and work on unregistered files only
    (bug#31732).
    (vc-dir-menu-map): Adjust command name.
---
 doc/emacs/maintaining.texi |  2 +-
 etc/NEWS                   |  2 +-
 lisp/vc/vc-dir.el          | 25 +++++++++++++++++--------
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 42ea4d3..c3895bf 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1354,7 +1354,7 @@ Branches}.
 
 @item d
 Delete the marked files, or the current file if no marks
-(@code{vc-dir-delete-files-no-vc)}.  The files will not be marked as
+(@code{vc-dir-clean-delete)}.  The files will not be marked as
 deleted in the version control system, so this function is mostly
 useful for unregistered files.
 @end table
diff --git a/etc/NEWS b/etc/NEWS
index a36785a..190509f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -694,7 +694,7 @@ print diffs and logs between the merge base (common 
ancestor) of two
 given revisions.
 
 +++
-*** The new `d' command (`vc-dir-delete-files-no-vc') in `vc-dir-mode'
+*** The new `d' command (`vc-dir-clean-files') in `vc-dir-mode'
 buffers will delete the marked files (or if no files are marked, the
 file under point).  This command does not notify the VC backend, and
 is mostly useful for unregistered files.
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 79f395c..436a0a6 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -41,6 +41,7 @@
 (require 'vc)
 (require 'tool-bar)
 (require 'ewoc)
+(require 'seq)
 
 ;;; Code:
 (eval-when-compile (require 'cl-lib))
@@ -181,8 +182,8 @@ See `run-hooks'."
       '(menu-item "Open File" vc-dir-find-file
                  :help "Find the file on the current line"))
     (define-key map [delete]
-      '(menu-item "Delete" vc-dir-delete-files-no-vc
-                 :help "Delete the marked files"))
+      '(menu-item "Delete" vc-dir-clean-files
+                 :help "Delete the unregistered marked files"))
     (define-key map [sepvcdet] '("--"))
     ;; FIXME: This needs a key binding.  And maybe a better name
     ;; ("Insert" like PCL-CVS uses does not sound that great either)...
@@ -267,7 +268,7 @@ See `run-hooks'."
     ;;                                     bound by `special-mode'.
     ;; Marking.
     (define-key map "m" 'vc-dir-mark)
-    (define-key map "d" 'vc-dir-delete-files-no-vc)
+    (define-key map "d" 'vc-dir-clean-files)
     (define-key map "M" 'vc-dir-mark-all-files)
     (define-key map "u" 'vc-dir-unmark)
     (define-key map "U" 'vc-dir-unmark-all-files)
@@ -766,16 +767,24 @@ that share the same state."
   (interactive "e")
   (vc-dir-at-event e (vc-dir-mark-unmark 'vc-dir-toggle-mark-file)))
 
-(defun vc-dir-delete-files-no-vc ()
+(defun vc-dir-clean-files ()
   "Delete the marked files, or the current file if no marks.
 The files will not be marked as deleted in the version control
 system; see `vc-dir-delete-file'."
   (interactive)
-  (map-y-or-n-p "Delete %s? "
-                #'delete-file
-                (or (vc-dir-marked-files)
+  (let* ((files (or (vc-dir-marked-files)
                     (list (vc-dir-current-file))))
-  (revert-buffer))
+         (tracked
+          (seq-filter (lambda (file)
+                        (not (eq (vc-call-backend vc-dir-backend 'state file)
+                                 'unregistered)))
+                      files)))
+    (when tracked
+      (user-error "Trying to clean tracked file%s: %s"
+                  (if (= (length tracked) 1) "" "s")
+                  (mapconcat #'file-name-nondirectory tracked ", ")))
+    (map-y-or-n-p "Delete %s? " #'delete-file files)
+    (revert-buffer)))
 
 (defun vc-dir-delete-file ()
   "Delete the marked files, or the current file if no marks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]