GNU bug report logs - #76261
[PATCH] Add a mentions buffer feature to rcirc

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: wishlist; Reported by: Tassilo Horn <thorn@HIDDEN>; Keywords: patch; dated Thu, 13 Feb 2025 11:29:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
Severity set to 'wishlist' from 'normal' Request was from Stefan Kangas <stefankangas@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 76261 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#76261; Package emacs. Full text available.

Message received at 76261 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#76261; Package emacs. Full text available.

Message received at 76261 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#76261; Package emacs. Full text available.

Message received at 76261 <at> debbugs.gnu.org:


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

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#76261; Package emacs. Full text available.

Message received at 76261 <at> debbugs.gnu.org:


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


--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#76261; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


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


--=-=-=--




Acknowledgement sent to Tassilo Horn <thorn@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#76261; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Wed, 19 Feb 2025 02:15:03 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.