Stefan Kangas <stefankangas@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 76261) by debbugs.gnu.org; 15 Feb 2025 06:51:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 15 01:51:28 2025 Received: from localhost ([127.0.0.1]:53144 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tjC1P-0001Bl-Nq for submit <at> debbugs.gnu.org; Sat, 15 Feb 2025 01:51:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33764) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <tsdh@HIDDEN>) id 1tjC1K-0001BM-2F for 76261 <at> debbugs.gnu.org; Sat, 15 Feb 2025 01:51:25 -0500 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 <tsdh@HIDDEN>) id 1tjC1E-0000sS-AG; Sat, 15 Feb 2025 01:51:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=iSdmOPGY0bgjWmiFlqkQOIvuXGCgKwYp6lU2WLPvNLg=; b=i4pfRkZ9S4kdGwmYfdVk f0LixPOIx/9Op5G8fnSPjbLNTUO5uT0JSs32xIEhOXxojEtGoXIUxzVVttqQ/tyTDdvouuT8rC8+O wH7p7G1ksj4uGL21USr8JjMzUNxkymTAE6SJYowD46TZ3W0BixZYuIl4aiOSQAXvQTDprgI4c2qMp VjUwrHObBi4VMXDAu9CUBwpy+kxyNtBLe53nbi8XDTg59BFVccKe1iQB+81Iv74zWuKHdxGN4dr5n 7h2w/QU8OAkMAsqiy6YIQDFHjXj9ygkRJgf4l781UuRc6vETZBBZjj2MJM9bPnOnfbN8Y6P6Lm4yp Ck+zh1oZvBduOA==; X-ME-Sender: <xms:YjmwZ82B46HwQ_NcATxFBv-losTrdkMR407XNSyqBqz2EfQtQ5ghzA> <xme:YjmwZ3GObgvajC4cPddbTbQfur7rn6-XiITLCEd6A7uoD8IipjuUdz25I9bzcJrUf oKHKJIVeYXq2Q> X-ME-Received: <xmr:YjmwZ06EmHd4yAdtMpPmnla7E-ekxt-Wdh2roEWwkhZFa8EaFiLnl1oYGcg9TTwSujilC5FjHmR6HR6oxdWTh81e8XpzTP5T> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdehudekhecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhgffffkgggtsehttdertddtredt necuhfhrohhmpefvrghsshhilhhoucfjohhrnhcuoehtshguhhesghhnuhdrohhrgheqne cuggftrfgrthhtvghrnhepieefhefhgfelledulefgtefhvedvhfdvleekkeetgeetiedt tddtleeufedtgeevnecuffhomhgrihhnpehsrhdrhhhtnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhrnhdomhgvshhmthhprghuthhh phgvrhhsohhnrghlihhthidqkeeijeefkeejkeegqdeifeehvdelkedqthhsughhpeepgh hnuhdrohhrghesfhgrshhtmhgrihhlrdhfmhdpnhgspghrtghpthhtohepvddpmhhouggv pehsmhhtphhouhhtpdhrtghpthhtohepjeeivdeiudesuggvsggsuhhgshdrghhnuhdroh hrghdprhgtphhtthhopehphhhilhhiphhksehpohhsthgvohdrnhgvth X-ME-Proxy: <xmx:YjmwZ13VmdNczm3EPzStKgqT4HLMCFvrSFx0I9PZox_oc0x9b4LMmw> <xmx:YzmwZ_EqMeIM2iCGpL2KTxsTFOPH3H2lHJR_Hr04Qss9NuiReLE7Zw> <xmx:YzmwZ-9qlpB3nRZbNDb-sP3itScGBkvfLVtDFTa-HDttVPKyE9QDLA> <xmx:YzmwZ0nTD_0P6kPFAQk3kevtPAsjXRQCDcDS1fla3fq_qHmnEjva9A> <xmx:YzmwZ_FYjRVyLKCGDsRSiOAJAmpQTDD8DoKbn-95wjP9b5KoTjyxBPsV> Feedback-ID: ib2b94485:Fastmail From: Tassilo Horn <tsdh@HIDDEN> To: Philip Kaludercic <philipk@HIDDEN> Subject: Re: bug#76261: [PATCH] Add a mentions buffer feature to rcirc In-Reply-To: <87ldu85ddf.fsf@HIDDEN> References: <87o6z66q4j.fsf@HIDDEN> <874j0w3j57.fsf@HIDDEN> <87zfio1v2r.fsf@HIDDEN> <87ed0046n3.fsf@HIDDEN> <87ldu85ddf.fsf@HIDDEN> User-Agent: mu4e 1.12.8; emacs 31.0.50 Date: Sat, 15 Feb 2025 07:51:11 +0100 Message-ID: <874j0vbt0g.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76261 Cc: 76261 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Philip Kaludercic <philipk@HIDDEN> writes: >> I'll stop sending patches and instead pushed my >> feature/rcirc-mentions branch to https://git.sr.ht/~tsdh/emacs where >> I can keep fixing issues when I find one. I also added another >> commit adding the texinfo docs, i.e., a new section in the rcirc >> manual. >> >> I'll keep it rebased onto master. > > Can you ping me when I should check the state of the branch? Whenever you want. I think I'm done. :-) Thanks, Tassilo
bug-gnu-emacs@HIDDEN
:bug#76261
; Package emacs
.
Full text available.Received: (at 76261) by debbugs.gnu.org; 14 Feb 2025 23:13:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 14 18:13:31 2025 Received: from localhost ([127.0.0.1]:52253 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tj4sF-0000kE-1l for submit <at> debbugs.gnu.org; Fri, 14 Feb 2025 18:13:31 -0500 Received: from mout02.posteo.de ([185.67.36.66]:35871) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <philipk@HIDDEN>) id 1tj4sA-0000jv-0E for 76261 <at> debbugs.gnu.org; Fri, 14 Feb 2025 18:13:29 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 26D41240101 for <76261 <at> debbugs.gnu.org>; Sat, 15 Feb 2025 00:13:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1739574799; bh=xSngoO2FVuO667hIknZONr/XH4JGvX32EFR+vobyUI0=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=q501ifF4Rcv6qiUOjgaQ508744C66myO5N4xDo+MqIJZ5asyxyhEu8SiMTePWcEQ5 QZ1ocG6tqBl/xPJNAGNsXtLeyM0XmTkjnjdjG2Jqli8NJtul8MWuALtY1FrDzxTnI3 kSFHnYcGLHntlQ2hYCrL2YFVJqfNWCCMoPOwNSxQHkz3dMgqgQP2lV82yEfNebPVQa 6WA11XrVu3/tTP5zqjbJ+wsEer8XfyriRV93CE8YeVjq9dW/T7Of2HDiI0oyembC57 MzASQYbmKxV8q74NYMQ9fm0UVBYTkfbMDWViR66S+3dPQ2uyWtnLzkCe3GHE/ONY15 qKz0CdErshHDA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4YvnsT2TSNz6tm4; Sat, 15 Feb 2025 00:13:17 +0100 (CET) From: Philip Kaludercic <philipk@HIDDEN> To: Tassilo Horn <tsdh@HIDDEN> Subject: Re: bug#76261: [PATCH] Add a mentions buffer feature to rcirc In-Reply-To: <87ed0046n3.fsf@HIDDEN> References: <87o6z66q4j.fsf@HIDDEN> <874j0w3j57.fsf@HIDDEN> <87zfio1v2r.fsf@HIDDEN> <87ed0046n3.fsf@HIDDEN> Autocrypt: addr=philipk@HIDDEN; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Fri, 14 Feb 2025 23:13:16 +0000 Message-ID: <87ldu85ddf.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76261 Cc: 76261 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Tassilo Horn <tsdh@HIDDEN> writes: > Tassilo Horn <tsdh@HIDDEN> writes: > >> And here's a third version which adds a separate major mode for the >> mentions buffer including movement commands to TAB (and C-TAB) to the >> next (previous) mention link. > > Obviously, there was a bug in there. I'll stop sending patches and > instead pushed my feature/rcirc-mentions branch to > https://git.sr.ht/~tsdh/emacs where I can keep fixing issues when I find > one. I also added another commit adding the texinfo docs, i.e., a new > section in the rcirc manual. > > I'll keep it rebased onto master. Can you ping me when I should check the state of the branch? > Bye, > Tassilo
bug-gnu-emacs@HIDDEN
:bug#76261
; Package emacs
.
Full text available.Received: (at 76261) by debbugs.gnu.org; 14 Feb 2025 20:24:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 14 15:24:15 2025 Received: from localhost ([127.0.0.1]:51988 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tj2ER-0006Sz-Cs for submit <at> debbugs.gnu.org; Fri, 14 Feb 2025 15:24:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47418) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <tsdh@HIDDEN>) id 1tj2EN-0006Sh-Pf for 76261 <at> debbugs.gnu.org; Fri, 14 Feb 2025 15:24:12 -0500 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 <tsdh@HIDDEN>) id 1tj2EI-00011O-CP; Fri, 14 Feb 2025 15:24:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=r6pRF+DmCVdh/4FAMMobFZCDgWwdTwXK/Q5EJhcJvsE=; b=jEpZQ/BCIrh/qL4Bp/5b 2rccSp+iLTZCVXjHmaPa80Vkar8/24fp6tq5QR2gm8rRetpSStfMu14NHtyWgxr/cxMXcVmPoADpB Ko84YR+iWTD97IqG7PY5H4Zua9EiTy5fTvqhIaKCDP/Y8B2Jfw6Sceb7CmppS1RvTsYuWR3YyI0TM /wAR4RLfgdR40n7fssujtgHCeBuF8GgohTWRhYZjmEwLzjK4xh9fbOOTNxTOFkITRDwJQiWWmR7sP 1m+9zAPLLQnnckoeI7JHd/nyRfVunWeK0t9DJouj2S9rAf09oXyeKedWRJAXptJekvXabq5/dZ3Za RWTME62oXnSWag==; X-ME-Sender: <xms:Y6avZznWC7FF82OQiJ3v17YEx3O_kYL9gdyJhSin29oaYawTDH8hmg> <xme:Y6avZ22IAzfuxU53ArB6ciKgPoWBJ6aWvIgGqxZ3O_iBNKxFkNrRYlw1x8ipWzsxH uTJz6BhMUCokw> X-ME-Received: <xmr:Y6avZ5pc79ral22X7ZAF1bNuR3Agw216biDAJd1PH2b6j7ihUp6akYcB6RTUtciid84CPldMSYGKQ4wMz3u_FX0MnnBtQVKO> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdehtdeitdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhffkfgfgggtsehttdertddtredt necuhfhrohhmpefvrghsshhilhhoucfjohhrnhcuoehtshguhhesghhnuhdrohhrgheqne cuggftrfgrthhtvghrnhepheeugeetgeevieeijefgjeeiieelfeeiieduveeufeevvdef geehffdvvdfgfeevnecuffhomhgrihhnpehsrhdrhhhtnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhrnhdomhgvshhmthhprghuthhh phgvrhhsohhnrghlihhthidqkeeijeefkeejkeegqdeifeehvdelkedqthhsughhpeepgh hnuhdrohhrghesfhgrshhtmhgrihhlrdhfmhdpnhgspghrtghpthhtohepvddpmhhouggv pehsmhhtphhouhhtpdhrtghpthhtohepphhhihhlihhpkhesphhoshhtvghordhnvghtpd hrtghpthhtohepjeeivdeiudesuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:Y6avZ7k1-HNG13OCnkpzl2mO0K8-NrfYsXPGNtf9x8PIeQ3EqtTf6A> <xmx:Y6avZx3awpHwKFKPfKatzHV3NMWKU6dM-OOQOFpdqUF4wBFIj2N53w> <xmx:Y6avZ6uIj9kauE9iSL7dx9YrrAvn1trecXVVaaIOYMGUMDEl-DiuaQ> <xmx:Y6avZ1VkKFFgnwrfpR6YfXO6sRSI3GET2xhaTS8IS8qlFR-YzT0nYQ> <xmx:Y6avZw3jYxWuUU42uruBqSQBK89OBbOaV4bNp9Au93_gsMsrVvVLbOxx> Feedback-ID: ib2b94485:Fastmail From: Tassilo Horn <tsdh@HIDDEN> To: 76261 <at> debbugs.gnu.org Subject: Re: bug#76261: [PATCH] Add a mentions buffer feature to rcirc In-Reply-To: <87zfio1v2r.fsf@HIDDEN> References: <87o6z66q4j.fsf@HIDDEN> <874j0w3j57.fsf@HIDDEN> <87zfio1v2r.fsf@HIDDEN> Date: Fri, 14 Feb 2025 21:24:00 +0100 Message-ID: <87ed0046n3.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76261 Cc: Philip Kaludercic <philipk@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Tassilo Horn <tsdh@HIDDEN> writes: > And here's a third version which adds a separate major mode for the > mentions buffer including movement commands to TAB (and C-TAB) to the > next (previous) mention link. Obviously, there was a bug in there. I'll stop sending patches and instead pushed my feature/rcirc-mentions branch to https://git.sr.ht/~tsdh/emacs where I can keep fixing issues when I find one. I also added another commit adding the texinfo docs, i.e., a new section in the rcirc manual. I'll keep it rebased onto master. Bye, Tassilo
bug-gnu-emacs@HIDDEN
:bug#76261
; Package emacs
.
Full text available.Received: (at 76261) by debbugs.gnu.org; 14 Feb 2025 14:04:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 14 09:04:40 2025 Received: from localhost ([127.0.0.1]:47696 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tiwJ6-0003BI-9R for submit <at> debbugs.gnu.org; Fri, 14 Feb 2025 09:04:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57342) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <tsdh@HIDDEN>) id 1tiwJ3-0003B3-Ss for 76261 <at> debbugs.gnu.org; Fri, 14 Feb 2025 09:04:38 -0500 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 <tsdh@HIDDEN>) id 1tiwIy-0002hb-BD; Fri, 14 Feb 2025 09:04:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=B2o0dlcetTZ71P1riyW1pn+oL1jMMJj2XTZFpg6rheg=; b=XB25at+HxWZR6Jdrn4rZ XqYT3DoY54UiqWKoG7nxjankL5+jY8c7cmgUs9teICKDPcTjK27NhGJ+WXRGNP/6KFuXJ1DGQ4VPa L3JP7CmhJCK3GWTAJTyFFqXzacaKq5vdy4pGk+XoTpyMwlVtHZ2LWtkobYHJbBqfokHn8wLIzaKNP kNTSYHWnz3wRNzQarHMMugI9NOZz1os5ejjY8EmsNAt2H3ji4DmX9nWXwa7Dj9gRjnwswuorZRLKo 4EH0noRjNBjbbSb+P4Kx5wMD9YjfO5fU/EX/MFbhhA4poHV4Qjo8jAMWJ7f7BR4RIkvy6jR4vTHTo v6GGHWyVEbsGfA==; X-ME-Sender: <xms:b02vZ9ZPqS35VT6W-xnKnDhaJHTcwg0Fy_OfKfr1oJEib0MxUmh4xg> <xme:b02vZ0ZeDwToo9bNtZEoLkZdrwFQjdqRsbG8f1sjEPpH8Qrqpa1VcQOT75nhBn0kr 4SAmHmj_KESdw> X-ME-Received: <xmr:b02vZ_9fJh20g7xl-4BPH7_z7dOwHJw6A7w2llLtOp0LYdxekHvyXySuveXNvxmfRXMm0apcuaYnZDSDXL2NjZeagwLqapzJ> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdegleekhecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhffkfgfgggtsehmtderredtredt necuhfhrohhmpefvrghsshhilhhoucfjohhrnhcuoehtshguhhesghhnuhdrohhrgheqne cuggftrfgrthhtvghrnhepgeefheffgfektdduhedtheekieejieehfedtfffftddvleel geekhefhgffgvddunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh hfrhhomhepthhhohhrnhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqkeei jeefkeejkeegqdeifeehvdelkedqthhsughhpeepghhnuhdrohhrghesfhgrshhtmhgrih hlrdhfmhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthht ohepphhhihhlihhpkhesphhoshhtvghordhnvghtpdhrtghpthhtohepjeeivdeiudesug gvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:b02vZ7pljckGlibetbzkAC142DAipNEnTirdjJndtuJIbvHDnVYKcA> <xmx:b02vZ4owVSppU_pvEgcMJOZB3SYl_WoQZDQCfio76X2b5cqiVgs9hg> <xmx:b02vZxRDAHw9aiAMP3Y0JYF3KyJnfQyFMKXnxlsYQVn0xfdHKukIlg> <xmx:b02vZwoZbqmtVqP_51o4wnOWOZGpDEx1ARdzbNLFUILpStTZRoiKow> <xmx:b02vZx5ySNjayeKihDiUiGOof8dyZmrXS8NaEgEuucbJuS2z_OmKwj53> Feedback-ID: ib2b94485:Fastmail From: Tassilo Horn <tsdh@HIDDEN> To: 76261 <at> debbugs.gnu.org Subject: Re: bug#76261: [PATCH] Add a mentions buffer feature to rcirc In-Reply-To: <874j0w3j57.fsf@HIDDEN> References: <87o6z66q4j.fsf@HIDDEN> <874j0w3j57.fsf@HIDDEN> Date: Fri, 14 Feb 2025 15:04:28 +0100 Message-ID: <87zfio1v2r.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76261 Cc: Philip Kaludercic <philipk@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Tassilo Horn <tsdh@HIDDEN> writes: >> The proposed feature (if enabled) collects such mentions in a >> separate buffer *rcirc mentions* as clickable text, so that you can >> navigate to the source of the mention as often as you like. > > Attached is a revised version of the patch which uses markers instead > of point values now and formats the mentions nicely, see this > screenshot: And here's a third version which adds a separate major mode for the mentions buffer including movement commands to TAB (and C-TAB) to the next (previous) mention link. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Add-a-mentions-buffer-feature-to-rcirc.patch From 5ead88f962daa1164fd85dff68afc33ab8cac5d4 Mon Sep 17 00:00:00 2001 From: Tassilo Horn <tsdh@HIDDEN> Date: Thu, 13 Feb 2025 10:39:31 +0100 Subject: [PATCH] Add a mentions buffer feature to rcirc If the feature is enabled by setting rcirc-mentions-buffer-enabled to a non-nil value, a buffer rcirc-mentions-buffer-name is created and used for logging mentions of your nick or a keyword in rcirc-keywords. The log lines link to the original position in the actual channel buffer where the mention occured. * lisp/net/rcirc.el (rcirc-mentions-buffer-name): New defcustom. (rcirc-mentions-buffer-enabled): New defcustom. (rcirc--get-last-message-bounds): New helper function. (rcirc-update-mentions-buffer): New function. (rcirc-record-activity): Call it if rcirc-mentions-buffer-enabled is non-nil. (rcirc-switch-to-mentions-buffer): New command. (rcirc-mode-map): Bind it `to C-c C-.'. (rcirc-mentions-mode): New major-mode for the mentions buffer. (rcirc-mentions-next, rcirc-mentions-prev): New movement commands for the mentions buffer. --- lisp/net/rcirc.el | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 3f81672182b..a3de2241407 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -1448,6 +1448,7 @@ rcirc-mode-map "C-c C-x" #'rcirc-cmd-quit "C-c C-i" #'rcirc-toggle-ignore-buffer-activity "C-c C-s" #'rcirc-switch-to-server-buffer + "C-c C-." #'rcirc-switch-to-mentions-buffer "C-c C-a" #'rcirc-jump-to-first-unread-line) (defvar-local rcirc-short-buffer-name nil @@ -2466,6 +2467,113 @@ rcirc-next-active-buffer "")))) (rcirc-update-activity-string)) +(defcustom rcirc-mentions-buffer-name "*rcirc mentions*" + "The name of the mentions buffer. +Also see `rcirc-mentions-buffer-enabled'." + :type 'string + :version "31.1") + +(defcustom rcirc-mentions-buffer-enabled nil + "If non-nil, create a mentions buffer. +The name of this buffer is defined by `rcirc-mentions-buffer-name'. In +this buffer, mentions of your nick or a keyword in `rcirc-keywords' will +be logged linking to the original message in the respective channel +buffer." + :type 'boolean + :version "31.1") + +(define-derived-mode rcirc-mentions-mode fundamental-mode + "RcircMentions" + "Major mode in the rcirc mentions buffer." + (setq buffer-read-only t) + ;; We want to see the original fontification of the channel buffer. + (font-lock-mode 1)) + +(defun rcirc-mentions-next () + (interactive) + (when-let* ((b (next-button (point)))) + (goto-char (overlay-start b)))) + +(defun rcirc-mentions-prev () + (interactive) + (when-let* ((b (previous-button (point)))) + (goto-char (overlay-start b)))) + +(keymap-set rcirc-mentions-mode-map "<tab>" #'rcirc-mentions-next) +(keymap-set rcirc-mentions-mode-map "C-<tab>" #'rcirc-mentions-prev) + +(defun rcirc--get-last-message-bounds () + ;; Assumes being called while the current buffer is the buffer with + ;; the activity. + (save-excursion + (goto-char rcirc-prompt-start-marker) + (goto-char (1- (point))) + (let ((end (point))) + (when-let* ((beg (previous-single-property-change + (point) 'rcirc-text))) + (goto-char beg) + (cons (line-beginning-position) end))))) + +(defun rcirc-update-mentions-buffer (type) + ;; Assumes being called while the current buffer is the buffer with + ;; the activity. + (when-let* ((bounds (rcirc--get-last-message-bounds))) + (let* ((msg (buffer-substring (car bounds) (cdr bounds))) + (activity-marker (let ((m (make-marker))) + (set-marker m (car bounds)))) + (action + (lambda (_button) + (let ((buf (marker-buffer activity-marker))) + (if (buffer-live-p buf) + (if-let* ((pos (marker-position activity-marker))) + (progn + (switch-to-buffer-other-window buf) + (goto-char activity-marker)) + (message "The buffer %s has been truncated." buf)) + (message "The originating buffer has disappeared.")))))) + (with-current-buffer (get-buffer-create + rcirc-mentions-buffer-name) + (rcirc-mentions-buffer-mode) + (let ((inhibit-read-only t) + ;; Stay at the current position in the buffer when we are + ;; not on the very last mention. + (orig-pos (when (save-excursion + (text-property-search-forward + 'face t + (lambda (_v pv) + (and (listp pv) + (eq 'separator-line + (plist-get pv :inherit)) + (plist-get pv :extend))))) + (point)))) + (goto-char (point-max)) + (unless (bobp) + (insert (make-separator-line))) + (insert (rcirc-facify + (format-time-string + (string-trim-right rcirc-time-format) + (current-time)) + 'rcirc-timestamp) + ": ") + (let ((link-beg (point))) + (insert-button + (format "%s mentioned in %s." + (if (eq type 'nick) "Nick" "Keyword") + (buffer-name (marker-buffer activity-marker))) + 'action action + 'follow-link t) + (insert "\n" msg "\n") + (goto-char (or orig-pos link-beg)))))))) + +(defun rcirc-switch-to-mentions-buffer () + "Switch to the mentions buffer if it exists. +See `rcirc-mentions-buffer-enabled' and `rcirc-mentions-buffer-name'." + (interactive) + (when-let* ((buf (get-buffer rcirc-mentions-buffer-name))) + (if-let* ((win (get-buffer-window buf))) + (select-window win) + (switch-to-buffer buf)))) + (defvar rcirc-activity-functions nil "Hook to be run when there is channel activity. @@ -2478,6 +2586,10 @@ rcirc-record-activity (with-current-buffer buffer (let ((old-activity rcirc-activity) (old-types rcirc-activity-types)) + (when (and rcirc-mentions-buffer-enabled + (memq type '(nick keyword)) + (not (eq buffer rcirc-server-buffer))) + (rcirc-update-mentions-buffer type)) (when (and (not (get-buffer-window (current-buffer) t)) (not (and rcirc-track-ignore-server-buffer-flag (eq rcirc-server-buffer (current-buffer))))) -- 2.48.1 --=-=-= Content-Type: text/plain Bye, Tassilo --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#76261
; Package emacs
.
Full text available.Received: (at 76261) by debbugs.gnu.org; 14 Feb 2025 10:39:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 14 05:39:40 2025 Received: from localhost ([127.0.0.1]:47208 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tit6h-0003qB-Of for submit <at> debbugs.gnu.org; Fri, 14 Feb 2025 05:39:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33758) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <tsdh@HIDDEN>) id 1tit6f-0003pt-5e for 76261 <at> debbugs.gnu.org; Fri, 14 Feb 2025 05:39:38 -0500 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 <tsdh@HIDDEN>) id 1tit6Z-0003f8-NE; Fri, 14 Feb 2025 05:39:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=lxbKyEkxZv2Mfaw0pZFjwY2pvEi6T1eBGmGmDWNtcxc=; b=mcMR/s6kcVfRDOmEJDr9 i05nf53rFjiIP0RNr+0j3t2d8j/EEYzy1lv0SBaFCEHoNvusBrJtgxr367GYLYgMlSIfBK9JY+bKa BjKfUg1NpFfUd+FlB7z7kXhqLrkVQwe04+gjLLmwWlMp/3KuAoZtzejzA+7t4lgqahLLmLfQz85cv Ogdy1cixCOPHv0RU3qP8wLqgnh7ywwECTulXi009uluXx5gqsaLk3hCFuiRUo9mMcixBj8+n0oWY2 nQeJTZJO5H9ubQZalB+NuALY1eTWr0LsfKDnk/onOggHd+czIgnusZIVTw4ABK2bVoj8XZPqqaUJT ssABdC1axapAiw==; X-ME-Sender: <xms:Vx2vZyIJHLWCVmUW1fc5lFsrML9-49txydjtsnrMlv5IL_uZabUlAQ> <xme:Vx2vZ6KLcnye8XWyZfqQF0g3Xymmpdqjmm2fuy9c1DH-X6YKV_d5PbcnOtOMWfQ0Q eH1qTtvUx1frA> X-ME-Received: <xmr:Vx2vZytY8RIhr2dmUn17OvCOH865YRhu51V6ZXbkJ71vLz0cn4vAc8dMDoa8o5UbES1ZS8ddIidP5pxThaU3NcOF4y8kQCn2> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdegleegfecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefhvfevufgjfhffkfgfgggtsehmtderredtredt necuhfhrohhmpefvrghsshhilhhoucfjohhrnhcuoehtshguhhesghhnuhdrohhrgheqne cuggftrfgrthhtvghrnhepgeefheffgfektdduhedtheekieejieehfedtfffftddvleel geekhefhgffgvddunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh hfrhhomhepthhhohhrnhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqkeei jeefkeejkeegqdeifeehvdelkedqthhsughhpeepghhnuhdrohhrghesfhgrshhtmhgrih hlrdhfmhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthht ohepphhhihhlihhpkhesphhoshhtvghordhnvghtpdhrtghpthhtohepjeeivdeiudesug gvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:Vx2vZ3aYgLwNdkiBorTDuxLhmKgzkHdk9wZJCFSGaS66O0TS0vQ_7g> <xmx:Vx2vZ5ayxui6jdxYnIyskv35RGtk6KNSb5nBQmVAgCunGdT3CBu7EA> <xmx:Vx2vZzBqO9jpz0xziZkC5N_uq_tyUxXsKoIA2yTcIGAeEUcoOm_Vhw> <xmx:Vx2vZ_bnkGnk_BQUixLggM0s5E9qaMPlnnph08m6nEJR6gJrH9qgvA> <xmx:Vx2vZ5qUkla5yy3eHh6dZmUmSl_YlDfkLWQERJPVDJaJh6UhVgKLZaat> Feedback-ID: ib2b94485:Fastmail From: Tassilo Horn <tsdh@HIDDEN> To: 76261 <at> debbugs.gnu.org Subject: Re: bug#76261: [PATCH] Add a mentions buffer feature to rcirc In-Reply-To: <87o6z66q4j.fsf@HIDDEN> References: <87o6z66q4j.fsf@HIDDEN> Date: Fri, 14 Feb 2025 11:39:16 +0100 Message-ID: <874j0w3j57.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76261 Cc: Philip Kaludercic <philipk@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Tassilo Horn <thorn@HIDDEN> writes: Hi again, > The proposed feature (if enabled) collects such mentions in a separate > buffer *rcirc mentions* as clickable text, so that you can navigate to > the source of the mention as often as you like. Attached is a revised version of the patch which uses markers instead of point values now and formats the mentions nicely, see this screenshot: --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=Screenshot-2025-02-14_113553.png Content-Transfer-Encoding: base64 Content-Description: screenshot of the rcirc mentions buffer with one nick and one keyword mention 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 YII= --=-=-= Content-Type: text/plain Bye, Tassilo --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Add-a-mentions-buffer-feature-to-rcirc.patch From 233dc0ecd923e630126bbde9de24a25af0172b9a Mon Sep 17 00:00:00 2001 From: Tassilo Horn <tsdh@HIDDEN> Date: Thu, 13 Feb 2025 10:39:31 +0100 Subject: [PATCH] Add a mentions buffer feature to rcirc If the feature is enabled by setting rcirc-mentions-buffer-enabled to a non-nil value, a buffer rcirc-mentions-buffer-name is created and used for logging mentions of your nick or a keyword in rcirc-keywords. The log lines link to the original position in the actual channel buffer where the mention occured. * lisp/net/rcirc.el (rcirc-mentions-buffer-name): New defcustom. (rcirc-mentions-buffer-enabled): New defcustom. (rcirc--get-last-message-bounds): New helper function. (rcirc-update-mentions-buffer): New function. (rcirc-record-activity): Call it if rcirc-mentions-buffer-enabled is non-nil. (rcirc-switch-to-mentions-buffer): New command. (rcirc-mode-map): Bind it `to C-c C-.'. --- lisp/net/rcirc.el | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 3f81672182b..15bf851bb1b 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -1448,6 +1448,7 @@ rcirc-mode-map "C-c C-x" #'rcirc-cmd-quit "C-c C-i" #'rcirc-toggle-ignore-buffer-activity "C-c C-s" #'rcirc-switch-to-server-buffer + "C-c C-." #'rcirc-switch-to-mentions-buffer "C-c C-a" #'rcirc-jump-to-first-unread-line) (defvar-local rcirc-short-buffer-name nil @@ -2466,6 +2467,97 @@ rcirc-next-active-buffer "")))) (rcirc-update-activity-string)) +(defcustom rcirc-mentions-buffer-name "*rcirc mentions*" + "The name of the mentions buffer. +Also see `rcirc-mentions-buffer-enabled'." + :type 'string + :version "31.1") + +(defcustom rcirc-mentions-buffer-enabled nil + "If non-nil, create a mentions buffer. +The name of this buffer is defined by `rcirc-mentions-buffer-name'. In +this buffer, mentions of your nick or a keyword in `rcirc-keywords' will +be logged linking to the original message in the respective channel +buffer." + :type 'boolean + :version "31.1") + +(defun rcirc--get-last-message-bounds () + ;; Assumes being called while the current buffer is the buffer with + ;; the activity. + (save-excursion + (goto-char rcirc-prompt-start-marker) + (goto-char (1- (point))) + (let ((end (point))) + (when-let* ((beg (previous-single-property-change + (point) 'rcirc-text))) + (goto-char beg) + (cons (line-beginning-position) end))))) + +(defun rcirc-update-mentions-buffer (type) + ;; Assumes being called while the current buffer is the buffer with + ;; the activity. + (when-let* ((bounds (rcirc--get-last-message-bounds))) + (font-lock-ensure (car bounds) (cdr bounds)) + (let* ((msg (buffer-substring (car bounds) (cdr bounds))) + (activity-marker (let ((m (make-marker))) + (set-marker m (car bounds)))) + (action + (lambda (_button) + (let ((buf (marker-buffer activity-marker))) + (if (buffer-live-p buf) + (if-let* ((pos (marker-position activity-marker))) + (progn + (switch-to-buffer-other-window buf) + (goto-char activity-marker)) + (message "The buffer %s has been truncated." buf)) + (message "The originating buffer has disappeared.")))))) + (with-current-buffer (get-buffer-create + rcirc-mentions-buffer-name) + (setq-local buffer-read-only t) + ;; We want to see the original fontification of the channel + ;; buffer. + (font-lock-mode 1) + (let ((inhibit-read-only t) + ;; Stay at the current position in the buffer when we are + ;; not on the very last mention. + (orig-pos (when (save-excursion + (text-property-search-forward + 'face t + (lambda (_v pv) + (and (listp pv) + (eq 'separator-line + (plist-get pv :inherit)) + (plist-get pv :extend))))) + (point)))) + (goto-char (point-max)) + (unless (bobp) + (insert (make-separator-line))) + (insert (rcirc-facify + (format-time-string + (string-trim-right rcirc-time-format) + (current-time)) + 'rcirc-timestamp) + ": ") + (let ((link-beg (point))) + (insert-button + (format "%s mentioned in %s." + (if (eq type 'nick) "Nick" "Keyword") + (buffer-name (marker-buffer activity-marker))) + 'action action + 'follow-link t) + (insert "\n" msg "\n") + (goto-char (or orig-pos link-beg)))))))) + +(defun rcirc-switch-to-mentions-buffer () + "Switch to the mentions buffer if it exists. +See `rcirc-mentions-buffer-enabled' and `rcirc-mentions-buffer-name'." + (interactive) + (when-let* ((buf (get-buffer rcirc-mentions-buffer-name))) + (if-let* ((win (get-buffer-window buf))) + (select-window win) + (switch-to-buffer buf)))) + (defvar rcirc-activity-functions nil "Hook to be run when there is channel activity. @@ -2478,6 +2570,10 @@ rcirc-record-activity (with-current-buffer buffer (let ((old-activity rcirc-activity) (old-types rcirc-activity-types)) + (when (and rcirc-mentions-buffer-enabled + (memq type '(nick keyword)) + (not (eq buffer rcirc-server-buffer))) + (rcirc-update-mentions-buffer type)) (when (and (not (get-buffer-window (current-buffer) t)) (not (and rcirc-track-ignore-server-buffer-flag (eq rcirc-server-buffer (current-buffer))))) -- 2.48.1 --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#76261
; Package emacs
.
Full text available.Received: (at submit) by debbugs.gnu.org; 13 Feb 2025 11:28:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 13 06:28:24 2025 Received: from localhost ([127.0.0.1]:40960 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tiXOJ-0003oy-Dt for submit <at> debbugs.gnu.org; Thu, 13 Feb 2025 06:28:23 -0500 Received: from lists.gnu.org ([2001:470:142::17]:44324) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <thorn@HIDDEN>) id 1tiXOH-0003ob-Mv for submit <at> debbugs.gnu.org; Thu, 13 Feb 2025 06:28:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <thorn@HIDDEN>) id 1tiXO4-000859-4S for bug-gnu-emacs@HIDDEN; Thu, 13 Feb 2025 06:28:09 -0500 Received: from fout-b3-smtp.messagingengine.com ([202.12.124.146]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <thorn@HIDDEN>) id 1tiXO0-0002vt-6X for bug-gnu-emacs@HIDDEN; Thu, 13 Feb 2025 06:28:07 -0500 Received: from phl-compute-07.internal (phl-compute-07.phl.internal [10.202.2.47]) by mailfout.stl.internal (Postfix) with ESMTP id 00AA0114014E; Thu, 13 Feb 2025 06:27:59 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-07.internal (MEProxy); Thu, 13 Feb 2025 06:28:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm3; t=1739446079; x=1739532479; bh=TkLrw4CIT4I32VO2SOZ5uF6JeotUkgE1 EAOjGyMQt84=; b=NPqQftXam+LYb/NKzITqI6PSKQPF6P6H2eK92oxVD1G5D+r0 4jp6ardc8+lJ/Ehmi4OuuHnzODOJq+X0yMZlEDroT2+xqhDzWmlYyproKJbX3iII Pq3Cdm/hEBaA8eGHyJ1Rub+bA1DPaDkiszM00OE7mMMBtRzH2ATCMz1PsfwFxC1C j5EbclEwZTKojAzG/FxeaeC8gaQnyWkpwbXctuYFQmOftlGtW2nEDcXzjUZnxhBl 8ubLpO80aXW5FT05X9cCITdUlEVFRcrOwiGqZva5teP3qWqbCqb89ed3M+EB+qi+ icaw/fF+tDGgmCc9itfhs++nWJqFPyqGANRYPw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1739446079; x= 1739532479; bh=TkLrw4CIT4I32VO2SOZ5uF6JeotUkgE1EAOjGyMQt84=; b=J DuFtVjSsjAMFZSakJ4L2/KKo1l4xkHcXdEiugWwANwjJagMCQiNjZJjRVulRpRnP iBvQD19pVy3SsqQ6Unzsma5kFlvFcq3xxiMkEiAb1wZb0VN1HVZOAzwN3Zu08nJQ uwHuvb5898MQ80kfv7su2SGMwgB41GDIi40Y0o5Z9IFqbAV3D4Erk2Yc5CwZ7L9/ yjWx8ves5GSe0i9JvWYzmA67E+obFtmwASwWJMbaChmLXpzuxHq6MMBd9IiNVADC KQ/2kWX6m73szRVnxm2Gxyt8nT8uf6dO3skK5VSmn/WPUWAcxES4xUJmqnSXFImJ NCkAYcD7EovEuxsIuyE5g== X-ME-Sender: <xms:P9etZ2-tkAME00IfK5eurTMEhBJuk2NXVkgAv_jtxqlvqrUMkOju9A> <xme:P9etZ2uuteyWj_pdO3b-LQZvygL8P7npFK9Dv-RfGTJmioShQQgcqNtRBdPiKV6g1 jJZ0IEhZ39Jvg> X-ME-Received: <xmr:P9etZ8C9E5CiEnieQrVZI9TPH2sD674K2IfU4oB5g1JflI6eIcSyrm8j0RN7_gxKXRpFR_1Rw2g5zkLhTMpzqrSkqZCKCreD> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdegieeihecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpefhvfevufgffffkgggtsehmtderredtredtnecu hfhrohhmpefvrghsshhilhhoucfjohhrnhcuoehthhhorhhnsehfrghsthhmrghilhdrfh hmqeenucggtffrrghtthgvrhhnpeevffejteekleefleeggfeikeettdefuddtkeegieet hfelieevfefggfeufedtieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh grihhlfhhrohhmpehthhhorhhnsehfrghsthhmrghilhdrfhhmpdhnsggprhgtphhtthho pedvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehphhhilhhiphhksehpohhsth gvohdrnhgvthdprhgtphhtthhopegsuhhgqdhgnhhuqdgvmhgrtghssehgnhhurdhorhhg X-ME-Proxy: <xmx:P9etZ-e2xcaCF3bkvHPcODTCkKqrZPYuuHN7Occzmb5VlmKVfdntVg> <xmx:P9etZ7Muum_KZ12udQCQTL8DLEuA2tdwkG6DO6preVaJOMnNZY7sNQ> <xmx:P9etZ4lQJaCNniCa5JiLIwo5vEo1VHfrthEv2NwpXnCtUj3h0_6qRQ> <xmx:P9etZ9vxJzWC3USzr15YwU8kgvVtUs-ijkqJYyLtkfvW9rvIIKPC2g> <xmx:P9etZ0Y_q7NbCd2yhf3beqCve8EwqWWzD3L079dLo8OoyDzf-yac7svr> Feedback-ID: ic4a241a2:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 13 Feb 2025 06:27:59 -0500 (EST) From: Tassilo Horn <thorn@HIDDEN> To: bug-gnu-emacs@HIDDEN Subject: [PATCH] Add a mentions buffer feature to rcirc User-Agent: mu4e 1.12.8; emacs 31.0.50 X-Debbugs-Cc: Date: Thu, 13 Feb 2025 12:27:56 +0100 Message-ID: <87o6z66q4j.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=202.12.124.146; envelope-from=thorn@HIDDEN; helo=fout-b3-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: Philip Kaludercic <philipk@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain Tags: patch Hi all, rcirc-track-minor-mode is nice to navigate to mentions of your nick or certain keywords (rcirc-keywords), however you can navigate there only once. The proposed feature (if enabled) collects such mentions in a separate buffer *rcirc mentions* as clickable text, so that you can navigate to the source of the mention as often as you like. In its current state, the feature works fine but I guess the *rcirc mentions* buffer should contain a bit more information, e.g., a copy of the actual mentioning message. I guess there's also a technical issue: right now, the linkage is to a concrete buffer position (point value) which only works reliably if rcirc-buffer-maximum-lines is nil and thus buffers aren't truncated. I guess I should switch to markers instead, right? Anyway, I just wanted to get feedback if such a feature is acceptable? Thanks, Tassilo In GNU Emacs 31.0.50 (build 7, x86_64-pc-linux-gnu, GTK+ Version 3.24.48, cairo version 1.18.2) of 2025-02-13 built on thinkpad-t440p Repository revision: 2e9413255fb8cbd0c8481ca6f863b37df3e9008d Repository branch: master System Description: Arch Linux Configured using: 'configure --without-native-compilation --with-modules --with-pgtk' --=-=-= Content-Type: text/patch Content-Disposition: attachment; filename=0001-Add-a-mentions-buffer-feature-to-rcirc.patch From 8a39c204e8b4b2116abac7324b402e3b0c745618 Mon Sep 17 00:00:00 2001 From: Tassilo Horn <tsdh@HIDDEN> Date: Thu, 13 Feb 2025 10:39:31 +0100 Subject: [PATCH] Add a mentions buffer feature to rcirc If the feature is enabled by setting rcirc-mentions-buffer-enabled to a non-nil value, a buffer rcirc-mentions-buffer-name is created and used for logging mentions of your nick or a keyword in rcirc-keywords. The log lines link to the original position in the actual channel buffer where the mention occured. * lisp/net/rcirc.el (rcirc-mentions-buffer-name): New defcustom. (rcirc-mentions-buffer-enabled): New defcustom. (rcirc-update-mentions-buffer): New function. (rcirc-record-activity): Call it if rcirc-mentions-buffer-enabled is non-nil. --- lisp/net/rcirc.el | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 3f81672182b..286dc4ef133 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -2466,6 +2466,56 @@ rcirc-next-active-buffer "")))) (rcirc-update-activity-string)) +(defcustom rcirc-mentions-buffer-name "*rcirc mentions*" + "The name of the mentions buffer. +Also see `rcirc-mentions-buffer-enabled'." + :type 'string + :version "31.1") + +(defcustom rcirc-mentions-buffer-enabled nil + "If non-nil, create a mentions buffer. +The name of this buffer is defined by `rcirc-mentions-buffer-name'. In +this buffer, mentions of your nick or a keyword in `rcirc-keywords' will +be logged linking to the original message in the respective channel +buffer." + :type 'boolean + :version "31.1") + +(defun rcirc-update-mentions-buffer (type) + ;; Assumes being called while the current buffer is the buffer with + ;; the activity. + (let* ((activity-buffer (current-buffer)) + (activity-point (save-excursion + (forward-line -1) + (point))) + (action (lambda (_button) + (if (buffer-live-p activity-buffer) + (progn + (switch-to-buffer activity-buffer) + (goto-char activity-point)) + (message "The buffer %s has disappeared." + (buffer-name activity-buffer)))))) + (with-current-buffer (get-buffer-create + rcirc-mentions-buffer-name) + (setq-local buffer-read-only t) + (let ((inhibit-read-only t)) + (save-excursion + (goto-char (point-max)) + (unless (looking-back "\n") + (insert "\n")) + (insert (rcirc-facify + (format-time-string rcirc-time-format (current-time)) + 'rcirc-timestamp) + "> ") + (insert-button (format "%s has been mentioned in buffer %s." + (if (eq type 'nick) + "Your nick" + "A keyword") + (buffer-name activity-buffer)) + 'action action + 'follow-link t) + (insert "\n")))))) + (defvar rcirc-activity-functions nil "Hook to be run when there is channel activity. @@ -2478,6 +2528,10 @@ rcirc-record-activity (with-current-buffer buffer (let ((old-activity rcirc-activity) (old-types rcirc-activity-types)) + (when (and rcirc-mentions-buffer-enabled + (memq type '(nick keyword)) + (not (eq buffer rcirc-server-buffer))) + (rcirc-update-mentions-buffer type)) (when (and (not (get-buffer-window (current-buffer) t)) (not (and rcirc-track-ignore-server-buffer-flag (eq rcirc-server-buffer (current-buffer))))) -- 2.48.1 --=-=-=--
Tassilo Horn <thorn@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#76261
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.