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

From: Juri Linkov <[email-masked]>
Date: Thu, 30 Mar 2023 19:35:55 +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.
>
> I think both should work.
>
> True that 'M-s r' doesn't work if you first start editing the search
> string with 'M-e'.  Maybe Isearch would also benefit from having that
> work?  With C-s and C-M-s bindings, which work both while searching and
> while editing the search string in the minibuffer?

It should be straightforward to support this in the minibuffer
since there was a recent precedent of implementing a similar feature
that toggles case-fold with 'M-s c' (read-regexp-toggle-case-fold)
in the minibuffer that reads a regexp to search/replace.