Subject: Re: bug#72282: History entries shouldn't have the exact region hardwired in

From: Juri Linkov <[email-masked]>
Date: Thu, 25 Jul 2024 21:12:44 +0300

> (repeat-complex-command)
> is great, except when used after
> (shell-command-on-region)
> in which case we will be repeating
> (shell-command-on-region 2234 2892 ...)
> instead of just
> (shell-command-on-region REGION-START REGION-END ...)
> in other words the previous exact region is hardwired into
> the history.
>
> Yes, you might say well then just do `M-| <up> RET`.
> Well that's harder to type than `<again>`, `<redo>`, `C-x M-:` or `C-x M-ESC`,
> which are the bindings of repeat-complex-command.
>
> So maybe for all history items, they shouldn't have the exact region hardwired in.

Currently this can be achieved with a 'declare' form,
but I don't know why this is not enabled consistently
for region arguments of more commands:

diff --git a/lisp/simple.el b/lisp/simple.el
index a9f8b5845d8..b3a72c2635a 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4944,6 +4944,9 @@ shell-command-on-region
 The differences are especially prominent when the region includes
 more than one line, i.e. when piping to a shell commands with embedded
 newlines."
+  (declare (interactive-args
+	    (start (use-region-beginning))
+	    (end (use-region-end))))
   (interactive (let (string)
 		 (unless (mark)
 		   (user-error "The mark is not set now, so there is no region"))