From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Spencer Baugh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 28 Mar 2023 15:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 62505@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.168001769817292 (code B ref -1); Tue, 28 Mar 2023 15:35:02 +0000 Received: (at submit) by debbugs.gnu.org; 28 Mar 2023 15:34:58 +0000 Received: from localhost ([127.0.0.1]:50534 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phBLd-0004Up-5X for submit@debbugs.gnu.org; Tue, 28 Mar 2023 11:34:58 -0400 Received: from lists.gnu.org ([209.51.188.17]:52886) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phBLa-0004Uf-P7 for submit@debbugs.gnu.org; Tue, 28 Mar 2023 11:34:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phBLa-0007Vm-Fr for bug-gnu-emacs@gnu.org; Tue, 28 Mar 2023 11:34:54 -0400 Received: from mxout5.mail.janestreet.com ([64.215.233.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1phBLX-0005Cm-8J for bug-gnu-emacs@gnu.org; Tue, 28 Mar 2023 11:34:54 -0400 From: Spencer Baugh Date: Tue, 28 Mar 2023 11:34:50 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=64.215.233.18; envelope-from=sbaugh@janestreet.com; helo=mxout5.mail.janestreet.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) 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. 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. In GNU Emacs 29.0.60 (build 3, x86_64-pc-linux-gnu, X toolkit, cairo version 1.15.12, Xaw scroll bars) of 2023-03-13 built on igm-qws-u22796a Repository revision: e759905d2e0828eac4c8164b09113b40f6899656 Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: CentOS Linux 7 (Core) Configured using: 'configure --with-x-toolkit=lucid --with-modules --with-gif=ifavailable' Configured features: CAIRO DBUS FREETYPE GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM LUCID ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: ELisp/l Minor modes in effect: jane-fe-minor-mode: t bug-reference-prog-mode: t jane-fe-jenga-minor-mode: t editorconfig-mode: t which-function-mode: t global-git-commit-mode: t magit-auto-revert-mode: t auto-revert-mode: t shell-dirtrack-mode: t server-mode: t windmove-mode: t savehist-mode: t save-place-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tab-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/csharp-mode hides /home/sbaugh/.local/src/emacs29/lisp/progmodes/csharp-mode /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/eldoc hides /home/sbaugh/.local/src/emacs29/lisp/emacs-lisp/eldoc /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/auctex/lpath hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dictionary/lpath /home/sbaugh/.local/src/emacs29/lisp/net/dictionary hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dictionary/dictionary /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/caml-font hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/ocaml/caml-font /home/sbaugh/.local/src/emacs29/lisp/org/org-version hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-version /home/sbaugh/.local/src/emacs29/lisp/org/org-loaddefs hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-loaddefs /home/sbaugh/.local/src/emacs29/lisp/org/org-keys hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-keys /home/sbaugh/.local/src/emacs29/lisp/org/ol hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol /home/sbaugh/.local/src/emacs29/lisp/org/ob-perl hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-perl /home/sbaugh/.local/src/emacs29/lisp/org/ob-core hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-core /home/sbaugh/.local/src/emacs29/lisp/org/ox hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox /home/sbaugh/.local/src/emacs29/lisp/org/ol-rmail hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-rmail /home/sbaugh/.local/src/emacs29/lisp/org/ob-octave hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-octave /home/sbaugh/.local/src/emacs29/lisp/org/ob-comint hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-comint /home/sbaugh/.local/src/emacs29/lisp/org/ol-w3m hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-w3m /home/sbaugh/.local/src/emacs29/lisp/org/ob-org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-org /home/sbaugh/.local/src/emacs29/lisp/org/ox-texinfo hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-texinfo /home/sbaugh/.local/src/emacs29/lisp/org/org-inlinetask hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-inlinetask /home/sbaugh/.local/src/emacs29/lisp/org/ol-mhe hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-mhe /home/sbaugh/.local/src/emacs29/lisp/org/ob-ocaml hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ocaml /home/sbaugh/.local/src/emacs29/lisp/org/ob-clojure hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-clojure /home/sbaugh/.local/src/emacs29/lisp/org/ox-publish hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-publish /home/sbaugh/.local/src/emacs29/lisp/org/ol-irc hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-irc /home/sbaugh/.local/src/emacs29/lisp/org/ob-calc hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-calc /home/sbaugh/.local/src/emacs29/lisp/org/ox-odt hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-odt /home/sbaugh/.local/src/emacs29/lisp/org/org-id hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-id /home/sbaugh/.local/src/emacs29/lisp/org/ol-gnus hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-gnus /home/sbaugh/.local/src/emacs29/lisp/org/ob-matlab hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-matlab /home/sbaugh/.local/src/emacs29/lisp/org/ox-icalendar hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-icalendar /home/sbaugh/.local/src/emacs29/lisp/org/org-footnote hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-footnote /home/sbaugh/.local/src/emacs29/lisp/org/ol-bibtex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-bibtex /home/sbaugh/.local/src/emacs29/lisp/org/ob-lisp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lisp /home/sbaugh/.local/src/emacs29/lisp/org/ob-C hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-C /home/sbaugh/.local/src/emacs29/lisp/org/ox-org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-org /home/sbaugh/.local/src/emacs29/lisp/org/org-indent hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-indent /home/sbaugh/.local/src/emacs29/lisp/org/ol-info hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-info /home/sbaugh/.local/src/emacs29/lisp/org/ob-maxima hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-maxima /home/sbaugh/.local/src/emacs29/lisp/org/ob-awk hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-awk /home/sbaugh/.local/src/emacs29/lisp/org/ox-man hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-man /home/sbaugh/.local/src/emacs29/lisp/org/org-goto hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-goto /home/sbaugh/.local/src/emacs29/lisp/org/ox-md hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-md /home/sbaugh/.local/src/emacs29/lisp/org/ol-eshell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-eshell /home/sbaugh/.local/src/emacs29/lisp/org/ob-lua hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lua /home/sbaugh/.local/src/emacs29/lisp/org/org-habit hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-habit /home/sbaugh/.local/src/emacs29/lisp/org/ob-R hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-R /home/sbaugh/.local/src/emacs29/lisp/org/ol-eww hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-eww /home/sbaugh/.local/src/emacs29/lisp/org/ob-makefile hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-makefile /home/sbaugh/.local/src/emacs29/lisp/org/ox-latex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-latex /home/sbaugh/.local/src/emacs29/lisp/org/ol-docview hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-docview /home/sbaugh/.local/src/emacs29/lisp/org/ob-lob hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lob /home/sbaugh/.local/src/emacs29/lisp/org/ox-beamer hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-beamer /home/sbaugh/.local/src/emacs29/lisp/org/org-faces hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-faces /home/sbaugh/.local/src/emacs29/lisp/org/ob hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob /home/sbaugh/.local/src/emacs29/lisp/org/ox-html hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-html /home/sbaugh/.local/src/emacs29/lisp/org/org-feed hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-feed /home/sbaugh/.local/src/emacs29/lisp/org/ol-bbdb hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ol-bbdb /home/sbaugh/.local/src/emacs29/lisp/org/ob-lilypond hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-lilypond /home/sbaugh/.local/src/emacs29/lisp/org/ox-ascii hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ox-ascii /home/sbaugh/.local/src/emacs29/lisp/org/ob-latex hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-latex /home/sbaugh/.local/src/emacs29/lisp/org/org hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org /home/sbaugh/.local/src/emacs29/lisp/org/ob-tangle hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-tangle /home/sbaugh/.local/src/emacs29/lisp/org/org-tempo hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-tempo /home/sbaugh/.local/src/emacs29/lisp/org/org-duration hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-duration /home/sbaugh/.local/src/emacs29/lisp/org/ob-sqlite hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sqlite /home/sbaugh/.local/src/emacs29/lisp/org/org-entities hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-entities /home/sbaugh/.local/src/emacs29/lisp/org/ob-table hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-table /home/sbaugh/.local/src/emacs29/lisp/org/ob-js hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-js /home/sbaugh/.local/src/emacs29/lisp/org/org-table hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-table /home/sbaugh/.local/src/emacs29/lisp/org/ob-sql hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sql /home/sbaugh/.local/src/emacs29/lisp/org/org-timer hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-timer /home/sbaugh/.local/src/emacs29/lisp/org/org-element hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-element /home/sbaugh/.local/src/emacs29/lisp/org/ob-java hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-java /home/sbaugh/.local/src/emacs29/lisp/org/org-ctags hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-ctags /home/sbaugh/.local/src/emacs29/lisp/org/ob-shell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-shell /home/sbaugh/.local/src/emacs29/lisp/org/ob-groovy hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-groovy /home/sbaugh/.local/src/emacs29/lisp/org/org-src hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-src /home/sbaugh/.local/src/emacs29/lisp/org/org-datetree hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-datetree /home/sbaugh/.local/src/emacs29/lisp/org/ob-haskell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-haskell /home/sbaugh/.local/src/emacs29/lisp/org/org-plot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-plot /home/sbaugh/.local/src/emacs29/lisp/org/org-compat hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-compat /home/sbaugh/.local/src/emacs29/lisp/org/ob-screen hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-screen /home/sbaugh/.local/src/emacs29/lisp/org/ob-fortran hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-fortran /home/sbaugh/.local/src/emacs29/lisp/org/org-protocol hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-protocol /home/sbaugh/.local/src/emacs29/lisp/org/org-crypt hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-crypt /home/sbaugh/.local/src/emacs29/lisp/org/ob-sed hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sed /home/sbaugh/.local/src/emacs29/lisp/org/ob-gnuplot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-gnuplot /home/sbaugh/.local/src/emacs29/lisp/org/org-pcomplete hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-pcomplete /home/sbaugh/.local/src/emacs29/lisp/org/org-colview hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-colview /home/sbaugh/.local/src/emacs29/lisp/org/ob-scheme hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-scheme /home/sbaugh/.local/src/emacs29/lisp/org/ob-forth hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-forth /home/sbaugh/.local/src/emacs29/lisp/org/org-num hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-num /home/sbaugh/.local/src/emacs29/lisp/org/org-clock hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-clock /home/sbaugh/.local/src/emacs29/lisp/org/ob-exp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-exp /home/sbaugh/.local/src/emacs29/lisp/org/org-mouse hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-mouse /home/sbaugh/.local/src/emacs29/lisp/org/org-capture hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-capture /home/sbaugh/.local/src/emacs29/lisp/org/ob-sass hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-sass /home/sbaugh/.local/src/emacs29/lisp/org/ob-eval hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-eval /home/sbaugh/.local/src/emacs29/lisp/org/ob-ref hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ref /home/sbaugh/.local/src/emacs29/lisp/org/ob-emacs-lisp hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-emacs-lisp /home/sbaugh/.local/src/emacs29/lisp/org/org-mobile hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-mobile /home/sbaugh/.local/src/emacs29/lisp/org/ob-ruby hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ruby /home/sbaugh/.local/src/emacs29/lisp/org/ob-eshell hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-eshell /home/sbaugh/.local/src/emacs29/lisp/org/org-lint hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-lint /home/sbaugh/.local/src/emacs29/lisp/org/org-agenda hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-agenda /home/sbaugh/.local/src/emacs29/lisp/org/org-macro hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-macro /home/sbaugh/.local/src/emacs29/lisp/org/org-attach-git hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-attach-git /home/sbaugh/.local/src/emacs29/lisp/org/ob-processing hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-processing /home/sbaugh/.local/src/emacs29/lisp/org/ob-css hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-css /home/sbaugh/.local/src/emacs29/lisp/org/ob-dot hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-dot /home/sbaugh/.local/src/emacs29/lisp/org/org-list hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-list /home/sbaugh/.local/src/emacs29/lisp/org/org-macs hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-macs /home/sbaugh/.local/src/emacs29/lisp/org/org-attach hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-attach /home/sbaugh/.local/src/emacs29/lisp/org/org-archive hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/org-archive /home/sbaugh/.local/src/emacs29/lisp/org/ob-python hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-python /home/sbaugh/.local/src/emacs29/lisp/org/ob-plantuml hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-plantuml /home/sbaugh/.local/src/emacs29/lisp/org/ob-ditaa hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/lisp/ob-ditaa /home/sbaugh/.local/src/emacs29/lisp/org/ob-julia hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ob-julia /home/sbaugh/.local/src/emacs29/lisp/org/ol-man hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ol-man /home/sbaugh/.local/src/emacs29/lisp/org/ox-koma-letter hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/org/contrib/lisp/ox-koma-letter /home/sbaugh/.emacs.d/elpa/dash-2.19.1/dash hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dash/dash /home/sbaugh/.emacs.d/elpa/dash-2.19.1/dash-functional hides /usr/local/home/sbaugh/workspaces/fe-47828/+share+/app/emacs/elisp/contrib/dash/dash-functional Features: (shadow emacsbug org-agenda cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs gnus-async gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-ml gnus-msg nndoc gnus-cache gnus-dup debbugs-gnu debbugs-compat debbugs soap-client rng-xsd rng-dt rng-util xsd-regexp debbugs-browse semantic/symref/grep semantic/symref semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet emoji-labels emoji multisession sqlite jane-fe-menu emacs-news-mode etags fileloop ibuf-ext ibuffer ibuffer-loaddefs wdired textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check mail-extr rect dabbrev sort proced reposition vc-annotate vc-dir vc-filewise hl-line pulse filecache find-dired completion org-goto vundo vundo-autoloads loaddefs-gen tar-mode arc-mode archive-mode cus-edit cus-start cus-load lisp-mnt mm-archive url-http-ntlm ntlm hmac-md5 hex-util md4 mule-util network-stream url-cache url-http url-gw nsm display-line-numbers em-unix em-term term disp-table ehelp em-script em-prompt em-ls em-hist em-pred em-glob em-extpipe em-cmpl em-dirs esh-var em-basic em-banner em-alias esh-mode eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util misc man cl-print tramp-adb tramp-archive tramp-cache time-stamp tramp-cmds tramp-container tramp-ftp tramp-gvfs tramp-sh tramp tramp-loaddefs tramp-integration tramp-compat ls-lisp trampver vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view vc-git vc vc-dispatcher bug-reference magit-imenu git-rebase face-remap pcmpl-unix shortdoc help-fns radix-tree dired-aux misearch multi-isearch sql tabify org-element org-persist org-id avl-tree generator oc-basic timezone ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus nnheader range wid-edit ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi org-link-doi org-capture org-refile sh-script treesit executable files-x goto-addr jane-project jane-merlin merlin-imenu merlin-xref xref merlin-cap merlin jane-merlin-configuration-via-jmerlin jane-async-merlin jane-completion jane-common ecaml_plugin linum view gopcaml magit-bookmark bookmark image+ advice image-file image-converter editorconfig editorconfig-core editorconfig-core-handle editorconfig-fnmatch whitespace jane-auto-modes vba-mode markdown-mode color jane jane-micro-features grep jane-diff unified-test-mode shell-file core core-buffer core-error core-util ert pp ewoc debug backtrace jane-sexp jane-ocaml jane-tuareg-theme tuareg tuareg-compat tuareg-opam skeleton flymake-proc flymake warnings smie caml-types caml-help caml-emacs find-file compile jane-cr jane-align jane-deprecated jane-smerge gnu-elpa-keyring-update jane-ocp-indent ocp-indent cl jane-util pcase page-ext dired-x magit-extras project magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff diff-mode git-commit log-edit message sendmail yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process with-editor shell server magit-mode transient edmacro kmacro magit-git magit-section magit-utils crm dash cl-extra help-mode windmove org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities time-date noutline outline icons ob-emacs-lisp ob-core ob-eval org-cycle org-table ol rx org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar cal-loaddefs org-version org-compat org-macs format-spec gdb-mi bindat gud easy-mmode comint ansi-osc ansi-color ring ffap thingatpt cyberpunk-theme savehist saveplace magit-autoloads csv-mode-autoloads magit-section-autoloads cyberpunk-theme-autoloads url-http-ntlm-autoloads url-auth git-commit-autoloads with-editor-autoloads finder-inf info dash-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 2057123 265021) (symbols 48 57855 6) (strings 32 269448 24494) (string-bytes 1 10630924) (vectors 16 145547) (vector-slots 8 2305441 240293) (floats 8 1364 1407) (intervals 56 225908 1066) (buffers 976 231) (heap 1024 642054 261739)) From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 29 Mar 2023 16:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Spencer Baugh Cc: 62505@debbugs.gnu.org Received: via spool by 62505-submit@debbugs.gnu.org id=B62505.168010845322014 (code B ref 62505); Wed, 29 Mar 2023 16:48:02 +0000 Received: (at 62505) by debbugs.gnu.org; 29 Mar 2023 16:47:33 +0000 Received: from localhost ([127.0.0.1]:54851 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phYxQ-0005j0-Vr for submit@debbugs.gnu.org; Wed, 29 Mar 2023 12:47:33 -0400 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:47745) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phYxP-0005ig-04 for 62505@debbugs.gnu.org; Wed, 29 Mar 2023 12:47:31 -0400 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id CB98AFF80A; Wed, 29 Mar 2023 16:47:23 +0000 (UTC) From: Juri Linkov In-Reply-To: (Spencer Baugh's message of "Tue, 28 Mar 2023 11:34:50 -0400") Organization: LINKOV.NET References: Date: Wed, 29 Mar 2023 19:41:00 +0300 Message-ID: <86h6u31plf.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > 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. From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Spencer Baugh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 29 Mar 2023 18:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov Cc: 62505@debbugs.gnu.org Received: via spool by 62505-submit@debbugs.gnu.org id=B62505.16801158702905 (code B ref 62505); Wed, 29 Mar 2023 18:52:01 +0000 Received: (at 62505) by debbugs.gnu.org; 29 Mar 2023 18:51:10 +0000 Received: from localhost ([127.0.0.1]:54988 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phat4-0000km-8N for submit@debbugs.gnu.org; Wed, 29 Mar 2023 14:51:10 -0400 Received: from mxout5.mail.janestreet.com ([64.215.233.18]:40747) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phat3-0000kQ-8x for 62505@debbugs.gnu.org; Wed, 29 Mar 2023 14:51:09 -0400 From: Spencer Baugh In-Reply-To: <86h6u31plf.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 29 Mar 2023 19:41:00 +0300") References: <86h6u31plf.fsf@mail.linkov.net> Date: Wed, 29 Mar 2023 14:51:02 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Juri Linkov writes: >> 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? From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 30 Mar 2023 16:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Spencer Baugh Cc: 62505@debbugs.gnu.org Received: via spool by 62505-submit@debbugs.gnu.org id=B62505.168019479818175 (code B ref 62505); Thu, 30 Mar 2023 16:47:02 +0000 Received: (at 62505) by debbugs.gnu.org; 30 Mar 2023 16:46:38 +0000 Received: from localhost ([127.0.0.1]:59336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phvQ6-0004j5-75 for submit@debbugs.gnu.org; Thu, 30 Mar 2023 12:46:38 -0400 Received: from relay2-d.mail.gandi.net ([217.70.183.194]:62703) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1phvQ3-0004ip-VL for 62505@debbugs.gnu.org; Thu, 30 Mar 2023 12:46:36 -0400 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id BAD8A4000D; Thu, 30 Mar 2023 16:46:28 +0000 (UTC) From: Juri Linkov In-Reply-To: (Spencer Baugh's message of "Wed, 29 Mar 2023 14:51:02 -0400") Organization: LINKOV.NET References: <86h6u31plf.fsf@mail.linkov.net> Date: Thu, 30 Mar 2023 19:35:55 +0300 Message-ID: <86pm8qw61g.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >>> 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. From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 12 Sep 2025 16:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Spencer Baugh Cc: 62505@debbugs.gnu.org Received: via spool by 62505-submit@debbugs.gnu.org id=B62505.17576940322962 (code B ref 62505); Fri, 12 Sep 2025 16:21:02 +0000 Received: (at 62505) by debbugs.gnu.org; 12 Sep 2025 16:20:32 +0000 Received: from localhost ([127.0.0.1]:50824 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ux6Vj-0000lh-3w for submit@debbugs.gnu.org; Fri, 12 Sep 2025 12:20:31 -0400 Received: from mout-p-202.mailbox.org ([2001:67c:2050:0:465::202]:53864) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ux6VT-0000iP-33 for 62505@debbugs.gnu.org; Fri, 12 Sep 2025 12:20:22 -0400 Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4cNflq2xRrz9tSP; Fri, 12 Sep 2025 18:20:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1757694007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=DtsTaV0KU3aov0d8H+vtWtCO7NV0NKIhyU9FzK9Gse0=; b=SznsM2NTnzhZ5cbNSrdetx/MSYV9lSIzJpAsYdE/QbPUHnhtNyZOgvFoCA+4bOVDE+j3aO GbE1u/qWKnSTy1WnW8wW4/C/NTS2g3zt/DiBoRJbTki9dU46ArJmhEqoK2viRsdgpwhBWr 1WXokADCdqmCBepweJdtZDY8gsV764ChCfC1qWPd/qMofrNrB/LQtAayT0tY9eTV6QQX9l 14SQJJ5R2leKIh50qXd67C7pyojVX6bkKlI4FZP7u9mzUVXMslp/bNdcExQiBvtp3/aHyN iAJ2k4MYodE5QC9JPdzxC0EN99q29qSJPClUjI4L+17XLDxTLO7Z9ILJM8Drww== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of juri@linkov.net designates 2001:67c:2050:b231:465::202 as permitted sender) smtp.mailfrom=juri@linkov.net From: Juri Linkov In-Reply-To: Organization: LINKOV.NET References: <86h6u31plf.fsf@mail.linkov.net> Date: Fri, 12 Sep 2025 19:07:10 +0300 Message-ID: <87ecsbwzeh.fsf@mail.linkov.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Rspamd-Queue-Id: 4cNflq2xRrz9tSP X-Spam-Score: -0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.3 (-) --=-=-= Content-Type: text/plain >>> 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. It's straightforward to implement this for the case when replacement is already started like in the active Isearch. However, switching the replacement type while reading arguments would be too messy. There is such logic in 'query-replace-read-from': (if regexp-flag (read-regexp ...) (read-from-minibuffer ...)) Changing the value of 'regexp-flag' while the minibuffer is active will require canceling the current minibuffer and restarting 'query-replace' from scratch. It's easier to do the same for the user manually with just 'C-g C-M-% RET' that reuses the last search→replace pair in case when the user mistyped M-% instead of C-M-%. > 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? There is ambiguity in using C-s in the minibuffer since it can mean both: - continue the current regexp search like 'C-M-s C-s C-s ...' does; - switch to non-regexp mode. It's easier for the user to use just 'M-s r' to toggle regexp search while in Isearch mode. Also using M-% and C-M-% is problematic in the minibuffer since both keys can be used for replacing text in the minibuffer. However, how to implement toggling the regexp mode while using query-replace is clear and is implemented in this patch: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=query-replace-toggle-regexp.patch diff --git a/lisp/replace.el b/lisp/replace.el index 8227056e012..dae2434a90f 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2495,6 +2496,7 @@ query-replace-map (define-key map "?" 'help) (define-key map "\C-g" 'quit) (define-key map "\C-]" 'quit) + (define-key map "\M-r" 'toggle-regexp) (define-key map "\C-v" 'scroll-up) (define-key map "\M-v" 'scroll-down) (define-key map [next] 'scroll-up) @@ -2887,21 +2889,24 @@ perform-replace ;; Data for the next match. If a cons, it has the same format as ;; (match-data); otherwise it is t if a match is possible at point. (match-again t) - (message - (if query-flag - (apply #'propertize - (concat "Query replacing " - (if backward "backward " "") - (if delimited-flag - (or (and (symbolp delimited-flag) - (get delimited-flag - 'isearch-message-prefix)) - "word ") "") - (if regexp-flag "regexp " "") - "%s with %s: " - (substitute-command-keys - "(\\\\[help] for help) ")) - minibuffer-prompt-properties)))) + (message-function + (lambda () + (if query-flag + (apply #'propertize + (concat "Query replacing " + (if backward "backward " "") + (if delimited-flag + (or (and (symbolp delimited-flag) + (get delimited-flag + 'isearch-message-prefix)) + "word ") + "") + (if regexp-flag "regexp " "") + "%s with %s: " + (substitute-command-keys + "(\\\\[help] for help) ")) + minibuffer-prompt-properties)))) + (message (funcall message-function))) ;; Unless a single contiguous chunk is selected, operate on multiple chunks. (when region-noncontiguous-p @@ -3330,6 +3335,22 @@ perform-replace (replace-dehighlight) (save-excursion (recursive-edit)) (setq replaced t)) + ((eq def 'toggle-regexp) + (setq regexp-flag (not regexp-flag) + literal (not regexp-flag) + message (funcall message-function) + match-again + (save-excursion + (goto-char (nth 0 real-match-data)) + (and (if regexp-flag + (if backward + (looking-back search-string nil) + (looking-at search-string)) + (if backward + (looking-back (regexp-quote search-string) nil) + (looking-at (regexp-quote search-string)))) + (match-data))) + done t)) ((commandp def t) (call-interactively def)) ;; Note: we do not need to treat `exit-prefix' --=-=-=-- From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Spencer Baugh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 12 Sep 2025 21:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov Cc: 62505@debbugs.gnu.org Received: via spool by 62505-submit@debbugs.gnu.org id=B62505.17577122256836 (code B ref 62505); Fri, 12 Sep 2025 21:24:02 +0000 Received: (at 62505) by debbugs.gnu.org; 12 Sep 2025 21:23:45 +0000 Received: from localhost ([127.0.0.1]:51476 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uxBFA-0001mC-Ex for submit@debbugs.gnu.org; Fri, 12 Sep 2025 17:23:44 -0400 Received: from mxout5.mail.janestreet.com ([64.215.233.18]:43585) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uxBF6-0001ln-9t for 62505@debbugs.gnu.org; Fri, 12 Sep 2025 17:23:41 -0400 From: Spencer Baugh In-Reply-To: <87ecsbwzeh.fsf@mail.linkov.net> (Juri Linkov's message of "Fri, 12 Sep 2025 19:07:10 +0300") References: <86h6u31plf.fsf@mail.linkov.net> <87ecsbwzeh.fsf@mail.linkov.net> Date: Fri, 12 Sep 2025 17:23:34 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=waixah; t=1757712214; bh=ZDTiAm8nCvMEUWaQR5y7KgRmr7gbEXiM8XaMkDj9n4I=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=kOpv08gQKxKSoXJPSPTMEXJ+FZkUWM6cV6KAuieZHb9R1JR51icga9FQpXo+738vR YZYZAS0RReDB9RLPWQ0NU3PZ+rmN38aEeJHHml79A3RUkxJPQtg/PlV9CEyiVKcqLM DkrPntQds5mlgL+mUsPo4MosVt9EhVPAjFxM6ynvF93atac1vmC577hlM0411owfKG brRrN4aG2XFHMHc66s86GyxZuBLUcuQfljTl5phkt2PgZ6jVLyPNV2H76c3wz3A93u 08ClxvggIBYRz3ITgN4mFpYNwY9MHU4x+bZdlgr1l4b3rgUIeFALDDg53PDQMXI5vL zF1F/efodqkXA== X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Juri Linkov writes: >>>> 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. > > It's straightforward to implement this for the case when replacement > is already started like in the active Isearch. However, switching > the replacement type while reading arguments would be too messy. > There is such logic in 'query-replace-read-from': > > (if regexp-flag > (read-regexp ...) > (read-from-minibuffer ...)) > > Changing the value of 'regexp-flag' while the minibuffer is active will r= equire > canceling the current minibuffer and restarting 'query-replace' from scra= tch. Ah. Right, troubling. Hmm... I guess we could give read-regexp a "non-regexp" or "plain text" mode, which can be toggled on and off by the user, and just always call read-regexp. Then read-regexp could return "this string isn't a regex" using a text property on the string, just as it returns the text property case-fold right now. Then after we return from read-regexp we could read that text property and set regexp-flag based on it. What do you think? Too hacky? > It's easier to do the same for the user manually with just 'C-g C-M-% RET' > that reuses the last search=E2=86=92replace pair in case when the user mi= styped > M-% instead of C-M-%. > >> 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? > > There is ambiguity in using C-s in the minibuffer since it can mean both: > - continue the current regexp search like 'C-M-s C-s C-s ...' does; > - switch to non-regexp mode. > It's easier for the user to use just 'M-s r' to toggle regexp search > while in Isearch mode. > > Also using M-% and C-M-% is problematic in the minibuffer > since both keys can be used for replacing text in the minibuffer. True, I do sometimes do a recursive M-%. So, I agree, better to just use M-s r, and not overload M-%/C-M-%/C-s/C-M-s in this way. > However, how to implement toggling the regexp mode while using query-repl= ace > is clear and is implemented in this patch: Nice! I tried it and it works. Though, one issue is that if you start a query-replace that was meant to be a query-replace-regexp, it will probably not have any matches, so it will immediately fail. Though I guess in that case one can just immediately do C-M-%. From unknown Fri Sep 19 16:06:49 2025 X-Loop: help-debbugs@gnu.org Subject: bug#62505: 29.0.60; Switching between query-replace and query-replace-regexp should be easy, like isearch Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 13 Sep 2025 19:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62505 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Spencer Baugh Cc: 62505@debbugs.gnu.org Received: via spool by 62505-submit@debbugs.gnu.org id=B62505.175779014114701 (code B ref 62505); Sat, 13 Sep 2025 19:03:01 +0000 Received: (at 62505) by debbugs.gnu.org; 13 Sep 2025 19:02:21 +0000 Received: from localhost ([127.0.0.1]:57140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uxVVt-0003p2-0t for submit@debbugs.gnu.org; Sat, 13 Sep 2025 15:02:21 -0400 Received: from mout-p-102.mailbox.org ([80.241.56.152]:35760) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uxVVn-0003nu-Sg for 62505@debbugs.gnu.org; Sat, 13 Sep 2025 15:02:17 -0400 Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4cPLJD6pG2z9slr; Sat, 13 Sep 2025 21:02:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1757790125; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qBXRZMORGT9si+UGGtvExGFkzg/rx3HPPOyRDUX5WSE=; b=wEv4g4XJ3mABsWSv8JMGv0Oj8/5+RjI6xYxDsCYHaKdqJL0RDDMSZDVxWkqjLgqjRgBZQj oZMrb4UMIRh3pfwfBdD7v3sCQjDnzkPTBrDhybG62V2syJh85bfvNI3MB62aXKvqtbKDHv Nne3dEi+ziKKfgI60yVYFBZNcGZZeUwUD4Oq29vWeKbo622+wPSYzuCCp86QtV7m7ReC+3 W2mcboVU2XvJjGxQXJ3OgMkxVUmrNzKVbT+MlVZrL4o5z3LSEl0HtIvP/h94ghYM7y4aPw fn9zj0U28x3S+9jOgxqE8iVqu2lMDjcAmKu6Z3EJt/y2tF72AlTEMl0EiVVlZg== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of juri@linkov.net designates 2001:67c:2050:b231:465::1 as permitted sender) smtp.mailfrom=juri@linkov.net From: Juri Linkov In-Reply-To: Organization: LINKOV.NET References: <86h6u31plf.fsf@mail.linkov.net> <87ecsbwzeh.fsf@mail.linkov.net> Date: Sat, 13 Sep 2025 21:37:56 +0300 Message-ID: <87segqb3ln.fsf@mail.linkov.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4cPLJD6pG2z9slr X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> There is such logic in 'query-replace-read-from': >> >> (if regexp-flag >> (read-regexp ...) >> (read-from-minibuffer ...)) >> >> Changing the value of 'regexp-flag' while the minibuffer is active will require >> canceling the current minibuffer and restarting 'query-replace' from scratch. > > Ah. Right, troubling. > > Hmm... > > I guess we could give read-regexp a "non-regexp" or "plain text" mode, > which can be toggled on and off by the user, and just always call > read-regexp. Then read-regexp could return "this string isn't a regex" > using a text property on the string, just as it returns the text > property case-fold right now. > > Then after we return from read-regexp we could read that text property > and set regexp-flag based on it. > > What do you think? Too hacky? Admittedly, it's too hacky: the single purpose of 'read-regexp' is to read a regexp, so switching to the string mode would defeat its purpose. >> However, how to implement toggling the regexp mode while using query-replace >> is clear and is implemented in this patch: > > Nice! I tried it and it works. > > Though, one issue is that if you start a query-replace that was meant to > be a query-replace-regexp, it will probably not have any matches, so it > will immediately fail. Though I guess in that case one can just > immediately do C-M-%. Yes, I noticed this too. And indeed it's easy to just do 'C-M-% RET' that reuses the last search→replace pair in regexp mode. Also it helps to notice the mistake earlier by looking at the number of matches at the beginning of the minibuffer while typing a string to replace that shows "0" for no matches.