Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch

From: Juri Linkov <[email-masked]>
Date: Wed, 29 Mar 2023 19:41:00 +0300

> isearch-forward and isearch-forward-regexp are bound to C-s and C-M-s.
> After an isearch-forward is started, it can be switched to
> isearch-forward-regexp by typing M-s r.
>
> query-replace and query-replace-regexp are bound to M-% and C-M-%.
> After a query-replace is started, there's no way to switch it to
> query-replace-regexp.

It's not clear whether you want to switch modes when the replacement
process is already underway, or when reading query-replace arguments
in the minibuffer.  In Isearch mode 'M-s r' switches modes when the
search process is in progress, not when reading the search string
in the minibuffer.

> M-s is already bound in query-replace (it's a minibuffer binding), so
> the same binding as isearch won't work.  I suggest that typing C-M-% in
> query-replace should switch to query-replace-regexp, and M-% in
> query-replace-regexp should switch to query-replace.

Maybe 'M-s' in the minibuffer could be rebound to 'M-s M-s',
thus freeing 'M-s' as a prefix key.