From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 23 13:00:04 2021 Received: (at submit) by debbugs.gnu.org; 23 Sep 2021 17:00:04 +0000 Received: from localhost ([127.0.0.1]:55719 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTS4q-0007Ut-1r for submit@debbugs.gnu.org; Thu, 23 Sep 2021 13:00:04 -0400 Received: from lists.gnu.org ([209.51.188.17]:47014) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTS4o-0007Uc-8A for submit@debbugs.gnu.org; Thu, 23 Sep 2021 13:00:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40188) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTS4n-0005OX-Sc for bug-gnu-emacs@gnu.org; Thu, 23 Sep 2021 13:00:01 -0400 Received: from mail-40132.protonmail.ch ([185.70.40.132]:29259) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mTS4l-00053O-Oo for bug-gnu-emacs@gnu.org; Thu, 23 Sep 2021 13:00:01 -0400 Date: Thu, 23 Sep 2021 16:59:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1632416389; bh=bvH42fI+3FDqYCOzpav256OLHpWn9e1rXY+RgLfxaOQ=; h=Date:To:From:Reply-To:Subject:From; b=j54yoGJBXNWFrtsRSQe+8++21bTQ9mxsdFTPLVowW6ZPTcSGmBT96suQZjBFRfOt9 SGPZ7upwgr0zOQnz/NSfarZbFiQE1xaGDVr3eNzURdsX6qrkePVz8DqLqenErnPJoE KZ5gN7BKToMpJsStdf7TiDyd+JsodVFsRGCKYqZI= To: "Bug reports for GNU Emacs, the Swiss army knife of text editors" From: ndame Subject: Regexp paren pairs in query-replace-regexp prompt should be highlighted Message-ID: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch Received-SPF: pass client-ip=185.70.40.132; envelope-from=laszlomail@protonmail.com; helo=mail-40132.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.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: , Reply-To: ndame Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Emacs highlights parents by default, e.g. when point is after the closing paren the opening parent is highlighted. If I type capturing parens in the query replace regexp prompt then the paren pairs are not highlighted: Query replace regexp: \(something\) They should be, so when typing a complex regexp with multiple capturing parens then it's easier to see the pairs. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 23 17:15:18 2021 Received: (at 50766) by debbugs.gnu.org; 23 Sep 2021 21:15:19 +0000 Received: from localhost ([127.0.0.1]:56019 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTW3q-0004Je-My for submit@debbugs.gnu.org; Thu, 23 Sep 2021 17:15:18 -0400 Received: from quimby.gnus.org ([95.216.78.240]:47942) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTW3o-0004JO-VA for 50766@debbugs.gnu.org; Thu, 23 Sep 2021 17:15:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=7M3VsFmkt/c4F4J3ehNk7agcDFoXbp4fs+qAzBUPLio=; b=M5hHJtFBcFtVOfpeTeyAUH5nmq +zZgCOFzlChgSPgRNPhprMOghS7MqZBgfueSMNUrxl4RV1G1Q5KV35fclfEwjBFVNyVhiRJYVgOT+ TotjTQ19RnAMgHnypalNAxJdL9FOB7i2+awfvfN13w2376gyaql0pl+jQDPKhuBg0b4s=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mTW3f-0006xi-Be; Thu, 23 Sep 2021 23:15:10 +0200 From: Lars Ingebrigtsen To: ndame Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> X-Now-Playing: Magnus Granberg & Skogen's _Let Pass My Weary Guiltless Ghost_: "Let Pass My Weary Guiltless Ghost" Date: Thu, 23 Sep 2021 23:15:06 +0200 In-Reply-To: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> (ndame's message of "Thu, 23 Sep 2021 16:59:47 +0000") Message-ID: <87bl4jxacl.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: ndame writes: > Emacs highlights parents by default, e.g. when point is after the closing > paren the opening parent is highlighted. > > If I type capturing parens in the query replace regexp prompt then the > pare [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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 (---) ndame writes: > Emacs highlights parents by default, e.g. when point is after the closing > paren the opening parent is highlighted. > > If I type capturing parens in the query replace regexp prompt then the > paren pairs are not highlighted: > > Query replace regexp: \(something\) > > They should be, so when typing a complex regexp with multiple capturing > parens then it's easier to see the pairs. Let's see... this basically ends up calling `read-regexp', which then calls `read-from-minibuffer'. The blinking is done from `blink-matching-open', which does a `(forward-sexp -1)' to find the position. So we'd have to set up some syntax stuff to get this right. Does anybody know if we have something ready-made for regexps somewhere? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 24 04:27:31 2021 Received: (at 50766) by debbugs.gnu.org; 24 Sep 2021 08:27:31 +0000 Received: from localhost ([127.0.0.1]:56677 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTgYM-0006LU-VF for submit@debbugs.gnu.org; Fri, 24 Sep 2021 04:27:31 -0400 Received: from mail-4324.protonmail.ch ([185.70.43.24]:30895) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTgYL-0006LD-DQ for 50766@debbugs.gnu.org; Fri, 24 Sep 2021 04:27:30 -0400 Date: Fri, 24 Sep 2021 08:27:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1632472042; bh=jx6pqd9uVxr3qaJWFwbhpicAzB+ljXDMeW28wPcuSfs=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=EqIOwzofQy4U9LRd70xX/pu4rmk+zWoU4+BgRdFZAf0OK2DmF/aLicIVgX1XzsTtA PrKm6ssiemxrhm3dCF7r/Hx5lw6wdAUUtXGGjvzdBjj34eT3eJo4VMeW/YYemy+83T x4G8nHj0w9MRg3+9kWgVELqX9fUOeKwy/4Q03kd4= To: Lars Ingebrigtsen From: ndame Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted Message-ID: In-Reply-To: <87bl4jxacl.fsf@gnus.org> References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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: , Reply-To: ndame Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Looks like setting the syntax in the minibuffer fixes this: (modify-syntax-entry ?\\ "\\" (syntax-table)) So the syntax of \ in the minibuffer should be changed temporarily to escape-syntax during read-regexp. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 24 20:55:01 2021 Received: (at 50766) by debbugs.gnu.org; 25 Sep 2021 00:55:01 +0000 Received: from localhost ([127.0.0.1]:59622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTvxw-0000Zr-H0 for submit@debbugs.gnu.org; Fri, 24 Sep 2021 20:55:00 -0400 Received: from quimby.gnus.org ([95.216.78.240]:33284) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mTvxi-0000ZJ-4W for 50766@debbugs.gnu.org; Fri, 24 Sep 2021 20:54:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=X0g7RQiWFRBfJQYysa5r+/wI1uiF9dd9FYNkhI8S09A=; b=Y+CUOmmraapKVgMGPLpuO7c/GX t6Asjio/KmgZGpF53xXLZMvQtJ7nGKmpwQvkaJk4rJH/u5MfJoA4wsOQSjPt6VFNlvw76o9VX758Q NjzLkxI9YXSMlTAQ9gJ2nFfHWbmNIvVMc7k4BaHDQN3wPmLIgYjUbi+6UzPEIDXnFKyg=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mTvxZ-0007ak-Iv; Sat, 25 Sep 2021 02:54:36 +0200 From: Lars Ingebrigtsen To: ndame Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAAAAAByaaZbAAAAAXNSR0IArs4c6QAAAAJiS0dE AP+Hj8y/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH5QkZACQX2Gc+lAAAAJhJREFUSMft k9ENgCAMRIGwkqPclF3KUfzBQC3aw/ihwX4R0tdryxHXMBZpMH9OIAeUk3BAXOqZQlqgIXBaQQF7 BjolyKFhLrRCCGKSRPNDa0WnJSgBsV2lXpWrgZyWrETml4R+Sx7Gb6lgiTEQGo3jw7nxwh9344tS UU3MKTSmJxXqQzw/tGgBFzDOcRUwChxjSvP9wEeBDeQcFNLrTcmuAAAAJXRFWHRkYXRlOmNyZWF0 ZQAyMDIxLTA5LTI1VDAwOjM2OjIzKzAwOjAwjKPZmAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0w OS0yNVQwMDozNjoyMyswMDowMP3+YSQAAAA4dEVYdGljYzpjb3B5cmlnaHQAQ29weXJpZ2h0IChj KSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55+Vd5NwAAACF0RVh0aWNjOmRlc2NyaXB0aW9u AHNSR0IgSUVDNjE5NjYtMi4xV63aRwAAACZ0RVh0aWNjOm1hbnVmYWN0dXJlcgBJRUMgaHR0cDov L3d3dy5pZWMuY2gcfwBMAAAAN3RFWHRpY2M6bW9kZWwASUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJH QiBjb2xvdXIgc3BhY2UgLSBzUkdCRFNIqQAAAABJRU5ErkJggg== X-Now-Playing: Lost Girls's _Menneskekollektivet_: "Love, Lovers" Date: Sat, 25 Sep 2021 02:54:28 +0200 In-Reply-To: (ndame's message of "Fri, 24 Sep 2021 08:27:22 +0000") Message-ID: <877df5tqyj.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: ndame writes: > Looks like setting the syntax in the minibuffer fixes this: > > (modify-syntax-entry ?\\ "\\" (syntax-table)) > > So the syntax of \ in the minibuffer should be changed temporarily to > escape-synta [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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 (---) ndame writes: > Looks like setting the syntax in the minibuffer fixes this: > > (modify-syntax-entry ?\\ "\\" (syntax-table)) > > So the syntax of \ in the minibuffer should be changed temporarily to > escape-syntax during read-regexp. But doesn't it already have escape syntax? That's why (...) blinks and \(...\) doesn't blink, I'd have thought. (But I haven't tested it.) The problem is, though, that we do want \ to escape some things (like \[, which is the literal [ character), but the logic is the opposite with ( and ). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 27 09:17:05 2021 Received: (at 50766) by debbugs.gnu.org; 27 Sep 2021 13:17:05 +0000 Received: from localhost ([127.0.0.1]:40061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mUqVE-0000g2-P9 for submit@debbugs.gnu.org; Mon, 27 Sep 2021 09:17:05 -0400 Received: from mail-40130.protonmail.ch ([185.70.40.130]:51402) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mUqUy-0000f2-TS for 50766@debbugs.gnu.org; Mon, 27 Sep 2021 09:17:04 -0400 Date: Mon, 27 Sep 2021 13:16:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1632748602; bh=eOy53O9qIJ9QAzgXtlpWR7UXlTi8x/toevvZ1JV9gDs=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=nSZXM0mi/LsJtD8ZJnDZvEG9V2WBMW4tuPdf8XGi3vwiDJNa7Qut4489f2zujm1vL E5XF+Pleg834NhKMI4sqvZzY22c+DBJEbXv1UEEKK0/jHCTR9l3L1Xtv81prgjvHzP WHIiPn2uNO7ydBRWy//RrlCvzCZSlMjmqgRHw3Lo= To: Lars Ingebrigtsen From: ndame Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted Message-ID: In-Reply-To: <877df5tqyj.fsf@gnus.org> References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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: , Reply-To: ndame Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > But doesn't it already have escape syntax? That's why (...) blinks and > \(...\) doesn't blink, I'd have thought. (But I haven't tested it.) Optimally, both should blink, but only for their fitting pairs. So, \( does not match ), no blink, but it matches \), there should be a bli= nk. And vica versa for (. > The problem is, though, that we do want \ to escape some things (like > \[, which is the literal [ character), but the logic is the opposite Even the literal character can have a matching \] part for which it should blink, because it helps the user to see which literal \[ he closed. So blinking should be able to handle escaped and non-escaped parens too and pair them properly. From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 28 01:26:07 2021 Received: (at 50766) by debbugs.gnu.org; 28 Sep 2021 05:26:07 +0000 Received: from localhost ([127.0.0.1]:43472 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mV5d0-0004a3-Te for submit@debbugs.gnu.org; Tue, 28 Sep 2021 01:26:07 -0400 Received: from quimby.gnus.org ([95.216.78.240]:41000) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mV5cy-0004Yy-Nb for 50766@debbugs.gnu.org; Tue, 28 Sep 2021 01:26:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=3/LxNcS+hqk4pKFxPhy6dVwa3SWZ5VfMgu0i1hRS/3U=; b=B2+z6Vcq1hdG7IQnhuYiOi39yo H5XRp8vAIW2nrjVRB5Sc7bC0zVSrqn7rnjmQMHUiHSu/IcmRLRtcdF7ukkZbeIh8g+Od/G6d3ghnM 2VW2zAexWiM956g2PAfkiX8zxDBCEwp2lWUwJJ31Gj0DDxGwiABfF+zmt7nd29pf07yo=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mV5cq-0007d0-1X; Tue, 28 Sep 2021 07:25:58 +0200 From: Lars Ingebrigtsen To: ndame Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAFVBMVEXYebPYd7KtYpCK TnJHKDvwyeL////KdnvEAAAAAWJLR0QGYWa4fQAAAAlwSFlzAAAAZAAAAGQAD5bF3QAAAAd0SU1F B+UJHAUVGyaZR9QAAAGlSURBVDjLbZNtjoQgDIYLM/wHXP8reIDNlBMMHABnw/2vsgVEUaeJIekj Lf14Aa7GZmYRw80PWhobXAB1GJOKaWOGgC4ESCKmmEQiExBFNPOyAbKYimUaP9p58lcgs3MsYFqH UKyANbMKIlvCcSN24IPdDZYSbED8uQ5AAzHND4e4hyrRMvibjEVvMRx1xCSjsM5jNk8EjqJVjY4F 9r3SW9rgTb5x2BJ668DzDHICpSR93J8AVUCFUVtFpLY2t2t1xFz16uyWfe/VuJaBPOu73kstMHdo pQqpymjyz78lRxwrYKX9+oXO/xzJRZ0t/cEx2KO7dYjF4LE/t05btjPn9/wC6NEy+0EPe6h28vwq MOCAhkHpRT3HRA17M1gsgsqTYKqes6IdkQD8xU/rrCVYQ36QFKwHw8Symyma/AlwyYsOtEV3AlKa ogN91YdRE+GJW3cB3FB8rcrGndWk6KFNOBfjryaciy2zvq1P3TqKFNwXwEmy3wCzFr+GotJIm3gD A70H0d5AESxpwJ23veogq4Ng30TVdED6OPVqaBvtLznaRlX7B5KPsgegCyajAAAAJXRFWHRkYXRl OmNyZWF0ZQAyMDIxLTA5LTI4VDA1OjIxOjI3KzAwOjAwT9vIeAAAACV0RVh0ZGF0ZTptb2RpZnkA MjAyMS0wOS0yOFQwNToyMToyNyswMDowMD6GcMQAAAAASUVORK5CYII= X-Now-Playing: Hexting's _Post Post Rock Rock_: "Bit Mac, No Tomato -Waiting for ketchup" Date: Tue, 28 Sep 2021 07:25:51 +0200 In-Reply-To: (ndame's message of "Mon, 27 Sep 2021 13:16:41 +0000") Message-ID: <87h7e5gtk0.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: ndame writes: > So blinking should be able to handle escaped and non-escaped parens too and > pair them properly. Indeed. I wondered whether we had code that did the right syntax marking for regexps so that this would work, but I guess not? Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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 (---) ndame writes: > So blinking should be able to handle escaped and non-escaped parens too and > pair them properly. Indeed. I wondered whether we had code that did the right syntax marking for regexps so that this would work, but I guess not? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 29 11:20:22 2021 Received: (at control) by debbugs.gnu.org; 29 Sep 2021 15:20:22 +0000 Received: from localhost ([127.0.0.1]:49843 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mVbNe-0007i3-1e for submit@debbugs.gnu.org; Wed, 29 Sep 2021 11:20:22 -0400 Received: from mail-pj1-f44.google.com ([209.85.216.44]:39426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mVbNY-0007hX-Nn for control@debbugs.gnu.org; Wed, 29 Sep 2021 11:20:17 -0400 Received: by mail-pj1-f44.google.com with SMTP id ce20-20020a17090aff1400b0019f13f6a749so4199133pjb.4 for ; Wed, 29 Sep 2021 08:20:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:date:message-id:subject:to; bh=PFrhaajUMca9E+3Z0xLIiCWH1wTGxeIF8L4cn/R7aVw=; b=6ehnR04N3GR46d+nPWfqkW9MdjoleSOUDkyTuLc/15DYjEL7FiZ3ve1NLDqqRDH47j eWd4t1hNKqv/9PGCYFqAHNOoud2jHfckifImDa8zpwj5AcpZ5PThWKVE9j0m8f3sbW9i jkx0C3Ne0izCvokicKtXJ6tgs+fie2Fzb/DUe5I1vIAX8T/jdkOUh23B1vmwOpSXYSBi AUu8ViJqwsocZ4QSTCaeFq94MnMOSbSRlftuhFnK1hX5Tp4iWx58MeyQMgZ7qNNz5lxo W1UNcxzroG179Bt/KY6iGWxRZ0g7Bq9SPL9Zz4Yn8CMZyE8Z9l900dCZC363332G3Yox FuqQ== X-Gm-Message-State: AOAM533G9Hn9qGfoB+tSwmS3QI/Rnrovzui2uNlnvM658d5CfJA4ftH8 BpbsomreB8EEmuyob2CGF/KO9glG4VbsRP8Gq7jG6Hwp X-Google-Smtp-Source: ABdhPJzOXQBevfyzJaDFrX/9+p1+m+zDw4lvu23oETjaJ8tRaaFu3TE5lhiRH5uQfpY5in4EN+9V6aUKm4MIYZYvqYk= X-Received: by 2002:a17:90a:5583:: with SMTP id c3mr481519pji.133.1632928810981; Wed, 29 Sep 2021 08:20:10 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 29 Sep 2021 08:20:10 -0700 From: Stefan Kangas MIME-Version: 1.0 Date: Wed, 29 Sep 2021 08:20:10 -0700 Message-ID: Subject: control message for bug #50766 To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) 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: -0.5 (/) severity 50766 wishlist quit From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 30 12:18:13 2021 Received: (at 50766) by debbugs.gnu.org; 30 Sep 2021 16:18:14 +0000 Received: from localhost ([127.0.0.1]:53784 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mVylB-00050A-Js for submit@debbugs.gnu.org; Thu, 30 Sep 2021 12:18:13 -0400 Received: from mout.gmx.net ([212.227.15.19]:55901) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mVyl9-0004zt-Du for 50766@debbugs.gnu.org; Thu, 30 Sep 2021 12:18:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1633018685; bh=hbpXJMK72JfAxMEsi2zSabE3XV9PeecT2YW55sQ50vo=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=lR0wd3qr5NkDfce37bBndJTy+sl3i1pEDHLcWoRNmdFBoH+cg5+NrLi78mb+ZnJgA jbXYBgxiRHN2c4hIsulL7bdmKiB7DbVH1P0DUg4DuGwHa6gEuaq5ojpGqEuXtcqC1A OhvjXM056F5xrFcBbBVfF0JfMX3YjKNG2pE5fPRU= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([46.125.249.119]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7sDg-1mS90A2WJ8-004xE4; Thu, 30 Sep 2021 18:18:04 +0200 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: Lars Ingebrigtsen , ndame References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> From: martin rudalics Message-ID: Date: Thu, 30 Sep 2021 18:18:02 +0200 MIME-Version: 1.0 In-Reply-To: <87h7e5gtk0.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:kf3uy7oUCPlU+dU3Pp2wRqkdBzx+pkRFMCmH4nprgS2yCjAA/ZF p2hHXgnQiMqarERKI1AZukgVn+bgxiKM1A40RNKGzsxZLeN3w108st2yZ/4xxoFmiHEXkA7 CnJrfdSWdXeku5h1ERjrZVCLuYcueqhEDiPcCodxDiq3d99IXxqbTL7I7OyWSPXzoHy+PLZ h/R/5F1ZxfepqK4wMUMjw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:HhnxrU+Atwo=:MrQEllsZevDyvYNT7gOakL WA3cvJ0wne1+nnAgbFoLy6JXBye+ABnr/cGHyqFR99yGYCqWNZ2E2PaUZgt40J0F1mv6SgzVh spqbYEcTibUrDsNfakx4v9qldsMNahqNg3nGZCsORRFoCuqoR6exLEVoV9xwF/E1HTOyeLjtm 1s/X7T35ydM8tcJq7qSRzlN7J9kOErJF3/qSjL31mue2zKjeb7kNOaPR5q+WuIF9q94C4qZUE Uyjviub9+Ai0P42635TwQQmecfeCInWhrS4kp+TmP41xmaof6GaNP6vWtWIVl4YHhLeLFllQi kHJC+zgUwzBnuzYpgtXOJgQXJQTBYYZ+hOasbMYRDx9TMHWvPCgjYNgw3TvYO5WlN2oKOzO0x 2hPM9BVGr0p0+3arPvGRXrAWENNRBm89dJmqYxk+XLeUlSrrtM7nHnY5LV0ljGX8bQvdR/hH2 ryQPskkQ7+X72+o+5NOwsVn4pI/nhzngUXM2nuGAT5kFVks1kJQMEMwVfpcMdBC+JoJp6sZnt PjTKYBnR/w4bN7OJXne9p54occXbT0z0Pe7PbbHfCfTrb9pEcFRoNykdSCLxRDvjMrCpdfwz5 C1KS9dgUeR44ZGX2O27jg6dylr4JvnXLg9jK7a0uszXhHxpzONGB9pp27HuwH6zpd4k9+6zeK r3xFQJsNaLYAXqxG6wc2dqvNWG3b5yRAiUARW2nI8aUaiB6tnIA4a5QgRmS9f0LozQ8aRh0TF 2hXOoDHMCrT3TtIF4Kjpp4cE1WOnSZ+sJjqXWVOQyNo0otagSzxgOgL5U74Akyp2HE0LxyaTX 50xIz86FUS6X4SCWwLA3iip4eg17si+VV+rDK9lZmKloIM95D/S/pXvReUYN0QWa8lXdAt+Y7 rO7w/1dSop114wXuYocbIOpGILzrZmcBRZtlLdLkRABEUzqiToNSnyyk90N4S2JZ+Z+8rsKF6 Sx6oE59EtUDPuQZI++Vs8eg+cPFa6iD7c9ExOTcrOKv8g4QPU7zAXn7AhvLeEcr19RFRND0B8 T1l4Tj5lVJNnIgmXwynbEsRC6wFD6mPnOcZcKNvXwtYbeyRPZEoJzKmTHW/9z7V/pdzjatuN8 gK7Jedo4YwpsmG+vQZX6ZQ+/WHeVekztDYy X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Indeed. I wondered whether we had code that did the right syntax > marking for regexps so that this would work, but I guess not? It's not entirely trivial: With "\(" you normally want to put the syntax table property on the "\" but inside a character alternative you want to put it on the "(". So you have to re-parse the minibuf [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [46.125.249.119 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.15.19 listed in wl.mailspike.net] X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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.9 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Indeed. I wondered whether we had code that did the right syntax > marking for regexps so that this would work, but I guess not? It's not entirely trivial: With "\(" you normally want to put the syntax table property on the "\" but inside a character alternative you want to put it on the "(". So you have to re-parse the minibuf [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.15.19 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [46.125.249.119 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager > Indeed. I wondered whether we had code that did the right syntax > marking for regexps so that this would work, but I guess not? It's not entirely trivial: With "\(" you normally want to put the syntax table property on the "\" but inside a character alternative you want to put it on the "(". So you have to re-parse the minibuffer after each editing change. Which means we'd have to, at the beginning of 'show-paren--default', - check whether this is a minibuffer where we want that feature enabled, - enable 'parse-sexp-lookup-properties' for it, - syntactically propertize parens, brackets, braces and backslashes according to their positions within the regexp typed. That's all. What it would get us are regexps with properly highlighted parens and proper sexp navigation. I have written such code for Elisp buffers and can convert and simplify it to make it work for minibuffers. I suppose it would amount to about 100 lines to add to paren.el and would do it only if you are convinced that it's worth the effort. It would not handle 'blink-matching-open'. martin From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 01 03:20:12 2021 Received: (at 50766) by debbugs.gnu.org; 1 Oct 2021 07:20:12 +0000 Received: from localhost ([127.0.0.1]:54568 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWCq3-0004ZC-Uh for submit@debbugs.gnu.org; Fri, 01 Oct 2021 03:20:12 -0400 Received: from quimby.gnus.org ([95.216.78.240]:50900) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWCpz-0004Yc-GS for 50766@debbugs.gnu.org; Fri, 01 Oct 2021 03:20:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=lG8YU5pHEZMG7NqJ/JKjbBbqc1VjigMgutDssXeDVUU=; b=IaoY7AV6KjAkMRnKTzgnIj8MOD 1VVvg+i/jJ1JhxO27ZbLmFpDzsROCGBG/7YvwTOG29ntC15xnUSdA32DHWYbonG+oYtNf1iC9iH4j wZHI9ORARGSQWK2dPfbXJ7Xvw/qsFVvfAYbXTAOzHc2s9A0o/Hm6Vdt94h9ZbvkLNBDY=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mWCpq-0006QQ-4T; Fri, 01 Oct 2021 09:20:00 +0200 From: Lars Ingebrigtsen To: martin rudalics Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAAAXNSR0IArs4c6QAAAAlQTFRF 0K6PNzEs////OZlX6wAAAAFiS0dEAmYLfGQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfl CgEGJjcHvwXMAAAASElEQVQoz2NgGCYgNBTBZgwNdYBzWENDA+Ac0dBQFyQtoa5YOYwgjgMuTihx nBAHJKNDkTmO2J3DGhoigvCCgyjCCyieG9oAACIWFVbu726BAAAAWmVYSWZNTQAqAAAACAAFARIA AwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAAhMAAwAAAAEAAQAA AAAAAAAAAEgAAAABAAAASAAAAAEfUvc0AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTEwLTAxVDA2 OjM4OjU1KzAwOjAw4LNwDgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMC0wMVQwNjozODo1NSsw MDowMJHuyLIAAAAXdEVYdGV4aWY6WUNiQ3JQb3NpdGlvbmluZwAxrA+AYwAAADh0RVh0aWNjOmNv cHlyaWdodABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnn5V3k3AAAA IXRFWHRpY2M6ZGVzY3JpcHRpb24Ac1JHQiBJRUM2MTk2Ni0yLjFXrdpHAAAAJnRFWHRpY2M6bWFu dWZhY3R1cmVyAElFQyBodHRwOi8vd3d3LmllYy5jaBx/AEwAAAA3dEVYdGljYzptb2RlbABJRUMg NjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0JEU0ipAAAAAElFTkSuQmCC X-Now-Playing: The Notwist's _Vertigo Dubs Vol. 1: Odd Nosdam_: "Ship (Odd Nosdam Remix)" Date: Fri, 01 Oct 2021 09:19:57 +0200 In-Reply-To: (martin rudalics's message of "Thu, 30 Sep 2021 18:18:02 +0200") Message-ID: <87ilyhw6si.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: martin rudalics writes: > I have written such code for Elisp buffers and can convert and simplify > it to make it work for minibuffers. I suppose it would amount to about > 100 lines to add to paren.el and would do it only i [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (---) martin rudalics writes: > I have written such code for Elisp buffers and can convert and simplify > it to make it work for minibuffers. I suppose it would amount to about > 100 lines to add to paren.el and would do it only if you are convinced > that it's worth the effort. I think that it would help users a lot when constructing regexps, so it would be very welcome. > It would not handle 'blink-matching-open'. Is there any way to make that work, too? Some people don't like show-paren-mode, but use 'blink-matching-open' instead. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 01 10:29:11 2021 Received: (at 50766) by debbugs.gnu.org; 1 Oct 2021 14:29:11 +0000 Received: from localhost ([127.0.0.1]:57021 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWJXC-0005pT-Ql for submit@debbugs.gnu.org; Fri, 01 Oct 2021 10:29:11 -0400 Received: from mail-40137.protonmail.ch ([185.70.40.137]:34517) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWJWw-0005oh-82 for 50766@debbugs.gnu.org; Fri, 01 Oct 2021 10:29:09 -0400 Date: Fri, 01 Oct 2021 14:28:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail; t=1633098527; bh=0YBmUhx186HZQL4dsaVFvMvN0GrpYrDBSXH0XUdXmgk=; h=Date:To:From:Cc:Reply-To:Subject:In-Reply-To:References:From; b=UGzQEhUuhNrEKAg1eBxk8myumCjpbB827BCQ39N3J2JskWqpfJ9eFvgaafv/FC9Td 6jf9EX0LyGZnUnGyhDlYDpVswmwN6J1Q9UMnl+1sROFrcjL9hamGf6iZzaRIYQcg4E pGrJbs3akcJ6YhvxBfKHy8tVHFEIXHSlv9HvCwYI= To: Lars Ingebrigtsen From: ndame Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted Message-ID: <1yqlcMml0l3wVdGLY1Z2JY5i9dsiJwkc19jcWETHoeEhfraWDi2lKO8u9B3wKdVZ6wJxOF3eTe4DJd-qq-jMAJ-kiIpyMqanJNYdhmrLZ2g=@protonmail.com> In-Reply-To: <87ilyhw6si.fsf@gnus.org> References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: martin rudalics , 50766@debbugs.gnu.org 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: , Reply-To: ndame Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > I think that it would help users a lot when constructing regexps, so it > would be very welcome. I wonder if it could be a generic feature which besides working in the minibuffer for regexps would also work when typing escaped parens in in strings, e.g. when using a string regexp in a program: "stuff ( \\( ) " Here it could indicate the mismatching parens. From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 01 11:00:17 2021 Received: (at 50766) by debbugs.gnu.org; 1 Oct 2021 15:00:17 +0000 Received: from localhost ([127.0.0.1]:57094 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWK1J-0006jf-JF for submit@debbugs.gnu.org; Fri, 01 Oct 2021 11:00:17 -0400 Received: from mout.gmx.net ([212.227.15.19]:55917) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWK1F-0006jK-4b for 50766@debbugs.gnu.org; Fri, 01 Oct 2021 11:00:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1633100405; bh=JwC9o9JOIeVBVnu8Z+Pe0ZNFcGxevD+4p4BC4d1JLu4=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=EeYYgExOA24UQb4QXzjf1N/qjQ1eC8DZvjcwMeXPtGUD4txmZHA8KG52o7HUnsXub ixHKPM2TwVaER7dCPlDRLnrQy2R3voRbIzbY6EpTMRL8XjtqQLwIkteQtUyOXSt4Hf hgPZrgOiNHyvOedTJ+ED0wvf8haaFzXnKdnWt4VQ= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.102] ([212.95.5.169]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N2mBa-1my0N70I2e-013AS9; Fri, 01 Oct 2021 17:00:05 +0200 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: Lars Ingebrigtsen References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> From: martin rudalics Message-ID: Date: Fri, 1 Oct 2021 17:00:03 +0200 MIME-Version: 1.0 In-Reply-To: <87ilyhw6si.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:PGhmFxtiFsN4UlIeHctPKQGKX2ir8VffyYty0YcrVI1LTXxnAD7 vzMtBM5Vz92wyC8swE8B4i8ym6E+LglYBwfEUAp8falPg8b7iLaeBbLrFCk/GKXmUWtt10K ZJcnOaUKBOZIRf7NCKqNeHdSv5zlb1K1TIsWkMAS7SZ6cLnnbO0sL4WMYSWIG9dX2tBEB7i 3uAtIuEZ6UQ+oFE8IVcYA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:qoQvgMy2Mk4=:VYdK3QAuLDshbAIZJns6so Da9e6e8O1cJV/nXKqm6AX2yVchu0kcjtOXaLPk2YmhUfK4rJr5ccDUAlPIB8Tw2EvkyZttR4d pdpLq/MdHUkNe2qjWOkpO3l6enO9zobbA1W2Wiu9D45iBgFIISlg+/ROMxsN9I6ygIY9J8un4 TUvKIlqfuqHtmkCsnRatplQUd/U8t4mg2SYle/BiuWfcna5oe/f7zMm7X5sLm2da0MKCypEJH Ki0JbEOKZk192ulN4xITlgEd+3BddKnn8AWr1R7/db4tNjTYpmbOCSCueJK5DX+U3SWGig414 VnLPinDrTE11fbfMoVcx155AIuaXnjbWUHjdM0Unt40tKcIPURj0bpj+kgRkab9wRcO/CWiJX /4W7eaXZ5ACzPctimabzgsNCf4CT02t23gXt2YbovIQacM6bhucqCzC4ff77iNPkip+wGIA/9 H6UwM+9Lf/VfWVCTJ7tdTQkUFf5MCYBm0gKFXj8RHL0UI6fXgTEZCsl/vw9vwWafPWSK6KOUh qmdSP3RbYGCLay//lO99xr1K5pff4uM6HZPLvFw/HCGPYOI6x/BjQ1g1bdh7/ePG6whair+Xc KuuWJ411KbfeffMk9GFBqAMsAZwe1MI6WQNQJ8/zReeuW2DRm3MEk7TU1Hg4m5W0MmgIV4NrG g1qjG+IZMmGCDUAtI/BgxFQAB/jnm5MLrcuXrpSRM4MnZR7bybR9kFItX5Qrm/mkOV+mRW5Ca o0vOGUo5TgL+Cx9kkXHXxw0YiOkglg82iGs3PmEE57Z52QX/BwNDETpCNnGb7/sNFxRyxNOdO k4qq7jCJPb8fExxPHmDj9RP/Ug01tOAr2PJ9beQVyqm07L8m+jm57kuxKExIQeWByKsvCgk7O TkoPd7IrTGd8dyrHNxlcVy7SpqPN0QG/+oai0c6kzpm1iNarHgTdEQDTpUedJVTOrP9fqPOno r8ow/JaEia7ii2zEEl1KsdP9s/KoLwlBqzzNsXDnlfgLVg6/r24I7HGIbgmoCuwRTC2EqON6Y tM7XwyJ4AQQl5AQkWZHQlnjoiQIjAxDaPmnw1mk/UXX5nAevw/Itm+JWrlVtkR2wKUFh6Hn2z Kv/6ec3rhKk4y8= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (-) > I think that it would help users a lot when constructing regexps, so it > would be very welcome. OK. I'll try to cook up something useful. >> It would not handle 'blink-matching-open'. > > Is there any way to make that work, too? Hardly. 'blink-matching-paren' is not timer-based. Doing any parsing in between would slow down typing. > Some people don't like > show-paren-mode, but use 'blink-matching-open' instead. With 'blink-matching-paren' on do C-M-% and type [)]. People who use 'blink-matching-paren' do not type complex regexps. martin From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 01 11:00:32 2021 Received: (at 50766) by debbugs.gnu.org; 1 Oct 2021 15:00:32 +0000 Received: from localhost ([127.0.0.1]:57097 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWK1V-0006k4-PK for submit@debbugs.gnu.org; Fri, 01 Oct 2021 11:00:32 -0400 Received: from mout.gmx.net ([212.227.15.19]:38971) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWK1R-0006jp-BX for 50766@debbugs.gnu.org; Fri, 01 Oct 2021 11:00:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1633100417; bh=mYWjGjhUXTmKg3jQuNHj7pBdFrU8qz66BSwkiS2ZDd8=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=GUnYX5GM7899fCrPC/mWkdsgZrj6zAfagTpigtinwDfI69vVAx7bUhwTEBrkhNYMC mIhsIbrH8/iRBTMTI504VS5keQrjYlWzhVSPv1RI0u7nycmlTXxmjq5sDTKS5LFxhL QLrbjSFCFJfR460j2gfUHFfjaLyM9VA8rqs+wMaA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.102] ([212.95.5.169]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MWzfv-1mL6qH2VGj-00XJn4; Fri, 01 Oct 2021 17:00:16 +0200 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: ndame , Lars Ingebrigtsen References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <1yqlcMml0l3wVdGLY1Z2JY5i9dsiJwkc19jcWETHoeEhfraWDi2lKO8u9B3wKdVZ6wJxOF3eTe4DJd-qq-jMAJ-kiIpyMqanJNYdhmrLZ2g=@protonmail.com> From: martin rudalics Message-ID: Date: Fri, 1 Oct 2021 17:00:15 +0200 MIME-Version: 1.0 In-Reply-To: <1yqlcMml0l3wVdGLY1Z2JY5i9dsiJwkc19jcWETHoeEhfraWDi2lKO8u9B3wKdVZ6wJxOF3eTe4DJd-qq-jMAJ-kiIpyMqanJNYdhmrLZ2g=@protonmail.com> Content-Type: multipart/mixed; boundary="------------A908D8939D78C4D46252684E" Content-Language: en-US X-Provags-ID: V03:K1:UcHvEc/GQ5YhHgBDdvlsbA1fSZZdnrLHZ8pbP0xsuffYyof5f+3 mkTh+2Mj24S2/b+PQqecixfyI8r1W3TfApo8sSQqf1iK9WmYGi7rY8ZVLn6395A9bLy820K cjFwPnPVP/pSeEeqkXdMq1kVD3YSD4gG1obVnQMugBVpWMbKGiDuOW2nU1dCPKIJZIqT9qu A8G4dIkcpBos/0wc+5zVA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:6a77ar1VKM0=:EZy8cqrdZkRJk34ie/zWDD fRuTLn8xfz2gNGYOE3Zl+XzWbDQ5Lp1FdzzUiT0UV9PRmYDRj1asrvJE2OVh9I+zc7+stEIuE adS0YoWqU5LYqoWeEKQnklkpKmKGCtJ23mQArHDbP5/K38g8H/D3zqEpfS9j2nQynRdNUIelo tRbmBnxBSm+sdWT19ab/jF7RubXJxEBNz3xlOjJcMuNe93KNqmHKfZyeKmp6IZZSzWh6+8hvr bSFp+b9h2G9tEnKC+34n8y1JMkLkjhmRJkixgY3Lyu7HFaEt5ghloscqBOPoO/I4Fydp4ubCS 5p1bKAmRGZDMZ70lT/cSgdSlyINW3K4W571oIvxCJL06Ko6uKMkm8ItgYUk9Y/V8vJcsOTsC2 OpFxD1KunIHe2H1A7EEw0qaG0HOgY9iyFHqd74//0/086c1hZzAqtFagxLlUzW3xZ0vgy72wG ZbRrTzZ7oBnT6fdizBvaE+OlIuqbKF+TDfHE8U+OUDqmC6iy9Q4kWleZ/w+D3PFE3vPcXpCq3 jepH/acwuwHDd9hfkCBGAfxB05Fs+MDZsTCausPsOzL4ZT40xusppPvSoazAdO8WKLt4x24CJ joJhNxTmV2aoD6u7eIfAqsFDjRIbxrWXKgpbB5OkRuKWOqTmdoqgwxZeWWU2IK7ji6hCmR2Wd 6xSXNnsPy9BmahtCF3JiXPgPaJv3VvxyPK54k0iQFr7qFSc+2jPS+QrkKvgQ2WOzDgg9j1Uo/ jambWphNDpQWksOgf49KU0IliLGrJLBcmFQp/Eex/ZSczTzNir06McbJfCBUd7AXa3/OOZlBU Q6MxkRS26rPLeBJKeX3PB9GoYk/DvsjZV+lfOVASK5CBBw6KhmTidgQGmvk0znX1LsK9sLq4P 4bwXyVRIia6Ta33a6tAPEU96E1DB98pRkIU31nguEq3Q7IGVau/0iV/+H8+3bLLWWAyKECPcE gPfTEAOBx6GzK39QTC+wZP4QXLj5I4VG1u0ERHcVSh/56u/71UzY/MxRVpRzxOm8Qsdnfdlfa 6YsgEVW19W5BGG0FOmGJgLUoxVI1ggwRDXZN3HBw1mziLWwW9sNDi/xBW6jOm01fyDIsHeZDn 5H66QKj7/jUBl0= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50766 Cc: 50766@debbugs.gnu.org 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 (-) This is a multi-part message in MIME format. --------------A908D8939D78C4D46252684E Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit > I wonder if it could be a generic feature which besides working in the > minibuffer for regexps would also work when typing escaped parens in > in strings, e.g. when using a string regexp in a program: > > "stuff ( \\( ) " > > Here it could indicate the mismatching parens. I can only offer you my old regexp-lock-mode (attached). In an .el buffer do M-x turn-on-regexp-lock-mode and tell me how it works. martin --------------A908D8939D78C4D46252684E Content-Type: text/x-emacs-lisp; name="regexp-lock.el" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="regexp-lock.el" ;;; regexp-lock.el --- minor mode for highlighting Emacs Lisp regexps ;; Copyright (C) 2005 Martin Rudalics ;; Time-stamp: "2021-10-01 12:10:57 martin" ;; Author: Martin Rudalics ;; Keywords: regular expressions ;; Version: 0.1 ;; regexp-lock.el is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; regexp-lock.el is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;;; Commentary: ;; Regexp Lock is a minor mode for highlighting regular expressions in Emacs ;; Lisp mode. ;; `regexp-lock-mode' turns on/off Regexp Lock in the current buffer. For ;; further information consult the documentation of `regexp-lock-mode'. ;; To turn on Regexp Lock in any Emacs Lisp file you open, add the lines ;; (require 'regexp-lock) ;; (add-hook 'emacs-lisp-mode-hook 'turn-on-regexp-lock-mode) ;; to your .emacs. ;;; Code: ;; _____________________________________________________________________________ ;; ;;; Faces and customizable variables ;; _____________________________________________________________________________ ;; (defgroup regexp-lock nil "Highlight regular expressions in Lisp modes." :version "22.1" :group 'font-lock) (defface regexp-lock-regexp '((((class color)) :background "Grey87") (t :underline t)) "Face for highlighting regexp at point." :group 'regexp-lock) (defface regexp-lock-group '((((class color)) :bold t :foreground "Black" :background "Orange") (t :bold t)) "Face for highlighting group numbers in regexp at point." :group 'regexp-lock) (defface regexp-lock-match '((((class color)) :background "Turquoise1") (t :underline t)) "Face for highlighting match of regexp at point." :group 'regexp-lock) (defface regexp-lock-match-group '((((class color)) :bold t :foreground "Black" :background "Turquoise1") (t :bold t)) "Face for highlighting group numbers in match of regexp at point." :group 'regexp-lock) (defface regexp-lock-match-other '((((class color)) :background "PaleTurquoise1") (t :underline t)) "Face for highlighting other matches of regexp at point." :group 'regexp-lock) (defcustom regexp-lock-minor-mode-string nil "*String to display in mode line when Regexp Lock is enabled." :type '(choice string (const :tag "none" nil)) :group 'regexp-lock) (defcustom regexp-lock-regexp-string "\\\\\\\\[](|)>}`'=_sSwWcCbB0-9]\\|\\[\\(?:[ ^:]\\|\\\\[tnf]\\)\\|\\][*+?]" "*Strings matching this regexp are considered regexp subexpressions. This regexp is used to discriminate strings representing regular expressions from \"ordinary\" strings. The default value has Regexp Lock search for one of the following: - two backslashes preceding any of the characters expected in regexp backslash constructs but \"[\", \"{\" and \"<\" - the latter being excluded because the corresponding constructs have a special meaning in `substitute-command-keys' - a left bracket followed by a space, a caret, a colon, or a backslash that precedes one of the characters \"t\", \"n\", or \"f\" - a right bracket followed by one of \"*\", \"+\", or \"?\" If any of these items is present in a string, that individual string is considered part of a regular expression. If, moreover, the string literally appears within the argument list of a `concat' or `mapconcat', all components of that list are considered regular expressions too." :type 'regexp :group 'regexp-lock) (defcustom regexp-lock-redo-delay 0.1 "*Time in seconds Regexp Lock waits before refontifying text. By default, Regexp Lock refontifies text in order to correctly assign the text properties of all regexps displayed. When the value of this variable is nil Regexp Lock never refontifies text. As a consequence regexps may appear improperly fontified after a buffer has been altered, scrolled, or is displayed for the first time." :type '(choice (const :tag "never" nil) (number :tag "seconds")) :set (lambda (symbol value) (set-default symbol value) (when (boundp 'regexp-lock-redo-timer) (when regexp-lock-redo-timer (cancel-timer regexp-lock-redo-timer) (setq regexp-lock-redo-timer nil)) (when value (setq regexp-lock-redo-timer (run-with-idle-timer value t 'regexp-lock-redo))))) :group 'regexp-lock) (defcustom regexp-lock-pause nil "*Time in seconds Regexp Lock pauses during refontifying and rechecking. When the value of this variable is nil `regexp-lock-redo' and `regexp-lock-recheck' never pause." :type '(choice (const :tag "never" nil) (number :tag "seconds")) :group 'regexp-lock) (defcustom regexp-lock-redo-size 500 "*Number of characters Regexp Lock refontifies without pause." :type 'integer :group 'regexp-lock) (defcustom regexp-lock-recheck-delay 1 "*Time in seconds Regexp Lock waits before rechecking. Rechecking is needed since refontification \(`regexp-lock-redo'\) can not tell whether a multi-line string that matches - or does not match - `regexp-lock-regexp-string' did so in earlier fontifications too. The function `regexp-lock-recheck' periodically checks strings whether they \(still\) qualify as regexp subexpressions. It does so by searching windows for `regexp-lock-regexp-string' and requesting refontification whenever the semantics of a string might have changed. If the value of regexp-lock-recheck-delay is nil no rechecking is done. In practice, the semantics of expressions change rarely. A noticeable exception occurs when you compose a regexp spanning multiple lines and the first match for `regexp-lock-regexp-string' does not occur on the first lines." :type '(choice (const :tag "never" nil) (number :tag "seconds")) :set (lambda (symbol value) (set-default symbol value) (when (boundp 'regexp-lock-recheck-timer) (when regexp-lock-recheck-timer (cancel-timer regexp-lock-recheck-timer) (setq regexp-lock-recheck-timer nil)) (when value (setq regexp-lock-recheck-timer (run-with-idle-timer value t 'regexp-lock-recheck))))) :group 'regexp-lock) (defcustom regexp-lock-show-priority 1000 "*Priority of overlays highlighting the regexp at point. Regexp Lock uses this priority for overlays highlighting the regexp at point and group numbers." :type 'integer :group 'regexp-lock) (defcustom regexp-lock-show-delay 0.2 "*Time in seconds to wait before highlighting the regexp at point. Regexp Lock waits this many seconds before highlighting the regexp at point and any group numbers. A value of nil means that no such highlighting is performed." :type '(choice (const :tag "never" nil) (number :tag "seconds")) :set (lambda (symbol value) (set-default symbol value) (when (boundp 'regexp-lock-show-timer) (when regexp-lock-show-timer (cancel-timer regexp-lock-show-timer)) (setq regexp-lock-show-timer nil) (when value (setq regexp-lock-show-timer (run-with-idle-timer value t 'regexp-lock-show))))) :group 'regexp-lock) (defcustom regexp-lock-match-before-group "{" "*String displayed before group number of matching expression. Matching the regexp at point has Regexp Lock display group numbers of corresponding regexp subexpressions. These numbers are indicated with the help of overlays appearing before and after the match. If two or more subexpressions match at the same position, you may discriminate them more easily by displaying this string before any group number." :type 'string :group 'regexp-lock) (defcustom regexp-lock-match-after-group "}" "*String displayed after group number of matching expression. Matching the regexp at point has Regexp Lock display group numbers of corresponding regexp subexpressions. These numbers are indicated with the help of overlays appearing before and after the match. If two or more subexpressions match at the same position, you may discriminate them more easily by displaying this string after any group number." :type 'string :group 'regexp-lock) (defcustom regexp-lock-hook nil "Hook run after Regexp Lock has been turned on or off." :type 'hook :group 'regexp-lock) ;; _____________________________________________________________________________ ;; ;;; Mode definitions ;; _____________________________________________________________________________ ;; (define-minor-mode regexp-lock-mode "Toggle Regexp Lock. Regexp Lock is a minor mode for highlighting regular expressions in Emacs Lisp mode. When activated, it has font-lock modify syntactic properties and appearance of regexp constituents as follows: - Ordinary brackets, parentheses, and semicolons are assigned the `symbol' syntax-table property. As a consequence, `forward-sexp' and `backward-sexp' within strings will skip parenthesized groups and alternatives in a more intuitive way. `blink-matching-open' and `show-paren-mode' will not falsely indicate mismatching parens. - Brackets delimiting character alternatives are highlighted with `font-lock-regexp-grouping-construct' face. Special parentheses and brackets that don't match are signaled with `font-lock-warning-face'. - Highlight the regular expression at point with `regexp-lock-regexp' face. Also overlay the backslashes used to escape subgroup delimiting parens with the associated group number. Group numbers are displayed with `regexp-lock-group' face. These overlays are installed whenever `point' is immediately before or after a string or subgroup delimiter of the regexp at point. The commands \\[regexp-lock-match-next] and \\[regexp-lock-match-prev] can be used to highlight the next respectively previous expression matching the regexp at point in another window. These commands use `eval' to evaluate the regexp at point. For the current match they highlight: - The entire match `(match-string 0)' with `regexp-lock-match' face. - Group numbers corresponding to subgroup matches are highlighted with `regexp-lock-match-group' face. In addition, the strings specified by `regexp-lock-match-before-group' and `regexp-lock-match-after-group' are used to separate group numbers. Matches before and after the current match are highlighted with `regexp-lock-match-other' face. If necessary, Regexp Lock splits the selected window in order to display matches. Initially, matches are shown for the buffer containing the regexp at point. Matches for any other buffer can be shown by switching to that buffer in the window displaying matches. Finally, Regexp Lock provides a function `regexp-lock-increment' which permits to in-/decrement arguments of `match-beginning' or `match-end' within the region. Caveats: - Regexp Lock uses a number of heuristics to detect regexps. Hence you will occasionally see ordinary strings highlighted as regexps as well as regexps highlighted as ordinary strings. In some cases customizing the variable `regexp-lock-regexp-string' might help. - Regexp Lock analyzes regular expressions literally. Hence if you write something like \(defvar foo \"\\\\(\") \(defvar bar (concat foo \"bar\\\\)\")) Regexp Lock is not able to indicate group numbers correctly and will additionally issue two warnings. - Regexp Lock expects that a regexp produced by `regexp-opt' is contained in a grouping construct iff the second argument of regexp-opt is present and does not equal one of the character sequences `nil' or `()'. - Regexp Lock does not recognize expressions constructed by `rx' or `sregex'. - Regexp Lock consumes processor resources. On battery-powered systems you should turn it off whenever you don't need it." :lighter regexp-lock-minor-mode-string :group 'regexp-lock :keymap '(("\C-c(" . regexp-lock-match-next) ("\C-c)" . regexp-lock-match-prev) ("\C-c#" . regexp-lock-increment)) (if regexp-lock-mode (regexp-lock-activate) (regexp-lock-deactivate)) (run-hooks 'regexp-lock-hook)) (defun turn-on-regexp-lock-mode () "Unequivocally turn on `regexp-lock-mode'." (interactive) (regexp-lock-mode 1)) ;; _____________________________________________________________________________ ;; ;;; Local definitions ;; _____________________________________________________________________________ ;; (defvar regexp-lock-redo t "When non-nil refontify this buffer.") (defvar regexp-lock-redo-timer nil "Idle timer for `regexp-lock-redo'.") (defvar regexp-lock-recheck t "When non-nil recheck this buffer.") (defvar regexp-lock-recheck-timer nil "Idle timer for `regexp-lock-recheck'.") (defvar regexp-lock-overlays nil "Overlays used by `regexp-lock-show'.") (defvar regexp-lock-show-timer nil "Idle timer for `regexp-lock-show'.") (defvar regexp-lock-match-regexp nil "`regexp-lock-match' searches for this regexp.") (defvar regexp-lock-match-window nil "`regexp-lock-match' display matches in this window.") (defvar regexp-lock-match-buffer nil "`regexp-lock-match-window' displays this buffer.") (defvar regexp-lock-match-overlays nil "Overlays that highlight matches in `regexp-lock-match-window'.") (defvar regexp-lock-match-from (make-marker) "Marker for match begin in `regexp-lock-match-buffer'.") (defvar regexp-lock-match-to (make-marker) "Marker for match end in `regexp-lock-match-buffer'.") (eval-when-compile (defmacro save-regexp-lock (&rest body) "Eval BODY with match-data, excursion, restrictions saved, buffer widened." `(save-match-data (save-excursion (save-restriction (widen) (progn ,@body))))) (put 'save-regexp-lock 'lisp-indent-function 0) (def-edebug-spec save-regexp-lock let) (defmacro with-regexp-lock (&rest body) "Eval BODY, preserving current buffer's modified and undo states." (let ((modified (make-symbol "modified"))) `(let ((,modified (buffer-modified-p)) (buffer-undo-list t) (inhibit-read-only t) (inhibit-point-motion-hooks t) (inhibit-modification-hooks t) deactivate-mark buffer-file-name buffer-file-truename) (unwind-protect (progn ,@body) (unless ,modified (restore-buffer-modified-p nil)))))) (put 'with-regexp-lock 'lisp-indent-function 0) (def-edebug-spec with-regexp-lock let)) (defsubst regexp-lock-string-face-p (face) "Return t when character at `point' has `font-lock-string-face' face property." (or (and (listp face) (memq 'font-lock-string-face face)) (eq face 'font-lock-string-face))) (defsubst regexp-lock-syntactic-face-p (face) "Return t when face property at `point' indicates syntactic context. More precisely, return t when character at point has one of `font-lock-string-face', `font-lock-comment-face', or `font-lock-doc-face' face property." (or (and (listp face) (or (memq 'font-lock-string-face face) (memq 'font-lock-comment-face face) (memq 'font-lock-doc-face face))) (memq face '(font-lock-string-face font-lock-comment-face font-lock-doc-face)))) ;; the following function is commented out in font-lock.el (defun remove-text-property (start end property &optional object) "Remove a property from text from START to END. Argument PROPERTY is the property to remove. Optional argument OBJECT is the string or buffer containing the text. Return t if the property was actually removed, nil otherwise." (remove-text-properties start end (list property) object)) ;; the following function is commented out in font-lock.el (defun remove-single-text-property (start end prop value &optional object) "Remove a specific property value from text from START to END. Arguments PROP and VALUE specify the property and value to remove. The resulting property values are not equal to VALUE nor lists containing VALUE. Optional argument OBJECT is the string or buffer containing the text." (let ((start (text-property-not-all start end prop nil object)) next prev) (while start (setq next (next-single-property-change start prop object end) prev (get-text-property start prop object)) (cond ((and (symbolp prev) (eq value prev)) (remove-text-property start next prop object)) ((and (listp prev) (memq value prev)) (let ((new (delq value prev))) (cond ((null new) (remove-text-property start next prop object)) ((= (length new) 1) (put-text-property start next prop (car new) object)) (t (put-text-property start next prop new object)))))) (setq start (text-property-not-all next end prop nil object))))) ;; _____________________________________________________________________________ ;; ;;; Activate / Deactivate ;; _____________________________________________________________________________ ;; (defun regexp-lock-activate () "Activate Regexp Lock in current buffer." (if (not (memq major-mode '(emacs-lisp-mode lisp-mode lisp-interaction-mode reb-mode))) (error "Regexp Lock can be used in Lisp modes only") ;; turn on font-lock if necessary and integrate ourselves (unless font-lock-mode (font-lock-mode 1)) (set (make-local-variable 'font-lock-extra-managed-props) (append font-lock-extra-managed-props (list 'syntax-table 'regexp-lock))) (font-lock-add-keywords nil '(regexp-lock-fontify . nil) t) (font-lock-unfontify-buffer) (save-restriction (widen) (with-regexp-lock (remove-text-properties (point-min) (point-max) '(fontified t)))) ;; syntax properties (set (make-local-variable 'parse-sexp-lookup-properties) t) ;; hooks (add-hook 'after-change-functions 'regexp-lock-after-change nil t) (add-hook 'window-scroll-functions 'regexp-lock-window-redo t t) (add-hook 'window-size-change-functions 'regexp-lock-frame-redo) (add-hook 'change-major-mode-hook 'regexp-lock-deactivate nil t) ;; redo-timer (when regexp-lock-redo-timer (cancel-timer regexp-lock-redo-timer) (setq regexp-lock-redo-timer nil)) (when regexp-lock-redo-delay (setq regexp-lock-redo-timer (run-with-idle-timer regexp-lock-redo-delay t 'regexp-lock-redo))) (set (make-local-variable 'regexp-lock-redo) nil) ;; recheck-timer (when regexp-lock-recheck-timer (cancel-timer regexp-lock-recheck-timer) (setq regexp-lock-recheck-timer nil)) (when regexp-lock-recheck-delay (setq regexp-lock-recheck-timer (run-with-idle-timer regexp-lock-recheck-delay t 'regexp-lock-recheck))) (set (make-local-variable 'regexp-lock-recheck) nil) ;; show-timer (when regexp-lock-show-timer (cancel-timer regexp-lock-show-timer) (setq regexp-lock-show-timer nil)) (when regexp-lock-show-delay (setq regexp-lock-show-timer (run-with-idle-timer regexp-lock-show-delay t 'regexp-lock-show))))) (defun regexp-lock-deactivate () "Deactivate Regexp Lock in current buffer." ;; syntax properties (setq parse-sexp-lookup-properties nil) ;; local hooks (remove-hook 'after-change-functions 'regexp-lock-after-change) (remove-hook 'window-scroll-functions 'regexp-lock-window-redo) (remove-hook 'change-major-mode-hook 'regexp-lock-deactivate) (remove-hook 'pre-command-hook 'regexp-lock-match-pre-command) ;; redo (with-regexp-lock (remove-text-properties (point-min) (point-max) '(regexp-lock-redo nil))) ;; font lock (font-lock-unfontify-buffer) (setq font-lock-extra-managed-props (delq 'syntax-table (delq 'regexp-lock font-lock-extra-managed-props))) (font-lock-remove-keywords nil '(regexp-lock-fontify . nil)) (save-restriction (widen) (with-regexp-lock (remove-text-properties (point-min) (point-max) '(fontified t)))) (unless (catch 'found (dolist (buffer (buffer-list)) (when (with-current-buffer buffer regexp-lock-mode) (throw 'found t)))) ;; markers (set-marker regexp-lock-match-from nil) (set-marker regexp-lock-match-to nil) ;; global hook (remove-hook 'window-size-change-functions 'regexp-lock-frame-redo) ;; redo-timer (when regexp-lock-redo-timer (cancel-timer regexp-lock-redo-timer) (setq regexp-lock-redo-timer nil)) ;; recheck-timer (when regexp-lock-recheck-timer (cancel-timer regexp-lock-recheck-timer) (setq regexp-lock-recheck-timer nil)) ;; show-timer (when regexp-lock-show-timer (cancel-timer regexp-lock-show-timer) (setq regexp-lock-show-timer nil)))) ;; _____________________________________________________________________________ ;; ;;; Text Properties ;; _____________________________________________________________________________ ;; (defun regexp-lock-after-change (start end old-len) "Mark text after buffer change to trigger `regexp-lock-redo'." (when regexp-lock-mode (with-regexp-lock (save-excursion (goto-char start) (if (save-match-data (save-excursion (beginning-of-line) (re-search-forward regexp-lock-regexp-string (max end (line-end-position)) t))) (put-text-property (line-beginning-position) (min (max end (1+ start)) (point-max)) 'regexp-lock-redo 2) (put-text-property (line-beginning-position) (min (max end (1+ start)) (point-max)) 'regexp-lock-redo t)) (setq regexp-lock-redo t))))) (defun regexp-lock-window-redo (window start) "Mark text after window scroll to trigger `regexp-lock-redo'." (with-current-buffer (window-buffer window) (when regexp-lock-mode (setq regexp-lock-redo t)))) (defun regexp-lock-frame-redo (frame) "Mark text after window size change to trigger `regexp-lock-redo'." ;; Use frame-first-window since selected-window may be on a different frame. (with-selected-window (frame-first-window frame) (dolist (window (window-list frame 'nominibuf)) (with-current-buffer (window-buffer window) (when regexp-lock-mode (setq regexp-lock-redo t)))))) (defun regexp-lock-redo () "Refontify with Regexp Lock. Currently this operates on all windows of the selected frame." (catch 'input (let ((current-buffer (current-buffer)) (current-point (point)) (current-point-min (point-min)) (current-point-max (point-max))) (dolist (window (window-list nil 'nominibuf)) (with-current-buffer (window-buffer window) (when (and regexp-lock-mode regexp-lock-redo font-lock-mode) (let ((window-start (window-start window)) (window-end (window-end window)) (parse-sexp-ignore-comments t)) (save-regexp-lock (let* ((bod (save-excursion ;; bod is the last beginning-of-defun ;; preceding start of window or point-min (goto-char window-start) (or (condition-case nil (progn (beginning-of-defun) (line-beginning-position)) (error (point-min))) (point-min)))) (eod (save-excursion ;; eod is the first end-of-defun following ;; end of window or point-max (goto-char window-end) (or (condition-case nil (progn (beginning-of-defun -1) (max window-end (line-beginning-position))) (error (point-max))) (point-max)))) ;; from is the first redo position between bod ;; and eod (from (min (or (text-property-any bod eod 'regexp-lock-redo t) eod) (or (text-property-any bod eod 'fontified nil) eod))) to) (when (and from (< from eod)) (save-excursion (goto-char from) (setq from (line-beginning-position))) ;; adjust from (when (or (< from bod) (and (> from bod) (not (get-text-property (1- from) 'fontified)))) ;; refontify from bod (setq from bod)) ;; initialize to (when (or (< from window-end) (not (equal (get-text-property (1- from) 'regexp-lock) (get-text-property from 'regexp-lock)))) (setq to (min (save-excursion (goto-char (+ from regexp-lock-redo-size)) (line-beginning-position 2)) eod)) ;; fontify (while (and (< from to) (or (not regexp-lock-pause) (save-excursion (with-current-buffer current-buffer (save-restriction (goto-char current-point) (narrow-to-region current-point-min current-point-max) (sit-for regexp-lock-pause)))) (throw 'input t))) (with-regexp-lock ;; record the following two properties _now_ ;; since font-lock may fontify past to (let ((fontified-at-to (get-text-property to 'fontified)) (lock-at-to (get-text-property to 'regexp-lock))) (put-text-property from to 'fontified t) (if jit-lock-mode ;; as jit-lock-fontify-now (condition-case err (run-hook-with-args 'jit-lock-functions from to) (quit (put-text-property from to 'fontified nil) (funcall 'signal (car err) (cdr err)))) ;; plain font-lock-fontify-region (font-lock-fontify-region from to)) (remove-text-properties from to '(regexp-lock-redo nil)) (setq from to) (when (and (< to eod) (or (not fontified-at-to) (not (equal (get-text-property (1- to) 'regexp-lock) lock-at-to)))) (put-text-property to (min (1+ to) (point-max)) 'regexp-lock-redo t) (setq to (min (save-excursion (goto-char (+ to regexp-lock-redo-size)) (line-beginning-position 2)) eod)))))))))) ;; keep the following always _within_ the outermost ;; let to avoid that other idle timers get confused (timer-activate-when-idle regexp-lock-show-timer t) (setq regexp-lock-redo nil) (setq regexp-lock-recheck t)))) (or (not regexp-lock-pause) (sit-for regexp-lock-pause) (throw 'input t)))))) (defsubst regexp-lock-set-redo (from to) "Set `regexp-lock-redo' from `regexp-lock-recheck'. This sets the `regexp-lock-redo' text-property at FROM as well as the buffer-local value of `regexp-lock-redo' to t. Values are set if a match for `regexp-lock-regexp-string' is found before TO and the `regexp-lock' text-property at FROM is not set or no match before TO exists and the `regexp-lock' text-property is set." (if (re-search-forward regexp-lock-regexp-string to 'to) ;; match for regexp-lock-regexp-string (unless (get-text-property from 'regexp-lock) ;; regexp-lock not set, redo (with-regexp-lock (put-text-property from (1+ from) 'regexp-lock-redo t)) (setq regexp-lock-redo t)) ;; no match for regexp-lock-regexp-string (when (get-text-property from 'regexp-lock) ;; regexp-lock set, redo (with-regexp-lock (put-text-property from (1+ from) 'regexp-lock-redo t)) (setq regexp-lock-redo t)))) (defun regexp-lock-recheck () "Recheck windows with Regexp Lock. Currently this operates on all windows of the selected frame." (catch 'input (let ((current-buffer (current-buffer)) (current-point (point)) (current-point-min (point-min)) (current-point-max (point-max))) (dolist (window (window-list nil 'nominibuf)) (with-current-buffer (window-buffer window) (when (and regexp-lock-mode regexp-lock-recheck font-lock-mode) (let ((window-start (window-start window)) (window-end (window-end window)) (parse-sexp-ignore-comments t)) (save-regexp-lock (let* ((from (save-excursion ;; from is the last beginning-of-defun ;; preceding start of window or point-min (goto-char window-start) (or (condition-case nil (progn (beginning-of-defun) (line-beginning-position)) (error (point-min))) (point-min)))) to face) ;; check iff from has been already fontified (when (get-text-property from 'fontified) (goto-char from) (while (re-search-forward "\\(\"\\)\ \\|(\\(\\(?:map\\)?concat\\)\\>\ \\|(\\(re-search-\\(?:for\\|back\\)ward\\|looking-\\(?:at\\|back\\)\\|string-match\\|replace-regexp-in-string\ \\|message\\|error\\|skip-\\(?:syntax\\|chars\\)-\\(?:for\\|back\\)ward\\|search-\\(?:for\\|back\\)ward\\)\\>" window-end 'window-end) (setq face (get-text-property (or (match-end 1) (match-beginning 0)) 'face)) (cond ((match-beginning 1) ;; double-quote (cond ((and (regexp-lock-string-face-p face) (save-excursion (condition-case nil (progn (setq from (match-beginning 1)) (goto-char from) (forward-sexp) (setq to (point))) (error nil)))) (regexp-lock-set-redo from to) (goto-char (min to window-end))) ((and (or (and (listp face) (memq 'font-lock-doc-face face)) (eq 'font-lock-doc-face face)) (save-excursion (condition-case nil (progn (goto-char (match-beginning 1)) (forward-sexp) (setq to (point))) (error nil)))) ;; doc-string, skip (goto-char (min to window-end))))) ((match-beginning 2) ;; concat, mapconcat (when (and (not (regexp-lock-syntactic-face-p face)) (save-excursion (condition-case nil (progn (setq from (match-beginning 0)) (goto-char from) (forward-sexp) (setq to (point))) (error nil))) (goto-char from)) (regexp-lock-set-redo from to) (goto-char (min to window-end)))) ((match-beginning 3) ;; re-search- / looking- / string-match / ;; replace-regexp-in-string / ;; message / error / search- / skip-syntax- / ;; skip-chars-, skip (if (and (not (regexp-lock-syntactic-face-p face)) (save-excursion (condition-case nil (progn (goto-char (match-beginning 0)) (forward-sexp) (setq to (point))) (error nil)))) (goto-char (min to window-end)) (goto-char (min (point) window-end))))))) (setq regexp-lock-recheck nil) (when regexp-lock-redo ;; activate regexp-lock-redo-timer (timer-activate-when-idle regexp-lock-redo-timer t))))))))) (or (not regexp-lock-pause) (sit-for regexp-lock-pause) (throw 'input t)))) (defun regexp-lock-fontify (bound) "Fontify region from `point' to BOUND." (let ((lock (unless (= (point) (point-min)) (get-text-property (1- (point)) 'regexp-lock))) ;; `lock' - the `regexp-lock' text property - is interpreted as: ;; nil - no regexp around point (nil is not stored as text property) ;; 0 - the following sexp is a regexp ;; 1 - within a regexp-string that is not argument of a `concat' ;; >= 2 - within a `concat' that has at least one regexp argument ;; within a character alternative values are negative (from (point)) (parse-sexp-ignore-comments t) to face) (while (< (point) bound) (catch 'lock (if lock (while (re-search-forward "\\(^\\s(\\)\\|\\(\"\\)\\|\\(?:\\\\\\\\\\)\\(?:\\(?:\\\\\\\\\\)\\|\\([()]\\)\\|\\(|\\)\\|\\(\\[\\)\\|\\(\\]\\)\\)\ \\|\\(\\\\[][()]\\)\\|\\(\\[:[a-zA-Z]+:\\]\\)\\|\\(\\[\\)\\|\\(\\]\\)\\|\\(;\\)\\|\\((\\)\\|\\()\\)\\|`\\(\\sw\\sw+\\)'" bound 'bound) (setq face (get-text-property (1- (point)) 'face)) (cond ((match-beginning 1) ;; paren in column zero, throw (put-text-property from (match-beginning 1) 'regexp-lock lock) (setq lock nil) (throw 'lock nil)) ((match-beginning 2) ;; double-quote, ignore for lock not in {-1,0,1} (cond ((zerop lock) ;; start new regexp-string (put-text-property from (match-beginning 2) 'regexp-lock 0) (setq from (match-beginning 2)) (goto-char (1+ from)) (setq lock 1)) ((and (or (= lock 1) (= lock -1)) ;; the following skips adjacent double-quotes as in ;; "string1""string2" which should not do much harm (regexp-lock-string-face-p face) (or (= (point) bound) ; fails with escaped `"' at eob (not (regexp-lock-string-face-p (get-text-property (point) 'face))))) ;; terminate current regexp-string (put-text-property from (point) 'regexp-lock lock) (when (= lock -1) ;; unclosed character alternative, warn (put-text-property (1- (point)) (point) 'face 'font-lock-warning-face)) (setq lock nil) (throw 'lock nil)))) ((and (match-beginning 12) (not (regexp-lock-syntactic-face-p face))) ;; non-syntactic left paren, expects lock not in {-1,1} (put-text-property from (match-beginning 12) 'regexp-lock lock) (setq from (match-beginning 12)) (cond ((>= lock 2) (setq lock (1+ lock))) ((<= lock -2) (setq lock (1- lock))) ((zerop lock) (setq lock 2)) (t (setq lock nil) ; looses (throw 'lock nil)))) ((and (match-beginning 13) (not (regexp-lock-syntactic-face-p face))) ;; non-syntactic right paren, expects lock not in {-1,1} (put-text-property from (match-end 13) 'regexp-lock lock) (setq from (match-end 13)) (cond ((> lock 2) (setq lock (1- lock))) ((< lock -2) (setq lock (1+ lock))) (t (when (= lock -2) ;; unclosed character alternative, warn (put-text-property (1- (point)) (point) 'face 'font-lock-warning-face)) (setq lock nil) ; end of sexp or looser (throw 'lock nil)))) ((regexp-lock-string-face-p face) ;; matches below are valid within strings only (cond ((match-beginning 3) ; \\( or \\) (when (< lock 0) ;; within character alternative, set symbol syntax (put-text-property (1- (point)) (point) 'syntax-table '(3)) ;; remove faces that are silly here (remove-single-text-property (match-beginning 0) (1- (match-end 0)) 'face 'font-lock-regexp-backslash) (remove-single-text-property (1- (match-end 0)) (match-end 0) 'face 'font-lock-regexp-grouping-construct))) ((match-beginning 4) ; \\| (when (< lock 0) ;; within character alternative remove regexp-lock faces (remove-single-text-property (match-beginning 0) (1- (match-end 0)) 'face 'font-lock-regexp-backslash) (remove-single-text-property (1- (match-end 0)) (match-end 0) 'face 'font-lock-regexp-grouping-construct))) ((match-beginning 5) ; \\[ (let ((face (get-text-property (point) 'face))) (when (and (listp face) (memq 'font-lock-constant-face face)) ;; remove font-lock-constant-face (remove-single-text-property (point) (next-single-property-change (point) 'face nil (line-end-position)) 'face 'font-lock-constant-face))) (if (< lock 0) ;; within character alternative, reread bracket (goto-char (1- (point))) ;; not within character alternative, set symbol syntax (put-text-property (1- (point)) (point) 'syntax-table '(3)))) ((match-beginning 6) ; \\] (if (< lock 0) ;; within character alternative, reread bracket (goto-char (1- (point))) ;; not within character alternative, set symbol syntax (put-text-property (1- (point)) (point) 'syntax-table '(3)))) ((match-beginning 7) ; escaped parenthesis or bracket ;; set symbol syntax for backslash and reread paren (put-text-property (match-beginning 0) (1+ (match-beginning 0)) 'syntax-table '(3)) (goto-char (1+ (match-beginning 0)))) ((match-beginning 8)) ;; POSIX character class, skip ((match-beginning 9) ; [ (let ((face (get-text-property (point) 'face))) (when (and (listp face) (memq 'font-lock-constant-face face)) ;; remove font-lock-constant-face (remove-single-text-property (point) (next-single-property-change (point) 'face nil (line-end-position)) 'face 'font-lock-constant-face))) (if (< lock 0) ;; within character alternative, set symbol syntax (put-text-property (1- (point)) (point) 'syntax-table '(3)) ;; start new character alternative (put-text-property from (1- (point)) 'regexp-lock lock) (setq from (1- (point))) (setq lock (- lock)) (font-lock-prepend-text-property (match-beginning 9) (match-end 9) 'face 'font-lock-regexp-grouping-construct) (when (looking-at "\\(?:\\\\?\\^\\)?\\\\?\\(\\]\\)") ;; non-special right bracket, set symbol syntax (put-text-property (match-beginning 1) (match-end 1) 'syntax-table '(3)) (goto-char (match-end 1))))) ((match-beginning 10) ; ] (if (> lock 0) ;; not within character alternative, warn (font-lock-prepend-text-property (match-beginning 10) (match-end 10) 'face 'font-lock-warning-face) ;; terminate alternative (font-lock-prepend-text-property (match-beginning 10) (match-end 10) 'face 'font-lock-regexp-grouping-construct) (put-text-property from (point) 'regexp-lock lock) (setq from (point)) (setq lock (- lock)))) ((or (match-beginning 11) (match-beginning 12) (match-beginning 13)) ; (;), set symbol syntax (put-text-property (1- (point)) (point) 'syntax-table '(3))) ((match-beginning 14) ; `..', remove constant face property (remove-single-text-property (match-beginning 0) (match-end 0) 'face 'font-lock-constant-face)))))) ;; no lock (while (re-search-forward "\\(\"\\)\ \\|(\\(re-search-\\(?:for\\|back\\)ward\\|looking-\\(?:at\\|back\\)\\|string-match\\|replace-regexp-in-string\\)\\>\ \\|(\\(\\(?:map\\)?concat\\)\\>\ \\|(\\(message\\|error\\|skip-\\(?:syntax\\|chars\\)-\\(?:for\\|back\\)ward\\|search-\\(?:for\\|back\\)ward\\)\\>" bound 'bound) (setq face (get-text-property (or (match-end 1) (match-beginning 0)) 'face)) (cond ((match-beginning 1) ;; double-quote, search for `regexp-lock-regexp-string' (cond ((and (regexp-lock-string-face-p face) (save-excursion (condition-case nil (progn (setq from (match-beginning 1)) (goto-char from) (forward-sexp) (setq to (point))) (error nil)))) (if (re-search-forward regexp-lock-regexp-string to t) ;; plain string matching `regexp-lock-regexp-string' (progn (setq lock 1) (goto-char (1+ from)) (throw 'lock nil)) ;; plain string that does not match, skip (goto-char (min to bound)))) ((and (or (and (listp face) (memq 'font-lock-doc-face face)) (eq 'font-lock-doc-face face)) (save-excursion (condition-case nil (progn (goto-char (match-beginning 1)) (forward-sexp) (setq to (point))) (error nil)))) ;; doc-string, skip (goto-char (min to bound))))) ((match-beginning 2) ;; re-search- / looking- / string-match / replace-regexp-in-string (unless (regexp-lock-syntactic-face-p face) (setq from (match-end 2)) (setq lock 0) (throw 'lock nil))) ((match-beginning 3) ;; concat / mapconcat, search arguments for ;; `regexp-lock-regexp-string' (if (and (not (regexp-lock-syntactic-face-p face)) (save-excursion (condition-case nil (progn (setq from (match-beginning 0)) (goto-char from) (forward-sexp) (setq to (point))) (error nil))) (goto-char from) (re-search-forward (concat regexp-lock-regexp-string "\\|regexp-opt") to 'to)) (progn (setq lock 2) (goto-char (1+ from)) (throw 'lock nil)) (goto-char (min (point) bound)))) ((match-beginning 4) ;; message / error / search- / skip-syntax- / skip-chars-, skip (if (and (not (regexp-lock-syntactic-face-p face)) (save-excursion (condition-case nil (progn (goto-char (match-beginning 0)) (forward-sexp) (setq to (point))) (error nil)))) (goto-char (min to bound)) (goto-char (min (point) bound))))))))) (when lock (put-text-property from bound 'regexp-lock lock)))) ;; _____________________________________________________________________________ ;; ;;; Overlays ;; _____________________________________________________________________________ ;; (defun regexp-lock-show () "Display numbers of regular expression groups. Groups considered are subexpressions enclosed by escaped parentheses `\\(' and `\\)'. Shy groups are not counted. Group numbers overlay one or both backslashes of any `\\(' and `\\)' of the same regexp with the number of the group. Overlays are highlighted whenever `point' is before the left or after the right parenthesis of an `\\(' or `\\)'. Hence the group enclosed by `\1(...\1)', for example, represents the subexpression matching `(match-string 1)'. Overlays are also shown when `point' is before a double-quote beginning, or after a double-quote terminating a string that is part of the regular expression. Group numbers are displayed whenever Emacs becomes idle after a delay of `regexp-lock-show-delay' seconds. Group numbers are highlighted with `regexp-lock-group' face." (when regexp-lock-overlays (dolist (overlay regexp-lock-overlays) (delete-overlay overlay)) (setq regexp-lock-overlays nil)) (when (and regexp-lock-mode (not (eq (selected-window) regexp-lock-match-window)) (or (and (< 2 (point)) ; \\^( (< (point) (point-max)) (char-equal (char-after) ?\( ) (get-text-property (1- (point)) 'regexp-lock) (> (get-text-property (1- (point)) 'regexp-lock) 0) (char-equal (char-before) ?\\ ) (char-equal (char-before (1- (point))) ?\\ )) (and (< 3 (point)) ; \\)^ (char-equal (char-before) ?\) ) (get-text-property (1- (point)) 'regexp-lock) (> (get-text-property (1- (point)) 'regexp-lock) 0) (char-equal (char-before (1- (point))) ?\\ ) (char-equal (char-before (- (point) 2)) ?\\ )) (and (< (point) (point-max)) ; ^" (char-equal (char-after) ?\" ) (get-text-property (point) 'regexp-lock) (regexp-lock-string-face-p (get-text-property (point) 'face)) (or (= (point) (point-min)) (not (regexp-lock-string-face-p (get-text-property (1- (point)) 'face))))) (and (< 3 (point)) ; "^ (char-equal (char-before) ?\" ) (get-text-property (1- (point)) 'regexp-lock) (regexp-lock-string-face-p (get-text-property (1- (point)) 'face)) (or (= (point) (point-max)) (not (regexp-lock-string-face-p (get-text-property (point) 'face))))))) (save-match-data (save-excursion (let* ((at (point)) (groups nil) (number 0) (total 0) (from at) (to at) (parse-sexp-ignore-comments t)) ;; search beginning and end, tedious (while (and (> from (point-min)) (get-text-property (1- from) 'regexp-lock) (not (zerop (get-text-property (1- from) 'regexp-lock))) (setq from (previous-single-property-change (point) 'regexp-lock nil (point-min))) (goto-char from))) (goto-char at) (while (and (< to (point-max)) (get-text-property to 'regexp-lock) (setq to (next-single-property-change (point) 'regexp-lock nil (point-max))) (goto-char to))) ;; make overlay for group zero (let ((overlay (make-overlay from to))) (overlay-put overlay 'face 'regexp-lock-regexp) (overlay-put overlay 'window (selected-window)) (overlay-put overlay 'cursor t) (overlay-put overlay 'priority regexp-lock-show-priority) (setq regexp-lock-overlays (cons overlay regexp-lock-overlays))) ;; using a fixed-size vector here would avoid consing but ;; introduce an upper limit on the number of groupings (goto-char from) (while (re-search-forward "\\(?:\\\\\\\\\\)\\(?:\\(?:\\\\\\\\\\)\\|\\((\\(\\?:\\)?\\)\\|\\()\\)\\)\\|\\(regexp-opt\\)" to t) (cond ((and (match-beginning 4) ; (regexp-opt ...) (not (regexp-lock-syntactic-face-p (match-beginning 4)))) (save-match-data (let (at-too) ; Re-search from here. (when (save-excursion (goto-char (match-end 4)) (condition-case nil (progn (forward-sexp) (forward-comment (buffer-size)) (setq at-too (point)) ;; Anything but `nil' and `()' counts as non-nil. (when (looking-at "\\(?:nil\\|()\\)") (goto-char (match-end 0)) (forward-comment (buffer-size))) (and (looking-at "[^)]"))) (error nil))) (setq total (1+ total))) (when at-too (goto-char at-too))))) ((or (not (regexp-lock-string-face-p (get-text-property (1- (point)) 'face))) (< (get-text-property (1- (point)) 'regexp-lock) 0))) ((match-beginning 2) ; \\(?: (setq groups (cons 0 groups))) ((match-beginning 1) ; \\( (setq number (1+ total)) (setq total (1+ total)) (let* ((number-string (number-to-string number)) (length (min (length number-string) 2)) (overlay (make-overlay (- (match-beginning 1) length) (match-beginning 1)))) (overlay-put overlay 'display (propertize number-string 'face 'regexp-lock-group)) (overlay-put overlay 'window (selected-window)) (overlay-put overlay 'cursor t) (overlay-put overlay 'priority regexp-lock-show-priority) (setq regexp-lock-overlays (cons overlay regexp-lock-overlays))) (setq groups (cons number groups))) ((match-beginning 3) ; \\) (cond (groups (setq number (car groups)) (unless (zerop number) (let* ((number-string (number-to-string number)) (length (min (length number-string) 2)) (overlay (make-overlay (- (match-beginning 3) length) (match-beginning 3)))) (overlay-put overlay 'display (propertize number-string 'face 'regexp-lock-group)) (overlay-put overlay 'window (selected-window)) (overlay-put overlay 'cursor t) (overlay-put overlay 'priority regexp-lock-show-priority) (setq regexp-lock-overlays (cons overlay regexp-lock-overlays)))) (setq groups (cdr groups))) (t ; no open group, warn (let ((overlay (make-overlay (1- (match-end 3)) (match-end 3)))) (overlay-put overlay 'face font-lock-warning-face) (overlay-put overlay 'window (selected-window)) (overlay-put overlay 'priority regexp-lock-show-priority) (setq regexp-lock-overlays (cons overlay regexp-lock-overlays)))))))) (when groups ;; unclosed group, warn (let ((overlay (make-overlay (1- to) to))) (overlay-put overlay 'face font-lock-warning-face) (overlay-put overlay 'window (selected-window)) (overlay-put overlay 'priority regexp-lock-show-priority) (setq regexp-lock-overlays (cons overlay regexp-lock-overlays))))))))) ;; _____________________________________________________________________________ ;; ;;; Matching ;; _____________________________________________________________________________ ;; (defun regexp-lock-match-pre-command () "Remove match overlays." (when regexp-lock-match-overlays (dolist (overlay regexp-lock-match-overlays) (delete-overlay overlay)) (setq regexp-lock-match-overlays nil)) ;; remove ourselves from pre-command-hook (remove-hook 'pre-command-hook 'regexp-lock-match-pre-command)) (defun regexp-lock-match (direction) "Highlight expressions matching current regexp." (interactive) (unless (and regexp-lock-match-regexp (memq last-command '(regexp-lock-match-next regexp-lock-match-prev))) (if (or (and (< (point) (point-max)) (get-text-property (point) 'regexp-lock)) (and (> (point) (point-min)) (get-text-property (1- (point)) 'regexp-lock))) (save-match-data (save-excursion (let* ((at (point)) (from at) (to at) (parse-sexp-ignore-comments t)) ;; search beginning and end, tedious (while (and (> from (point-min)) (get-text-property (1- from) 'regexp-lock) (not (zerop (get-text-property (1- from) 'regexp-lock))) (setq from (previous-single-property-change (point) 'regexp-lock nil (point-min))) (goto-char from))) (goto-char at) (while (and (< to (point-max)) (get-text-property to 'regexp-lock) (setq to (next-single-property-change (point) 'regexp-lock nil (point-max))) (goto-char to))) (save-restriction (narrow-to-region from to) (goto-char (point-min)) (setq regexp-lock-match-regexp (condition-case var (eval (read (current-buffer))) ;; display signal information (error (message "%s" var) nil))))))) (message "No regexp around point"))) (when regexp-lock-match-regexp (if (and regexp-lock-match-window (window-live-p regexp-lock-match-window) (not (eq regexp-lock-match-window (selected-window)))) ;; remember buffer (setq regexp-lock-match-buffer (window-buffer regexp-lock-match-window)) ;; unless regexp-lock-match-window is a live window different from ;; the selected one, split the selected window and make the newly ;; created one the new regexp-lock-match-window (setq regexp-lock-match-window (split-window)) (if (and (not (eq (window-buffer regexp-lock-match-window) regexp-lock-match-buffer)) (buffer-live-p regexp-lock-match-buffer)) (progn ;; when regexp-lock-match-buffer is a live buffer assert ;; that it is displayed in regexp-lock-match-window (make ;; sure we're not affected by Stefan's `set-window-buffer' ;; fix). (set-window-buffer regexp-lock-match-window regexp-lock-match-buffer) (when (eq regexp-lock-match-window (selected-window)) (set-buffer regexp-lock-match-buffer))) ;; remember buffer (setq regexp-lock-match-buffer (window-buffer regexp-lock-match-window)))) (save-match-data (save-excursion (with-selected-window regexp-lock-match-window ;; handle direction changes in an intuitive way (cond ((and (eq last-command 'regexp-lock-match-next) (< direction 0) (eq (marker-buffer regexp-lock-match-from) regexp-lock-match-buffer)) ;; use from marker (goto-char regexp-lock-match-from)) ((and (eq last-command 'regexp-lock-match-prev) (> direction 0) (eq (marker-buffer regexp-lock-match-to) regexp-lock-match-buffer)) ;; use to marker (goto-char regexp-lock-match-to))) (let ((at (point)) bound first) (catch 'empty (while (if (< direction 0) (re-search-backward regexp-lock-match-regexp bound t) (re-search-forward regexp-lock-match-regexp bound t)) (if (= (match-beginning 0) (match-end 0)) (progn (message "Empty match ...") (sit-for 1) (throw 'empty nil)) (let ((overlay (make-overlay (match-beginning 0) (match-end 0))) (matches (cddr (match-data))) (index 1)) (setq regexp-lock-match-overlays (cons overlay regexp-lock-match-overlays)) (overlay-put overlay 'face (if first 'regexp-lock-match-other 'regexp-lock-match)) (overlay-put overlay 'window regexp-lock-match-window) (unless first (setq first (point)) (set-marker regexp-lock-match-from (match-beginning 0)) (set-marker regexp-lock-match-to (match-end 0)) (setq bound (save-excursion (vertical-motion (if (< direction 0) (- (window-height)) (window-height))) (setq bound (point)))) ;; set pre-command-hook to remove match overlays eventually (add-hook 'pre-command-hook 'regexp-lock-match-pre-command) (while matches (cond ((eq (car matches) nil) (setq index (1+ index)) (setq matches (cddr matches))) ((integer-or-marker-p (car matches)) (setq overlay (make-overlay (car matches) (cadr matches))) (overlay-put overlay 'before-string (propertize (concat regexp-lock-match-before-group (number-to-string index)) 'face 'regexp-lock-match-group)) (overlay-put overlay 'priority index) (overlay-put overlay 'window regexp-lock-match-window) (setq regexp-lock-match-overlays (cons overlay regexp-lock-match-overlays)) (overlay-put overlay 'after-string (propertize (concat (number-to-string index) regexp-lock-match-after-group) 'face 'regexp-lock-match-group)) (overlay-put overlay 'priority index) (overlay-put overlay 'window regexp-lock-match-window) (setq regexp-lock-match-overlays (cons overlay regexp-lock-match-overlays)) (setq index (1+ index)) (setq matches (cddr matches))) (t (setq matches nil)))))))) (let ((to (or (and first regexp-lock-match-from) at))) (save-excursion (goto-char to) (vertical-motion (- (window-height))) (while (re-search-forward regexp-lock-match-regexp to t) (cond ((= (match-beginning 0) (match-end 0)) (message "Empty match ...") (sit-for 1) (throw 'empty nil)) (t (let ((overlay (make-overlay (match-beginning 0) (match-end 0)))) (setq regexp-lock-match-overlays (cons overlay regexp-lock-match-overlays)) (overlay-put overlay 'face 'regexp-lock-match-other) (overlay-put overlay 'window regexp-lock-match-window))))) (goto-char (or (and first regexp-lock-match-to) to)) (setq to (save-excursion (vertical-motion (window-height)) (point))) (while (re-search-forward regexp-lock-match-regexp to t) (cond ((= (match-beginning 0) (match-end 0)) (message "Empty match ...") (sit-for 1) (throw 'empty nil)) (t (let ((overlay (make-overlay (match-beginning 0) (match-end 0)))) (setq regexp-lock-match-overlays (cons overlay regexp-lock-match-overlays)) (overlay-put overlay 'face 'regexp-lock-match-other) (overlay-put overlay 'window regexp-lock-match-window)))))))) (if first (progn (goto-char first) (unless (pos-visible-in-window-p) (if (< direction 0) (recenter -3) (recenter 3)))) (goto-char at) (set-marker regexp-lock-match-from nil) (set-marker regexp-lock-match-to nil) (message "No (more) matches ...") (sit-for 1)))))))) (defun regexp-lock-match-next () "Move to next matching expression." (interactive) (if (memq last-command '(regexp-lock-match-next regexp-lock-match-prev)) (regexp-lock-match 1) (regexp-lock-match 0))) (defun regexp-lock-match-prev () "Move to previous matching expression." (interactive) (regexp-lock-match -1)) ;; _____________________________________________________________________________ ;; ;;; Increment / Decrement group numbers ;; _____________________________________________________________________________ ;; (defun regexp-lock-increment (above increment start end) "In-/Decrement group numbers within region. Within region add INCREMENT to all arguments of `match-beginning', `match-end', and `match-string' greater or equal ABOVE." (interactive "nIn-/Decrement group numbers >=: \nnBy: \nr") (save-excursion (goto-char start) (let ((count 0)) (while (re-search-forward ;; Added `replace-match' on 2009-08-04. "\\((match-\\(?:beginning\\|end\\|string\\(?:-no-properties\\)?\\)[ \t\n\f]+\\([0-9]+\\))\\)\ \\|\\((replace-match\\)" end t) (cond ((match-beginning 1) (let ((number (string-to-number (match-string 2)))) (when (>= number above) (replace-match (number-to-string (+ number increment)) nil nil nil 2) (setq count (1+ count))))) ((match-beginning 3) ;; `replace-match' is hairy because the SUBEXP arg is optional. (condition-case nil (progn (forward-sexp 4) (forward-comment (buffer-size)) (when (looking-at "[0-9]+") (let ((number (string-to-number (match-string 0)))) (when (>= number above) (replace-match (number-to-string (+ number increment))) (setq count (1+ count)))))) (error nil))))) (if (zerop count) (message "No substitutions performed") (message "%s substitution(s) performed" count))))) (provide 'regexp-lock) ;;; regexp-lock.el ends here --------------A908D8939D78C4D46252684E-- From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 02 05:02:07 2021 Received: (at 50766) by debbugs.gnu.org; 2 Oct 2021 09:02:07 +0000 Received: from localhost ([127.0.0.1]:57812 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWauF-0003DK-Er for submit@debbugs.gnu.org; Sat, 02 Oct 2021 05:02:07 -0400 Received: from quimby.gnus.org ([95.216.78.240]:35054) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mWauD-0003Cn-8r for 50766@debbugs.gnu.org; Sat, 02 Oct 2021 05:02:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=YsOFNR9AQpVh0NgOUXgZJb9fBl6/FlDFwC/t2UMTALw=; b=LVFxyM5r3HastoQkm1F7uiEYkK pMqqyvZPaR6V52leaA8mu4tgpmg8d+7n5bxzcajc2HFf35JXaxrHlqo/t3mcVEKOi8SnVNwt/gff4 cWw75wkoi/9HudwaYT2F5z23hrphigmRj45Ji1v0ZL5FbtxCfgg8D7lxndLFnJUaL8DQ=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mWau4-0005PP-UI; Sat, 02 Oct 2021 11:01:59 +0200 From: Lars Ingebrigtsen To: martin rudalics Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEV9aoWzs7nd3OP8 /Pikq9OVPGRPXqGau0f///87stifAAAAAWJLR0QIht6VegAAAAd0SU1FB+UKAgg4JE9r+SkAAAGw SURBVDjLlZSxbuMwDIaVwPZsuclljSi23e17ADdHeI4H3eweUu42Cuj1S6aFqhTxcBoChJ+o/ycp 2Wws6Op+LmPvhgU0AL67D+7GFXQrwP8vWIl3RtZmR/QH6ARHa20CIYTzX+YTDESP8icBfhNABMDy sw9jAgOX56DVK8DyIYFfTDacAFBB1h1zluPDFuCJL7fA2gbqB68xmzfBxBhnyXAtQF02cPQ3YARN 8ftgQg6Wuhyv02r3IQezhMrt73L00GbgEHUvnqXqEY5jmYCTs1vwrjZ2AzW45EpFn+fDUvVMSJS6 rTOH2LiF+6nY9QXllyE24JaKiAbmSwI7OIgt9z5MRLuKOQGykoA0E6sGc9KwcQE3Y8SBtyiH+cyV yLgFdLZ5dxvQ0t0s0pPYzVwdYvMJqKccvFx7hQpOYvdbI2qCuhIgBjIgCYgUUQFmrj7fjTqTecie pHHRnXLhUJXEWsqohEjB/9Qq9pmGYXqRghXTjauCpyuopooVfN/2il8FTBITkM1jY/tX7E0hZRdI Wa/SLf75cNaBXwHrz3ntA7C9Tq31d4FfA53mtF+Rry0fCyDtq2U8hFsAAAAldEVYdGRhdGU6Y3Jl YXRlADIwMjEtMTAtMDJUMDg6NTY6MzYrMDA6MDAyZiGmAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIx LTEwLTAyVDA4OjU2OjM2KzAwOjAwQzuZGgAAAABJRU5ErkJggg== X-Now-Playing: Liquid Liquid's _Cavern Remix_: "Scraper (Psychonauts Remix)" Date: Sat, 02 Oct 2021 11:01:56 +0200 In-Reply-To: (martin rudalics's message of "Fri, 1 Oct 2021 17:00:03 +0200") Message-ID: <87k0ivvlyz.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: martin rudalics writes: > With 'blink-matching-paren' on do C-M-% and type [)]. People who use > 'blink-matching-paren' do not type complex regexps. We do indeed -- we just live with the bogus warnings from Emacs. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (---) martin rudalics writes: > With 'blink-matching-paren' on do C-M-% and type [)]. People who use > 'blink-matching-paren' do not type complex regexps. We do indeed -- we just live with the bogus warnings from Emacs. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 04 04:26:45 2021 Received: (at 50766) by debbugs.gnu.org; 4 Oct 2021 08:26:45 +0000 Received: from localhost ([127.0.0.1]:35587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mXJJ7-0007m2-4I for submit@debbugs.gnu.org; Mon, 04 Oct 2021 04:26:45 -0400 Received: from mout.gmx.net ([212.227.17.22]:40337) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mXJJ5-0007lo-Ue for 50766@debbugs.gnu.org; Mon, 04 Oct 2021 04:26:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1633335997; bh=wJdPSnjFDd24V0ru22jNnDjnUvGLFWAV+HQNG/5BzAw=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=JRBcx8C3xEedrPQaoqfUt0/Dn9FjsN0ISTb6HfuXZ9MsHXiZAfnTO1fZ6o952klvA F+r6Sl1X040ds6nOOx2VBWUU/ZaOIb9rzLQtkJ3bbKgfYSEPcnSQdG/zcfQqg4vTRH zn491ICb23PFX42rVbNzno/9T7K6bSgqyHKF6tyc= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.102] ([46.125.249.15]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M6DWi-1mQgWi3ZZg-006deN; Mon, 04 Oct 2021 10:26:36 +0200 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: Lars Ingebrigtsen References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> From: martin rudalics Message-ID: <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> Date: Mon, 4 Oct 2021 10:26:32 +0200 MIME-Version: 1.0 In-Reply-To: <87k0ivvlyz.fsf@gnus.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:5KEWvcp96Z9hTabdzZhfEKz2vD9GQs3Tym2NmIpYVlJn4wnqWQw nff1mV4VE/oFXklzRC9Zzf9ghpmXIqekCbBa+dkoEVCBBJOzg22ZN/pRgHeLSQ0PwjEQWmh Gqg9D309zD4VtXydT05MIeMVsOpAzRyiNfGstoXlvTgPUhsZ5Tz8G+DaKksK+tOGrWfPSrk QFEuDcNE4neXtK1wv2KQg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:RPAk4n/AcqY=:I0mNa1mAx0KWL/UkCvt/PO P3xiswA69KSkfzrKj5eLSI2r4jE4iq8gzI4iDqFxX/arQKo3/K+iZCAOBxwLBB0C8G/bV00Fo Nc42ksh98cXkwoZLFQTrNNuP5OkP1UHLG7PZwWLPbs1+Rh1nkB7aNnsN3BlN4INQhuI7xgbgo OCfEP1PwIuk38In/34G1GDYBAa/CezwuXld0xXEx889drjyHoIvQ3xjSR6H7Jli8N6DGgZXBg 4E77Z/i5u0HaMZiQJrGUxg/dgyPQgunRM2mAkFnBWrIYi9+uVxQ8ykdiqiAbSA/wlWWTsxJRg 9zp6mORBqpulY0Pszxik8NY2KRDg4sVyPIPIm6SOTYmrL1qophdjgkJFyFscEURPmmQRoT3ER 4oan7USa9Qp9TVasIGksOErMVb76evg9/0/wBjTfURZwXhUT/Fv4HwoEDV2jN3gpsZhyWxmhh Bx96qsuXwPbEDhHeex/rfoUDMWq4eh8Rg+Chs4RI9JJmwi9zWAivUOXt/TfV9PCNoF0MCqZQk UgQguEWQXZI3leHe+VMXp66wSbAuEit8EAacSQzeCSf6nkIKSl8OQmoSUkBohS50AV8njU5Bp HFC3/pfSVLdR4cwD8ce/K2lvLDQVSf8tWiaRe0ghp9NKZ2rLw9e7MGJsoLxa9kFzEsSbfbSHX p/rNyufbL+P30YLxDn8axcSzptMoZMgGsSknax1Vc27yQG9r865AtDCQtNXbQDTY+5LcL7bk0 s698ShNyHS9NaSXCUm2Jw3NAgsRQyW2CZ5xVJc6aVHAxEIjTdJopBrksFauwpVfm4556o33zb q9gIbsyZrC9qM/2HMkAoX0L7Ej+T4P/tsd8dB8QCZDHed5/OHcDNPmTH1ZcbdO2sidDDz4Ujs WKnhH4JTFG2B9UC5Di1YKaYo3uXmIKQUjAJ17yqVzSMT8PfcGUFrsIzJyy1AO4rtfngNh58BX dJB+epzu9DTpCGMq17vmtehTh5qFxUaTjbNgnP/hPDDo6HMBvihxmSLoUQTKbpaMfmcqItvnh p2IT/pbiM90WAuRvF85SwkJVS8D4wGKOLbeZpW1jEcAyZ3N90fJoeYZjKW0jWLJzSjs+IeGHK QbAid5GlAwbh2Y= X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (-) >> With 'blink-matching-paren' on do C-M-% and type [)]. People who use >> 'blink-matching-paren' do not type complex regexps. > > We do indeed -- we just live with the bogus warnings from Emacs. So a fix for both has to hook into post-self-insert and after-change. Which means I have to prime these before-change to avoid parsing the buffer twice. Darn it! martin From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 07 05:08:03 2021 Received: (at 50766) by debbugs.gnu.org; 7 Oct 2021 09:08:03 +0000 Received: from localhost ([127.0.0.1]:46035 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mYPNi-0007dP-PD for submit@debbugs.gnu.org; Thu, 07 Oct 2021 05:08:03 -0400 Received: from mout.gmx.net ([212.227.17.21]:49693) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mYPNg-0007cx-AB for 50766@debbugs.gnu.org; Thu, 07 Oct 2021 05:08:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1633597671; bh=idPp/Uvu8j41ZLhjNVc1aJ+vVElzHqYTSZZP1tg4X1k=; h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To; b=aEctvq5VutvCC/PC4AkXw4zD42DOAY22WV3OVvJUfeCqkISjpdSH9vOe0CjpdYaSA A0QLvOwiA/blGumr3kyd/aFvafNKW8pmszrmrnSctBQhXKbftuECd3BwvtP8kkDnR9 MAxibIxocHVnjpwSqw2I3XmaCl1hdWy6SbubMqgE= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([213.142.97.180]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MVvLB-1mOp6Y0rAb-00RnKh; Thu, 07 Oct 2021 11:07:51 +0200 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted From: martin rudalics To: Lars Ingebrigtsen References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> Message-ID: <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> Date: Thu, 7 Oct 2021 11:07:48 +0200 MIME-Version: 1.0 In-Reply-To: <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> Content-Type: multipart/mixed; boundary="------------66986AC7E536242FA2F5BE81" Content-Language: en-US X-Provags-ID: V03:K1:K5/9uat0XJBfKYIAF+57aXdYEbbjwuTZpSlTCaXehKiZGVYLCwE jiIXvvYRfSt7mm87zNi2vHBMEUi8Kxw0HWjdjES4eQ9VF7Rxa+DDQ8LUUXdFySgqbgrp/sT oAQSZsQefTNrWwV8jLvlMLyF4cE2lEjniAmEEizJjv9IZy5+v95VV797eT8T7g8QJsHWiHb fQLCRGaKppx0YsFfQt30A== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:XWDGn1ihcwc=:QIHu7pQvFxOjL1sZBn5G5a fA2mukQWzEbFHvqmX64EvwtI+X0d4DWy0FyWCWLJimY7fgPC3KbOcxhgYCMZhtGsYeQ/YZNRA kHIb8rTxGs+Ui+Wrx1tuNeT4St5NyEjp5R0fR/7DUJGZ17d6HvuXu4m8SIbzJOgSrIZ9glksh EpCIR0+2YWpfmE+iquFl5CcwhsC89DVTYue0d+ADWRr5ydMtZ1aS5xfjbZxmkPwcgc2BxKsP/ ZxT1FWSCNP8sqXepdSSsemp3uTcF+2IOCq8DAmLlvlupgatDFrd3Tob2+5qQQ+EdIQsrWjndZ PBJIrj3yrznwZadrwgYpvhpTtbkZ41Tt9K7ElmBQ69rcMoIHPALm8jTXM7NJAMTvFk7F26Vmd Ro3uQ0BKmrZUllr1k5PEOFglkLIfTznHRTQG6gUEPTOx27vTzVU9fxL258jZOdtLMcKHBTR9p 2N9P1ZHQizlkB135r4nRnnzFCW6j8Y2xgkXaYFP2iHqdBlEktgGHGqEXhFI8PI3wgH3TpNhvb 1VUShjILXmzocsnrgfZIsi/QlkGoxLneQsN1hEZ2yD+YubCcsncUKQ7SBZnxN9C++dBe3MQLc 4BvNHNQ1fpJfLJYnngGYTGbsVmUyoNu57qnGXxnuXXPZ9ygLOO03hb7nzq0HXHdNRS58NS7DZ QxyBEDBJm1zgN/vxc85tK8siBjzN92jPQwCp0QmM2pQTWBymMJRzlzA0bwYkIVXSke+g96Elx fSSNNUehE2e8hqLeEnZz1rpRArj+E7ToPb708q58QiAt3xAy/NGyzQlUeS9VKlmNdHPNUmtHG cMuGayP1WSZs7qSFRAt9ZFprsfe4xPwek9Xp/Gub+Is0gGSaQFC11Q57NxKg1pVUeVV7FTEAF 7CS0BV6EYKFBSeu14gT3nXeXGYI65Jsa23x+t7yPhnP1WthHpO4F/+An1YV8uhfUMsaiz2WaY CMhgJ5I0YgahNFOm2y9sm5IKygKD5QYD02JpaDmwt6M0VBcuebJKNaZXktNB3klgO5iWSCJGd M8Wrvgx8ouuWIjfmf+S5VryCJHF8Cu8fwo1CGiCFcbix5uZo5cSimFDCIMZR0GlON/6eZGtjF 5djjl+9bxVnjxw= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (-) This is a multi-part message in MIME format. --------------66986AC7E536242FA2F5BE81 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit > Which means I have to prime these before-change to avoid parsing the > buffer twice. Darn it! > So a fix for both has to hook into post-self-insert and after-change. I attach a preliminary patch that should work for both. Please give it some testing. martin --------------66986AC7E536242FA2F5BE81 Content-Type: text/x-patch; name="minibuffer.el.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="minibuffer.el.diff" diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 1e1a6f852e..fed08c9018 100644 =2D-- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -4242,6 +4242,170 @@ format-prompt default))) ": ")) +(defvar minibuffer-regexp-mode) + +(defun minibuffer--regexp-propertize () + "In current minibuffer propertize parens and slashes in regexps. +Put punctuation `syntax-table' property on selected paren and +backslash characters in current buffer to make `show-paren-mode' +and `blink-matching-paren' more user-friendly." + (let (in-char-alt-p) + (save-excursion + (with-silent-modifications + (remove-text-properties (point-min) (point-max) '(syntax-table ni= l)) + (goto-char (point-min)) + (while (re-search-forward + "\\(\\\\\\\\\\)\\|\\(?:\\(?:\\\\\\)\\(?:\\([(){}]\\)\\|\\= (\\[\\)\\|\\(\\]\\)\\)\\)\ +\\|\\(\\[:[a-zA-Z]+:\\]\\)\\|\\(\\[\\)\\|\\(\\]\\)\\|\\([(){}]\\)" + (point-max) 'noerror) + (cond + ((match-beginning 1)) ; \\, skip + ((match-beginning 2) ; \( \) \{ \} + (if in-char-alt-p + ;; Within character alternative, set symbol syntax for + ;; paren only. + (put-text-property (1- (point)) (point) 'syntax-table '(3= )) + ;; Not within character alternative, set symbol syntax for + ;; backslash only. + (put-text-property (- (point) 2) (1- (point)) 'syntax-table= '(3)))) + ((match-beginning 3) ; \[ + (if in-char-alt-p + (progn + ;; Set symbol syntax for backslash. + (put-text-property (- (point) 2) (1- (point)) 'syntax-t= able '(3)) + ;; Re-read bracket we might be before a character class= . + (backward-char)) + ;; Set symbol syntax for bracket. + (put-text-property (1- (point)) (point) 'syntax-table '(3)))) + ((match-beginning 4) ; \] + (if in-char-alt-p + (progn + ;; Within character alternative, set symbol syntax for + ;; backslash, exit alternative. + (put-text-property (- (point) 2) (1- (point)) 'syntax-t= able '(3)) + (setq in-char-alt-p nil)) + ;; Not within character alternative, set symbol syntax for + ;; bracket. + (put-text-property (1- (point)) (point) 'syntax-table '(3)))) + ((match-beginning 5)) ; POSIX character class, skip + ((match-beginning 6) ; [ + (if in-char-alt-p + ;; Within character alternative, set symbol syntax. + (put-text-property (1- (point)) (point) 'syntax-table '(3)) + ;; Start new character alternative. + (setq in-char-alt-p t) + ;; Looking for immediately following non-closing ]. + (when (looking-at "\\^?\\]") + ;; Non-special right bracket, set symbol syntax. + (goto-char (match-end 0)) + (put-text-property (1- (point)) (point) 'syntax-table '(3))))) + ((match-beginning 7) ; ] + (if in-char-alt-p + (setq in-char-alt-p nil) + ;; The only warning we can emit before RET. + (message "Not in character alternative"))) + ((match-beginning 8) ; (){} + ;; Plain parenthesis or brace, set symbol syntax. + (put-text-property (1- (point)) (point) 'syntax-table '(3))))))))) + +;; The following variable is set by 'minibuffer--regexp-before-change'. +;; If non-nil, either 'minibuffer--regexp-post-self-insert' or +;; 'minibuffer--regexp-after-change', whichever comes next, will +;; propertize the minibuffer via 'minibuffer--regexp-propertize' and +;; reset this variable to nil, avoiding to propertize the buffer twice. +(defvar-local minibuffer--regexp-primed nil + "Non-nil when minibuffer contents change.") + +(defun minibuffer--regexp-before-change (_a _b) + "`minibuffer-regexp-mode' function on `before-change-functions'." + (setq minibuffer--regexp-primed t)) + +(defun minibuffer--regexp-after-change (_a _b _c) + "`minibuffer-regexp-mode' function on `after-change-functions'." + (when minibuffer--regexp-primed + (setq minibuffer--regexp-primed nil) + (minibuffer--regexp-propertize))) + +(defun minibuffer--regexp-post-self-insert () + "`minibuffer-regexp-mode' function on `post-self-insert-hook'." + (when minibuffer--regexp-primed + (setq minibuffer--regexp-primed nil) + (minibuffer--regexp-propertize))) + +(defvar minibuffer--regexp-prompt-regexp + "\\(?:Posix search\\|RE search\\|Search for regexp\\|Query replace rege= xp\\)" + "Regular expression compiled from `minibuffer-regexp-prompts'.") + +(defcustom minibuffer-regexp-prompts + '("Posix search" "RE search" "Search for regexp" "Query replace regexp"= ) + "List of minibuffer prompts that trigger `minibuffer-regexp-mode'. +`minibuffer-regexp-mode' is activated in a specific minibuffer +interaction if and only if a prompt in this list appears at the +beginning of the minibuffer." + :type '(repeat (string :tag "Prompt")) + :set (lambda (sym val) + (set-default sym val) + (when val + (setq minibuffer--regexp-prompt-regexp + (concat "\\(?:" (mapconcat 'regexp-quote val "\\|") "\\)= ")))) + :version "29.1") + +(defun minibuffer--regexp-setup () + "Function to activate`minibuffer-regexp-mode' in current buffer. +Run by `minibuffer-setup-hook'." + (if (and minibuffer-regexp-mode + (save-excursion + (goto-char (point-min)) + (looking-at minibuffer--regexp-prompt-regexp))) + (progn + (setq-local parse-sexp-lookup-properties t) + (add-hook 'before-change-functions #'minibuffer--regexp-before-ch= ange nil t) + (add-hook 'after-change-functions #'minibuffer--regexp-after-chan= ge nil t) + (add-hook 'post-self-insert-hook #'minibuffer--regexp-post-self-i= nsert nil t)) + ;; Make sure. + (minibuffer--regexp-exit))) + +(defun minibuffer--regexp-exit () + "Function to deactivate `minibuffer-regexp-mode' in current buffer. +Run by `minibuffer-exit-hook'." + (with-silent-modifications + (remove-text-properties (point-min) (point-max) '(syntax-table nil))) + (setq-local parse-sexp-lookup-properties nil) + (remove-hook 'before-change-functions #'minibuffer--regexp-before-chang= e t) + (remove-hook 'after-change-functions #'minibuffer--regexp-after-change = t) + (remove-hook 'post-self-insert-hook #'minibuffer--regexp-post-self-inse= rt t)) + +(define-minor-mode minibuffer-regexp-mode + "Minor mode for editing regular expressions in the minibuffer. +Highlight parens via `show-paren-mode' and `blink-matching-paren' +in a user-friendly way, avoid reporting alleged paren mismatches +and make sexp navigation more intuitive. + +The list of prompts activating this mode in specific minibuffer +interactions is customizable via `minibuffer-regexp-prompts'." + :global t + :initialize 'custom-initialize-delay + :init-value t + (if minibuffer-regexp-mode + (progn + (add-hook 'minibuffer-setup-hook #'minibuffer--regexp-setup) + (add-hook 'minibuffer-exit-hook #'minibuffer--regexp-exit)) + ;; Clean up - why is Vminibuffer_list not available in Lisp? + (dolist (buffer (buffer-list)) + (when (and (minibufferp) + parse-sexp-lookup-properties + (with-current-buffer buffer + (save-excursion + (goto-char (point-min)) + (looking-at minibuffer--regexp-prompt-regexp)))) + (with-current-buffer buffer + (with-silent-modifications + (remove-text-properties + (point-min) (point-max) '(syntax-table nil))) + (setq-local parse-sexp-lookup-properties t)))) + (remove-hook 'minibuffer-setup-hook #'minibuffer--regexp-setup) + (remove-hook 'minibuffer-exit-hook #'minibuffer--regexp-exit))) + (provide 'minibuffer) ;;; minibuffer.el ends here --------------66986AC7E536242FA2F5BE81-- From debbugs-submit-bounces@debbugs.gnu.org Fri Aug 26 08:50:17 2022 Received: (at 50766) by debbugs.gnu.org; 26 Aug 2022 12:50:17 +0000 Received: from localhost ([127.0.0.1]:52622 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oRYmv-0008Qq-0R for submit@debbugs.gnu.org; Fri, 26 Aug 2022 08:50:17 -0400 Received: from quimby.gnus.org ([95.216.78.240]:43932) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oRYmt-0008QV-8Q for 50766@debbugs.gnu.org; Fri, 26 Aug 2022 08:50:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References: In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=JIqlaMb4JD0LE4Lh0eATg7+s54xIFgQKbucBiN++uIY=; b=Txh7qIypVmuLQXR1fFtEubLx9I VE7V+YH0z2wzH/rZeIYsyWQ4ksMwlTxkoKyIYX+0B/Xayc+IdsDrBLftn8xotItzkH18KNDvOrgrE HbQ5Rgn4t9HKZUqYfrNGU3bfKfZ3Lu9y/bnfoAqro4EcL4K1ksKga1teDO8zBHvN14pI=; Received: from [84.212.220.105] (helo=joga) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oRYml-0001MN-CS; Fri, 26 Aug 2022 14:50:09 +0200 From: Lars Ingebrigtsen To: martin rudalics Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted In-Reply-To: <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> (martin rudalics's message of "Thu, 7 Oct 2021 11:07:48 +0200") References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> X-Now-Playing: Japan's _Quiet Life (1)_: "In Vogue" Date: Fri, 26 Aug 2022 14:50:06 +0200 Message-ID: <874jxzb24h.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: martin rudalics writes: > I attach a preliminary patch that should work for both. Please give it > some testing. Sorry, missed this. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (---) martin rudalics writes: > I attach a preliminary patch that should work for both. Please give it > some testing. Sorry, missed this. I've tried this a bit now, and it seems to work well for me. From debbugs-submit-bounces@debbugs.gnu.org Fri Aug 26 08:50:41 2022 Received: (at control) by debbugs.gnu.org; 26 Aug 2022 12:50:41 +0000 Received: from localhost ([127.0.0.1]:52625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oRYnJ-0008Ro-FJ for submit@debbugs.gnu.org; Fri, 26 Aug 2022 08:50:41 -0400 Received: from quimby.gnus.org ([95.216.78.240]:43948) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oRYnI-0008RZ-GQ for control@debbugs.gnu.org; Fri, 26 Aug 2022 08:50:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=2RGTBVx/TnBk/qMGKzDRBwHl9yE8VsSIUPJOLQ16IZo=; b=H3OeFhd7RugbwquPYNrbnwseED pLpy+e3+KXPOwPzbwlfDhbYfTj2sJ+ciu0/sn1oqRwwoEMSGyACda1wkyHrfOeHnwpylLkpEMWiER Op0F5ma0saRbUk6DajXzScEcEQTjTctWwuvpeRbOGftUa74QGf8mLLdlNzzAaWHty35U=; Received: from [84.212.220.105] (helo=joga) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oRYnA-0001MZ-K4 for control@debbugs.gnu.org; Fri, 26 Aug 2022 14:50:34 +0200 Date: Fri, 26 Aug 2022 14:50:32 +0200 Message-Id: <8735djb23r.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #50766 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 50766 + patch quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) 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: -3.3 (---) tags 50766 + patch quit From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 10 02:14:51 2022 Received: (at 50766) by debbugs.gnu.org; 10 Sep 2022 06:14:51 +0000 Received: from localhost ([127.0.0.1]:36308 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oWtlT-0004ZZ-I5 for submit@debbugs.gnu.org; Sat, 10 Sep 2022 02:14:51 -0400 Received: from quimby.gnus.org ([95.216.78.240]:54944) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oWtlR-0004YS-P4 for 50766@debbugs.gnu.org; Sat, 10 Sep 2022 02:14:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References: In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=ouNMYEMf/uCe/e5Hjq1I8TL5oNpwT5J5P2EGuHynW/0=; b=HcR4K5Oxz2xTooeTvOw0lWfKUs IT/NEpXweeOlKvtolgr5tWEeZofSgrYa1o/It1XjZXBhc0uydMRfIz4myDtOfZr22AEWGYcLOgdyx 0xqR0WfIKOYCfIuFUTe35W8oXj3ctJgamZHKVWbpn2MZYwt/R6KRmI3TAsXjklsvpLgE=; Received: from [84.212.220.105] (helo=joga) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oWtlJ-00075y-V0; Sat, 10 Sep 2022 08:14:44 +0200 From: Lars Ingebrigtsen To: martin rudalics Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted In-Reply-To: <874jxzb24h.fsf@gnus.org> (Lars Ingebrigtsen's message of "Fri, 26 Aug 2022 14:50:06 +0200") References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> X-Now-Playing: Joe Jackson's _Beat Crazy_: "Crime Don't Pay" Date: Sat, 10 Sep 2022 08:14:41 +0200 Message-ID: <87mtb7oiwe.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Lars Ingebrigtsen writes: >> I attach a preliminary patch that should work for both. Please give it >> some testing. > > Sorry, missed this. > > I've tried this a bit now, and it seems to work well for me. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (---) Lars Ingebrigtsen writes: >> I attach a preliminary patch that should work for both. Please give it >> some testing. > > Sorry, missed this. > > I've tried this a bit now, and it seems to work well for me. Is there anything further that should be done with this patch before pushing to Emacs 29? From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 10 02:14:57 2022 Received: (at control) by debbugs.gnu.org; 10 Sep 2022 06:14:57 +0000 Received: from localhost ([127.0.0.1]:36311 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oWtlY-0004Zt-Rl for submit@debbugs.gnu.org; Sat, 10 Sep 2022 02:14:57 -0400 Received: from quimby.gnus.org ([95.216.78.240]:54958) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oWtlX-0004ZR-32 for control@debbugs.gnu.org; Sat, 10 Sep 2022 02:14:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=6EWxMzAzr7QsmhARDsg7Dmyo4OsQWq8gfMTJ9ZJEhfs=; b=ly5Rs3+q+yvh2c/1D1PziLVzIB Hn3z4h07BrzWkxOc6jyiN30UhetXM3rCdYj089Hxj//J0jlkDTJYtvJIc4cPrHx95So5ldWNkS+4V ma1CBR0pzkBk3zYxjydL2F614J/9f2r82Hz4uNjAJ8femqCug7EC1ZftSuCCszcdjlhg=; Received: from [84.212.220.105] (helo=joga) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oWtlP-000768-FJ for control@debbugs.gnu.org; Sat, 10 Sep 2022 08:14:49 +0200 Date: Sat, 10 Sep 2022 08:14:47 +0200 Message-Id: <87leqroiw8.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #50766 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 50766 + moreinfo quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) 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: -3.3 (---) tags 50766 + moreinfo quit From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 03 04:38:15 2023 Received: (at 50766) by debbugs.gnu.org; 3 Sep 2023 08:38:15 +0000 Received: from localhost ([127.0.0.1]:39253 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qcicZ-0005pr-I5 for submit@debbugs.gnu.org; Sun, 03 Sep 2023 04:38:15 -0400 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:58812) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qcicW-0005pW-Gx for 50766@debbugs.gnu.org; Sun, 03 Sep 2023 04:38:14 -0400 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-4ff8cf11b90so787160e87.1 for <50766@debbugs.gnu.org>; Sun, 03 Sep 2023 01:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693730276; x=1694335076; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=yLOp/YVDWLGLzzTMd4LGipc0aDt9WWALtsPUPXD1byA=; b=HWHpZ2PoAa/lZTDn8DGHLUDgbqoxqV3PB5TcXKUFxWy+f9vwY4SITuK+nj1voY8LH8 xEpa4+NALTEiHG/nu/ace2zEEz4TfiIINb94wpZimP06pzszQkLRa1mD/286vuRljAXY aBZuKIlgMfbyykO/y3tJ8Bym9eC8F4L7g9WfJo+FFAxJqZIBSwgSpOm1qXNNlf1CXCWH MUKV4Soc/sM55bwsJHwHbvGxFkT7btWGgGmEg0V+u78J0MLdvx1iADdde/yCkDswGgnT qSeaaW+CHGLrk1tE/KqafXuEsQs136V55/wXSBtBQAT71mFAMlLSZqVaWWH6RvFQ2Iqz 4MdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693730276; x=1694335076; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yLOp/YVDWLGLzzTMd4LGipc0aDt9WWALtsPUPXD1byA=; b=YtWdrBnVhteUIHn+hEHFaXK833OXmwGfrvNdJu0ngf+J5vGY4PvfMuL+RF1lrWTOl4 h4DUYBFci1j/nJ5+VnDDr5rCHg3q8DKuMjq61y56wGGLczLFQwN53SNLb5agS5Ns/f4Y sZwYAsthjWaj2i7crP2czPB3XX01KzuZ1D8o+gtfH2YhzkZaZW51GJNf+potJCBIzAIL XwuTjceJt1H48uGRFV3WcRzs2QVny9QvCsdNqmtN28udRsYOGMOgyohzcfHia8qkAkrl WYJJTGJG6fR9GDUU7yVNIt6u7Ia6IxAlrPzprD9yUaqmqzXdhr3W+N8eR2DfavNnee9J wjJw== X-Gm-Message-State: AOJu0Yzdz2MO3ee9YRr3u3txyBh5aSdYL/cRASOBWxtXtxHmISk9l8sI r0LRTxowNv1cD0jRqpM6FErZ1cdFNPCik1YfnWA= X-Google-Smtp-Source: AGHT+IGD6OcHrIjY1RLi1tTb0FR89QZu84lOyDMpoMvf8vaj1T3Qw5Sb2i9XzRwzCD5naoRFiDy2sUeHXuQLZ+whAmA= X-Received: by 2002:a05:6512:2302:b0:4f9:cd02:4aec with SMTP id o2-20020a056512230200b004f9cd024aecmr6071122lfu.29.1693730276084; Sun, 03 Sep 2023 01:37:56 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sun, 3 Sep 2023 01:37:55 -0700 From: Stefan Kangas In-Reply-To: <87mtb7oiwe.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sat, 10 Sep 2022 08:14:41 +0200") References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> MIME-Version: 1.0 Date: Sun, 3 Sep 2023 01:37:55 -0700 Message-ID: Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: Lars Ingebrigtsen Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: martin rudalics , 50766@debbugs.gnu.org, ndame 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 (-) Lars Ingebrigtsen writes: > Lars Ingebrigtsen writes: > >>> I attach a preliminary patch that should work for both. Please give it >>> some testing. >> >> Sorry, missed this. >> >> I've tried this a bit now, and it seems to work well for me. > > Is there anything further that should be done with this patch before > pushing to Emacs 29? Ping. Martin, could we install this patch? From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 04 03:45:54 2023 Received: (at 50766) by debbugs.gnu.org; 4 Sep 2023 07:45:54 +0000 Received: from localhost ([127.0.0.1]:48153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qd4HR-0003yg-VH for submit@debbugs.gnu.org; Mon, 04 Sep 2023 03:45:54 -0400 Received: from mout.gmx.net ([212.227.15.15]:54233) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qd4HN-0003yM-Ge for 50766@debbugs.gnu.org; Mon, 04 Sep 2023 03:45:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1693813542; x=1694418342; i=rudalics@gmx.at; bh=1dcoSBQYzbdLCojXJMToBe9pL4+oZOj3S+yx0MsUUWw=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=qnvUVjpJvrYoW89RXpCBHPbZEkqr4BjqrRJEd+y6Laq2977RsdNYb6uaMA4NgJQ2dNPuaIA JWuJiO/oPi5c0Plp+ZGUJkLqWWuk7cCKya50QKUZBkXTTVugv+h8YztMAL84ckoD9BHtZCeQ0 wIbmITAkEJ9jVGltrRdI0/C/af+itDF/2H/rSWI78sPPERlSYHLsTdh1khQO2ZNJSGdY2yGQB jSvmj6slQJqNG5oBZztsr5gd3qjqT7VlJjtbFQ9qMiQLPL+uSbFf08Uf8EJ4CYKybtE1jPSpp IuIw++NiihPC3hA7bVpPeWFrUabA9CATr6O4YzN0eD+lQeFq/phw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.1.100] ([213.142.96.79]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MdvmO-1q3BYp3Lkc-00b68w; Mon, 04 Sep 2023 09:45:41 +0200 Message-ID: <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> Date: Mon, 4 Sep 2023 09:45:39 +0200 MIME-Version: 1.0 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted Content-Language: en-US To: Stefan Kangas , Lars Ingebrigtsen References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> From: martin rudalics In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:1Nt3uYr0MTELqUEwh6VZECeY4EtR4+EEehW18tukdMW0SQvgJJm xRxDHybn3+Bf8GAe2ouORL1Ozwc4f2gk6/JEWnW7L7nYeait9d0dlCWVlIvQnJ+45aAJXTM ljbzebeAiVysR6LifG/PQu9pfiIZwhNG2ef0d8QM1uYPrV4f5ueI/y/JEfKdlhf4Secx8D0 x/CIMrAia0kRzKezgnTAQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:PclXoz4GTQ0=;H08SE2dE3XSqyiO2s0Sb8BHNadl atHoJbrsHrVeoSHJWx0Mhdomgo2HRc5kzfsbWVkdHtJ6wKlmbZ1yueKCQCcZZNnwtDXH2z/5k d8btr91JBnUksHaIn6Jy54unMp0TH2V4VdxWDOndmRGZ4O4Pxx2ciHmg0qlYqKsgojuLb3p4k 6jP2McId3nuWZQrToQFJRRFXG6pG/4XMnX4y06NqAXXI662jP3pWd8DFvmTkF4Wk4YUZx/g4+ S/rJDH2g4syvnXyKr2xmstaL0cC8GUI5ZqOwgtNnmc6StZbddzCA3YVF63qgURAIQp5dddKOU cRHI7KHyskihq82cnlTw1WObvMsTxQXqreYMjhf+VdjooAkZXorMd3rC5eBz2VwRF27qz9buE N9WmPkqCON8uLjik+f3d2Mvw7GB0xDYczmk5erBgXZqHXzxuejO5y1t9lD2NiT3b/TBOTxKn1 gVS7uijTiKefFPHCsFhvDhujP7bfRqVZ4a44awWVV/BQR5RdFHR+EjI1u3B/xfTMFGgV94at3 WBKD89nJ634w8Sa2hWeGOlGNOoLGevCMIZ/v82Gg/dUTSYkdUgLDbMSu1J7Di9tHDYVQKI88/ 2E+yxAO1dCAodhECkD8GvSGQf917sp9EHFfgXBI8OOTsmaiwRdaCnq87Dc097vG7L2y8aNySP Pyucu49Yrqaz/NlXSJpeRAPHGQkQbYMiKZoe1Dxksq29XTWtwGZFC0VxjPEKwLzdbjFWqa5LX 2c3zpFfmA9/02XI3Z1Ok39KEX6Q+uPnrZDokCCExDqCvMB/3tBq8wO/xCjhiJytnF8iqQh15R QN3bWrACGeW2ITVLbNwpKAt74bSgckQl7PwxLyM/d1oTCu0/Ba//F4J761o6lkq1JmBUvDja/ NN2KAi84+nTOV6boLKZ9+WIr1njD89gUJ4+6Pqi1zyQ6VUmzoGstdOr4ZpTUTCMvi6kg4kwur N0HRZA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (-) >>>> I attach a preliminary patch that should work for both. Please give it >>>> some testing. >>> >>> Sorry, missed this. >>> >>> I've tried this a bit now, and it seems to work well for me. >> >> Is there anything further that should be done with this patch before >> pushing to Emacs 29? Sorry, I must have missed that earlier message by Lars. > Ping. Martin, could we install this patch? If it still applies, you have tried it and think it's desirable, I can write ChangeLog and NEWS entries. Thanks, martin From debbugs-submit-bounces@debbugs.gnu.org Tue Sep 05 18:52:50 2023 Received: (at 50766) by debbugs.gnu.org; 5 Sep 2023 22:52:50 +0000 Received: from localhost ([127.0.0.1]:59755 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qdeug-0001BJ-3j for submit@debbugs.gnu.org; Tue, 05 Sep 2023 18:52:50 -0400 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]:49382) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qdeua-0001B4-Pq for 50766@debbugs.gnu.org; Tue, 05 Sep 2023 18:52:48 -0400 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-500b6456c7eso5348217e87.2 for <50766@debbugs.gnu.org>; Tue, 05 Sep 2023 15:52:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693954358; x=1694559158; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=0iLAokSmQdpS6/vJVObBM9V3vSjfvfUnlVYV5/RplaM=; b=KNJSszQrmdUHI78wHbMWllvSnrHzgSgDtsib9mcFWJOSYkBwtVRuvPmaVmLE4QNJWS pEkQzYMEkPcb6um3kZX120Rn4jXtreD0SDzy7DpjzvUoV/p+BF+PY/tefLm+2itZMYYt 3rFodsoCSh60Nz5deQiYQ4VQ7lLxeb7TeFnSVyDVoTxt22zgwN9ASXIEb/vzCkesZF7b EjTNWGBjzxSgSZfKFuvw7/pP2/nmYv7oHNZUyNkd6ao4ER3Bw/Z60tB0zS5qY51GJSec aeO6tP0tS76gd3keWwQWBHzGHI8VzWyEiOeaGNUp9XJcpNcVuM5Smcp4JszaRatc14vF R43A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693954358; x=1694559158; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=0iLAokSmQdpS6/vJVObBM9V3vSjfvfUnlVYV5/RplaM=; b=bHRV26pTXfmts7YGeTgvjNt5Plr5zPdJMcT0WqNa+8w5FKtrvTOzNs8CV6/wdFDsfT vLgrAk5dp++avC01Xq0eqS5VSJsHr58rY+/8NtlCCotHYPWjArRq5fUuHpDi0NVZnGGk 5na1Xa0Zc9osXqSVutufvqfol8LJHMgQuXh0QjT9J95kH5k3cqyZpcLrLWEUD3ev+qFh I0Mz99FC/MqGPB6DLxQpNMBSVeymmcbSpk/ao1/oHKU2TGkyn0dln6mKyEuVHHteILWr Bkg9OauZs/FUmLaspdEwpjb4tSy2/9ceAhttenw0dZwRzy0UI56OaexOjqZHXjqCkrRB UiQw== X-Gm-Message-State: AOJu0YyY0V3kIMN6nxd920anfFSVQg8oiGRfnSG/JptlHHI0feoV3oyh fudi3LC+d8qIs1FRPRZ0Vtzjjo7iNEUS7rEe2lc= X-Google-Smtp-Source: AGHT+IHcN/i8VvpYO6ZuciKfhKTH44ngqrbB4lxY3NAkIJZi01EYRvsPlY2jP6KjiZl/xnSt3yablZfoFA3tz1vhz3E= X-Received: by 2002:a19:5e5a:0:b0:500:9946:9c69 with SMTP id z26-20020a195e5a000000b0050099469c69mr800976lfi.29.1693954357862; Tue, 05 Sep 2023 15:52:37 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Tue, 5 Sep 2023 15:52:37 -0700 From: Stefan Kangas In-Reply-To: <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> MIME-Version: 1.0 Date: Tue, 5 Sep 2023 15:52:37 -0700 Message-ID: Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: martin rudalics , Lars Ingebrigtsen Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (-) martin rudalics writes: > >> Is there anything further that should be done with this patch before > >> pushing to Emacs 29? > > Sorry, I must have missed that earlier message by Lars. No worries. > > Ping. Martin, could we install this patch? > > If it still applies, you have tried it and think it's desirable, I can > write ChangeLog and NEWS entries. It still applies, and it works here. Please go ahead. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 06 04:10:05 2023 Received: (at 50766) by debbugs.gnu.org; 6 Sep 2023 08:10:05 +0000 Received: from localhost ([127.0.0.1]:60742 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qdnbx-0004LP-0e for submit@debbugs.gnu.org; Wed, 06 Sep 2023 04:10:05 -0400 Received: from mout.gmx.net ([212.227.15.18]:33187) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qdnbu-0004Kj-LN for 50766@debbugs.gnu.org; Wed, 06 Sep 2023 04:10:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1693987793; x=1694592593; i=rudalics@gmx.at; bh=In2tdyzm8i46qcadHj1Bo631uNUhKpylQ61XPJtLDv8=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=YVh7e65B0DoBls0qJpZu0m1uf5zU6td2a6MIJz1xLOkNS1TP/UWafZqR/H/lqBkTONNa/q+ S9BBsw+e5JWMHclhupkQBAxdZ5LPFgpC6azD/DQrYaMjNgzAySWe5sQnX6lT6dsbMjvcaAaUs VsXjE5fxemBfT2mPZdS/H8Ae3wUnE7htvF1wE6I5Sxq+9uEOWs949SwQD09lrWuQjfcXCXoiZ BnCT0aIhyAB9htX7KMPhkc+cwTqJpC+62OjnZyB7yWczQEcbtDPXDdhEGd2GXbaS2PJtOyCWq xNvJDqD3Yb6PmTl96A0Ty03mS8KQrUkktrNCzHdd5kaQdYGo7oPA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.1.100] ([213.142.97.189]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MI5UD-1qSTTi0D03-00FDe7; Wed, 06 Sep 2023 10:09:53 +0200 Content-Type: multipart/mixed; boundary="------------gyH7eCTx760S7IBR0vtMdHSD" Message-ID: Date: Wed, 6 Sep 2023 10:09:49 +0200 MIME-Version: 1.0 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted Content-Language: en-US To: Stefan Kangas , Lars Ingebrigtsen References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> From: martin rudalics In-Reply-To: X-Provags-ID: V03:K1:BvoD1j6V1gesh9mIaFPvRHVre+Fx5hk9rzSfVi4jNXWpZVt6u8P SZusFchzJA3NA1lpn6E7j+8yQU1WRT2zbNla02EkMiICFT0HoZFaj53308+EcIi1PiGgnBO U/M6HIM16U9dvQ/zSdp3OcdNxxoBHho/MT2VjZ2KGpnA9pn+k5v1CG8sFarmB3CFHNEtsc1 83Dl+IbuR+8Qd1IznoTYg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:tddhxZpapqw=;5LrojaAkm+sY5th+90ibizkSLtW JzfCKuj6dhcnUndXgX7Ki9JV0QK6tAsCKW6Qlvq+dtlDP1Yf07KIhREiJU9oUuU2lrez+IiKD RsSkVvLqspvC/Fhck3E86iurrZ+kzQf5nIO8jb31MPLgX5uHOKHllHN3W8JpfE160SAiQNcOD V7iTzcyuZuunJA59SHaAdn/rVT/2wUhd79IEAmHdkvewluke/DdoS19VWTG9i99WcKbivntsu VzUAcI5I4xYlepBPjg7dmA87ZtYGGWf+lHZII0v39RUPqS/UMFYGGhaQHA0xEhOMW1gOXeFO3 tGr8xTGj6LnIFcoImTRCllJcgDNHCvePrM35RggcvV+cxgI0/iJtYkZdINPx2RxwT/BbNFKE3 pFoOeHfuHp//nmciVieWx9qPlgWGM1pKM9wT7anjx74M0qDN52xpOMa37nKCOvbg55NdM+gBP D9Li4WYpt5+Sm5y5PVd08qBEJzwAtcDy1xEMtMAV+QC4YSD7s6tQuVyAv4nFMSOM2+KYITXcO AqtKS05/q3VHI7NKFkd42vkuR/qKuybclZLW8hx15swtEhzlq5ClX+kovsY5K0SeTI4HMV6Zs WN4XKCgVp/d8WJsnEBBRFNarKfFztVIdWpWdI6+lcZ/RnWsfnTgCuzxaCp2Bxu1wgVlXy7erA 66h5B3dT3hmzBEh9sZC1wY404Q3yzs4VkZKlF5j4d89rjrzCK+zpCFLbhfbfw0PbDm8OPMguV /xK5WgJqcSL4W3SA8LrRM3Ha/rmUrIXw62YJcGiAKU/drH0yga4gfjtIXy8TEC0qK+2AgJ/Vz 70tgp4bu5c0lxxsIQPo4qeJnqjHRFLv8p/DlaUfG/ILi/mp84S9xqeI/fJp2SKE6ew7mL8pVY ds6ePyO6aU4Zidkdk7402pajREUKdzSgG2SUPsIWSxAsBB5va7avaamc+OlmmoNbb24+vLmlj nfctmuQ+iC7Ksg8uNN6d+dnKIjE= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50766 Cc: ndame , 50766@debbugs.gnu.org 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 (-) This is a multi-part message in MIME format. --------------gyH7eCTx760S7IBR0vtMdHSD Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit >> If it still applies, you have tried it and think it's desirable, I can >> write ChangeLog and NEWS entries. > > It still applies, and it works here. Please go ahead. It did not apply to current master. I now built master for the first time this year, rewrote the patch so it applies and added a short text to the Elisp manual. I also enclose a NEWS and a ChangeLog entry. Please tell me if something is missing and install however you see fit. Thanks, martin --------------gyH7eCTx760S7IBR0vtMdHSD Content-Type: text/x-patch; charset=UTF-8; name="minibuffer.el.diff" Content-Disposition: attachment; filename="minibuffer.el.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL21pbmlidWYudGV4aSBiL2RvYy9saXNwcmVmL21p bmlidWYudGV4aQppbmRleCA4ZmY1YzE0MDU1ZS4uMGI4NzdhMjVlNjggMTAwNjQ0Ci0tLSBh L2RvYy9saXNwcmVmL21pbmlidWYudGV4aQorKysgYi9kb2MvbGlzcHJlZi9taW5pYnVmLnRl eGkKQEAgLTI4NzcsMyArMjg3NywyMSBAQCBNaW5pYnVmZmVyIE1pc2MKIGtleW1hcCBAY29k ZXttaW5pYnVmZmVyLWluYWN0aXZlLW1vZGUtbWFwfS4gIFRoaXMgY2FuIGJlIHVzZWZ1bAog aWYgdGhlIG1pbmlidWZmZXIgaXMgaW4gYSBzZXBhcmF0ZSBmcmFtZS4gIEB4cmVme01pbmli dWZmZXJzIGFuZCBGcmFtZXN9LgogQGVuZCBkZWZmbgorCitAZGVmZm4gQ29tbWFuZCBtaW5p YnVmZmVyLXJlZ2V4cC1tb2RlCitUaGlzIGlzIGEgbWlub3IgbW9kZSBmb3IgZWRpdGluZyBy ZWd1bGFyIGV4cHJlc3Npb25zIGluIHRoZSBtaW5pYnVmZmVyLgorSXQgaGlnaGxpZ2h0IHBh cmVucyB2aWEgQGNvZGV7c2hvdy1wYXJlbi1tb2RlfSBhbmQKK0Bjb2Rle2JsaW5rLW1hdGNo aW5nLXBhcmVufSBpbiBhIHVzZXItZnJpZW5kbHkgd2F5LCBhdm9pZHMgcmVwb3J0aW5nCith bGxlZ2VkIHBhcmVuIG1pc21hdGNoZXMgYW5kIG1ha2VzIHNleHAgbmF2aWdhdGlvbiBtb3Jl IGludHVpdGl2ZS4KKworVGhlIGxpc3Qgb2YgcHJvbXB0cyBhY3RpdmF0aW5nIHRoaXMgbW9k ZSBpbiBzcGVjaWZpYyBtaW5pYnVmZmVyCitpbnRlcmFjdGlvbnMgaXMgY3VzdG9taXphYmxl IHZpYSBAY29kZXttaW5pYnVmZmVyLXJlZ2V4cC1wcm9tcHRzfSwgc2VlCitiZWxvdy4KK0Bl bmQgZGVmZm4KKworQGRlZm9wdCBtaW5pYnVmZmVyLXJlZ2V4cC1wcm9tcHRzCitMaXN0IG9m IG1pbmlidWZmZXIgcHJvbXB0cyB0aGF0IHRyaWdnZXIgQGNvZGV7bWluaWJ1ZmZlci1yZWdl eHAtbW9kZX0uCitAY29kZXttaW5pYnVmZmVyLXJlZ2V4cC1tb2RlfSBpcyBhY3RpdmF0ZWQg aW4gYSBzcGVjaWZpYyBtaW5pYnVmZmVyCitpbnRlcmFjdGlvbiBpZiBhbmQgb25seSBpZiBh IHByb21wdCBpbiB0aGlzIGxpc3QgYXBwZWFycyBhdCB0aGUKK2JlZ2lubmluZyBvZiB0aGUg bWluaWJ1ZmZlci4KK0BlbmQgZGVmb3B0CmRpZmYgLS1naXQgYS9saXNwL21pbmlidWZmZXIu ZWwgYi9saXNwL21pbmlidWZmZXIuZWwKaW5kZXggNTJhMjg2MDE4YTEuLmQ0MzIwMWViMzZk IDEwMDY0NAotLS0gYS9saXNwL21pbmlidWZmZXIuZWwKKysrIGIvbGlzcC9taW5pYnVmZmVy LmVsCkBAIC00NjYzLDYgKzQ2NjMsMTcwIEBAIG1pbmlidWZmZXItZXhpdC1vbi1zY3JlZW4t a2V5Ym9hcmQKIChhZGQtaG9vayAnbWluaWJ1ZmZlci1zZXR1cC1ob29rICMnbWluaWJ1ZmZl ci1zZXR1cC1vbi1zY3JlZW4ta2V5Ym9hcmQpCiAoYWRkLWhvb2sgJ21pbmlidWZmZXItZXhp dC1ob29rICMnbWluaWJ1ZmZlci1leGl0LW9uLXNjcmVlbi1rZXlib2FyZCkKIAorKGRlZnZh ciBtaW5pYnVmZmVyLXJlZ2V4cC1tb2RlKQorCisoZGVmdW4gbWluaWJ1ZmZlci0tcmVnZXhw LXByb3BlcnRpemUgKCkKKyAgIkluIGN1cnJlbnQgbWluaWJ1ZmZlciBwcm9wZXJ0aXplIHBh cmVucyBhbmQgc2xhc2hlcyBpbiByZWdleHBzLgorUHV0IHB1bmN0dWF0aW9uIGBzeW50YXgt dGFibGUnIHByb3BlcnR5IG9uIHNlbGVjdGVkIHBhcmVuIGFuZAorYmFja3NsYXNoIGNoYXJh Y3RlcnMgaW4gY3VycmVudCBidWZmZXIgdG8gbWFrZSBgc2hvdy1wYXJlbi1tb2RlJworYW5k IGBibGluay1tYXRjaGluZy1wYXJlbicgbW9yZSB1c2VyLWZyaWVuZGx5LiIKKyAgKGxldCAo aW4tY2hhci1hbHQtcCkKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICh3aXRoLXNpbGVu dC1tb2RpZmljYXRpb25zCisgICAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIChwb2lu dC1taW4pIChwb2ludC1tYXgpICcoc3ludGF4LXRhYmxlIG5pbCkpCisgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQK KyAgICAgICAgICAgICAgICAiXFwoXFxcXFxcXFxcXClcXHxcXCg/OlxcKD86XFxcXFxcKVxc KD86XFwoWygpe31dXFwpXFx8XFwoXFxbXFwpXFx8XFwoXFxdXFwpXFwpXFwpXAorXFx8XFwo XFxbOlthLXpBLVpdKzpcXF1cXClcXHxcXChcXFtcXClcXHxcXChcXF1cXClcXHxcXChbKCl7 fV1cXCkiCisJICAgICAgICAocG9pbnQtbWF4KSAnbm9lcnJvcikKKwkgIChjb25kCisgICAg ICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDEpKSAgICAgICAgICAgICAgICA7IFxcLCBza2lw CisgICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDIpCQkJOyBcKCBcKSBceyBcfQorICAg ICAgICAgICAgKGlmIGluLWNoYXItYWx0LXAKKwkgICAgICAgIDs7IFdpdGhpbiBjaGFyYWN0 ZXIgYWx0ZXJuYXRpdmUsIHNldCBzeW1ib2wgc3ludGF4IGZvcgorCSAgICAgICAgOzsgcGFy ZW4gb25seS4KKyAgICAgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKDEtIChwb2lu dCkpIChwb2ludCkgJ3N5bnRheC10YWJsZSAnKDMpKQorCSAgICAgIDs7IE5vdCB3aXRoaW4g Y2hhcmFjdGVyIGFsdGVybmF0aXZlLCBzZXQgc3ltYm9sIHN5bnRheCBmb3IKKwkgICAgICA7 OyBiYWNrc2xhc2ggb25seS4KKyAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgt IChwb2ludCkgMikgKDEtIChwb2ludCkpICdzeW50YXgtdGFibGUgJygzKSkpKQorCSAgICgo bWF0Y2gtYmVnaW5uaW5nIDMpCQkJOyBcWworICAgICAgICAgICAgKGlmIGluLWNoYXItYWx0 LXAKKyAgICAgICAgICAgICAgICAocHJvZ24KKwkgICAgICAgICAgOzsgU2V0IHN5bWJvbCBz eW50YXggZm9yIGJhY2tzbGFzaC4KKyAgICAgICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9w ZXJ0eSAoLSAocG9pbnQpIDIpICgxLSAocG9pbnQpKSAnc3ludGF4LXRhYmxlICcoMykpCisg ICAgICAgICAgICAgICAgICA7OyBSZS1yZWFkIGJyYWNrZXQgd2UgbWlnaHQgYmUgYmVmb3Jl IGEgY2hhcmFjdGVyIGNsYXNzLgorICAgICAgICAgICAgICAgICAgKGJhY2t3YXJkLWNoYXIp KQorCSAgICAgIDs7IFNldCBzeW1ib2wgc3ludGF4IGZvciBicmFja2V0LgorCSAgICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAoMS0gKHBvaW50KSkgKHBvaW50KSAnc3ludGF4LXRhYmxlICco MykpKSkKKwkgICAoKG1hdGNoLWJlZ2lubmluZyA0KQkJCTsgXF0KKyAgICAgICAgICAgIChp ZiBpbi1jaGFyLWFsdC1wCisgICAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAg ICAgICA7OyBXaXRoaW4gY2hhcmFjdGVyIGFsdGVybmF0aXZlLCBzZXQgc3ltYm9sIHN5bnRh eCBmb3IKKwkgICAgICAgICAgOzsgYmFja3NsYXNoLCBleGl0IGFsdGVybmF0aXZlLgorICAg ICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgtIChwb2ludCkgMikgKDEtIChw b2ludCkpICdzeW50YXgtdGFibGUgJygzKSkKKwkgICAgICAgICAgKHNldHEgaW4tY2hhci1h bHQtcCBuaWwpKQorCSAgICAgIDs7IE5vdCB3aXRoaW4gY2hhcmFjdGVyIGFsdGVybmF0aXZl LCBzZXQgc3ltYm9sIHN5bnRheCBmb3IKKwkgICAgICA7OyBicmFja2V0LgorCSAgICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAoMS0gKHBvaW50KSkgKHBvaW50KSAnc3ludGF4LXRhYmxlICco MykpKSkKKwkgICAoKG1hdGNoLWJlZ2lubmluZyA1KSkgICAgICAgICA7IFBPU0lYIGNoYXJh Y3RlciBjbGFzcywgc2tpcAorCSAgICgobWF0Y2gtYmVnaW5uaW5nIDYpICAgICAgICAgIDsg WworCSAgICAoaWYgaW4tY2hhci1hbHQtcAorCSAgICAgICAgOzsgV2l0aGluIGNoYXJhY3Rl ciBhbHRlcm5hdGl2ZSwgc2V0IHN5bWJvbCBzeW50YXguCisJICAgICAgICAocHV0LXRleHQt cHJvcGVydHkgKDEtIChwb2ludCkpIChwb2ludCkgJ3N5bnRheC10YWJsZSAnKDMpKQorCSAg ICAgIDs7IFN0YXJ0IG5ldyBjaGFyYWN0ZXIgYWx0ZXJuYXRpdmUuCisJICAgICAgKHNldHEg aW4tY2hhci1hbHQtcCB0KQorICAgICAgICAgICAgICA7OyBMb29raW5nIGZvciBpbW1lZGlh dGVseSBmb2xsb3dpbmcgbm9uLWNsb3NpbmcgXS4KKwkgICAgICAod2hlbiAobG9va2luZy1h dCAiXFxeP1xcXSIpCisJICAgICAgICA7OyBOb24tc3BlY2lhbCByaWdodCBicmFja2V0LCBz ZXQgc3ltYm9sIHN5bnRheC4KKwkgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkK KwkgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAoMS0gKHBvaW50KSkgKHBvaW50KSAnc3lu dGF4LXRhYmxlICcoMykpKSkpCisJICAgKChtYXRjaC1iZWdpbm5pbmcgNykJCQk7IF0KKyAg ICAgICAgICAgIChpZiBpbi1jaGFyLWFsdC1wCisgICAgICAgICAgICAgICAgKHNldHEgaW4t Y2hhci1hbHQtcCBuaWwpCisgICAgICAgICAgICAgIDs7IFRoZSBvbmx5IHdhcm5pbmcgd2Ug Y2FuIGVtaXQgYmVmb3JlIFJFVC4KKwkgICAgICAobWVzc2FnZSAiTm90IGluIGNoYXJhY3Rl ciBhbHRlcm5hdGl2ZSIpKSkKKwkgICAoKG1hdGNoLWJlZ2lubmluZyA4KSAgICAgICAgICAg ICAgICAgOyAoKXt9CisJICAgIDs7IFBsYWluIHBhcmVudGhlc2lzIG9yIGJyYWNlLCBzZXQg c3ltYm9sIHN5bnRheC4KKwkgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSAocG9pbnQpKSAo cG9pbnQpICdzeW50YXgtdGFibGUgJygzKSkpKSkpKSkpCisKKzs7IFRoZSBmb2xsb3dpbmcg dmFyaWFibGUgaXMgc2V0IGJ5ICdtaW5pYnVmZmVyLS1yZWdleHAtYmVmb3JlLWNoYW5nZScu Cis7OyBJZiBub24tbmlsLCBlaXRoZXIgJ21pbmlidWZmZXItLXJlZ2V4cC1wb3N0LXNlbGYt aW5zZXJ0JyBvcgorOzsgJ21pbmlidWZmZXItLXJlZ2V4cC1hZnRlci1jaGFuZ2UnLCB3aGlj aGV2ZXIgY29tZXMgbmV4dCwgd2lsbAorOzsgcHJvcGVydGl6ZSB0aGUgbWluaWJ1ZmZlciB2 aWEgJ21pbmlidWZmZXItLXJlZ2V4cC1wcm9wZXJ0aXplJyBhbmQKKzs7IHJlc2V0IHRoaXMg dmFyaWFibGUgdG8gbmlsLCBhdm9pZGluZyB0byBwcm9wZXJ0aXplIHRoZSBidWZmZXIgdHdp Y2UuCisoZGVmdmFyLWxvY2FsIG1pbmlidWZmZXItLXJlZ2V4cC1wcmltZWQgbmlsCisgICJO b24tbmlsIHdoZW4gbWluaWJ1ZmZlciBjb250ZW50cyBjaGFuZ2UuIikKKworKGRlZnVuIG1p bmlidWZmZXItLXJlZ2V4cC1iZWZvcmUtY2hhbmdlIChfYSBfYikKKyAgImBtaW5pYnVmZmVy LXJlZ2V4cC1tb2RlJyBmdW5jdGlvbiBvbiBgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnLiIK KyAgKHNldHEgbWluaWJ1ZmZlci0tcmVnZXhwLXByaW1lZCB0KSkKKworKGRlZnVuIG1pbmli dWZmZXItLXJlZ2V4cC1hZnRlci1jaGFuZ2UgKF9hIF9iIF9jKQorICAiYG1pbmlidWZmZXIt cmVnZXhwLW1vZGUnIGZ1bmN0aW9uIG9uIGBhZnRlci1jaGFuZ2UtZnVuY3Rpb25zJy4iCisg ICh3aGVuIG1pbmlidWZmZXItLXJlZ2V4cC1wcmltZWQKKyAgICAoc2V0cSBtaW5pYnVmZmVy LS1yZWdleHAtcHJpbWVkIG5pbCkKKyAgICAobWluaWJ1ZmZlci0tcmVnZXhwLXByb3BlcnRp emUpKSkKKworKGRlZnVuIG1pbmlidWZmZXItLXJlZ2V4cC1wb3N0LXNlbGYtaW5zZXJ0ICgp CisgICJgbWluaWJ1ZmZlci1yZWdleHAtbW9kZScgZnVuY3Rpb24gb24gYHBvc3Qtc2VsZi1p bnNlcnQtaG9vaycuIgorICAod2hlbiBtaW5pYnVmZmVyLS1yZWdleHAtcHJpbWVkCisgICAg KHNldHEgbWluaWJ1ZmZlci0tcmVnZXhwLXByaW1lZCBuaWwpCisgICAgKG1pbmlidWZmZXIt LXJlZ2V4cC1wcm9wZXJ0aXplKSkpCisKKyhkZWZ2YXIgbWluaWJ1ZmZlci0tcmVnZXhwLXBy b21wdC1yZWdleHAKKyAgIlxcKD86UG9zaXggc2VhcmNoXFx8UkUgc2VhcmNoXFx8U2VhcmNo IGZvciByZWdleHBcXHxRdWVyeSByZXBsYWNlIHJlZ2V4cFxcKSIKKyAgIlJlZ3VsYXIgZXhw cmVzc2lvbiBjb21waWxlZCBmcm9tIGBtaW5pYnVmZmVyLXJlZ2V4cC1wcm9tcHRzJy4iKQor CisoZGVmY3VzdG9tIG1pbmlidWZmZXItcmVnZXhwLXByb21wdHMKKyAgJygiUG9zaXggc2Vh cmNoIiAiUkUgc2VhcmNoIiAiU2VhcmNoIGZvciByZWdleHAiICJRdWVyeSByZXBsYWNlIHJl Z2V4cCIpCisgICJMaXN0IG9mIG1pbmlidWZmZXIgcHJvbXB0cyB0aGF0IHRyaWdnZXIgYG1p bmlidWZmZXItcmVnZXhwLW1vZGUnLgorYG1pbmlidWZmZXItcmVnZXhwLW1vZGUnIGlzIGFj dGl2YXRlZCBpbiBhIHNwZWNpZmljIG1pbmlidWZmZXIKK2ludGVyYWN0aW9uIGlmIGFuZCBv bmx5IGlmIGEgcHJvbXB0IGluIHRoaXMgbGlzdCBhcHBlYXJzIGF0IHRoZQorYmVnaW5uaW5n IG9mIHRoZSBtaW5pYnVmZmVyLiIKKyAgOnR5cGUgJyhyZXBlYXQgKHN0cmluZyA6dGFnICJQ cm9tcHQiKSkKKyAgOnNldCAobGFtYmRhIChzeW0gdmFsKQorCSAoc2V0LWRlZmF1bHQgc3lt IHZhbCkKKyAgICAgICAgICh3aGVuIHZhbAorICAgICAgICAgICAoc2V0cSBtaW5pYnVmZmVy LS1yZWdleHAtcHJvbXB0LXJlZ2V4cAorICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXCg/ OiIgKG1hcGNvbmNhdCAncmVnZXhwLXF1b3RlIHZhbCAiXFx8IikgIlxcKSIpKSkpCisgIDp2 ZXJzaW9uICIzMC4xIikKKworKGRlZnVuIG1pbmlidWZmZXItLXJlZ2V4cC1zZXR1cCAoKQor ICAiRnVuY3Rpb24gdG8gYWN0aXZhdGVgbWluaWJ1ZmZlci1yZWdleHAtbW9kZScgaW4gY3Vy cmVudCBidWZmZXIuCitSdW4gYnkgYG1pbmlidWZmZXItc2V0dXAtaG9vaycuIgorICAoaWYg KGFuZCBtaW5pYnVmZmVyLXJlZ2V4cC1tb2RlCisgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lv bgorICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAg KGxvb2tpbmctYXQgbWluaWJ1ZmZlci0tcmVnZXhwLXByb21wdC1yZWdleHApKSkKKyAgICAg IChwcm9nbgorICAgICAgICAoc2V0cS1sb2NhbCBwYXJzZS1zZXhwLWxvb2t1cC1wcm9wZXJ0 aWVzIHQpCisgICAgICAgIChhZGQtaG9vayAnYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMgIydt aW5pYnVmZmVyLS1yZWdleHAtYmVmb3JlLWNoYW5nZSBuaWwgdCkKKyAgICAgICAgKGFkZC1o b29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zICMnbWluaWJ1ZmZlci0tcmVnZXhwLWFmdGVy LWNoYW5nZSBuaWwgdCkKKyAgICAgICAgKGFkZC1ob29rICdwb3N0LXNlbGYtaW5zZXJ0LWhv b2sgIydtaW5pYnVmZmVyLS1yZWdleHAtcG9zdC1zZWxmLWluc2VydCBuaWwgdCkpCisgICAg OzsgTWFrZSBzdXJlLgorICAgIChtaW5pYnVmZmVyLS1yZWdleHAtZXhpdCkpKQorCisoZGVm dW4gbWluaWJ1ZmZlci0tcmVnZXhwLWV4aXQgKCkKKyAgIkZ1bmN0aW9uIHRvIGRlYWN0aXZh dGUgYG1pbmlidWZmZXItcmVnZXhwLW1vZGUnIGluIGN1cnJlbnQgYnVmZmVyLgorUnVuIGJ5 IGBtaW5pYnVmZmVyLWV4aXQtaG9vaycuIgorICAod2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9u cworICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgp ICcoc3ludGF4LXRhYmxlIG5pbCkpKQorICAoc2V0cS1sb2NhbCBwYXJzZS1zZXhwLWxvb2t1 cC1wcm9wZXJ0aWVzIG5pbCkKKyAgKHJlbW92ZS1ob29rICdiZWZvcmUtY2hhbmdlLWZ1bmN0 aW9ucyAjJ21pbmlidWZmZXItLXJlZ2V4cC1iZWZvcmUtY2hhbmdlIHQpCisgIChyZW1vdmUt aG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyAjJ21pbmlidWZmZXItLXJlZ2V4cC1hZnRl ci1jaGFuZ2UgdCkKKyAgKHJlbW92ZS1ob29rICdwb3N0LXNlbGYtaW5zZXJ0LWhvb2sgIydt aW5pYnVmZmVyLS1yZWdleHAtcG9zdC1zZWxmLWluc2VydCB0KSkKKworKGRlZmluZS1taW5v ci1tb2RlIG1pbmlidWZmZXItcmVnZXhwLW1vZGUKKyAgIk1pbm9yIG1vZGUgZm9yIGVkaXRp bmcgcmVndWxhciBleHByZXNzaW9ucyBpbiB0aGUgbWluaWJ1ZmZlci4KK0hpZ2hsaWdodCBw YXJlbnMgdmlhIGBzaG93LXBhcmVuLW1vZGUnIGFuZCBgYmxpbmstbWF0Y2hpbmctcGFyZW4n CitpbiBhIHVzZXItZnJpZW5kbHkgd2F5LCBhdm9pZCByZXBvcnRpbmcgYWxsZWdlZCBwYXJl biBtaXNtYXRjaGVzCithbmQgbWFrZSBzZXhwIG5hdmlnYXRpb24gbW9yZSBpbnR1aXRpdmUu CisKK1RoZSBsaXN0IG9mIHByb21wdHMgYWN0aXZhdGluZyB0aGlzIG1vZGUgaW4gc3BlY2lm aWMgbWluaWJ1ZmZlcgoraW50ZXJhY3Rpb25zIGlzIGN1c3RvbWl6YWJsZSB2aWEgYG1pbmli dWZmZXItcmVnZXhwLXByb21wdHMnLiIKKyAgOmdsb2JhbCB0CisgIDppbml0aWFsaXplICdj dXN0b20taW5pdGlhbGl6ZS1kZWxheQorICA6aW5pdC12YWx1ZSB0CisgIChpZiBtaW5pYnVm ZmVyLXJlZ2V4cC1tb2RlCisgICAgICAocHJvZ24KKyAgICAgICAgKGFkZC1ob29rICdtaW5p YnVmZmVyLXNldHVwLWhvb2sgIydtaW5pYnVmZmVyLS1yZWdleHAtc2V0dXApCisgICAgICAg IChhZGQtaG9vayAnbWluaWJ1ZmZlci1leGl0LWhvb2sgIydtaW5pYnVmZmVyLS1yZWdleHAt ZXhpdCkpCisgICAgOzsgQ2xlYW4gdXAgLSB3aHkgaXMgVm1pbmlidWZmZXJfbGlzdCBub3Qg YXZhaWxhYmxlIGluIExpc3A/CisgICAgKGRvbGlzdCAoYnVmZmVyIChidWZmZXItbGlzdCkp CisgICAgICAod2hlbiAoYW5kIChtaW5pYnVmZmVycCkKKyAgICAgICAgICAgICAgICAgcGFy c2Utc2V4cC1sb29rdXAtcHJvcGVydGllcworICAgICAgICAgICAgICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24K KyAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAg ICAgICAgICAgICAgICAobG9va2luZy1hdCBtaW5pYnVmZmVyLS1yZWdleHAtcHJvbXB0LXJl Z2V4cCkpKSkKKyAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCisgICAgICAg ICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKKyAgICAgICAgICAgIChyZW1vdmUtdGV4 dC1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgKHBvaW50LW1pbikgKHBvaW50LW1heCkgJyhz eW50YXgtdGFibGUgbmlsKSkpCisgICAgICAgICAgKHNldHEtbG9jYWwgcGFyc2Utc2V4cC1s b29rdXAtcHJvcGVydGllcyB0KSkpKQorICAgIChyZW1vdmUtaG9vayAnbWluaWJ1ZmZlci1z ZXR1cC1ob29rICMnbWluaWJ1ZmZlci0tcmVnZXhwLXNldHVwKQorICAgIChyZW1vdmUtaG9v ayAnbWluaWJ1ZmZlci1leGl0LWhvb2sgIydtaW5pYnVmZmVyLS1yZWdleHAtZXhpdCkpKQor CiAocHJvdmlkZSAnbWluaWJ1ZmZlcikKIAogOzs7IG1pbmlidWZmZXIuZWwgZW5kcyBoZXJl Cg== --------------gyH7eCTx760S7IBR0vtMdHSD Content-Type: text/plain; charset=UTF-8; name="NEWS.txt" Content-Disposition: attachment; filename="NEWS.txt" Content-Transfer-Encoding: base64 KysrCioqIE5ldyBnbG9iYWwgbWlub3IgbW9kZSAnbWluaWJ1ZmZlci1yZWdleHAtbW9kZScu ClRoaXMgaXMgYSBtaW5vciBtb2RlIGZvciBlZGl0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMg aW4gdGhlIG1pbmlidWZmZXIuCkl0IGhpZ2hsaWdodCBwYXJlbnMgdmlhIOKAmHNob3ctcGFy ZW4tbW9kZeKAmSBhbmQg4oCYYmxpbmstbWF0Y2hpbmctcGFyZW7igJkgaW4KYSB1c2VyLWZy aWVuZGx5IHdheSwgYXZvaWRzIHJlcG9ydGluZyBhbGxlZ2VkIHBhcmVuIG1pc21hdGNoZXMg YW5kIG1ha2VzCnNleHAgbmF2aWdhdGlvbiBtb3JlIGludHVpdGl2ZS4K --------------gyH7eCTx760S7IBR0vtMdHSD Content-Type: text/plain; charset=UTF-8; name="ChangeLog" Content-Disposition: attachment; filename="ChangeLog" Content-Transfer-Encoding: base64 TmV3IG1pbm9yIG1vZGUgJ21pbmlidWZmZXItcmVnZXhwLW1vZGUnIGZvciBlZGl0aW5nIHJl Z2V4cHMgaW4gbWluaWJ1ZmZlcgoKVGhpcyBoaWdobGlnaHRzIHBhcmVucyB2aWEgYHNob3ct cGFyZW4tbW9kZScgYW5kCmBibGluay1tYXRjaGluZy1wYXJlbicgaW4gYSB1c2VyLWZyaWVu ZGx5IHdheSwgYXZvaWRzIHJlcG9ydGluZwphbGxlZ2VkIHBhcmVuIG1pc21hdGNoZXMgYW5k IG1ha2VzIHNleHAgbmF2aWdhdGlvbiBtb3JlCmludHVpdGl2ZS4KCiogbGlzcC9taW5pYnVm ZmVyLmVsIChtaW5pYnVmZmVyLXJlZ2V4cC1tb2RlKQoobWluaWJ1ZmZlci0tcmVnZXhwLXBy aW1lZCwgbWluaWJ1ZmZlci0tcmVnZXhwLXByb21wdC1yZWdleHApOgpOZXcgdmFyaWFibGVz LgoobWluaWJ1ZmZlci0tcmVnZXhwLXByb3BlcnRpemUsIG1pbmlidWZmZXItLXJlZ2V4cC1w cmltZWQpCihtaW5pYnVmZmVyLS1yZWdleHAtYmVmb3JlLWNoYW5nZSkKKG1pbmlidWZmZXIt LXJlZ2V4cC1hZnRlci1jaGFuZ2UpCihtaW5pYnVmZmVyLS1yZWdleHAtcG9zdC1zZWxmLWlu c2VydCwgbWluaWJ1ZmZlci0tcmVnZXhwLXNldHVwKQoobWluaWJ1ZmZlci0tcmVnZXhwLWV4 aXQsIG1pbmlidWZmZXItcmVnZXhwLW1vZGUpOiBOZXcgZnVuY3Rpb25zLgoobWluaWJ1ZmZl ci1yZWdleHAtcHJvbXB0cyk6IE5ldyBvcHRpb24uCg== --------------gyH7eCTx760S7IBR0vtMdHSD-- From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 07 04:58:16 2023 Received: (at 50766-done) by debbugs.gnu.org; 7 Sep 2023 08:58:16 +0000 Received: from localhost ([127.0.0.1]:38550 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qeAq8-0000Q1-Gz for submit@debbugs.gnu.org; Thu, 07 Sep 2023 04:58:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51918) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qeAq3-0000Pi-TP for 50766-done@debbugs.gnu.org; Thu, 07 Sep 2023 04:58:15 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qeApw-0008EG-H0; Thu, 07 Sep 2023 04:58:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ABlpLegdQxK0Ph2l0ps/Hmb+vs/frW/eywyYAMQoRLc=; b=FZh9Gjz9uJVN 1GoTD2rgCSlf3xmTWDdYlTxhq5beiDrBSrdKab+V8t5gqqutPALiykmTJwvpRvQ5y8aCAPKZVOi6y bai5DJ+SpjiRIvcsiUFHM/igIADuiSut+D8E+cIVXESFqKQwoFJDZWpzNBaKKWRTdZZWJszrnOdJF wo06t0YxnevYxpYC5oOfI1N7c49w4Doaz+agfuMly0pOoDjiINLaerzsfLAWLBAT3ugtGeRlnMvKR adwi+9SEcE57N730bexQqkY5cvI4kh9eTwLYfdpTBqr2f0u22j+07A8o9fObIyQcz7KuuIvRUUtME pMX/ull4k7n+qHK4hQBVmA==; Date: Thu, 07 Sep 2023 11:57:51 +0300 Message-Id: <83v8cmz7g0.fsf@gnu.org> From: Eli Zaretskii To: martin rudalics In-Reply-To: (message from martin rudalics on Wed, 6 Sep 2023 10:09:49 +0200) Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50766-done Cc: laszlomail@protonmail.com, larsi@gnus.org, 50766-done@debbugs.gnu.org, stefankangas@gmail.com 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 (---) > Cc: ndame , 50766@debbugs.gnu.org > Date: Wed, 6 Sep 2023 10:09:49 +0200 > From: martin rudalics > > It did not apply to current master. I now built master for the first > time this year, rewrote the patch so it applies and added a short text > to the Elisp manual. I also enclose a NEWS and a ChangeLog entry. > Please tell me if something is missing and install however you see fit. Thanks, installed on master with a few minor docs changes, and closing the bug. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 07 05:29:39 2023 Received: (at 50766-done) by debbugs.gnu.org; 7 Sep 2023 09:29:39 +0000 Received: from localhost ([127.0.0.1]:38616 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qeBKU-0003tR-VB for submit@debbugs.gnu.org; Thu, 07 Sep 2023 05:29:39 -0400 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]:49234) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qeBKS-0003tE-CN for 50766-done@debbugs.gnu.org; Thu, 07 Sep 2023 05:29:37 -0400 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-501cba1ec0aso1145987e87.2 for <50766-done@debbugs.gnu.org>; Thu, 07 Sep 2023 02:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1694078968; x=1694683768; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=kTpWJmbpX6MCay4zcM4WVi4+JdtmxU1++UvjbpHFWKk=; b=AOQA08zUGbI8gK6npG48vpjCf/jxUYaIleaKUXfSOkpJivslBSzKu1SAXfoH0LbQ3X r2+FQHkcnxf8CweUI+QynmBOBJ4kBkiMQp6p9sRTajPBqsm+jZXS9WIKGKjv0zIAZY9m tvn7Qzy82GDOpSjdkJjj8ttyv9sFxSnxi5Nuq3gUcZsFGHkvcevKZ4w7lvQu/GZfNC14 v/RR+fcXwamPR7bc4/xCJYUiAAulp8is5107OHLZKUKSAMH4s9tYpqZVtcjxg0ZHzzQ0 JvVKDaFyo8q0wD7dt59OLPWFPsqgYe4QlhldVpFzvUe5Y+Aek6gZwqQB0PSaBU13vqCZ IsNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1694078968; x=1694683768; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kTpWJmbpX6MCay4zcM4WVi4+JdtmxU1++UvjbpHFWKk=; b=bGQGnj2/aQHqmKiT/xNIUKCMEwvbKmW6hG4exZVQBF6a+5sJHjSw2gHZmttMkLuTLU 8rvoFSIB2wHK422Ey9JxX9cP/rGPlXQK1KojNY+BYz/nZbxHDPee1Fkft9KWZiBRfKV6 hnA5XpfVkYi2OBcEXcogx6f9InsvY926ye80O0x+9wzA4PwkyjntU5VlG4EXFZ03u334 gmOrBh2ROfguxQv/Q9xMmyKd2Y5X96gL7HYdzRNEZ77Pwttg/7CdYNHIUYPzzcMv9x0N zgAGRWHR5pAEuImohHPX+QtMZ1CGXGzAfd9qC3kjOhxdKyujE8NyCNj+Of4unu64idj+ jRpQ== X-Gm-Message-State: AOJu0YxZWQcgvg2MoBycRIhYwPMtEIm/5joIhSarm7kn0sTLsy73TC5W Xr/KyFJjRU6QxUSV98kU9cc3yUgdUBzValxIT5s= X-Google-Smtp-Source: AGHT+IGjGby8EKjSQraJw7AXjUjobHScBfwQePZmfkHSqsWsYvFGbtH4DCRNnn7kD+ZY797WHC8g6dyKlcsUHFPm3Z8= X-Received: by 2002:ac2:4ec3:0:b0:500:b0e8:a899 with SMTP id p3-20020ac24ec3000000b00500b0e8a899mr4296652lfr.30.1694078968078; Thu, 07 Sep 2023 02:29:28 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 7 Sep 2023 02:29:27 -0700 From: Stefan Kangas In-Reply-To: <83v8cmz7g0.fsf@gnu.org> References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <87bl4jxacl.fsf@gnus.org> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> <83v8cmz7g0.fsf@gnu.org> MIME-Version: 1.0 Date: Thu, 7 Sep 2023 02:29:27 -0700 Message-ID: Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted To: Eli Zaretskii , martin rudalics Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50766-done Cc: laszlomail@protonmail.com, larsi@gnus.org, 50766-done@debbugs.gnu.org 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 (-) Eli Zaretskii writes: > Thanks, installed on master with a few minor docs changes, and closing > the bug. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 07 14:12:21 2023 Received: (at 50766-done) by debbugs.gnu.org; 7 Sep 2023 18:12:21 +0000 Received: from localhost ([127.0.0.1]:41384 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qeJUL-0006QF-0j for submit@debbugs.gnu.org; Thu, 07 Sep 2023 14:12:21 -0400 Received: from mout.gmx.net ([212.227.15.15]:56145) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qeJUG-0006Px-Ht for 50766-done@debbugs.gnu.org; Thu, 07 Sep 2023 14:12:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1694110326; x=1694715126; i=rudalics@gmx.at; bh=FUj6EGVX1ZzlucOSy/q4fii403SdBsyCtXZNsZduP74=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=NsPjrwxvnr3zDIPKFfsM+3eObqM3vdM0dJLEvrpDMrqL9D7yLAaY4dKNxfUoMEgv8ZZteiH zpoW6laq+j81QcnD3qiWZxAz90fnkNWTSfMXggIImRlOd+Yf1qLTFyVnZ+pstxzWARlROi8w/ Ja9RVG3+tr73e1rwpr+5dulKBkkUHAlRVa4dPWdBwVVDWsHXpi47Vi193QcE08BpZ1FfcLZ65 Do7RzErbC7qYUe1QkYTFjbqjiOXX6Bw2w7xWrBIeZqsPjV9TTLYZNdFiCBLeIPExjwluKgfmP iI7z3bT1ZfWJrxUcgl+RIF99x68oBlVD0EnGgEYxo1XajS7eXmUQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.1.100] ([212.95.5.66]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mo6v3-1ppbW11urD-00pe8g; Thu, 07 Sep 2023 20:12:06 +0200 Message-ID: Date: Thu, 7 Sep 2023 20:12:05 +0200 MIME-Version: 1.0 Subject: Re: bug#50766: Regexp paren pairs in query-replace-regexp prompt should be highlighted Content-Language: en-US To: Eli Zaretskii References: <1LWmgMt-iOZcz0k2N5IVTqgDu922CLEd8GATVBsqdQfVeBzIGEaVuORC9k0SXORQDkpqc8BO3zxOPFbQeMMhNHQmOvcvIOpOpoWL8CAVUq8=@protonmail.com> <877df5tqyj.fsf@gnus.org> <87h7e5gtk0.fsf@gnus.org> <87ilyhw6si.fsf@gnus.org> <87k0ivvlyz.fsf@gnus.org> <2a200c3a-1901-fda5-2423-b04eab035347@gmx.at> <7f6c056c-805a-34a8-e432-72320670b472@gmx.at> <874jxzb24h.fsf@gnus.org> <87mtb7oiwe.fsf@gnus.org> <347d3a86-6f3f-0640-09c5-c8d2eb69b27b@gmx.at> <83v8cmz7g0.fsf@gnu.org> From: martin rudalics In-Reply-To: <83v8cmz7g0.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:7fhZbo6kzA1szqPN1u4T2m4OlTNu1k4I3ussbtt97WWcQM3FGpo nvU6nBYWGG+HYJXMgHM7J5oIKM/Lx4hOz33RzvRm3gi6+miiLye0RH6+aW9NxikwmCq0nmW VW2OhF/+tHzaPpNKJMvXt5tCGtsx7Y3GV2W9a2YzbLv5P+j1e62c7Gxc7Qo8vk+DkFTXq9M SD3V0tEeCbBicoDTVd4uQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ZZ56ub0ikhk=;p9GCrv8tKzaUYRZNnQHOsWgzLVb k/eea9nhC0Onqiq6LoAa3QcO6Xhc9phVvYCQqGift0WCFRCP8Ekeq4QwCCpkUldBiS6XVbFT+ JTkxkpXHp7NKX65pwCHzv6fj3rp5LltX8S+krvnSg6r5E8rPV98DqAWu85WjNwxB/4yjw2XOo v7vICBkfj1Z8vglrl9fH7eb7cdFAvTfvv/bI3Yf+RikifYkgTT2lucuN9rHJMbS1cm583ONHJ tY78+efwMifODFUqozeZcCuOyT7mEj1cRXQsaE8icYXO/xzuo7qxAKkolIP9oqcKaUH5PjsAD /eG1bVgytcozuHsru8Hya1hDd2hr4bozY5ftN0pcdvKWXK9FkBC75RTE+GSXPR+8on4czrI86 PwcghUMjC/viuAdaDdo7pGig+bWztPAAZM7eBRcPyQoPDGjVMSqYbm3uOHVYynEtomx4A+rh4 55kq/VciK+/GmYY4iBRXYXElbYHm2raEJxHxWgnMoIAaSG7hISE1jw46LkzqOyjt/yUOLDZu/ fv6BANMztxVCbEbgIUffgz0Utq0F8CRToNVH7OBM52VoTrQ8/DFxPfwKdASJFuuStmROVU/xa Fh54o0hRRyCWmOvO9mVdGx7tHTMaN4zVr5pwsNbpUbsflClF7czP9WEKN00fdgX8Y0Z6hv1Nz hqNqd34UZv+kUgfJ6l7pmN+bqhYFu87rKPuaZlqAI1pp3u1Go01wDp25pm2viphmpWLXVXQP4 B63CradbhssB7RMr4533y3ZebTcK2pzpshaglKq1QtmLOOt+IRTk5hZQY8yH9AthL+KwNWcAg k71jDZS9klycBmLKhs+zMeMaRPxac52xfw1dX3j+3Z3GM97aPD0Q5kuUD2k2KRBhhrkLCqbrW j+s940/vNHzRyNKX+dV2A565QP1sKMVpYQrH5bie0GKuPsXP3El+rxvc3MEqvFgJB408QzEaK uxfzYT1tNG7Fq6YwRe5lulOdELQ= X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Thanks, installed on master with a few minor docs changes, and closing > the bug. Thanks for the fixes. martin Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.15 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.15 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [212.95.5.66 listed in zen.spamhaus.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Debbugs-Envelope-To: 50766-done Cc: laszlomail@protonmail.com, larsi@gnus.org, 50766-done@debbugs.gnu.org, stefankangas@gmail.com 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.9 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Thanks, installed on master with a few minor docs changes, and closing > the bug. Thanks for the fixes. martin Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.15 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [212.95.5.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.15 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager > Thanks, installed on master with a few minor docs changes, and closing > the bug. Thanks for the fixes. martin From unknown Wed Sep 10 10:35:33 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 06 Oct 2023 11:24:13 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator