From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#54733: Match again in perform-replace Date: Tue, 21 Jun 2022 20:55:19 +0300 Organization: LINKOV.NET Message-ID: <861qvhj3j4.fsf@mail.linkov.net> References: <865ynnl9f0.fsf_-_@mail.linkov.net> <86pmlvju2c.fsf@mail.linkov.net> <86o80ju6qx.fsf@mail.linkov.net> <861qxb6qvh.fsf@mail.linkov.net> <9d54db84-77ba-6453-dcfa-864a7c05e692@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7585"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) Cc: 54733@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Jun 21 20:11:48 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o3iLs-0001qx-8E for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 21 Jun 2022 20:11:48 +0200 Original-Received: from localhost ([::1]:35562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o3iLq-0008Re-TH for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 21 Jun 2022 14:11:46 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39668) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o3iL9-0008PH-82 for bug-gnu-emacs@gnu.org; Tue, 21 Jun 2022 14:11:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:39340) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o3iL9-0008Fc-0C for bug-gnu-emacs@gnu.org; Tue, 21 Jun 2022 14:11:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1o3iL8-0006si-Sz for bug-gnu-emacs@gnu.org; Tue, 21 Jun 2022 14:11:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Jun 2022 18:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54733 X-GNU-PR-Package: emacs Original-Received: via spool by 54733-submit@debbugs.gnu.org id=B54733.165583502026384 (code B ref 54733); Tue, 21 Jun 2022 18:11:02 +0000 Original-Received: (at 54733) by debbugs.gnu.org; 21 Jun 2022 18:10:20 +0000 Original-Received: from localhost ([127.0.0.1]:33236 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3iKR-0006rU-L5 for submit@debbugs.gnu.org; Tue, 21 Jun 2022 14:10:19 -0400 Original-Received: from relay11.mail.gandi.net ([217.70.178.231]:53835) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o3iKO-0006qo-Km for 54733@debbugs.gnu.org; Tue, 21 Jun 2022 14:10:17 -0400 Original-Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id BD840100003; Tue, 21 Jun 2022 18:10:09 +0000 (UTC) In-Reply-To: <9d54db84-77ba-6453-dcfa-864a7c05e692@yandex.ru> (Dmitry Gutov's message of "Tue, 21 Jun 2022 02:59:06 +0300") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:234972 Archived-At: >> + (replace-search search-string limit >> + regexp-flag delimited-flag >> + case-fold-search backward)) > > I don't know this code too well, but perhaps SEARCH_STRING here should be > anchored with something like "\\=" at the beginning? > > Otherwise the search can succeed here even if the next match is not > here. Not sure how important that is, though. I'm afraid that prepending "\\=" might break a complex regexp somehow. So maybe using replace-search is not the best thing to do. I'm inclined to leave looking-at, but only when the default search function is used. Currently I'm writing a new function to search in rectangular regions in bug#14013, but there are many corner cases, so it will take more time. Then this new function could be used in xref as well since the rectangular region uses the same pairs of points as xref--query-replace-1 does. Then perform-replace could detect if this search function is used, and not to do "the next match now" hack. >> - ;; Counteract the "do the next match now" hack in >> - ;; `perform-replace'. And still, it'll report that those >> - ;; matches were "filtered out" at the end. >> - (isearch-filter-predicate >> - (lambda (beg end) >> - (and current-beg >> - (>= beg current-beg) >> - (<= end current-end)))) > > Please note that we'll likely have to keep this code here for a number of > Emacs releases. So the patch should be tested with both versions: with this > code present and with it removed, to ensure present and future > compatibility. Keeping compatibility should be concerned here definitely. I hope to post the complete patch in a few days.