emacs-diffs
[Top][All Lists]
Advanced

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

master 142478c095 2/2: Add user option for controlling dired-do-shell-co


From: Lars Ingebrigtsen
Subject: master 142478c095 2/2: Add user option for controlling dired-do-shell-command prompt
Date: Tue, 22 Mar 2022 12:49:01 -0400 (EDT)

branch: master
commit 142478c0958a233d68616220a6ef49c13f6b28dc
Author: Allen Li <darkfeline@felesatra.moe>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Add user option for controlling dired-do-shell-command prompt
    
    * doc/emacs/dired.texi (Shell Commands in Dired): Document option
    * lisp/dired-aux.el (dired-confirm-shell-command): Add option
    (dired-do-shell-command): Check option before prompting
    (bug#29465).
---
 doc/emacs/dired.texi |  4 +++-
 lisp/dired-aux.el    | 15 ++++++++++++++-
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index e18c8b048b..27df269ce7 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -1007,6 +1007,7 @@ subdirectories whose names match 
@code{grep-find-ignored-directories}.
 @findex dired-do-shell-command
 @kindex ! @r{(Dired)}
 @kindex X @r{(Dired)}
+@vindex dired-confirm-shell-command
 The Dired command @kbd{!} (@code{dired-do-shell-command}) reads a
 shell command string in the minibuffer, and runs that shell command on
 one or more files.  The files that the shell command operates on are
@@ -1043,7 +1044,8 @@ list of file names, putting them into one tar file 
@file{foo.tar}.
 If you want to use @samp{*} as a shell wildcard with whitespace around
 it, write @samp{*""}.  In the shell, this is equivalent to @samp{*};
 but since the @samp{*} is not surrounded by whitespace, Dired does not
-treat it specially.
+treat it specially.  Emacs will prompt for confirmation if you do
+this, unless @code{dired-confirm-shell-command} is @code{nil}.
 
 @item
 Otherwise, if the command string contains @samp{?} surrounded by
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 56897826cb..956899c205 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -795,6 +795,15 @@ offer a smarter default choice of shell command."
       (dired-mark-pop-up nil 'shell files
                         'read-shell-command prompt nil nil))))
 
+;;;###autoload
+(defcustom dired-confirm-shell-command t
+  "Whether to prompt for confirmation for ‘dired-do-shell-command’.
+If non-nil, prompt for confirmation if the command contains potentially
+dangerous characters.  If nil, never prompt for confirmation."
+  :type 'boolean
+  :group 'dired
+  :version "29.1")
+
 ;;;###autoload
 (defun dired-do-async-shell-command (command &optional arg file-list)
   "Run a shell command COMMAND on the marked files asynchronously.
@@ -873,7 +882,9 @@ can be produced by `dired-get-marked-files', for example.
 
 `dired-guess-shell-alist-default' and
 `dired-guess-shell-alist-user' are consulted when the user is
-prompted for the shell command to use interactively."
+prompted for the shell command to use interactively.
+
+Also see the `dired-confirm-shell-command' variable."
   ;; Functions dired-run-shell-command and dired-shell-stuff-it do the
   ;; actual work and can be redefined for customization.
   (interactive
@@ -891,6 +902,8 @@ prompted for the shell command to use interactively."
          (ok (cond
               ((not (or on-each no-subst))
                (error "You can not combine `*' and `?' substitution marks"))
+              ((not dired-confirm-shell-command)
+               t)
               ((setq confirmations (dired--need-confirm-positions command "*"))
                (dired--no-subst-confirm confirmations command))
               ((setq confirmations (dired--need-confirm-positions command "?"))



reply via email to

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