diff --git a/lisp/simple.el b/lisp/simple.el index 56b45e03836..7445983cc69 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1421,13 +1421,15 @@ or buffer name to which to direct the command's standard error output. If it is nil, error output is mingled with regular output. In an interactive call, the variable `shell-command-default-error-buffer' specifies the value of ERROR-BUFFER." - (interactive (let ((string - ;; Do this before calling region-beginning - ;; and region-end, in case subprocess output - ;; relocates them while we are in the minibuffer. - (read-from-minibuffer "Shell command on region: " - nil nil nil - 'shell-command-history))) + (interactive (let (string) + (unless (mark) + (error "The mark is not set now, so there is no region")) + ;; Do this before calling region-beginning + ;; and region-end, in case subprocess output + ;; relocates them while we are in the minibuffer. + (setq string (read-from-minibuffer "Shell command on region: " + nil nil nil + 'shell-command-history)) ;; call-interactively recognizes region-beginning and ;; region-end specially, leaving them in the history. (list (region-beginning) (region-end)