branch: elpa/helm
commit d7e6276f5e2e3a3ffe6408d6a9cb17090455897f
Author: Thierry Volpiatto <thie...@posteo.net>
Commit: Thierry Volpiatto <thie...@posteo.net>

    Allow answering "!" for recursive deletion of directories in
    
    helm-ff-quick-delete.
    NOTE: helm-delete-file signature has changed, the synchro arg is no
    more used.
---
 helm-files.el | 55 ++++++++++++++++++++++---------------------------------
 1 file changed, 22 insertions(+), 33 deletions(-)

diff --git a/helm-files.el b/helm-files.el
index 94af9f5852..ce69fa7556 100644
--- a/helm-files.el
+++ b/helm-files.el
@@ -6109,7 +6109,8 @@ When a prefix arg is given, meaning of
     (let* ((marked (helm-marked-candidates))
            (trash (helm-ff--delete-by-moving-to-trash (car marked)))
            (helm-ff--trashed-files
-            (and trash (helm-ff-trash-list (helm-trash-directory)))))
+            (and trash (helm-ff-trash-list (helm-trash-directory))))
+           (old--allow-recursive-deletes helm-ff-allow-recursive-deletes))
       (unwind-protect
            (helm-read-answer-dolist-with-action
             "Really %s file `%s'"
@@ -6124,7 +6125,8 @@ When a prefix arg is given, meaning of
              (format helm-ff-last-expanded-candidate-regexp
                      (regexp-quote (if (and 
helm-ff-transformer-show-only-basename
                                             (not (helm-ff-dot-file-p presel)))
-                                       (helm-basename presel) presel))))))))))
+                                       (helm-basename presel) presel))))))
+        (setq helm-ff-allow-recursive-deletes old--allow-recursive-deletes)))))
 
 (defun helm-ff--quick-delete-action (candidate trash)
   "Delete or trash CANDIDATE and remove it from display."
@@ -6135,7 +6137,7 @@ When a prefix arg is given, meaning of
                      (not (helm-ff-dot-file-p candidate)))
                 (helm-basename candidate) candidate))))
   (helm-acase (helm-delete-file
-               candidate helm-ff-signal-error-on-dot-files 'synchro trash)
+               candidate helm-ff-signal-error-on-dot-files trash)
     (skip
      ;; This happens only when trying to
      ;; trash a file already trashed.
@@ -6147,7 +6149,7 @@ When a prefix arg is given, meaning of
   (message nil)
   (helm--remove-marked-and-update-mode-line candidate))
 
-(defun helm-delete-file (file &optional error-if-dot-file-p synchro trash)
+(defun helm-delete-file (file &optional error-if-dot-file-p trash)
   "Delete FILE after querying the user.
 
 When a prefix arg is given, meaning of
@@ -6184,35 +6186,22 @@ is nil."
              (message "User error: `%s' is already trashed" file)
              (sit-for 1.5)
              (cl-return 'skip))
-            ((and (eq (nth 0 file-attrs) t)
+            ((and (eq (nth 0 file-attrs) t) ; a directory.
                   (directory-files file t directory-files-no-dot-files-regexp))
-             ;; Synchro means persistent deletion from HFF.
-             (if synchro
-                 (when (or helm-ff-allow-recursive-deletes
-                           trash
-                           (y-or-n-p (format "Recursive delete of `%s'? "
-                                             (abbreviate-file-name file))))
-                   (delete-directory file 'recursive trash))
-               ;; Avoid using dired-delete-file really annoying in
-               ;; emacs-26 but allows using ! (instead of all) to not
-               ;; confirm anymore for recursive deletion of
-               ;; directory. This is not persistent for all session
-               ;; like emacs-26 does with dired-delete-file (think it
-               ;; is a bug).
-               (if (or helm-ff-allow-recursive-deletes trash)
-                   (delete-directory file 'recursive trash)
-                 (helm-acase (helm-read-answer
-                              (format "Recursive delete of `%s'? [y,n,!,q,h]"
-                                      (abbreviate-file-name file))
-                              '("y" "n" "!" "q")
-                              #'helm-read-answer-default-help-fn)
-                   ("y" (delete-directory file 'recursive trash))
-                   ("!" (setq helm-ff-allow-recursive-deletes t)
-                         (delete-directory file 'recursive trash))
-                   ("n" (cl-return 'skip))
-                   ("q" (throw 'helm-abort-delete-file
-                           (progn
-                             (message "Abort file deletion") (sleep-for 
1))))))))
+             (if (or helm-ff-allow-recursive-deletes trash)
+                 (delete-directory file 'recursive trash)
+               (helm-acase (helm-read-answer
+                            (format "Recursive delete of `%s'? [y,n,!,q,h]"
+                                    (abbreviate-file-name file))
+                            '("y" "n" "!" "q")
+                            #'helm-read-answer-default-help-fn)
+                 ("y" (delete-directory file 'recursive trash))
+                 ("!" (setq helm-ff-allow-recursive-deletes t)
+                      (delete-directory file 'recursive trash))
+                 ("n" (cl-return 'skip))
+                 ("q" (throw 'helm-abort-delete-file
+                        (progn
+                          (message "Abort file deletion") (sleep-for 1)))))))
             ((eq (nth 0 file-attrs) t)
              (delete-directory file nil trash))
             (t (delete-file file trash)))
@@ -6243,7 +6232,7 @@ When a prefix arg is given, meaning of
                (dolist (i files)
                  (set-text-properties 0 (length i) nil i)
                  (let ((res (helm-delete-file
-                             i helm-ff-signal-error-on-dot-files nil trash)))
+                             i helm-ff-signal-error-on-dot-files trash)))
                    (if (eq res 'skip)
                        (progn (message "Directory is not empty, skipping")
                               (sleep-for 1))

Reply via email to