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))