Subject: bug#45607: 27.1; compiled replace-string breaks repeat-complex-command

From: Eli Zaretskii <[email-masked]>
Date: Tue, 09 Aug 2022 21:48:18 +0300

> Cc: Michael Heerdegen <[email-masked]>, [email-masked],
>  Allen Li <[email-masked]>
> From: Juri Linkov <[email-masked]>
> Date: Tue, 09 Aug 2022 21:41:24 +0300
> 
> > It should be added to all commands that work on the region like this,
> > yes.  But I wondered whether we should make some trivial helper
> > functions first like
> >
> > (defun use-region-beginning ()
> >   "Return the start of the region if `use-region-p'."
> >   (and (use-region-p) (region-beginning)))
> >
> > and the same for -end to avoid having to repeat that code phrase so many
> > places.
> 
> Indeed, this will help to make the history items shorter:
> 
>   (replace-string "a" "b" nil (if (use-region-p) (region-beginning)) (if (use-region-p) (region-end)))
>   ->
>   (replace-string "a" "b" nil (use-region-beginning) (use-region-end))

Bonus points for calling use-region-p just once, not twice.