# HG changeset patch # User Richard M. Stallman # Date 793515774 0 # Node ID 7b7874738e7c42d7e74e6d9958feb32a23f06e7e # Parent abd9ad4309b0f43de56d659ff825f4fd0cb709c0 (shell-command-on-region): When computing interactive args, read the minibuffer arg first, then get the region bounds. diff -r abd9ad4309b0 -r 7b7874738e7c lisp/simple.el --- a/lisp/simple.el Thu Feb 23 04:59:43 1995 +0000 +++ b/lisp/simple.el Thu Feb 23 05:02:54 1995 +0000 @@ -795,11 +795,17 @@ If OUTPUT-BUFFER is not a buffer and not nil, insert output in the current buffer. In either case, the output is inserted after point (leaving mark after it)." - (interactive (list (region-beginning) (region-end) - (read-from-minibuffer "Shell command on region: " - nil nil nil 'shell-command-history) - current-prefix-arg - (prefix-numeric-value current-prefix-arg))) + (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))) + (list (region-beginning) (region-end) + string + current-prefix-arg + (prefix-numeric-value current-prefix-arg)))) (if (and output-buffer (not (or (bufferp output-buffer) (stringp output-buffer)))) ;; Replace specified region with output from command.