branch: elpa/magit
commit b64be35cd6e1bf54afd2aa3814629193020f896a
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit-file-delete: Require confirmation for directories
---
lisp/magit-files.el | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/lisp/magit-files.el b/lisp/magit-files.el
index 1abc036a27..9b1e841876 100644
--- a/lisp/magit-files.el
+++ b/lisp/magit-files.el
@@ -691,14 +691,21 @@ Git, then fallback to using `delete-file'."
(magit-confirm-files 'delete files "Delete")
(list (magit-read-file "Delete file" nil t)))
current-prefix-arg))
- (if (magit-file-tracked-p (car files))
- (magit-call-git "rm" (and force "--force") "--" files)
- (let ((topdir (magit-toplevel)))
- (dolist (file files)
- (setq file (expand-file-name file topdir))
- (if (file-directory-p file)
- (delete-directory file t t)
- (delete-file file t)))))
+ (let ((args (and force (list "--force"))))
+ (when-let ((dirs (seq-filter #'file-directory-p files)))
+ (if (yes-or-no-p (format "Recursively delete %s %S:"
+ (if (length= dirs 1) "directory" "directories")
+ (string-join dirs ",")))
+ (push "-r" args)
+ (user-error "Abort")))
+ (if (magit-file-tracked-p (car files))
+ (magit-call-git "rm" args "--" files)
+ (let ((topdir (magit-toplevel)))
+ (dolist (file files)
+ (setq file (expand-file-name file topdir))
+ (if (file-directory-p file)
+ (delete-directory file t t)
+ (delete-file file t))))))
(magit-refresh))
;;;###autoload