From unknown Sun Aug 17 00:58:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31538: 26.1; query-replace undo fails if user edits the replacement string Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 20 May 2018 12:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 31538 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31538@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15268183704128 (code B ref -1); Sun, 20 May 2018 12:13:02 +0000 Received: (at submit) by debbugs.gnu.org; 20 May 2018 12:12:50 +0000 Received: from localhost ([127.0.0.1]:41689 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNCk-00014S-Kb for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:50 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36203) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNCj-00014D-Km for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fKNCd-0003kF-Lj for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:44 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:56892) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fKNCd-0003k7-IU for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55400) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fKNCc-0003MM-Lc for bug-gnu-emacs@gnu.org; Sun, 20 May 2018 08:12:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fKNCY-0003hN-MT for bug-gnu-emacs@gnu.org; Sun, 20 May 2018 08:12:42 -0400 Received: from mail-pf0-x233.google.com ([2607:f8b0:400e:c00::233]:41272) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fKNCY-0003gj-GX for bug-gnu-emacs@gnu.org; Sun, 20 May 2018 08:12:38 -0400 Received: by mail-pf0-x233.google.com with SMTP id v63-v6so5757085pfk.8 for ; Sun, 20 May 2018 05:12:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=HrMQC4pw0gWWfb0FqElgypTIUNzefe5SUy4YOpylUns=; b=jbrYR//KA0+YBfBbUdedZLGYc8tSRvHbCDezAzLIH10+MiMvNrOBMlj/9TP5Zki/Rw zanWBihntStEtp5iysCWlXg44u0D5BjtJDE8x1oJuUz87/Z+TPsAohwadMmJpchPeoIL MEMos+UhjNLgrhBdfccNTL5cDQo92AHBIpGliwFth5R1m4fO4qCGQPoXaLD0gy1wh0y8 v89c1CnkgBzYAzeEWMaOU7IRRoPfGtp8u18KGpZ0BhgeOjbIq6yJvwLAq60KFcOlweQ7 PSItECf4lVOCGRtcqkRUD+A+H+3tX9HRUtRZRR9d0sXgX+lGQfwpZOtOYGF140g+t6Rq VRKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=HrMQC4pw0gWWfb0FqElgypTIUNzefe5SUy4YOpylUns=; b=Uxm9rE6YC70sHemRp0rLBiHrEhxooDZHt4H+sAYQqtgM2bo04qJmz3LGWHz5YOQAFG lwAfi91+A81n9XwIMnPsscwQctNqbhXuLBuEgAcdgCv0a3g3N2U/1Q4Fu7lDH1l6Ku+S h34pqJYyDes6OMD2QqiQ/5rQmMBrNh0d6iAvseL9Cl8FR8RTTc759xRZA22UFJiOWx95 /jxLNu7OqZjVbOmDXZWlHn9GG77SMxmGEr26pJJ6ZkirxIvhBubrJOt+SOFvP/3Oe1FV XwDLxJF0RmYK9AFeyuhq6jzQBb57+KAKHsPile/jqouuJOz3XmmjLlKqCUJmfaNXN1ja +5jg== X-Gm-Message-State: ALKqPwenWJnp4HqXjrc0vqTetaQtaqNtas2zs3CGY2F0TCTTQSuPPIgq DVd5yZdM9cUOIa/ntKr+BS2qGg== X-Google-Smtp-Source: AB8JxZqsCn0qB1mo7WmDyZ6CkRQiXwcTyjGhrdx9rJGjYnnIooXYP0KM3KWnUnf5g0EWBBzuCZ2aQg== X-Received: by 2002:a63:7807:: with SMTP id t7-v6mr12786841pgc.125.1526818357326; Sun, 20 May 2018 05:12:37 -0700 (PDT) Received: from calancha-pc (228.225.128.101.dy.bbexcite.jp. [101.128.225.228]) by smtp.gmail.com with ESMTPSA id w8-v6sm22928453pfk.112.2018.05.20.05.12.35 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 20 May 2018 05:12:36 -0700 (PDT) From: Tino Calancha Date: Sun, 20 May 2018 21:12:34 +0900 Message-ID: <87r2m6wmod.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.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: -5.0 (-----) M-< M-% is RET foo RET SPC E bar RET U ;; Just drop 'foo' but keeps 'bar'. In GNU Emacs 26.1 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-05-20 built on calancha-pc Repository revision: 845fe038e790c7c62c6b294f88648644a4ae7ddd From unknown Sun Aug 17 00:58:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31538: 26.1; query-replace undo fails if user edits the replacement string Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 20 May 2018 12:40:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31538 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31538@debbugs.gnu.org Received: via spool by 31538-submit@debbugs.gnu.org id=B31538.15268199786616 (code B ref 31538); Sun, 20 May 2018 12:40:01 +0000 Received: (at 31538) by debbugs.gnu.org; 20 May 2018 12:39:38 +0000 Received: from localhost ([127.0.0.1]:41710 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNcf-0001id-Q5 for submit@debbugs.gnu.org; Sun, 20 May 2018 08:39:37 -0400 Received: from mail-pl0-f47.google.com ([209.85.160.47]:37180) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNcd-0001iM-MQ for 31538@debbugs.gnu.org; Sun, 20 May 2018 08:39:36 -0400 Received: by mail-pl0-f47.google.com with SMTP id w19-v6so7174125plq.4 for <31538@debbugs.gnu.org>; Sun, 20 May 2018 05:39:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=9pGlBWjihmatiXa2pudB4QmQ598ZPx5gp3qllkN4/H0=; b=CFwC7ZT9ahLphWnXbQppj8S8hnaMgSny3m4MDjUHr7UjRaFjvVeyB0u/fDgk2+T1kD B6Q1RVBpGojCoApOc3AZOZlO+3PriMA1XFbJFrut6TCD7l4pydhT4yKU4yVeUnOthXQs DYcZw/cP2RCWZQqoKPI1rnoxHpZow/is7eLkIY4AamKCQxyFqpmHnAuZvPZHmRluN3O9 W34XZLdXmaqpVmVqXNLyhwCUJ2km0JhDJ/3IILAurM+tnPYX+eh8125yX7Nf2grdwTVt u4qbKdLEWcJyb+H8/d1jZC2iSww1vu2qPqCvwXgtNc/1z5i0ZsZPr8qaIWL9mk95gS74 54rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=9pGlBWjihmatiXa2pudB4QmQ598ZPx5gp3qllkN4/H0=; b=emMDu12H+t2pFuyMZPN2IuIX5RtUxtG9XUyLHcfODmAceiFxtrFI2Vc4HoohcYeN1a vGIHJuvhDe7StQk5qcRFA9PK6rxUoxWUyhQi6Npa94ZmVMTv3tqUEtibdNxjGukADq0+ eQWvVq/Hnc+hp7iIcR2FQ7Zv2TgBEu56VRjWFCG6tPtqHFHyHbywYU34xWP6f2cm/lf6 vqjzX0xpwOjwBX+KxMLMqdBqpqlcFDsxr4DJR6uAl7vOyW5y2N5wLrc/hHo5LKUnXlbs OKgERdx6GkPeVXRh1Fk2Gp7u849Ua52DLUJ5Lck1z+zzGUouR3Mo0eE0kCc24D2H5tWl gigw== X-Gm-Message-State: ALKqPwclQE4mIhrfVlN07PkExkgeo8dku6JA3ClpizzXjeITdHL/+ocK ghPvtQRVo3yjB0gv1GKafE5hFw== X-Google-Smtp-Source: AB8JxZppE3oPFn5dLV7s4ivUEB63AUDXv31bK7f1HNJHEcrN4VLV80Onnb0xyRRAHzIWYT01/tHKaQ== X-Received: by 2002:a17:902:5409:: with SMTP id d9-v6mr8677030pli.1.1526819969652; Sun, 20 May 2018 05:39:29 -0700 (PDT) Received: from calancha-pc (228.225.128.101.dy.bbexcite.jp. [101.128.225.228]) by smtp.gmail.com with ESMTPSA id q68-v6sm21064402pfb.182.2018.05.20.05.39.28 for <31538@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 20 May 2018 05:39:29 -0700 (PDT) From: Tino Calancha References: <87r2m6wmod.fsf@gmail.com> Date: Sun, 20 May 2018 21:39:26 +0900 In-Reply-To: <87r2m6wmod.fsf@gmail.com> (Tino Calancha's message of "Sun, 20 May 2018 21:12:34 +0900") Message-ID: <87o9hawlfl.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.8 (-) 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.8 (--) Tino Calancha writes: > M-< > M-% is RET foo RET SPC E bar RET U > ;; Just drop 'foo' but keeps 'bar'. Update the replacement string after the user has input the new value. --8<-----------------------------cut here---------------start------------->8--- commit 5655739cedb02946dd16071a64e51fcab08abf8b Author: Tino Calancha Date: Sun May 20 21:32:55 2018 +0900 Fix Bug#31538 * lisp/replace.el (perform-replace): Update the replacement string after the user edit it. diff --git a/lisp/replace.el b/lisp/replace.el index 3503b656d9..8605577066 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2801,7 +2801,8 @@ perform-replace (replace-match-maybe-edit next-replacement nocasify literal noedit real-match-data backward) - replaced t)) + replaced t) + (setq next-replacement-replaced next-replacement)) (setq done t)) ((eq def 'delete-and-edit) --8<-----------------------------cut here---------------end--------------->8--- From debbugs-submit-bounces@debbugs.gnu.org Sun May 20 08:39:52 2018 Received: (at control) by debbugs.gnu.org; 20 May 2018 12:39:52 +0000 Received: from localhost ([127.0.0.1]:41713 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNcu-0001j4-37 for submit@debbugs.gnu.org; Sun, 20 May 2018 08:39:52 -0400 Received: from mail-pf0-f175.google.com ([209.85.192.175]:40092) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNcs-0001ir-Jp for control@debbugs.gnu.org; Sun, 20 May 2018 08:39:50 -0400 Received: by mail-pf0-f175.google.com with SMTP id f189-v6so5782936pfa.7 for ; Sun, 20 May 2018 05:39:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:to:from:subject; bh=0jqEj+tzMOmv4j9gPte6ALdSyMz7wMwCB4vWk315Coo=; b=Jo4LJLEnqW5DXdkcJ8ForhYURYdxb0UwwDbggXY4h5hm1fu3XuHql6Cp1uGmC2ebkY bKskfEAFGUdnk3+S/zV0M31d3q/dm9nS2yWsBcTpPA0qdAK7B9+YPeNbD7iMX5Z9/AJ2 L5k5SPAHDvImrV00eszsa02P+Nm7jM5c4GfT7EhJ5S57EPMdWMoF/BP6zsSnx9InJnTq sWZsXXJ3FuKiKCWIr+GUbQHX2D5fQPFiy+r04+3/9j/9ZTq1i7ORx/02xs6zfD7plbCR 7MfCS3TcT2s2QGxx7u2rkmUeRIy7GTs0W3puZFOtYhPkfK5ieJw+r+8cPUrs/AgvsTvh ccAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:to:from:subject; bh=0jqEj+tzMOmv4j9gPte6ALdSyMz7wMwCB4vWk315Coo=; b=ZGPR0fTCLLBTiTIx+YbAuN0QB5JgcPqQYFP8fMYQugsgBnfOwzIdDabwklJLvke1wZ JaQGusOsEQ97yRwqd0CZn61JvGcMUYOcRKRGc6kCxa77mmsr8aBM55S1WHRe6e2x5VaH 1wn/ZXJHvd8e2vJ0gC8la8wsmwZfw6e7SSKx/xr8tYIjJHrFSSu0NiSy7nzWOXw9fckd otyypVP4GDl/m8uXmq/zHgUD/KS8x23rzbHnj50sCXPSFahf98k++AsBhpC1au5hRp0c 1PhHClv8bfHTRE2Jm11jH2gf+CItXJqTKtEg6DsyeKkWikFxOG5NucZgkC0zHa1Jc7Jm JhVQ== X-Gm-Message-State: ALKqPwf53TT7DlwxLoNiTXdGoWSROp4cZLixfN+nmZvkjATTnudNWLTr B5nMdEs229CNU07xjByXFIi8hQ== X-Google-Smtp-Source: AB8JxZp3/Yjdj3EmfTFKlC4pRpYxRFvE/t+FolIoDR4fIgUBB1zg/EX0OnElOgN+G3mEJ4KrNWd4wg== X-Received: by 2002:a65:534b:: with SMTP id w11-v6mr12703864pgr.79.1526819984785; Sun, 20 May 2018 05:39:44 -0700 (PDT) Received: from calancha-pc (228.225.128.101.dy.bbexcite.jp. [101.128.225.228]) by smtp.gmail.com with ESMTPSA id d4-v6sm22630013pfl.24.2018.05.20.05.39.43 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 20 May 2018 05:39:44 -0700 (PDT) Date: Sun, 20 May 2018 21:39:41 +0900 Message-Id: <87muwuwlf6.fsf@gmail.com> To: control@debbugs.gnu.org From: Tino Calancha Subject: control message for bug #31538 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control 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 (-) tags 31538 patch From unknown Sun Aug 17 00:58:17 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31538: 26.1; query-replace undo fails if user edits the replacement string Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 23 May 2018 09:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31538 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 31538@debbugs.gnu.org Received: via spool by 31538-submit@debbugs.gnu.org id=B31538.152706877329289 (code B ref 31538); Wed, 23 May 2018 09:47:02 +0000 Received: (at 31538) by debbugs.gnu.org; 23 May 2018 09:46:13 +0000 Received: from localhost ([127.0.0.1]:44799 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fLQLV-0007cK-5z for submit@debbugs.gnu.org; Wed, 23 May 2018 05:46:13 -0400 Received: from mail-pf0-f178.google.com ([209.85.192.178]:46302) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fLQLS-0007c7-JX for 31538@debbugs.gnu.org; Wed, 23 May 2018 05:46:11 -0400 Received: by mail-pf0-f178.google.com with SMTP id p12-v6so10209806pff.13 for <31538@debbugs.gnu.org>; Wed, 23 May 2018 02:46:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=Y0ejoD3wixAOiLxvLA0m+MnoPMs3ckD1OyXx4+kMmfk=; b=AahmUHDKE9L++Ahl8VEVynPAlSpqmkbap8FDij9Ig9wgifC/soZWb1RTUNUYzN+Fwj UJcnogUd2Y4ubTAC1qiEaJIraVxegu0s0hd4pZKkIqQkbC4iPC9Jr6EdMQMSWKCx4Atu hdAe/8hhHz7aP+EIv62wptwIZ5cPtjqSbCuLsSDHmKpULT/Bd6pHKt+zaJpNhI6A0PtZ UFmhWvdwvgm+OUzPVuT2JY5dew+nllMIScPssijIvb/qKR+WcnzE6CK8IeVWjdmNy9N0 EeM+6sl93uJZedqbQA5LUm+gnRDZOCaQgH81rYKw8cFBtxuFX8djD9IMLhyj9Th7ZIOO /LtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=Y0ejoD3wixAOiLxvLA0m+MnoPMs3ckD1OyXx4+kMmfk=; b=M3hHrVQBLERsEwPU2NflXj5ptqoIQqrBHQdcW2lY0ygrFC/eBTgxEZ8dVr4qNOIk9d KmFTVQoZkie6Ck2hyJlG5QYGwO+NooGZcDn4qd77Xh/46q5/CvOPHYr82CdtL8Vo3np/ LTwqOJ5yKaxagQJm1nfDE9+KpGVslym+c0TivayBYNoYw2inz+uNSPC3VtPsaGFucqWo 5BPFTmSz7chRnCShbzA7TughhdMRP3ZCzhtdGblBfiX8HUHR08NzSoqajeOqh33rO8ji 2OJFJUZBp62wv0GV3bqstWrNmhQg+qR4Ig/hqhvlATNIsVQzOpfeKlq79h64mAt2RPp2 C7tA== X-Gm-Message-State: ALKqPweB/8cs9N8NUk4cgbHEvMFZ35BfZ/+NY4Qw4uZaGtIp2K/9qO6b RLN9Da/3RLMYuJ8jSPyI1+9Pfg== X-Google-Smtp-Source: AB8JxZpu+8m6Y6h5YUdt9/P1UpwXKK3/jk7MmTMtOxPnhrF9JVjRRa3X5/7YpiyqtNW2SU586YAQ5g== X-Received: by 2002:a62:8ac1:: with SMTP id o62-v6mr2173486pfk.141.1527068764391; Wed, 23 May 2018 02:46:04 -0700 (PDT) Received: from calancha-pc (228.225.128.101.dy.bbexcite.jp. [101.128.225.228]) by smtp.gmail.com with ESMTPSA id w2-v6sm5360139pgq.43.2018.05.23.02.46.02 for <31538@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 23 May 2018 02:46:03 -0700 (PDT) From: Tino Calancha References: <87r2m6wmod.fsf@gmail.com> <87o9hawlfl.fsf@gmail.com> Date: Wed, 23 May 2018 18:46:00 +0900 In-Reply-To: <87o9hawlfl.fsf@gmail.com> (Tino Calancha's message of "Sun, 20 May 2018 21:39:26 +0900") Message-ID: <871se2ogbr.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.8 (-) 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.8 (--) Tino Calancha writes: > Tino Calancha writes: > >> M-< >> M-% is RET foo RET SPC E bar RET U >> ;; Just drop 'foo' but keeps 'bar'. > > Update the replacement string after the user has input > the new value. > > commit 5655739cedb02946dd16071a64e51fcab08abf8b > Author: Tino Calancha > Date: Sun May 20 21:32:55 2018 +0900 > > Fix Bug#31538 > > * lisp/replace.el (perform-replace): Update the replacement string > after the user edit it. I want to add a test for this bug. It turned out that tests for `query-replace' undo feature follow same pattern: * Temporary bind `read-event' to a lambda with a `pcase'. * Call `perform-replace' * compare initial input with current buffer. I want to add a macro to create that code and avoid repetition. If no objections, I want to push following patch during the weekend: --8<-----------------------------cut here---------------start------------->8--- commit 95ab9b42c6eaa76e5e1e14cb282eb0c05bc1d57a Author: Tino Calancha Date: Wed May 23 18:37:43 2018 +0900 Fix Bug#31538 * lisp/replace.el (perform-replace): Update the replacement string after the user edit it. * test/lisp/replace-tests.el (replace-tests-clauses): New function. (replace-tests-bind-read-string): New variable. (replace-tests-with-undo): Macro to create boilerplate code. (query-replace-undo-bug31073): Use it. (query-replace-undo-bug31538): New test. diff --git a/lisp/replace.el b/lisp/replace.el index a17dd19b0d..20b868a765 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2805,7 +2805,8 @@ perform-replace (replace-match-maybe-edit next-replacement nocasify literal noedit real-match-data backward) - replaced t)) + replaced t) + (setq next-replacement-replaced next-replacement)) (setq done t)) ((eq def 'delete-and-edit) diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el index 40ee838e67..761518dbef 100644 --- a/test/lisp/replace-tests.el +++ b/test/lisp/replace-tests.el @@ -23,6 +23,7 @@ ;;; Code: (require 'ert) +(eval-when-compile (require 'subr-x)) (ert-deftest query-replace--split-string-tests () (let ((sep (propertize "\0" 'separator t))) @@ -358,23 +359,75 @@ replace-occur-test-create (dotimes (i (length replace-occur-tests)) (replace-occur-test-create i)) + +;;; Tests for `query-replace' undo feature. +(defun replace-tests-clauses (char-nums def-chr) + "Build the clauses of the `pcase' in `replace-tests-with-undo'. +CHAR-NUMS is a list of elements (CHAR . NUMS). +CHAR is one of the chars ?, ?\s ?u ?U ?E ?q. +NUMS is a list of integers; they are the patters to match, +while CHAR is the return value. +DEF-CHAR is the default character to return in the `pcase' +when any of the clauses match." + (append + (delq nil + (mapcar (lambda (chr) + (when-let (it (cadr (assq chr char-nums))) + (if (cdr it) + `(,(cons 'or it) ,chr) + `(,(car it) ,chr)))) + '(?, ?\s ?u ?U ?E ?q))) + `((_ ,def-chr)))) + +(defvar replace-tests-bind-read-string nil + "A string to bind `read-string' and avoid the prompt.") + +(defmacro replace-tests-with-undo (input from to char-nums def-chr &rest body) + "Helper to test `query-replace' undo feature. +INPUT is a string to insert in a temporary buffer. +FROM is the string to match for replace. +TO is the replacement string. +CHAR-NUMS is a list of elements (CHAR . NUMS). +CHAR is one of the chars ?, ?\s ?u ?U ?E ?q. +NUMS is a list of integers. +DEF-CHAR is the char ?\s or ?q. +BODY is a list of forms. +Return the last evaled form in BODY." + (declare ((indent 5) (debug (stringp stringp stringp form characterp body)))) + (let ((text (gensym "text")) + (count (gensym "count"))) + `(let* ((,text ,input) + (,count 0) + (inhibit-message t)) + (with-temp-buffer + (insert ,text) + (goto-char 1) + ;; Bind `read-event' to simulate user input. + ;; If `replace-tests-bind-read-string' is non-nil, then + ;; bind `read-string' as well. + (cl-letf (((symbol-function 'read-event) + (lambda (&rest args) + (cl-incf ,count) + (let ((val + (pcase ,count + ,@(replace-tests-clauses char-nums def-chr)))) + val))) + ((symbol-function 'read-string) + (if replace-tests-bind-read-string + (lambda (&rest args) replace-tests-bind-read-string) + (symbol-function 'read-string)))) + (perform-replace ,from ,to t t nil)) + ,@body)))) + (defun replace-tests--query-replace-undo (&optional comma) - (with-temp-buffer - (insert "111") - (goto-char 1) - (let ((count 0)) - ;; Don't wait for user input. - (cl-letf (((symbol-function 'read-event) - (lambda (&rest args) - (cl-incf count) - (let ((val (pcase count - ('2 (if comma ?, ?\s)) ; replace and: ',' no move; '\s' go next - ('3 ?u) ; undo - ('4 ?q) ; exit - (_ ?\s)))) ; replace current and go next - val)))) - (perform-replace "1" "2" t nil nil))) - (buffer-string))) + (let ((input "111")) + (if comma + (should + (replace-tests-with-undo + input "1" "2" ((?, (2)) (?u (3)) (?q (4))) ?\s (buffer-string))) + (should + (replace-tests-with-undo + input "1" "2" ((?\s (2)) (?u (3)) (?q (4))) ?\s (buffer-string)))))) (ert-deftest query-replace--undo () (should (string= "211" (replace-tests--query-replace-undo))) @@ -382,42 +435,28 @@ replace-tests--query-replace-undo (ert-deftest query-replace-undo-bug31073 () "Test for https://debbugs.gnu.org/31073 ." - (let ((text "aaa aaa") - (count 0)) - (with-temp-buffer - (insert text) - (goto-char 1) - (cl-letf (((symbol-function 'read-event) - (lambda (&rest args) - (cl-incf count) - (let ((val (pcase count - ((or 1 2 3) ?\s) ; replace current and go next - (4 ?U) ; undo-all - (_ ?q)))) ; exit - val)))) - (perform-replace "a" "B" t nil nil)) - ;; After undo text must be the same. - (should (string= text (buffer-string)))))) + (let ((input "aaa aaa")) + (should + (replace-tests-with-undo + input "a" "B" ((?\s (1 2 3)) (?U (4))) ?q + (string= input (buffer-string)))))) (ert-deftest query-replace-undo-bug31492 () "Test for https://debbugs.gnu.org/31492 ." - (let ((text "a\nb\nc\n") - (count 0) - (inhibit-message t)) - (with-temp-buffer - (insert text) - (goto-char 1) - (cl-letf (((symbol-function 'read-event) - (lambda (&rest args) - (cl-incf count) - (let ((val (pcase count - ((or 1 2) ?\s) ; replace current and go next - (3 ?U) ; undo-all - (_ ?q)))) ; exit - val)))) - (perform-replace "^\\|\b\\|$" "foo" t t nil)) - ;; After undo text must be the same. - (should (string= text (buffer-string)))))) + (let ((input "a\nb\nc\n")) + (should + (replace-tests-with-undo + input "^\\|\b\\|$" "foo" ((?\s (1 2)) (?U (3))) ?q + (string= input (buffer-string)))))) + +(ert-deftest query-replace-undo-bug31538 () + "Test for https://debbugs.gnu.org/31538 ." + (let ((input "aaa aaa") + (replace-tests-bind-read-string "Bfoo")) + (should + (replace-tests-with-undo + input "a" "B" ((?\s (1 2 3)) (?E (4)) (?U (5))) ?q + (string= input (buffer-string)))))) ;;; replace-tests.el ends here --8<-----------------------------cut here---------------end--------------->8--- In GNU Emacs 27.0.50 (build 38, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-05-23 built on calancha-pc Repository revision: bab73230d1be1fe394b7269c1365ef6fb1a5d9b3 From unknown Sun Aug 17 00:58:17 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Tino Calancha Subject: bug#31538: closed (Re: bug#31538: 26.1; query-replace undo fails if user edits the replacement string) Message-ID: References: <87tvqvta7s.fsf@gmail.com> <87r2m6wmod.fsf@gmail.com> X-Gnu-PR-Message: they-closed 31538 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 31538@debbugs.gnu.org Date: Sat, 26 May 2018 02:37:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1527302222-24729-1" This is a multi-part message in MIME format... ------------=_1527302222-24729-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #31538: 26.1; query-replace undo fails if user edits the replacement string which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 31538@debbugs.gnu.org. --=20 31538: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D31538 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1527302222-24729-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 31538-done) by debbugs.gnu.org; 26 May 2018 02:36:09 +0000 Received: from localhost ([127.0.0.1]:48889 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fMP3x-0006Po-Eu for submit@debbugs.gnu.org; Fri, 25 May 2018 22:36:09 -0400 Received: from mail-pf0-f172.google.com ([209.85.192.172]:36616) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fMP3v-0006PN-4D for 31538-done@debbugs.gnu.org; Fri, 25 May 2018 22:36:07 -0400 Received: by mail-pf0-f172.google.com with SMTP id w129-v6so3382857pfd.3 for <31538-done@debbugs.gnu.org>; Fri, 25 May 2018 19:36:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=AOl9fHJAcizOsFwecGW4I2dkwc7ZGHdxvbeY7wayDiw=; b=CZr4a4gVFq5ZDtJbLEYLe54vLIFjTzle8C4Ae4RmZHXfWXdZy9E2gifZb4hM2C6vpB RZSMGqPSq+vQ0z/f7L6YGTaNauO+iGUZp69C3nqhMz4bBggNuXyE2UYv1rRCJVmFQfc6 fSL94PhpVbu3oxiV+zOeFRHd1btBv9Btmw74AEqn0YK1jEKl7WYTy4lxYE/aXLfEpo6t WPVldQnQrSO2EBx4t2cbnXJqwid1Y/CqstGy0iD0Do+YCAFFZgQVcEHTRSCpFGE1IvRw 6COuRB+UFP/DUA44lLemJs7RDgAhlW8kmQVjwt//AD6XcKs4oquRjo1YVJVzyP3w7BDm 0cvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=AOl9fHJAcizOsFwecGW4I2dkwc7ZGHdxvbeY7wayDiw=; b=gaxrN24TTRao/G0AG6ISO50Sq+qropljAxOJ+HKVnBT5DsY3OZo/K0gkR7sqnSKIDB AUZNgtcgkAUrRj+2FDwZoF+lAEAueYVKyYh7EMYxbQ7yFxYy7D5KhIQOJnqqpYoT04ry EKHf3WCCtLauPticG1PWEXJD3Xfc0+ZTvvFPsY4Rjm5sKeBkklW/sDx8Np4rSqnLkg2u 7oAHjCbR//+XOIwXBDU18ehdE4NWIpsddOFkzVsKzVttSGADVSPv0JQv0isS31NrD4Kq BZnOh0AXMHpfD+NlT3ezg6882xmIoJ+OR6IugPpZZAjFQMN7OKRzPJjIBYsUULocIhOK wRVQ== X-Gm-Message-State: ALKqPwcT8PJWFeGjyCICDNMmLLIYLoE7yQ9i7WJKGQ4TrHUIYJhbR3TK SzcU2o5AjJkmFlft0ZpeIPUK+g== X-Google-Smtp-Source: AB8JxZpR+ydcgs7QH5oHs5q03RTBrdlcIFv98OEhKCh7/Byh8mTfRglMsUUxEDp8xNVP1Yb9pcUHhg== X-Received: by 2002:a63:7c04:: with SMTP id x4-v6mr3751430pgc.67.1527302160762; Fri, 25 May 2018 19:36:00 -0700 (PDT) Received: from calancha-pc (228.225.128.101.dy.bbexcite.jp. [101.128.225.228]) by smtp.gmail.com with ESMTPSA id v16-v6sm77763377pfk.164.2018.05.25.19.35.58 for <31538-done@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 25 May 2018 19:35:59 -0700 (PDT) From: Tino Calancha To: 31538-done@debbugs.gnu.org Subject: Re: bug#31538: 26.1; query-replace undo fails if user edits the replacement string References: <87r2m6wmod.fsf@gmail.com> <87o9hawlfl.fsf@gmail.com> <871se2ogbr.fsf@gmail.com> Date: Sat, 26 May 2018 11:35:51 +0900 In-Reply-To: <871se2ogbr.fsf@gmail.com> (Tino Calancha's message of "Wed, 23 May 2018 18:46:00 +0900") Message-ID: <87tvqvta7s.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.8 (-) X-Debbugs-Envelope-To: 31538-done 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.8 (--) Tino Calancha writes: > Tino Calancha writes: > >> Tino Calancha writes: >> >>> M-< >>> M-% is RET foo RET SPC E bar RET U >>> ;; Just drop 'foo' but keeps 'bar'. >> >> Update the replacement string after the user has input >> the new value. > If no objections, I want to push following patch during the weekend: Pushed fix into master branch as commit 'query-replace undo: Handle when user edits the replacement string' (ea133e04f49afa7928e49a3ac4a85b47f6f13f01) ------------=_1527302222-24729-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 20 May 2018 12:12:50 +0000 Received: from localhost ([127.0.0.1]:41689 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNCk-00014S-Kb for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:50 -0400 Received: from eggs.gnu.org ([208.118.235.92]:36203) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fKNCj-00014D-Km for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fKNCd-0003kF-Lj for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:44 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:56892) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fKNCd-0003k7-IU for submit@debbugs.gnu.org; Sun, 20 May 2018 08:12:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55400) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fKNCc-0003MM-Lc for bug-gnu-emacs@gnu.org; Sun, 20 May 2018 08:12:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fKNCY-0003hN-MT for bug-gnu-emacs@gnu.org; Sun, 20 May 2018 08:12:42 -0400 Received: from mail-pf0-x233.google.com ([2607:f8b0:400e:c00::233]:41272) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fKNCY-0003gj-GX for bug-gnu-emacs@gnu.org; Sun, 20 May 2018 08:12:38 -0400 Received: by mail-pf0-x233.google.com with SMTP id v63-v6so5757085pfk.8 for ; Sun, 20 May 2018 05:12:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=HrMQC4pw0gWWfb0FqElgypTIUNzefe5SUy4YOpylUns=; b=jbrYR//KA0+YBfBbUdedZLGYc8tSRvHbCDezAzLIH10+MiMvNrOBMlj/9TP5Zki/Rw zanWBihntStEtp5iysCWlXg44u0D5BjtJDE8x1oJuUz87/Z+TPsAohwadMmJpchPeoIL MEMos+UhjNLgrhBdfccNTL5cDQo92AHBIpGliwFth5R1m4fO4qCGQPoXaLD0gy1wh0y8 v89c1CnkgBzYAzeEWMaOU7IRRoPfGtp8u18KGpZ0BhgeOjbIq6yJvwLAq60KFcOlweQ7 PSItECf4lVOCGRtcqkRUD+A+H+3tX9HRUtRZRR9d0sXgX+lGQfwpZOtOYGF140g+t6Rq VRKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=HrMQC4pw0gWWfb0FqElgypTIUNzefe5SUy4YOpylUns=; b=Uxm9rE6YC70sHemRp0rLBiHrEhxooDZHt4H+sAYQqtgM2bo04qJmz3LGWHz5YOQAFG lwAfi91+A81n9XwIMnPsscwQctNqbhXuLBuEgAcdgCv0a3g3N2U/1Q4Fu7lDH1l6Ku+S h34pqJYyDes6OMD2QqiQ/5rQmMBrNh0d6iAvseL9Cl8FR8RTTc759xRZA22UFJiOWx95 /jxLNu7OqZjVbOmDXZWlHn9GG77SMxmGEr26pJJ6ZkirxIvhBubrJOt+SOFvP/3Oe1FV XwDLxJF0RmYK9AFeyuhq6jzQBb57+KAKHsPile/jqouuJOz3XmmjLlKqCUJmfaNXN1ja +5jg== X-Gm-Message-State: ALKqPwenWJnp4HqXjrc0vqTetaQtaqNtas2zs3CGY2F0TCTTQSuPPIgq DVd5yZdM9cUOIa/ntKr+BS2qGg== X-Google-Smtp-Source: AB8JxZqsCn0qB1mo7WmDyZ6CkRQiXwcTyjGhrdx9rJGjYnnIooXYP0KM3KWnUnf5g0EWBBzuCZ2aQg== X-Received: by 2002:a63:7807:: with SMTP id t7-v6mr12786841pgc.125.1526818357326; Sun, 20 May 2018 05:12:37 -0700 (PDT) Received: from calancha-pc (228.225.128.101.dy.bbexcite.jp. [101.128.225.228]) by smtp.gmail.com with ESMTPSA id w8-v6sm22928453pfk.112.2018.05.20.05.12.35 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 20 May 2018 05:12:36 -0700 (PDT) From: Tino Calancha To: bug-gnu-emacs@gnu.org Subject: 26.1; query-replace undo fails if user edits the replacement string Date: Sun, 20 May 2018 21:12:34 +0900 Message-ID: <87r2m6wmod.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit 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: -5.0 (-----) M-< M-% is RET foo RET SPC E bar RET U ;; Just drop 'foo' but keeps 'bar'. In GNU Emacs 26.1 (build 8, x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2018-05-20 built on calancha-pc Repository revision: 845fe038e790c7c62c6b294f88648644a4ae7ddd ------------=_1527302222-24729-1--