[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master e7aabd8: dired-delete-file: Do not TAB complete the
From: |
Tino Calancha |
Subject: |
[Emacs-diffs] master e7aabd8: dired-delete-file: Do not TAB complete the user answer |
Date: |
Sun, 6 Aug 2017 08:55:32 -0400 (EDT) |
branch: master
commit e7aabd8b1ced130c8bf5abecf2fa14b962a9b012
Author: Tino Calancha <address@hidden>
Commit: Tino Calancha <address@hidden>
dired-delete-file: Do not TAB complete the user answer
This action might delete directories containing valuable information.
Before previous commit, we prompted users with `yes-or-no-p'
which doesn't TAB complete the user answer. Let's play safe and
keep requiring full answers.
* emacs-master/lisp/dired.el (dired-delete-file): Use `read-string'
instead of `completing-read' to read the user answers.
---
lisp/dired.el | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/lisp/dired.el b/lisp/dired.el
index 0bad256..54bc621 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3011,27 +3011,32 @@ TRASH non-nil means to trash the file instead of
deleting, provided
(delete-file file trash)
(let* ((valid-answers (list "yes" "no" "all" "quit" "help"))
(answer "")
- (input-fn (lambda ()
- (setq answer
- (completing-read
- (format "Recursively %s %s? [yes, no, all,
quit, help] "
- (if (and trash
- delete-by-moving-to-trash)
- "trash"
- "delete")
- (dired-make-relative file))
- valid-answers nil t))
- (when (string= answer "help")
- (setq answer "")
- (with-help-window "*Help*"
- (with-current-buffer "*Help*" (insert
dired-delete-help))))
- answer)))
+ (input-fn
+ (lambda ()
+ (setq answer
+ (read-string
+ (format "Recursively %s %s? [yes, no, all, quit,
help] "
+ (if (and trash
+ delete-by-moving-to-trash)
+ "trash"
+ "delete")
+ (dired-make-relative file))))
+ (when (string= answer "help")
+ (with-help-window "*Help*"
+ (with-current-buffer "*Help*" (insert
dired-delete-help))))
+ answer)))
(if (and recursive
(directory-files file t dired-re-no-dot) ; Not empty.
(eq recursive 'always))
(if (eq recursive 'top) (setq recursive 'always)) ; Don't ask
again.
;; Otherwise prompt user:
- (while (string= "" answer) (funcall input-fn))
+ (funcall input-fn)
+ (while (not (member answer valid-answers))
+ (unless (string= answer "help")
+ (beep)
+ (message "Please answer `yes' or `no' or `all' or `quit'")
+ (sleep-for 2))
+ (funcall input-fn))
(pcase answer
('"all" (setq recursive 'always dired-recursive-deletes
recursive))
('"yes" (if (eq recursive 'top) (setq recursive 'always)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master e7aabd8: dired-delete-file: Do not TAB complete the user answer,
Tino Calancha <=